diff options
Diffstat (limited to 'out/_next/static/chunks/d25bd147-65fcc4c92edba8b370fb.js')
-rw-r--r-- | out/_next/static/chunks/d25bd147-65fcc4c92edba8b370fb.js | 56346 |
1 files changed, 56346 insertions, 0 deletions
diff --git a/out/_next/static/chunks/d25bd147-65fcc4c92edba8b370fb.js b/out/_next/static/chunks/d25bd147-65fcc4c92edba8b370fb.js new file mode 100644 index 0000000..0cc331b --- /dev/null +++ b/out/_next/static/chunks/d25bd147-65fcc4c92edba8b370fb.js @@ -0,0 +1,56346 @@ +;(self.webpackChunk_N_E = self.webpackChunk_N_E || []).push([ + [446], + { + 5569: function (t, n, r) { + t.exports = (function () { + var t + return (function () { + function e(t, n, r) { + function i(a, s) { + if (!n[a]) { + if (!t[a]) { + if (o) return o(a, !0) + var l = new Error("Cannot find module '" + a + "'") + throw ((l.code = 'MODULE_NOT_FOUND'), l) + } + var c = (n[a] = { exports: {} }) + t[a][0].call( + c.exports, + function (e) { + return i(t[a][1][e] || e) + }, + c, + c.exports, + e, + t, + n, + r, + ) + } + return n[a].exports + } + for (var o = void 0, a = 0; a < r.length; a++) i(r[a]) + return i + } + return e + })()( + { + 1: [ + function (e, t, n) { + var r = Object.prototype.toString + function i(e) { + return ( + (e.BYTES_PER_ELEMENT && '[object ArrayBuffer]' === r.call(e.buffer)) || + Array.isArray(e) + ) + } + t.exports = i + }, + {}, + ], + 2: [ + function (e, t, n) { + t.exports = function (e, t) { + return 'number' === typeof e ? e : 'number' === typeof t ? t : 0 + } + }, + {}, + ], + 3: [ + function (e, t, n) { + 'use strict' + ;(n.byteLength = u), (n.toByteArray = d), (n.fromByteArray = m) + for ( + var r = [], + i = [], + o = 'undefined' !== typeof Uint8Array ? Uint8Array : Array, + a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + s = 0, + l = a.length; + s < l; + ++s + ) + (r[s] = a[s]), (i[a.charCodeAt(s)] = s) + function c(e) { + var t = e.length + if (t % 4 > 0) throw new Error('Invalid string. Length must be a multiple of 4') + var n = e.indexOf('=') + return -1 === n && (n = t), [n, n === t ? 0 : 4 - (n % 4)] + } + function u(e) { + var t = c(e), + n = t[0], + r = t[1] + return (3 * (n + r)) / 4 - r + } + function h(e, t, n) { + return (3 * (t + n)) / 4 - n + } + function d(e) { + for ( + var t, + n = c(e), + r = n[0], + a = n[1], + s = new o(h(e, r, a)), + l = 0, + u = a > 0 ? r - 4 : r, + d = 0; + d < u; + d += 4 + ) + (t = + (i[e.charCodeAt(d)] << 18) | + (i[e.charCodeAt(d + 1)] << 12) | + (i[e.charCodeAt(d + 2)] << 6) | + i[e.charCodeAt(d + 3)]), + (s[l++] = (t >> 16) & 255), + (s[l++] = (t >> 8) & 255), + (s[l++] = 255 & t) + return ( + 2 === a && + ((t = (i[e.charCodeAt(d)] << 2) | (i[e.charCodeAt(d + 1)] >> 4)), + (s[l++] = 255 & t)), + 1 === a && + ((t = + (i[e.charCodeAt(d)] << 10) | + (i[e.charCodeAt(d + 1)] << 4) | + (i[e.charCodeAt(d + 2)] >> 2)), + (s[l++] = (t >> 8) & 255), + (s[l++] = 255 & t)), + s + ) + } + function p(e) { + return r[(e >> 18) & 63] + r[(e >> 12) & 63] + r[(e >> 6) & 63] + r[63 & e] + } + function f(e, t, n) { + for (var r, i = [], o = t; o < n; o += 3) + (r = ((e[o] << 16) & 16711680) + ((e[o + 1] << 8) & 65280) + (255 & e[o + 2])), + i.push(p(r)) + return i.join('') + } + function m(e) { + for ( + var t, n = e.length, i = n % 3, o = [], a = 16383, s = 0, l = n - i; + s < l; + s += a + ) + o.push(f(e, s, s + a > l ? l : s + a)) + return ( + 1 === i + ? ((t = e[n - 1]), o.push(r[t >> 2] + r[(t << 4) & 63] + '==')) + : 2 === i && + ((t = (e[n - 2] << 8) + e[n - 1]), + o.push(r[t >> 10] + r[(t >> 4) & 63] + r[(t << 2) & 63] + '=')), + o.join('') + ) + } + ;(i['-'.charCodeAt(0)] = 62), (i['_'.charCodeAt(0)] = 63) + }, + {}, + ], + 4: [ + function (e, t, n) { + 'use strict' + t.exports = { + createLink: function (e, t) { + var n = document.head || document.getElementsByTagName('head')[0], + r = document.createElement('link') + for (var i in ((r.href = e), (r.rel = 'stylesheet'), t)) + if (t.hasOwnProperty(i)) { + var o = t[i] + r.setAttribute('data-' + i, o) + } + n.appendChild(r) + }, + createStyle: function (e, t) { + var n = document.head || document.getElementsByTagName('head')[0], + r = document.createElement('style') + for (var i in ((r.type = 'text/css'), t)) + if (t.hasOwnProperty(i)) { + var o = t[i] + r.setAttribute('data-' + i, o) + } + r.sheet + ? ((r.innerHTML = e), (r.sheet.cssText = e), n.appendChild(r)) + : r.styleSheet + ? (n.appendChild(r), (r.styleSheet.cssText = e)) + : (r.appendChild(document.createTextNode(e)), n.appendChild(r)) + }, + } + }, + {}, + ], + 5: [ + function (e, t, n) { + var r = e('buffer').Buffer + t.exports = function (e, t) { + if (r.isBuffer(e) && r.isBuffer(t)) { + if ('function' === typeof e.equals) return e.equals(t) + if (e.length !== t.length) return !1 + for (var n = 0; n < e.length; n++) if (e[n] !== t[n]) return !1 + return !0 + } + } + }, + { buffer: 6 }, + ], + 6: [ + function (t, n, i) { + ;(function (n, r) { + 'use strict' + var o = t('base64-js'), + a = t('ieee754'), + s = t('isarray') + function l() { + try { + var t = new Uint8Array(1) + return ( + (t.__proto__ = { + __proto__: Uint8Array.prototype, + foo: function () { + return 42 + }, + }), + 42 === t.foo() && + 'function' === typeof t.subarray && + 0 === t.subarray(1, 1).byteLength + ) + } catch (e) { + return !1 + } + } + function c() { + return r.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 + } + function u(e, t) { + if (c() < t) throw new RangeError('Invalid typed array length') + return ( + r.TYPED_ARRAY_SUPPORT + ? ((e = new Uint8Array(t)).__proto__ = r.prototype) + : (null === e && (e = new r(t)), (e.length = t)), + e + ) + } + function r(e, t, n) { + if (!r.TYPED_ARRAY_SUPPORT && !(this instanceof r)) return new r(e, t, n) + if ('number' === typeof e) { + if ('string' === typeof t) + throw new Error( + 'If encoding is specified then the first argument must be a string', + ) + return f(this, e) + } + return h(this, e, t, n) + } + function h(e, t, n, r) { + if ('number' === typeof t) + throw new TypeError('"value" argument must not be a number') + return 'undefined' !== typeof ArrayBuffer && t instanceof ArrayBuffer + ? g(e, t, n, r) + : 'string' === typeof t + ? m(e, t, n) + : y(e, t) + } + function d(e) { + if ('number' !== typeof e) + throw new TypeError('"size" argument must be a number') + if (e < 0) throw new RangeError('"size" argument must not be negative') + } + function p(e, t, n, r) { + return ( + d(t), + t <= 0 + ? u(e, t) + : void 0 !== n + ? 'string' === typeof r + ? u(e, t).fill(n, r) + : u(e, t).fill(n) + : u(e, t) + ) + } + function f(e, t) { + if ((d(t), (e = u(e, t < 0 ? 0 : 0 | b(t))), !r.TYPED_ARRAY_SUPPORT)) + for (var n = 0; n < t; ++n) e[n] = 0 + return e + } + function m(e, t, n) { + if ((('string' === typeof n && '' !== n) || (n = 'utf8'), !r.isEncoding(n))) + throw new TypeError('"encoding" must be a valid string encoding') + var i = 0 | w(t, n), + o = (e = u(e, i)).write(t, n) + return o !== i && (e = e.slice(0, o)), e + } + function v(e, t) { + var n = t.length < 0 ? 0 : 0 | b(t.length) + e = u(e, n) + for (var r = 0; r < n; r += 1) e[r] = 255 & t[r] + return e + } + function g(e, t, n, i) { + if ((t.byteLength, n < 0 || t.byteLength < n)) + throw new RangeError("'offset' is out of bounds") + if (t.byteLength < n + (i || 0)) + throw new RangeError("'length' is out of bounds") + return ( + (t = + void 0 === n && void 0 === i + ? new Uint8Array(t) + : void 0 === i + ? new Uint8Array(t, n) + : new Uint8Array(t, n, i)), + r.TYPED_ARRAY_SUPPORT ? ((e = t).__proto__ = r.prototype) : (e = v(e, t)), + e + ) + } + function y(e, t) { + if (r.isBuffer(t)) { + var n = 0 | b(t.length) + return 0 === (e = u(e, n)).length || t.copy(e, 0, 0, n), e + } + if (t) { + if ( + ('undefined' !== typeof ArrayBuffer && t.buffer instanceof ArrayBuffer) || + 'length' in t + ) + return 'number' !== typeof t.length || ne(t.length) ? u(e, 0) : v(e, t) + if ('Buffer' === t.type && s(t.data)) return v(e, t.data) + } + throw new TypeError( + 'First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.', + ) + } + function b(e) { + if (e >= c()) + throw new RangeError( + 'Attempt to allocate Buffer larger than maximum size: 0x' + + c().toString(16) + + ' bytes', + ) + return 0 | e + } + function A(e) { + return +e != e && (e = 0), r.alloc(+e) + } + function w(e, t) { + if (r.isBuffer(e)) return e.length + if ( + 'undefined' !== typeof ArrayBuffer && + 'function' === typeof ArrayBuffer.isView && + (ArrayBuffer.isView(e) || e instanceof ArrayBuffer) + ) + return e.byteLength + 'string' !== typeof e && (e = '' + e) + var n = e.length + if (0 === n) return 0 + for (var i = !1; ; ) + switch (t) { + case 'ascii': + case 'latin1': + case 'binary': + return n + case 'utf8': + case 'utf-8': + case void 0: + return K(e).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 2 * n + case 'hex': + return n >>> 1 + case 'base64': + return ee(e).length + default: + if (i) return K(e).length + ;(t = ('' + t).toLowerCase()), (i = !0) + } + } + function x(e, t, n) { + var r = !1 + if (((void 0 === t || t < 0) && (t = 0), t > this.length)) return '' + if (((void 0 === n || n > this.length) && (n = this.length), n <= 0)) return '' + if ((n >>>= 0) <= (t >>>= 0)) return '' + for (e || (e = 'utf8'); ; ) + switch (e) { + case 'hex': + return N(this, t, n) + case 'utf8': + case 'utf-8': + return O(this, t, n) + case 'ascii': + return F(this, t, n) + case 'latin1': + case 'binary': + return k(this, t, n) + case 'base64': + return D(this, t, n) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return U(this, t, n) + default: + if (r) throw new TypeError('Unknown encoding: ' + e) + ;(e = (e + '').toLowerCase()), (r = !0) + } + } + function E(e, t, n) { + var r = e[t] + ;(e[t] = e[n]), (e[n] = r) + } + function M(e, t, n, i, o) { + if (0 === e.length) return -1 + if ( + ('string' === typeof n + ? ((i = n), (n = 0)) + : n > 2147483647 + ? (n = 2147483647) + : n < -2147483648 && (n = -2147483648), + (n = +n), + isNaN(n) && (n = o ? 0 : e.length - 1), + n < 0 && (n = e.length + n), + n >= e.length) + ) { + if (o) return -1 + n = e.length - 1 + } else if (n < 0) { + if (!o) return -1 + n = 0 + } + if (('string' === typeof t && (t = r.from(t, i)), r.isBuffer(t))) + return 0 === t.length ? -1 : _(e, t, n, i, o) + if ('number' === typeof t) + return ( + (t &= 255), + r.TYPED_ARRAY_SUPPORT && 'function' === typeof Uint8Array.prototype.indexOf + ? o + ? Uint8Array.prototype.indexOf.call(e, t, n) + : Uint8Array.prototype.lastIndexOf.call(e, t, n) + : _(e, [t], n, i, o) + ) + throw new TypeError('val must be string, number or Buffer') + } + function _(e, t, n, r, i) { + var o, + a = 1, + s = e.length, + l = t.length + if ( + void 0 !== r && + ('ucs2' === (r = String(r).toLowerCase()) || + 'ucs-2' === r || + 'utf16le' === r || + 'utf-16le' === r) + ) { + if (e.length < 2 || t.length < 2) return -1 + ;(a = 2), (s /= 2), (l /= 2), (n /= 2) + } + function c(e, t) { + return 1 === a ? e[t] : e.readUInt16BE(t * a) + } + if (i) { + var u = -1 + for (o = n; o < s; o++) + if (c(e, o) === c(t, -1 === u ? 0 : o - u)) { + if ((-1 === u && (u = o), o - u + 1 === l)) return u * a + } else -1 !== u && (o -= o - u), (u = -1) + } else + for (n + l > s && (n = s - l), o = n; o >= 0; o--) { + for (var h = !0, d = 0; d < l; d++) + if (c(e, o + d) !== c(t, d)) { + h = !1 + break + } + if (h) return o + } + return -1 + } + function T(e, t, n, r) { + n = Number(n) || 0 + var i = e.length - n + r ? (r = Number(r)) > i && (r = i) : (r = i) + var o = t.length + if (o % 2 !== 0) throw new TypeError('Invalid hex string') + r > o / 2 && (r = o / 2) + for (var a = 0; a < r; ++a) { + var s = parseInt(t.substr(2 * a, 2), 16) + if (isNaN(s)) return a + e[n + a] = s + } + return a + } + function S(e, t, n, r) { + return te(K(t, e.length - n), e, n, r) + } + function C(e, t, n, r) { + return te(J(t), e, n, r) + } + function L(e, t, n, r) { + return C(e, t, n, r) + } + function R(e, t, n, r) { + return te(ee(t), e, n, r) + } + function P(e, t, n, r) { + return te($(t, e.length - n), e, n, r) + } + function D(e, t, n) { + return 0 === t && n === e.length + ? o.fromByteArray(e) + : o.fromByteArray(e.slice(t, n)) + } + function O(e, t, n) { + n = Math.min(e.length, n) + for (var r = [], i = t; i < n; ) { + var o, + a, + s, + l, + c = e[i], + u = null, + h = c > 239 ? 4 : c > 223 ? 3 : c > 191 ? 2 : 1 + if (i + h <= n) + switch (h) { + case 1: + c < 128 && (u = c) + break + case 2: + 128 === (192 & (o = e[i + 1])) && + (l = ((31 & c) << 6) | (63 & o)) > 127 && + (u = l) + break + case 3: + ;(o = e[i + 1]), + (a = e[i + 2]), + 128 === (192 & o) && + 128 === (192 & a) && + (l = ((15 & c) << 12) | ((63 & o) << 6) | (63 & a)) > 2047 && + (l < 55296 || l > 57343) && + (u = l) + break + case 4: + ;(o = e[i + 1]), + (a = e[i + 2]), + (s = e[i + 3]), + 128 === (192 & o) && + 128 === (192 & a) && + 128 === (192 & s) && + (l = + ((15 & c) << 18) | + ((63 & o) << 12) | + ((63 & a) << 6) | + (63 & s)) > 65535 && + l < 1114112 && + (u = l) + } + null === u + ? ((u = 65533), (h = 1)) + : u > 65535 && + ((u -= 65536), + r.push(((u >>> 10) & 1023) | 55296), + (u = 56320 | (1023 & u))), + r.push(u), + (i += h) + } + return B(r) + } + ;(i.Buffer = r), + (i.SlowBuffer = A), + (i.INSPECT_MAX_BYTES = 50), + (r.TYPED_ARRAY_SUPPORT = + void 0 !== n.TYPED_ARRAY_SUPPORT ? n.TYPED_ARRAY_SUPPORT : l()), + (i.kMaxLength = c()), + (r.poolSize = 8192), + (r._augment = function (e) { + return (e.__proto__ = r.prototype), e + }), + (r.from = function (e, t, n) { + return h(null, e, t, n) + }), + r.TYPED_ARRAY_SUPPORT && + ((r.prototype.__proto__ = Uint8Array.prototype), + (r.__proto__ = Uint8Array), + 'undefined' !== typeof Symbol && + Symbol.species && + r[Symbol.species] === r && + Object.defineProperty(r, Symbol.species, { + value: null, + configurable: !0, + })), + (r.alloc = function (e, t, n) { + return p(null, e, t, n) + }), + (r.allocUnsafe = function (e) { + return f(null, e) + }), + (r.allocUnsafeSlow = function (e) { + return f(null, e) + }), + (r.isBuffer = function (e) { + return !(null == e || !e._isBuffer) + }), + (r.compare = function (e, t) { + if (!r.isBuffer(e) || !r.isBuffer(t)) + throw new TypeError('Arguments must be Buffers') + if (e === t) return 0 + for (var n = e.length, i = t.length, o = 0, a = Math.min(n, i); o < a; ++o) + if (e[o] !== t[o]) { + ;(n = e[o]), (i = t[o]) + break + } + return n < i ? -1 : i < n ? 1 : 0 + }), + (r.isEncoding = function (e) { + switch (String(e).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return !0 + default: + return !1 + } + }), + (r.concat = function (e, t) { + if (!s(e)) throw new TypeError('"list" argument must be an Array of Buffers') + if (0 === e.length) return r.alloc(0) + var n + if (void 0 === t) for (t = 0, n = 0; n < e.length; ++n) t += e[n].length + var i = r.allocUnsafe(t), + o = 0 + for (n = 0; n < e.length; ++n) { + var a = e[n] + if (!r.isBuffer(a)) + throw new TypeError('"list" argument must be an Array of Buffers') + a.copy(i, o), (o += a.length) + } + return i + }), + (r.byteLength = w), + (r.prototype._isBuffer = !0), + (r.prototype.swap16 = function () { + var e = this.length + if (e % 2 !== 0) + throw new RangeError('Buffer size must be a multiple of 16-bits') + for (var t = 0; t < e; t += 2) E(this, t, t + 1) + return this + }), + (r.prototype.swap32 = function () { + var e = this.length + if (e % 4 !== 0) + throw new RangeError('Buffer size must be a multiple of 32-bits') + for (var t = 0; t < e; t += 4) E(this, t, t + 3), E(this, t + 1, t + 2) + return this + }), + (r.prototype.swap64 = function () { + var e = this.length + if (e % 8 !== 0) + throw new RangeError('Buffer size must be a multiple of 64-bits') + for (var t = 0; t < e; t += 8) + E(this, t, t + 7), + E(this, t + 1, t + 6), + E(this, t + 2, t + 5), + E(this, t + 3, t + 4) + return this + }), + (r.prototype.toString = function () { + var e = 0 | this.length + return 0 === e + ? '' + : 0 === arguments.length + ? O(this, 0, e) + : x.apply(this, arguments) + }), + (r.prototype.equals = function (e) { + if (!r.isBuffer(e)) throw new TypeError('Argument must be a Buffer') + return this === e || 0 === r.compare(this, e) + }), + (r.prototype.inspect = function () { + var e = '', + t = i.INSPECT_MAX_BYTES + return ( + this.length > 0 && + ((e = this.toString('hex', 0, t).match(/.{2}/g).join(' ')), + this.length > t && (e += ' ... ')), + '<Buffer ' + e + '>' + ) + }), + (r.prototype.compare = function (e, t, n, i, o) { + if (!r.isBuffer(e)) throw new TypeError('Argument must be a Buffer') + if ( + (void 0 === t && (t = 0), + void 0 === n && (n = e ? e.length : 0), + void 0 === i && (i = 0), + void 0 === o && (o = this.length), + t < 0 || n > e.length || i < 0 || o > this.length) + ) + throw new RangeError('out of range index') + if (i >= o && t >= n) return 0 + if (i >= o) return -1 + if (t >= n) return 1 + if (this === e) return 0 + for ( + var a = (o >>>= 0) - (i >>>= 0), + s = (n >>>= 0) - (t >>>= 0), + l = Math.min(a, s), + c = this.slice(i, o), + u = e.slice(t, n), + h = 0; + h < l; + ++h + ) + if (c[h] !== u[h]) { + ;(a = c[h]), (s = u[h]) + break + } + return a < s ? -1 : s < a ? 1 : 0 + }), + (r.prototype.includes = function (e, t, n) { + return -1 !== this.indexOf(e, t, n) + }), + (r.prototype.indexOf = function (e, t, n) { + return M(this, e, t, n, !0) + }), + (r.prototype.lastIndexOf = function (e, t, n) { + return M(this, e, t, n, !1) + }), + (r.prototype.write = function (e, t, n, r) { + if (void 0 === t) (r = 'utf8'), (n = this.length), (t = 0) + else if (void 0 === n && 'string' === typeof t) + (r = t), (n = this.length), (t = 0) + else { + if (!isFinite(t)) + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported', + ) + ;(t |= 0), + isFinite(n) + ? ((n |= 0), void 0 === r && (r = 'utf8')) + : ((r = n), (n = void 0)) + } + var i = this.length - t + if ( + ((void 0 === n || n > i) && (n = i), + (e.length > 0 && (n < 0 || t < 0)) || t > this.length) + ) + throw new RangeError('Attempt to write outside buffer bounds') + r || (r = 'utf8') + for (var o = !1; ; ) + switch (r) { + case 'hex': + return T(this, e, t, n) + case 'utf8': + case 'utf-8': + return S(this, e, t, n) + case 'ascii': + return C(this, e, t, n) + case 'latin1': + case 'binary': + return L(this, e, t, n) + case 'base64': + return R(this, e, t, n) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return P(this, e, t, n) + default: + if (o) throw new TypeError('Unknown encoding: ' + r) + ;(r = ('' + r).toLowerCase()), (o = !0) + } + }), + (r.prototype.toJSON = function () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0), + } + }) + var I = 4096 + function B(e) { + var t = e.length + if (t <= I) return String.fromCharCode.apply(String, e) + for (var n = '', r = 0; r < t; ) + n += String.fromCharCode.apply(String, e.slice(r, (r += I))) + return n + } + function F(e, t, n) { + var r = '' + n = Math.min(e.length, n) + for (var i = t; i < n; ++i) r += String.fromCharCode(127 & e[i]) + return r + } + function k(e, t, n) { + var r = '' + n = Math.min(e.length, n) + for (var i = t; i < n; ++i) r += String.fromCharCode(e[i]) + return r + } + function N(e, t, n) { + var r = e.length + ;(!t || t < 0) && (t = 0), (!n || n < 0 || n > r) && (n = r) + for (var i = '', o = t; o < n; ++o) i += Z(e[o]) + return i + } + function U(e, t, n) { + for (var r = e.slice(t, n), i = '', o = 0; o < r.length; o += 2) + i += String.fromCharCode(r[o] + 256 * r[o + 1]) + return i + } + function H(e, t, n) { + if (e % 1 !== 0 || e < 0) throw new RangeError('offset is not uint') + if (e + t > n) throw new RangeError('Trying to access beyond buffer length') + } + function G(e, t, n, i, o, a) { + if (!r.isBuffer(e)) + throw new TypeError('"buffer" argument must be a Buffer instance') + if (t > o || t < a) throw new RangeError('"value" argument is out of bounds') + if (n + i > e.length) throw new RangeError('Index out of range') + } + function z(e, t, n, r) { + t < 0 && (t = 65535 + t + 1) + for (var i = 0, o = Math.min(e.length - n, 2); i < o; ++i) + e[n + i] = (t & (255 << (8 * (r ? i : 1 - i)))) >>> (8 * (r ? i : 1 - i)) + } + function j(e, t, n, r) { + t < 0 && (t = 4294967295 + t + 1) + for (var i = 0, o = Math.min(e.length - n, 4); i < o; ++i) + e[n + i] = (t >>> (8 * (r ? i : 3 - i))) & 255 + } + function V(e, t, n, r, i, o) { + if (n + r > e.length) throw new RangeError('Index out of range') + if (n < 0) throw new RangeError('Index out of range') + } + function W(e, t, n, r, i) { + return ( + i || V(e, t, n, 4, 34028234663852886e22, -34028234663852886e22), + a.write(e, t, n, r, 23, 4), + n + 4 + ) + } + function q(e, t, n, r, i) { + return ( + i || V(e, t, n, 8, 17976931348623157e292, -17976931348623157e292), + a.write(e, t, n, r, 52, 8), + n + 8 + ) + } + ;(r.prototype.slice = function (e, t) { + var n, + i = this.length + if ( + ((e = ~~e) < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i), + (t = void 0 === t ? i : ~~t) < 0 ? (t += i) < 0 && (t = 0) : t > i && (t = i), + t < e && (t = e), + r.TYPED_ARRAY_SUPPORT) + ) + (n = this.subarray(e, t)).__proto__ = r.prototype + else { + var o = t - e + n = new r(o, void 0) + for (var a = 0; a < o; ++a) n[a] = this[a + e] + } + return n + }), + (r.prototype.readUIntLE = function (e, t, n) { + ;(e |= 0), (t |= 0), n || H(e, t, this.length) + for (var r = this[e], i = 1, o = 0; ++o < t && (i *= 256); ) + r += this[e + o] * i + return r + }), + (r.prototype.readUIntBE = function (e, t, n) { + ;(e |= 0), (t |= 0), n || H(e, t, this.length) + for (var r = this[e + --t], i = 1; t > 0 && (i *= 256); ) + r += this[e + --t] * i + return r + }), + (r.prototype.readUInt8 = function (e, t) { + return t || H(e, 1, this.length), this[e] + }), + (r.prototype.readUInt16LE = function (e, t) { + return t || H(e, 2, this.length), this[e] | (this[e + 1] << 8) + }), + (r.prototype.readUInt16BE = function (e, t) { + return t || H(e, 2, this.length), (this[e] << 8) | this[e + 1] + }), + (r.prototype.readUInt32LE = function (e, t) { + return ( + t || H(e, 4, this.length), + (this[e] | (this[e + 1] << 8) | (this[e + 2] << 16)) + + 16777216 * this[e + 3] + ) + }), + (r.prototype.readUInt32BE = function (e, t) { + return ( + t || H(e, 4, this.length), + 16777216 * this[e] + + ((this[e + 1] << 16) | (this[e + 2] << 8) | this[e + 3]) + ) + }), + (r.prototype.readIntLE = function (e, t, n) { + ;(e |= 0), (t |= 0), n || H(e, t, this.length) + for (var r = this[e], i = 1, o = 0; ++o < t && (i *= 256); ) + r += this[e + o] * i + return r >= (i *= 128) && (r -= Math.pow(2, 8 * t)), r + }), + (r.prototype.readIntBE = function (e, t, n) { + ;(e |= 0), (t |= 0), n || H(e, t, this.length) + for (var r = t, i = 1, o = this[e + --r]; r > 0 && (i *= 256); ) + o += this[e + --r] * i + return o >= (i *= 128) && (o -= Math.pow(2, 8 * t)), o + }), + (r.prototype.readInt8 = function (e, t) { + return ( + t || H(e, 1, this.length), + 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] + ) + }), + (r.prototype.readInt16LE = function (e, t) { + t || H(e, 2, this.length) + var n = this[e] | (this[e + 1] << 8) + return 32768 & n ? 4294901760 | n : n + }), + (r.prototype.readInt16BE = function (e, t) { + t || H(e, 2, this.length) + var n = this[e + 1] | (this[e] << 8) + return 32768 & n ? 4294901760 | n : n + }), + (r.prototype.readInt32LE = function (e, t) { + return ( + t || H(e, 4, this.length), + this[e] | (this[e + 1] << 8) | (this[e + 2] << 16) | (this[e + 3] << 24) + ) + }), + (r.prototype.readInt32BE = function (e, t) { + return ( + t || H(e, 4, this.length), + (this[e] << 24) | (this[e + 1] << 16) | (this[e + 2] << 8) | this[e + 3] + ) + }), + (r.prototype.readFloatLE = function (e, t) { + return t || H(e, 4, this.length), a.read(this, e, !0, 23, 4) + }), + (r.prototype.readFloatBE = function (e, t) { + return t || H(e, 4, this.length), a.read(this, e, !1, 23, 4) + }), + (r.prototype.readDoubleLE = function (e, t) { + return t || H(e, 8, this.length), a.read(this, e, !0, 52, 8) + }), + (r.prototype.readDoubleBE = function (e, t) { + return t || H(e, 8, this.length), a.read(this, e, !1, 52, 8) + }), + (r.prototype.writeUIntLE = function (e, t, n, r) { + ;(e = +e), + (t |= 0), + (n |= 0), + r || G(this, e, t, n, Math.pow(2, 8 * n) - 1, 0) + var i = 1, + o = 0 + for (this[t] = 255 & e; ++o < n && (i *= 256); ) this[t + o] = (e / i) & 255 + return t + n + }), + (r.prototype.writeUIntBE = function (e, t, n, r) { + ;(e = +e), + (t |= 0), + (n |= 0), + r || G(this, e, t, n, Math.pow(2, 8 * n) - 1, 0) + var i = n - 1, + o = 1 + for (this[t + i] = 255 & e; --i >= 0 && (o *= 256); ) + this[t + i] = (e / o) & 255 + return t + n + }), + (r.prototype.writeUInt8 = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 1, 255, 0), + r.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), + (this[t] = 255 & e), + t + 1 + ) + }), + (r.prototype.writeUInt16LE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 2, 65535, 0), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = 255 & e), (this[t + 1] = e >>> 8)) + : z(this, e, t, !0), + t + 2 + ) + }), + (r.prototype.writeUInt16BE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 2, 65535, 0), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = e >>> 8), (this[t + 1] = 255 & e)) + : z(this, e, t, !1), + t + 2 + ) + }), + (r.prototype.writeUInt32LE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 4, 4294967295, 0), + r.TYPED_ARRAY_SUPPORT + ? ((this[t + 3] = e >>> 24), + (this[t + 2] = e >>> 16), + (this[t + 1] = e >>> 8), + (this[t] = 255 & e)) + : j(this, e, t, !0), + t + 4 + ) + }), + (r.prototype.writeUInt32BE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 4, 4294967295, 0), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = e >>> 24), + (this[t + 1] = e >>> 16), + (this[t + 2] = e >>> 8), + (this[t + 3] = 255 & e)) + : j(this, e, t, !1), + t + 4 + ) + }), + (r.prototype.writeIntLE = function (e, t, n, r) { + if (((e = +e), (t |= 0), !r)) { + var i = Math.pow(2, 8 * n - 1) + G(this, e, t, n, i - 1, -i) + } + var o = 0, + a = 1, + s = 0 + for (this[t] = 255 & e; ++o < n && (a *= 256); ) + e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1), + (this[t + o] = (((e / a) >> 0) - s) & 255) + return t + n + }), + (r.prototype.writeIntBE = function (e, t, n, r) { + if (((e = +e), (t |= 0), !r)) { + var i = Math.pow(2, 8 * n - 1) + G(this, e, t, n, i - 1, -i) + } + var o = n - 1, + a = 1, + s = 0 + for (this[t + o] = 255 & e; --o >= 0 && (a *= 256); ) + e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1), + (this[t + o] = (((e / a) >> 0) - s) & 255) + return t + n + }), + (r.prototype.writeInt8 = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 1, 127, -128), + r.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), + e < 0 && (e = 255 + e + 1), + (this[t] = 255 & e), + t + 1 + ) + }), + (r.prototype.writeInt16LE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 2, 32767, -32768), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = 255 & e), (this[t + 1] = e >>> 8)) + : z(this, e, t, !0), + t + 2 + ) + }), + (r.prototype.writeInt16BE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 2, 32767, -32768), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = e >>> 8), (this[t + 1] = 255 & e)) + : z(this, e, t, !1), + t + 2 + ) + }), + (r.prototype.writeInt32LE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 4, 2147483647, -2147483648), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = 255 & e), + (this[t + 1] = e >>> 8), + (this[t + 2] = e >>> 16), + (this[t + 3] = e >>> 24)) + : j(this, e, t, !0), + t + 4 + ) + }), + (r.prototype.writeInt32BE = function (e, t, n) { + return ( + (e = +e), + (t |= 0), + n || G(this, e, t, 4, 2147483647, -2147483648), + e < 0 && (e = 4294967295 + e + 1), + r.TYPED_ARRAY_SUPPORT + ? ((this[t] = e >>> 24), + (this[t + 1] = e >>> 16), + (this[t + 2] = e >>> 8), + (this[t + 3] = 255 & e)) + : j(this, e, t, !1), + t + 4 + ) + }), + (r.prototype.writeFloatLE = function (e, t, n) { + return W(this, e, t, !0, n) + }), + (r.prototype.writeFloatBE = function (e, t, n) { + return W(this, e, t, !1, n) + }), + (r.prototype.writeDoubleLE = function (e, t, n) { + return q(this, e, t, !0, n) + }), + (r.prototype.writeDoubleBE = function (e, t, n) { + return q(this, e, t, !1, n) + }), + (r.prototype.copy = function (e, t, n, i) { + if ( + (n || (n = 0), + i || 0 === i || (i = this.length), + t >= e.length && (t = e.length), + t || (t = 0), + i > 0 && i < n && (i = n), + i === n) + ) + return 0 + if (0 === e.length || 0 === this.length) return 0 + if (t < 0) throw new RangeError('targetStart out of bounds') + if (n < 0 || n >= this.length) + throw new RangeError('sourceStart out of bounds') + if (i < 0) throw new RangeError('sourceEnd out of bounds') + i > this.length && (i = this.length), + e.length - t < i - n && (i = e.length - t + n) + var o, + a = i - n + if (this === e && n < t && t < i) + for (o = a - 1; o >= 0; --o) e[o + t] = this[o + n] + else if (a < 1e3 || !r.TYPED_ARRAY_SUPPORT) + for (o = 0; o < a; ++o) e[o + t] = this[o + n] + else Uint8Array.prototype.set.call(e, this.subarray(n, n + a), t) + return a + }), + (r.prototype.fill = function (e, t, n, i) { + if ('string' === typeof e) { + if ( + ('string' === typeof t + ? ((i = t), (t = 0), (n = this.length)) + : 'string' === typeof n && ((i = n), (n = this.length)), + 1 === e.length) + ) { + var o = e.charCodeAt(0) + o < 256 && (e = o) + } + if (void 0 !== i && 'string' !== typeof i) + throw new TypeError('encoding must be a string') + if ('string' === typeof i && !r.isEncoding(i)) + throw new TypeError('Unknown encoding: ' + i) + } else 'number' === typeof e && (e &= 255) + if (t < 0 || this.length < t || this.length < n) + throw new RangeError('Out of range index') + if (n <= t) return this + var a + if ( + ((t >>>= 0), + (n = void 0 === n ? this.length : n >>> 0), + e || (e = 0), + 'number' === typeof e) + ) + for (a = t; a < n; ++a) this[a] = e + else { + var s = r.isBuffer(e) ? e : K(new r(e, i).toString()), + l = s.length + for (a = 0; a < n - t; ++a) this[a + t] = s[a % l] + } + return this + }) + var X = /[^+\/0-9A-Za-z-_]/g + function Y(e) { + if ((e = Q(e).replace(X, '')).length < 2) return '' + for (; e.length % 4 !== 0; ) e += '=' + return e + } + function Q(e) { + return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, '') + } + function Z(e) { + return e < 16 ? '0' + e.toString(16) : e.toString(16) + } + function K(e, t) { + var n + t = t || 1 / 0 + for (var r = e.length, i = null, o = [], a = 0; a < r; ++a) { + if ((n = e.charCodeAt(a)) > 55295 && n < 57344) { + if (!i) { + if (n > 56319) { + ;(t -= 3) > -1 && o.push(239, 191, 189) + continue + } + if (a + 1 === r) { + ;(t -= 3) > -1 && o.push(239, 191, 189) + continue + } + i = n + continue + } + if (n < 56320) { + ;(t -= 3) > -1 && o.push(239, 191, 189), (i = n) + continue + } + n = 65536 + (((i - 55296) << 10) | (n - 56320)) + } else i && (t -= 3) > -1 && o.push(239, 191, 189) + if (((i = null), n < 128)) { + if ((t -= 1) < 0) break + o.push(n) + } else if (n < 2048) { + if ((t -= 2) < 0) break + o.push((n >> 6) | 192, (63 & n) | 128) + } else if (n < 65536) { + if ((t -= 3) < 0) break + o.push((n >> 12) | 224, ((n >> 6) & 63) | 128, (63 & n) | 128) + } else { + if (!(n < 1114112)) throw new Error('Invalid code point') + if ((t -= 4) < 0) break + o.push( + (n >> 18) | 240, + ((n >> 12) & 63) | 128, + ((n >> 6) & 63) | 128, + (63 & n) | 128, + ) + } + } + return o + } + function J(e) { + for (var t = [], n = 0; n < e.length; ++n) t.push(255 & e.charCodeAt(n)) + return t + } + function $(e, t) { + for (var n, r, i, o = [], a = 0; a < e.length && !((t -= 2) < 0); ++a) + (r = (n = e.charCodeAt(a)) >> 8), (i = n % 256), o.push(i), o.push(r) + return o + } + function ee(e) { + return o.toByteArray(Y(e)) + } + function te(e, t, n, r) { + for (var i = 0; i < r && !(i + n >= t.length || i >= e.length); ++i) + t[i + n] = e[i] + return i + } + function ne(e) { + return e !== e + } + }.call( + this, + 'undefined' !== typeof r.g + ? r.g + : 'undefined' !== typeof self + ? self + : 'undefined' !== typeof window + ? window + : {}, + t('buffer').Buffer, + )) + }, + { 'base64-js': 3, buffer: 6, ieee754: 29, isarray: 35 }, + ], + 7: [ + function (t, n, r) { + !(function () { + if ('undefined' !== typeof window) + try { + var t = new window.CustomEvent('test', { cancelable: !0 }) + if ((t.preventDefault(), !0 !== t.defaultPrevented)) + throw new Error('Could not prevent default') + } catch (e) { + var n = function (e, n) { + var r, i + return ( + ((n = n || {}).bubbles = !!n.bubbles), + (n.cancelable = !!n.cancelable), + (r = document.createEvent('CustomEvent')).initCustomEvent( + e, + n.bubbles, + n.cancelable, + n.detail, + ), + (i = r.preventDefault), + (r.preventDefault = function () { + i.call(this) + try { + Object.defineProperty(this, 'defaultPrevented', { + get: function () { + return !0 + }, + }) + } catch (t) { + this.defaultPrevented = !0 + } + }), + r + ) + } + ;(n.prototype = window.Event.prototype), (window.CustomEvent = n) + } + })() + }, + {}, + ], + 8: [ + function (t, n, r) { + function i() { + return ( + 'WebkitAppearance' in document.documentElement.style || + (window.console && (console.firebug || (console.exception && console.table))) || + (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && + parseInt(RegExp.$1, 10) >= 31) + ) + } + function o() { + var e = arguments, + t = this.useColors + if ( + ((e[0] = + (t ? '%c' : '') + + this.namespace + + (t ? ' %c' : ' ') + + e[0] + + (t ? '%c ' : ' ')), + !t) + ) + return e + var n = 'color: ' + this.color + e = [e[0], n, 'color: inherit'].concat(Array.prototype.slice.call(e, 1)) + var r = 0, + i = 0 + return ( + e[0].replace(/%[a-z%]/g, function (e) { + '%%' !== e && (r++, '%c' === e && (i = r)) + }), + e.splice(i, 0, n), + e + ) + } + function a() { + return ( + 'object' === typeof console && + console.log && + Function.prototype.apply.call(console.log, console, arguments) + ) + } + function s(t) { + try { + null == t ? r.storage.removeItem('debug') : (r.storage.debug = t) + } catch (e) {} + } + function l() { + var t + try { + t = r.storage.debug + } catch (e) {} + return t + } + function c() { + try { + return window.localStorage + } catch (e) {} + } + ;((r = n.exports = t('./debug')).log = a), + (r.formatArgs = o), + (r.save = s), + (r.load = l), + (r.useColors = i), + (r.storage = + 'undefined' != typeof chrome && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : c()), + (r.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson', + ]), + (r.formatters.j = function (e) { + return JSON.stringify(e) + }), + r.enable(l()) + }, + { './debug': 9 }, + ], + 9: [ + function (e, t, n) { + ;((n = t.exports = o).coerce = c), + (n.disable = s), + (n.enable = a), + (n.enabled = l), + (n.names = []), + (n.skips = []), + (n.formatters = {}) + var r = 0 + function i() { + return n.colors[r++ % n.colors.length] + } + function o(e) { + function t() {} + function r() { + var e = r + null == e.useColors && (e.useColors = n.useColors()), + null == e.color && e.useColors && (e.color = i()) + var t = Array.prototype.slice.call(arguments) + ;(t[0] = n.coerce(t[0])), 'string' !== typeof t[0] && (t = ['%o'].concat(t)) + var o = 0 + ;(t[0] = t[0].replace(/%([a-z%])/g, function (r, i) { + if ('%%' === r) return r + o++ + var a = n.formatters[i] + if ('function' === typeof a) { + var s = t[o] + ;(r = a.call(e, s)), t.splice(o, 1), o-- + } + return r + })), + 'function' === typeof n.formatArgs && (t = n.formatArgs.apply(e, t)), + (r.log || n.log || console.log.bind(console)).apply(e, t) + } + ;(t.enabled = !1), (r.enabled = !0) + var o = n.enabled(e) ? r : t + return (o.namespace = e), o + } + function a(e) { + n.save(e) + for (var t = (e || '').split(/[\s,]+/), r = t.length, i = 0; i < r; i++) + t[i] && + ('-' === (e = t[i].replace(/\*/g, '.*?'))[0] + ? n.skips.push(new RegExp('^' + e.substr(1) + '$')) + : n.names.push(new RegExp('^' + e + '$'))) + } + function s() { + n.enable('') + } + function l(e) { + var t, r + for (t = 0, r = n.skips.length; t < r; t++) if (n.skips[t].test(e)) return !1 + for (t = 0, r = n.names.length; t < r; t++) if (n.names[t].test(e)) return !0 + return !1 + } + function c(e) { + return e instanceof Error ? e.stack || e.message : e + } + }, + {}, + ], + 10: [ + function (e, t, n) { + 'use strict' + var r = e('is-obj'), + i = Object.prototype.hasOwnProperty, + o = Object.prototype.propertyIsEnumerable + function a(e) { + if (null === e || void 0 === e) + throw new TypeError('Sources cannot be null or undefined') + return Object(e) + } + function s(e, t, n) { + var o = t[n] + if (void 0 !== o && null !== o) { + if (i.call(e, n) && (void 0 === e[n] || null === e[n])) + throw new TypeError('Cannot convert undefined or null to object (' + n + ')') + i.call(e, n) && r(o) ? (e[n] = l(Object(e[n]), t[n])) : (e[n] = o) + } + } + function l(e, t) { + if (e === t) return e + for (var n in (t = Object(t))) i.call(t, n) && s(e, t, n) + if (Object.getOwnPropertySymbols) + for (var r = Object.getOwnPropertySymbols(t), a = 0; a < r.length; a++) + o.call(t, r[a]) && s(e, t, r[a]) + return e + } + t.exports = function (e) { + e = a(e) + for (var t = 1; t < arguments.length; t++) l(e, arguments[t]) + return e + } + }, + { 'is-obj': 34 }, + ], + 11: [ + function (t, n, r) { + 'use strict' + var i = t('object-keys'), + o = 'function' === typeof Symbol && 'symbol' === typeof Symbol('foo'), + a = Object.prototype.toString, + s = Array.prototype.concat, + l = Object.defineProperty, + c = function (e) { + return 'function' === typeof e && '[object Function]' === a.call(e) + }, + u = function () { + var t = {} + try { + for (var n in (l(t, 'x', { enumerable: !1, value: t }), t)) return !1 + return t.x === t + } catch (e) { + return !1 + } + }, + h = l && u(), + d = function (e, t, n, r) { + ;(!(t in e) || (c(r) && r())) && + (h + ? l(e, t, { configurable: !0, enumerable: !1, value: n, writable: !0 }) + : (e[t] = n)) + }, + p = function (e, t) { + var n = arguments.length > 2 ? arguments[2] : {}, + r = i(t) + o && (r = s.call(r, Object.getOwnPropertySymbols(t))) + for (var a = 0; a < r.length; a += 1) d(e, r[a], t[r[a]], n[r[a]]) + } + ;(p.supportsDescriptors = !!h), (n.exports = p) + }, + { 'object-keys': 41 }, + ], + 12: [ + function (t, n, r) { + !(function (t, n, r, i) { + 'use strict' + function o(e, t) { + for (var n = 0, r = e.length; n < r; n++) g(e[n], t) + } + function a(e) { + for (var t, n = 0, r = e.length; n < r; n++) (t = e[n]), M(t, H[l(t)]) + } + function s(e) { + return function (t) { + ie(t) && (g(t, e), o(t.querySelectorAll(G), e)) + } + } + function l(e) { + var t = se.call(e, 'is'), + n = e.nodeName.toUpperCase(), + r = j.call(U, t ? F + t.toUpperCase() : B + n) + return t && -1 < r && !c(n, t) ? -1 : r + } + function c(e, t) { + return -1 < G.indexOf(e + '[is="' + t + '"]') + } + function u(e) { + var t = e.currentTarget, + n = e.attrChange, + r = e.attrName, + i = e.target + ge && + (!i || i === t) && + t.attributeChangedCallback && + 'style' !== r && + e.prevValue !== e.newValue && + t.attributeChangedCallback( + r, + n === e[L] ? null : e.prevValue, + n === e[P] ? null : e.newValue, + ) + } + function h(e) { + var t = s(e) + return function (e) { + y.push(t, e.target) + } + } + function d(e) { + ve && ((ve = !1), e.currentTarget.removeEventListener(O, d)), + o((e.target || n).querySelectorAll(G), e.detail === S ? S : T), + re && m() + } + function p(e, t) { + var n = this + le.call(n, e, t), b.call(n, { target: n }) + } + function f(e, t) { + ee(e, t), + x + ? x.observe(e, he) + : (me && ((e.setAttribute = p), (e[_] = w(e)), e.addEventListener(I, b)), + e.addEventListener(D, u)), + e.createdCallback && + ge && + ((e.created = !0), e.createdCallback(), (e.created = !1)) + } + function m() { + for (var e, t = 0, n = oe.length; t < n; t++) + (e = oe[t]), z.contains(e) || (n--, oe.splice(t--, 1), g(e, S)) + } + function v(e) { + throw new Error('A ' + e + ' type is already registered') + } + function g(e, t) { + var n, + r = l(e) + ;-1 < r && + (E(e, H[r]), + (r = 0), + t !== T || e[T] + ? t === S && !e[S] && ((e[T] = !1), (e[S] = !0), (r = 1)) + : ((e[S] = !1), + (e[T] = !0), + (r = 1), + re && j.call(oe, e) < 0 && oe.push(e)), + r && (n = e[t + 'Callback']) && n.call(e)) + } + if (!(i in n)) { + var y, + b, + A, + w, + x, + E, + M, + _ = '__' + i + ((1e5 * Math.random()) >> 0), + T = 'attached', + S = 'detached', + C = 'extends', + L = 'ADDITION', + R = 'MODIFICATION', + P = 'REMOVAL', + D = 'DOMAttrModified', + O = 'DOMContentLoaded', + I = 'DOMSubtreeModified', + B = '<', + F = '=', + k = /^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/, + N = [ + 'ANNOTATION-XML', + 'COLOR-PROFILE', + 'FONT-FACE', + 'FONT-FACE-SRC', + 'FONT-FACE-URI', + 'FONT-FACE-FORMAT', + 'FONT-FACE-NAME', + 'MISSING-GLYPH', + ], + U = [], + H = [], + G = '', + z = n.documentElement, + j = + U.indexOf || + function (e) { + for (var t = this.length; t-- && this[t] !== e; ); + return t + }, + V = r.prototype, + W = V.hasOwnProperty, + q = V.isPrototypeOf, + X = r.defineProperty, + Y = r.getOwnPropertyDescriptor, + Q = r.getOwnPropertyNames, + Z = r.getPrototypeOf, + K = r.setPrototypeOf, + J = !!r.__proto__, + $ = + r.create || + function e(t) { + return t ? ((e.prototype = t), new e()) : this + }, + ee = + K || + (J + ? function (e, t) { + return (e.__proto__ = t), e + } + : Q && Y + ? (function () { + function e(e, t) { + for (var n, r = Q(t), i = 0, o = r.length; i < o; i++) + (n = r[i]), W.call(e, n) || X(e, n, Y(t, n)) + } + return function (t, n) { + do { + e(t, n) + } while ((n = Z(n)) && !q.call(n, t)) + return t + } + })() + : function (e, t) { + for (var n in t) e[n] = t[n] + return e + }), + te = t.MutationObserver || t.WebKitMutationObserver, + ne = (t.HTMLElement || t.Element || t.Node).prototype, + re = !q.call(ne, z), + ie = re + ? function (e) { + return 1 === e.nodeType + } + : function (e) { + return q.call(ne, e) + }, + oe = re && [], + ae = ne.cloneNode, + se = ne.getAttribute, + le = ne.setAttribute, + ce = ne.removeAttribute, + ue = n.createElement, + he = te && { attributes: !0, characterData: !0, attributeOldValue: !0 }, + de = + te || + function (e) { + ;(me = !1), z.removeEventListener(D, de) + }, + pe = + t.requestAnimationFrame || + t.webkitRequestAnimationFrame || + t.mozRequestAnimationFrame || + t.msRequestAnimationFrame || + function (e) { + setTimeout(e, 10) + }, + fe = !1, + me = !0, + ve = !0, + ge = !0 + K || J + ? ((E = function (e, t) { + q.call(t, e) || f(e, t) + }), + (M = f)) + : (M = E = + function (e, t) { + e[_] || ((e[_] = r(!0)), f(e, t)) + }), + re + ? ((me = !1), + (function () { + var t = Y(ne, 'addEventListener'), + n = t.value, + r = function (e) { + var t = new CustomEvent(D, { bubbles: !0 }) + ;(t.attrName = e), + (t.prevValue = se.call(this, e)), + (t.newValue = null), + (t[P] = t.attrChange = 2), + ce.call(this, e), + this.dispatchEvent(t) + }, + i = function (t, n) { + var r = this.hasAttribute(t), + i = r && se.call(this, t) + ;(e = new CustomEvent(D, { bubbles: !0 })), + le.call(this, t, n), + (e.attrName = t), + (e.prevValue = r ? i : null), + (e.newValue = n), + r ? (e[R] = e.attrChange = 1) : (e[L] = e.attrChange = 0), + this.dispatchEvent(e) + }, + o = function (e) { + var t, + n = e.currentTarget, + r = n[_], + i = e.propertyName + r.hasOwnProperty(i) && + ((r = r[i]), + ((t = new CustomEvent(D, { bubbles: !0 })).attrName = r.name), + (t.prevValue = r.value || null), + (t.newValue = r.value = n[i] || null), + null == t.prevValue + ? (t[L] = t.attrChange = 0) + : (t[R] = t.attrChange = 1), + n.dispatchEvent(t)) + } + ;(t.value = function (e, t, a) { + e === D && + this.attributeChangedCallback && + this.setAttribute !== i && + ((this[_] = { + className: { name: 'class', value: this.className }, + }), + (this.setAttribute = i), + (this.removeAttribute = r), + n.call(this, 'propertychange', o)), + n.call(this, e, t, a) + }), + X(ne, 'addEventListener', t) + })()) + : te || + (z.addEventListener(D, de), + z.setAttribute(_, 1), + z.removeAttribute(_), + me && + ((b = function (e) { + var t, + n, + r, + i = this + if (i === e.target) { + for (r in ((t = i[_]), (i[_] = n = w(i)), n)) { + if (!(r in t)) return A(0, i, r, t[r], n[r], L) + if (n[r] !== t[r]) return A(1, i, r, t[r], n[r], R) + } + for (r in t) if (!(r in n)) return A(2, i, r, t[r], n[r], P) + } + }), + (A = function (e, t, n, r, i, o) { + var a = { + attrChange: e, + currentTarget: t, + attrName: n, + prevValue: r, + newValue: i, + } + ;(a[o] = e), u(a) + }), + (w = function (e) { + for ( + var t, n, r = {}, i = e.attributes, o = 0, a = i.length; + o < a; + o++ + ) + 'setAttribute' !== (n = (t = i[o]).name) && (r[n] = t.value) + return r + }))), + (n[i] = function (e, t) { + if ( + ((r = e.toUpperCase()), + fe || + ((fe = !0), + te + ? (x = (function (e, t) { + function n(e, t) { + for (var n = 0, r = e.length; n < r; t(e[n++])); + } + return new te(function (r) { + for (var i, o, a, s = 0, l = r.length; s < l; s++) + 'childList' === (i = r[s]).type + ? (n(i.addedNodes, e), n(i.removedNodes, t)) + : ((o = i.target), + ge && + o.attributeChangedCallback && + 'style' !== i.attributeName && + (a = se.call(o, i.attributeName)) !== i.oldValue && + o.attributeChangedCallback( + i.attributeName, + i.oldValue, + a, + )) + }) + })(s(T), s(S))).observe(n, { childList: !0, subtree: !0 }) + : ((y = []), + pe(function e() { + for (; y.length; ) y.shift().call(null, y.shift()) + pe(e) + }), + n.addEventListener('DOMNodeInserted', h(T)), + n.addEventListener('DOMNodeRemoved', h(S))), + n.addEventListener(O, d), + n.addEventListener('readystatechange', d), + (n.createElement = function (e, t) { + var r = ue.apply(n, arguments), + i = '' + e, + o = j.call(U, (t ? F : B) + (t || i).toUpperCase()), + a = -1 < o + return ( + t && + (r.setAttribute('is', (t = t.toLowerCase())), + a && (a = c(i.toUpperCase(), t))), + (ge = !n.createElement.innerHTMLHelper), + a && M(r, H[o]), + r + ) + }), + (ne.cloneNode = function (e) { + var t = ae.call(this, !!e), + n = l(t) + return -1 < n && M(t, H[n]), e && a(t.querySelectorAll(G)), t + })), + -2 < j.call(U, F + r) + j.call(U, B + r) && v(e), + !k.test(r) || -1 < j.call(N, r)) + ) + throw new Error('The type ' + e + ' is invalid') + var r, + i, + u = function () { + return f ? n.createElement(m, r) : n.createElement(m) + }, + p = t || V, + f = W.call(p, C), + m = f ? t[C].toUpperCase() : r + return ( + f && -1 < j.call(U, B + m) && v(m), + (i = U.push((f ? F : B) + r) - 1), + (G = G.concat( + G.length ? ',' : '', + f ? m + '[is="' + e.toLowerCase() + '"]' : m, + )), + (u.prototype = H[i] = W.call(p, 'prototype') ? p.prototype : $(ne)), + o(n.querySelectorAll(G), T), + u + ) + }) + } + })(window, document, Object, 'registerElement') + }, + {}, + ], + 13: [ + function (e, t, n) { + t.exports = function (e) { + switch (e) { + case 'int8': + return Int8Array + case 'int16': + return Int16Array + case 'int32': + return Int32Array + case 'uint8': + return Uint8Array + case 'uint16': + return Uint16Array + case 'uint32': + return Uint32Array + case 'float32': + return Float32Array + case 'float64': + return Float64Array + case 'array': + return Array + case 'uint8_clamped': + return Uint8ClampedArray + } + } + }, + {}, + ], + 14: [ + function (e, t, n) { + 'use strict' + var r, + i, + o, + a, + s = Object.getOwnPropertyDescriptor + ? (function () { + return Object.getOwnPropertyDescriptor(arguments, 'callee').get + })() + : function () { + throw new TypeError() + }, + l = 'function' === typeof Symbol && 'symbol' === typeof Symbol.iterator, + c = + Object.getPrototypeOf || + function (e) { + return e.__proto__ + }, + u = i ? c(i) : r, + h = o ? o.constructor : r, + d = a ? c(a) : r, + p = a ? a() : r, + f = 'undefined' === typeof Uint8Array ? r : c(Uint8Array), + m = { + '$ %Array%': Array, + '$ %ArrayBuffer%': 'undefined' === typeof ArrayBuffer ? r : ArrayBuffer, + '$ %ArrayBufferPrototype%': + 'undefined' === typeof ArrayBuffer ? r : ArrayBuffer.prototype, + '$ %ArrayIteratorPrototype%': l ? c([][Symbol.iterator]()) : r, + '$ %ArrayPrototype%': Array.prototype, + '$ %ArrayProto_entries%': Array.prototype.entries, + '$ %ArrayProto_forEach%': Array.prototype.forEach, + '$ %ArrayProto_keys%': Array.prototype.keys, + '$ %ArrayProto_values%': Array.prototype.values, + '$ %AsyncFromSyncIteratorPrototype%': r, + '$ %AsyncFunction%': h, + '$ %AsyncFunctionPrototype%': h ? h.prototype : r, + '$ %AsyncGenerator%': a ? c(p) : r, + '$ %AsyncGeneratorFunction%': d, + '$ %AsyncGeneratorPrototype%': d ? d.prototype : r, + '$ %AsyncIteratorPrototype%': + p && l && Symbol.asyncIterator ? p[Symbol.asyncIterator]() : r, + '$ %Atomics%': 'undefined' === typeof Atomics ? r : Atomics, + '$ %Boolean%': Boolean, + '$ %BooleanPrototype%': Boolean.prototype, + '$ %DataView%': 'undefined' === typeof DataView ? r : DataView, + '$ %DataViewPrototype%': + 'undefined' === typeof DataView ? r : DataView.prototype, + '$ %Date%': Date, + '$ %DatePrototype%': Date.prototype, + '$ %decodeURI%': decodeURI, + '$ %decodeURIComponent%': decodeURIComponent, + '$ %encodeURI%': encodeURI, + '$ %encodeURIComponent%': encodeURIComponent, + '$ %Error%': Error, + '$ %ErrorPrototype%': Error.prototype, + '$ %eval%': eval, + '$ %EvalError%': EvalError, + '$ %EvalErrorPrototype%': EvalError.prototype, + '$ %Float32Array%': 'undefined' === typeof Float32Array ? r : Float32Array, + '$ %Float32ArrayPrototype%': + 'undefined' === typeof Float32Array ? r : Float32Array.prototype, + '$ %Float64Array%': 'undefined' === typeof Float64Array ? r : Float64Array, + '$ %Float64ArrayPrototype%': + 'undefined' === typeof Float64Array ? r : Float64Array.prototype, + '$ %Function%': Function, + '$ %FunctionPrototype%': Function.prototype, + '$ %Generator%': i ? c(i()) : r, + '$ %GeneratorFunction%': u, + '$ %GeneratorPrototype%': u ? u.prototype : r, + '$ %Int8Array%': 'undefined' === typeof Int8Array ? r : Int8Array, + '$ %Int8ArrayPrototype%': + 'undefined' === typeof Int8Array ? r : Int8Array.prototype, + '$ %Int16Array%': 'undefined' === typeof Int16Array ? r : Int16Array, + '$ %Int16ArrayPrototype%': + 'undefined' === typeof Int16Array ? r : Int8Array.prototype, + '$ %Int32Array%': 'undefined' === typeof Int32Array ? r : Int32Array, + '$ %Int32ArrayPrototype%': + 'undefined' === typeof Int32Array ? r : Int32Array.prototype, + '$ %isFinite%': isFinite, + '$ %isNaN%': isNaN, + '$ %IteratorPrototype%': l ? c(c([][Symbol.iterator]())) : r, + '$ %JSON%': JSON, + '$ %JSONParse%': JSON.parse, + '$ %Map%': 'undefined' === typeof Map ? r : Map, + '$ %MapIteratorPrototype%': + 'undefined' !== typeof Map && l ? c(new Map()[Symbol.iterator]()) : r, + '$ %MapPrototype%': 'undefined' === typeof Map ? r : Map.prototype, + '$ %Math%': Math, + '$ %Number%': Number, + '$ %NumberPrototype%': Number.prototype, + '$ %Object%': Object, + '$ %ObjectPrototype%': Object.prototype, + '$ %ObjProto_toString%': Object.prototype.toString, + '$ %ObjProto_valueOf%': Object.prototype.valueOf, + '$ %parseFloat%': parseFloat, + '$ %parseInt%': parseInt, + '$ %Promise%': 'undefined' === typeof Promise ? r : Promise, + '$ %PromisePrototype%': 'undefined' === typeof Promise ? r : Promise.prototype, + '$ %PromiseProto_then%': + 'undefined' === typeof Promise ? r : Promise.prototype.then, + '$ %Promise_all%': 'undefined' === typeof Promise ? r : Promise.all, + '$ %Promise_reject%': 'undefined' === typeof Promise ? r : Promise.reject, + '$ %Promise_resolve%': 'undefined' === typeof Promise ? r : Promise.resolve, + '$ %Proxy%': 'undefined' === typeof Proxy ? r : Proxy, + '$ %RangeError%': RangeError, + '$ %RangeErrorPrototype%': RangeError.prototype, + '$ %ReferenceError%': ReferenceError, + '$ %ReferenceErrorPrototype%': ReferenceError.prototype, + '$ %Reflect%': 'undefined' === typeof Reflect ? r : Reflect, + '$ %RegExp%': RegExp, + '$ %RegExpPrototype%': RegExp.prototype, + '$ %Set%': 'undefined' === typeof Set ? r : Set, + '$ %SetIteratorPrototype%': + 'undefined' !== typeof Set && l ? c(new Set()[Symbol.iterator]()) : r, + '$ %SetPrototype%': 'undefined' === typeof Set ? r : Set.prototype, + '$ %SharedArrayBuffer%': + 'undefined' === typeof SharedArrayBuffer ? r : SharedArrayBuffer, + '$ %SharedArrayBufferPrototype%': + 'undefined' === typeof SharedArrayBuffer ? r : SharedArrayBuffer.prototype, + '$ %String%': String, + '$ %StringIteratorPrototype%': l ? c(''[Symbol.iterator]()) : r, + '$ %StringPrototype%': String.prototype, + '$ %Symbol%': l ? Symbol : r, + '$ %SymbolPrototype%': l ? Symbol.prototype : r, + '$ %SyntaxError%': SyntaxError, + '$ %SyntaxErrorPrototype%': SyntaxError.prototype, + '$ %ThrowTypeError%': s, + '$ %TypedArray%': f, + '$ %TypedArrayPrototype%': f ? f.prototype : r, + '$ %TypeError%': TypeError, + '$ %TypeErrorPrototype%': TypeError.prototype, + '$ %Uint8Array%': 'undefined' === typeof Uint8Array ? r : Uint8Array, + '$ %Uint8ArrayPrototype%': + 'undefined' === typeof Uint8Array ? r : Uint8Array.prototype, + '$ %Uint8ClampedArray%': + 'undefined' === typeof Uint8ClampedArray ? r : Uint8ClampedArray, + '$ %Uint8ClampedArrayPrototype%': + 'undefined' === typeof Uint8ClampedArray ? r : Uint8ClampedArray.prototype, + '$ %Uint16Array%': 'undefined' === typeof Uint16Array ? r : Uint16Array, + '$ %Uint16ArrayPrototype%': + 'undefined' === typeof Uint16Array ? r : Uint16Array.prototype, + '$ %Uint32Array%': 'undefined' === typeof Uint32Array ? r : Uint32Array, + '$ %Uint32ArrayPrototype%': + 'undefined' === typeof Uint32Array ? r : Uint32Array.prototype, + '$ %URIError%': URIError, + '$ %URIErrorPrototype%': URIError.prototype, + '$ %WeakMap%': 'undefined' === typeof WeakMap ? r : WeakMap, + '$ %WeakMapPrototype%': 'undefined' === typeof WeakMap ? r : WeakMap.prototype, + '$ %WeakSet%': 'undefined' === typeof WeakSet ? r : WeakSet, + '$ %WeakSetPrototype%': 'undefined' === typeof WeakSet ? r : WeakSet.prototype, + } + t.exports = function (e, t) { + if (arguments.length > 1 && 'boolean' !== typeof t) + throw new TypeError('"allowMissing" argument must be a boolean') + var n = '$ ' + e + if (!(n in m)) throw new SyntaxError('intrinsic ' + e + ' does not exist!') + if ('undefined' === typeof m[n] && !t) + throw new TypeError( + 'intrinsic ' + e + ' exists, but is not available. Please file an issue!', + ) + return m[n] + } + }, + {}, + ], + 15: [ + function (e, t, n) { + 'use strict' + var r = e('./GetIntrinsic'), + i = r('%Object%'), + o = r('%TypeError%'), + a = r('%String%'), + s = e('./helpers/assertRecord'), + l = e('./helpers/isNaN'), + c = e('./helpers/isFinite'), + u = e('./helpers/sign'), + h = e('./helpers/mod'), + d = e('is-callable'), + p = e('es-to-primitive/es5'), + f = e('has'), + m = { + ToPrimitive: p, + ToBoolean: function (e) { + return !!e + }, + ToNumber: function (e) { + return +e + }, + ToInteger: function (e) { + var t = this.ToNumber(e) + return l(t) ? 0 : 0 !== t && c(t) ? u(t) * Math.floor(Math.abs(t)) : t + }, + ToInt32: function (e) { + return this.ToNumber(e) >> 0 + }, + ToUint32: function (e) { + return this.ToNumber(e) >>> 0 + }, + ToUint16: function (e) { + var t = this.ToNumber(e) + if (l(t) || 0 === t || !c(t)) return 0 + var n = u(t) * Math.floor(Math.abs(t)) + return h(n, 65536) + }, + ToString: function (e) { + return a(e) + }, + ToObject: function (e) { + return this.CheckObjectCoercible(e), i(e) + }, + CheckObjectCoercible: function (e, t) { + if (null == e) throw new o(t || 'Cannot call method on ' + e) + return e + }, + IsCallable: d, + SameValue: function (e, t) { + return e === t ? 0 !== e || 1 / e === 1 / t : l(e) && l(t) + }, + Type: function (e) { + return null === e + ? 'Null' + : 'undefined' === typeof e + ? 'Undefined' + : 'function' === typeof e || 'object' === typeof e + ? 'Object' + : 'number' === typeof e + ? 'Number' + : 'boolean' === typeof e + ? 'Boolean' + : 'string' === typeof e + ? 'String' + : void 0 + }, + IsPropertyDescriptor: function (e) { + if ('Object' !== this.Type(e)) return !1 + var t = { + '[[Configurable]]': !0, + '[[Enumerable]]': !0, + '[[Get]]': !0, + '[[Set]]': !0, + '[[Value]]': !0, + '[[Writable]]': !0, + } + for (var n in e) if (f(e, n) && !t[n]) return !1 + var r = f(e, '[[Value]]'), + i = f(e, '[[Get]]') || f(e, '[[Set]]') + if (r && i) + throw new o( + 'Property Descriptors may not be both accessor and data descriptors', + ) + return !0 + }, + IsAccessorDescriptor: function (e) { + return ( + 'undefined' !== typeof e && + (s(this, 'Property Descriptor', 'Desc', e), + !(!f(e, '[[Get]]') && !f(e, '[[Set]]'))) + ) + }, + IsDataDescriptor: function (e) { + return ( + 'undefined' !== typeof e && + (s(this, 'Property Descriptor', 'Desc', e), + !(!f(e, '[[Value]]') && !f(e, '[[Writable]]'))) + ) + }, + IsGenericDescriptor: function (e) { + return ( + 'undefined' !== typeof e && + (s(this, 'Property Descriptor', 'Desc', e), + !this.IsAccessorDescriptor(e) && !this.IsDataDescriptor(e)) + ) + }, + FromPropertyDescriptor: function (e) { + if ('undefined' === typeof e) return e + if ((s(this, 'Property Descriptor', 'Desc', e), this.IsDataDescriptor(e))) + return { + value: e['[[Value]]'], + writable: !!e['[[Writable]]'], + enumerable: !!e['[[Enumerable]]'], + configurable: !!e['[[Configurable]]'], + } + if (this.IsAccessorDescriptor(e)) + return { + get: e['[[Get]]'], + set: e['[[Set]]'], + enumerable: !!e['[[Enumerable]]'], + configurable: !!e['[[Configurable]]'], + } + throw new o( + 'FromPropertyDescriptor must be called with a fully populated Property Descriptor', + ) + }, + ToPropertyDescriptor: function (e) { + if ('Object' !== this.Type(e)) + throw new o('ToPropertyDescriptor requires an object') + var t = {} + if ( + (f(e, 'enumerable') && (t['[[Enumerable]]'] = this.ToBoolean(e.enumerable)), + f(e, 'configurable') && + (t['[[Configurable]]'] = this.ToBoolean(e.configurable)), + f(e, 'value') && (t['[[Value]]'] = e.value), + f(e, 'writable') && (t['[[Writable]]'] = this.ToBoolean(e.writable)), + f(e, 'get')) + ) { + var n = e.get + if ('undefined' !== typeof n && !this.IsCallable(n)) + throw new TypeError('getter must be a function') + t['[[Get]]'] = n + } + if (f(e, 'set')) { + var r = e.set + if ('undefined' !== typeof r && !this.IsCallable(r)) + throw new o('setter must be a function') + t['[[Set]]'] = r + } + if ( + (f(t, '[[Get]]') || f(t, '[[Set]]')) && + (f(t, '[[Value]]') || f(t, '[[Writable]]')) + ) + throw new o( + 'Invalid property descriptor. Cannot both specify accessors and a value or writable attribute', + ) + return t + }, + } + t.exports = m + }, + { + './GetIntrinsic': 14, + './helpers/assertRecord': 16, + './helpers/isFinite': 17, + './helpers/isNaN': 18, + './helpers/mod': 19, + './helpers/sign': 20, + 'es-to-primitive/es5': 21, + has: 28, + 'is-callable': 32, + }, + ], + 16: [ + function (e, t, n) { + 'use strict' + var r = e('../GetIntrinsic'), + i = r('%TypeError%'), + o = r('%SyntaxError%'), + a = e('has'), + s = { + 'Property Descriptor': function (e, t) { + if ('Object' !== e.Type(t)) return !1 + var n = { + '[[Configurable]]': !0, + '[[Enumerable]]': !0, + '[[Get]]': !0, + '[[Set]]': !0, + '[[Value]]': !0, + '[[Writable]]': !0, + } + for (var r in t) if (a(t, r) && !n[r]) return !1 + var o = a(t, '[[Value]]'), + s = a(t, '[[Get]]') || a(t, '[[Set]]') + if (o && s) + throw new i( + 'Property Descriptors may not be both accessor and data descriptors', + ) + return !0 + }, + } + t.exports = function (e, t, n, r) { + var a = s[t] + if ('function' !== typeof a) throw new o('unknown record type: ' + t) + if (!a(e, r)) throw new i(n + ' must be a ' + t) + console.log(a(e, r), r) + } + }, + { '../GetIntrinsic': 14, has: 28 }, + ], + 17: [ + function (e, t, n) { + var r = + Number.isNaN || + function (e) { + return e !== e + } + t.exports = + Number.isFinite || + function (e) { + return 'number' === typeof e && !r(e) && e !== 1 / 0 && e !== -1 / 0 + } + }, + {}, + ], + 18: [ + function (e, t, n) { + t.exports = + Number.isNaN || + function (e) { + return e !== e + } + }, + {}, + ], + 19: [ + function (e, t, n) { + t.exports = function (e, t) { + var n = e % t + return Math.floor(n >= 0 ? n : n + t) + } + }, + {}, + ], + 20: [ + function (e, t, n) { + t.exports = function (e) { + return e >= 0 ? 1 : -1 + } + }, + {}, + ], + 21: [ + function (e, t, n) { + 'use strict' + var r = Object.prototype.toString, + i = e('./helpers/isPrimitive'), + o = e('is-callable'), + a = { + '[[DefaultValue]]': function (e) { + var t + if ( + (t = + arguments.length > 1 + ? arguments[1] + : '[object Date]' === r.call(e) + ? String + : Number) === String || + t === Number + ) { + var n, + a, + s = t === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'] + for (a = 0; a < s.length; ++a) + if (o(e[s[a]]) && ((n = e[s[a]]()), i(n))) return n + throw new TypeError('No default value') + } + throw new TypeError('invalid [[DefaultValue]] hint supplied') + }, + } + t.exports = function (e) { + return i(e) + ? e + : arguments.length > 1 + ? a['[[DefaultValue]]'](e, arguments[1]) + : a['[[DefaultValue]]'](e) + } + }, + { './helpers/isPrimitive': 22, 'is-callable': 32 }, + ], + 22: [ + function (e, t, n) { + t.exports = function (e) { + return null === e || ('function' !== typeof e && 'object' !== typeof e) + } + }, + {}, + ], + 23: [ + function (e, t, n) { + var r = e('dtype') + function i(e, t, n) { + if (!e) throw new TypeError('must specify data as first parameter') + if ( + ((n = 0 | +(n || 0)), Array.isArray(e) && e[0] && 'number' === typeof e[0][0]) + ) { + var i, + o, + a, + s, + l = e[0].length, + c = e.length * l + ;(t && 'string' !== typeof t) || (t = new (r(t || 'float32'))(c + n)) + var u = t.length - n + if (c !== u) + throw new Error( + 'source length ' + + c + + ' (' + + l + + 'x' + + e.length + + ') does not match destination length ' + + u, + ) + for (i = 0, a = n; i < e.length; i++) + for (o = 0; o < l; o++) t[a++] = null === e[i][o] ? NaN : e[i][o] + } else if (t && 'string' !== typeof t) t.set(e, n) + else { + var h = r(t || 'float32') + if (Array.isArray(e) || 'array' === t) + for (i = 0, a = n, s = (t = new h(e.length + n)).length; a < s; a++, i++) + t[a] = null === e[i] ? NaN : e[i] + else 0 === n ? (t = new h(e)) : (t = new h(e.length + n)).set(e, n) + } + return t + } + t.exports = i + }, + { dtype: 13 }, + ], + 24: [ + function (e, t, n) { + 'use strict' + var r = e('is-callable'), + i = Object.prototype.toString, + o = Object.prototype.hasOwnProperty, + a = function (e, t, n) { + for (var r = 0, i = e.length; r < i; r++) + o.call(e, r) && (null == n ? t(e[r], r, e) : t.call(n, e[r], r, e)) + }, + s = function (e, t, n) { + for (var r = 0, i = e.length; r < i; r++) + null == n ? t(e.charAt(r), r, e) : t.call(n, e.charAt(r), r, e) + }, + l = function (e, t, n) { + for (var r in e) + o.call(e, r) && (null == n ? t(e[r], r, e) : t.call(n, e[r], r, e)) + }, + c = function (e, t, n) { + if (!r(t)) throw new TypeError('iterator must be a function') + var o + arguments.length >= 3 && (o = n), + '[object Array]' === i.call(e) + ? a(e, t, o) + : 'string' === typeof e + ? s(e, t, o) + : l(e, t, o) + } + t.exports = c + }, + { 'is-callable': 32 }, + ], + 25: [ + function (e, t, n) { + 'use strict' + var r = 'Function.prototype.bind called on incompatible ', + i = Array.prototype.slice, + o = Object.prototype.toString, + a = '[object Function]' + t.exports = function (e) { + var t = this + if ('function' !== typeof t || o.call(t) !== a) throw new TypeError(r + t) + for ( + var n, + s = i.call(arguments, 1), + l = function () { + if (this instanceof n) { + var r = t.apply(this, s.concat(i.call(arguments))) + return Object(r) === r ? r : this + } + return t.apply(e, s.concat(i.call(arguments))) + }, + c = Math.max(0, t.length - s.length), + u = [], + h = 0; + h < c; + h++ + ) + u.push('$' + h) + if ( + ((n = Function( + 'binder', + 'return function (' + + u.join(',') + + '){ return binder.apply(this,arguments); }', + )(l)), + t.prototype) + ) { + var d = function () {} + ;(d.prototype = t.prototype), (n.prototype = new d()), (d.prototype = null) + } + return n + } + }, + {}, + ], + 26: [ + function (e, t, n) { + 'use strict' + var r = e('./implementation') + t.exports = Function.prototype.bind || r + }, + { './implementation': 25 }, + ], + 27: [ + function (e, t, n) { + ;(function (e) { + var n + ;(n = + 'undefined' !== typeof window + ? window + : 'undefined' !== typeof e + ? e + : 'undefined' !== typeof self + ? self + : {}), + (t.exports = n) + }.call( + this, + 'undefined' !== typeof r.g + ? r.g + : 'undefined' !== typeof self + ? self + : 'undefined' !== typeof window + ? window + : {}, + )) + }, + {}, + ], + 28: [ + function (e, t, n) { + 'use strict' + var r = e('function-bind') + t.exports = r.call(Function.call, Object.prototype.hasOwnProperty) + }, + { 'function-bind': 26 }, + ], + 29: [ + function (e, t, n) { + ;(n.read = function (e, t, n, r, i) { + var o, + a, + s = 8 * i - r - 1, + l = (1 << s) - 1, + c = l >> 1, + u = -7, + h = n ? i - 1 : 0, + d = n ? -1 : 1, + p = e[t + h] + for ( + h += d, o = p & ((1 << -u) - 1), p >>= -u, u += s; + u > 0; + o = 256 * o + e[t + h], h += d, u -= 8 + ); + for ( + a = o & ((1 << -u) - 1), o >>= -u, u += r; + u > 0; + a = 256 * a + e[t + h], h += d, u -= 8 + ); + if (0 === o) o = 1 - c + else { + if (o === l) return a ? NaN : (1 / 0) * (p ? -1 : 1) + ;(a += Math.pow(2, r)), (o -= c) + } + return (p ? -1 : 1) * a * Math.pow(2, o - r) + }), + (n.write = function (e, t, n, r, i, o) { + var a, + s, + l, + c = 8 * o - i - 1, + u = (1 << c) - 1, + h = u >> 1, + d = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + p = r ? 0 : o - 1, + f = r ? 1 : -1, + m = t < 0 || (0 === t && 1 / t < 0) ? 1 : 0 + for ( + t = Math.abs(t), + isNaN(t) || t === 1 / 0 + ? ((s = isNaN(t) ? 1 : 0), (a = u)) + : ((a = Math.floor(Math.log(t) / Math.LN2)), + t * (l = Math.pow(2, -a)) < 1 && (a--, (l *= 2)), + (t += a + h >= 1 ? d / l : d * Math.pow(2, 1 - h)) * l >= 2 && + (a++, (l /= 2)), + a + h >= u + ? ((s = 0), (a = u)) + : a + h >= 1 + ? ((s = (t * l - 1) * Math.pow(2, i)), (a += h)) + : ((s = t * Math.pow(2, h - 1) * Math.pow(2, i)), (a = 0))); + i >= 8; + e[n + p] = 255 & s, p += f, s /= 256, i -= 8 + ); + for ( + a = (a << i) | s, c += i; + c > 0; + e[n + p] = 255 & a, p += f, a /= 256, c -= 8 + ); + e[n + p - f] |= 128 * m + }) + }, + {}, + ], + 30: [ + function (e, t, n) { + 'function' === typeof Object.create + ? (t.exports = function (e, t) { + t && + ((e.super_ = t), + (e.prototype = Object.create(t.prototype, { + constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 }, + }))) + }) + : (t.exports = function (e, t) { + if (t) { + e.super_ = t + var n = function () {} + ;(n.prototype = t.prototype), + (e.prototype = new n()), + (e.prototype.constructor = e) + } + }) + }, + {}, + ], + 31: [ + function (e, t, n) { + function r(e) { + return ( + !!e.constructor && + 'function' === typeof e.constructor.isBuffer && + e.constructor.isBuffer(e) + ) + } + function i(e) { + return ( + 'function' === typeof e.readFloatLE && + 'function' === typeof e.slice && + r(e.slice(0, 0)) + ) + } + t.exports = function (e) { + return null != e && (r(e) || i(e) || !!e._isBuffer) + } + }, + {}, + ], + 32: [ + function (t, n, r) { + 'use strict' + var i = Function.prototype.toString, + o = /^\s*class\b/, + a = function (t) { + try { + var n = i.call(t) + return o.test(n) + } catch (e) { + return !1 + } + }, + s = function (t) { + try { + return !a(t) && (i.call(t), !0) + } catch (e) { + return !1 + } + }, + l = Object.prototype.toString, + c = '[object Function]', + u = '[object GeneratorFunction]', + h = 'function' === typeof Symbol && 'symbol' === typeof Symbol.toStringTag + n.exports = function (e) { + if (!e) return !1 + if ('function' !== typeof e && 'object' !== typeof e) return !1 + if ('function' === typeof e && !e.prototype) return !0 + if (h) return s(e) + if (a(e)) return !1 + var t = l.call(e) + return t === c || t === u + } + }, + {}, + ], + 33: [ + function (e, t, n) { + t.exports = i + var r = Object.prototype.toString + function i(e) { + var t = r.call(e) + return ( + '[object Function]' === t || + ('function' === typeof e && '[object RegExp]' !== t) || + ('undefined' !== typeof window && + (e === window.setTimeout || + e === window.alert || + e === window.confirm || + e === window.prompt)) + ) + } + }, + {}, + ], + 34: [ + function (e, t, n) { + 'use strict' + t.exports = function (e) { + var t = typeof e + return null !== e && ('object' === t || 'function' === t) + } + }, + {}, + ], + 35: [ + function (e, t, n) { + var r = {}.toString + t.exports = + Array.isArray || + function (e) { + return '[object Array]' == r.call(e) + } + }, + {}, + ], + 36: [ + function (e, t, n) { + var r = e('word-wrapper'), + i = e('xtend'), + o = e('as-number'), + a = ['x', 'e', 'a', 'o', 'n', 's', 'r', 'c', 'u', 'm', 'v', 'w', 'z'], + s = ['m', 'w'], + l = ['H', 'I', 'N', 'E', 'F', 'K', 'L', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], + c = '\t'.charCodeAt(0), + u = ' '.charCodeAt(0), + h = 0, + d = 1, + p = 2 + function f(e) { + ;(this.glyphs = []), + (this._measure = this.computeMetrics.bind(this)), + this.update(e) + } + function m(e) { + Object.defineProperty(f.prototype, e, { get: v(e), configurable: !0 }) + } + function v(e) { + return new Function( + ['return function ' + e + '() {', ' return this._' + e, '}'].join('\n'), + )() + } + function g(e, t) { + if (!e.chars || 0 === e.chars.length) return null + var n = E(e.chars, t) + return n >= 0 ? e.chars[n] : null + } + function y(e) { + for (var t = 0; t < a.length; t++) { + var n = a[t].charCodeAt(0), + r = E(e.chars, n) + if (r >= 0) return e.chars[r].height + } + return 0 + } + function b(e) { + for (var t = 0; t < s.length; t++) { + var n = s[t].charCodeAt(0), + r = E(e.chars, n) + if (r >= 0) return e.chars[r] + } + return 0 + } + function A(e) { + for (var t = 0; t < l.length; t++) { + var n = l[t].charCodeAt(0), + r = E(e.chars, n) + if (r >= 0) return e.chars[r].height + } + return 0 + } + function w(e, t, n) { + if (!e.kernings || 0 === e.kernings.length) return 0 + for (var r = e.kernings, i = 0; i < r.length; i++) { + var o = r[i] + if (o.first === t && o.second === n) return o.amount + } + return 0 + } + function x(e) { + return 'center' === e ? d : 'right' === e ? p : h + } + function E(e, t, n) { + for (var r = (n = n || 0); r < e.length; r++) if (e[r].id === t) return r + return -1 + } + ;(t.exports = function (e) { + return new f(e) + }), + (f.prototype.update = function (e) { + if ( + ((e = i({ measure: this._measure }, e)), + (this._opt = e), + (this._opt.tabSize = o(this._opt.tabSize, 4)), + !e.font) + ) + throw new Error('must provide a valid bitmap font') + var t = this.glyphs, + n = e.text || '', + a = e.font + this._setupSpaceGlyphs(a) + var s = r.lines(n, e), + l = e.width || 0 + t.length = 0 + var c = s.reduce(function (e, t) { + return Math.max(e, t.width, l) + }, 0), + u = 0, + h = 0, + f = o(e.lineHeight, a.common.lineHeight), + m = a.common.base, + v = f - m, + g = e.letterSpacing || 0, + b = f * s.length - v, + E = x(this._opt.align) + ;(h -= b), + (this._width = c), + (this._height = b), + (this._descender = f - m), + (this._baseline = m), + (this._xHeight = y(a)), + (this._capHeight = A(a)), + (this._lineHeight = f), + (this._ascender = f - v - this._xHeight) + var M = this + s.forEach(function (e, r) { + for (var i, o = e.start, s = e.end, l = e.width, m = o; m < s; m++) { + var v = n.charCodeAt(m), + y = M.getGlyph(a, v) + if (y) { + i && (u += w(a, i.id, y.id)) + var b = u + E === d ? (b += (c - l) / 2) : E === p && (b += c - l), + t.push({ position: [b, h], data: y, index: m, line: r }), + (u += y.xadvance + g), + (i = y) + } + } + ;(h += f), (u = 0) + }), + (this._linesTotal = s.length) + }), + (f.prototype._setupSpaceGlyphs = function (e) { + if ( + ((this._fallbackSpaceGlyph = null), + (this._fallbackTabGlyph = null), + e.chars && 0 !== e.chars.length) + ) { + var t = g(e, u) || b(e) || e.chars[0], + n = this._opt.tabSize * t.xadvance + ;(this._fallbackSpaceGlyph = t), + (this._fallbackTabGlyph = i(t, { + x: 0, + y: 0, + xadvance: n, + id: c, + xoffset: 0, + yoffset: 0, + width: 0, + height: 0, + })) + } + }), + (f.prototype.getGlyph = function (e, t) { + var n = g(e, t) + return ( + n || + (t === c ? this._fallbackTabGlyph : t === u ? this._fallbackSpaceGlyph : null) + ) + }), + (f.prototype.computeMetrics = function (e, t, n, r) { + var i, + o = this._opt.letterSpacing || 0, + a = this._opt.font, + s = 0, + l = 0, + c = 0 + if (!a.chars || 0 === a.chars.length) return { start: t, end: t, width: 0 } + n = Math.min(e.length, n) + for (var u = t; u < n; u++) { + var h, + d = e.charCodeAt(u) + if ((h = this.getGlyph(a, d))) { + h.xoffset + var p = (s += i ? w(a, i.id, h.id) : 0) + h.xadvance + o, + f = s + h.width + if (f >= r || p >= r) break + ;(s = p), (l = f), (i = h) + } + c++ + } + return i && (l += i.xoffset), { start: t, end: t + c, width: l } + }), + [ + 'width', + 'height', + 'descender', + 'ascender', + 'xHeight', + 'baseline', + 'capHeight', + 'lineHeight', + ].forEach(m) + }, + { 'as-number': 2, 'word-wrapper': 69, xtend: 72 }, + ], + 37: [ + function (t, n, r) { + ;(function (r) { + var i = t('xhr'), + o = function () {}, + a = t('parse-bmfont-ascii'), + s = t('parse-bmfont-xml'), + l = t('parse-bmfont-binary'), + c = t('./lib/is-binary'), + u = t('xtend'), + h = self.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest() + function d(e) { + return '[object ArrayBuffer]' === Object.prototype.toString.call(e) + } + function p(e) { + if (h) return u(e, { responseType: 'arraybuffer' }) + if ('undefined' === typeof self.XMLHttpRequest) + throw new Error('your browser does not support XHR loading') + var t = new self.XMLHttpRequest() + return ( + t.overrideMimeType('text/plain; charset=x-user-defined'), u({ xhr: t }, e) + ) + } + n.exports = function (t, n) { + ;(n = 'function' === typeof n ? n : o), + 'string' === typeof t ? (t = { uri: t }) : t || (t = {}), + t.binary && (t = p(t)), + i(t, function (i, u, h) { + if (i) return n(i) + if (!/^2/.test(u.statusCode)) + return n(new Error('http status code: ' + u.statusCode)) + if (!h) return n(new Error('no body result')) + var p, + f = !1 + if (d(h)) { + var m = new Uint8Array(h) + h = new r(m, 'binary') + } + c(h) && ((f = !0), 'string' === typeof h && (h = new r(h, 'binary'))), + f || (r.isBuffer(h) && (h = h.toString(t.encoding)), (h = h.trim())) + try { + var v = u.headers['content-type'] + p = f + ? l(h) + : /json/.test(v) || '{' === h.charAt(0) + ? JSON.parse(h) + : /xml/.test(v) || '<' === h.charAt(0) + ? s(h) + : a(h) + } catch (e) { + n(new Error('error parsing font ' + e.message)), (n = o) + } + n(null, p) + }) + } + }.call(this, t('buffer').Buffer)) + }, + { + './lib/is-binary': 38, + buffer: 6, + 'parse-bmfont-ascii': 43, + 'parse-bmfont-binary': 44, + 'parse-bmfont-xml': 45, + xhr: 70, + xtend: 72, + }, + ], + 38: [ + function (e, t, n) { + ;(function (n) { + var r = e('buffer-equal'), + i = new n([66, 77, 70, 3]) + t.exports = function (e) { + return 'string' === typeof e + ? 'BMF' === e.substring(0, 3) + : e.length > 4 && r(e.slice(0, 4), i) + } + }.call(this, e('buffer').Buffer)) + }, + { buffer: 6, 'buffer-equal': 5 }, + ], + 39: [ + function (e, t, n) { + 'use strict' + var r = Object.getOwnPropertySymbols, + i = Object.prototype.hasOwnProperty, + o = Object.prototype.propertyIsEnumerable + function a(e) { + if (null === e || void 0 === e) + throw new TypeError('Object.assign cannot be called with null or undefined') + return Object(e) + } + function s() { + try { + if (!Object.assign) return !1 + var e = new String('abc') + if (((e[5] = 'de'), '5' === Object.getOwnPropertyNames(e)[0])) return !1 + for (var t = {}, n = 0; n < 10; n++) t['_' + String.fromCharCode(n)] = n + if ( + '0123456789' !== + Object.getOwnPropertyNames(t) + .map(function (e) { + return t[e] + }) + .join('') + ) + return !1 + var r = {} + return ( + 'abcdefghijklmnopqrst'.split('').forEach(function (e) { + r[e] = e + }), + 'abcdefghijklmnopqrst' === Object.keys(Object.assign({}, r)).join('') + ) + } catch (i) { + return !1 + } + } + t.exports = s() + ? Object.assign + : function (e, t) { + for (var n, s, l = a(e), c = 1; c < arguments.length; c++) { + for (var u in (n = Object(arguments[c]))) i.call(n, u) && (l[u] = n[u]) + if (r) { + s = r(n) + for (var h = 0; h < s.length; h++) o.call(n, s[h]) && (l[s[h]] = n[s[h]]) + } + } + return l + } + }, + {}, + ], + 40: [ + function (t, n, r) { + 'use strict' + var i + if (!Object.keys) { + var o = Object.prototype.hasOwnProperty, + a = Object.prototype.toString, + s = t('./isArguments'), + l = Object.prototype.propertyIsEnumerable, + c = !l.call({ toString: null }, 'toString'), + u = l.call(function () {}, 'prototype'), + h = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor', + ], + d = function (e) { + var t = e.constructor + return t && t.prototype === e + }, + p = { + $applicationCache: !0, + $console: !0, + $external: !0, + $frame: !0, + $frameElement: !0, + $frames: !0, + $innerHeight: !0, + $innerWidth: !0, + $onmozfullscreenchange: !0, + $onmozfullscreenerror: !0, + $outerHeight: !0, + $outerWidth: !0, + $pageXOffset: !0, + $pageYOffset: !0, + $parent: !0, + $scrollLeft: !0, + $scrollTop: !0, + $scrollX: !0, + $scrollY: !0, + $self: !0, + $webkitIndexedDB: !0, + $webkitStorageInfo: !0, + $window: !0, + }, + f = (function () { + if ('undefined' === typeof window) return !1 + for (var t in window) + try { + if ( + !p['$' + t] && + o.call(window, t) && + null !== window[t] && + 'object' === typeof window[t] + ) + try { + d(window[t]) + } catch (e) { + return !0 + } + } catch (e) { + return !0 + } + return !1 + })(), + m = function (t) { + if ('undefined' === typeof window || !f) return d(t) + try { + return d(t) + } catch (e) { + return !1 + } + } + i = function (e) { + var t = null !== e && 'object' === typeof e, + n = '[object Function]' === a.call(e), + r = s(e), + i = t && '[object String]' === a.call(e), + l = [] + if (!t && !n && !r) throw new TypeError('Object.keys called on a non-object') + var d = u && n + if (i && e.length > 0 && !o.call(e, 0)) + for (var p = 0; p < e.length; ++p) l.push(String(p)) + if (r && e.length > 0) for (var f = 0; f < e.length; ++f) l.push(String(f)) + else + for (var v in e) + (d && 'prototype' === v) || !o.call(e, v) || l.push(String(v)) + if (c) + for (var g = m(e), y = 0; y < h.length; ++y) + (g && 'constructor' === h[y]) || !o.call(e, h[y]) || l.push(h[y]) + return l + } + } + n.exports = i + }, + { './isArguments': 42 }, + ], + 41: [ + function (e, t, n) { + 'use strict' + var r = Array.prototype.slice, + i = e('./isArguments'), + o = Object.keys, + a = o + ? function (e) { + return o(e) + } + : e('./implementation'), + s = Object.keys + ;(a.shim = function () { + return ( + Object.keys + ? (function () { + var e = Object.keys(arguments) + return e && e.length === arguments.length + })(1, 2) || + (Object.keys = function (e) { + return i(e) ? s(r.call(e)) : s(e) + }) + : (Object.keys = a), + Object.keys || a + ) + }), + (t.exports = a) + }, + { './implementation': 40, './isArguments': 42 }, + ], + 42: [ + function (e, t, n) { + 'use strict' + var r = Object.prototype.toString + t.exports = function (e) { + var t = r.call(e), + n = '[object Arguments]' === t + return ( + n || + (n = + '[object Array]' !== t && + null !== e && + 'object' === typeof e && + 'number' === typeof e.length && + e.length >= 0 && + '[object Function]' === r.call(e.callee)), + n + ) + } + }, + {}, + ], + 43: [ + function (e, t, n) { + function r(e, t) { + if (!(e = e.replace(/\t+/g, ' ').trim())) return null + var n = e.indexOf(' ') + if (-1 === n) throw new Error('no named row at line ' + t) + var r = e.substring(0, n) + e = (e = (e = (e = e.substring(n + 1)).replace( + /letter=[\'\"]\S+[\'\"]/gi, + '', + )).split('=')).map(function (e) { + return e.trim().match(/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g) + }) + for (var o = [], a = 0; a < e.length; a++) { + var s = e[a] + 0 === a + ? o.push({ key: s[0], data: '' }) + : a === e.length - 1 + ? (o[o.length - 1].data = i(s[0])) + : ((o[o.length - 1].data = i(s[0])), o.push({ key: s[1], data: '' })) + } + var l = { key: r, data: {} } + return ( + o.forEach(function (e) { + l.data[e.key] = e.data + }), + l + ) + } + function i(e) { + return e && 0 !== e.length + ? 0 === e.indexOf('"') || 0 === e.indexOf("'") + ? e.substring(1, e.length - 1) + : -1 !== e.indexOf(',') + ? o(e) + : parseInt(e, 10) + : '' + } + function o(e) { + return e.split(',').map(function (e) { + return parseInt(e, 10) + }) + } + t.exports = function (e) { + if (!e) throw new Error('no data provided') + var t = { pages: [], chars: [], kernings: [] }, + n = (e = e.toString().trim()).split(/\r\n?|\n/g) + if (0 === n.length) throw new Error('no data in BMFont file') + for (var i = 0; i < n.length; i++) { + var o = r(n[i], i) + if (o) + if ('page' === o.key) { + if ('number' !== typeof o.data.id) + throw new Error('malformed file at line ' + i + ' -- needs page id=N') + if ('string' !== typeof o.data.file) + throw new Error( + 'malformed file at line ' + i + ' -- needs page file="path"', + ) + t.pages[o.data.id] = o.data.file + } else + 'chars' === o.key || + 'kernings' === o.key || + ('char' === o.key + ? t.chars.push(o.data) + : 'kerning' === o.key + ? t.kernings.push(o.data) + : (t[o.key] = o.data)) + } + return t + } + }, + {}, + ], + 44: [ + function (e, t, n) { + var r = [66, 77, 70] + function i(e, t, n) { + if (n > t.length - 1) return 0 + var r = t.readUInt8(n++), + i = t.readInt32LE(n) + switch (((n += 4), r)) { + case 1: + e.info = o(t, n) + break + case 2: + e.common = a(t, n) + break + case 3: + e.pages = s(t, n, i) + break + case 4: + e.chars = l(t, n, i) + break + case 5: + e.kernings = c(t, n, i) + } + return 5 + i + } + function o(e, t) { + var n = {} + n.size = e.readInt16LE(t) + var r = e.readUInt8(t + 2) + return ( + (n.smooth = (r >> 7) & 1), + (n.unicode = (r >> 6) & 1), + (n.italic = (r >> 5) & 1), + (n.bold = (r >> 4) & 1), + (r >> 3) & 1 && (n.fixedHeight = 1), + (n.charset = e.readUInt8(t + 3) || ''), + (n.stretchH = e.readUInt16LE(t + 4)), + (n.aa = e.readUInt8(t + 6)), + (n.padding = [ + e.readInt8(t + 7), + e.readInt8(t + 8), + e.readInt8(t + 9), + e.readInt8(t + 10), + ]), + (n.spacing = [e.readInt8(t + 11), e.readInt8(t + 12)]), + (n.outline = e.readUInt8(t + 13)), + (n.face = h(e, t + 14)), + n + ) + } + function a(e, t) { + var n = {} + return ( + (n.lineHeight = e.readUInt16LE(t)), + (n.base = e.readUInt16LE(t + 2)), + (n.scaleW = e.readUInt16LE(t + 4)), + (n.scaleH = e.readUInt16LE(t + 6)), + (n.pages = e.readUInt16LE(t + 8)), + e.readUInt8(t + 10), + (n.packed = 0), + (n.alphaChnl = e.readUInt8(t + 11)), + (n.redChnl = e.readUInt8(t + 12)), + (n.greenChnl = e.readUInt8(t + 13)), + (n.blueChnl = e.readUInt8(t + 14)), + n + ) + } + function s(e, t, n) { + for (var r = [], i = u(e, t), o = i.length + 1, a = n / o, s = 0; s < a; s++) + (r[s] = e.slice(t, t + i.length).toString('utf8')), (t += o) + return r + } + function l(e, t, n) { + for (var r = [], i = n / 20, o = 0; o < i; o++) { + var a = {}, + s = 20 * o + ;(a.id = e.readUInt32LE(t + 0 + s)), + (a.x = e.readUInt16LE(t + 4 + s)), + (a.y = e.readUInt16LE(t + 6 + s)), + (a.width = e.readUInt16LE(t + 8 + s)), + (a.height = e.readUInt16LE(t + 10 + s)), + (a.xoffset = e.readInt16LE(t + 12 + s)), + (a.yoffset = e.readInt16LE(t + 14 + s)), + (a.xadvance = e.readInt16LE(t + 16 + s)), + (a.page = e.readUInt8(t + 18 + s)), + (a.chnl = e.readUInt8(t + 19 + s)), + (r[o] = a) + } + return r + } + function c(e, t, n) { + for (var r = [], i = n / 10, o = 0; o < i; o++) { + var a = {}, + s = 10 * o + ;(a.first = e.readUInt32LE(t + 0 + s)), + (a.second = e.readUInt32LE(t + 4 + s)), + (a.amount = e.readInt16LE(t + 8 + s)), + (r[o] = a) + } + return r + } + function u(e, t) { + for (var n = t; n < e.length && 0 !== e[n]; n++); + return e.slice(t, n) + } + function h(e, t) { + return u(e, t).toString('utf8') + } + t.exports = function (e) { + if (e.length < 6) throw new Error('invalid buffer length for BMFont') + if ( + !r.every(function (t, n) { + return e.readUInt8(n) === t + }) + ) + throw new Error('BMFont missing BMF byte header') + var t = 3 + if (e.readUInt8(t++) > 3) + throw new Error('Only supports BMFont Binary v3 (BMFont App v1.10)') + for (var n = { kernings: [], chars: [] }, o = 0; o < 5; o++) t += i(n, e, t) + return n + } + }, + {}, + ], + 45: [ + function (e, t, n) { + var r = e('./parse-attribs'), + i = e('xml-parse-from-string'), + o = { + scaleh: 'scaleH', + scalew: 'scaleW', + stretchh: 'stretchH', + lineheight: 'lineHeight', + alphachnl: 'alphaChnl', + redchnl: 'redChnl', + greenchnl: 'greenChnl', + bluechnl: 'blueChnl', + } + function a(e) { + return s(e).reduce(function (e, t) { + return (e[l(t.nodeName)] = t.nodeValue), e + }, {}) + } + function s(e) { + for (var t = [], n = 0; n < e.attributes.length; n++) t.push(e.attributes[n]) + return t + } + function l(e) { + return o[e.toLowerCase()] || e + } + t.exports = function (e) { + e = e.toString() + var t = i(e), + n = { pages: [], chars: [], kernings: [] } + ;['info', 'common'].forEach(function (e) { + var i = t.getElementsByTagName(e)[0] + i && (n[e] = r(a(i))) + }) + var o = t.getElementsByTagName('pages')[0] + if (!o) throw new Error('malformed file -- no <pages> element') + for (var s = o.getElementsByTagName('page'), l = 0; l < s.length; l++) { + var c = s[l], + u = parseInt(c.getAttribute('id'), 10), + h = c.getAttribute('file') + if (isNaN(u)) throw new Error('malformed file -- page "id" attribute is NaN') + if (!h) throw new Error('malformed file -- needs page "file" attribute') + n.pages[parseInt(u, 10)] = h + } + return ( + ['chars', 'kernings'].forEach(function (e) { + var i = t.getElementsByTagName(e)[0] + if (i) + for ( + var o = e.substring(0, e.length - 1), + s = i.getElementsByTagName(o), + l = 0; + l < s.length; + l++ + ) { + var c = s[l] + n[e].push(r(a(c))) + } + }), + n + ) + } + }, + { './parse-attribs': 46, 'xml-parse-from-string': 71 }, + ], + 46: [ + function (e, t, n) { + var r = 'chasrset' + function i(e) { + return e.split(',').map(function (e) { + return parseInt(e, 10) + }) + } + t.exports = function (e) { + for (var t in (r in e && ((e.charset = e[r]), delete e[r]), e)) + 'face' !== t && + 'charset' !== t && + (e[t] = 'padding' === t || 'spacing' === t ? i(e[t]) : parseInt(e[t], 10)) + return e + } + }, + {}, + ], + 47: [ + function (e, t, n) { + var r = e('string.prototype.trim'), + i = e('for-each'), + o = function (e) { + return '[object Array]' === Object.prototype.toString.call(e) + } + t.exports = function (e) { + if (!e) return {} + var t = {} + return ( + i(r(e).split('\n'), function (e) { + var n = e.indexOf(':'), + i = r(e.slice(0, n)).toLowerCase(), + a = r(e.slice(n + 1)) + 'undefined' === typeof t[i] + ? (t[i] = a) + : o(t[i]) + ? t[i].push(a) + : (t[i] = [t[i], a]) + }), + t + ) + } + }, + { 'for-each': 24, 'string.prototype.trim': 53 }, + ], + 48: [ + function (e, t, n) { + ;(function (e) { + var n = e.performance || {}, + r = (function () { + for (var e = ['now', 'webkitNow', 'msNow', 'mozNow', 'oNow']; e.length; ) { + var t = e.shift() + if (t in n) return n[t].bind(n) + } + var r = + Date.now || + function () { + return new Date().getTime() + }, + i = (n.timing || {}).navigationStart || r() + return function () { + return r() - i + } + })() + ;(r.performanceNow = n.now), + (r.noConflict = function () { + n.now = r.performanceNow + }), + (r.conflict = function () { + n.now = r + }), + r.conflict(), + (t.exports = r) + }.call( + this, + 'undefined' !== typeof r.g + ? r.g + : 'undefined' !== typeof self + ? self + : 'undefined' !== typeof window + ? window + : {}, + )) + }, + {}, + ], + 49: [ + function (t, n, r) { + var i, + o, + a = (n.exports = {}) + function s() { + throw new Error('setTimeout has not been defined') + } + function l() { + throw new Error('clearTimeout has not been defined') + } + function c(t) { + if (i === setTimeout) return setTimeout(t, 0) + if ((i === s || !i) && setTimeout) return (i = setTimeout), setTimeout(t, 0) + try { + return i(t, 0) + } catch (e) { + try { + return i.call(null, t, 0) + } catch (e) { + return i.call(this, t, 0) + } + } + } + function u(t) { + if (o === clearTimeout) return clearTimeout(t) + if ((o === l || !o) && clearTimeout) return (o = clearTimeout), clearTimeout(t) + try { + return o(t) + } catch (e) { + try { + return o.call(null, t) + } catch (e) { + return o.call(this, t) + } + } + } + !(function () { + try { + i = 'function' === typeof setTimeout ? setTimeout : s + } catch (e) { + i = s + } + try { + o = 'function' === typeof clearTimeout ? clearTimeout : l + } catch (e) { + o = l + } + })() + var h, + d = [], + p = !1, + f = -1 + function m() { + p && h && ((p = !1), h.length ? (d = h.concat(d)) : (f = -1), d.length && v()) + } + function v() { + if (!p) { + var e = c(m) + p = !0 + for (var t = d.length; t; ) { + for (h = d, d = []; ++f < t; ) h && h[f].run() + ;(f = -1), (t = d.length) + } + ;(h = null), (p = !1), u(e) + } + } + function g(e, t) { + ;(this.fun = e), (this.array = t) + } + function y() {} + ;(a.nextTick = function (e) { + var t = new Array(arguments.length - 1) + if (arguments.length > 1) + for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n] + d.push(new g(e, t)), 1 !== d.length || p || c(v) + }), + (g.prototype.run = function () { + this.fun.apply(null, this.array) + }), + (a.title = 'browser'), + (a.browser = !0), + (a.env = {}), + (a.argv = []), + (a.version = ''), + (a.versions = {}), + (a.on = y), + (a.addListener = y), + (a.once = y), + (a.off = y), + (a.removeListener = y), + (a.removeAllListeners = y), + (a.emit = y), + (a.prependListener = y), + (a.prependOnceListener = y), + (a.listeners = function (e) { + return [] + }), + (a.binding = function (e) { + throw new Error('process.binding is not supported') + }), + (a.cwd = function () { + return '/' + }), + (a.chdir = function (e) { + throw new Error('process.chdir is not supported') + }), + (a.umask = function () { + return 0 + }) + }, + {}, + ], + 50: [ + function (t, n, r) { + ;(function (t) { + !(function (r) { + var i = setTimeout, + o = + ('function' === typeof t && t) || + function (e) { + i(e, 1) + } + function a(e, t) { + return function () { + e.apply(t, arguments) + } + } + var s = + Array.isArray || + function (e) { + return '[object Array]' === Object.prototype.toString.call(e) + } + function l(e) { + if ('object' !== typeof this) + throw new TypeError('Promises must be constructed via new') + if ('function' !== typeof e) throw new TypeError('not a function') + ;(this._state = null), + (this._value = null), + (this._deferreds = []), + f(e, a(u, this), a(h, this)) + } + function c(t) { + var n = this + null !== this._state + ? o(function () { + var r = n._state ? t.onFulfilled : t.onRejected + if (null !== r) { + var i + try { + i = r(n._value) + } catch (e) { + return void t.reject(e) + } + t.resolve(i) + } else (n._state ? t.resolve : t.reject)(n._value) + }) + : this._deferreds.push(t) + } + function u(t) { + try { + if (t === this) + throw new TypeError('A promise cannot be resolved with itself.') + if (t && ('object' === typeof t || 'function' === typeof t)) { + var n = t.then + if ('function' === typeof n) + return void f(a(n, t), a(u, this), a(h, this)) + } + ;(this._state = !0), (this._value = t), d.call(this) + } catch (e) { + h.call(this, e) + } + } + function h(e) { + ;(this._state = !1), (this._value = e), d.call(this) + } + function d() { + for (var e = 0, t = this._deferreds.length; e < t; e++) + c.call(this, this._deferreds[e]) + this._deferreds = null + } + function p(e, t, n, r) { + ;(this.onFulfilled = 'function' === typeof e ? e : null), + (this.onRejected = 'function' === typeof t ? t : null), + (this.resolve = n), + (this.reject = r) + } + function f(e, t, n) { + var r = !1 + try { + e( + function (e) { + r || ((r = !0), t(e)) + }, + function (e) { + r || ((r = !0), n(e)) + }, + ) + } catch (i) { + if (r) return + ;(r = !0), n(i) + } + } + ;(l.prototype.catch = function (e) { + return this.then(null, e) + }), + (l.prototype.then = function (e, t) { + var n = this + return new l(function (r, i) { + c.call(n, new p(e, t, r, i)) + }) + }), + (l.all = function () { + var e = Array.prototype.slice.call( + 1 === arguments.length && s(arguments[0]) ? arguments[0] : arguments, + ) + return new l(function (t, n) { + if (0 === e.length) return t([]) + var r = e.length + function i(o, a) { + try { + if (a && ('object' === typeof a || 'function' === typeof a)) { + var s = a.then + if ('function' === typeof s) + return void s.call( + a, + function (e) { + i(o, e) + }, + n, + ) + } + ;(e[o] = a), 0 === --r && t(e) + } catch (l) { + n(l) + } + } + for (var o = 0; o < e.length; o++) i(o, e[o]) + }) + }), + (l.resolve = function (e) { + return e && 'object' === typeof e && e.constructor === l + ? e + : new l(function (t) { + t(e) + }) + }), + (l.reject = function (e) { + return new l(function (t, n) { + n(e) + }) + }), + (l.race = function (e) { + return new l(function (t, n) { + for (var r = 0, i = e.length; r < i; r++) e[r].then(t, n) + }) + }), + (l._setImmediateFn = function (e) { + o = e + }), + 'undefined' !== typeof n && n.exports + ? (n.exports = l) + : r.Promise || (r.Promise = l) + })(this) + }.call(this, t('timers').setImmediate)) + }, + { timers: 67 }, + ], + 51: [ + function (e, t, n) { + var r = e('dtype'), + i = e('an-array'), + o = e('is-buffer'), + a = [0, 2, 3], + s = [2, 1, 3] + t.exports = function (e, t) { + ;(e && (i(e) || o(e))) || ((t = e || {}), (e = null)) + for ( + var n = + 'string' === + typeof (t = 'number' === typeof t ? { count: t } : t || {}).type + ? t.type + : 'uint16', + l = 'number' === typeof t.count ? t.count : 1, + c = t.start || 0, + u = !1 !== t.clockwise ? a : s, + h = u[0], + d = u[1], + p = u[2], + f = 6 * l, + m = e || new (r(n))(f), + v = 0, + g = 0; + v < f; + v += 6, g += 4 + ) { + var y = v + c + ;(m[y + 0] = g + 0), + (m[y + 1] = g + 1), + (m[y + 2] = g + 2), + (m[y + 3] = g + h), + (m[y + 4] = g + d), + (m[y + 5] = g + p) + } + return m + } + }, + { 'an-array': 1, dtype: 13, 'is-buffer': 31 }, + ], + 52: [ + function (e, t, n) { + 'use strict' + var r = e('function-bind'), + i = e('es-abstract/es5'), + o = r.call(Function.call, String.prototype.replace), + a = + /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/, + s = + /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/ + t.exports = function () { + var e = i.ToString(i.CheckObjectCoercible(this)) + return o(o(e, a, ''), s, '') + } + }, + { 'es-abstract/es5': 15, 'function-bind': 26 }, + ], + 53: [ + function (e, t, n) { + 'use strict' + var r = e('function-bind'), + i = e('define-properties'), + o = e('./implementation'), + a = e('./polyfill'), + s = e('./shim'), + l = r.call(Function.call, a()) + i(l, { getPolyfill: a, implementation: o, shim: s }), (t.exports = l) + }, + { + './implementation': 52, + './polyfill': 54, + './shim': 55, + 'define-properties': 11, + 'function-bind': 26, + }, + ], + 54: [ + function (e, t, n) { + 'use strict' + var r = e('./implementation'), + i = '\u200b' + t.exports = function () { + return String.prototype.trim && i.trim() === i ? String.prototype.trim : r + } + }, + { './implementation': 52 }, + ], + 55: [ + function (e, t, n) { + 'use strict' + var r = e('define-properties'), + i = e('./polyfill') + t.exports = function () { + var e = i() + return ( + r( + String.prototype, + { trim: e }, + { + trim: function () { + return String.prototype.trim !== e + }, + }, + ), + e + ) + } + }, + { './polyfill': 54, 'define-properties': 11 }, + ], + 56: [ + function (t, n, r) { + 'use strict' + var i = { + update: null, + begin: null, + loopBegin: null, + changeBegin: null, + change: null, + changeComplete: null, + loopComplete: null, + complete: null, + loop: 1, + direction: 'normal', + autoplay: !0, + timelineOffset: 0, + }, + o = { + duration: 1e3, + delay: 0, + endDelay: 0, + easing: 'easeOutElastic(1, .5)', + round: 0, + }, + a = [ + 'translateX', + 'translateY', + 'translateZ', + 'rotate', + 'rotateX', + 'rotateY', + 'rotateZ', + 'scale', + 'scaleX', + 'scaleY', + 'scaleZ', + 'skew', + 'skewX', + 'skewY', + 'perspective', + ], + s = { CSS: {}, springs: {} } + function l(e, t, n) { + return Math.min(Math.max(e, t), n) + } + function c(e, t) { + return e.indexOf(t) > -1 + } + function u(e, t) { + return e.apply(null, t) + } + var h = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i, + d = /^rgb/, + p = /^hsl/, + f = { + arr: function (e) { + return Array.isArray(e) + }, + obj: function (e) { + return c(Object.prototype.toString.call(e), 'Object') + }, + pth: function (e) { + return f.obj(e) && e.hasOwnProperty('totalLength') + }, + svg: function (e) { + return e instanceof SVGElement + }, + inp: function (e) { + return e instanceof HTMLInputElement + }, + dom: function (e) { + return e.nodeType || f.svg(e) + }, + str: function (e) { + return 'string' === typeof e + }, + fnc: function (e) { + return 'function' === typeof e + }, + und: function (e) { + return 'undefined' === typeof e + }, + hex: function (e) { + return h.test(e) + }, + rgb: function (e) { + return d.test(e) + }, + hsl: function (e) { + return p.test(e) + }, + col: function (e) { + return f.hex(e) || f.rgb(e) || f.hsl(e) + }, + key: function (e) { + return ( + !i.hasOwnProperty(e) && + !o.hasOwnProperty(e) && + 'targets' !== e && + 'keyframes' !== e + ) + }, + }, + m = /\(([^)]+)\)/ + function v(e) { + var t = m.exec(e) + return t + ? t[1].split(',').map(function (e) { + return parseFloat(e) + }) + : [] + } + function g(e, t) { + var n = v(e), + r = l(f.und(n[0]) ? 1 : n[0], 0.1, 100), + i = l(f.und(n[1]) ? 100 : n[1], 0.1, 100), + o = l(f.und(n[2]) ? 10 : n[2], 0.1, 100), + a = l(f.und(n[3]) ? 0 : n[3], 0.1, 100), + c = Math.sqrt(i / r), + u = o / (2 * Math.sqrt(i * r)), + h = u < 1 ? c * Math.sqrt(1 - u * u) : 0, + d = 1, + p = u < 1 ? (u * c - a) / h : -a + c + function m(e) { + var n = t ? (t * e) / 1e3 : e + return ( + (n = + u < 1 + ? Math.exp(-n * u * c) * (d * Math.cos(h * n) + p * Math.sin(h * n)) + : (d + p * n) * Math.exp(-n * c)), + 0 === e || 1 === e ? e : 1 - n + ) + } + function g() { + var t = s.springs[e] + if (t) return t + for (var n = 1 / 6, r = 0, i = 0; ; ) + if (1 === m((r += n))) { + if (++i >= 16) break + } else i = 0 + var o = r * n * 1e3 + return (s.springs[e] = o), o + } + return t ? m : g + } + function y(e, t) { + void 0 === e && (e = 1), void 0 === t && (t = 0.5) + var n = l(e, 1, 10), + r = l(t, 0.1, 2) + return function (e) { + return 0 === e || 1 === e + ? e + : -n * + Math.pow(2, 10 * (e - 1)) * + Math.sin( + ((e - 1 - (r / (2 * Math.PI)) * Math.asin(1 / n)) * (2 * Math.PI)) / r, + ) + } + } + function b(e) { + return ( + void 0 === e && (e = 10), + function (t) { + return Math.round(t * e) * (1 / e) + } + ) + } + var A = (function () { + var e = 11, + t = 1 / (e - 1) + function n(e, t) { + return 1 - 3 * t + 3 * e + } + function r(e, t) { + return 3 * t - 6 * e + } + function i(e) { + return 3 * e + } + function o(e, t, o) { + return ((n(t, o) * e + r(t, o)) * e + i(t)) * e + } + function a(e, t, o) { + return 3 * n(t, o) * e * e + 2 * r(t, o) * e + i(t) + } + function s(e, t, n, r, i) { + var a, + s, + l = 0 + do { + ;(a = o((s = t + (n - t) / 2), r, i) - e) > 0 ? (n = s) : (t = s) + } while (Math.abs(a) > 1e-7 && ++l < 10) + return s + } + function l(e, t, n, r) { + for (var i = 0; i < 4; ++i) { + var s = a(t, n, r) + if (0 === s) return t + t -= (o(t, n, r) - e) / s + } + return t + } + function c(n, r, i, c) { + if (0 <= n && n <= 1 && 0 <= i && i <= 1) { + var u = new Float32Array(e) + if (n !== r || i !== c) for (var h = 0; h < e; ++h) u[h] = o(h * t, n, i) + return function (e) { + return (n === r && i === c) || 0 === e || 1 === e ? e : o(d(e), r, c) + } + } + function d(r) { + for (var o = 0, c = 1, h = e - 1; c !== h && u[c] <= r; ++c) o += t + --c + var d = o + ((r - u[c]) / (u[c + 1] - u[c])) * t, + p = a(d, n, i) + return p >= 0.001 ? l(r, d, n, i) : 0 === p ? d : s(r, o, o + t, n, i) + } + } + return c + })(), + w = (function () { + var e = [ + 'Quad', + 'Cubic', + 'Quart', + 'Quint', + 'Sine', + 'Expo', + 'Circ', + 'Back', + 'Elastic', + ], + t = { + In: [ + [0.55, 0.085, 0.68, 0.53], + [0.55, 0.055, 0.675, 0.19], + [0.895, 0.03, 0.685, 0.22], + [0.755, 0.05, 0.855, 0.06], + [0.47, 0, 0.745, 0.715], + [0.95, 0.05, 0.795, 0.035], + [0.6, 0.04, 0.98, 0.335], + [0.6, -0.28, 0.735, 0.045], + y, + ], + Out: [ + [0.25, 0.46, 0.45, 0.94], + [0.215, 0.61, 0.355, 1], + [0.165, 0.84, 0.44, 1], + [0.23, 1, 0.32, 1], + [0.39, 0.575, 0.565, 1], + [0.19, 1, 0.22, 1], + [0.075, 0.82, 0.165, 1], + [0.175, 0.885, 0.32, 1.275], + function (e, t) { + return function (n) { + return 1 - y(e, t)(1 - n) + } + }, + ], + InOut: [ + [0.455, 0.03, 0.515, 0.955], + [0.645, 0.045, 0.355, 1], + [0.77, 0, 0.175, 1], + [0.86, 0, 0.07, 1], + [0.445, 0.05, 0.55, 0.95], + [1, 0, 0, 1], + [0.785, 0.135, 0.15, 0.86], + [0.68, -0.55, 0.265, 1.55], + function (e, t) { + return function (n) { + return n < 0.5 ? y(e, t)(2 * n) / 2 : 1 - y(e, t)(-2 * n + 2) / 2 + } + }, + ], + }, + n = { linear: [0.25, 0.25, 0.75, 0.75] } + for (var r in t) + for (var i = 0, o = t[r].length; i < o; i++) n['ease' + r + e[i]] = t[r][i] + return n + })() + function x(e, t) { + if (f.fnc(e)) return e + var n = e.split('(')[0], + r = w[n], + i = v(e) + switch (n) { + case 'spring': + return g(e, t) + case 'cubicBezier': + return u(A, i) + case 'steps': + return u(b, i) + default: + return f.fnc(r) ? u(r, i) : u(A, r) + } + } + function E(t) { + try { + return document.querySelectorAll(t) + } catch (e) { + return + } + } + var M = [] + function _(e, t) { + for ( + var n = M, + r = e.length, + i = arguments.length >= 2 ? arguments[1] : void 0, + o = 0; + o < r; + o++ + ) + if (o in e) { + var a = e[o] + t.call(i, a, o, e) && n.push(a) + } + return ((M = e).length = 0), n + } + function T(e, t) { + t || (t = []) + for (var n = 0, r = e.length; n < r; n++) { + var i = e[n] + Array.isArray(i) ? T(i, t) : t.push(i) + } + return t + } + function S(e) { + return f.arr(e) + ? e + : (f.str(e) && (e = E(e) || e), + e instanceof NodeList || e instanceof HTMLCollection ? [].slice.call(e) : [e]) + } + function C(e, t) { + return e.some(function (e) { + return e === t + }) + } + function L(e) { + var t = {} + for (var n in e) t[n] = e[n] + return t + } + function R(e, t) { + var n = L(e) + for (var r in e) n[r] = t.hasOwnProperty(r) ? t[r] : e[r] + return n + } + function P(e, t) { + var n = L(e) + for (var r in t) n[r] = f.und(e[r]) ? t[r] : e[r] + return n + } + var D = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g + function O(e) { + var t = D.exec(e) + return t ? 'rgba(' + t[1] + ',1)' : e + } + var I = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, + B = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i + function F(e) { + var t = e.replace(I, function (e, t, n, r) { + return t + t + n + n + r + r + }), + n = B.exec(t) + return ( + 'rgba(' + + parseInt(n[1], 16) + + ',' + + parseInt(n[2], 16) + + ',' + + parseInt(n[3], 16) + + ',1)' + ) + } + var k = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g, + N = /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g + function U(e) { + var t, + n, + r, + i = k.exec(e) || N.exec(e), + o = parseInt(i[1], 10) / 360, + a = parseInt(i[2], 10) / 100, + s = parseInt(i[3], 10) / 100, + l = i[4] || 1 + function c(e, t, n) { + return ( + n < 0 && (n += 1), + n > 1 && (n -= 1), + n < 1 / 6 + ? e + 6 * (t - e) * n + : n < 0.5 + ? t + : n < 2 / 3 + ? e + (t - e) * (2 / 3 - n) * 6 + : e + ) + } + if (0 == a) t = n = r = s + else { + var u = s < 0.5 ? s * (1 + a) : s + a - s * a, + h = 2 * s - u + ;(t = c(h, u, o + 1 / 3)), (n = c(h, u, o)), (r = c(h, u, o - 1 / 3)) + } + return 'rgba(' + 255 * t + ',' + 255 * n + ',' + 255 * r + ',' + l + ')' + } + function H(e) { + return f.rgb(e) ? O(e) : f.hex(e) ? F(e) : f.hsl(e) ? U(e) : void 0 + } + var G = + /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/ + function z(e) { + var t = G.exec(e) + if (t) return t[2] + } + function j(e) { + return c(e, 'translate') || 'perspective' === e + ? 'px' + : c(e, 'rotate') || c(e, 'skew') + ? 'deg' + : void 0 + } + function V(e, t) { + return f.fnc(e) ? e(t.target, t.id, t.total) : e + } + function W(e, t) { + return e.getAttribute(t) + } + function q(e, t, n) { + if (C([n, 'deg', 'rad', 'turn'], z(t))) return t + var r = s.CSS[t + n] + if (!f.und(r)) return r + var i = 100, + o = document.createElement(e.tagName), + a = e.parentNode && e.parentNode !== document ? e.parentNode : document.body + a.appendChild(o), (o.style.position = 'absolute'), (o.style.width = i + n) + var l = i / o.offsetWidth + a.removeChild(o) + var c = l * parseFloat(t) + return (s.CSS[t + n] = c), c + } + function X(e, t, n) { + if (t in e.style) { + var r = t.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(), + i = e.style[t] || getComputedStyle(e).getPropertyValue(r) || '0' + return n ? q(e, i, n) : i + } + } + function Y(e, t) { + return f.dom(e) && !f.inp(e) && (W(e, t) || (f.svg(e) && e[t])) + ? 'attribute' + : f.dom(e) && C(a, t) + ? 'transform' + : f.dom(e) && 'transform' !== t && X(e, t) + ? 'css' + : null != e[t] + ? 'object' + : void 0 + } + var Q = /(\w+)\(([^)]*)\)/g + function Z(e) { + if (f.dom(e)) { + for (var t, n = e.style.transform || '', r = new Map(); (t = Q.exec(n)); ) + r.set(t[1], t[2]) + return r + } + } + function K(e, t, n, r) { + var i = c(t, 'scale') ? 1 : 0 + j(t), + o = Z(e).get(t) || i + return ( + n && (n.transforms.list.set(t, o), (n.transforms.last = t)), r ? q(e, o, r) : o + ) + } + function J(e, t, n, r) { + switch (Y(e, t)) { + case 'transform': + return K(e, t, r, n) + case 'css': + return X(e, t, n) + case 'attribute': + return W(e, t) + default: + return e[t] || 0 + } + } + var $ = /^(\*=|\+=|-=)/ + function ee(e, t) { + var n = $.exec(e) + if (!n) return e + var r = z(e) || 0, + i = parseFloat(t), + o = parseFloat(e.replace(n[0], '')) + switch (n[0][0]) { + case '+': + return i + o + r + case '-': + return i - o + r + case '*': + return i * o + r + } + } + var te = /\s/g + function ne(e, t) { + if (f.col(e)) return H(e) + var n = z(e), + r = n ? e.substr(0, e.length - n.length) : e + return t && !te.test(e) ? r + t : r + } + function re(e, t) { + return Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)) + } + function ie(e) { + return 2 * Math.PI * W(e, 'r') + } + function oe(e) { + return 2 * W(e, 'width') + 2 * W(e, 'height') + } + function ae(e) { + return re({ x: W(e, 'x1'), y: W(e, 'y1') }, { x: W(e, 'x2'), y: W(e, 'y2') }) + } + function se(e) { + for (var t, n = e.points, r = 0, i = 0; i < n.numberOfItems; i++) { + var o = n.getItem(i) + i > 0 && (r += re(t, o)), (t = o) + } + return r + } + function le(e) { + var t = e.points + return se(e) + re(t.getItem(t.numberOfItems - 1), t.getItem(0)) + } + function ce(e) { + if (e.getTotalLength) return e.getTotalLength() + switch (e.tagName.toLowerCase()) { + case 'circle': + return ie(e) + case 'rect': + return oe(e) + case 'line': + return ae(e) + case 'polyline': + return se(e) + case 'polygon': + return le(e) + } + } + function ue(e) { + var t = ce(e) + return e.setAttribute('stroke-dasharray', t), t + } + function he(e) { + for ( + var t = e.parentNode; + f.svg(t) && ((t = t.parentNode), f.svg(t.parentNode)); + + ); + return t + } + function de(e, t) { + var n = t || {}, + r = n.el || he(e), + i = r.getBoundingClientRect(), + o = W(r, 'viewBox'), + a = i.width, + s = i.height, + l = n.viewBox || (o ? o.split(' ') : [0, 0, a, s]) + return { el: r, viewBox: l, x: l[0] / 1, y: l[1] / 1, w: a / l[2], h: s / l[3] } + } + function pe(e, t) { + var n = f.str(e) ? E(e)[0] : e, + r = t || 100 + return function (e) { + return { property: e, el: n, svg: de(n), totalLength: ce(n) * (r / 100) } + } + } + function fe(e, t) { + function n(n) { + void 0 === n && (n = 0) + var r = t + n >= 1 ? t + n : 0 + return e.el.getPointAtLength(r) + } + var r = de(e.el, e.svg), + i = n(), + o = n(-1), + a = n(1) + switch (e.property) { + case 'x': + return (i.x - r.x) * r.w + case 'y': + return (i.y - r.y) * r.h + case 'angle': + return (180 * Math.atan2(a.y - o.y, a.x - o.x)) / Math.PI + } + } + var me = /-?\d*\.?\d+/g + function ve(e, t) { + var n = ne(f.pth(e) ? e.totalLength : e, t) + '' + return { + original: n, + numbers: n.match(me) ? n.match(me).map(Number) : [0], + strings: f.str(e) || t ? n.split(me) : [], + } + } + function ge(e) { + return _(e ? T(f.arr(e) ? e.map(S) : S(e)) : [], function (e, t, n) { + return n.indexOf(e) === t + }) + } + function ye(e) { + var t = ge(e) + return t.map(function (e, n) { + return { target: e, id: n, total: t.length, transforms: { list: Z(e) } } + }) + } + var be = /^spring/ + function Ae(e, t) { + var n = L(t) + if ((be.test(n.easing) && (n.duration = g(n.easing)), f.arr(e))) { + var r = e.length + 2 !== r || f.obj(e[0]) + ? f.fnc(t.duration) || (n.duration = t.duration / r) + : (e = { value: e }) + } + var i = f.arr(e) ? e : [e] + return i + .map(function (e, n) { + var r = f.obj(e) && !f.pth(e) ? e : { value: e } + return ( + f.und(r.delay) && (r.delay = n ? 0 : t.delay), + f.und(r.endDelay) && (r.endDelay = n === i.length - 1 ? t.endDelay : 0), + r + ) + }) + .map(function (e) { + return P(e, n) + }) + } + function we(e) { + for ( + var t = _( + T( + e.map(function (e) { + return Object.keys(e) + }), + ), + function (e) { + return f.key(e) + }, + ).reduce(function (e, t) { + return e.indexOf(t) < 0 && e.push(t), e + }, []), + n = {}, + r = function (r) { + var i = t[r] + n[i] = e.map(function (e) { + var t = {} + for (var n in e) f.key(n) ? n == i && (t.value = e[n]) : (t[n] = e[n]) + return t + }) + }, + i = 0; + i < t.length; + i++ + ) + r(i) + return n + } + function xe(e, t) { + var n = [], + r = t.keyframes + for (var i in (r && (t = P(we(r), t)), t)) + f.key(i) && n.push({ name: i, tweens: Ae(t[i], e) }) + return n + } + function Ee(e, t) { + var n = {} + for (var r in e) { + var i = V(e[r], t) + f.arr(i) && + 1 === + (i = i.map(function (e) { + return V(e, t) + })).length && + (i = i[0]), + (n[r] = i) + } + return (n.duration = parseFloat(n.duration)), (n.delay = parseFloat(n.delay)), n + } + function Me(e, t) { + var n + return e.tweens.map(function (r) { + var i = Ee(r, t), + o = i.value, + a = f.arr(o) ? o[1] : o, + s = z(a), + l = J(t.target, e.name, s, t), + c = n ? n.to.original : l, + u = f.arr(o) ? o[0] : c, + h = z(u) || z(l), + d = s || h + return ( + f.und(a) && (a = c), + (i.from = ve(u, d)), + (i.to = ve(ee(a, u), d)), + (i.start = n ? n.end : 0), + (i.end = i.start + i.delay + i.duration + i.endDelay), + (i.easing = x(i.easing, i.duration)), + (i.isPath = f.pth(o)), + (i.isColor = f.col(i.from.original)), + i.isColor && (i.round = 1), + (n = i), + i + ) + }) + } + var _e = { + css: function (e, t, n) { + return (e.style[t] = n) + }, + attribute: function (e, t, n) { + return e.setAttribute(t, n) + }, + object: function (e, t, n) { + return (e[t] = n) + }, + transform: function (e, t, n, r, i) { + if ((r.list.set(t, n), t === r.last || i)) { + var o = '' + r.list.forEach(function (e, t) { + o += t + '(' + e + ') ' + }), + (e.style.transform = o) + } + }, + } + function Te(e, t) { + for (var n = ye(e), r = 0, i = n.length; r < i; r++) { + var o = n[r] + for (var a in t) { + var s = V(t[a], o), + l = o.target, + c = z(s), + u = J(l, a, c, o), + h = ee(ne(s, c || z(u)), u), + d = Y(l, a) + _e[d](l, a, h, o.transforms, !0) + } + } + } + function Se(e, t) { + var n = Y(e.target, t.name) + if (n) { + var r = Me(t, e), + i = r[r.length - 1] + return { + type: n, + property: t.name, + animatable: e, + tweens: r, + duration: i.end, + delay: r[0].delay, + endDelay: i.endDelay, + } + } + } + function Ce(e, t) { + return _( + T( + e.map(function (e) { + return t.map(function (t) { + return Se(e, t) + }) + }), + ), + function (e) { + return !f.und(e) + }, + ) + } + function Le(e, t) { + var n = e.length, + r = function (e) { + return e.timelineOffset ? e.timelineOffset : 0 + }, + i = {} + return ( + (i.duration = n + ? Math.max.apply( + Math, + e.map(function (e) { + return r(e) + e.duration + }), + ) + : t.duration), + (i.delay = n + ? Math.min.apply( + Math, + e.map(function (e) { + return r(e) + e.delay + }), + ) + : t.delay), + (i.endDelay = n + ? i.duration - + Math.max.apply( + Math, + e.map(function (e) { + return r(e) + e.duration - e.endDelay + }), + ) + : t.endDelay), + i + ) + } + var Re = 0 + function Pe(e) { + var t = R(i, e), + n = R(o, e), + r = xe(n, e), + a = ye(e.targets), + s = Ce(a, r), + l = Le(s, n), + c = Re + return ( + Re++, + P(t, { + id: c, + children: [], + animatables: a, + animations: s, + duration: l.duration, + delay: l.delay, + endDelay: l.endDelay, + }) + ) + } + var De, + Oe = [], + Ie = [], + Be = (function () { + function e() { + De = requestAnimationFrame(t) + } + function t(t) { + var n = Oe.length + if (n) { + for (var r = 0; r < n; ) { + var i = Oe[r] + if (i.paused) { + var o = Oe.indexOf(i) + o > -1 && (Oe.splice(o, 1), (n = Oe.length)) + } else i.tick(t) + r++ + } + e() + } else De = cancelAnimationFrame(De) + } + return e + })() + function Fe() { + if (document.hidden) { + for (var e = 0, t = Oe.length; e < t; e++) activeInstance[e].pause() + ;(Ie = Oe.slice(0)), (Oe = []) + } else for (var n = 0, r = Ie.length; n < r; n++) Ie[n].play() + } + function ke(e) { + void 0 === e && (e = {}) + var t, + n = 0, + r = 0, + i = 0, + o = 0, + a = null + function s() { + return ( + window.Promise && + new Promise(function (e) { + return (a = e) + }) + ) + } + var c = s(), + u = Pe(e) + function h() { + u.reversed = !u.reversed + for (var e = 0, n = t.length; e < n; e++) t[e].reversed = u.reversed + } + function d(e) { + return u.reversed ? u.duration - e : e + } + function p() { + ;(n = 0), (r = d(u.currentTime) * (1 / ke.speed)) + } + function f(e, t) { + t && t.seek(e - t.timelineOffset) + } + function m(e) { + if (u.reversePlayback) for (var n = o; n--; ) f(e, t[n]) + else for (var r = 0; r < o; r++) f(e, t[r]) + } + function v(e) { + for (var t = 0, n = u.animations, r = n.length; t < r; ) { + var i = n[t], + o = i.animatable, + a = i.tweens, + s = a.length - 1, + c = a[s] + s && + (c = + _(a, function (t) { + return e < t.end + })[0] || c) + for ( + var h = l(e - c.start - c.delay, 0, c.duration) / c.duration, + d = isNaN(h) ? 1 : c.easing(h), + p = c.to.strings, + f = c.round, + m = [], + v = c.to.numbers.length, + g = void 0, + y = 0; + y < v; + y++ + ) { + var b = void 0, + A = c.to.numbers[y], + w = c.from.numbers[y] || 0 + ;(b = c.isPath ? fe(c.value, d * A) : w + d * (A - w)), + f && ((c.isColor && y > 2) || (b = Math.round(b * f) / f)), + m.push(b) + } + var x = p.length + if (x) { + g = p[0] + for (var E = 0; E < x; E++) { + p[E] + var M = p[E + 1], + T = m[E] + isNaN(T) || (g += M ? T + M : T + ' ') + } + } else g = m[0] + _e[i.type](o.target, i.property, g, o.transforms), (i.currentValue = g), t++ + } + } + function g(e) { + u[e] && !u.passThrough && u[e](u) + } + function y() { + u.remaining && !0 !== u.remaining && u.remaining-- + } + function b(e) { + var o = u.duration, + p = u.delay, + f = o - u.endDelay, + b = d(e) + ;(u.progress = l((b / o) * 100, 0, 100)), + (u.reversePlayback = b < u.currentTime), + t && m(b), + !u.began && u.currentTime > 0 && ((u.began = !0), g('begin'), g('loopBegin')), + b <= p && 0 !== u.currentTime && v(0), + ((b >= f && u.currentTime !== o) || !o) && v(o), + b > p && b < f + ? (u.changeBegan || + ((u.changeBegan = !0), (u.changeCompleted = !1), g('changeBegin')), + g('change'), + v(b)) + : u.changeBegan && + ((u.changeCompleted = !0), (u.changeBegan = !1), g('changeComplete')), + (u.currentTime = l(b, 0, o)), + u.began && g('update'), + e >= o && + ((r = 0), + y(), + u.remaining + ? ((n = i), + g('loopComplete'), + g('loopBegin'), + 'alternate' === u.direction && h()) + : ((u.paused = !0), + u.completed || + ((u.completed = !0), + g('loopComplete'), + g('complete'), + 'Promise' in window && (a(), (c = s()))))) + } + return ( + (u.reset = function () { + var e = u.direction + ;(u.passThrough = !1), + (u.currentTime = 0), + (u.progress = 0), + (u.paused = !0), + (u.began = !1), + (u.changeBegan = !1), + (u.completed = !1), + (u.changeCompleted = !1), + (u.reversePlayback = !1), + (u.reversed = 'reverse' === e), + (u.remaining = u.loop), + (t = u.children) + for (var n = (o = t.length); n--; ) u.children[n].reset() + ;((u.reversed && !0 !== u.loop) || ('alternate' === e && 1 === u.loop)) && + u.remaining++, + v(0) + }), + (u.set = function (e, t) { + return Te(e, t), u + }), + (u.tick = function (e) { + ;(i = e), n || (n = i), b((i + (r - n)) * ke.speed) + }), + (u.seek = function (e) { + b(d(e)) + }), + (u.pause = function () { + ;(u.paused = !0), p() + }), + (u.play = function () { + u.paused && ((u.paused = !1), Oe.push(u), p(), De || Be()) + }), + (u.reverse = function () { + h(), p() + }), + (u.restart = function () { + u.reset(), u.play() + }), + (u.finished = c), + u.reset(), + u.autoplay && u.play(), + u + ) + } + function Ne(e, t) { + for (var n = t.length; n--; ) C(e, t[n].animatable.target) && t.splice(n, 1) + } + function Ue(e) { + for (var t = ge(e), n = Oe.length; n--; ) { + var r = Oe[n], + i = r.animations, + o = r.children + Ne(t, i) + for (var a = o.length; a--; ) { + var s = o[a], + l = s.animations + Ne(t, l), l.length || s.children.length || o.splice(a, 1) + } + i.length || o.length || r.pause() + } + } + function He(e, t) { + void 0 === t && (t = {}) + var n = t.direction || 'normal', + r = t.easing ? x(t.easing) : null, + i = t.grid, + o = t.axis, + a = t.from || 0, + s = 'first' === a, + l = 'center' === a, + c = 'last' === a, + u = f.arr(e), + h = u ? parseFloat(e[0]) : parseFloat(e), + d = u ? parseFloat(e[1]) : 0, + p = z(u ? e[1] : e) || 0, + m = t.start || 0 + (u ? h : 0), + v = [], + g = 0 + return function (e, t, f) { + if ((s && (a = 0), l && (a = (f - 1) / 2), c && (a = f - 1), !v.length)) { + for (var y = 0; y < f; y++) { + if (i) { + var b = l ? (i[0] - 1) / 2 : a % i[0], + A = l ? (i[1] - 1) / 2 : Math.floor(a / i[0]), + w = b - (y % i[0]), + x = A - Math.floor(y / i[0]), + E = Math.sqrt(w * w + x * x) + 'x' === o && (E = -w), 'y' === o && (E = -x), v.push(E) + } else v.push(Math.abs(a - y)) + g = Math.max.apply(Math, v) + } + r && + (v = v.map(function (e) { + return r(e / g) * g + })), + 'reverse' === n && + (v = v.map(function (e) { + return o ? (e < 0 ? -1 * e : -e) : Math.abs(g - e) + })) + } + return m + (u ? (d - h) / g : h) * (Math.round(100 * v[t]) / 100) + p + } + } + function Ge(e) { + void 0 === e && (e = {}) + var t = ke(e) + return ( + (t.duration = 0), + (t.add = function (n, r) { + var i = Oe.indexOf(t), + a = t.children + function s(e) { + e.passThrough = !0 + } + i > -1 && Oe.splice(i, 1) + for (var l = 0; l < a.length; l++) s(a[l]) + var c = P(n, R(o, e)) + c.targets = c.targets || e.targets + var u = t.duration + ;(c.autoplay = !1), + (c.direction = t.direction), + (c.timelineOffset = f.und(r) ? u : ee(r, u)), + s(t), + t.seek(c.timelineOffset) + var h = ke(c) + s(h), a.push(h) + var d = Le(a, e) + return ( + (t.delay = d.delay), + (t.endDelay = d.endDelay), + (t.duration = d.duration), + t.seek(0), + t.reset(), + t.autoplay && t.play(), + t + ) + }), + t + ) + } + document.addEventListener('visibilitychange', Fe), + (ke.version = '3.0.0'), + (ke.speed = 1), + (ke.running = Oe), + (ke.remove = Ue), + (ke.get = J), + (ke.set = Te), + (ke.convertPx = q), + (ke.path = pe), + (ke.setDashoffset = ue), + (ke.stagger = He), + (ke.timeline = Ge), + (ke.easing = x), + (ke.penner = w), + (ke.random = function (e, t) { + return Math.floor(Math.random() * (t - e + 1)) + e + }), + (n.exports = ke) + }, + {}, + ], + 57: [ + function (n, r, i) { + var o, a + ;(o = this), + (a = function (t) { + 'use strict' + void 0 === Number.EPSILON && (Number.EPSILON = Math.pow(2, -52)), + void 0 === Number.isInteger && + (Number.isInteger = function (e) { + return 'number' === typeof e && isFinite(e) && Math.floor(e) === e + }), + void 0 === Math.sign && + (Math.sign = function (e) { + return e < 0 ? -1 : e > 0 ? 1 : +e + }), + 'name' in Function.prototype === !1 && + Object.defineProperty(Function.prototype, 'name', { + get: function () { + return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1] + }, + }), + void 0 === Object.assign && + (Object.assign = function (e) { + if (void 0 === e || null === e) + throw new TypeError('Cannot convert undefined or null to object') + for (var t = Object(e), n = 1; n < arguments.length; n++) { + var r = arguments[n] + if (void 0 !== r && null !== r) + for (var i in r) + Object.prototype.hasOwnProperty.call(r, i) && (t[i] = r[i]) + } + return t + }) + var n = (function (e) { + var t, + n = Object.prototype, + r = n.hasOwnProperty, + i = 'function' === typeof Symbol ? Symbol : {}, + o = i.iterator || '@@iterator', + a = i.asyncIterator || '@@asyncIterator', + s = i.toStringTag || '@@toStringTag' + function l(e, t, n) { + return ( + Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0, + }), + e[t] + ) + } + try { + l({}, '') + } catch (D) { + l = function (e, t, n) { + return (e[t] = n) + } + } + function c(e, t, n, r) { + var i = t && t.prototype instanceof v ? t : v, + o = Object.create(i.prototype), + a = new L(r || []) + return (o._invoke = _(e, n, a)), o + } + function u(e, t, n) { + try { + return { type: 'normal', arg: e.call(t, n) } + } catch (D) { + return { type: 'throw', arg: D } + } + } + e.wrap = c + var h = 'suspendedStart', + d = 'suspendedYield', + p = 'executing', + f = 'completed', + m = {} + function v() {} + function g() {} + function y() {} + var b = {} + b[o] = function () { + return this + } + var A = Object.getPrototypeOf, + w = A && A(A(R([]))) + w && w !== n && r.call(w, o) && (b = w) + var x = (y.prototype = v.prototype = Object.create(b)) + function E(e) { + ;['next', 'throw', 'return'].forEach(function (t) { + l(e, t, function (e) { + return this._invoke(t, e) + }) + }) + } + function M(e, t) { + function n(i, o, a, s) { + var l = u(e[i], e, o) + if ('throw' !== l.type) { + var c = l.arg, + h = c.value + return h && 'object' === typeof h && r.call(h, '__await') + ? t.resolve(h.__await).then( + function (e) { + n('next', e, a, s) + }, + function (e) { + n('throw', e, a, s) + }, + ) + : t.resolve(h).then( + function (e) { + ;(c.value = e), a(c) + }, + function (e) { + return n('throw', e, a, s) + }, + ) + } + s(l.arg) + } + var i + function o(e, r) { + function o() { + return new t(function (t, i) { + n(e, r, t, i) + }) + } + return (i = i ? i.then(o, o) : o()) + } + this._invoke = o + } + function _(e, t, n) { + var r = h + return function (i, o) { + if (r === p) throw new Error('Generator is already running') + if (r === f) { + if ('throw' === i) throw o + return P() + } + for (n.method = i, n.arg = o; ; ) { + var a = n.delegate + if (a) { + var s = T(a, n) + if (s) { + if (s === m) continue + return s + } + } + if ('next' === n.method) n.sent = n._sent = n.arg + else if ('throw' === n.method) { + if (r === h) throw ((r = f), n.arg) + n.dispatchException(n.arg) + } else 'return' === n.method && n.abrupt('return', n.arg) + r = p + var l = u(e, t, n) + if ('normal' === l.type) { + if (((r = n.done ? f : d), l.arg === m)) continue + return { value: l.arg, done: n.done } + } + 'throw' === l.type && ((r = f), (n.method = 'throw'), (n.arg = l.arg)) + } + } + } + function T(e, n) { + var r = e.iterator[n.method] + if (r === t) { + if (((n.delegate = null), 'throw' === n.method)) { + if ( + e.iterator.return && + ((n.method = 'return'), (n.arg = t), T(e, n), 'throw' === n.method) + ) + return m + ;(n.method = 'throw'), + (n.arg = new TypeError( + "The iterator does not provide a 'throw' method", + )) + } + return m + } + var i = u(r, e.iterator, n.arg) + if ('throw' === i.type) + return (n.method = 'throw'), (n.arg = i.arg), (n.delegate = null), m + var o = i.arg + return o + ? o.done + ? ((n[e.resultName] = o.value), + (n.next = e.nextLoc), + 'return' !== n.method && ((n.method = 'next'), (n.arg = t)), + (n.delegate = null), + m) + : o + : ((n.method = 'throw'), + (n.arg = new TypeError('iterator result is not an object')), + (n.delegate = null), + m) + } + function S(e) { + var t = { tryLoc: e[0] } + 1 in e && (t.catchLoc = e[1]), + 2 in e && ((t.finallyLoc = e[2]), (t.afterLoc = e[3])), + this.tryEntries.push(t) + } + function C(e) { + var t = e.completion || {} + ;(t.type = 'normal'), delete t.arg, (e.completion = t) + } + function L(e) { + ;(this.tryEntries = [{ tryLoc: 'root' }]), + e.forEach(S, this), + this.reset(!0) + } + function R(e) { + if (e) { + var n = e[o] + if (n) return n.call(e) + if ('function' === typeof e.next) return e + if (!isNaN(e.length)) { + var i = -1, + a = function n() { + for (; ++i < e.length; ) + if (r.call(e, i)) return (n.value = e[i]), (n.done = !1), n + return (n.value = t), (n.done = !0), n + } + return (a.next = a) + } + } + return { next: P } + } + function P() { + return { value: t, done: !0 } + } + return ( + (g.prototype = x.constructor = y), + (y.constructor = g), + (g.displayName = l(y, s, 'GeneratorFunction')), + (e.isGeneratorFunction = function (e) { + var t = 'function' === typeof e && e.constructor + return ( + !!t && (t === g || 'GeneratorFunction' === (t.displayName || t.name)) + ) + }), + (e.mark = function (e) { + return ( + Object.setPrototypeOf + ? Object.setPrototypeOf(e, y) + : ((e.__proto__ = y), l(e, s, 'GeneratorFunction')), + (e.prototype = Object.create(x)), + e + ) + }), + (e.awrap = function (e) { + return { __await: e } + }), + E(M.prototype), + (M.prototype[a] = function () { + return this + }), + (e.AsyncIterator = M), + (e.async = function (t, n, r, i, o) { + void 0 === o && (o = Promise) + var a = new M(c(t, n, r, i), o) + return e.isGeneratorFunction(n) + ? a + : a.next().then(function (e) { + return e.done ? e.value : a.next() + }) + }), + E(x), + l(x, s, 'Generator'), + (x[o] = function () { + return this + }), + (x.toString = function () { + return '[object Generator]' + }), + (e.keys = function (e) { + var t = [] + for (var n in e) t.push(n) + return ( + t.reverse(), + function n() { + for (; t.length; ) { + var r = t.pop() + if (r in e) return (n.value = r), (n.done = !1), n + } + return (n.done = !0), n + } + ) + }), + (e.values = R), + (L.prototype = { + constructor: L, + reset: function (e) { + if ( + ((this.prev = 0), + (this.next = 0), + (this.sent = this._sent = t), + (this.done = !1), + (this.delegate = null), + (this.method = 'next'), + (this.arg = t), + this.tryEntries.forEach(C), + !e) + ) + for (var n in this) + 't' === n.charAt(0) && + r.call(this, n) && + !isNaN(+n.slice(1)) && + (this[n] = t) + }, + stop: function () { + this.done = !0 + var e = this.tryEntries[0].completion + if ('throw' === e.type) throw e.arg + return this.rval + }, + dispatchException: function (e) { + if (this.done) throw e + var n = this + function i(r, i) { + return ( + (s.type = 'throw'), + (s.arg = e), + (n.next = r), + i && ((n.method = 'next'), (n.arg = t)), + !!i + ) + } + for (var o = this.tryEntries.length - 1; o >= 0; --o) { + var a = this.tryEntries[o], + s = a.completion + if ('root' === a.tryLoc) return i('end') + if (a.tryLoc <= this.prev) { + var l = r.call(a, 'catchLoc'), + c = r.call(a, 'finallyLoc') + if (l && c) { + if (this.prev < a.catchLoc) return i(a.catchLoc, !0) + if (this.prev < a.finallyLoc) return i(a.finallyLoc) + } else if (l) { + if (this.prev < a.catchLoc) return i(a.catchLoc, !0) + } else { + if (!c) throw new Error('try statement without catch or finally') + if (this.prev < a.finallyLoc) return i(a.finallyLoc) + } + } + } + }, + abrupt: function (e, t) { + for (var n = this.tryEntries.length - 1; n >= 0; --n) { + var i = this.tryEntries[n] + if ( + i.tryLoc <= this.prev && + r.call(i, 'finallyLoc') && + this.prev < i.finallyLoc + ) { + var o = i + break + } + } + o && + ('break' === e || 'continue' === e) && + o.tryLoc <= t && + t <= o.finallyLoc && + (o = null) + var a = o ? o.completion : {} + return ( + (a.type = e), + (a.arg = t), + o + ? ((this.method = 'next'), (this.next = o.finallyLoc), m) + : this.complete(a) + ) + }, + complete: function (e, t) { + if ('throw' === e.type) throw e.arg + return ( + 'break' === e.type || 'continue' === e.type + ? (this.next = e.arg) + : 'return' === e.type + ? ((this.rval = this.arg = e.arg), + (this.method = 'return'), + (this.next = 'end')) + : 'normal' === e.type && t && (this.next = t), + m + ) + }, + finish: function (e) { + for (var t = this.tryEntries.length - 1; t >= 0; --t) { + var n = this.tryEntries[t] + if (n.finallyLoc === e) + return this.complete(n.completion, n.afterLoc), C(n), m + } + }, + catch: function (e) { + for (var t = this.tryEntries.length - 1; t >= 0; --t) { + var n = this.tryEntries[t] + if (n.tryLoc === e) { + var r = n.completion + if ('throw' === r.type) { + var i = r.arg + C(n) + } + return i + } + } + throw new Error('illegal catch attempt') + }, + delegateYield: function (e, n, r) { + return ( + (this.delegate = { iterator: R(e), resultName: n, nextLoc: r }), + 'next' === this.method && (this.arg = t), + m + ) + }, + }), + e + ) + })('object' === typeof r ? r.exports : {}) + try { + regeneratorRuntime = n + } catch (ym) { + Function('r', 'regeneratorRuntime = r')(n) + } + var i = '125', + o = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 }, + a = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }, + s = 0, + l = 1, + c = 2, + u = 3, + h = 0, + d = 1, + p = 2, + f = 3, + m = 0, + v = 1, + g = 2, + y = 1, + b = 2, + A = 0, + w = 1, + x = 2, + E = 3, + M = 4, + _ = 5, + T = 100, + S = 101, + C = 102, + L = 103, + R = 104, + P = 200, + D = 201, + O = 202, + I = 203, + B = 204, + F = 205, + k = 206, + N = 207, + U = 208, + H = 209, + G = 210, + z = 0, + j = 1, + V = 2, + W = 3, + q = 4, + X = 5, + Y = 6, + Q = 7, + Z = 0, + K = 1, + J = 2, + $ = 0, + ee = 1, + te = 2, + ne = 3, + re = 4, + ie = 5, + oe = 300, + ae = 301, + se = 302, + le = 303, + ce = 304, + ue = 306, + he = 307, + de = 1e3, + pe = 1001, + fe = 1002, + me = 1003, + ve = 1004, + ge = 1004, + ye = 1005, + be = 1005, + Ae = 1006, + we = 1007, + xe = 1007, + Ee = 1008, + Me = 1008, + _e = 1009, + Te = 1010, + Se = 1011, + Ce = 1012, + Le = 1013, + Re = 1014, + Pe = 1015, + De = 1016, + Oe = 1017, + Ie = 1018, + Be = 1019, + Fe = 1020, + ke = 1021, + Ne = 1022, + Ue = 1023, + He = 1024, + Ge = 1025, + ze = Ue, + je = 1026, + Ve = 1027, + We = 1028, + qe = 1029, + Xe = 1030, + Ye = 1031, + Qe = 1032, + Ze = 1033, + Ke = 33776, + Je = 33777, + $e = 33778, + et = 33779, + tt = 35840, + nt = 35841, + rt = 35842, + it = 35843, + ot = 36196, + at = 37492, + st = 37496, + lt = 37808, + ct = 37809, + ut = 37810, + ht = 37811, + dt = 37812, + pt = 37813, + ft = 37814, + mt = 37815, + vt = 37816, + gt = 37817, + yt = 37818, + bt = 37819, + At = 37820, + wt = 37821, + xt = 36492, + Et = 37840, + Mt = 37841, + _t = 37842, + Tt = 37843, + St = 37844, + Ct = 37845, + Lt = 37846, + Rt = 37847, + Pt = 37848, + Dt = 37849, + Ot = 37850, + It = 37851, + Bt = 37852, + Ft = 37853, + kt = 2200, + Nt = 2201, + Ut = 2202, + Ht = 2300, + Gt = 2301, + zt = 2302, + jt = 2400, + Vt = 2401, + Wt = 2402, + qt = 2500, + Xt = 2501, + Yt = 0, + Qt = 1, + Zt = 2, + Kt = 3e3, + Jt = 3001, + $t = 3007, + en = 3002, + tn = 3003, + nn = 3004, + rn = 3005, + on = 3006, + an = 3200, + sn = 3201, + ln = 0, + cn = 1, + un = 0, + hn = 7680, + dn = 7681, + pn = 7682, + fn = 7683, + mn = 34055, + vn = 34056, + gn = 5386, + yn = 512, + bn = 513, + An = 514, + wn = 515, + xn = 516, + En = 517, + Mn = 518, + _n = 519, + Tn = 35044, + Sn = 35048, + Cn = 35040, + Ln = 35045, + Rn = 35049, + Pn = 35041, + Dn = 35046, + On = 35050, + In = 35042, + Bn = '100', + Fn = '300 es' + function kn(e, t, n, r, i, o, a) { + try { + var s = e[o](a), + l = s.value + } catch (c) { + return void n(c) + } + s.done ? t(l) : Promise.resolve(l).then(r, i) + } + function Nn(e) { + return function () { + var t = this, + n = arguments + return new Promise(function (r, i) { + var o = e.apply(t, n) + function a(e) { + kn(o, r, i, a, s, 'next', e) + } + function s(e) { + kn(o, r, i, a, s, 'throw', e) + } + a(void 0) + }) + } + } + function Un(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n] + ;(r.enumerable = r.enumerable || !1), + (r.configurable = !0), + 'value' in r && (r.writable = !0), + Object.defineProperty(e, r.key, r) + } + } + function Hn(e, t, n) { + return t && Un(e.prototype, t), n && Un(e, n), e + } + function Gn(e, t) { + ;(e.prototype = Object.create(t.prototype)), + (e.prototype.constructor = e), + (e.__proto__ = t) + } + function zn(e) { + if (void 0 === e) + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called", + ) + return e + } + function jn(e, t) { + if (e) { + if ('string' === typeof e) return Vn(e, t) + var n = Object.prototype.toString.call(e).slice(8, -1) + return ( + 'Object' === n && e.constructor && (n = e.constructor.name), + 'Map' === n || 'Set' === n + ? Array.from(e) + : 'Arguments' === n || + /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) + ? Vn(e, t) + : void 0 + ) + } + } + function Vn(e, t) { + ;(null == t || t > e.length) && (t = e.length) + for (var n = 0, r = new Array(t); n < t; n++) r[n] = e[n] + return r + } + function Wn(e, t) { + var n + if ('undefined' === typeof Symbol || null == e[Symbol.iterator]) { + if ( + Array.isArray(e) || + (n = jn(e)) || + (t && e && 'number' === typeof e.length) + ) { + n && (e = n) + var r = 0 + return function () { + return r >= e.length ? { done: !0 } : { done: !1, value: e[r++] } + } + } + throw new TypeError( + 'Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.', + ) + } + return (n = e[Symbol.iterator]()).next.bind(n) + } + function qn() {} + Object.assign(qn.prototype, { + addEventListener: function (e, t) { + void 0 === this._listeners && (this._listeners = {}) + var n = this._listeners + void 0 === n[e] && (n[e] = []), -1 === n[e].indexOf(t) && n[e].push(t) + }, + hasEventListener: function (e, t) { + if (void 0 === this._listeners) return !1 + var n = this._listeners + return void 0 !== n[e] && -1 !== n[e].indexOf(t) + }, + removeEventListener: function (e, t) { + if (void 0 !== this._listeners) { + var n = this._listeners[e] + if (void 0 !== n) { + var r = n.indexOf(t) + ;-1 !== r && n.splice(r, 1) + } + } + }, + dispatchEvent: function (e) { + if (void 0 !== this._listeners) { + var t = this._listeners[e.type] + if (void 0 !== t) { + e.target = this + for (var n = t.slice(0), r = 0, i = n.length; r < i; r++) + n[r].call(this, e) + } + } + }, + }) + for (var Xn = [], Yn = 0; Yn < 256; Yn++) + Xn[Yn] = (Yn < 16 ? '0' : '') + Yn.toString(16) + var Qn, + Zn = 1234567, + Kn = { + DEG2RAD: Math.PI / 180, + RAD2DEG: 180 / Math.PI, + generateUUID: function () { + var e = (4294967295 * Math.random()) | 0, + t = (4294967295 * Math.random()) | 0, + n = (4294967295 * Math.random()) | 0, + r = (4294967295 * Math.random()) | 0 + return ( + Xn[255 & e] + + Xn[(e >> 8) & 255] + + Xn[(e >> 16) & 255] + + Xn[(e >> 24) & 255] + + '-' + + Xn[255 & t] + + Xn[(t >> 8) & 255] + + '-' + + Xn[((t >> 16) & 15) | 64] + + Xn[(t >> 24) & 255] + + '-' + + Xn[(63 & n) | 128] + + Xn[(n >> 8) & 255] + + '-' + + Xn[(n >> 16) & 255] + + Xn[(n >> 24) & 255] + + Xn[255 & r] + + Xn[(r >> 8) & 255] + + Xn[(r >> 16) & 255] + + Xn[(r >> 24) & 255] + ).toUpperCase() + }, + clamp: function (e, t, n) { + return Math.max(t, Math.min(n, e)) + }, + euclideanModulo: function (e, t) { + return ((e % t) + t) % t + }, + mapLinear: function (e, t, n, r, i) { + return r + ((e - t) * (i - r)) / (n - t) + }, + lerp: function (e, t, n) { + return (1 - n) * e + n * t + }, + damp: function (e, t, n, r) { + return Kn.lerp(e, t, 1 - Math.exp(-n * r)) + }, + pingpong: function (e, t) { + return ( + void 0 === t && (t = 1), t - Math.abs(Kn.euclideanModulo(e, 2 * t) - t) + ) + }, + smoothstep: function (e, t, n) { + return e <= t ? 0 : e >= n ? 1 : (e = (e - t) / (n - t)) * e * (3 - 2 * e) + }, + smootherstep: function (e, t, n) { + return e <= t + ? 0 + : e >= n + ? 1 + : (e = (e - t) / (n - t)) * e * e * (e * (6 * e - 15) + 10) + }, + randInt: function (e, t) { + return e + Math.floor(Math.random() * (t - e + 1)) + }, + randFloat: function (e, t) { + return e + Math.random() * (t - e) + }, + randFloatSpread: function (e) { + return e * (0.5 - Math.random()) + }, + seededRandom: function (e) { + return ( + void 0 !== e && (Zn = e % 2147483647), + ((Zn = (16807 * Zn) % 2147483647) - 1) / 2147483646 + ) + }, + degToRad: function (e) { + return e * Kn.DEG2RAD + }, + radToDeg: function (e) { + return e * Kn.RAD2DEG + }, + isPowerOfTwo: function (e) { + return 0 === (e & (e - 1)) && 0 !== e + }, + ceilPowerOfTwo: function (e) { + return Math.pow(2, Math.ceil(Math.log(e) / Math.LN2)) + }, + floorPowerOfTwo: function (e) { + return Math.pow(2, Math.floor(Math.log(e) / Math.LN2)) + }, + setQuaternionFromProperEuler: function (e, t, n, r, i) { + var o = Math.cos, + a = Math.sin, + s = o(n / 2), + l = a(n / 2), + c = o((t + r) / 2), + u = a((t + r) / 2), + h = o((t - r) / 2), + d = a((t - r) / 2), + p = o((r - t) / 2), + f = a((r - t) / 2) + switch (i) { + case 'XYX': + e.set(s * u, l * h, l * d, s * c) + break + case 'YZY': + e.set(l * d, s * u, l * h, s * c) + break + case 'ZXZ': + e.set(l * h, l * d, s * u, s * c) + break + case 'XZX': + e.set(s * u, l * f, l * p, s * c) + break + case 'YXY': + e.set(l * p, s * u, l * f, s * c) + break + case 'ZYZ': + e.set(l * f, l * p, s * u, s * c) + break + default: + console.warn( + 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + + i, + ) + } + }, + }, + Jn = (function () { + function e(e, t) { + void 0 === e && (e = 0), + void 0 === t && (t = 0), + Object.defineProperty(this, 'isVector2', { value: !0 }), + (this.x = e), + (this.y = t) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return (this.x = e), (this.y = t), this + }), + (t.setScalar = function (e) { + return (this.x = e), (this.y = e), this + }), + (t.setX = function (e) { + return (this.x = e), this + }), + (t.setY = function (e) { + return (this.y = e), this + }), + (t.setComponent = function (e, t) { + switch (e) { + case 0: + this.x = t + break + case 1: + this.y = t + break + default: + throw new Error('index is out of range: ' + e) + } + return this + }), + (t.getComponent = function (e) { + switch (e) { + case 0: + return this.x + case 1: + return this.y + default: + throw new Error('index is out of range: ' + e) + } + }), + (t.clone = function () { + return new this.constructor(this.x, this.y) + }), + (t.copy = function (e) { + return (this.x = e.x), (this.y = e.y), this + }), + (t.add = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.', + ), + this.addVectors(e, t)) + : ((this.x += e.x), (this.y += e.y), this) + }), + (t.addScalar = function (e) { + return (this.x += e), (this.y += e), this + }), + (t.addVectors = function (e, t) { + return (this.x = e.x + t.x), (this.y = e.y + t.y), this + }), + (t.addScaledVector = function (e, t) { + return (this.x += e.x * t), (this.y += e.y * t), this + }), + (t.sub = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.', + ), + this.subVectors(e, t)) + : ((this.x -= e.x), (this.y -= e.y), this) + }), + (t.subScalar = function (e) { + return (this.x -= e), (this.y -= e), this + }), + (t.subVectors = function (e, t) { + return (this.x = e.x - t.x), (this.y = e.y - t.y), this + }), + (t.multiply = function (e) { + return (this.x *= e.x), (this.y *= e.y), this + }), + (t.multiplyScalar = function (e) { + return (this.x *= e), (this.y *= e), this + }), + (t.divide = function (e) { + return (this.x /= e.x), (this.y /= e.y), this + }), + (t.divideScalar = function (e) { + return this.multiplyScalar(1 / e) + }), + (t.applyMatrix3 = function (e) { + var t = this.x, + n = this.y, + r = e.elements + return ( + (this.x = r[0] * t + r[3] * n + r[6]), + (this.y = r[1] * t + r[4] * n + r[7]), + this + ) + }), + (t.min = function (e) { + return ( + (this.x = Math.min(this.x, e.x)), + (this.y = Math.min(this.y, e.y)), + this + ) + }), + (t.max = function (e) { + return ( + (this.x = Math.max(this.x, e.x)), + (this.y = Math.max(this.y, e.y)), + this + ) + }), + (t.clamp = function (e, t) { + return ( + (this.x = Math.max(e.x, Math.min(t.x, this.x))), + (this.y = Math.max(e.y, Math.min(t.y, this.y))), + this + ) + }), + (t.clampScalar = function (e, t) { + return ( + (this.x = Math.max(e, Math.min(t, this.x))), + (this.y = Math.max(e, Math.min(t, this.y))), + this + ) + }), + (t.clampLength = function (e, t) { + var n = this.length() + return this.divideScalar(n || 1).multiplyScalar( + Math.max(e, Math.min(t, n)), + ) + }), + (t.floor = function () { + return ( + (this.x = Math.floor(this.x)), (this.y = Math.floor(this.y)), this + ) + }), + (t.ceil = function () { + return (this.x = Math.ceil(this.x)), (this.y = Math.ceil(this.y)), this + }), + (t.round = function () { + return ( + (this.x = Math.round(this.x)), (this.y = Math.round(this.y)), this + ) + }), + (t.roundToZero = function () { + return ( + (this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x)), + (this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y)), + this + ) + }), + (t.negate = function () { + return (this.x = -this.x), (this.y = -this.y), this + }), + (t.dot = function (e) { + return this.x * e.x + this.y * e.y + }), + (t.cross = function (e) { + return this.x * e.y - this.y * e.x + }), + (t.lengthSq = function () { + return this.x * this.x + this.y * this.y + }), + (t.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y) + }), + (t.manhattanLength = function () { + return Math.abs(this.x) + Math.abs(this.y) + }), + (t.normalize = function () { + return this.divideScalar(this.length() || 1) + }), + (t.angle = function () { + var e = Math.atan2(-this.y, -this.x) + Math.PI + return e + }), + (t.distanceTo = function (e) { + return Math.sqrt(this.distanceToSquared(e)) + }), + (t.distanceToSquared = function (e) { + var t = this.x - e.x, + n = this.y - e.y + return t * t + n * n + }), + (t.manhattanDistanceTo = function (e) { + return Math.abs(this.x - e.x) + Math.abs(this.y - e.y) + }), + (t.setLength = function (e) { + return this.normalize().multiplyScalar(e) + }), + (t.lerp = function (e, t) { + return ( + (this.x += (e.x - this.x) * t), (this.y += (e.y - this.y) * t), this + ) + }), + (t.lerpVectors = function (e, t, n) { + return ( + (this.x = e.x + (t.x - e.x) * n), + (this.y = e.y + (t.y - e.y) * n), + this + ) + }), + (t.equals = function (e) { + return e.x === this.x && e.y === this.y + }), + (t.fromArray = function (e, t) { + return ( + void 0 === t && (t = 0), (this.x = e[t]), (this.y = e[t + 1]), this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this.x), + (e[t + 1] = this.y), + e + ) + }), + (t.fromBufferAttribute = function (e, t, n) { + return ( + void 0 !== n && + console.warn( + 'THREE.Vector2: offset has been removed from .fromBufferAttribute().', + ), + (this.x = e.getX(t)), + (this.y = e.getY(t)), + this + ) + }), + (t.rotateAround = function (e, t) { + var n = Math.cos(t), + r = Math.sin(t), + i = this.x - e.x, + o = this.y - e.y + return ( + (this.x = i * n - o * r + e.x), (this.y = i * r + o * n + e.y), this + ) + }), + (t.random = function () { + return (this.x = Math.random()), (this.y = Math.random()), this + }), + Hn(e, [ + { + key: 'width', + get: function () { + return this.x + }, + set: function (e) { + this.x = e + }, + }, + { + key: 'height', + get: function () { + return this.y + }, + set: function (e) { + this.y = e + }, + }, + ]), + e + ) + })(), + $n = (function () { + function e() { + Object.defineProperty(this, 'isMatrix3', { value: !0 }), + (this.elements = [1, 0, 0, 0, 1, 0, 0, 0, 1]), + arguments.length > 0 && + console.error( + 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.', + ) + } + var t = e.prototype + return ( + (t.set = function (e, t, n, r, i, o, a, s, l) { + var c = this.elements + return ( + (c[0] = e), + (c[1] = r), + (c[2] = a), + (c[3] = t), + (c[4] = i), + (c[5] = s), + (c[6] = n), + (c[7] = o), + (c[8] = l), + this + ) + }), + (t.identity = function () { + return this.set(1, 0, 0, 0, 1, 0, 0, 0, 1), this + }), + (t.clone = function () { + return new this.constructor().fromArray(this.elements) + }), + (t.copy = function (e) { + var t = this.elements, + n = e.elements + return ( + (t[0] = n[0]), + (t[1] = n[1]), + (t[2] = n[2]), + (t[3] = n[3]), + (t[4] = n[4]), + (t[5] = n[5]), + (t[6] = n[6]), + (t[7] = n[7]), + (t[8] = n[8]), + this + ) + }), + (t.extractBasis = function (e, t, n) { + return ( + e.setFromMatrix3Column(this, 0), + t.setFromMatrix3Column(this, 1), + n.setFromMatrix3Column(this, 2), + this + ) + }), + (t.setFromMatrix4 = function (e) { + var t = e.elements + return ( + this.set(t[0], t[4], t[8], t[1], t[5], t[9], t[2], t[6], t[10]), this + ) + }), + (t.multiply = function (e) { + return this.multiplyMatrices(this, e) + }), + (t.premultiply = function (e) { + return this.multiplyMatrices(e, this) + }), + (t.multiplyMatrices = function (e, t) { + var n = e.elements, + r = t.elements, + i = this.elements, + o = n[0], + a = n[3], + s = n[6], + l = n[1], + c = n[4], + u = n[7], + h = n[2], + d = n[5], + p = n[8], + f = r[0], + m = r[3], + v = r[6], + g = r[1], + y = r[4], + b = r[7], + A = r[2], + w = r[5], + x = r[8] + return ( + (i[0] = o * f + a * g + s * A), + (i[3] = o * m + a * y + s * w), + (i[6] = o * v + a * b + s * x), + (i[1] = l * f + c * g + u * A), + (i[4] = l * m + c * y + u * w), + (i[7] = l * v + c * b + u * x), + (i[2] = h * f + d * g + p * A), + (i[5] = h * m + d * y + p * w), + (i[8] = h * v + d * b + p * x), + this + ) + }), + (t.multiplyScalar = function (e) { + var t = this.elements + return ( + (t[0] *= e), + (t[3] *= e), + (t[6] *= e), + (t[1] *= e), + (t[4] *= e), + (t[7] *= e), + (t[2] *= e), + (t[5] *= e), + (t[8] *= e), + this + ) + }), + (t.determinant = function () { + var e = this.elements, + t = e[0], + n = e[1], + r = e[2], + i = e[3], + o = e[4], + a = e[5], + s = e[6], + l = e[7], + c = e[8] + return ( + t * o * c - t * a * l - n * i * c + n * a * s + r * i * l - r * o * s + ) + }), + (t.invert = function () { + var e = this.elements, + t = e[0], + n = e[1], + r = e[2], + i = e[3], + o = e[4], + a = e[5], + s = e[6], + l = e[7], + c = e[8], + u = c * o - a * l, + h = a * s - c * i, + d = l * i - o * s, + p = t * u + n * h + r * d + if (0 === p) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0) + var f = 1 / p + return ( + (e[0] = u * f), + (e[1] = (r * l - c * n) * f), + (e[2] = (a * n - r * o) * f), + (e[3] = h * f), + (e[4] = (c * t - r * s) * f), + (e[5] = (r * i - a * t) * f), + (e[6] = d * f), + (e[7] = (n * s - l * t) * f), + (e[8] = (o * t - n * i) * f), + this + ) + }), + (t.transpose = function () { + var e, + t = this.elements + return ( + (e = t[1]), + (t[1] = t[3]), + (t[3] = e), + (e = t[2]), + (t[2] = t[6]), + (t[6] = e), + (e = t[5]), + (t[5] = t[7]), + (t[7] = e), + this + ) + }), + (t.getNormalMatrix = function (e) { + return this.setFromMatrix4(e).copy(this).invert().transpose() + }), + (t.transposeIntoArray = function (e) { + var t = this.elements + return ( + (e[0] = t[0]), + (e[1] = t[3]), + (e[2] = t[6]), + (e[3] = t[1]), + (e[4] = t[4]), + (e[5] = t[7]), + (e[6] = t[2]), + (e[7] = t[5]), + (e[8] = t[8]), + this + ) + }), + (t.setUvTransform = function (e, t, n, r, i, o, a) { + var s = Math.cos(i), + l = Math.sin(i) + return ( + this.set( + n * s, + n * l, + -n * (s * o + l * a) + o + e, + -r * l, + r * s, + -r * (-l * o + s * a) + a + t, + 0, + 0, + 1, + ), + this + ) + }), + (t.scale = function (e, t) { + var n = this.elements + return ( + (n[0] *= e), + (n[3] *= e), + (n[6] *= e), + (n[1] *= t), + (n[4] *= t), + (n[7] *= t), + this + ) + }), + (t.rotate = function (e) { + var t = Math.cos(e), + n = Math.sin(e), + r = this.elements, + i = r[0], + o = r[3], + a = r[6], + s = r[1], + l = r[4], + c = r[7] + return ( + (r[0] = t * i + n * s), + (r[3] = t * o + n * l), + (r[6] = t * a + n * c), + (r[1] = -n * i + t * s), + (r[4] = -n * o + t * l), + (r[7] = -n * a + t * c), + this + ) + }), + (t.translate = function (e, t) { + var n = this.elements + return ( + (n[0] += e * n[2]), + (n[3] += e * n[5]), + (n[6] += e * n[8]), + (n[1] += t * n[2]), + (n[4] += t * n[5]), + (n[7] += t * n[8]), + this + ) + }), + (t.equals = function (e) { + for (var t = this.elements, n = e.elements, r = 0; r < 9; r++) + if (t[r] !== n[r]) return !1 + return !0 + }), + (t.fromArray = function (e, t) { + void 0 === t && (t = 0) + for (var n = 0; n < 9; n++) this.elements[n] = e[n + t] + return this + }), + (t.toArray = function (e, t) { + void 0 === e && (e = []), void 0 === t && (t = 0) + var n = this.elements + return ( + (e[t] = n[0]), + (e[t + 1] = n[1]), + (e[t + 2] = n[2]), + (e[t + 3] = n[3]), + (e[t + 4] = n[4]), + (e[t + 5] = n[5]), + (e[t + 6] = n[6]), + (e[t + 7] = n[7]), + (e[t + 8] = n[8]), + e + ) + }), + e + ) + })(), + er = { + getDataURL: function (e) { + if (/^data:/i.test(e.src)) return e.src + if ('undefined' == typeof HTMLCanvasElement) return e.src + var t + if (e instanceof HTMLCanvasElement) t = e + else { + void 0 === Qn && + (Qn = document.createElementNS( + 'http://www.w3.org/1999/xhtml', + 'canvas', + )), + (Qn.width = e.width), + (Qn.height = e.height) + var n = Qn.getContext('2d') + e instanceof ImageData + ? n.putImageData(e, 0, 0) + : n.drawImage(e, 0, 0, e.width, e.height), + (t = Qn) + } + return t.width > 2048 || t.height > 2048 + ? t.toDataURL('image/jpeg', 0.6) + : t.toDataURL('image/png') + }, + }, + tr = 0 + function nr(e, t, n, r, i, o, a, s, l, c) { + void 0 === e && (e = nr.DEFAULT_IMAGE), + void 0 === t && (t = nr.DEFAULT_MAPPING), + void 0 === n && (n = pe), + void 0 === r && (r = pe), + void 0 === i && (i = Ae), + void 0 === o && (o = Ee), + void 0 === a && (a = Ue), + void 0 === s && (s = _e), + void 0 === l && (l = 1), + void 0 === c && (c = Kt), + Object.defineProperty(this, 'id', { value: tr++ }), + (this.uuid = Kn.generateUUID()), + (this.name = ''), + (this.image = e), + (this.mipmaps = []), + (this.mapping = t), + (this.wrapS = n), + (this.wrapT = r), + (this.magFilter = i), + (this.minFilter = o), + (this.anisotropy = l), + (this.format = a), + (this.internalFormat = null), + (this.type = s), + (this.offset = new Jn(0, 0)), + (this.repeat = new Jn(1, 1)), + (this.center = new Jn(0, 0)), + (this.rotation = 0), + (this.matrixAutoUpdate = !0), + (this.matrix = new $n()), + (this.generateMipmaps = !0), + (this.premultiplyAlpha = !1), + (this.flipY = !0), + (this.unpackAlignment = 4), + (this.encoding = c), + (this.version = 0), + (this.onUpdate = null) + } + function rr(e) { + return ('undefined' !== typeof HTMLImageElement && + e instanceof HTMLImageElement) || + ('undefined' !== typeof HTMLCanvasElement && + e instanceof HTMLCanvasElement) || + ('undefined' !== typeof ImageBitmap && e instanceof ImageBitmap) + ? er.getDataURL(e) + : e.data + ? { + data: Array.prototype.slice.call(e.data), + width: e.width, + height: e.height, + type: e.data.constructor.name, + } + : (console.warn('THREE.Texture: Unable to serialize Texture.'), {}) + } + ;(nr.DEFAULT_IMAGE = void 0), + (nr.DEFAULT_MAPPING = oe), + (nr.prototype = Object.assign(Object.create(qn.prototype), { + constructor: nr, + isTexture: !0, + updateMatrix: function () { + this.matrix.setUvTransform( + this.offset.x, + this.offset.y, + this.repeat.x, + this.repeat.y, + this.rotation, + this.center.x, + this.center.y, + ) + }, + clone: function () { + return new this.constructor().copy(this) + }, + copy: function (e) { + return ( + (this.name = e.name), + (this.image = e.image), + (this.mipmaps = e.mipmaps.slice(0)), + (this.mapping = e.mapping), + (this.wrapS = e.wrapS), + (this.wrapT = e.wrapT), + (this.magFilter = e.magFilter), + (this.minFilter = e.minFilter), + (this.anisotropy = e.anisotropy), + (this.format = e.format), + (this.internalFormat = e.internalFormat), + (this.type = e.type), + this.offset.copy(e.offset), + this.repeat.copy(e.repeat), + this.center.copy(e.center), + (this.rotation = e.rotation), + (this.matrixAutoUpdate = e.matrixAutoUpdate), + this.matrix.copy(e.matrix), + (this.generateMipmaps = e.generateMipmaps), + (this.premultiplyAlpha = e.premultiplyAlpha), + (this.flipY = e.flipY), + (this.unpackAlignment = e.unpackAlignment), + (this.encoding = e.encoding), + this + ) + }, + toJSON: function (e) { + var t = void 0 === e || 'string' === typeof e + if (!t && void 0 !== e.textures[this.uuid]) return e.textures[this.uuid] + var n = { + metadata: { + version: 4.5, + type: 'Texture', + generator: 'Texture.toJSON', + }, + uuid: this.uuid, + name: this.name, + mapping: this.mapping, + repeat: [this.repeat.x, this.repeat.y], + offset: [this.offset.x, this.offset.y], + center: [this.center.x, this.center.y], + rotation: this.rotation, + wrap: [this.wrapS, this.wrapT], + format: this.format, + type: this.type, + encoding: this.encoding, + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + flipY: this.flipY, + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment, + } + if (void 0 !== this.image) { + var r = this.image + if ( + (void 0 === r.uuid && (r.uuid = Kn.generateUUID()), + !t && void 0 === e.images[r.uuid]) + ) { + var i + if (Array.isArray(r)) { + i = [] + for (var o = 0, a = r.length; o < a; o++) + r[o].isDataTexture ? i.push(rr(r[o].image)) : i.push(rr(r[o])) + } else i = rr(r) + e.images[r.uuid] = { uuid: r.uuid, url: i } + } + n.image = r.uuid + } + return t || (e.textures[this.uuid] = n), n + }, + dispose: function () { + this.dispatchEvent({ type: 'dispose' }) + }, + transformUv: function (e) { + if (this.mapping !== oe) return e + if ((e.applyMatrix3(this.matrix), e.x < 0 || e.x > 1)) + switch (this.wrapS) { + case de: + e.x = e.x - Math.floor(e.x) + break + case pe: + e.x = e.x < 0 ? 0 : 1 + break + case fe: + 1 === Math.abs(Math.floor(e.x) % 2) + ? (e.x = Math.ceil(e.x) - e.x) + : (e.x = e.x - Math.floor(e.x)) + } + if (e.y < 0 || e.y > 1) + switch (this.wrapT) { + case de: + e.y = e.y - Math.floor(e.y) + break + case pe: + e.y = e.y < 0 ? 0 : 1 + break + case fe: + 1 === Math.abs(Math.floor(e.y) % 2) + ? (e.y = Math.ceil(e.y) - e.y) + : (e.y = e.y - Math.floor(e.y)) + } + return this.flipY && (e.y = 1 - e.y), e + }, + })), + Object.defineProperty(nr.prototype, 'needsUpdate', { + set: function (e) { + !0 === e && this.version++ + }, + }) + var ir = (function () { + function e(e, t, n, r) { + void 0 === e && (e = 0), + void 0 === t && (t = 0), + void 0 === n && (n = 0), + void 0 === r && (r = 1), + Object.defineProperty(this, 'isVector4', { value: !0 }), + (this.x = e), + (this.y = t), + (this.z = n), + (this.w = r) + } + var t = e.prototype + return ( + (t.set = function (e, t, n, r) { + return (this.x = e), (this.y = t), (this.z = n), (this.w = r), this + }), + (t.setScalar = function (e) { + return (this.x = e), (this.y = e), (this.z = e), (this.w = e), this + }), + (t.setX = function (e) { + return (this.x = e), this + }), + (t.setY = function (e) { + return (this.y = e), this + }), + (t.setZ = function (e) { + return (this.z = e), this + }), + (t.setW = function (e) { + return (this.w = e), this + }), + (t.setComponent = function (e, t) { + switch (e) { + case 0: + this.x = t + break + case 1: + this.y = t + break + case 2: + this.z = t + break + case 3: + this.w = t + break + default: + throw new Error('index is out of range: ' + e) + } + return this + }), + (t.getComponent = function (e) { + switch (e) { + case 0: + return this.x + case 1: + return this.y + case 2: + return this.z + case 3: + return this.w + default: + throw new Error('index is out of range: ' + e) + } + }), + (t.clone = function () { + return new this.constructor(this.x, this.y, this.z, this.w) + }), + (t.copy = function (e) { + return ( + (this.x = e.x), + (this.y = e.y), + (this.z = e.z), + (this.w = void 0 !== e.w ? e.w : 1), + this + ) + }), + (t.add = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.', + ), + this.addVectors(e, t)) + : ((this.x += e.x), + (this.y += e.y), + (this.z += e.z), + (this.w += e.w), + this) + }), + (t.addScalar = function (e) { + return (this.x += e), (this.y += e), (this.z += e), (this.w += e), this + }), + (t.addVectors = function (e, t) { + return ( + (this.x = e.x + t.x), + (this.y = e.y + t.y), + (this.z = e.z + t.z), + (this.w = e.w + t.w), + this + ) + }), + (t.addScaledVector = function (e, t) { + return ( + (this.x += e.x * t), + (this.y += e.y * t), + (this.z += e.z * t), + (this.w += e.w * t), + this + ) + }), + (t.sub = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.', + ), + this.subVectors(e, t)) + : ((this.x -= e.x), + (this.y -= e.y), + (this.z -= e.z), + (this.w -= e.w), + this) + }), + (t.subScalar = function (e) { + return (this.x -= e), (this.y -= e), (this.z -= e), (this.w -= e), this + }), + (t.subVectors = function (e, t) { + return ( + (this.x = e.x - t.x), + (this.y = e.y - t.y), + (this.z = e.z - t.z), + (this.w = e.w - t.w), + this + ) + }), + (t.multiply = function (e) { + return ( + (this.x *= e.x), + (this.y *= e.y), + (this.z *= e.z), + (this.w *= e.w), + this + ) + }), + (t.multiplyScalar = function (e) { + return (this.x *= e), (this.y *= e), (this.z *= e), (this.w *= e), this + }), + (t.applyMatrix4 = function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = this.w, + o = e.elements + return ( + (this.x = o[0] * t + o[4] * n + o[8] * r + o[12] * i), + (this.y = o[1] * t + o[5] * n + o[9] * r + o[13] * i), + (this.z = o[2] * t + o[6] * n + o[10] * r + o[14] * i), + (this.w = o[3] * t + o[7] * n + o[11] * r + o[15] * i), + this + ) + }), + (t.divideScalar = function (e) { + return this.multiplyScalar(1 / e) + }), + (t.setAxisAngleFromQuaternion = function (e) { + this.w = 2 * Math.acos(e.w) + var t = Math.sqrt(1 - e.w * e.w) + return ( + t < 1e-4 + ? ((this.x = 1), (this.y = 0), (this.z = 0)) + : ((this.x = e.x / t), (this.y = e.y / t), (this.z = e.z / t)), + this + ) + }), + (t.setAxisAngleFromRotationMatrix = function (e) { + var t, + n, + r, + i, + o = 0.01, + a = 0.1, + s = e.elements, + l = s[0], + c = s[4], + u = s[8], + h = s[1], + d = s[5], + p = s[9], + f = s[2], + m = s[6], + v = s[10] + if (Math.abs(c - h) < o && Math.abs(u - f) < o && Math.abs(p - m) < o) { + if ( + Math.abs(c + h) < a && + Math.abs(u + f) < a && + Math.abs(p + m) < a && + Math.abs(l + d + v - 3) < a + ) + return this.set(1, 0, 0, 0), this + t = Math.PI + var g = (l + 1) / 2, + y = (d + 1) / 2, + b = (v + 1) / 2, + A = (c + h) / 4, + w = (u + f) / 4, + x = (p + m) / 4 + return ( + g > y && g > b + ? g < o + ? ((n = 0), (r = 0.707106781), (i = 0.707106781)) + : ((r = A / (n = Math.sqrt(g))), (i = w / n)) + : y > b + ? y < o + ? ((n = 0.707106781), (r = 0), (i = 0.707106781)) + : ((n = A / (r = Math.sqrt(y))), (i = x / r)) + : b < o + ? ((n = 0.707106781), (r = 0.707106781), (i = 0)) + : ((n = w / (i = Math.sqrt(b))), (r = x / i)), + this.set(n, r, i, t), + this + ) + } + var E = Math.sqrt( + (m - p) * (m - p) + (u - f) * (u - f) + (h - c) * (h - c), + ) + return ( + Math.abs(E) < 0.001 && (E = 1), + (this.x = (m - p) / E), + (this.y = (u - f) / E), + (this.z = (h - c) / E), + (this.w = Math.acos((l + d + v - 1) / 2)), + this + ) + }), + (t.min = function (e) { + return ( + (this.x = Math.min(this.x, e.x)), + (this.y = Math.min(this.y, e.y)), + (this.z = Math.min(this.z, e.z)), + (this.w = Math.min(this.w, e.w)), + this + ) + }), + (t.max = function (e) { + return ( + (this.x = Math.max(this.x, e.x)), + (this.y = Math.max(this.y, e.y)), + (this.z = Math.max(this.z, e.z)), + (this.w = Math.max(this.w, e.w)), + this + ) + }), + (t.clamp = function (e, t) { + return ( + (this.x = Math.max(e.x, Math.min(t.x, this.x))), + (this.y = Math.max(e.y, Math.min(t.y, this.y))), + (this.z = Math.max(e.z, Math.min(t.z, this.z))), + (this.w = Math.max(e.w, Math.min(t.w, this.w))), + this + ) + }), + (t.clampScalar = function (e, t) { + return ( + (this.x = Math.max(e, Math.min(t, this.x))), + (this.y = Math.max(e, Math.min(t, this.y))), + (this.z = Math.max(e, Math.min(t, this.z))), + (this.w = Math.max(e, Math.min(t, this.w))), + this + ) + }), + (t.clampLength = function (e, t) { + var n = this.length() + return this.divideScalar(n || 1).multiplyScalar( + Math.max(e, Math.min(t, n)), + ) + }), + (t.floor = function () { + return ( + (this.x = Math.floor(this.x)), + (this.y = Math.floor(this.y)), + (this.z = Math.floor(this.z)), + (this.w = Math.floor(this.w)), + this + ) + }), + (t.ceil = function () { + return ( + (this.x = Math.ceil(this.x)), + (this.y = Math.ceil(this.y)), + (this.z = Math.ceil(this.z)), + (this.w = Math.ceil(this.w)), + this + ) + }), + (t.round = function () { + return ( + (this.x = Math.round(this.x)), + (this.y = Math.round(this.y)), + (this.z = Math.round(this.z)), + (this.w = Math.round(this.w)), + this + ) + }), + (t.roundToZero = function () { + return ( + (this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x)), + (this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y)), + (this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z)), + (this.w = this.w < 0 ? Math.ceil(this.w) : Math.floor(this.w)), + this + ) + }), + (t.negate = function () { + return ( + (this.x = -this.x), + (this.y = -this.y), + (this.z = -this.z), + (this.w = -this.w), + this + ) + }), + (t.dot = function (e) { + return this.x * e.x + this.y * e.y + this.z * e.z + this.w * e.w + }), + (t.lengthSq = function () { + return ( + this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w + ) + }), + (t.length = function () { + return Math.sqrt( + this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w, + ) + }), + (t.manhattanLength = function () { + return ( + Math.abs(this.x) + + Math.abs(this.y) + + Math.abs(this.z) + + Math.abs(this.w) + ) + }), + (t.normalize = function () { + return this.divideScalar(this.length() || 1) + }), + (t.setLength = function (e) { + return this.normalize().multiplyScalar(e) + }), + (t.lerp = function (e, t) { + return ( + (this.x += (e.x - this.x) * t), + (this.y += (e.y - this.y) * t), + (this.z += (e.z - this.z) * t), + (this.w += (e.w - this.w) * t), + this + ) + }), + (t.lerpVectors = function (e, t, n) { + return ( + (this.x = e.x + (t.x - e.x) * n), + (this.y = e.y + (t.y - e.y) * n), + (this.z = e.z + (t.z - e.z) * n), + (this.w = e.w + (t.w - e.w) * n), + this + ) + }), + (t.equals = function (e) { + return ( + e.x === this.x && e.y === this.y && e.z === this.z && e.w === this.w + ) + }), + (t.fromArray = function (e, t) { + return ( + void 0 === t && (t = 0), + (this.x = e[t]), + (this.y = e[t + 1]), + (this.z = e[t + 2]), + (this.w = e[t + 3]), + this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this.x), + (e[t + 1] = this.y), + (e[t + 2] = this.z), + (e[t + 3] = this.w), + e + ) + }), + (t.fromBufferAttribute = function (e, t, n) { + return ( + void 0 !== n && + console.warn( + 'THREE.Vector4: offset has been removed from .fromBufferAttribute().', + ), + (this.x = e.getX(t)), + (this.y = e.getY(t)), + (this.z = e.getZ(t)), + (this.w = e.getW(t)), + this + ) + }), + (t.random = function () { + return ( + (this.x = Math.random()), + (this.y = Math.random()), + (this.z = Math.random()), + (this.w = Math.random()), + this + ) + }), + Hn(e, [ + { + key: 'width', + get: function () { + return this.z + }, + set: function (e) { + this.z = e + }, + }, + { + key: 'height', + get: function () { + return this.w + }, + set: function (e) { + this.w = e + }, + }, + ]), + e + ) + })(), + or = (function (e) { + function t(t, n, r) { + var i + return ( + (i = e.call(this) || this), + Object.defineProperty(zn(i), 'isWebGLRenderTarget', { value: !0 }), + (i.width = t), + (i.height = n), + (i.scissor = new ir(0, 0, t, n)), + (i.scissorTest = !1), + (i.viewport = new ir(0, 0, t, n)), + (r = r || {}), + (i.texture = new nr( + void 0, + r.mapping, + r.wrapS, + r.wrapT, + r.magFilter, + r.minFilter, + r.format, + r.type, + r.anisotropy, + r.encoding, + )), + (i.texture.image = {}), + (i.texture.image.width = t), + (i.texture.image.height = n), + (i.texture.generateMipmaps = + void 0 !== r.generateMipmaps && r.generateMipmaps), + (i.texture.minFilter = void 0 !== r.minFilter ? r.minFilter : Ae), + (i.depthBuffer = void 0 === r.depthBuffer || r.depthBuffer), + (i.stencilBuffer = void 0 !== r.stencilBuffer && r.stencilBuffer), + (i.depthTexture = void 0 !== r.depthTexture ? r.depthTexture : null), + i + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.setSize = function (e, t) { + ;(this.width === e && this.height === t) || + ((this.width = e), + (this.height = t), + (this.texture.image.width = e), + (this.texture.image.height = t), + this.dispose()), + this.viewport.set(0, 0, e, t), + this.scissor.set(0, 0, e, t) + }), + (n.clone = function () { + return new this.constructor().copy(this) + }), + (n.copy = function (e) { + return ( + (this.width = e.width), + (this.height = e.height), + this.viewport.copy(e.viewport), + (this.texture = e.texture.clone()), + (this.depthBuffer = e.depthBuffer), + (this.stencilBuffer = e.stencilBuffer), + (this.depthTexture = e.depthTexture), + this + ) + }), + (n.dispose = function () { + this.dispatchEvent({ type: 'dispose' }) + }), + t + ) + })(qn), + ar = (function (e) { + function t(t, n, r) { + var i + return ( + (i = e.call(this, t, n, r) || this), + Object.defineProperty(zn(i), 'isWebGLMultisampleRenderTarget', { + value: !0, + }), + (i.samples = 4), + i + ) + } + return ( + Gn(t, e), + (t.prototype.copy = function (t) { + return e.prototype.copy.call(this, t), (this.samples = t.samples), this + }), + t + ) + })(or), + sr = (function () { + function e(e, t, n, r) { + void 0 === e && (e = 0), + void 0 === t && (t = 0), + void 0 === n && (n = 0), + void 0 === r && (r = 1), + Object.defineProperty(this, 'isQuaternion', { value: !0 }), + (this._x = e), + (this._y = t), + (this._z = n), + (this._w = r) + } + ;(e.slerp = function (e, t, n, r) { + return n.copy(e).slerp(t, r) + }), + (e.slerpFlat = function (e, t, n, r, i, o, a) { + var s = n[r + 0], + l = n[r + 1], + c = n[r + 2], + u = n[r + 3], + h = i[o + 0], + d = i[o + 1], + p = i[o + 2], + f = i[o + 3] + if (u !== f || s !== h || l !== d || c !== p) { + var m = 1 - a, + v = s * h + l * d + c * p + u * f, + g = v >= 0 ? 1 : -1, + y = 1 - v * v + if (y > Number.EPSILON) { + var b = Math.sqrt(y), + A = Math.atan2(b, v * g) + ;(m = Math.sin(m * A) / b), (a = Math.sin(a * A) / b) + } + var w = a * g + if ( + ((s = s * m + h * w), + (l = l * m + d * w), + (c = c * m + p * w), + (u = u * m + f * w), + m === 1 - a) + ) { + var x = 1 / Math.sqrt(s * s + l * l + c * c + u * u) + ;(s *= x), (l *= x), (c *= x), (u *= x) + } + } + ;(e[t] = s), (e[t + 1] = l), (e[t + 2] = c), (e[t + 3] = u) + }), + (e.multiplyQuaternionsFlat = function (e, t, n, r, i, o) { + var a = n[r], + s = n[r + 1], + l = n[r + 2], + c = n[r + 3], + u = i[o], + h = i[o + 1], + d = i[o + 2], + p = i[o + 3] + return ( + (e[t] = a * p + c * u + s * d - l * h), + (e[t + 1] = s * p + c * h + l * u - a * d), + (e[t + 2] = l * p + c * d + a * h - s * u), + (e[t + 3] = c * p - a * u - s * h - l * d), + e + ) + }) + var t = e.prototype + return ( + (t.set = function (e, t, n, r) { + return ( + (this._x = e), + (this._y = t), + (this._z = n), + (this._w = r), + this._onChangeCallback(), + this + ) + }), + (t.clone = function () { + return new this.constructor(this._x, this._y, this._z, this._w) + }), + (t.copy = function (e) { + return ( + (this._x = e.x), + (this._y = e.y), + (this._z = e.z), + (this._w = e.w), + this._onChangeCallback(), + this + ) + }), + (t.setFromEuler = function (e, t) { + if (!e || !e.isEuler) + throw new Error( + 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.', + ) + var n = e._x, + r = e._y, + i = e._z, + o = e._order, + a = Math.cos, + s = Math.sin, + l = a(n / 2), + c = a(r / 2), + u = a(i / 2), + h = s(n / 2), + d = s(r / 2), + p = s(i / 2) + switch (o) { + case 'XYZ': + ;(this._x = h * c * u + l * d * p), + (this._y = l * d * u - h * c * p), + (this._z = l * c * p + h * d * u), + (this._w = l * c * u - h * d * p) + break + case 'YXZ': + ;(this._x = h * c * u + l * d * p), + (this._y = l * d * u - h * c * p), + (this._z = l * c * p - h * d * u), + (this._w = l * c * u + h * d * p) + break + case 'ZXY': + ;(this._x = h * c * u - l * d * p), + (this._y = l * d * u + h * c * p), + (this._z = l * c * p + h * d * u), + (this._w = l * c * u - h * d * p) + break + case 'ZYX': + ;(this._x = h * c * u - l * d * p), + (this._y = l * d * u + h * c * p), + (this._z = l * c * p - h * d * u), + (this._w = l * c * u + h * d * p) + break + case 'YZX': + ;(this._x = h * c * u + l * d * p), + (this._y = l * d * u + h * c * p), + (this._z = l * c * p - h * d * u), + (this._w = l * c * u - h * d * p) + break + case 'XZY': + ;(this._x = h * c * u - l * d * p), + (this._y = l * d * u - h * c * p), + (this._z = l * c * p + h * d * u), + (this._w = l * c * u + h * d * p) + break + default: + console.warn( + 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + + o, + ) + } + return !1 !== t && this._onChangeCallback(), this + }), + (t.setFromAxisAngle = function (e, t) { + var n = t / 2, + r = Math.sin(n) + return ( + (this._x = e.x * r), + (this._y = e.y * r), + (this._z = e.z * r), + (this._w = Math.cos(n)), + this._onChangeCallback(), + this + ) + }), + (t.setFromRotationMatrix = function (e) { + var t = e.elements, + n = t[0], + r = t[4], + i = t[8], + o = t[1], + a = t[5], + s = t[9], + l = t[2], + c = t[6], + u = t[10], + h = n + a + u + if (h > 0) { + var d = 0.5 / Math.sqrt(h + 1) + ;(this._w = 0.25 / d), + (this._x = (c - s) * d), + (this._y = (i - l) * d), + (this._z = (o - r) * d) + } else if (n > a && n > u) { + var p = 2 * Math.sqrt(1 + n - a - u) + ;(this._w = (c - s) / p), + (this._x = 0.25 * p), + (this._y = (r + o) / p), + (this._z = (i + l) / p) + } else if (a > u) { + var f = 2 * Math.sqrt(1 + a - n - u) + ;(this._w = (i - l) / f), + (this._x = (r + o) / f), + (this._y = 0.25 * f), + (this._z = (s + c) / f) + } else { + var m = 2 * Math.sqrt(1 + u - n - a) + ;(this._w = (o - r) / m), + (this._x = (i + l) / m), + (this._y = (s + c) / m), + (this._z = 0.25 * m) + } + return this._onChangeCallback(), this + }), + (t.setFromUnitVectors = function (e, t) { + var n = 1e-6, + r = e.dot(t) + 1 + return ( + r < n + ? ((r = 0), + Math.abs(e.x) > Math.abs(e.z) + ? ((this._x = -e.y), + (this._y = e.x), + (this._z = 0), + (this._w = r)) + : ((this._x = 0), + (this._y = -e.z), + (this._z = e.y), + (this._w = r))) + : ((this._x = e.y * t.z - e.z * t.y), + (this._y = e.z * t.x - e.x * t.z), + (this._z = e.x * t.y - e.y * t.x), + (this._w = r)), + this.normalize() + ) + }), + (t.angleTo = function (e) { + return 2 * Math.acos(Math.abs(Kn.clamp(this.dot(e), -1, 1))) + }), + (t.rotateTowards = function (e, t) { + var n = this.angleTo(e) + if (0 === n) return this + var r = Math.min(1, t / n) + return this.slerp(e, r), this + }), + (t.identity = function () { + return this.set(0, 0, 0, 1) + }), + (t.invert = function () { + return this.conjugate() + }), + (t.conjugate = function () { + return ( + (this._x *= -1), + (this._y *= -1), + (this._z *= -1), + this._onChangeCallback(), + this + ) + }), + (t.dot = function (e) { + return this._x * e._x + this._y * e._y + this._z * e._z + this._w * e._w + }), + (t.lengthSq = function () { + return ( + this._x * this._x + + this._y * this._y + + this._z * this._z + + this._w * this._w + ) + }), + (t.length = function () { + return Math.sqrt( + this._x * this._x + + this._y * this._y + + this._z * this._z + + this._w * this._w, + ) + }), + (t.normalize = function () { + var e = this.length() + return ( + 0 === e + ? ((this._x = 0), (this._y = 0), (this._z = 0), (this._w = 1)) + : ((e = 1 / e), + (this._x = this._x * e), + (this._y = this._y * e), + (this._z = this._z * e), + (this._w = this._w * e)), + this._onChangeCallback(), + this + ) + }), + (t.multiply = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.', + ), + this.multiplyQuaternions(e, t)) + : this.multiplyQuaternions(this, e) + }), + (t.premultiply = function (e) { + return this.multiplyQuaternions(e, this) + }), + (t.multiplyQuaternions = function (e, t) { + var n = e._x, + r = e._y, + i = e._z, + o = e._w, + a = t._x, + s = t._y, + l = t._z, + c = t._w + return ( + (this._x = n * c + o * a + r * l - i * s), + (this._y = r * c + o * s + i * a - n * l), + (this._z = i * c + o * l + n * s - r * a), + (this._w = o * c - n * a - r * s - i * l), + this._onChangeCallback(), + this + ) + }), + (t.slerp = function (e, t) { + if (0 === t) return this + if (1 === t) return this.copy(e) + var n = this._x, + r = this._y, + i = this._z, + o = this._w, + a = o * e._w + n * e._x + r * e._y + i * e._z + if ( + (a < 0 + ? ((this._w = -e._w), + (this._x = -e._x), + (this._y = -e._y), + (this._z = -e._z), + (a = -a)) + : this.copy(e), + a >= 1) + ) + return ( + (this._w = o), (this._x = n), (this._y = r), (this._z = i), this + ) + var s = 1 - a * a + if (s <= Number.EPSILON) { + var l = 1 - t + return ( + (this._w = l * o + t * this._w), + (this._x = l * n + t * this._x), + (this._y = l * r + t * this._y), + (this._z = l * i + t * this._z), + this.normalize(), + this._onChangeCallback(), + this + ) + } + var c = Math.sqrt(s), + u = Math.atan2(c, a), + h = Math.sin((1 - t) * u) / c, + d = Math.sin(t * u) / c + return ( + (this._w = o * h + this._w * d), + (this._x = n * h + this._x * d), + (this._y = r * h + this._y * d), + (this._z = i * h + this._z * d), + this._onChangeCallback(), + this + ) + }), + (t.equals = function (e) { + return ( + e._x === this._x && + e._y === this._y && + e._z === this._z && + e._w === this._w + ) + }), + (t.fromArray = function (e, t) { + return ( + void 0 === t && (t = 0), + (this._x = e[t]), + (this._y = e[t + 1]), + (this._z = e[t + 2]), + (this._w = e[t + 3]), + this._onChangeCallback(), + this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this._x), + (e[t + 1] = this._y), + (e[t + 2] = this._z), + (e[t + 3] = this._w), + e + ) + }), + (t.fromBufferAttribute = function (e, t) { + return ( + (this._x = e.getX(t)), + (this._y = e.getY(t)), + (this._z = e.getZ(t)), + (this._w = e.getW(t)), + this + ) + }), + (t._onChange = function (e) { + return (this._onChangeCallback = e), this + }), + (t._onChangeCallback = function () {}), + Hn(e, [ + { + key: 'x', + get: function () { + return this._x + }, + set: function (e) { + ;(this._x = e), this._onChangeCallback() + }, + }, + { + key: 'y', + get: function () { + return this._y + }, + set: function (e) { + ;(this._y = e), this._onChangeCallback() + }, + }, + { + key: 'z', + get: function () { + return this._z + }, + set: function (e) { + ;(this._z = e), this._onChangeCallback() + }, + }, + { + key: 'w', + get: function () { + return this._w + }, + set: function (e) { + ;(this._w = e), this._onChangeCallback() + }, + }, + ]), + e + ) + })(), + lr = (function () { + function e(e, t, n) { + void 0 === e && (e = 0), + void 0 === t && (t = 0), + void 0 === n && (n = 0), + Object.defineProperty(this, 'isVector3', { value: !0 }), + (this.x = e), + (this.y = t), + (this.z = n) + } + var t = e.prototype + return ( + (t.set = function (e, t, n) { + return ( + void 0 === n && (n = this.z), + (this.x = e), + (this.y = t), + (this.z = n), + this + ) + }), + (t.setScalar = function (e) { + return (this.x = e), (this.y = e), (this.z = e), this + }), + (t.setX = function (e) { + return (this.x = e), this + }), + (t.setY = function (e) { + return (this.y = e), this + }), + (t.setZ = function (e) { + return (this.z = e), this + }), + (t.setComponent = function (e, t) { + switch (e) { + case 0: + this.x = t + break + case 1: + this.y = t + break + case 2: + this.z = t + break + default: + throw new Error('index is out of range: ' + e) + } + return this + }), + (t.getComponent = function (e) { + switch (e) { + case 0: + return this.x + case 1: + return this.y + case 2: + return this.z + default: + throw new Error('index is out of range: ' + e) + } + }), + (t.clone = function () { + return new this.constructor(this.x, this.y, this.z) + }), + (t.copy = function (e) { + return (this.x = e.x), (this.y = e.y), (this.z = e.z), this + }), + (t.add = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.', + ), + this.addVectors(e, t)) + : ((this.x += e.x), (this.y += e.y), (this.z += e.z), this) + }), + (t.addScalar = function (e) { + return (this.x += e), (this.y += e), (this.z += e), this + }), + (t.addVectors = function (e, t) { + return ( + (this.x = e.x + t.x), (this.y = e.y + t.y), (this.z = e.z + t.z), this + ) + }), + (t.addScaledVector = function (e, t) { + return ( + (this.x += e.x * t), (this.y += e.y * t), (this.z += e.z * t), this + ) + }), + (t.sub = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.', + ), + this.subVectors(e, t)) + : ((this.x -= e.x), (this.y -= e.y), (this.z -= e.z), this) + }), + (t.subScalar = function (e) { + return (this.x -= e), (this.y -= e), (this.z -= e), this + }), + (t.subVectors = function (e, t) { + return ( + (this.x = e.x - t.x), (this.y = e.y - t.y), (this.z = e.z - t.z), this + ) + }), + (t.multiply = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.', + ), + this.multiplyVectors(e, t)) + : ((this.x *= e.x), (this.y *= e.y), (this.z *= e.z), this) + }), + (t.multiplyScalar = function (e) { + return (this.x *= e), (this.y *= e), (this.z *= e), this + }), + (t.multiplyVectors = function (e, t) { + return ( + (this.x = e.x * t.x), (this.y = e.y * t.y), (this.z = e.z * t.z), this + ) + }), + (t.applyEuler = function (e) { + return ( + (e && e.isEuler) || + console.error( + 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.', + ), + this.applyQuaternion(ur.setFromEuler(e)) + ) + }), + (t.applyAxisAngle = function (e, t) { + return this.applyQuaternion(ur.setFromAxisAngle(e, t)) + }), + (t.applyMatrix3 = function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = e.elements + return ( + (this.x = i[0] * t + i[3] * n + i[6] * r), + (this.y = i[1] * t + i[4] * n + i[7] * r), + (this.z = i[2] * t + i[5] * n + i[8] * r), + this + ) + }), + (t.applyNormalMatrix = function (e) { + return this.applyMatrix3(e).normalize() + }), + (t.applyMatrix4 = function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = e.elements, + o = 1 / (i[3] * t + i[7] * n + i[11] * r + i[15]) + return ( + (this.x = (i[0] * t + i[4] * n + i[8] * r + i[12]) * o), + (this.y = (i[1] * t + i[5] * n + i[9] * r + i[13]) * o), + (this.z = (i[2] * t + i[6] * n + i[10] * r + i[14]) * o), + this + ) + }), + (t.applyQuaternion = function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = e.x, + o = e.y, + a = e.z, + s = e.w, + l = s * t + o * r - a * n, + c = s * n + a * t - i * r, + u = s * r + i * n - o * t, + h = -i * t - o * n - a * r + return ( + (this.x = l * s + h * -i + c * -a - u * -o), + (this.y = c * s + h * -o + u * -i - l * -a), + (this.z = u * s + h * -a + l * -o - c * -i), + this + ) + }), + (t.project = function (e) { + return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4( + e.projectionMatrix, + ) + }), + (t.unproject = function (e) { + return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4( + e.matrixWorld, + ) + }), + (t.transformDirection = function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = e.elements + return ( + (this.x = i[0] * t + i[4] * n + i[8] * r), + (this.y = i[1] * t + i[5] * n + i[9] * r), + (this.z = i[2] * t + i[6] * n + i[10] * r), + this.normalize() + ) + }), + (t.divide = function (e) { + return (this.x /= e.x), (this.y /= e.y), (this.z /= e.z), this + }), + (t.divideScalar = function (e) { + return this.multiplyScalar(1 / e) + }), + (t.min = function (e) { + return ( + (this.x = Math.min(this.x, e.x)), + (this.y = Math.min(this.y, e.y)), + (this.z = Math.min(this.z, e.z)), + this + ) + }), + (t.max = function (e) { + return ( + (this.x = Math.max(this.x, e.x)), + (this.y = Math.max(this.y, e.y)), + (this.z = Math.max(this.z, e.z)), + this + ) + }), + (t.clamp = function (e, t) { + return ( + (this.x = Math.max(e.x, Math.min(t.x, this.x))), + (this.y = Math.max(e.y, Math.min(t.y, this.y))), + (this.z = Math.max(e.z, Math.min(t.z, this.z))), + this + ) + }), + (t.clampScalar = function (e, t) { + return ( + (this.x = Math.max(e, Math.min(t, this.x))), + (this.y = Math.max(e, Math.min(t, this.y))), + (this.z = Math.max(e, Math.min(t, this.z))), + this + ) + }), + (t.clampLength = function (e, t) { + var n = this.length() + return this.divideScalar(n || 1).multiplyScalar( + Math.max(e, Math.min(t, n)), + ) + }), + (t.floor = function () { + return ( + (this.x = Math.floor(this.x)), + (this.y = Math.floor(this.y)), + (this.z = Math.floor(this.z)), + this + ) + }), + (t.ceil = function () { + return ( + (this.x = Math.ceil(this.x)), + (this.y = Math.ceil(this.y)), + (this.z = Math.ceil(this.z)), + this + ) + }), + (t.round = function () { + return ( + (this.x = Math.round(this.x)), + (this.y = Math.round(this.y)), + (this.z = Math.round(this.z)), + this + ) + }), + (t.roundToZero = function () { + return ( + (this.x = this.x < 0 ? Math.ceil(this.x) : Math.floor(this.x)), + (this.y = this.y < 0 ? Math.ceil(this.y) : Math.floor(this.y)), + (this.z = this.z < 0 ? Math.ceil(this.z) : Math.floor(this.z)), + this + ) + }), + (t.negate = function () { + return (this.x = -this.x), (this.y = -this.y), (this.z = -this.z), this + }), + (t.dot = function (e) { + return this.x * e.x + this.y * e.y + this.z * e.z + }), + (t.lengthSq = function () { + return this.x * this.x + this.y * this.y + this.z * this.z + }), + (t.length = function () { + return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z) + }), + (t.manhattanLength = function () { + return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + }), + (t.normalize = function () { + return this.divideScalar(this.length() || 1) + }), + (t.setLength = function (e) { + return this.normalize().multiplyScalar(e) + }), + (t.lerp = function (e, t) { + return ( + (this.x += (e.x - this.x) * t), + (this.y += (e.y - this.y) * t), + (this.z += (e.z - this.z) * t), + this + ) + }), + (t.lerpVectors = function (e, t, n) { + return ( + (this.x = e.x + (t.x - e.x) * n), + (this.y = e.y + (t.y - e.y) * n), + (this.z = e.z + (t.z - e.z) * n), + this + ) + }), + (t.cross = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.', + ), + this.crossVectors(e, t)) + : this.crossVectors(this, e) + }), + (t.crossVectors = function (e, t) { + var n = e.x, + r = e.y, + i = e.z, + o = t.x, + a = t.y, + s = t.z + return ( + (this.x = r * s - i * a), + (this.y = i * o - n * s), + (this.z = n * a - r * o), + this + ) + }), + (t.projectOnVector = function (e) { + var t = e.lengthSq() + if (0 === t) return this.set(0, 0, 0) + var n = e.dot(this) / t + return this.copy(e).multiplyScalar(n) + }), + (t.projectOnPlane = function (e) { + return cr.copy(this).projectOnVector(e), this.sub(cr) + }), + (t.reflect = function (e) { + return this.sub(cr.copy(e).multiplyScalar(2 * this.dot(e))) + }), + (t.angleTo = function (e) { + var t = Math.sqrt(this.lengthSq() * e.lengthSq()) + if (0 === t) return Math.PI / 2 + var n = this.dot(e) / t + return Math.acos(Kn.clamp(n, -1, 1)) + }), + (t.distanceTo = function (e) { + return Math.sqrt(this.distanceToSquared(e)) + }), + (t.distanceToSquared = function (e) { + var t = this.x - e.x, + n = this.y - e.y, + r = this.z - e.z + return t * t + n * n + r * r + }), + (t.manhattanDistanceTo = function (e) { + return ( + Math.abs(this.x - e.x) + + Math.abs(this.y - e.y) + + Math.abs(this.z - e.z) + ) + }), + (t.setFromSpherical = function (e) { + return this.setFromSphericalCoords(e.radius, e.phi, e.theta) + }), + (t.setFromSphericalCoords = function (e, t, n) { + var r = Math.sin(t) * e + return ( + (this.x = r * Math.sin(n)), + (this.y = Math.cos(t) * e), + (this.z = r * Math.cos(n)), + this + ) + }), + (t.setFromCylindrical = function (e) { + return this.setFromCylindricalCoords(e.radius, e.theta, e.y) + }), + (t.setFromCylindricalCoords = function (e, t, n) { + return ( + (this.x = e * Math.sin(t)), + (this.y = n), + (this.z = e * Math.cos(t)), + this + ) + }), + (t.setFromMatrixPosition = function (e) { + var t = e.elements + return (this.x = t[12]), (this.y = t[13]), (this.z = t[14]), this + }), + (t.setFromMatrixScale = function (e) { + var t = this.setFromMatrixColumn(e, 0).length(), + n = this.setFromMatrixColumn(e, 1).length(), + r = this.setFromMatrixColumn(e, 2).length() + return (this.x = t), (this.y = n), (this.z = r), this + }), + (t.setFromMatrixColumn = function (e, t) { + return this.fromArray(e.elements, 4 * t) + }), + (t.setFromMatrix3Column = function (e, t) { + return this.fromArray(e.elements, 3 * t) + }), + (t.equals = function (e) { + return e.x === this.x && e.y === this.y && e.z === this.z + }), + (t.fromArray = function (e, t) { + return ( + void 0 === t && (t = 0), + (this.x = e[t]), + (this.y = e[t + 1]), + (this.z = e[t + 2]), + this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this.x), + (e[t + 1] = this.y), + (e[t + 2] = this.z), + e + ) + }), + (t.fromBufferAttribute = function (e, t, n) { + return ( + void 0 !== n && + console.warn( + 'THREE.Vector3: offset has been removed from .fromBufferAttribute().', + ), + (this.x = e.getX(t)), + (this.y = e.getY(t)), + (this.z = e.getZ(t)), + this + ) + }), + (t.random = function () { + return ( + (this.x = Math.random()), + (this.y = Math.random()), + (this.z = Math.random()), + this + ) + }), + e + ) + })(), + cr = new lr(), + ur = new sr(), + hr = (function () { + function e(e, t) { + Object.defineProperty(this, 'isBox3', { value: !0 }), + (this.min = void 0 !== e ? e : new lr(1 / 0, 1 / 0, 1 / 0)), + (this.max = void 0 !== t ? t : new lr(-1 / 0, -1 / 0, -1 / 0)) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.min.copy(e), this.max.copy(t), this + }), + (t.setFromArray = function (e) { + for ( + var t = 1 / 0, + n = 1 / 0, + r = 1 / 0, + i = -1 / 0, + o = -1 / 0, + a = -1 / 0, + s = 0, + l = e.length; + s < l; + s += 3 + ) { + var c = e[s], + u = e[s + 1], + h = e[s + 2] + c < t && (t = c), + u < n && (n = u), + h < r && (r = h), + c > i && (i = c), + u > o && (o = u), + h > a && (a = h) + } + return this.min.set(t, n, r), this.max.set(i, o, a), this + }), + (t.setFromBufferAttribute = function (e) { + for ( + var t = 1 / 0, + n = 1 / 0, + r = 1 / 0, + i = -1 / 0, + o = -1 / 0, + a = -1 / 0, + s = 0, + l = e.count; + s < l; + s++ + ) { + var c = e.getX(s), + u = e.getY(s), + h = e.getZ(s) + c < t && (t = c), + u < n && (n = u), + h < r && (r = h), + c > i && (i = c), + u > o && (o = u), + h > a && (a = h) + } + return this.min.set(t, n, r), this.max.set(i, o, a), this + }), + (t.setFromPoints = function (e) { + this.makeEmpty() + for (var t = 0, n = e.length; t < n; t++) this.expandByPoint(e[t]) + return this + }), + (t.setFromCenterAndSize = function (e, t) { + var n = fr.copy(t).multiplyScalar(0.5) + return this.min.copy(e).sub(n), this.max.copy(e).add(n), this + }), + (t.setFromObject = function (e) { + return this.makeEmpty(), this.expandByObject(e) + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.min.copy(e.min), this.max.copy(e.max), this + }), + (t.makeEmpty = function () { + return ( + (this.min.x = this.min.y = this.min.z = 1 / 0), + (this.max.x = this.max.y = this.max.z = -1 / 0), + this + ) + }), + (t.isEmpty = function () { + return ( + this.max.x < this.min.x || + this.max.y < this.min.y || + this.max.z < this.min.z + ) + }), + (t.getCenter = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Box3: .getCenter() target is now required'), + (e = new lr())), + this.isEmpty() + ? e.set(0, 0, 0) + : e.addVectors(this.min, this.max).multiplyScalar(0.5) + ) + }), + (t.getSize = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Box3: .getSize() target is now required'), + (e = new lr())), + this.isEmpty() ? e.set(0, 0, 0) : e.subVectors(this.max, this.min) + ) + }), + (t.expandByPoint = function (e) { + return this.min.min(e), this.max.max(e), this + }), + (t.expandByVector = function (e) { + return this.min.sub(e), this.max.add(e), this + }), + (t.expandByScalar = function (e) { + return this.min.addScalar(-e), this.max.addScalar(e), this + }), + (t.expandByObject = function (e) { + e.updateWorldMatrix(!1, !1) + var t = e.geometry + void 0 !== t && + (null === t.boundingBox && t.computeBoundingBox(), + mr.copy(t.boundingBox), + mr.applyMatrix4(e.matrixWorld), + this.union(mr)) + for (var n = e.children, r = 0, i = n.length; r < i; r++) + this.expandByObject(n[r]) + return this + }), + (t.containsPoint = function (e) { + return !( + e.x < this.min.x || + e.x > this.max.x || + e.y < this.min.y || + e.y > this.max.y || + e.z < this.min.z || + e.z > this.max.z + ) + }), + (t.containsBox = function (e) { + return ( + this.min.x <= e.min.x && + e.max.x <= this.max.x && + this.min.y <= e.min.y && + e.max.y <= this.max.y && + this.min.z <= e.min.z && + e.max.z <= this.max.z + ) + }), + (t.getParameter = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Box3: .getParameter() target is now required'), + (t = new lr())), + t.set( + (e.x - this.min.x) / (this.max.x - this.min.x), + (e.y - this.min.y) / (this.max.y - this.min.y), + (e.z - this.min.z) / (this.max.z - this.min.z), + ) + ) + }), + (t.intersectsBox = function (e) { + return !( + e.max.x < this.min.x || + e.min.x > this.max.x || + e.max.y < this.min.y || + e.min.y > this.max.y || + e.max.z < this.min.z || + e.min.z > this.max.z + ) + }), + (t.intersectsSphere = function (e) { + return ( + this.clampPoint(e.center, fr), + fr.distanceToSquared(e.center) <= e.radius * e.radius + ) + }), + (t.intersectsPlane = function (e) { + var t, n + return ( + e.normal.x > 0 + ? ((t = e.normal.x * this.min.x), (n = e.normal.x * this.max.x)) + : ((t = e.normal.x * this.max.x), (n = e.normal.x * this.min.x)), + e.normal.y > 0 + ? ((t += e.normal.y * this.min.y), (n += e.normal.y * this.max.y)) + : ((t += e.normal.y * this.max.y), (n += e.normal.y * this.min.y)), + e.normal.z > 0 + ? ((t += e.normal.z * this.min.z), (n += e.normal.z * this.max.z)) + : ((t += e.normal.z * this.max.z), (n += e.normal.z * this.min.z)), + t <= -e.constant && n >= -e.constant + ) + }), + (t.intersectsTriangle = function (e) { + if (this.isEmpty()) return !1 + this.getCenter(xr), + Er.subVectors(this.max, xr), + vr.subVectors(e.a, xr), + gr.subVectors(e.b, xr), + yr.subVectors(e.c, xr), + br.subVectors(gr, vr), + Ar.subVectors(yr, gr), + wr.subVectors(vr, yr) + var t = [ + 0, + -br.z, + br.y, + 0, + -Ar.z, + Ar.y, + 0, + -wr.z, + wr.y, + br.z, + 0, + -br.x, + Ar.z, + 0, + -Ar.x, + wr.z, + 0, + -wr.x, + -br.y, + br.x, + 0, + -Ar.y, + Ar.x, + 0, + -wr.y, + wr.x, + 0, + ] + return ( + !!dr(t, vr, gr, yr, Er) && + !!dr((t = [1, 0, 0, 0, 1, 0, 0, 0, 1]), vr, gr, yr, Er) && + (Mr.crossVectors(br, Ar), + dr((t = [Mr.x, Mr.y, Mr.z]), vr, gr, yr, Er)) + ) + }), + (t.clampPoint = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Box3: .clampPoint() target is now required'), + (t = new lr())), + t.copy(e).clamp(this.min, this.max) + ) + }), + (t.distanceToPoint = function (e) { + return fr.copy(e).clamp(this.min, this.max).sub(e).length() + }), + (t.getBoundingSphere = function (e) { + return ( + void 0 === e && + console.error( + 'THREE.Box3: .getBoundingSphere() target is now required', + ), + this.getCenter(e.center), + (e.radius = 0.5 * this.getSize(fr).length()), + e + ) + }), + (t.intersect = function (e) { + return ( + this.min.max(e.min), + this.max.min(e.max), + this.isEmpty() && this.makeEmpty(), + this + ) + }), + (t.union = function (e) { + return this.min.min(e.min), this.max.max(e.max), this + }), + (t.applyMatrix4 = function (e) { + return ( + this.isEmpty() || + (pr[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(e), + pr[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(e), + pr[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(e), + pr[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(e), + pr[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(e), + pr[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(e), + pr[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(e), + pr[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(e), + this.setFromPoints(pr)), + this + ) + }), + (t.translate = function (e) { + return this.min.add(e), this.max.add(e), this + }), + (t.equals = function (e) { + return e.min.equals(this.min) && e.max.equals(this.max) + }), + e + ) + })() + function dr(e, t, n, r, i) { + for (var o = 0, a = e.length - 3; o <= a; o += 3) { + _r.fromArray(e, o) + var s = i.x * Math.abs(_r.x) + i.y * Math.abs(_r.y) + i.z * Math.abs(_r.z), + l = t.dot(_r), + c = n.dot(_r), + u = r.dot(_r) + if (Math.max(-Math.max(l, c, u), Math.min(l, c, u)) > s) return !1 + } + return !0 + } + var pr = [ + new lr(), + new lr(), + new lr(), + new lr(), + new lr(), + new lr(), + new lr(), + new lr(), + ], + fr = new lr(), + mr = new hr(), + vr = new lr(), + gr = new lr(), + yr = new lr(), + br = new lr(), + Ar = new lr(), + wr = new lr(), + xr = new lr(), + Er = new lr(), + Mr = new lr(), + _r = new lr(), + Tr = new hr(), + Sr = (function () { + function e(e, t) { + ;(this.center = void 0 !== e ? e : new lr()), + (this.radius = void 0 !== t ? t : -1) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.center.copy(e), (this.radius = t), this + }), + (t.setFromPoints = function (e, t) { + var n = this.center + void 0 !== t ? n.copy(t) : Tr.setFromPoints(e).getCenter(n) + for (var r = 0, i = 0, o = e.length; i < o; i++) + r = Math.max(r, n.distanceToSquared(e[i])) + return (this.radius = Math.sqrt(r)), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.center.copy(e.center), (this.radius = e.radius), this + }), + (t.isEmpty = function () { + return this.radius < 0 + }), + (t.makeEmpty = function () { + return this.center.set(0, 0, 0), (this.radius = -1), this + }), + (t.containsPoint = function (e) { + return e.distanceToSquared(this.center) <= this.radius * this.radius + }), + (t.distanceToPoint = function (e) { + return e.distanceTo(this.center) - this.radius + }), + (t.intersectsSphere = function (e) { + var t = this.radius + e.radius + return e.center.distanceToSquared(this.center) <= t * t + }), + (t.intersectsBox = function (e) { + return e.intersectsSphere(this) + }), + (t.intersectsPlane = function (e) { + return Math.abs(e.distanceToPoint(this.center)) <= this.radius + }), + (t.clampPoint = function (e, t) { + var n = this.center.distanceToSquared(e) + return ( + void 0 === t && + (console.warn('THREE.Sphere: .clampPoint() target is now required'), + (t = new lr())), + t.copy(e), + n > this.radius * this.radius && + (t.sub(this.center).normalize(), + t.multiplyScalar(this.radius).add(this.center)), + t + ) + }), + (t.getBoundingBox = function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Sphere: .getBoundingBox() target is now required', + ), + (e = new hr())), + this.isEmpty() + ? (e.makeEmpty(), e) + : (e.set(this.center, this.center), + e.expandByScalar(this.radius), + e) + ) + }), + (t.applyMatrix4 = function (e) { + return ( + this.center.applyMatrix4(e), + (this.radius = this.radius * e.getMaxScaleOnAxis()), + this + ) + }), + (t.translate = function (e) { + return this.center.add(e), this + }), + (t.equals = function (e) { + return e.center.equals(this.center) && e.radius === this.radius + }), + e + ) + })(), + Cr = new lr(), + Lr = new lr(), + Rr = new lr(), + Pr = new lr(), + Dr = new lr(), + Or = new lr(), + Ir = new lr(), + Br = (function () { + function e(e, t) { + ;(this.origin = void 0 !== e ? e : new lr()), + (this.direction = void 0 !== t ? t : new lr(0, 0, -1)) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.origin.copy(e), this.direction.copy(t), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return ( + this.origin.copy(e.origin), this.direction.copy(e.direction), this + ) + }), + (t.at = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Ray: .at() target is now required'), + (t = new lr())), + t.copy(this.direction).multiplyScalar(e).add(this.origin) + ) + }), + (t.lookAt = function (e) { + return this.direction.copy(e).sub(this.origin).normalize(), this + }), + (t.recast = function (e) { + return this.origin.copy(this.at(e, Cr)), this + }), + (t.closestPointToPoint = function (e, t) { + void 0 === t && + (console.warn( + 'THREE.Ray: .closestPointToPoint() target is now required', + ), + (t = new lr())), + t.subVectors(e, this.origin) + var n = t.dot(this.direction) + return n < 0 + ? t.copy(this.origin) + : t.copy(this.direction).multiplyScalar(n).add(this.origin) + }), + (t.distanceToPoint = function (e) { + return Math.sqrt(this.distanceSqToPoint(e)) + }), + (t.distanceSqToPoint = function (e) { + var t = Cr.subVectors(e, this.origin).dot(this.direction) + return t < 0 + ? this.origin.distanceToSquared(e) + : (Cr.copy(this.direction).multiplyScalar(t).add(this.origin), + Cr.distanceToSquared(e)) + }), + (t.distanceSqToSegment = function (e, t, n, r) { + Lr.copy(e).add(t).multiplyScalar(0.5), + Rr.copy(t).sub(e).normalize(), + Pr.copy(this.origin).sub(Lr) + var i, + o, + a, + s, + l = 0.5 * e.distanceTo(t), + c = -this.direction.dot(Rr), + u = Pr.dot(this.direction), + h = -Pr.dot(Rr), + d = Pr.lengthSq(), + p = Math.abs(1 - c * c) + if (p > 0) + if (((o = c * u - h), (s = l * p), (i = c * h - u) >= 0)) + if (o >= -s) + if (o <= s) { + var f = 1 / p + a = + (i *= f) * (i + c * (o *= f) + 2 * u) + + o * (c * i + o + 2 * h) + + d + } else + (o = l), + (a = + -(i = Math.max(0, -(c * o + u))) * i + o * (o + 2 * h) + d) + else + (o = -l), + (a = -(i = Math.max(0, -(c * o + u))) * i + o * (o + 2 * h) + d) + else + o <= -s + ? (a = + -(i = Math.max(0, -(-c * l + u))) * i + + (o = i > 0 ? -l : Math.min(Math.max(-l, -h), l)) * + (o + 2 * h) + + d) + : o <= s + ? ((i = 0), + (a = (o = Math.min(Math.max(-l, -h), l)) * (o + 2 * h) + d)) + : (a = + -(i = Math.max(0, -(c * l + u))) * i + + (o = i > 0 ? l : Math.min(Math.max(-l, -h), l)) * + (o + 2 * h) + + d) + else + (o = c > 0 ? -l : l), + (a = -(i = Math.max(0, -(c * o + u))) * i + o * (o + 2 * h) + d) + return ( + n && n.copy(this.direction).multiplyScalar(i).add(this.origin), + r && r.copy(Rr).multiplyScalar(o).add(Lr), + a + ) + }), + (t.intersectSphere = function (e, t) { + Cr.subVectors(e.center, this.origin) + var n = Cr.dot(this.direction), + r = Cr.dot(Cr) - n * n, + i = e.radius * e.radius + if (r > i) return null + var o = Math.sqrt(i - r), + a = n - o, + s = n + o + return a < 0 && s < 0 ? null : a < 0 ? this.at(s, t) : this.at(a, t) + }), + (t.intersectsSphere = function (e) { + return this.distanceSqToPoint(e.center) <= e.radius * e.radius + }), + (t.distanceToPlane = function (e) { + var t = e.normal.dot(this.direction) + if (0 === t) return 0 === e.distanceToPoint(this.origin) ? 0 : null + var n = -(this.origin.dot(e.normal) + e.constant) / t + return n >= 0 ? n : null + }), + (t.intersectPlane = function (e, t) { + var n = this.distanceToPlane(e) + return null === n ? null : this.at(n, t) + }), + (t.intersectsPlane = function (e) { + var t = e.distanceToPoint(this.origin) + return 0 === t || e.normal.dot(this.direction) * t < 0 + }), + (t.intersectBox = function (e, t) { + var n, + r, + i, + o, + a, + s, + l = 1 / this.direction.x, + c = 1 / this.direction.y, + u = 1 / this.direction.z, + h = this.origin + return ( + l >= 0 + ? ((n = (e.min.x - h.x) * l), (r = (e.max.x - h.x) * l)) + : ((n = (e.max.x - h.x) * l), (r = (e.min.x - h.x) * l)), + c >= 0 + ? ((i = (e.min.y - h.y) * c), (o = (e.max.y - h.y) * c)) + : ((i = (e.max.y - h.y) * c), (o = (e.min.y - h.y) * c)), + n > o || i > r + ? null + : ((i > n || n !== n) && (n = i), + (o < r || r !== r) && (r = o), + u >= 0 + ? ((a = (e.min.z - h.z) * u), (s = (e.max.z - h.z) * u)) + : ((a = (e.max.z - h.z) * u), (s = (e.min.z - h.z) * u)), + n > s || a > r + ? null + : ((a > n || n !== n) && (n = a), + (s < r || r !== r) && (r = s), + r < 0 ? null : this.at(n >= 0 ? n : r, t))) + ) + }), + (t.intersectsBox = function (e) { + return null !== this.intersectBox(e, Cr) + }), + (t.intersectTriangle = function (e, t, n, r, i) { + Dr.subVectors(t, e), Or.subVectors(n, e), Ir.crossVectors(Dr, Or) + var o, + a = this.direction.dot(Ir) + if (a > 0) { + if (r) return null + o = 1 + } else { + if (!(a < 0)) return null + ;(o = -1), (a = -a) + } + Pr.subVectors(this.origin, e) + var s = o * this.direction.dot(Or.crossVectors(Pr, Or)) + if (s < 0) return null + var l = o * this.direction.dot(Dr.cross(Pr)) + if (l < 0) return null + if (s + l > a) return null + var c = -o * Pr.dot(Ir) + return c < 0 ? null : this.at(c / a, i) + }), + (t.applyMatrix4 = function (e) { + return ( + this.origin.applyMatrix4(e), + this.direction.transformDirection(e), + this + ) + }), + (t.equals = function (e) { + return ( + e.origin.equals(this.origin) && e.direction.equals(this.direction) + ) + }), + e + ) + })(), + Fr = (function () { + function e() { + Object.defineProperty(this, 'isMatrix4', { value: !0 }), + (this.elements = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), + arguments.length > 0 && + console.error( + 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.', + ) + } + var t = e.prototype + return ( + (t.set = function (e, t, n, r, i, o, a, s, l, c, u, h, d, p, f, m) { + var v = this.elements + return ( + (v[0] = e), + (v[4] = t), + (v[8] = n), + (v[12] = r), + (v[1] = i), + (v[5] = o), + (v[9] = a), + (v[13] = s), + (v[2] = l), + (v[6] = c), + (v[10] = u), + (v[14] = h), + (v[3] = d), + (v[7] = p), + (v[11] = f), + (v[15] = m), + this + ) + }), + (t.identity = function () { + return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this + }), + (t.clone = function () { + return new e().fromArray(this.elements) + }), + (t.copy = function (e) { + var t = this.elements, + n = e.elements + return ( + (t[0] = n[0]), + (t[1] = n[1]), + (t[2] = n[2]), + (t[3] = n[3]), + (t[4] = n[4]), + (t[5] = n[5]), + (t[6] = n[6]), + (t[7] = n[7]), + (t[8] = n[8]), + (t[9] = n[9]), + (t[10] = n[10]), + (t[11] = n[11]), + (t[12] = n[12]), + (t[13] = n[13]), + (t[14] = n[14]), + (t[15] = n[15]), + this + ) + }), + (t.copyPosition = function (e) { + var t = this.elements, + n = e.elements + return (t[12] = n[12]), (t[13] = n[13]), (t[14] = n[14]), this + }), + (t.setFromMatrix3 = function (e) { + var t = e.elements + return ( + this.set( + t[0], + t[3], + t[6], + 0, + t[1], + t[4], + t[7], + 0, + t[2], + t[5], + t[8], + 0, + 0, + 0, + 0, + 1, + ), + this + ) + }), + (t.extractBasis = function (e, t, n) { + return ( + e.setFromMatrixColumn(this, 0), + t.setFromMatrixColumn(this, 1), + n.setFromMatrixColumn(this, 2), + this + ) + }), + (t.makeBasis = function (e, t, n) { + return ( + this.set( + e.x, + t.x, + n.x, + 0, + e.y, + t.y, + n.y, + 0, + e.z, + t.z, + n.z, + 0, + 0, + 0, + 0, + 1, + ), + this + ) + }), + (t.extractRotation = function (e) { + var t = this.elements, + n = e.elements, + r = 1 / kr.setFromMatrixColumn(e, 0).length(), + i = 1 / kr.setFromMatrixColumn(e, 1).length(), + o = 1 / kr.setFromMatrixColumn(e, 2).length() + return ( + (t[0] = n[0] * r), + (t[1] = n[1] * r), + (t[2] = n[2] * r), + (t[3] = 0), + (t[4] = n[4] * i), + (t[5] = n[5] * i), + (t[6] = n[6] * i), + (t[7] = 0), + (t[8] = n[8] * o), + (t[9] = n[9] * o), + (t[10] = n[10] * o), + (t[11] = 0), + (t[12] = 0), + (t[13] = 0), + (t[14] = 0), + (t[15] = 1), + this + ) + }), + (t.makeRotationFromEuler = function (e) { + ;(e && e.isEuler) || + console.error( + 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.', + ) + var t = this.elements, + n = e.x, + r = e.y, + i = e.z, + o = Math.cos(n), + a = Math.sin(n), + s = Math.cos(r), + l = Math.sin(r), + c = Math.cos(i), + u = Math.sin(i) + if ('XYZ' === e.order) { + var h = o * c, + d = o * u, + p = a * c, + f = a * u + ;(t[0] = s * c), + (t[4] = -s * u), + (t[8] = l), + (t[1] = d + p * l), + (t[5] = h - f * l), + (t[9] = -a * s), + (t[2] = f - h * l), + (t[6] = p + d * l), + (t[10] = o * s) + } else if ('YXZ' === e.order) { + var m = s * c, + v = s * u, + g = l * c, + y = l * u + ;(t[0] = m + y * a), + (t[4] = g * a - v), + (t[8] = o * l), + (t[1] = o * u), + (t[5] = o * c), + (t[9] = -a), + (t[2] = v * a - g), + (t[6] = y + m * a), + (t[10] = o * s) + } else if ('ZXY' === e.order) { + var b = s * c, + A = s * u, + w = l * c, + x = l * u + ;(t[0] = b - x * a), + (t[4] = -o * u), + (t[8] = w + A * a), + (t[1] = A + w * a), + (t[5] = o * c), + (t[9] = x - b * a), + (t[2] = -o * l), + (t[6] = a), + (t[10] = o * s) + } else if ('ZYX' === e.order) { + var E = o * c, + M = o * u, + _ = a * c, + T = a * u + ;(t[0] = s * c), + (t[4] = _ * l - M), + (t[8] = E * l + T), + (t[1] = s * u), + (t[5] = T * l + E), + (t[9] = M * l - _), + (t[2] = -l), + (t[6] = a * s), + (t[10] = o * s) + } else if ('YZX' === e.order) { + var S = o * s, + C = o * l, + L = a * s, + R = a * l + ;(t[0] = s * c), + (t[4] = R - S * u), + (t[8] = L * u + C), + (t[1] = u), + (t[5] = o * c), + (t[9] = -a * c), + (t[2] = -l * c), + (t[6] = C * u + L), + (t[10] = S - R * u) + } else if ('XZY' === e.order) { + var P = o * s, + D = o * l, + O = a * s, + I = a * l + ;(t[0] = s * c), + (t[4] = -u), + (t[8] = l * c), + (t[1] = P * u + I), + (t[5] = o * c), + (t[9] = D * u - O), + (t[2] = O * u - D), + (t[6] = a * c), + (t[10] = I * u + P) + } + return ( + (t[3] = 0), + (t[7] = 0), + (t[11] = 0), + (t[12] = 0), + (t[13] = 0), + (t[14] = 0), + (t[15] = 1), + this + ) + }), + (t.makeRotationFromQuaternion = function (e) { + return this.compose(Ur, e, Hr) + }), + (t.lookAt = function (e, t, n) { + var r = this.elements + return ( + jr.subVectors(e, t), + 0 === jr.lengthSq() && (jr.z = 1), + jr.normalize(), + Gr.crossVectors(n, jr), + 0 === Gr.lengthSq() && + (1 === Math.abs(n.z) ? (jr.x += 1e-4) : (jr.z += 1e-4), + jr.normalize(), + Gr.crossVectors(n, jr)), + Gr.normalize(), + zr.crossVectors(jr, Gr), + (r[0] = Gr.x), + (r[4] = zr.x), + (r[8] = jr.x), + (r[1] = Gr.y), + (r[5] = zr.y), + (r[9] = jr.y), + (r[2] = Gr.z), + (r[6] = zr.z), + (r[10] = jr.z), + this + ) + }), + (t.multiply = function (e, t) { + return void 0 !== t + ? (console.warn( + 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.', + ), + this.multiplyMatrices(e, t)) + : this.multiplyMatrices(this, e) + }), + (t.premultiply = function (e) { + return this.multiplyMatrices(e, this) + }), + (t.multiplyMatrices = function (e, t) { + var n = e.elements, + r = t.elements, + i = this.elements, + o = n[0], + a = n[4], + s = n[8], + l = n[12], + c = n[1], + u = n[5], + h = n[9], + d = n[13], + p = n[2], + f = n[6], + m = n[10], + v = n[14], + g = n[3], + y = n[7], + b = n[11], + A = n[15], + w = r[0], + x = r[4], + E = r[8], + M = r[12], + _ = r[1], + T = r[5], + S = r[9], + C = r[13], + L = r[2], + R = r[6], + P = r[10], + D = r[14], + O = r[3], + I = r[7], + B = r[11], + F = r[15] + return ( + (i[0] = o * w + a * _ + s * L + l * O), + (i[4] = o * x + a * T + s * R + l * I), + (i[8] = o * E + a * S + s * P + l * B), + (i[12] = o * M + a * C + s * D + l * F), + (i[1] = c * w + u * _ + h * L + d * O), + (i[5] = c * x + u * T + h * R + d * I), + (i[9] = c * E + u * S + h * P + d * B), + (i[13] = c * M + u * C + h * D + d * F), + (i[2] = p * w + f * _ + m * L + v * O), + (i[6] = p * x + f * T + m * R + v * I), + (i[10] = p * E + f * S + m * P + v * B), + (i[14] = p * M + f * C + m * D + v * F), + (i[3] = g * w + y * _ + b * L + A * O), + (i[7] = g * x + y * T + b * R + A * I), + (i[11] = g * E + y * S + b * P + A * B), + (i[15] = g * M + y * C + b * D + A * F), + this + ) + }), + (t.multiplyScalar = function (e) { + var t = this.elements + return ( + (t[0] *= e), + (t[4] *= e), + (t[8] *= e), + (t[12] *= e), + (t[1] *= e), + (t[5] *= e), + (t[9] *= e), + (t[13] *= e), + (t[2] *= e), + (t[6] *= e), + (t[10] *= e), + (t[14] *= e), + (t[3] *= e), + (t[7] *= e), + (t[11] *= e), + (t[15] *= e), + this + ) + }), + (t.determinant = function () { + var e = this.elements, + t = e[0], + n = e[4], + r = e[8], + i = e[12], + o = e[1], + a = e[5], + s = e[9], + l = e[13], + c = e[2], + u = e[6], + h = e[10], + d = e[14] + return ( + e[3] * + (+i * s * u - + r * l * u - + i * a * h + + n * l * h + + r * a * d - + n * s * d) + + e[7] * + (+t * s * d - + t * l * h + + i * o * h - + r * o * d + + r * l * c - + i * s * c) + + e[11] * + (+t * l * u - + t * a * d - + i * o * u + + n * o * d + + i * a * c - + n * l * c) + + e[15] * + (-r * a * c - + t * s * u + + t * a * h + + r * o * u - + n * o * h + + n * s * c) + ) + }), + (t.transpose = function () { + var e, + t = this.elements + return ( + (e = t[1]), + (t[1] = t[4]), + (t[4] = e), + (e = t[2]), + (t[2] = t[8]), + (t[8] = e), + (e = t[6]), + (t[6] = t[9]), + (t[9] = e), + (e = t[3]), + (t[3] = t[12]), + (t[12] = e), + (e = t[7]), + (t[7] = t[13]), + (t[13] = e), + (e = t[11]), + (t[11] = t[14]), + (t[14] = e), + this + ) + }), + (t.setPosition = function (e, t, n) { + var r = this.elements + return ( + e.isVector3 + ? ((r[12] = e.x), (r[13] = e.y), (r[14] = e.z)) + : ((r[12] = e), (r[13] = t), (r[14] = n)), + this + ) + }), + (t.invert = function () { + var e = this.elements, + t = e[0], + n = e[1], + r = e[2], + i = e[3], + o = e[4], + a = e[5], + s = e[6], + l = e[7], + c = e[8], + u = e[9], + h = e[10], + d = e[11], + p = e[12], + f = e[13], + m = e[14], + v = e[15], + g = + u * m * l - + f * h * l + + f * s * d - + a * m * d - + u * s * v + + a * h * v, + y = + p * h * l - + c * m * l - + p * s * d + + o * m * d + + c * s * v - + o * h * v, + b = + c * f * l - + p * u * l + + p * a * d - + o * f * d - + c * a * v + + o * u * v, + A = + p * u * s - + c * f * s - + p * a * h + + o * f * h + + c * a * m - + o * u * m, + w = t * g + n * y + r * b + i * A + if (0 === w) + return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) + var x = 1 / w + return ( + (e[0] = g * x), + (e[1] = + (f * h * i - + u * m * i - + f * r * d + + n * m * d + + u * r * v - + n * h * v) * + x), + (e[2] = + (a * m * i - + f * s * i + + f * r * l - + n * m * l - + a * r * v + + n * s * v) * + x), + (e[3] = + (u * s * i - + a * h * i - + u * r * l + + n * h * l + + a * r * d - + n * s * d) * + x), + (e[4] = y * x), + (e[5] = + (c * m * i - + p * h * i + + p * r * d - + t * m * d - + c * r * v + + t * h * v) * + x), + (e[6] = + (p * s * i - + o * m * i - + p * r * l + + t * m * l + + o * r * v - + t * s * v) * + x), + (e[7] = + (o * h * i - + c * s * i + + c * r * l - + t * h * l - + o * r * d + + t * s * d) * + x), + (e[8] = b * x), + (e[9] = + (p * u * i - + c * f * i - + p * n * d + + t * f * d + + c * n * v - + t * u * v) * + x), + (e[10] = + (o * f * i - + p * a * i + + p * n * l - + t * f * l - + o * n * v + + t * a * v) * + x), + (e[11] = + (c * a * i - + o * u * i - + c * n * l + + t * u * l + + o * n * d - + t * a * d) * + x), + (e[12] = A * x), + (e[13] = + (c * f * r - + p * u * r + + p * n * h - + t * f * h - + c * n * m + + t * u * m) * + x), + (e[14] = + (p * a * r - + o * f * r - + p * n * s + + t * f * s + + o * n * m - + t * a * m) * + x), + (e[15] = + (o * u * r - + c * a * r + + c * n * s - + t * u * s - + o * n * h + + t * a * h) * + x), + this + ) + }), + (t.scale = function (e) { + var t = this.elements, + n = e.x, + r = e.y, + i = e.z + return ( + (t[0] *= n), + (t[4] *= r), + (t[8] *= i), + (t[1] *= n), + (t[5] *= r), + (t[9] *= i), + (t[2] *= n), + (t[6] *= r), + (t[10] *= i), + (t[3] *= n), + (t[7] *= r), + (t[11] *= i), + this + ) + }), + (t.getMaxScaleOnAxis = function () { + var e = this.elements, + t = e[0] * e[0] + e[1] * e[1] + e[2] * e[2], + n = e[4] * e[4] + e[5] * e[5] + e[6] * e[6], + r = e[8] * e[8] + e[9] * e[9] + e[10] * e[10] + return Math.sqrt(Math.max(t, n, r)) + }), + (t.makeTranslation = function (e, t, n) { + return this.set(1, 0, 0, e, 0, 1, 0, t, 0, 0, 1, n, 0, 0, 0, 1), this + }), + (t.makeRotationX = function (e) { + var t = Math.cos(e), + n = Math.sin(e) + return this.set(1, 0, 0, 0, 0, t, -n, 0, 0, n, t, 0, 0, 0, 0, 1), this + }), + (t.makeRotationY = function (e) { + var t = Math.cos(e), + n = Math.sin(e) + return this.set(t, 0, n, 0, 0, 1, 0, 0, -n, 0, t, 0, 0, 0, 0, 1), this + }), + (t.makeRotationZ = function (e) { + var t = Math.cos(e), + n = Math.sin(e) + return this.set(t, -n, 0, 0, n, t, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1), this + }), + (t.makeRotationAxis = function (e, t) { + var n = Math.cos(t), + r = Math.sin(t), + i = 1 - n, + o = e.x, + a = e.y, + s = e.z, + l = i * o, + c = i * a + return ( + this.set( + l * o + n, + l * a - r * s, + l * s + r * a, + 0, + l * a + r * s, + c * a + n, + c * s - r * o, + 0, + l * s - r * a, + c * s + r * o, + i * s * s + n, + 0, + 0, + 0, + 0, + 1, + ), + this + ) + }), + (t.makeScale = function (e, t, n) { + return this.set(e, 0, 0, 0, 0, t, 0, 0, 0, 0, n, 0, 0, 0, 0, 1), this + }), + (t.makeShear = function (e, t, n) { + return this.set(1, t, n, 0, e, 1, n, 0, e, t, 1, 0, 0, 0, 0, 1), this + }), + (t.compose = function (e, t, n) { + var r = this.elements, + i = t._x, + o = t._y, + a = t._z, + s = t._w, + l = i + i, + c = o + o, + u = a + a, + h = i * l, + d = i * c, + p = i * u, + f = o * c, + m = o * u, + v = a * u, + g = s * l, + y = s * c, + b = s * u, + A = n.x, + w = n.y, + x = n.z + return ( + (r[0] = (1 - (f + v)) * A), + (r[1] = (d + b) * A), + (r[2] = (p - y) * A), + (r[3] = 0), + (r[4] = (d - b) * w), + (r[5] = (1 - (h + v)) * w), + (r[6] = (m + g) * w), + (r[7] = 0), + (r[8] = (p + y) * x), + (r[9] = (m - g) * x), + (r[10] = (1 - (h + f)) * x), + (r[11] = 0), + (r[12] = e.x), + (r[13] = e.y), + (r[14] = e.z), + (r[15] = 1), + this + ) + }), + (t.decompose = function (e, t, n) { + var r = this.elements, + i = kr.set(r[0], r[1], r[2]).length(), + o = kr.set(r[4], r[5], r[6]).length(), + a = kr.set(r[8], r[9], r[10]).length() + this.determinant() < 0 && (i = -i), + (e.x = r[12]), + (e.y = r[13]), + (e.z = r[14]), + Nr.copy(this) + var s = 1 / i, + l = 1 / o, + c = 1 / a + return ( + (Nr.elements[0] *= s), + (Nr.elements[1] *= s), + (Nr.elements[2] *= s), + (Nr.elements[4] *= l), + (Nr.elements[5] *= l), + (Nr.elements[6] *= l), + (Nr.elements[8] *= c), + (Nr.elements[9] *= c), + (Nr.elements[10] *= c), + t.setFromRotationMatrix(Nr), + (n.x = i), + (n.y = o), + (n.z = a), + this + ) + }), + (t.makePerspective = function (e, t, n, r, i, o) { + void 0 === o && + console.warn( + 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.', + ) + var a = this.elements, + s = (2 * i) / (t - e), + l = (2 * i) / (n - r), + c = (t + e) / (t - e), + u = (n + r) / (n - r), + h = -(o + i) / (o - i), + d = (-2 * o * i) / (o - i) + return ( + (a[0] = s), + (a[4] = 0), + (a[8] = c), + (a[12] = 0), + (a[1] = 0), + (a[5] = l), + (a[9] = u), + (a[13] = 0), + (a[2] = 0), + (a[6] = 0), + (a[10] = h), + (a[14] = d), + (a[3] = 0), + (a[7] = 0), + (a[11] = -1), + (a[15] = 0), + this + ) + }), + (t.makeOrthographic = function (e, t, n, r, i, o) { + var a = this.elements, + s = 1 / (t - e), + l = 1 / (n - r), + c = 1 / (o - i), + u = (t + e) * s, + h = (n + r) * l, + d = (o + i) * c + return ( + (a[0] = 2 * s), + (a[4] = 0), + (a[8] = 0), + (a[12] = -u), + (a[1] = 0), + (a[5] = 2 * l), + (a[9] = 0), + (a[13] = -h), + (a[2] = 0), + (a[6] = 0), + (a[10] = -2 * c), + (a[14] = -d), + (a[3] = 0), + (a[7] = 0), + (a[11] = 0), + (a[15] = 1), + this + ) + }), + (t.equals = function (e) { + for (var t = this.elements, n = e.elements, r = 0; r < 16; r++) + if (t[r] !== n[r]) return !1 + return !0 + }), + (t.fromArray = function (e, t) { + void 0 === t && (t = 0) + for (var n = 0; n < 16; n++) this.elements[n] = e[n + t] + return this + }), + (t.toArray = function (e, t) { + void 0 === e && (e = []), void 0 === t && (t = 0) + var n = this.elements + return ( + (e[t] = n[0]), + (e[t + 1] = n[1]), + (e[t + 2] = n[2]), + (e[t + 3] = n[3]), + (e[t + 4] = n[4]), + (e[t + 5] = n[5]), + (e[t + 6] = n[6]), + (e[t + 7] = n[7]), + (e[t + 8] = n[8]), + (e[t + 9] = n[9]), + (e[t + 10] = n[10]), + (e[t + 11] = n[11]), + (e[t + 12] = n[12]), + (e[t + 13] = n[13]), + (e[t + 14] = n[14]), + (e[t + 15] = n[15]), + e + ) + }), + e + ) + })(), + kr = new lr(), + Nr = new Fr(), + Ur = new lr(0, 0, 0), + Hr = new lr(1, 1, 1), + Gr = new lr(), + zr = new lr(), + jr = new lr(), + Vr = (function () { + function e(t, n, r, i) { + void 0 === t && (t = 0), + void 0 === n && (n = 0), + void 0 === r && (r = 0), + void 0 === i && (i = e.DefaultOrder), + Object.defineProperty(this, 'isEuler', { value: !0 }), + (this._x = t), + (this._y = n), + (this._z = r), + (this._order = i) + } + var t = e.prototype + return ( + (t.set = function (e, t, n, r) { + return ( + (this._x = e), + (this._y = t), + (this._z = n), + (this._order = r || this._order), + this._onChangeCallback(), + this + ) + }), + (t.clone = function () { + return new this.constructor(this._x, this._y, this._z, this._order) + }), + (t.copy = function (e) { + return ( + (this._x = e._x), + (this._y = e._y), + (this._z = e._z), + (this._order = e._order), + this._onChangeCallback(), + this + ) + }), + (t.setFromRotationMatrix = function (e, t, n) { + var r = Kn.clamp, + i = e.elements, + o = i[0], + a = i[4], + s = i[8], + l = i[1], + c = i[5], + u = i[9], + h = i[2], + d = i[6], + p = i[10] + switch ((t = t || this._order)) { + case 'XYZ': + ;(this._y = Math.asin(r(s, -1, 1))), + Math.abs(s) < 0.9999999 + ? ((this._x = Math.atan2(-u, p)), (this._z = Math.atan2(-a, o))) + : ((this._x = Math.atan2(d, c)), (this._z = 0)) + break + case 'YXZ': + ;(this._x = Math.asin(-r(u, -1, 1))), + Math.abs(u) < 0.9999999 + ? ((this._y = Math.atan2(s, p)), (this._z = Math.atan2(l, c))) + : ((this._y = Math.atan2(-h, o)), (this._z = 0)) + break + case 'ZXY': + ;(this._x = Math.asin(r(d, -1, 1))), + Math.abs(d) < 0.9999999 + ? ((this._y = Math.atan2(-h, p)), (this._z = Math.atan2(-a, c))) + : ((this._y = 0), (this._z = Math.atan2(l, o))) + break + case 'ZYX': + ;(this._y = Math.asin(-r(h, -1, 1))), + Math.abs(h) < 0.9999999 + ? ((this._x = Math.atan2(d, p)), (this._z = Math.atan2(l, o))) + : ((this._x = 0), (this._z = Math.atan2(-a, c))) + break + case 'YZX': + ;(this._z = Math.asin(r(l, -1, 1))), + Math.abs(l) < 0.9999999 + ? ((this._x = Math.atan2(-u, c)), (this._y = Math.atan2(-h, o))) + : ((this._x = 0), (this._y = Math.atan2(s, p))) + break + case 'XZY': + ;(this._z = Math.asin(-r(a, -1, 1))), + Math.abs(a) < 0.9999999 + ? ((this._x = Math.atan2(d, c)), (this._y = Math.atan2(s, o))) + : ((this._x = Math.atan2(-u, p)), (this._y = 0)) + break + default: + console.warn( + 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + + t, + ) + } + return (this._order = t), !1 !== n && this._onChangeCallback(), this + }), + (t.setFromQuaternion = function (e, t, n) { + return ( + Wr.makeRotationFromQuaternion(e), this.setFromRotationMatrix(Wr, t, n) + ) + }), + (t.setFromVector3 = function (e, t) { + return this.set(e.x, e.y, e.z, t || this._order) + }), + (t.reorder = function (e) { + return qr.setFromEuler(this), this.setFromQuaternion(qr, e) + }), + (t.equals = function (e) { + return ( + e._x === this._x && + e._y === this._y && + e._z === this._z && + e._order === this._order + ) + }), + (t.fromArray = function (e) { + return ( + (this._x = e[0]), + (this._y = e[1]), + (this._z = e[2]), + void 0 !== e[3] && (this._order = e[3]), + this._onChangeCallback(), + this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this._x), + (e[t + 1] = this._y), + (e[t + 2] = this._z), + (e[t + 3] = this._order), + e + ) + }), + (t.toVector3 = function (e) { + return e + ? e.set(this._x, this._y, this._z) + : new lr(this._x, this._y, this._z) + }), + (t._onChange = function (e) { + return (this._onChangeCallback = e), this + }), + (t._onChangeCallback = function () {}), + Hn(e, [ + { + key: 'x', + get: function () { + return this._x + }, + set: function (e) { + ;(this._x = e), this._onChangeCallback() + }, + }, + { + key: 'y', + get: function () { + return this._y + }, + set: function (e) { + ;(this._y = e), this._onChangeCallback() + }, + }, + { + key: 'z', + get: function () { + return this._z + }, + set: function (e) { + ;(this._z = e), this._onChangeCallback() + }, + }, + { + key: 'order', + get: function () { + return this._order + }, + set: function (e) { + ;(this._order = e), this._onChangeCallback() + }, + }, + ]), + e + ) + })() + ;(Vr.DefaultOrder = 'XYZ'), + (Vr.RotationOrders = ['XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX']) + var Wr = new Fr(), + qr = new sr(), + Xr = (function () { + function e() { + this.mask = 1 + } + var t = e.prototype + return ( + (t.set = function (e) { + this.mask = (1 << e) | 0 + }), + (t.enable = function (e) { + this.mask |= (1 << e) | 0 + }), + (t.enableAll = function () { + this.mask = -1 + }), + (t.toggle = function (e) { + this.mask ^= (1 << e) | 0 + }), + (t.disable = function (e) { + this.mask &= ~((1 << e) | 0) + }), + (t.disableAll = function () { + this.mask = 0 + }), + (t.test = function (e) { + return 0 !== (this.mask & e.mask) + }), + e + ) + })(), + Yr = 0, + Qr = new lr(), + Zr = new sr(), + Kr = new Fr(), + Jr = new lr(), + $r = new lr(), + ei = new lr(), + ti = new sr(), + ni = new lr(1, 0, 0), + ri = new lr(0, 1, 0), + ii = new lr(0, 0, 1), + oi = { type: 'added' }, + ai = { type: 'removed' } + function si() { + Object.defineProperty(this, 'id', { value: Yr++ }), + (this.uuid = Kn.generateUUID()), + (this.name = ''), + (this.type = 'Object3D'), + (this.parent = null), + (this.children = []), + (this.up = si.DefaultUp.clone()) + var e = new lr(), + t = new Vr(), + n = new sr(), + r = new lr(1, 1, 1) + function i() { + n.setFromEuler(t, !1) + } + function o() { + t.setFromQuaternion(n, void 0, !1) + } + t._onChange(i), + n._onChange(o), + Object.defineProperties(this, { + position: { configurable: !0, enumerable: !0, value: e }, + rotation: { configurable: !0, enumerable: !0, value: t }, + quaternion: { configurable: !0, enumerable: !0, value: n }, + scale: { configurable: !0, enumerable: !0, value: r }, + modelViewMatrix: { value: new Fr() }, + normalMatrix: { value: new $n() }, + }), + (this.matrix = new Fr()), + (this.matrixWorld = new Fr()), + (this.matrixAutoUpdate = si.DefaultMatrixAutoUpdate), + (this.matrixWorldNeedsUpdate = !1), + (this.layers = new Xr()), + (this.visible = !0), + (this.castShadow = !1), + (this.receiveShadow = !1), + (this.frustumCulled = !0), + (this.renderOrder = 0), + (this.animations = []), + (this.userData = {}) + } + ;(si.DefaultUp = new lr(0, 1, 0)), + (si.DefaultMatrixAutoUpdate = !0), + (si.prototype = Object.assign(Object.create(qn.prototype), { + constructor: si, + isObject3D: !0, + onBeforeRender: function () {}, + onAfterRender: function () {}, + applyMatrix4: function (e) { + this.matrixAutoUpdate && this.updateMatrix(), + this.matrix.premultiply(e), + this.matrix.decompose(this.position, this.quaternion, this.scale) + }, + applyQuaternion: function (e) { + return this.quaternion.premultiply(e), this + }, + setRotationFromAxisAngle: function (e, t) { + this.quaternion.setFromAxisAngle(e, t) + }, + setRotationFromEuler: function (e) { + this.quaternion.setFromEuler(e, !0) + }, + setRotationFromMatrix: function (e) { + this.quaternion.setFromRotationMatrix(e) + }, + setRotationFromQuaternion: function (e) { + this.quaternion.copy(e) + }, + rotateOnAxis: function (e, t) { + return Zr.setFromAxisAngle(e, t), this.quaternion.multiply(Zr), this + }, + rotateOnWorldAxis: function (e, t) { + return Zr.setFromAxisAngle(e, t), this.quaternion.premultiply(Zr), this + }, + rotateX: function (e) { + return this.rotateOnAxis(ni, e) + }, + rotateY: function (e) { + return this.rotateOnAxis(ri, e) + }, + rotateZ: function (e) { + return this.rotateOnAxis(ii, e) + }, + translateOnAxis: function (e, t) { + return ( + Qr.copy(e).applyQuaternion(this.quaternion), + this.position.add(Qr.multiplyScalar(t)), + this + ) + }, + translateX: function (e) { + return this.translateOnAxis(ni, e) + }, + translateY: function (e) { + return this.translateOnAxis(ri, e) + }, + translateZ: function (e) { + return this.translateOnAxis(ii, e) + }, + localToWorld: function (e) { + return e.applyMatrix4(this.matrixWorld) + }, + worldToLocal: function (e) { + return e.applyMatrix4(Kr.copy(this.matrixWorld).invert()) + }, + lookAt: function (e, t, n) { + e.isVector3 ? Jr.copy(e) : Jr.set(e, t, n) + var r = this.parent + this.updateWorldMatrix(!0, !1), + $r.setFromMatrixPosition(this.matrixWorld), + this.isCamera || this.isLight + ? Kr.lookAt($r, Jr, this.up) + : Kr.lookAt(Jr, $r, this.up), + this.quaternion.setFromRotationMatrix(Kr), + r && + (Kr.extractRotation(r.matrixWorld), + Zr.setFromRotationMatrix(Kr), + this.quaternion.premultiply(Zr.invert())) + }, + add: function (e) { + if (arguments.length > 1) { + for (var t = 0; t < arguments.length; t++) this.add(arguments[t]) + return this + } + return e === this + ? (console.error( + "THREE.Object3D.add: object can't be added as a child of itself.", + e, + ), + this) + : (e && e.isObject3D + ? (null !== e.parent && e.parent.remove(e), + (e.parent = this), + this.children.push(e), + e.dispatchEvent(oi)) + : console.error( + 'THREE.Object3D.add: object not an instance of THREE.Object3D.', + e, + ), + this) + }, + remove: function (e) { + if (arguments.length > 1) { + for (var t = 0; t < arguments.length; t++) this.remove(arguments[t]) + return this + } + var n = this.children.indexOf(e) + return ( + -1 !== n && + ((e.parent = null), this.children.splice(n, 1), e.dispatchEvent(ai)), + this + ) + }, + clear: function () { + for (var e = 0; e < this.children.length; e++) { + var t = this.children[e] + ;(t.parent = null), t.dispatchEvent(ai) + } + return (this.children.length = 0), this + }, + attach: function (e) { + return ( + this.updateWorldMatrix(!0, !1), + Kr.copy(this.matrixWorld).invert(), + null !== e.parent && + (e.parent.updateWorldMatrix(!0, !1), + Kr.multiply(e.parent.matrixWorld)), + e.applyMatrix4(Kr), + e.updateWorldMatrix(!1, !1), + this.add(e), + this + ) + }, + getObjectById: function (e) { + return this.getObjectByProperty('id', e) + }, + getObjectByName: function (e) { + return this.getObjectByProperty('name', e) + }, + getObjectByProperty: function (e, t) { + if (this[e] === t) return this + for (var n = 0, r = this.children.length; n < r; n++) { + var i = this.children[n].getObjectByProperty(e, t) + if (void 0 !== i) return i + } + }, + getWorldPosition: function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Object3D: .getWorldPosition() target is now required', + ), + (e = new lr())), + this.updateWorldMatrix(!0, !1), + e.setFromMatrixPosition(this.matrixWorld) + ) + }, + getWorldQuaternion: function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Object3D: .getWorldQuaternion() target is now required', + ), + (e = new sr())), + this.updateWorldMatrix(!0, !1), + this.matrixWorld.decompose($r, e, ei), + e + ) + }, + getWorldScale: function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Object3D: .getWorldScale() target is now required', + ), + (e = new lr())), + this.updateWorldMatrix(!0, !1), + this.matrixWorld.decompose($r, ti, e), + e + ) + }, + getWorldDirection: function (e) { + void 0 === e && + (console.warn( + 'THREE.Object3D: .getWorldDirection() target is now required', + ), + (e = new lr())), + this.updateWorldMatrix(!0, !1) + var t = this.matrixWorld.elements + return e.set(t[8], t[9], t[10]).normalize() + }, + raycast: function () {}, + traverse: function (e) { + e(this) + for (var t = this.children, n = 0, r = t.length; n < r; n++) + t[n].traverse(e) + }, + traverseVisible: function (e) { + if (!1 !== this.visible) { + e(this) + for (var t = this.children, n = 0, r = t.length; n < r; n++) + t[n].traverseVisible(e) + } + }, + traverseAncestors: function (e) { + var t = this.parent + null !== t && (e(t), t.traverseAncestors(e)) + }, + updateMatrix: function () { + this.matrix.compose(this.position, this.quaternion, this.scale), + (this.matrixWorldNeedsUpdate = !0) + }, + updateMatrixWorld: function (e) { + this.matrixAutoUpdate && this.updateMatrix(), + (this.matrixWorldNeedsUpdate || e) && + (null === this.parent + ? this.matrixWorld.copy(this.matrix) + : this.matrixWorld.multiplyMatrices( + this.parent.matrixWorld, + this.matrix, + ), + (this.matrixWorldNeedsUpdate = !1), + (e = !0)) + for (var t = this.children, n = 0, r = t.length; n < r; n++) + t[n].updateMatrixWorld(e) + }, + updateWorldMatrix: function (e, t) { + var n = this.parent + if ( + (!0 === e && null !== n && n.updateWorldMatrix(!0, !1), + this.matrixAutoUpdate && this.updateMatrix(), + null === this.parent + ? this.matrixWorld.copy(this.matrix) + : this.matrixWorld.multiplyMatrices( + this.parent.matrixWorld, + this.matrix, + ), + !0 === t) + ) + for (var r = this.children, i = 0, o = r.length; i < o; i++) + r[i].updateWorldMatrix(!1, !0) + }, + toJSON: function (e) { + var t = void 0 === e || 'string' === typeof e, + n = {} + t && + ((e = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {}, + skeletons: {}, + animations: {}, + }), + (n.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON', + })) + var r = {} + function i(t, n) { + return void 0 === t[n.uuid] && (t[n.uuid] = n.toJSON(e)), n.uuid + } + if ( + ((r.uuid = this.uuid), + (r.type = this.type), + '' !== this.name && (r.name = this.name), + !0 === this.castShadow && (r.castShadow = !0), + !0 === this.receiveShadow && (r.receiveShadow = !0), + !1 === this.visible && (r.visible = !1), + !1 === this.frustumCulled && (r.frustumCulled = !1), + 0 !== this.renderOrder && (r.renderOrder = this.renderOrder), + '{}' !== JSON.stringify(this.userData) && (r.userData = this.userData), + (r.layers = this.layers.mask), + (r.matrix = this.matrix.toArray()), + !1 === this.matrixAutoUpdate && (r.matrixAutoUpdate = !1), + this.isInstancedMesh && + ((r.type = 'InstancedMesh'), + (r.count = this.count), + (r.instanceMatrix = this.instanceMatrix.toJSON())), + this.isMesh || this.isLine || this.isPoints) + ) { + r.geometry = i(e.geometries, this.geometry) + var o = this.geometry.parameters + if (void 0 !== o && void 0 !== o.shapes) { + var a = o.shapes + if (Array.isArray(a)) + for (var s = 0, l = a.length; s < l; s++) { + var c = a[s] + i(e.shapes, c) + } + else i(e.shapes, a) + } + } + if ( + (this.isSkinnedMesh && + ((r.bindMode = this.bindMode), + (r.bindMatrix = this.bindMatrix.toArray()), + void 0 !== this.skeleton && + (i(e.skeletons, this.skeleton), (r.skeleton = this.skeleton.uuid))), + void 0 !== this.material) + ) + if (Array.isArray(this.material)) { + for (var u = [], h = 0, d = this.material.length; h < d; h++) + u.push(i(e.materials, this.material[h])) + r.material = u + } else r.material = i(e.materials, this.material) + if (this.children.length > 0) { + r.children = [] + for (var p = 0; p < this.children.length; p++) + r.children.push(this.children[p].toJSON(e).object) + } + if (this.animations.length > 0) { + r.animations = [] + for (var f = 0; f < this.animations.length; f++) { + var m = this.animations[f] + r.animations.push(i(e.animations, m)) + } + } + if (t) { + var v = E(e.geometries), + g = E(e.materials), + y = E(e.textures), + b = E(e.images), + A = E(e.shapes), + w = E(e.skeletons), + x = E(e.animations) + v.length > 0 && (n.geometries = v), + g.length > 0 && (n.materials = g), + y.length > 0 && (n.textures = y), + b.length > 0 && (n.images = b), + A.length > 0 && (n.shapes = A), + w.length > 0 && (n.skeletons = w), + x.length > 0 && (n.animations = x) + } + return (n.object = r), n + function E(e) { + var t = [] + for (var n in e) { + var r = e[n] + delete r.metadata, t.push(r) + } + return t + } + }, + clone: function (e) { + return new this.constructor().copy(this, e) + }, + copy: function (e, t) { + if ( + (void 0 === t && (t = !0), + (this.name = e.name), + this.up.copy(e.up), + this.position.copy(e.position), + (this.rotation.order = e.rotation.order), + this.quaternion.copy(e.quaternion), + this.scale.copy(e.scale), + this.matrix.copy(e.matrix), + this.matrixWorld.copy(e.matrixWorld), + (this.matrixAutoUpdate = e.matrixAutoUpdate), + (this.matrixWorldNeedsUpdate = e.matrixWorldNeedsUpdate), + (this.layers.mask = e.layers.mask), + (this.visible = e.visible), + (this.castShadow = e.castShadow), + (this.receiveShadow = e.receiveShadow), + (this.frustumCulled = e.frustumCulled), + (this.renderOrder = e.renderOrder), + (this.userData = JSON.parse(JSON.stringify(e.userData))), + !0 === t) + ) + for (var n = 0; n < e.children.length; n++) { + var r = e.children[n] + this.add(r.clone()) + } + return this + }, + })) + var li = new lr(), + ci = new lr(), + ui = new $n(), + hi = (function () { + function e(e, t) { + Object.defineProperty(this, 'isPlane', { value: !0 }), + (this.normal = void 0 !== e ? e : new lr(1, 0, 0)), + (this.constant = void 0 !== t ? t : 0) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.normal.copy(e), (this.constant = t), this + }), + (t.setComponents = function (e, t, n, r) { + return this.normal.set(e, t, n), (this.constant = r), this + }), + (t.setFromNormalAndCoplanarPoint = function (e, t) { + return this.normal.copy(e), (this.constant = -t.dot(this.normal)), this + }), + (t.setFromCoplanarPoints = function (e, t, n) { + var r = li.subVectors(n, t).cross(ci.subVectors(e, t)).normalize() + return this.setFromNormalAndCoplanarPoint(r, e), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.normal.copy(e.normal), (this.constant = e.constant), this + }), + (t.normalize = function () { + var e = 1 / this.normal.length() + return this.normal.multiplyScalar(e), (this.constant *= e), this + }), + (t.negate = function () { + return (this.constant *= -1), this.normal.negate(), this + }), + (t.distanceToPoint = function (e) { + return this.normal.dot(e) + this.constant + }), + (t.distanceToSphere = function (e) { + return this.distanceToPoint(e.center) - e.radius + }), + (t.projectPoint = function (e, t) { + return ( + void 0 === t && + (console.warn( + 'THREE.Plane: .projectPoint() target is now required', + ), + (t = new lr())), + t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e) + ) + }), + (t.intersectLine = function (e, t) { + void 0 === t && + (console.warn('THREE.Plane: .intersectLine() target is now required'), + (t = new lr())) + var n = e.delta(li), + r = this.normal.dot(n) + if (0 === r) + return 0 === this.distanceToPoint(e.start) ? t.copy(e.start) : void 0 + var i = -(e.start.dot(this.normal) + this.constant) / r + return i < 0 || i > 1 + ? void 0 + : t.copy(n).multiplyScalar(i).add(e.start) + }), + (t.intersectsLine = function (e) { + var t = this.distanceToPoint(e.start), + n = this.distanceToPoint(e.end) + return (t < 0 && n > 0) || (n < 0 && t > 0) + }), + (t.intersectsBox = function (e) { + return e.intersectsPlane(this) + }), + (t.intersectsSphere = function (e) { + return e.intersectsPlane(this) + }), + (t.coplanarPoint = function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Plane: .coplanarPoint() target is now required', + ), + (e = new lr())), + e.copy(this.normal).multiplyScalar(-this.constant) + ) + }), + (t.applyMatrix4 = function (e, t) { + var n = t || ui.getNormalMatrix(e), + r = this.coplanarPoint(li).applyMatrix4(e), + i = this.normal.applyMatrix3(n).normalize() + return (this.constant = -r.dot(i)), this + }), + (t.translate = function (e) { + return (this.constant -= e.dot(this.normal)), this + }), + (t.equals = function (e) { + return e.normal.equals(this.normal) && e.constant === this.constant + }), + e + ) + })(), + di = new lr(), + pi = new lr(), + fi = new lr(), + mi = new lr(), + vi = new lr(), + gi = new lr(), + yi = new lr(), + bi = new lr(), + Ai = new lr(), + wi = new lr(), + xi = (function () { + function e(e, t, n) { + ;(this.a = void 0 !== e ? e : new lr()), + (this.b = void 0 !== t ? t : new lr()), + (this.c = void 0 !== n ? n : new lr()) + } + ;(e.getNormal = function (e, t, n, r) { + void 0 === r && + (console.warn('THREE.Triangle: .getNormal() target is now required'), + (r = new lr())), + r.subVectors(n, t), + di.subVectors(e, t), + r.cross(di) + var i = r.lengthSq() + return i > 0 ? r.multiplyScalar(1 / Math.sqrt(i)) : r.set(0, 0, 0) + }), + (e.getBarycoord = function (e, t, n, r, i) { + di.subVectors(r, t), pi.subVectors(n, t), fi.subVectors(e, t) + var o = di.dot(di), + a = di.dot(pi), + s = di.dot(fi), + l = pi.dot(pi), + c = pi.dot(fi), + u = o * l - a * a + if ( + (void 0 === i && + (console.warn( + 'THREE.Triangle: .getBarycoord() target is now required', + ), + (i = new lr())), + 0 === u) + ) + return i.set(-2, -1, -1) + var h = 1 / u, + d = (l * s - a * c) * h, + p = (o * c - a * s) * h + return i.set(1 - d - p, p, d) + }), + (e.containsPoint = function (e, t, n, r) { + return ( + this.getBarycoord(e, t, n, r, mi), + mi.x >= 0 && mi.y >= 0 && mi.x + mi.y <= 1 + ) + }), + (e.getUV = function (e, t, n, r, i, o, a, s) { + return ( + this.getBarycoord(e, t, n, r, mi), + s.set(0, 0), + s.addScaledVector(i, mi.x), + s.addScaledVector(o, mi.y), + s.addScaledVector(a, mi.z), + s + ) + }), + (e.isFrontFacing = function (e, t, n, r) { + return di.subVectors(n, t), pi.subVectors(e, t), di.cross(pi).dot(r) < 0 + }) + var t = e.prototype + return ( + (t.set = function (e, t, n) { + return this.a.copy(e), this.b.copy(t), this.c.copy(n), this + }), + (t.setFromPointsAndIndices = function (e, t, n, r) { + return this.a.copy(e[t]), this.b.copy(e[n]), this.c.copy(e[r]), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.a.copy(e.a), this.b.copy(e.b), this.c.copy(e.c), this + }), + (t.getArea = function () { + return ( + di.subVectors(this.c, this.b), + pi.subVectors(this.a, this.b), + 0.5 * di.cross(pi).length() + ) + }), + (t.getMidpoint = function (e) { + return ( + void 0 === e && + (console.warn( + 'THREE.Triangle: .getMidpoint() target is now required', + ), + (e = new lr())), + e + .addVectors(this.a, this.b) + .add(this.c) + .multiplyScalar(1 / 3) + ) + }), + (t.getNormal = function (t) { + return e.getNormal(this.a, this.b, this.c, t) + }), + (t.getPlane = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Triangle: .getPlane() target is now required'), + (e = new hi())), + e.setFromCoplanarPoints(this.a, this.b, this.c) + ) + }), + (t.getBarycoord = function (t, n) { + return e.getBarycoord(t, this.a, this.b, this.c, n) + }), + (t.getUV = function (t, n, r, i, o) { + return e.getUV(t, this.a, this.b, this.c, n, r, i, o) + }), + (t.containsPoint = function (t) { + return e.containsPoint(t, this.a, this.b, this.c) + }), + (t.isFrontFacing = function (t) { + return e.isFrontFacing(this.a, this.b, this.c, t) + }), + (t.intersectsBox = function (e) { + return e.intersectsTriangle(this) + }), + (t.closestPointToPoint = function (e, t) { + void 0 === t && + (console.warn( + 'THREE.Triangle: .closestPointToPoint() target is now required', + ), + (t = new lr())) + var n, + r, + i = this.a, + o = this.b, + a = this.c + vi.subVectors(o, i), gi.subVectors(a, i), bi.subVectors(e, i) + var s = vi.dot(bi), + l = gi.dot(bi) + if (s <= 0 && l <= 0) return t.copy(i) + Ai.subVectors(e, o) + var c = vi.dot(Ai), + u = gi.dot(Ai) + if (c >= 0 && u <= c) return t.copy(o) + var h = s * u - c * l + if (h <= 0 && s >= 0 && c <= 0) + return (n = s / (s - c)), t.copy(i).addScaledVector(vi, n) + wi.subVectors(e, a) + var d = vi.dot(wi), + p = gi.dot(wi) + if (p >= 0 && d <= p) return t.copy(a) + var f = d * l - s * p + if (f <= 0 && l >= 0 && p <= 0) + return (r = l / (l - p)), t.copy(i).addScaledVector(gi, r) + var m = c * p - d * u + if (m <= 0 && u - c >= 0 && d - p >= 0) + return ( + yi.subVectors(a, o), + (r = (u - c) / (u - c + (d - p))), + t.copy(o).addScaledVector(yi, r) + ) + var v = 1 / (m + f + h) + return ( + (n = f * v), + (r = h * v), + t.copy(i).addScaledVector(vi, n).addScaledVector(gi, r) + ) + }), + (t.equals = function (e) { + return e.a.equals(this.a) && e.b.equals(this.b) && e.c.equals(this.c) + }), + e + ) + })(), + Ei = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074, + }, + Mi = { h: 0, s: 0, l: 0 }, + _i = { h: 0, s: 0, l: 0 } + function Ti(e, t, n) { + return ( + n < 0 && (n += 1), + n > 1 && (n -= 1), + n < 1 / 6 + ? e + 6 * (t - e) * n + : n < 0.5 + ? t + : n < 2 / 3 + ? e + 6 * (t - e) * (2 / 3 - n) + : e + ) + } + function Si(e) { + return e < 0.04045 + ? 0.0773993808 * e + : Math.pow(0.9478672986 * e + 0.0521327014, 2.4) + } + function Ci(e) { + return e < 0.0031308 ? 12.92 * e : 1.055 * Math.pow(e, 0.41666) - 0.055 + } + var Li = (function () { + function e(e, t, n) { + return ( + Object.defineProperty(this, 'isColor', { value: !0 }), + void 0 === t && void 0 === n ? this.set(e) : this.setRGB(e, t, n) + ) + } + var t = e.prototype + return ( + (t.set = function (e) { + return ( + e && e.isColor + ? this.copy(e) + : 'number' === typeof e + ? this.setHex(e) + : 'string' === typeof e && this.setStyle(e), + this + ) + }), + (t.setScalar = function (e) { + return (this.r = e), (this.g = e), (this.b = e), this + }), + (t.setHex = function (e) { + return ( + (e = Math.floor(e)), + (this.r = ((e >> 16) & 255) / 255), + (this.g = ((e >> 8) & 255) / 255), + (this.b = (255 & e) / 255), + this + ) + }), + (t.setRGB = function (e, t, n) { + return (this.r = e), (this.g = t), (this.b = n), this + }), + (t.setHSL = function (e, t, n) { + if ( + ((e = Kn.euclideanModulo(e, 1)), + (t = Kn.clamp(t, 0, 1)), + (n = Kn.clamp(n, 0, 1)), + 0 === t) + ) + this.r = this.g = this.b = n + else { + var r = n <= 0.5 ? n * (1 + t) : n + t - n * t, + i = 2 * n - r + ;(this.r = Ti(i, r, e + 1 / 3)), + (this.g = Ti(i, r, e)), + (this.b = Ti(i, r, e - 1 / 3)) + } + return this + }), + (t.setStyle = function (e) { + function t(t) { + void 0 !== t && + parseFloat(t) < 1 && + console.warn( + 'THREE.Color: Alpha component of ' + e + ' will be ignored.', + ) + } + var n + if ((n = /^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e))) { + var r, + i = n[1], + o = n[2] + switch (i) { + case 'rgb': + case 'rgba': + if ( + (r = + /^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( + o, + )) + ) + return ( + (this.r = Math.min(255, parseInt(r[1], 10)) / 255), + (this.g = Math.min(255, parseInt(r[2], 10)) / 255), + (this.b = Math.min(255, parseInt(r[3], 10)) / 255), + t(r[4]), + this + ) + if ( + (r = + /^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( + o, + )) + ) + return ( + (this.r = Math.min(100, parseInt(r[1], 10)) / 100), + (this.g = Math.min(100, parseInt(r[2], 10)) / 100), + (this.b = Math.min(100, parseInt(r[3], 10)) / 100), + t(r[4]), + this + ) + break + case 'hsl': + case 'hsla': + if ( + (r = + /^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec( + o, + )) + ) { + var a = parseFloat(r[1]) / 360, + s = parseInt(r[2], 10) / 100, + l = parseInt(r[3], 10) / 100 + return t(r[4]), this.setHSL(a, s, l) + } + } + } else if ((n = /^\#([A-Fa-f\d]+)$/.exec(e))) { + var c = n[1], + u = c.length + if (3 === u) + return ( + (this.r = parseInt(c.charAt(0) + c.charAt(0), 16) / 255), + (this.g = parseInt(c.charAt(1) + c.charAt(1), 16) / 255), + (this.b = parseInt(c.charAt(2) + c.charAt(2), 16) / 255), + this + ) + if (6 === u) + return ( + (this.r = parseInt(c.charAt(0) + c.charAt(1), 16) / 255), + (this.g = parseInt(c.charAt(2) + c.charAt(3), 16) / 255), + (this.b = parseInt(c.charAt(4) + c.charAt(5), 16) / 255), + this + ) + } + return e && e.length > 0 ? this.setColorName(e) : this + }), + (t.setColorName = function (e) { + var t = Ei[e] + return ( + void 0 !== t + ? this.setHex(t) + : console.warn('THREE.Color: Unknown color ' + e), + this + ) + }), + (t.clone = function () { + return new this.constructor(this.r, this.g, this.b) + }), + (t.copy = function (e) { + return (this.r = e.r), (this.g = e.g), (this.b = e.b), this + }), + (t.copyGammaToLinear = function (e, t) { + return ( + void 0 === t && (t = 2), + (this.r = Math.pow(e.r, t)), + (this.g = Math.pow(e.g, t)), + (this.b = Math.pow(e.b, t)), + this + ) + }), + (t.copyLinearToGamma = function (e, t) { + void 0 === t && (t = 2) + var n = t > 0 ? 1 / t : 1 + return ( + (this.r = Math.pow(e.r, n)), + (this.g = Math.pow(e.g, n)), + (this.b = Math.pow(e.b, n)), + this + ) + }), + (t.convertGammaToLinear = function (e) { + return this.copyGammaToLinear(this, e), this + }), + (t.convertLinearToGamma = function (e) { + return this.copyLinearToGamma(this, e), this + }), + (t.copySRGBToLinear = function (e) { + return (this.r = Si(e.r)), (this.g = Si(e.g)), (this.b = Si(e.b)), this + }), + (t.copyLinearToSRGB = function (e) { + return (this.r = Ci(e.r)), (this.g = Ci(e.g)), (this.b = Ci(e.b)), this + }), + (t.convertSRGBToLinear = function () { + return this.copySRGBToLinear(this), this + }), + (t.convertLinearToSRGB = function () { + return this.copyLinearToSRGB(this), this + }), + (t.getHex = function () { + return ( + ((255 * this.r) << 16) ^ ((255 * this.g) << 8) ^ ((255 * this.b) << 0) + ) + }), + (t.getHexString = function () { + return ('000000' + this.getHex().toString(16)).slice(-6) + }), + (t.getHSL = function (e) { + void 0 === e && + (console.warn('THREE.Color: .getHSL() target is now required'), + (e = { h: 0, s: 0, l: 0 })) + var t, + n, + r = this.r, + i = this.g, + o = this.b, + a = Math.max(r, i, o), + s = Math.min(r, i, o), + l = (s + a) / 2 + if (s === a) (t = 0), (n = 0) + else { + var c = a - s + switch (((n = l <= 0.5 ? c / (a + s) : c / (2 - a - s)), a)) { + case r: + t = (i - o) / c + (i < o ? 6 : 0) + break + case i: + t = (o - r) / c + 2 + break + case o: + t = (r - i) / c + 4 + } + t /= 6 + } + return (e.h = t), (e.s = n), (e.l = l), e + }), + (t.getStyle = function () { + return ( + 'rgb(' + + ((255 * this.r) | 0) + + ',' + + ((255 * this.g) | 0) + + ',' + + ((255 * this.b) | 0) + + ')' + ) + }), + (t.offsetHSL = function (e, t, n) { + return ( + this.getHSL(Mi), + (Mi.h += e), + (Mi.s += t), + (Mi.l += n), + this.setHSL(Mi.h, Mi.s, Mi.l), + this + ) + }), + (t.add = function (e) { + return (this.r += e.r), (this.g += e.g), (this.b += e.b), this + }), + (t.addColors = function (e, t) { + return ( + (this.r = e.r + t.r), (this.g = e.g + t.g), (this.b = e.b + t.b), this + ) + }), + (t.addScalar = function (e) { + return (this.r += e), (this.g += e), (this.b += e), this + }), + (t.sub = function (e) { + return ( + (this.r = Math.max(0, this.r - e.r)), + (this.g = Math.max(0, this.g - e.g)), + (this.b = Math.max(0, this.b - e.b)), + this + ) + }), + (t.multiply = function (e) { + return (this.r *= e.r), (this.g *= e.g), (this.b *= e.b), this + }), + (t.multiplyScalar = function (e) { + return (this.r *= e), (this.g *= e), (this.b *= e), this + }), + (t.lerp = function (e, t) { + return ( + (this.r += (e.r - this.r) * t), + (this.g += (e.g - this.g) * t), + (this.b += (e.b - this.b) * t), + this + ) + }), + (t.lerpColors = function (e, t, n) { + return ( + (this.r = e.r + (t.r - e.r) * n), + (this.g = e.g + (t.g - e.g) * n), + (this.b = e.b + (t.b - e.b) * n), + this + ) + }), + (t.lerpHSL = function (e, t) { + this.getHSL(Mi), e.getHSL(_i) + var n = Kn.lerp(Mi.h, _i.h, t), + r = Kn.lerp(Mi.s, _i.s, t), + i = Kn.lerp(Mi.l, _i.l, t) + return this.setHSL(n, r, i), this + }), + (t.equals = function (e) { + return e.r === this.r && e.g === this.g && e.b === this.b + }), + (t.fromArray = function (e, t) { + return ( + void 0 === t && (t = 0), + (this.r = e[t]), + (this.g = e[t + 1]), + (this.b = e[t + 2]), + this + ) + }), + (t.toArray = function (e, t) { + return ( + void 0 === e && (e = []), + void 0 === t && (t = 0), + (e[t] = this.r), + (e[t + 1] = this.g), + (e[t + 2] = this.b), + e + ) + }), + (t.fromBufferAttribute = function (e, t) { + return ( + (this.r = e.getX(t)), + (this.g = e.getY(t)), + (this.b = e.getZ(t)), + !0 === e.normalized && + ((this.r /= 255), (this.g /= 255), (this.b /= 255)), + this + ) + }), + (t.toJSON = function () { + return this.getHex() + }), + e + ) + })() + ;(Li.NAMES = Ei), + (Li.prototype.r = 1), + (Li.prototype.g = 1), + (Li.prototype.b = 1) + var Ri = (function () { + function e(e, t, n, r, i, o) { + void 0 === o && (o = 0), + (this.a = e), + (this.b = t), + (this.c = n), + (this.normal = r && r.isVector3 ? r : new lr()), + (this.vertexNormals = Array.isArray(r) ? r : []), + (this.color = i && i.isColor ? i : new Li()), + (this.vertexColors = Array.isArray(i) ? i : []), + (this.materialIndex = o) + } + var t = e.prototype + return ( + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + ;(this.a = e.a), + (this.b = e.b), + (this.c = e.c), + this.normal.copy(e.normal), + this.color.copy(e.color), + (this.materialIndex = e.materialIndex) + for (var t = 0, n = e.vertexNormals.length; t < n; t++) + this.vertexNormals[t] = e.vertexNormals[t].clone() + for (var r = 0, i = e.vertexColors.length; r < i; r++) + this.vertexColors[r] = e.vertexColors[r].clone() + return this + }), + e + ) + })(), + Pi = 0 + function Di() { + Object.defineProperty(this, 'id', { value: Pi++ }), + (this.uuid = Kn.generateUUID()), + (this.name = ''), + (this.type = 'Material'), + (this.fog = !0), + (this.blending = w), + (this.side = m), + (this.flatShading = !1), + (this.vertexColors = !1), + (this.opacity = 1), + (this.transparent = !1), + (this.blendSrc = B), + (this.blendDst = F), + (this.blendEquation = T), + (this.blendSrcAlpha = null), + (this.blendDstAlpha = null), + (this.blendEquationAlpha = null), + (this.depthFunc = W), + (this.depthTest = !0), + (this.depthWrite = !0), + (this.stencilWriteMask = 255), + (this.stencilFunc = _n), + (this.stencilRef = 0), + (this.stencilFuncMask = 255), + (this.stencilFail = hn), + (this.stencilZFail = hn), + (this.stencilZPass = hn), + (this.stencilWrite = !1), + (this.clippingPlanes = null), + (this.clipIntersection = !1), + (this.clipShadows = !1), + (this.shadowSide = null), + (this.colorWrite = !0), + (this.precision = null), + (this.polygonOffset = !1), + (this.polygonOffsetFactor = 0), + (this.polygonOffsetUnits = 0), + (this.dithering = !1), + (this.alphaTest = 0), + (this.premultipliedAlpha = !1), + (this.visible = !0), + (this.toneMapped = !0), + (this.userData = {}), + (this.version = 0) + } + function Oi(e) { + Di.call(this), + (this.type = 'MeshBasicMaterial'), + (this.color = new Li(16777215)), + (this.map = null), + (this.lightMap = null), + (this.lightMapIntensity = 1), + (this.aoMap = null), + (this.aoMapIntensity = 1), + (this.specularMap = null), + (this.alphaMap = null), + (this.envMap = null), + (this.combine = Z), + (this.reflectivity = 1), + (this.refractionRatio = 0.98), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.wireframeLinecap = 'round'), + (this.wireframeLinejoin = 'round'), + (this.skinning = !1), + (this.morphTargets = !1), + this.setValues(e) + } + ;(Di.prototype = Object.assign(Object.create(qn.prototype), { + constructor: Di, + isMaterial: !0, + onBeforeCompile: function () {}, + customProgramCacheKey: function () { + return this.onBeforeCompile.toString() + }, + setValues: function (e) { + if (void 0 !== e) + for (var t in e) { + var n = e[t] + if (void 0 !== n) + if ('shading' !== t) { + var r = this[t] + void 0 !== r + ? r && r.isColor + ? r.set(n) + : r && r.isVector3 && n && n.isVector3 + ? r.copy(n) + : (this[t] = n) + : console.warn( + 'THREE.' + + this.type + + ": '" + + t + + "' is not a property of this material.", + ) + } else + console.warn( + 'THREE.' + + this.type + + ': .shading has been removed. Use the boolean .flatShading instead.', + ), + (this.flatShading = n === y) + else console.warn("THREE.Material: '" + t + "' parameter is undefined.") + } + }, + toJSON: function (e) { + var t = void 0 === e || 'string' === typeof e + t && (e = { textures: {}, images: {} }) + var n = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON', + }, + } + function r(e) { + var t = [] + for (var n in e) { + var r = e[n] + delete r.metadata, t.push(r) + } + return t + } + if ( + ((n.uuid = this.uuid), + (n.type = this.type), + '' !== this.name && (n.name = this.name), + this.color && this.color.isColor && (n.color = this.color.getHex()), + void 0 !== this.roughness && (n.roughness = this.roughness), + void 0 !== this.metalness && (n.metalness = this.metalness), + this.sheen && this.sheen.isColor && (n.sheen = this.sheen.getHex()), + this.emissive && + this.emissive.isColor && + (n.emissive = this.emissive.getHex()), + this.emissiveIntensity && + 1 !== this.emissiveIntensity && + (n.emissiveIntensity = this.emissiveIntensity), + this.specular && + this.specular.isColor && + (n.specular = this.specular.getHex()), + void 0 !== this.shininess && (n.shininess = this.shininess), + void 0 !== this.clearcoat && (n.clearcoat = this.clearcoat), + void 0 !== this.clearcoatRoughness && + (n.clearcoatRoughness = this.clearcoatRoughness), + this.clearcoatMap && + this.clearcoatMap.isTexture && + (n.clearcoatMap = this.clearcoatMap.toJSON(e).uuid), + this.clearcoatRoughnessMap && + this.clearcoatRoughnessMap.isTexture && + (n.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(e).uuid), + this.clearcoatNormalMap && + this.clearcoatNormalMap.isTexture && + ((n.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(e).uuid), + (n.clearcoatNormalScale = this.clearcoatNormalScale.toArray())), + this.map && this.map.isTexture && (n.map = this.map.toJSON(e).uuid), + this.matcap && + this.matcap.isTexture && + (n.matcap = this.matcap.toJSON(e).uuid), + this.alphaMap && + this.alphaMap.isTexture && + (n.alphaMap = this.alphaMap.toJSON(e).uuid), + this.lightMap && + this.lightMap.isTexture && + (n.lightMap = this.lightMap.toJSON(e).uuid), + this.aoMap && + this.aoMap.isTexture && + ((n.aoMap = this.aoMap.toJSON(e).uuid), + (n.aoMapIntensity = this.aoMapIntensity)), + this.bumpMap && + this.bumpMap.isTexture && + ((n.bumpMap = this.bumpMap.toJSON(e).uuid), + (n.bumpScale = this.bumpScale)), + this.normalMap && + this.normalMap.isTexture && + ((n.normalMap = this.normalMap.toJSON(e).uuid), + (n.normalMapType = this.normalMapType), + (n.normalScale = this.normalScale.toArray())), + this.displacementMap && + this.displacementMap.isTexture && + ((n.displacementMap = this.displacementMap.toJSON(e).uuid), + (n.displacementScale = this.displacementScale), + (n.displacementBias = this.displacementBias)), + this.roughnessMap && + this.roughnessMap.isTexture && + (n.roughnessMap = this.roughnessMap.toJSON(e).uuid), + this.metalnessMap && + this.metalnessMap.isTexture && + (n.metalnessMap = this.metalnessMap.toJSON(e).uuid), + this.emissiveMap && + this.emissiveMap.isTexture && + (n.emissiveMap = this.emissiveMap.toJSON(e).uuid), + this.specularMap && + this.specularMap.isTexture && + (n.specularMap = this.specularMap.toJSON(e).uuid), + this.envMap && + this.envMap.isTexture && + ((n.envMap = this.envMap.toJSON(e).uuid), + (n.reflectivity = this.reflectivity), + (n.refractionRatio = this.refractionRatio), + void 0 !== this.combine && (n.combine = this.combine), + void 0 !== this.envMapIntensity && + (n.envMapIntensity = this.envMapIntensity)), + this.gradientMap && + this.gradientMap.isTexture && + (n.gradientMap = this.gradientMap.toJSON(e).uuid), + void 0 !== this.size && (n.size = this.size), + void 0 !== this.sizeAttenuation && + (n.sizeAttenuation = this.sizeAttenuation), + this.blending !== w && (n.blending = this.blending), + !0 === this.flatShading && (n.flatShading = this.flatShading), + this.side !== m && (n.side = this.side), + this.vertexColors && (n.vertexColors = !0), + this.opacity < 1 && (n.opacity = this.opacity), + !0 === this.transparent && (n.transparent = this.transparent), + (n.depthFunc = this.depthFunc), + (n.depthTest = this.depthTest), + (n.depthWrite = this.depthWrite), + (n.stencilWrite = this.stencilWrite), + (n.stencilWriteMask = this.stencilWriteMask), + (n.stencilFunc = this.stencilFunc), + (n.stencilRef = this.stencilRef), + (n.stencilFuncMask = this.stencilFuncMask), + (n.stencilFail = this.stencilFail), + (n.stencilZFail = this.stencilZFail), + (n.stencilZPass = this.stencilZPass), + this.rotation && 0 !== this.rotation && (n.rotation = this.rotation), + !0 === this.polygonOffset && (n.polygonOffset = !0), + 0 !== this.polygonOffsetFactor && + (n.polygonOffsetFactor = this.polygonOffsetFactor), + 0 !== this.polygonOffsetUnits && + (n.polygonOffsetUnits = this.polygonOffsetUnits), + this.linewidth && 1 !== this.linewidth && (n.linewidth = this.linewidth), + void 0 !== this.dashSize && (n.dashSize = this.dashSize), + void 0 !== this.gapSize && (n.gapSize = this.gapSize), + void 0 !== this.scale && (n.scale = this.scale), + !0 === this.dithering && (n.dithering = !0), + this.alphaTest > 0 && (n.alphaTest = this.alphaTest), + !0 === this.premultipliedAlpha && + (n.premultipliedAlpha = this.premultipliedAlpha), + !0 === this.wireframe && (n.wireframe = this.wireframe), + this.wireframeLinewidth > 1 && + (n.wireframeLinewidth = this.wireframeLinewidth), + 'round' !== this.wireframeLinecap && + (n.wireframeLinecap = this.wireframeLinecap), + 'round' !== this.wireframeLinejoin && + (n.wireframeLinejoin = this.wireframeLinejoin), + !0 === this.morphTargets && (n.morphTargets = !0), + !0 === this.morphNormals && (n.morphNormals = !0), + !0 === this.skinning && (n.skinning = !0), + !1 === this.visible && (n.visible = !1), + !1 === this.toneMapped && (n.toneMapped = !1), + '{}' !== JSON.stringify(this.userData) && (n.userData = this.userData), + t) + ) { + var i = r(e.textures), + o = r(e.images) + i.length > 0 && (n.textures = i), o.length > 0 && (n.images = o) + } + return n + }, + clone: function () { + return new this.constructor().copy(this) + }, + copy: function (e) { + ;(this.name = e.name), + (this.fog = e.fog), + (this.blending = e.blending), + (this.side = e.side), + (this.flatShading = e.flatShading), + (this.vertexColors = e.vertexColors), + (this.opacity = e.opacity), + (this.transparent = e.transparent), + (this.blendSrc = e.blendSrc), + (this.blendDst = e.blendDst), + (this.blendEquation = e.blendEquation), + (this.blendSrcAlpha = e.blendSrcAlpha), + (this.blendDstAlpha = e.blendDstAlpha), + (this.blendEquationAlpha = e.blendEquationAlpha), + (this.depthFunc = e.depthFunc), + (this.depthTest = e.depthTest), + (this.depthWrite = e.depthWrite), + (this.stencilWriteMask = e.stencilWriteMask), + (this.stencilFunc = e.stencilFunc), + (this.stencilRef = e.stencilRef), + (this.stencilFuncMask = e.stencilFuncMask), + (this.stencilFail = e.stencilFail), + (this.stencilZFail = e.stencilZFail), + (this.stencilZPass = e.stencilZPass), + (this.stencilWrite = e.stencilWrite) + var t = e.clippingPlanes, + n = null + if (null !== t) { + var r = t.length + n = new Array(r) + for (var i = 0; i !== r; ++i) n[i] = t[i].clone() + } + return ( + (this.clippingPlanes = n), + (this.clipIntersection = e.clipIntersection), + (this.clipShadows = e.clipShadows), + (this.shadowSide = e.shadowSide), + (this.colorWrite = e.colorWrite), + (this.precision = e.precision), + (this.polygonOffset = e.polygonOffset), + (this.polygonOffsetFactor = e.polygonOffsetFactor), + (this.polygonOffsetUnits = e.polygonOffsetUnits), + (this.dithering = e.dithering), + (this.alphaTest = e.alphaTest), + (this.premultipliedAlpha = e.premultipliedAlpha), + (this.visible = e.visible), + (this.toneMapped = e.toneMapped), + (this.userData = JSON.parse(JSON.stringify(e.userData))), + this + ) + }, + dispose: function () { + this.dispatchEvent({ type: 'dispose' }) + }, + })), + Object.defineProperty(Di.prototype, 'needsUpdate', { + set: function (e) { + !0 === e && this.version++ + }, + }), + (Oi.prototype = Object.create(Di.prototype)), + (Oi.prototype.constructor = Oi), + (Oi.prototype.isMeshBasicMaterial = !0), + (Oi.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.map = e.map), + (this.lightMap = e.lightMap), + (this.lightMapIntensity = e.lightMapIntensity), + (this.aoMap = e.aoMap), + (this.aoMapIntensity = e.aoMapIntensity), + (this.specularMap = e.specularMap), + (this.alphaMap = e.alphaMap), + (this.envMap = e.envMap), + (this.combine = e.combine), + (this.reflectivity = e.reflectivity), + (this.refractionRatio = e.refractionRatio), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.wireframeLinecap = e.wireframeLinecap), + (this.wireframeLinejoin = e.wireframeLinejoin), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + this + ) + }) + var Ii = new lr(), + Bi = new Jn() + function Fi(e, t, n) { + if (Array.isArray(e)) + throw new TypeError('THREE.BufferAttribute: array should be a Typed Array.') + ;(this.name = ''), + (this.array = e), + (this.itemSize = t), + (this.count = void 0 !== e ? e.length / t : 0), + (this.normalized = !0 === n), + (this.usage = Tn), + (this.updateRange = { offset: 0, count: -1 }), + (this.version = 0) + } + function ki(e, t, n) { + Fi.call(this, new Int8Array(e), t, n) + } + function Ni(e, t, n) { + Fi.call(this, new Uint8Array(e), t, n) + } + function Ui(e, t, n) { + Fi.call(this, new Uint8ClampedArray(e), t, n) + } + function Hi(e, t, n) { + Fi.call(this, new Int16Array(e), t, n) + } + function Gi(e, t, n) { + Fi.call(this, new Uint16Array(e), t, n) + } + function zi(e, t, n) { + Fi.call(this, new Int32Array(e), t, n) + } + function ji(e, t, n) { + Fi.call(this, new Uint32Array(e), t, n) + } + function Vi(e, t, n) { + Fi.call(this, new Uint16Array(e), t, n) + } + function Wi(e, t, n) { + Fi.call(this, new Float32Array(e), t, n) + } + function qi(e, t, n) { + Fi.call(this, new Float64Array(e), t, n) + } + function Xi(e) { + if (0 === e.length) return -1 / 0 + for (var t = e[0], n = 1, r = e.length; n < r; ++n) e[n] > t && (t = e[n]) + return t + } + Object.defineProperty(Fi.prototype, 'needsUpdate', { + set: function (e) { + !0 === e && this.version++ + }, + }), + Object.assign(Fi.prototype, { + isBufferAttribute: !0, + onUploadCallback: function () {}, + setUsage: function (e) { + return (this.usage = e), this + }, + copy: function (e) { + return ( + (this.name = e.name), + (this.array = new e.array.constructor(e.array)), + (this.itemSize = e.itemSize), + (this.count = e.count), + (this.normalized = e.normalized), + (this.usage = e.usage), + this + ) + }, + copyAt: function (e, t, n) { + ;(e *= this.itemSize), (n *= t.itemSize) + for (var r = 0, i = this.itemSize; r < i; r++) + this.array[e + r] = t.array[n + r] + return this + }, + copyArray: function (e) { + return this.array.set(e), this + }, + copyColorsArray: function (e) { + for (var t = this.array, n = 0, r = 0, i = e.length; r < i; r++) { + var o = e[r] + void 0 === o && + (console.warn( + 'THREE.BufferAttribute.copyColorsArray(): color is undefined', + r, + ), + (o = new Li())), + (t[n++] = o.r), + (t[n++] = o.g), + (t[n++] = o.b) + } + return this + }, + copyVector2sArray: function (e) { + for (var t = this.array, n = 0, r = 0, i = e.length; r < i; r++) { + var o = e[r] + void 0 === o && + (console.warn( + 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', + r, + ), + (o = new Jn())), + (t[n++] = o.x), + (t[n++] = o.y) + } + return this + }, + copyVector3sArray: function (e) { + for (var t = this.array, n = 0, r = 0, i = e.length; r < i; r++) { + var o = e[r] + void 0 === o && + (console.warn( + 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', + r, + ), + (o = new lr())), + (t[n++] = o.x), + (t[n++] = o.y), + (t[n++] = o.z) + } + return this + }, + copyVector4sArray: function (e) { + for (var t = this.array, n = 0, r = 0, i = e.length; r < i; r++) { + var o = e[r] + void 0 === o && + (console.warn( + 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', + r, + ), + (o = new ir())), + (t[n++] = o.x), + (t[n++] = o.y), + (t[n++] = o.z), + (t[n++] = o.w) + } + return this + }, + applyMatrix3: function (e) { + if (2 === this.itemSize) + for (var t = 0, n = this.count; t < n; t++) + Bi.fromBufferAttribute(this, t), + Bi.applyMatrix3(e), + this.setXY(t, Bi.x, Bi.y) + else if (3 === this.itemSize) + for (var r = 0, i = this.count; r < i; r++) + Ii.fromBufferAttribute(this, r), + Ii.applyMatrix3(e), + this.setXYZ(r, Ii.x, Ii.y, Ii.z) + return this + }, + applyMatrix4: function (e) { + for (var t = 0, n = this.count; t < n; t++) + (Ii.x = this.getX(t)), + (Ii.y = this.getY(t)), + (Ii.z = this.getZ(t)), + Ii.applyMatrix4(e), + this.setXYZ(t, Ii.x, Ii.y, Ii.z) + return this + }, + applyNormalMatrix: function (e) { + for (var t = 0, n = this.count; t < n; t++) + (Ii.x = this.getX(t)), + (Ii.y = this.getY(t)), + (Ii.z = this.getZ(t)), + Ii.applyNormalMatrix(e), + this.setXYZ(t, Ii.x, Ii.y, Ii.z) + return this + }, + transformDirection: function (e) { + for (var t = 0, n = this.count; t < n; t++) + (Ii.x = this.getX(t)), + (Ii.y = this.getY(t)), + (Ii.z = this.getZ(t)), + Ii.transformDirection(e), + this.setXYZ(t, Ii.x, Ii.y, Ii.z) + return this + }, + set: function (e, t) { + return void 0 === t && (t = 0), this.array.set(e, t), this + }, + getX: function (e) { + return this.array[e * this.itemSize] + }, + setX: function (e, t) { + return (this.array[e * this.itemSize] = t), this + }, + getY: function (e) { + return this.array[e * this.itemSize + 1] + }, + setY: function (e, t) { + return (this.array[e * this.itemSize + 1] = t), this + }, + getZ: function (e) { + return this.array[e * this.itemSize + 2] + }, + setZ: function (e, t) { + return (this.array[e * this.itemSize + 2] = t), this + }, + getW: function (e) { + return this.array[e * this.itemSize + 3] + }, + setW: function (e, t) { + return (this.array[e * this.itemSize + 3] = t), this + }, + setXY: function (e, t, n) { + return ( + (e *= this.itemSize), + (this.array[e + 0] = t), + (this.array[e + 1] = n), + this + ) + }, + setXYZ: function (e, t, n, r) { + return ( + (e *= this.itemSize), + (this.array[e + 0] = t), + (this.array[e + 1] = n), + (this.array[e + 2] = r), + this + ) + }, + setXYZW: function (e, t, n, r, i) { + return ( + (e *= this.itemSize), + (this.array[e + 0] = t), + (this.array[e + 1] = n), + (this.array[e + 2] = r), + (this.array[e + 3] = i), + this + ) + }, + onUpload: function (e) { + return (this.onUploadCallback = e), this + }, + clone: function () { + return new this.constructor(this.array, this.itemSize).copy(this) + }, + toJSON: function () { + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.prototype.slice.call(this.array), + normalized: this.normalized, + } + }, + }), + (ki.prototype = Object.create(Fi.prototype)), + (ki.prototype.constructor = ki), + (Ni.prototype = Object.create(Fi.prototype)), + (Ni.prototype.constructor = Ni), + (Ui.prototype = Object.create(Fi.prototype)), + (Ui.prototype.constructor = Ui), + (Hi.prototype = Object.create(Fi.prototype)), + (Hi.prototype.constructor = Hi), + (Gi.prototype = Object.create(Fi.prototype)), + (Gi.prototype.constructor = Gi), + (zi.prototype = Object.create(Fi.prototype)), + (zi.prototype.constructor = zi), + (ji.prototype = Object.create(Fi.prototype)), + (ji.prototype.constructor = ji), + (Vi.prototype = Object.create(Fi.prototype)), + (Vi.prototype.constructor = Vi), + (Vi.prototype.isFloat16BufferAttribute = !0), + (Wi.prototype = Object.create(Fi.prototype)), + (Wi.prototype.constructor = Wi), + (qi.prototype = Object.create(Fi.prototype)), + (qi.prototype.constructor = qi) + var Yi = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + Uint8ClampedArray: + 'undefined' !== typeof Uint8ClampedArray ? Uint8ClampedArray : Uint8Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array, + } + function Qi(e, t) { + return new Yi[e](t) + } + var Zi = 0, + Ki = new Fr(), + Ji = new si(), + $i = new lr(), + eo = new hr(), + to = new hr(), + no = new lr() + function ro() { + Object.defineProperty(this, 'id', { value: Zi++ }), + (this.uuid = Kn.generateUUID()), + (this.name = ''), + (this.type = 'BufferGeometry'), + (this.index = null), + (this.attributes = {}), + (this.morphAttributes = {}), + (this.morphTargetsRelative = !1), + (this.groups = []), + (this.boundingBox = null), + (this.boundingSphere = null), + (this.drawRange = { start: 0, count: 1 / 0 }), + (this.userData = {}) + } + ro.prototype = Object.assign(Object.create(qn.prototype), { + constructor: ro, + isBufferGeometry: !0, + getIndex: function () { + return this.index + }, + setIndex: function (e) { + return ( + Array.isArray(e) + ? (this.index = new (Xi(e) > 65535 ? ji : Gi)(e, 1)) + : (this.index = e), + this + ) + }, + getAttribute: function (e) { + return this.attributes[e] + }, + setAttribute: function (e, t) { + return (this.attributes[e] = t), this + }, + deleteAttribute: function (e) { + return delete this.attributes[e], this + }, + hasAttribute: function (e) { + return void 0 !== this.attributes[e] + }, + addGroup: function (e, t, n) { + void 0 === n && (n = 0), + this.groups.push({ start: e, count: t, materialIndex: n }) + }, + clearGroups: function () { + this.groups = [] + }, + setDrawRange: function (e, t) { + ;(this.drawRange.start = e), (this.drawRange.count = t) + }, + applyMatrix4: function (e) { + var t = this.attributes.position + void 0 !== t && (t.applyMatrix4(e), (t.needsUpdate = !0)) + var n = this.attributes.normal + if (void 0 !== n) { + var r = new $n().getNormalMatrix(e) + n.applyNormalMatrix(r), (n.needsUpdate = !0) + } + var i = this.attributes.tangent + return ( + void 0 !== i && (i.transformDirection(e), (i.needsUpdate = !0)), + null !== this.boundingBox && this.computeBoundingBox(), + null !== this.boundingSphere && this.computeBoundingSphere(), + this + ) + }, + rotateX: function (e) { + return Ki.makeRotationX(e), this.applyMatrix4(Ki), this + }, + rotateY: function (e) { + return Ki.makeRotationY(e), this.applyMatrix4(Ki), this + }, + rotateZ: function (e) { + return Ki.makeRotationZ(e), this.applyMatrix4(Ki), this + }, + translate: function (e, t, n) { + return Ki.makeTranslation(e, t, n), this.applyMatrix4(Ki), this + }, + scale: function (e, t, n) { + return Ki.makeScale(e, t, n), this.applyMatrix4(Ki), this + }, + lookAt: function (e) { + return Ji.lookAt(e), Ji.updateMatrix(), this.applyMatrix4(Ji.matrix), this + }, + center: function () { + return ( + this.computeBoundingBox(), + this.boundingBox.getCenter($i).negate(), + this.translate($i.x, $i.y, $i.z), + this + ) + }, + setFromPoints: function (e) { + for (var t = [], n = 0, r = e.length; n < r; n++) { + var i = e[n] + t.push(i.x, i.y, i.z || 0) + } + return this.setAttribute('position', new Wi(t, 3)), this + }, + computeBoundingBox: function () { + null === this.boundingBox && (this.boundingBox = new hr()) + var e = this.attributes.position, + t = this.morphAttributes.position + if (e && e.isGLBufferAttribute) + return ( + console.error( + 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".', + this, + ), + void this.boundingBox.set( + new lr(-1 / 0, -1 / 0, -1 / 0), + new lr(1 / 0, 1 / 0, 1 / 0), + ) + ) + if (void 0 !== e) { + if ((this.boundingBox.setFromBufferAttribute(e), t)) + for (var n = 0, r = t.length; n < r; n++) { + var i = t[n] + eo.setFromBufferAttribute(i), + this.morphTargetsRelative + ? (no.addVectors(this.boundingBox.min, eo.min), + this.boundingBox.expandByPoint(no), + no.addVectors(this.boundingBox.max, eo.max), + this.boundingBox.expandByPoint(no)) + : (this.boundingBox.expandByPoint(eo.min), + this.boundingBox.expandByPoint(eo.max)) + } + } else this.boundingBox.makeEmpty() + ;(isNaN(this.boundingBox.min.x) || + isNaN(this.boundingBox.min.y) || + isNaN(this.boundingBox.min.z)) && + console.error( + 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', + this, + ) + }, + computeBoundingSphere: function () { + null === this.boundingSphere && (this.boundingSphere = new Sr()) + var e = this.attributes.position, + t = this.morphAttributes.position + if (e && e.isGLBufferAttribute) + return ( + console.error( + 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".', + this, + ), + void this.boundingSphere.set(new lr(), 1 / 0) + ) + if (e) { + var n = this.boundingSphere.center + if ((eo.setFromBufferAttribute(e), t)) + for (var r = 0, i = t.length; r < i; r++) { + var o = t[r] + to.setFromBufferAttribute(o), + this.morphTargetsRelative + ? (no.addVectors(eo.min, to.min), + eo.expandByPoint(no), + no.addVectors(eo.max, to.max), + eo.expandByPoint(no)) + : (eo.expandByPoint(to.min), eo.expandByPoint(to.max)) + } + eo.getCenter(n) + for (var a = 0, s = 0, l = e.count; s < l; s++) + no.fromBufferAttribute(e, s), (a = Math.max(a, n.distanceToSquared(no))) + if (t) + for (var c = 0, u = t.length; c < u; c++) + for ( + var h = t[c], d = this.morphTargetsRelative, p = 0, f = h.count; + p < f; + p++ + ) + no.fromBufferAttribute(h, p), + d && ($i.fromBufferAttribute(e, p), no.add($i)), + (a = Math.max(a, n.distanceToSquared(no))) + ;(this.boundingSphere.radius = Math.sqrt(a)), + isNaN(this.boundingSphere.radius) && + console.error( + 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', + this, + ) + } + }, + computeFaceNormals: function () {}, + computeTangents: function () { + var e = this.index, + t = this.attributes + if ( + null !== e && + void 0 !== t.position && + void 0 !== t.normal && + void 0 !== t.uv + ) { + var n = e.array, + r = t.position.array, + i = t.normal.array, + o = t.uv.array, + a = r.length / 3 + void 0 === t.tangent && + this.setAttribute('tangent', new Fi(new Float32Array(4 * a), 4)) + for (var s = t.tangent.array, l = [], c = [], u = 0; u < a; u++) + (l[u] = new lr()), (c[u] = new lr()) + var h = new lr(), + d = new lr(), + p = new lr(), + f = new Jn(), + m = new Jn(), + v = new Jn(), + g = new lr(), + y = new lr(), + b = this.groups + 0 === b.length && (b = [{ start: 0, count: n.length }]) + for (var A = 0, w = b.length; A < w; ++A) + for (var x = b[A], E = x.start, M = E, _ = E + x.count; M < _; M += 3) + F(n[M + 0], n[M + 1], n[M + 2]) + for ( + var T = new lr(), + S = new lr(), + C = new lr(), + L = new lr(), + R = 0, + P = b.length; + R < P; + ++R + ) + for (var D = b[R], O = D.start, I = O, B = O + D.count; I < B; I += 3) + k(n[I + 0]), k(n[I + 1]), k(n[I + 2]) + } else + console.error( + 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)', + ) + function F(e, t, n) { + h.fromArray(r, 3 * e), + d.fromArray(r, 3 * t), + p.fromArray(r, 3 * n), + f.fromArray(o, 2 * e), + m.fromArray(o, 2 * t), + v.fromArray(o, 2 * n), + d.sub(h), + p.sub(h), + m.sub(f), + v.sub(f) + var i = 1 / (m.x * v.y - v.x * m.y) + isFinite(i) && + (g + .copy(d) + .multiplyScalar(v.y) + .addScaledVector(p, -m.y) + .multiplyScalar(i), + y + .copy(p) + .multiplyScalar(m.x) + .addScaledVector(d, -v.x) + .multiplyScalar(i), + l[e].add(g), + l[t].add(g), + l[n].add(g), + c[e].add(y), + c[t].add(y), + c[n].add(y)) + } + function k(e) { + C.fromArray(i, 3 * e), L.copy(C) + var t = l[e] + T.copy(t), + T.sub(C.multiplyScalar(C.dot(t))).normalize(), + S.crossVectors(L, t) + var n = S.dot(c[e]) < 0 ? -1 : 1 + ;(s[4 * e] = T.x), + (s[4 * e + 1] = T.y), + (s[4 * e + 2] = T.z), + (s[4 * e + 3] = n) + } + }, + computeVertexNormals: function () { + var e = this.index, + t = this.getAttribute('position') + if (void 0 !== t) { + var n = this.getAttribute('normal') + if (void 0 === n) + (n = new Fi(new Float32Array(3 * t.count), 3)), + this.setAttribute('normal', n) + else for (var r = 0, i = n.count; r < i; r++) n.setXYZ(r, 0, 0, 0) + var o = new lr(), + a = new lr(), + s = new lr(), + l = new lr(), + c = new lr(), + u = new lr(), + h = new lr(), + d = new lr() + if (e) + for (var p = 0, f = e.count; p < f; p += 3) { + var m = e.getX(p + 0), + v = e.getX(p + 1), + g = e.getX(p + 2) + o.fromBufferAttribute(t, m), + a.fromBufferAttribute(t, v), + s.fromBufferAttribute(t, g), + h.subVectors(s, a), + d.subVectors(o, a), + h.cross(d), + l.fromBufferAttribute(n, m), + c.fromBufferAttribute(n, v), + u.fromBufferAttribute(n, g), + l.add(h), + c.add(h), + u.add(h), + n.setXYZ(m, l.x, l.y, l.z), + n.setXYZ(v, c.x, c.y, c.z), + n.setXYZ(g, u.x, u.y, u.z) + } + else + for (var y = 0, b = t.count; y < b; y += 3) + o.fromBufferAttribute(t, y + 0), + a.fromBufferAttribute(t, y + 1), + s.fromBufferAttribute(t, y + 2), + h.subVectors(s, a), + d.subVectors(o, a), + h.cross(d), + n.setXYZ(y + 0, h.x, h.y, h.z), + n.setXYZ(y + 1, h.x, h.y, h.z), + n.setXYZ(y + 2, h.x, h.y, h.z) + this.normalizeNormals(), (n.needsUpdate = !0) + } + }, + merge: function (e, t) { + if (e && e.isBufferGeometry) { + void 0 === t && + ((t = 0), + console.warn( + 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.', + )) + var n = this.attributes + for (var r in n) + if (void 0 !== e.attributes[r]) + for ( + var i = n[r].array, + o = e.attributes[r], + a = o.array, + s = o.itemSize * t, + l = Math.min(a.length, i.length - s), + c = 0, + u = s; + c < l; + c++, u++ + ) + i[u] = a[c] + return this + } + console.error( + 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', + e, + ) + }, + normalizeNormals: function () { + for (var e = this.attributes.normal, t = 0, n = e.count; t < n; t++) + no.fromBufferAttribute(e, t), + no.normalize(), + e.setXYZ(t, no.x, no.y, no.z) + }, + toNonIndexed: function () { + function e(e, t) { + for ( + var n = e.array, + r = e.itemSize, + i = e.normalized, + o = new n.constructor(t.length * r), + a = 0, + s = 0, + l = 0, + c = t.length; + l < c; + l++ + ) { + a = t[l] * r + for (var u = 0; u < r; u++) o[s++] = n[a++] + } + return new Fi(o, r, i) + } + if (null === this.index) + return ( + console.warn( + 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.', + ), + this + ) + var t = new ro(), + n = this.index.array, + r = this.attributes + for (var i in r) { + var o = e(r[i], n) + t.setAttribute(i, o) + } + var a = this.morphAttributes + for (var s in a) { + for (var l = [], c = a[s], u = 0, h = c.length; u < h; u++) { + var d = e(c[u], n) + l.push(d) + } + t.morphAttributes[s] = l + } + t.morphTargetsRelative = this.morphTargetsRelative + for (var p = this.groups, f = 0, m = p.length; f < m; f++) { + var v = p[f] + t.addGroup(v.start, v.count, v.materialIndex) + } + return t + }, + toJSON: function () { + var e = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON', + }, + } + if ( + ((e.uuid = this.uuid), + (e.type = this.type), + '' !== this.name && (e.name = this.name), + Object.keys(this.userData).length > 0 && (e.userData = this.userData), + void 0 !== this.parameters) + ) { + var t = this.parameters + for (var n in t) void 0 !== t[n] && (e[n] = t[n]) + return e + } + e.data = { attributes: {} } + var r = this.index + null !== r && + (e.data.index = { + type: r.array.constructor.name, + array: Array.prototype.slice.call(r.array), + }) + var i = this.attributes + for (var o in i) { + var a = i[o], + s = a.toJSON(e.data) + '' !== a.name && (s.name = a.name), (e.data.attributes[o] = s) + } + var l = {}, + c = !1 + for (var u in this.morphAttributes) { + for ( + var h = this.morphAttributes[u], d = [], p = 0, f = h.length; + p < f; + p++ + ) { + var m = h[p], + v = m.toJSON(e.data) + '' !== m.name && (v.name = m.name), d.push(v) + } + d.length > 0 && ((l[u] = d), (c = !0)) + } + c && + ((e.data.morphAttributes = l), + (e.data.morphTargetsRelative = this.morphTargetsRelative)) + var g = this.groups + g.length > 0 && (e.data.groups = JSON.parse(JSON.stringify(g))) + var y = this.boundingSphere + return ( + null !== y && + (e.data.boundingSphere = { + center: y.center.toArray(), + radius: y.radius, + }), + e + ) + }, + clone: function () { + return new ro().copy(this) + }, + copy: function (e) { + ;(this.index = null), + (this.attributes = {}), + (this.morphAttributes = {}), + (this.groups = []), + (this.boundingBox = null), + (this.boundingSphere = null) + var t = {} + this.name = e.name + var n = e.index + null !== n && this.setIndex(n.clone(t)) + var r = e.attributes + for (var i in r) { + var o = r[i] + this.setAttribute(i, o.clone(t)) + } + var a = e.morphAttributes + for (var s in a) { + for (var l = [], c = a[s], u = 0, h = c.length; u < h; u++) + l.push(c[u].clone(t)) + this.morphAttributes[s] = l + } + this.morphTargetsRelative = e.morphTargetsRelative + for (var d = e.groups, p = 0, f = d.length; p < f; p++) { + var m = d[p] + this.addGroup(m.start, m.count, m.materialIndex) + } + var v = e.boundingBox + null !== v && (this.boundingBox = v.clone()) + var g = e.boundingSphere + return ( + null !== g && (this.boundingSphere = g.clone()), + (this.drawRange.start = e.drawRange.start), + (this.drawRange.count = e.drawRange.count), + (this.userData = e.userData), + this + ) + }, + dispose: function () { + this.dispatchEvent({ type: 'dispose' }) + }, + }) + var io = new Fr(), + oo = new Br(), + ao = new Sr(), + so = new lr(), + lo = new lr(), + co = new lr(), + uo = new lr(), + ho = new lr(), + po = new lr(), + fo = new lr(), + mo = new lr(), + vo = new lr(), + go = new Jn(), + yo = new Jn(), + bo = new Jn(), + Ao = new lr(), + wo = new lr() + function xo(e, t) { + void 0 === e && (e = new ro()), + void 0 === t && (t = new Oi()), + si.call(this), + (this.type = 'Mesh'), + (this.geometry = e), + (this.material = t), + this.updateMorphTargets() + } + function Eo(e, t, n, r, i, o, a, s) { + if ( + null === + (t.side === v + ? r.intersectTriangle(a, o, i, !0, s) + : r.intersectTriangle(i, o, a, t.side !== g, s)) + ) + return null + wo.copy(s), wo.applyMatrix4(e.matrixWorld) + var l = n.ray.origin.distanceTo(wo) + return l < n.near || l > n.far + ? null + : { distance: l, point: wo.clone(), object: e } + } + function Mo(e, t, n, r, i, o, a, s, l, c, u, h) { + so.fromBufferAttribute(i, c), + lo.fromBufferAttribute(i, u), + co.fromBufferAttribute(i, h) + var d = e.morphTargetInfluences + if (t.morphTargets && o && d) { + fo.set(0, 0, 0), mo.set(0, 0, 0), vo.set(0, 0, 0) + for (var p = 0, f = o.length; p < f; p++) { + var m = d[p], + v = o[p] + 0 !== m && + (uo.fromBufferAttribute(v, c), + ho.fromBufferAttribute(v, u), + po.fromBufferAttribute(v, h), + a + ? (fo.addScaledVector(uo, m), + mo.addScaledVector(ho, m), + vo.addScaledVector(po, m)) + : (fo.addScaledVector(uo.sub(so), m), + mo.addScaledVector(ho.sub(lo), m), + vo.addScaledVector(po.sub(co), m))) + } + so.add(fo), lo.add(mo), co.add(vo) + } + e.isSkinnedMesh && + (e.boneTransform(c, so), e.boneTransform(u, lo), e.boneTransform(h, co)) + var g = Eo(e, t, n, r, so, lo, co, Ao) + if (g) { + s && + (go.fromBufferAttribute(s, c), + yo.fromBufferAttribute(s, u), + bo.fromBufferAttribute(s, h), + (g.uv = xi.getUV(Ao, so, lo, co, go, yo, bo, new Jn()))), + l && + (go.fromBufferAttribute(l, c), + yo.fromBufferAttribute(l, u), + bo.fromBufferAttribute(l, h), + (g.uv2 = xi.getUV(Ao, so, lo, co, go, yo, bo, new Jn()))) + var y = new Ri(c, u, h) + xi.getNormal(so, lo, co, y.normal), (g.face = y) + } + return g + } + xo.prototype = Object.assign(Object.create(si.prototype), { + constructor: xo, + isMesh: !0, + copy: function (e) { + return ( + si.prototype.copy.call(this, e), + void 0 !== e.morphTargetInfluences && + (this.morphTargetInfluences = e.morphTargetInfluences.slice()), + void 0 !== e.morphTargetDictionary && + (this.morphTargetDictionary = Object.assign( + {}, + e.morphTargetDictionary, + )), + (this.material = e.material), + (this.geometry = e.geometry), + this + ) + }, + updateMorphTargets: function () { + var e = this.geometry + if (e.isBufferGeometry) { + var t = e.morphAttributes, + n = Object.keys(t) + if (n.length > 0) { + var r = t[n[0]] + if (void 0 !== r) { + ;(this.morphTargetInfluences = []), (this.morphTargetDictionary = {}) + for (var i = 0, o = r.length; i < o; i++) { + var a = r[i].name || String(i) + this.morphTargetInfluences.push(0), + (this.morphTargetDictionary[a] = i) + } + } + } + } else { + var s = e.morphTargets + void 0 !== s && + s.length > 0 && + console.error( + 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + } + }, + raycast: function (e, t) { + var n, + r = this.geometry, + i = this.material, + o = this.matrixWorld + if ( + void 0 !== i && + (null === r.boundingSphere && r.computeBoundingSphere(), + ao.copy(r.boundingSphere), + ao.applyMatrix4(o), + !1 !== e.ray.intersectsSphere(ao) && + (io.copy(o).invert(), + oo.copy(e.ray).applyMatrix4(io), + null === r.boundingBox || !1 !== oo.intersectsBox(r.boundingBox))) + ) + if (r.isBufferGeometry) { + var a = r.index, + s = r.attributes.position, + l = r.morphAttributes.position, + c = r.morphTargetsRelative, + u = r.attributes.uv, + h = r.attributes.uv2, + d = r.groups, + p = r.drawRange + if (null !== a) + if (Array.isArray(i)) + for (var f = 0, m = d.length; f < m; f++) + for ( + var v = d[f], + g = i[v.materialIndex], + y = Math.max(v.start, p.start), + b = Math.min(v.start + v.count, p.start + p.count); + y < b; + y += 3 + ) { + var A = a.getX(y), + w = a.getX(y + 1), + x = a.getX(y + 2) + ;(n = Mo(this, g, e, oo, s, l, c, u, h, A, w, x)) && + ((n.faceIndex = Math.floor(y / 3)), + (n.face.materialIndex = v.materialIndex), + t.push(n)) + } + else + for ( + var E = Math.max(0, p.start), + M = Math.min(a.count, p.start + p.count); + E < M; + E += 3 + ) { + var _ = a.getX(E), + T = a.getX(E + 1), + S = a.getX(E + 2) + ;(n = Mo(this, i, e, oo, s, l, c, u, h, _, T, S)) && + ((n.faceIndex = Math.floor(E / 3)), t.push(n)) + } + else if (void 0 !== s) + if (Array.isArray(i)) + for (var C = 0, L = d.length; C < L; C++) + for ( + var R = d[C], + P = i[R.materialIndex], + D = Math.max(R.start, p.start), + O = Math.min(R.start + R.count, p.start + p.count); + D < O; + D += 3 + ) + (n = Mo(this, P, e, oo, s, l, c, u, h, D, D + 1, D + 2)) && + ((n.faceIndex = Math.floor(D / 3)), + (n.face.materialIndex = R.materialIndex), + t.push(n)) + else + for ( + var I = Math.max(0, p.start), + B = Math.min(s.count, p.start + p.count); + I < B; + I += 3 + ) + (n = Mo(this, i, e, oo, s, l, c, u, h, I, I + 1, I + 2)) && + ((n.faceIndex = Math.floor(I / 3)), t.push(n)) + } else + r.isGeometry && + console.error( + 'THREE.Mesh.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + }, + }) + var _o = (function (e) { + function t(t, n, r, i, o, a) { + var s + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 1), + void 0 === i && (i = 1), + void 0 === o && (o = 1), + void 0 === a && (a = 1), + ((s = e.call(this) || this).type = 'BoxGeometry'), + (s.parameters = { + width: t, + height: n, + depth: r, + widthSegments: i, + heightSegments: o, + depthSegments: a, + }) + var l = zn(s) + ;(i = Math.floor(i)), (o = Math.floor(o)), (a = Math.floor(a)) + var c = [], + u = [], + h = [], + d = [], + p = 0, + f = 0 + function m(e, t, n, r, i, o, a, s, m, v, g) { + for ( + var y = o / m, + b = a / v, + A = o / 2, + w = a / 2, + x = s / 2, + E = m + 1, + M = v + 1, + _ = 0, + T = 0, + S = new lr(), + C = 0; + C < M; + C++ + ) + for (var L = C * b - w, R = 0; R < E; R++) { + var P = R * y - A + ;(S[e] = P * r), + (S[t] = L * i), + (S[n] = x), + u.push(S.x, S.y, S.z), + (S[e] = 0), + (S[t] = 0), + (S[n] = s > 0 ? 1 : -1), + h.push(S.x, S.y, S.z), + d.push(R / m), + d.push(1 - C / v), + (_ += 1) + } + for (var D = 0; D < v; D++) + for (var O = 0; O < m; O++) { + var I = p + O + E * D, + B = p + O + E * (D + 1), + F = p + (O + 1) + E * (D + 1), + k = p + (O + 1) + E * D + c.push(I, B, k), c.push(B, F, k), (T += 6) + } + l.addGroup(f, T, g), (f += T), (p += _) + } + return ( + m('z', 'y', 'x', -1, -1, r, n, t, a, o, 0), + m('z', 'y', 'x', 1, -1, r, n, -t, a, o, 1), + m('x', 'z', 'y', 1, 1, t, r, n, i, a, 2), + m('x', 'z', 'y', 1, -1, t, r, -n, i, a, 3), + m('x', 'y', 'z', 1, -1, t, n, r, i, o, 4), + m('x', 'y', 'z', -1, -1, t, n, -r, i, o, 5), + s.setIndex(c), + s.setAttribute('position', new Wi(u, 3)), + s.setAttribute('normal', new Wi(h, 3)), + s.setAttribute('uv', new Wi(d, 2)), + s + ) + } + return Gn(t, e), t + })(ro) + function To(e) { + var t = {} + for (var n in e) + for (var r in ((t[n] = {}), e[n])) { + var i = e[n][r] + i && + (i.isColor || + i.isMatrix3 || + i.isMatrix4 || + i.isVector2 || + i.isVector3 || + i.isVector4 || + i.isTexture) + ? (t[n][r] = i.clone()) + : Array.isArray(i) + ? (t[n][r] = i.slice()) + : (t[n][r] = i) + } + return t + } + function So(e) { + for (var t = {}, n = 0; n < e.length; n++) { + var r = To(e[n]) + for (var i in r) t[i] = r[i] + } + return t + } + var Co = { clone: To, merge: So }, + Lo = + 'void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}', + Ro = 'void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}' + function Po(e) { + Di.call(this), + (this.type = 'ShaderMaterial'), + (this.defines = {}), + (this.uniforms = {}), + (this.vertexShader = Lo), + (this.fragmentShader = Ro), + (this.linewidth = 1), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.fog = !1), + (this.lights = !1), + (this.clipping = !1), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + (this.extensions = { + derivatives: !1, + fragDepth: !1, + drawBuffers: !1, + shaderTextureLOD: !1, + }), + (this.defaultAttributeValues = { + color: [1, 1, 1], + uv: [0, 0], + uv2: [0, 0], + }), + (this.index0AttributeName = void 0), + (this.uniformsNeedUpdate = !1), + (this.glslVersion = null), + void 0 !== e && + (void 0 !== e.attributes && + console.error( + 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.', + ), + this.setValues(e)) + } + function Do() { + si.call(this), + (this.type = 'Camera'), + (this.matrixWorldInverse = new Fr()), + (this.projectionMatrix = new Fr()), + (this.projectionMatrixInverse = new Fr()) + } + function Oo(e, t, n, r) { + void 0 === e && (e = 50), + void 0 === t && (t = 1), + void 0 === n && (n = 0.1), + void 0 === r && (r = 2e3), + Do.call(this), + (this.type = 'PerspectiveCamera'), + (this.fov = e), + (this.zoom = 1), + (this.near = n), + (this.far = r), + (this.focus = 10), + (this.aspect = t), + (this.view = null), + (this.filmGauge = 35), + (this.filmOffset = 0), + this.updateProjectionMatrix() + } + ;(Po.prototype = Object.create(Di.prototype)), + (Po.prototype.constructor = Po), + (Po.prototype.isShaderMaterial = !0), + (Po.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + (this.fragmentShader = e.fragmentShader), + (this.vertexShader = e.vertexShader), + (this.uniforms = To(e.uniforms)), + (this.defines = Object.assign({}, e.defines)), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.lights = e.lights), + (this.clipping = e.clipping), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + (this.extensions = Object.assign({}, e.extensions)), + (this.glslVersion = e.glslVersion), + this + ) + }), + (Po.prototype.toJSON = function (e) { + var t = Di.prototype.toJSON.call(this, e) + for (var n in ((t.glslVersion = this.glslVersion), + (t.uniforms = {}), + this.uniforms)) { + var r = this.uniforms[n].value + r && r.isTexture + ? (t.uniforms[n] = { type: 't', value: r.toJSON(e).uuid }) + : r && r.isColor + ? (t.uniforms[n] = { type: 'c', value: r.getHex() }) + : r && r.isVector2 + ? (t.uniforms[n] = { type: 'v2', value: r.toArray() }) + : r && r.isVector3 + ? (t.uniforms[n] = { type: 'v3', value: r.toArray() }) + : r && r.isVector4 + ? (t.uniforms[n] = { type: 'v4', value: r.toArray() }) + : r && r.isMatrix3 + ? (t.uniforms[n] = { type: 'm3', value: r.toArray() }) + : r && r.isMatrix4 + ? (t.uniforms[n] = { type: 'm4', value: r.toArray() }) + : (t.uniforms[n] = { value: r }) + } + Object.keys(this.defines).length > 0 && (t.defines = this.defines), + (t.vertexShader = this.vertexShader), + (t.fragmentShader = this.fragmentShader) + var i = {} + for (var o in this.extensions) !0 === this.extensions[o] && (i[o] = !0) + return Object.keys(i).length > 0 && (t.extensions = i), t + }), + (Do.prototype = Object.assign(Object.create(si.prototype), { + constructor: Do, + isCamera: !0, + copy: function (e, t) { + return ( + si.prototype.copy.call(this, e, t), + this.matrixWorldInverse.copy(e.matrixWorldInverse), + this.projectionMatrix.copy(e.projectionMatrix), + this.projectionMatrixInverse.copy(e.projectionMatrixInverse), + this + ) + }, + getWorldDirection: function (e) { + void 0 === e && + (console.warn( + 'THREE.Camera: .getWorldDirection() target is now required', + ), + (e = new lr())), + this.updateWorldMatrix(!0, !1) + var t = this.matrixWorld.elements + return e.set(-t[8], -t[9], -t[10]).normalize() + }, + updateMatrixWorld: function (e) { + si.prototype.updateMatrixWorld.call(this, e), + this.matrixWorldInverse.copy(this.matrixWorld).invert() + }, + updateWorldMatrix: function (e, t) { + si.prototype.updateWorldMatrix.call(this, e, t), + this.matrixWorldInverse.copy(this.matrixWorld).invert() + }, + clone: function () { + return new this.constructor().copy(this) + }, + })), + (Oo.prototype = Object.assign(Object.create(Do.prototype), { + constructor: Oo, + isPerspectiveCamera: !0, + copy: function (e, t) { + return ( + Do.prototype.copy.call(this, e, t), + (this.fov = e.fov), + (this.zoom = e.zoom), + (this.near = e.near), + (this.far = e.far), + (this.focus = e.focus), + (this.aspect = e.aspect), + (this.view = null === e.view ? null : Object.assign({}, e.view)), + (this.filmGauge = e.filmGauge), + (this.filmOffset = e.filmOffset), + this + ) + }, + setFocalLength: function (e) { + var t = (0.5 * this.getFilmHeight()) / e + ;(this.fov = 2 * Kn.RAD2DEG * Math.atan(t)), this.updateProjectionMatrix() + }, + getFocalLength: function () { + var e = Math.tan(0.5 * Kn.DEG2RAD * this.fov) + return (0.5 * this.getFilmHeight()) / e + }, + getEffectiveFOV: function () { + return ( + 2 * + Kn.RAD2DEG * + Math.atan(Math.tan(0.5 * Kn.DEG2RAD * this.fov) / this.zoom) + ) + }, + getFilmWidth: function () { + return this.filmGauge * Math.min(this.aspect, 1) + }, + getFilmHeight: function () { + return this.filmGauge / Math.max(this.aspect, 1) + }, + setViewOffset: function (e, t, n, r, i, o) { + ;(this.aspect = e / t), + null === this.view && + (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1, + }), + (this.view.enabled = !0), + (this.view.fullWidth = e), + (this.view.fullHeight = t), + (this.view.offsetX = n), + (this.view.offsetY = r), + (this.view.width = i), + (this.view.height = o), + this.updateProjectionMatrix() + }, + clearViewOffset: function () { + null !== this.view && (this.view.enabled = !1), + this.updateProjectionMatrix() + }, + updateProjectionMatrix: function () { + var e = this.near, + t = (e * Math.tan(0.5 * Kn.DEG2RAD * this.fov)) / this.zoom, + n = 2 * t, + r = this.aspect * n, + i = -0.5 * r, + o = this.view + if (null !== this.view && this.view.enabled) { + var a = o.fullWidth, + s = o.fullHeight + ;(i += (o.offsetX * r) / a), + (t -= (o.offsetY * n) / s), + (r *= o.width / a), + (n *= o.height / s) + } + var l = this.filmOffset + 0 !== l && (i += (e * l) / this.getFilmWidth()), + this.projectionMatrix.makePerspective(i, i + r, t, t - n, e, this.far), + this.projectionMatrixInverse.copy(this.projectionMatrix).invert() + }, + toJSON: function (e) { + var t = si.prototype.toJSON.call(this, e) + return ( + (t.object.fov = this.fov), + (t.object.zoom = this.zoom), + (t.object.near = this.near), + (t.object.far = this.far), + (t.object.focus = this.focus), + (t.object.aspect = this.aspect), + null !== this.view && (t.object.view = Object.assign({}, this.view)), + (t.object.filmGauge = this.filmGauge), + (t.object.filmOffset = this.filmOffset), + t + ) + }, + })) + var Io = 90, + Bo = 1 + function Fo(e, t, n) { + if ( + (si.call(this), + (this.type = 'CubeCamera'), + !0 === n.isWebGLCubeRenderTarget) + ) { + this.renderTarget = n + var r = new Oo(Io, Bo, e, t) + ;(r.layers = this.layers), + r.up.set(0, -1, 0), + r.lookAt(new lr(1, 0, 0)), + this.add(r) + var i = new Oo(Io, Bo, e, t) + ;(i.layers = this.layers), + i.up.set(0, -1, 0), + i.lookAt(new lr(-1, 0, 0)), + this.add(i) + var o = new Oo(Io, Bo, e, t) + ;(o.layers = this.layers), + o.up.set(0, 0, 1), + o.lookAt(new lr(0, 1, 0)), + this.add(o) + var a = new Oo(Io, Bo, e, t) + ;(a.layers = this.layers), + a.up.set(0, 0, -1), + a.lookAt(new lr(0, -1, 0)), + this.add(a) + var s = new Oo(Io, Bo, e, t) + ;(s.layers = this.layers), + s.up.set(0, -1, 0), + s.lookAt(new lr(0, 0, 1)), + this.add(s) + var l = new Oo(Io, Bo, e, t) + ;(l.layers = this.layers), + l.up.set(0, -1, 0), + l.lookAt(new lr(0, 0, -1)), + this.add(l), + (this.update = function (e, t) { + null === this.parent && this.updateMatrixWorld() + var c = e.xr.enabled, + u = e.getRenderTarget() + e.xr.enabled = !1 + var h = n.texture.generateMipmaps + ;(n.texture.generateMipmaps = !1), + e.setRenderTarget(n, 0), + e.render(t, r), + e.setRenderTarget(n, 1), + e.render(t, i), + e.setRenderTarget(n, 2), + e.render(t, o), + e.setRenderTarget(n, 3), + e.render(t, a), + e.setRenderTarget(n, 4), + e.render(t, s), + (n.texture.generateMipmaps = h), + e.setRenderTarget(n, 5), + e.render(t, l), + e.setRenderTarget(u), + (e.xr.enabled = c) + }) + } else + console.error( + 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.', + ) + } + function ko(e, t, n, r, i, o, a, s, l, c) { + ;(e = void 0 !== e ? e : []), + (t = void 0 !== t ? t : ae), + (a = void 0 !== a ? a : Ne), + nr.call(this, e, t, n, r, i, o, a, s, l, c), + (this.flipY = !1), + (this._needsFlipEnvMap = !0) + } + ;(Fo.prototype = Object.create(si.prototype)), + (Fo.prototype.constructor = Fo), + (ko.prototype = Object.create(nr.prototype)), + (ko.prototype.constructor = ko), + (ko.prototype.isCubeTexture = !0), + Object.defineProperty(ko.prototype, 'images', { + get: function () { + return this.image + }, + set: function (e) { + this.image = e + }, + }) + var No = (function (e) { + function t(t, n, r) { + var i + return ( + Number.isInteger(n) && + (console.warn( + 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )', + ), + (n = r)), + (i = e.call(this, t, t, n) || this), + Object.defineProperty(zn(i), 'isWebGLCubeRenderTarget', { value: !0 }), + (n = n || {}), + (i.texture = new ko( + void 0, + n.mapping, + n.wrapS, + n.wrapT, + n.magFilter, + n.minFilter, + n.format, + n.type, + n.anisotropy, + n.encoding, + )), + (i.texture._needsFlipEnvMap = !1), + i + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.fromEquirectangularTexture = function (e, t) { + ;(this.texture.type = t.type), + (this.texture.format = Ue), + (this.texture.encoding = t.encoding), + (this.texture.generateMipmaps = t.generateMipmaps), + (this.texture.minFilter = t.minFilter), + (this.texture.magFilter = t.magFilter) + var n = { + uniforms: { tEquirect: { value: null } }, + vertexShader: + '\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t', + fragmentShader: + '\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t', + }, + r = new _o(5, 5, 5), + i = new Po({ + name: 'CubemapFromEquirect', + uniforms: To(n.uniforms), + vertexShader: n.vertexShader, + fragmentShader: n.fragmentShader, + side: v, + blending: A, + }) + i.uniforms.tEquirect.value = t + var o = new xo(r, i), + a = t.minFilter + return ( + t.minFilter === Ee && (t.minFilter = Ae), + new Fo(1, 10, this).update(e, o), + (t.minFilter = a), + o.geometry.dispose(), + o.material.dispose(), + this + ) + }), + (n.clear = function (e, t, n, r) { + for (var i = e.getRenderTarget(), o = 0; o < 6; o++) + e.setRenderTarget(this, o), e.clear(t, n, r) + e.setRenderTarget(i) + }), + t + ) + })(or) + function Uo(e, t, n, r, i, o, a, s, l, c, u, h) { + nr.call(this, null, o, a, s, l, c, r, i, u, h), + (this.image = { data: e || null, width: t || 1, height: n || 1 }), + (this.magFilter = void 0 !== l ? l : me), + (this.minFilter = void 0 !== c ? c : me), + (this.generateMipmaps = !1), + (this.flipY = !1), + (this.unpackAlignment = 1), + (this.needsUpdate = !0) + } + ;(Uo.prototype = Object.create(nr.prototype)), + (Uo.prototype.constructor = Uo), + (Uo.prototype.isDataTexture = !0) + var Ho = new Sr(), + Go = new lr(), + zo = (function () { + function e(e, t, n, r, i, o) { + this.planes = [ + void 0 !== e ? e : new hi(), + void 0 !== t ? t : new hi(), + void 0 !== n ? n : new hi(), + void 0 !== r ? r : new hi(), + void 0 !== i ? i : new hi(), + void 0 !== o ? o : new hi(), + ] + } + var t = e.prototype + return ( + (t.set = function (e, t, n, r, i, o) { + var a = this.planes + return ( + a[0].copy(e), + a[1].copy(t), + a[2].copy(n), + a[3].copy(r), + a[4].copy(i), + a[5].copy(o), + this + ) + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + for (var t = this.planes, n = 0; n < 6; n++) t[n].copy(e.planes[n]) + return this + }), + (t.setFromProjectionMatrix = function (e) { + var t = this.planes, + n = e.elements, + r = n[0], + i = n[1], + o = n[2], + a = n[3], + s = n[4], + l = n[5], + c = n[6], + u = n[7], + h = n[8], + d = n[9], + p = n[10], + f = n[11], + m = n[12], + v = n[13], + g = n[14], + y = n[15] + return ( + t[0].setComponents(a - r, u - s, f - h, y - m).normalize(), + t[1].setComponents(a + r, u + s, f + h, y + m).normalize(), + t[2].setComponents(a + i, u + l, f + d, y + v).normalize(), + t[3].setComponents(a - i, u - l, f - d, y - v).normalize(), + t[4].setComponents(a - o, u - c, f - p, y - g).normalize(), + t[5].setComponents(a + o, u + c, f + p, y + g).normalize(), + this + ) + }), + (t.intersectsObject = function (e) { + var t = e.geometry + return ( + null === t.boundingSphere && t.computeBoundingSphere(), + Ho.copy(t.boundingSphere).applyMatrix4(e.matrixWorld), + this.intersectsSphere(Ho) + ) + }), + (t.intersectsSprite = function (e) { + return ( + Ho.center.set(0, 0, 0), + (Ho.radius = 0.7071067811865476), + Ho.applyMatrix4(e.matrixWorld), + this.intersectsSphere(Ho) + ) + }), + (t.intersectsSphere = function (e) { + for ( + var t = this.planes, n = e.center, r = -e.radius, i = 0; + i < 6; + i++ + ) + if (t[i].distanceToPoint(n) < r) return !1 + return !0 + }), + (t.intersectsBox = function (e) { + for (var t = this.planes, n = 0; n < 6; n++) { + var r = t[n] + if ( + ((Go.x = r.normal.x > 0 ? e.max.x : e.min.x), + (Go.y = r.normal.y > 0 ? e.max.y : e.min.y), + (Go.z = r.normal.z > 0 ? e.max.z : e.min.z), + r.distanceToPoint(Go) < 0) + ) + return !1 + } + return !0 + }), + (t.containsPoint = function (e) { + for (var t = this.planes, n = 0; n < 6; n++) + if (t[n].distanceToPoint(e) < 0) return !1 + return !0 + }), + e + ) + })() + function jo() { + var e = null, + t = !1, + n = null, + r = null + function i(t, o) { + n(t, o), (r = e.requestAnimationFrame(i)) + } + return { + start: function () { + !0 !== t && null !== n && ((r = e.requestAnimationFrame(i)), (t = !0)) + }, + stop: function () { + e.cancelAnimationFrame(r), (t = !1) + }, + setAnimationLoop: function (e) { + n = e + }, + setContext: function (t) { + e = t + }, + } + } + function Vo(e, t) { + var n = t.isWebGL2, + r = new WeakMap() + function i(t, r) { + var i = t.array, + o = t.usage, + a = e.createBuffer() + e.bindBuffer(r, a), e.bufferData(r, i, o), t.onUploadCallback() + var s = 5126 + return ( + i instanceof Float32Array + ? (s = 5126) + : i instanceof Float64Array + ? console.warn( + 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.', + ) + : i instanceof Uint16Array + ? t.isFloat16BufferAttribute + ? n + ? (s = 5131) + : console.warn( + 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.', + ) + : (s = 5123) + : i instanceof Int16Array + ? (s = 5122) + : i instanceof Uint32Array + ? (s = 5125) + : i instanceof Int32Array + ? (s = 5124) + : i instanceof Int8Array + ? (s = 5120) + : i instanceof Uint8Array && (s = 5121), + { + buffer: a, + type: s, + bytesPerElement: i.BYTES_PER_ELEMENT, + version: t.version, + } + ) + } + function o(t, r, i) { + var o = r.array, + a = r.updateRange + e.bindBuffer(i, t), + -1 === a.count + ? e.bufferSubData(i, 0, o) + : (n + ? e.bufferSubData( + i, + a.offset * o.BYTES_PER_ELEMENT, + o, + a.offset, + a.count, + ) + : e.bufferSubData( + i, + a.offset * o.BYTES_PER_ELEMENT, + o.subarray(a.offset, a.offset + a.count), + ), + (a.count = -1)) + } + function a(e) { + return e.isInterleavedBufferAttribute && (e = e.data), r.get(e) + } + function s(t) { + t.isInterleavedBufferAttribute && (t = t.data) + var n = r.get(t) + n && (e.deleteBuffer(n.buffer), r.delete(t)) + } + function l(e, t) { + if (e.isGLBufferAttribute) { + var n = r.get(e) + ;(!n || n.version < e.version) && + r.set(e, { + buffer: e.buffer, + type: e.type, + bytesPerElement: e.elementSize, + version: e.version, + }) + } else { + e.isInterleavedBufferAttribute && (e = e.data) + var a = r.get(e) + void 0 === a + ? r.set(e, i(e, t)) + : a.version < e.version && (o(a.buffer, e, t), (a.version = e.version)) + } + } + return { get: a, remove: s, update: l } + } + var Wo = (function (e) { + function t(t, n, r, i) { + var o + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 1), + void 0 === i && (i = 1), + ((o = e.call(this) || this).type = 'PlaneGeometry'), + (o.parameters = { + width: t, + height: n, + widthSegments: r, + heightSegments: i, + }) + for ( + var a = t / 2, + s = n / 2, + l = Math.floor(r), + c = Math.floor(i), + u = l + 1, + h = c + 1, + d = t / l, + p = n / c, + f = [], + m = [], + v = [], + g = [], + y = 0; + y < h; + y++ + ) + for (var b = y * p - s, A = 0; A < u; A++) { + var w = A * d - a + m.push(w, -b, 0), v.push(0, 0, 1), g.push(A / l), g.push(1 - y / c) + } + for (var x = 0; x < c; x++) + for (var E = 0; E < l; E++) { + var M = E + u * x, + _ = E + u * (x + 1), + T = E + 1 + u * (x + 1), + S = E + 1 + u * x + f.push(M, _, S), f.push(_, T, S) + } + return ( + o.setIndex(f), + o.setAttribute('position', new Wi(m, 3)), + o.setAttribute('normal', new Wi(v, 3)), + o.setAttribute('uv', new Wi(g, 2)), + o + ) + } + return Gn(t, e), t + })(ro), + qo = { + alphamap_fragment: + '#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif', + alphamap_pars_fragment: + '#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif', + alphatest_fragment: + '#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif', + aomap_fragment: + '#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif', + aomap_pars_fragment: + '#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif', + begin_vertex: 'vec3 transformed = vec3( position );', + beginnormal_vertex: + 'vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif', + bsdfs: + 'vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif', + bumpmap_pars_fragment: + '#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif', + clipping_planes_fragment: + '#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif', + clipping_planes_pars_fragment: + '#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif', + clipping_planes_pars_vertex: + '#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif', + clipping_planes_vertex: + '#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif', + color_fragment: '#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif', + color_pars_fragment: '#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif', + color_pars_vertex: + '#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif', + color_vertex: + '#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor.xyz *= color.xyz;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif', + common: + '#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}', + cube_uv_reflection_fragment: + '#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif', + defaultnormal_vertex: + 'vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif', + displacementmap_pars_vertex: + '#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif', + displacementmap_vertex: + '#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif', + emissivemap_fragment: + '#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif', + emissivemap_pars_fragment: + '#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif', + encodings_fragment: 'gl_FragColor = linearToOutputTexel( gl_FragColor );', + encodings_pars_fragment: + '\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}', + envmap_fragment: + '#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif', + envmap_common_pars_fragment: + '#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif', + envmap_pars_fragment: + '#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif', + envmap_pars_vertex: + '#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif', + envmap_physical_pars_fragment: + '#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif', + envmap_vertex: + '#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif', + fog_vertex: '#ifdef USE_FOG\n\tfogDepth = - mvPosition.z;\n#endif', + fog_pars_vertex: '#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif', + fog_fragment: + '#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif', + fog_pars_fragment: + '#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif', + gradientmap_pars_fragment: + '#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}', + lightmap_fragment: + '#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif', + lightmap_pars_fragment: + '#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif', + lights_lambert_vertex: + 'vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif', + lights_pars_begin: + 'uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif', + lights_toon_fragment: + 'ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;', + lights_toon_pars_fragment: + 'varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)', + lights_phong_fragment: + 'BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;', + lights_phong_pars_fragment: + 'varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)', + lights_physical_fragment: + 'PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif', + lights_physical_pars_fragment: + 'struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat specularRoughness;\n\tvec3 specularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3(\t\t0, 1,\t\t0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}', + lights_fragment_begin: + '\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif', + lights_fragment_maps: + '#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif', + lights_fragment_end: + '#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif', + logdepthbuf_fragment: + '#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif', + logdepthbuf_pars_fragment: + '#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif', + logdepthbuf_pars_vertex: + '#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif', + logdepthbuf_vertex: + '#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif', + map_fragment: + '#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif', + map_pars_fragment: '#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif', + map_particle_fragment: + '#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif', + map_particle_pars_fragment: + '#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif', + metalnessmap_fragment: + 'float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif', + metalnessmap_pars_fragment: + '#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif', + morphnormal_vertex: + '#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif', + morphtarget_pars_vertex: + '#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif', + morphtarget_vertex: + '#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif', + normal_fragment_begin: + '#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;', + normal_fragment_maps: + '#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif', + normalmap_pars_fragment: + '#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif', + clearcoat_normal_fragment_begin: + '#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif', + clearcoat_normal_fragment_maps: + '#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif', + clearcoat_pars_fragment: + '#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif', + packing: + 'vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}', + premultiplied_alpha_fragment: + '#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif', + project_vertex: + 'vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;', + dithering_fragment: + '#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif', + dithering_pars_fragment: + '#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif', + roughnessmap_fragment: + 'float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif', + roughnessmap_pars_fragment: + '#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif', + shadowmap_pars_fragment: + '#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t\tf.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif', + shadowmap_pars_vertex: + '#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif', + shadowmap_vertex: + '#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif', + shadowmask_pars_fragment: + 'float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}', + skinbase_vertex: + '#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif', + skinning_pars_vertex: + '#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif', + skinning_vertex: + '#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif', + skinnormal_vertex: + '#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif', + specularmap_fragment: + 'float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif', + specularmap_pars_fragment: + '#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif', + tonemapping_fragment: + '#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif', + tonemapping_pars_fragment: + '#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3(\t1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108,\t1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605,\t1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }', + transmissionmap_fragment: + '#ifdef USE_TRANSMISSIONMAP\n\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\n#endif', + transmissionmap_pars_fragment: + '#ifdef USE_TRANSMISSIONMAP\n\tuniform sampler2D transmissionMap;\n#endif', + uv_pars_fragment: + '#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif', + uv_pars_vertex: + '#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif', + uv_vertex: + '#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif', + uv2_pars_fragment: + '#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif', + uv2_pars_vertex: + '#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif', + uv2_vertex: + '#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif', + worldpos_vertex: + '#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif', + background_frag: + 'uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}', + background_vert: + 'varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}', + cube_frag: + '#include <envmap_common_pars_fragment>\nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include <envmap_fragment>\n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}', + cube_vert: + 'varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}', + depth_frag: + '#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}', + depth_vert: + '#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}', + distanceRGBA_frag: + '#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}', + distanceRGBA_vert: + '#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}', + equirect_frag: + 'uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}', + equirect_vert: + 'varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}', + linedashed_frag: + 'uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}', + linedashed_vert: + 'uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}', + meshbasic_frag: + 'uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshbasic_vert: + '#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}', + meshlambert_frag: + 'uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshlambert_vert: + '#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}', + meshmatcap_frag: + '#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshmatcap_vert: + '#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}', + meshtoon_frag: + '#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshtoon_vert: + '#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}', + meshphong_frag: + '#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshphong_vert: + '#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}', + meshphysical_frag: + '#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSMISSION\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSMISSION\n\tuniform float transmission;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <transmissionmap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#ifdef TRANSMISSION\n\t\tfloat totalTransmission = transmission;\n\t#endif\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <transmissionmap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSMISSION\n\t\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}', + meshphysical_vert: + '#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}', + normal_frag: + '#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}', + normal_vert: + '#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}', + points_frag: + 'uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}', + points_vert: + 'uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}', + shadow_frag: + 'uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}', + shadow_vert: + '#include <common>\n#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}', + sprite_frag: + 'uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}', + sprite_vert: + 'uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}', + }, + Xo = { + common: { + diffuse: { value: new Li(15658734) }, + opacity: { value: 1 }, + map: { value: null }, + uvTransform: { value: new $n() }, + uv2Transform: { value: new $n() }, + alphaMap: { value: null }, + }, + specularmap: { specularMap: { value: null } }, + envmap: { + envMap: { value: null }, + flipEnvMap: { value: -1 }, + reflectivity: { value: 1 }, + refractionRatio: { value: 0.98 }, + maxMipLevel: { value: 0 }, + }, + aomap: { aoMap: { value: null }, aoMapIntensity: { value: 1 } }, + lightmap: { lightMap: { value: null }, lightMapIntensity: { value: 1 } }, + emissivemap: { emissiveMap: { value: null } }, + bumpmap: { bumpMap: { value: null }, bumpScale: { value: 1 } }, + normalmap: { + normalMap: { value: null }, + normalScale: { value: new Jn(1, 1) }, + }, + displacementmap: { + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 }, + }, + roughnessmap: { roughnessMap: { value: null } }, + metalnessmap: { metalnessMap: { value: null } }, + gradientmap: { gradientMap: { value: null } }, + fog: { + fogDensity: { value: 25e-5 }, + fogNear: { value: 1 }, + fogFar: { value: 2e3 }, + fogColor: { value: new Li(16777215) }, + }, + lights: { + ambientLightColor: { value: [] }, + lightProbe: { value: [] }, + directionalLights: { + value: [], + properties: { direction: {}, color: {} }, + }, + directionalLightShadows: { + value: [], + properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + }, + }, + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + spotLights: { + value: [], + properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + }, + }, + spotLightShadows: { + value: [], + properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + }, + }, + spotShadowMap: { value: [] }, + spotShadowMatrix: { value: [] }, + pointLights: { + value: [], + properties: { color: {}, position: {}, decay: {}, distance: {} }, + }, + pointLightShadows: { + value: [], + properties: { + shadowBias: {}, + shadowNormalBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {}, + }, + }, + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + hemisphereLights: { + value: [], + properties: { direction: {}, skyColor: {}, groundColor: {} }, + }, + rectAreaLights: { + value: [], + properties: { color: {}, position: {}, width: {}, height: {} }, + }, + ltc_1: { value: null }, + ltc_2: { value: null }, + }, + points: { + diffuse: { value: new Li(15658734) }, + opacity: { value: 1 }, + size: { value: 1 }, + scale: { value: 1 }, + map: { value: null }, + alphaMap: { value: null }, + uvTransform: { value: new $n() }, + }, + sprite: { + diffuse: { value: new Li(15658734) }, + opacity: { value: 1 }, + center: { value: new Jn(0.5, 0.5) }, + rotation: { value: 0 }, + map: { value: null }, + alphaMap: { value: null }, + uvTransform: { value: new $n() }, + }, + }, + Yo = { + basic: { + uniforms: So([ + Xo.common, + Xo.specularmap, + Xo.envmap, + Xo.aomap, + Xo.lightmap, + Xo.fog, + ]), + vertexShader: qo.meshbasic_vert, + fragmentShader: qo.meshbasic_frag, + }, + lambert: { + uniforms: So([ + Xo.common, + Xo.specularmap, + Xo.envmap, + Xo.aomap, + Xo.lightmap, + Xo.emissivemap, + Xo.fog, + Xo.lights, + { emissive: { value: new Li(0) } }, + ]), + vertexShader: qo.meshlambert_vert, + fragmentShader: qo.meshlambert_frag, + }, + phong: { + uniforms: So([ + Xo.common, + Xo.specularmap, + Xo.envmap, + Xo.aomap, + Xo.lightmap, + Xo.emissivemap, + Xo.bumpmap, + Xo.normalmap, + Xo.displacementmap, + Xo.fog, + Xo.lights, + { + emissive: { value: new Li(0) }, + specular: { value: new Li(1118481) }, + shininess: { value: 30 }, + }, + ]), + vertexShader: qo.meshphong_vert, + fragmentShader: qo.meshphong_frag, + }, + standard: { + uniforms: So([ + Xo.common, + Xo.envmap, + Xo.aomap, + Xo.lightmap, + Xo.emissivemap, + Xo.bumpmap, + Xo.normalmap, + Xo.displacementmap, + Xo.roughnessmap, + Xo.metalnessmap, + Xo.fog, + Xo.lights, + { + emissive: { value: new Li(0) }, + roughness: { value: 1 }, + metalness: { value: 0 }, + envMapIntensity: { value: 1 }, + }, + ]), + vertexShader: qo.meshphysical_vert, + fragmentShader: qo.meshphysical_frag, + }, + toon: { + uniforms: So([ + Xo.common, + Xo.aomap, + Xo.lightmap, + Xo.emissivemap, + Xo.bumpmap, + Xo.normalmap, + Xo.displacementmap, + Xo.gradientmap, + Xo.fog, + Xo.lights, + { emissive: { value: new Li(0) } }, + ]), + vertexShader: qo.meshtoon_vert, + fragmentShader: qo.meshtoon_frag, + }, + matcap: { + uniforms: So([ + Xo.common, + Xo.bumpmap, + Xo.normalmap, + Xo.displacementmap, + Xo.fog, + { matcap: { value: null } }, + ]), + vertexShader: qo.meshmatcap_vert, + fragmentShader: qo.meshmatcap_frag, + }, + points: { + uniforms: So([Xo.points, Xo.fog]), + vertexShader: qo.points_vert, + fragmentShader: qo.points_frag, + }, + dashed: { + uniforms: So([ + Xo.common, + Xo.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 }, + }, + ]), + vertexShader: qo.linedashed_vert, + fragmentShader: qo.linedashed_frag, + }, + depth: { + uniforms: So([Xo.common, Xo.displacementmap]), + vertexShader: qo.depth_vert, + fragmentShader: qo.depth_frag, + }, + normal: { + uniforms: So([ + Xo.common, + Xo.bumpmap, + Xo.normalmap, + Xo.displacementmap, + { opacity: { value: 1 } }, + ]), + vertexShader: qo.normal_vert, + fragmentShader: qo.normal_frag, + }, + sprite: { + uniforms: So([Xo.sprite, Xo.fog]), + vertexShader: qo.sprite_vert, + fragmentShader: qo.sprite_frag, + }, + background: { + uniforms: { uvTransform: { value: new $n() }, t2D: { value: null } }, + vertexShader: qo.background_vert, + fragmentShader: qo.background_frag, + }, + cube: { + uniforms: So([Xo.envmap, { opacity: { value: 1 } }]), + vertexShader: qo.cube_vert, + fragmentShader: qo.cube_frag, + }, + equirect: { + uniforms: { tEquirect: { value: null } }, + vertexShader: qo.equirect_vert, + fragmentShader: qo.equirect_frag, + }, + distanceRGBA: { + uniforms: So([ + Xo.common, + Xo.displacementmap, + { + referencePosition: { value: new lr() }, + nearDistance: { value: 1 }, + farDistance: { value: 1e3 }, + }, + ]), + vertexShader: qo.distanceRGBA_vert, + fragmentShader: qo.distanceRGBA_frag, + }, + shadow: { + uniforms: So([ + Xo.lights, + Xo.fog, + { color: { value: new Li(0) }, opacity: { value: 1 } }, + ]), + vertexShader: qo.shadow_vert, + fragmentShader: qo.shadow_frag, + }, + } + function Qo(e, t, n, r, i) { + var o, + a, + s = new Li(0), + l = 0, + c = null, + u = 0, + h = null + function d(n, i, d, f) { + var g = !0 === i.isScene ? i.background : null + g && g.isTexture && (g = t.get(g)) + var y = e.xr, + b = y.getSession && y.getSession() + b && 'additive' === b.environmentBlendMode && (g = null), + null === g ? p(s, l) : g && g.isColor && (p(g, 1), (f = !0)), + (e.autoClear || f) && + e.clear(e.autoClearColor, e.autoClearDepth, e.autoClearStencil), + g && (g.isCubeTexture || g.isWebGLCubeRenderTarget || g.mapping === ue) + ? (void 0 === a && + ((a = new xo( + new _o(1, 1, 1), + new Po({ + name: 'BackgroundCubeMaterial', + uniforms: To(Yo.cube.uniforms), + vertexShader: Yo.cube.vertexShader, + fragmentShader: Yo.cube.fragmentShader, + side: v, + depthTest: !1, + depthWrite: !1, + fog: !1, + }), + )).geometry.deleteAttribute('normal'), + a.geometry.deleteAttribute('uv'), + (a.onBeforeRender = function (e, t, n) { + this.matrixWorld.copyPosition(n.matrixWorld) + }), + Object.defineProperty(a.material, 'envMap', { + get: function () { + return this.uniforms.envMap.value + }, + }), + r.update(a)), + g.isWebGLCubeRenderTarget && (g = g.texture), + (a.material.uniforms.envMap.value = g), + (a.material.uniforms.flipEnvMap.value = + g.isCubeTexture && g._needsFlipEnvMap ? -1 : 1), + (c === g && u === g.version && h === e.toneMapping) || + ((a.material.needsUpdate = !0), + (c = g), + (u = g.version), + (h = e.toneMapping)), + n.unshift(a, a.geometry, a.material, 0, 0, null)) + : g && + g.isTexture && + (void 0 === o && + ((o = new xo( + new Wo(2, 2), + new Po({ + name: 'BackgroundMaterial', + uniforms: To(Yo.background.uniforms), + vertexShader: Yo.background.vertexShader, + fragmentShader: Yo.background.fragmentShader, + side: m, + depthTest: !1, + depthWrite: !1, + fog: !1, + }), + )).geometry.deleteAttribute('normal'), + Object.defineProperty(o.material, 'map', { + get: function () { + return this.uniforms.t2D.value + }, + }), + r.update(o)), + (o.material.uniforms.t2D.value = g), + !0 === g.matrixAutoUpdate && g.updateMatrix(), + o.material.uniforms.uvTransform.value.copy(g.matrix), + (c === g && u === g.version && h === e.toneMapping) || + ((o.material.needsUpdate = !0), + (c = g), + (u = g.version), + (h = e.toneMapping)), + n.unshift(o, o.geometry, o.material, 0, 0, null)) + } + function p(e, t) { + n.buffers.color.setClear(e.r, e.g, e.b, t, i) + } + return { + getClearColor: function () { + return s + }, + setClearColor: function (e, t) { + void 0 === t && (t = 1), s.set(e), p(s, (l = t)) + }, + getClearAlpha: function () { + return l + }, + setClearAlpha: function (e) { + p(s, (l = e)) + }, + render: d, + } + } + function Zo(e, t, n, r) { + var i = e.getParameter(34921), + o = r.isWebGL2 ? null : t.get('OES_vertex_array_object'), + a = r.isWebGL2 || null !== o, + s = {}, + l = m(null), + c = l + function u(t, r, i, o, s) { + var l = !1 + if (a) { + var u = f(o, i, r) + c !== u && d((c = u).object), (l = v(o, s)) && g(o, s) + } else { + var h = !0 === r.wireframe + ;(c.geometry === o.id && c.program === i.id && c.wireframe === h) || + ((c.geometry = o.id), (c.program = i.id), (c.wireframe = h), (l = !0)) + } + !0 === t.isInstancedMesh && (l = !0), + null !== s && n.update(s, 34963), + l && (E(t, r, i, o), null !== s && e.bindBuffer(34963, n.get(s).buffer)) + } + function h() { + return r.isWebGL2 ? e.createVertexArray() : o.createVertexArrayOES() + } + function d(t) { + return r.isWebGL2 ? e.bindVertexArray(t) : o.bindVertexArrayOES(t) + } + function p(t) { + return r.isWebGL2 ? e.deleteVertexArray(t) : o.deleteVertexArrayOES(t) + } + function f(e, t, n) { + var r = !0 === n.wireframe, + i = s[e.id] + void 0 === i && ((i = {}), (s[e.id] = i)) + var o = i[t.id] + void 0 === o && ((o = {}), (i[t.id] = o)) + var a = o[r] + return void 0 === a && ((a = m(h())), (o[r] = a)), a + } + function m(e) { + for (var t = [], n = [], r = [], o = 0; o < i; o++) + (t[o] = 0), (n[o] = 0), (r[o] = 0) + return { + geometry: null, + program: null, + wireframe: !1, + newAttributes: t, + enabledAttributes: n, + attributeDivisors: r, + object: e, + attributes: {}, + index: null, + } + } + function v(e, t) { + var n = c.attributes, + r = e.attributes, + i = 0 + for (var o in r) { + var a = n[o], + s = r[o] + if (void 0 === a) return !0 + if (a.attribute !== s) return !0 + if (a.data !== s.data) return !0 + i++ + } + return c.attributesNum !== i || c.index !== t + } + function g(e, t) { + var n = {}, + r = e.attributes, + i = 0 + for (var o in r) { + var a = r[o], + s = {} + ;(s.attribute = a), a.data && (s.data = a.data), (n[o] = s), i++ + } + ;(c.attributes = n), (c.attributesNum = i), (c.index = t) + } + function y() { + for (var e = c.newAttributes, t = 0, n = e.length; t < n; t++) e[t] = 0 + } + function b(e) { + A(e, 0) + } + function A(n, i) { + var o = c.newAttributes, + a = c.enabledAttributes, + s = c.attributeDivisors + ;(o[n] = 1), + 0 === a[n] && (e.enableVertexAttribArray(n), (a[n] = 1)), + s[n] !== i && + ((r.isWebGL2 ? e : t.get('ANGLE_instanced_arrays'))[ + r.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' + ](n, i), + (s[n] = i)) + } + function w() { + for ( + var t = c.newAttributes, n = c.enabledAttributes, r = 0, i = n.length; + r < i; + r++ + ) + n[r] !== t[r] && (e.disableVertexAttribArray(r), (n[r] = 0)) + } + function x(t, n, i, o, a, s) { + !0 !== r.isWebGL2 || (5124 !== i && 5125 !== i) + ? e.vertexAttribPointer(t, n, i, o, a, s) + : e.vertexAttribIPointer(t, n, i, a, s) + } + function E(i, o, a, s) { + if ( + !1 !== r.isWebGL2 || + (!i.isInstancedMesh && !s.isInstancedBufferGeometry) || + null !== t.get('ANGLE_instanced_arrays') + ) { + y() + var l = s.attributes, + c = a.getAttributes(), + u = o.defaultAttributeValues + for (var h in c) { + var d = c[h] + if (d >= 0) { + var p = l[h] + if (void 0 !== p) { + var f = p.normalized, + m = p.itemSize, + v = n.get(p) + if (void 0 === v) continue + var g = v.buffer, + E = v.type, + M = v.bytesPerElement + if (p.isInterleavedBufferAttribute) { + var _ = p.data, + T = _.stride, + S = p.offset + _ && _.isInstancedInterleavedBuffer + ? (A(d, _.meshPerAttribute), + void 0 === s._maxInstanceCount && + (s._maxInstanceCount = _.meshPerAttribute * _.count)) + : b(d), + e.bindBuffer(34962, g), + x(d, m, E, f, T * M, S * M) + } else + p.isInstancedBufferAttribute + ? (A(d, p.meshPerAttribute), + void 0 === s._maxInstanceCount && + (s._maxInstanceCount = p.meshPerAttribute * p.count)) + : b(d), + e.bindBuffer(34962, g), + x(d, m, E, f, 0, 0) + } else if ('instanceMatrix' === h) { + var C = n.get(i.instanceMatrix) + if (void 0 === C) continue + var L = C.buffer, + R = C.type + A(d + 0, 1), + A(d + 1, 1), + A(d + 2, 1), + A(d + 3, 1), + e.bindBuffer(34962, L), + e.vertexAttribPointer(d + 0, 4, R, !1, 64, 0), + e.vertexAttribPointer(d + 1, 4, R, !1, 64, 16), + e.vertexAttribPointer(d + 2, 4, R, !1, 64, 32), + e.vertexAttribPointer(d + 3, 4, R, !1, 64, 48) + } else if ('instanceColor' === h) { + var P = n.get(i.instanceColor) + if (void 0 === P) continue + var D = P.buffer, + O = P.type + A(d, 1), + e.bindBuffer(34962, D), + e.vertexAttribPointer(d, 3, O, !1, 12, 0) + } else if (void 0 !== u) { + var I = u[h] + if (void 0 !== I) + switch (I.length) { + case 2: + e.vertexAttrib2fv(d, I) + break + case 3: + e.vertexAttrib3fv(d, I) + break + case 4: + e.vertexAttrib4fv(d, I) + break + default: + e.vertexAttrib1fv(d, I) + } + } + } + } + w() + } + } + function M() { + for (var e in (S(), s)) { + var t = s[e] + for (var n in t) { + var r = t[n] + for (var i in r) p(r[i].object), delete r[i] + delete t[n] + } + delete s[e] + } + } + function _(e) { + if (void 0 !== s[e.id]) { + var t = s[e.id] + for (var n in t) { + var r = t[n] + for (var i in r) p(r[i].object), delete r[i] + delete t[n] + } + delete s[e.id] + } + } + function T(e) { + for (var t in s) { + var n = s[t] + if (void 0 !== n[e.id]) { + var r = n[e.id] + for (var i in r) p(r[i].object), delete r[i] + delete n[e.id] + } + } + } + function S() { + C(), c !== l && d((c = l).object) + } + function C() { + ;(l.geometry = null), (l.program = null), (l.wireframe = !1) + } + return { + setup: u, + reset: S, + resetDefaultState: C, + dispose: M, + releaseStatesOfGeometry: _, + releaseStatesOfProgram: T, + initAttributes: y, + enableAttribute: b, + disableUnusedAttributes: w, + } + } + function Ko(e, t, n, r) { + var i, + o = r.isWebGL2 + function a(e) { + i = e + } + function s(t, r) { + e.drawArrays(i, t, r), n.update(r, i, 1) + } + function l(r, a, s) { + if (0 !== s) { + var l, c + if (o) (l = e), (c = 'drawArraysInstanced') + else if ( + ((c = 'drawArraysInstancedANGLE'), + null === (l = t.get('ANGLE_instanced_arrays'))) + ) + return void console.error( + 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.', + ) + l[c](i, r, a, s), n.update(a, i, s) + } + } + ;(this.setMode = a), (this.render = s), (this.renderInstances = l) + } + function Jo(e, t, n) { + var r + function i() { + if (void 0 !== r) return r + var n = t.get('EXT_texture_filter_anisotropic') + return (r = + null !== n ? e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 0) + } + function o(t) { + if ('highp' === t) { + if ( + e.getShaderPrecisionFormat(35633, 36338).precision > 0 && + e.getShaderPrecisionFormat(35632, 36338).precision > 0 + ) + return 'highp' + t = 'mediump' + } + return 'mediump' === t && + e.getShaderPrecisionFormat(35633, 36337).precision > 0 && + e.getShaderPrecisionFormat(35632, 36337).precision > 0 + ? 'mediump' + : 'lowp' + } + var a = + ('undefined' !== typeof WebGL2RenderingContext && + e instanceof WebGL2RenderingContext) || + ('undefined' !== typeof WebGL2ComputeRenderingContext && + e instanceof WebGL2ComputeRenderingContext), + s = void 0 !== n.precision ? n.precision : 'highp', + l = o(s) + l !== s && + (console.warn( + 'THREE.WebGLRenderer:', + s, + 'not supported, using', + l, + 'instead.', + ), + (s = l)) + var c = !0 === n.logarithmicDepthBuffer, + u = e.getParameter(34930), + h = e.getParameter(35660), + d = e.getParameter(3379), + p = e.getParameter(34076), + f = e.getParameter(34921), + m = e.getParameter(36347), + v = e.getParameter(36348), + g = e.getParameter(36349), + y = h > 0, + b = a || !!t.get('OES_texture_float') + return { + isWebGL2: a, + getMaxAnisotropy: i, + getMaxPrecision: o, + precision: s, + logarithmicDepthBuffer: c, + maxTextures: u, + maxVertexTextures: h, + maxTextureSize: d, + maxCubemapSize: p, + maxAttributes: f, + maxVertexUniforms: m, + maxVaryings: v, + maxFragmentUniforms: g, + vertexTextures: y, + floatFragmentTextures: b, + floatVertexTextures: y && b, + maxSamples: a ? e.getParameter(36183) : 0, + } + } + function $o(e) { + var t = this, + n = null, + r = 0, + i = !1, + o = !1, + a = new hi(), + s = new $n(), + l = { value: null, needsUpdate: !1 } + function c() { + l.value !== n && ((l.value = n), (l.needsUpdate = r > 0)), + (t.numPlanes = r), + (t.numIntersection = 0) + } + function u(e, n, r, i) { + var o = null !== e ? e.length : 0, + c = null + if (0 !== o) { + if (((c = l.value), !0 !== i || null === c)) { + var u = r + 4 * o, + h = n.matrixWorldInverse + s.getNormalMatrix(h), + (null === c || c.length < u) && (c = new Float32Array(u)) + for (var d = 0, p = r; d !== o; ++d, p += 4) + a.copy(e[d]).applyMatrix4(h, s), + a.normal.toArray(c, p), + (c[p + 3] = a.constant) + } + ;(l.value = c), (l.needsUpdate = !0) + } + return (t.numPlanes = o), (t.numIntersection = 0), c + } + ;(this.uniform = l), + (this.numPlanes = 0), + (this.numIntersection = 0), + (this.init = function (e, t, o) { + var a = 0 !== e.length || t || 0 !== r || i + return (i = t), (n = u(e, o, 0)), (r = e.length), a + }), + (this.beginShadows = function () { + ;(o = !0), u(null) + }), + (this.endShadows = function () { + ;(o = !1), c() + }), + (this.setState = function (t, a, s) { + var h = t.clippingPlanes, + d = t.clipIntersection, + p = t.clipShadows, + f = e.get(t) + if (!i || null === h || 0 === h.length || (o && !p)) o ? u(null) : c() + else { + var m = o ? 0 : r, + v = 4 * m, + g = f.clippingState || null + ;(l.value = g), (g = u(h, a, v, s)) + for (var y = 0; y !== v; ++y) g[y] = n[y] + ;(f.clippingState = g), + (this.numIntersection = d ? this.numPlanes : 0), + (this.numPlanes += m) + } + }) + } + function ea(e) { + var t = new WeakMap() + function n(e, t) { + return t === le ? (e.mapping = ae) : t === ce && (e.mapping = se), e + } + function r(r) { + if (r && r.isTexture) { + var o = r.mapping + if (o === le || o === ce) { + if (t.has(r)) return n(t.get(r).texture, r.mapping) + var a = r.image + if (a && a.height > 0) { + var s = e.getRenderList(), + l = e.getRenderTarget(), + c = new No(a.height / 2) + return ( + c.fromEquirectangularTexture(e, r), + t.set(r, c), + e.setRenderTarget(l), + e.setRenderList(s), + r.addEventListener('dispose', i), + n(c.texture, r.mapping) + ) + } + return null + } + } + return r + } + function i(e) { + var n = e.target + n.removeEventListener('dispose', i) + var r = t.get(n) + void 0 !== r && (t.delete(n), r.dispose()) + } + function o() { + t = new WeakMap() + } + return { get: r, dispose: o } + } + function ta(e) { + var t = {} + function n(n) { + if (void 0 !== t[n]) return t[n] + var r + switch (n) { + case 'WEBGL_depth_texture': + r = + e.getExtension('WEBGL_depth_texture') || + e.getExtension('MOZ_WEBGL_depth_texture') || + e.getExtension('WEBKIT_WEBGL_depth_texture') + break + case 'EXT_texture_filter_anisotropic': + r = + e.getExtension('EXT_texture_filter_anisotropic') || + e.getExtension('MOZ_EXT_texture_filter_anisotropic') || + e.getExtension('WEBKIT_EXT_texture_filter_anisotropic') + break + case 'WEBGL_compressed_texture_s3tc': + r = + e.getExtension('WEBGL_compressed_texture_s3tc') || + e.getExtension('MOZ_WEBGL_compressed_texture_s3tc') || + e.getExtension('WEBKIT_WEBGL_compressed_texture_s3tc') + break + case 'WEBGL_compressed_texture_pvrtc': + r = + e.getExtension('WEBGL_compressed_texture_pvrtc') || + e.getExtension('WEBKIT_WEBGL_compressed_texture_pvrtc') + break + default: + r = e.getExtension(n) + } + return (t[n] = r), r + } + return { + has: function (e) { + return null !== n(e) + }, + init: function (e) { + e.isWebGL2 + ? n('EXT_color_buffer_float') + : (n('WEBGL_depth_texture'), + n('OES_texture_float'), + n('OES_texture_half_float'), + n('OES_texture_half_float_linear'), + n('OES_standard_derivatives'), + n('OES_element_index_uint'), + n('OES_vertex_array_object'), + n('ANGLE_instanced_arrays')), + n('OES_texture_float_linear'), + n('EXT_color_buffer_half_float') + }, + get: function (e) { + var t = n(e) + return ( + null === t && + console.warn( + 'THREE.WebGLRenderer: ' + e + ' extension not supported.', + ), + t + ) + }, + } + } + function na(e, t, n, r) { + var i = {}, + o = new WeakMap() + function a(e) { + var s = e.target + for (var l in (null !== s.index && t.remove(s.index), s.attributes)) + t.remove(s.attributes[l]) + s.removeEventListener('dispose', a), delete i[s.id] + var c = o.get(s) + c && (t.remove(c), o.delete(s)), + r.releaseStatesOfGeometry(s), + !0 === s.isInstancedBufferGeometry && delete s._maxInstanceCount, + n.memory.geometries-- + } + function s(e, t) { + return ( + !0 === i[t.id] || + (t.addEventListener('dispose', a), + (i[t.id] = !0), + n.memory.geometries++), + t + ) + } + function l(e) { + var n = e.attributes + for (var r in n) t.update(n[r], 34962) + var i = e.morphAttributes + for (var o in i) + for (var a = i[o], s = 0, l = a.length; s < l; s++) t.update(a[s], 34962) + } + function c(e) { + var n = [], + r = e.index, + i = e.attributes.position, + a = 0 + if (null !== r) { + var s = r.array + a = r.version + for (var l = 0, c = s.length; l < c; l += 3) { + var u = s[l + 0], + h = s[l + 1], + d = s[l + 2] + n.push(u, h, h, d, d, u) + } + } else { + var p = i.array + a = i.version + for (var f = 0, m = p.length / 3 - 1; f < m; f += 3) { + var v = f + 0, + g = f + 1, + y = f + 2 + n.push(v, g, g, y, y, v) + } + } + var b = new (Xi(n) > 65535 ? ji : Gi)(n, 1) + b.version = a + var A = o.get(e) + A && t.remove(A), o.set(e, b) + } + function u(e) { + var t = o.get(e) + if (t) { + var n = e.index + null !== n && t.version < n.version && c(e) + } else c(e) + return o.get(e) + } + return { get: s, update: l, getWireframeAttribute: u } + } + function ra(e, t, n, r) { + var i, + o, + a, + s = r.isWebGL2 + function l(e) { + i = e + } + function c(e) { + ;(o = e.type), (a = e.bytesPerElement) + } + function u(t, r) { + e.drawElements(i, r, o, t * a), n.update(r, i, 1) + } + function h(r, l, c) { + if (0 !== c) { + var u, h + if (s) (u = e), (h = 'drawElementsInstanced') + else if ( + ((h = 'drawElementsInstancedANGLE'), + null === (u = t.get('ANGLE_instanced_arrays'))) + ) + return void console.error( + 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.', + ) + u[h](i, l, o, r * a, c), n.update(l, i, c) + } + } + ;(this.setMode = l), + (this.setIndex = c), + (this.render = u), + (this.renderInstances = h) + } + function ia(e) { + var t = { frame: 0, calls: 0, triangles: 0, points: 0, lines: 0 } + function n(e, n, r) { + switch ((t.calls++, n)) { + case 4: + t.triangles += r * (e / 3) + break + case 1: + t.lines += r * (e / 2) + break + case 3: + t.lines += r * (e - 1) + break + case 2: + t.lines += r * e + break + case 0: + t.points += r * e + break + default: + console.error('THREE.WebGLInfo: Unknown draw mode:', n) + } + } + function r() { + t.frame++, (t.calls = 0), (t.triangles = 0), (t.points = 0), (t.lines = 0) + } + return { + memory: { geometries: 0, textures: 0 }, + render: t, + programs: null, + autoReset: !0, + reset: r, + update: n, + } + } + function oa(e, t) { + return e[0] - t[0] + } + function aa(e, t) { + return Math.abs(t[1]) - Math.abs(e[1]) + } + function sa(e) { + for (var t = {}, n = new Float32Array(8), r = [], i = 0; i < 8; i++) + r[i] = [i, 0] + function o(i, o, a, s) { + var l = i.morphTargetInfluences, + c = void 0 === l ? 0 : l.length, + u = t[o.id] + if (void 0 === u) { + u = [] + for (var h = 0; h < c; h++) u[h] = [h, 0] + t[o.id] = u + } + for (var d = 0; d < c; d++) { + var p = u[d] + ;(p[0] = d), (p[1] = l[d]) + } + u.sort(aa) + for (var f = 0; f < 8; f++) + f < c && u[f][1] + ? ((r[f][0] = u[f][0]), (r[f][1] = u[f][1])) + : ((r[f][0] = Number.MAX_SAFE_INTEGER), (r[f][1] = 0)) + r.sort(oa) + for ( + var m = a.morphTargets && o.morphAttributes.position, + v = a.morphNormals && o.morphAttributes.normal, + g = 0, + y = 0; + y < 8; + y++ + ) { + var b = r[y], + A = b[0], + w = b[1] + A !== Number.MAX_SAFE_INTEGER && w + ? (m && + o.getAttribute('morphTarget' + y) !== m[A] && + o.setAttribute('morphTarget' + y, m[A]), + v && + o.getAttribute('morphNormal' + y) !== v[A] && + o.setAttribute('morphNormal' + y, v[A]), + (n[y] = w), + (g += w)) + : (m && + !0 === o.hasAttribute('morphTarget' + y) && + o.deleteAttribute('morphTarget' + y), + v && + !0 === o.hasAttribute('morphNormal' + y) && + o.deleteAttribute('morphNormal' + y), + (n[y] = 0)) + } + var x = o.morphTargetsRelative ? 1 : 1 - g + s.getUniforms().setValue(e, 'morphTargetBaseInfluence', x), + s.getUniforms().setValue(e, 'morphTargetInfluences', n) + } + return { update: o } + } + function la(e, t, n, r) { + var i = new WeakMap() + function o(e) { + var o = r.render.frame, + a = e.geometry, + l = t.get(e, a) + return ( + i.get(l) !== o && (t.update(l), i.set(l, o)), + e.isInstancedMesh && + (!1 === e.hasEventListener('dispose', s) && + e.addEventListener('dispose', s), + n.update(e.instanceMatrix, 34962), + null !== e.instanceColor && n.update(e.instanceColor, 34962)), + l + ) + } + function a() { + i = new WeakMap() + } + function s(e) { + var t = e.target + t.removeEventListener('dispose', s), + n.remove(t.instanceMatrix), + null !== t.instanceColor && n.remove(t.instanceColor) + } + return { update: o, dispose: a } + } + function ca(e, t, n, r) { + void 0 === e && (e = null), + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 1), + nr.call(this, null), + (this.image = { data: e, width: t, height: n, depth: r }), + (this.magFilter = me), + (this.minFilter = me), + (this.wrapR = pe), + (this.generateMipmaps = !1), + (this.flipY = !1), + (this.needsUpdate = !0) + } + function ua(e, t, n, r) { + void 0 === e && (e = null), + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 1), + nr.call(this, null), + (this.image = { data: e, width: t, height: n, depth: r }), + (this.magFilter = me), + (this.minFilter = me), + (this.wrapR = pe), + (this.generateMipmaps = !1), + (this.flipY = !1), + (this.needsUpdate = !0) + } + ;(Yo.physical = { + uniforms: So([ + Yo.standard.uniforms, + { + clearcoat: { value: 0 }, + clearcoatMap: { value: null }, + clearcoatRoughness: { value: 0 }, + clearcoatRoughnessMap: { value: null }, + clearcoatNormalScale: { value: new Jn(1, 1) }, + clearcoatNormalMap: { value: null }, + sheen: { value: new Li(0) }, + transmission: { value: 0 }, + transmissionMap: { value: null }, + }, + ]), + vertexShader: qo.meshphysical_vert, + fragmentShader: qo.meshphysical_frag, + }), + (ca.prototype = Object.create(nr.prototype)), + (ca.prototype.constructor = ca), + (ca.prototype.isDataTexture2DArray = !0), + (ua.prototype = Object.create(nr.prototype)), + (ua.prototype.constructor = ua), + (ua.prototype.isDataTexture3D = !0) + var ha = new nr(), + da = new ca(), + pa = new ua(), + fa = new ko(), + ma = [], + va = [], + ga = new Float32Array(16), + ya = new Float32Array(9), + ba = new Float32Array(4) + function Aa(e, t, n) { + var r = e[0] + if (r <= 0 || r > 0) return e + var i = t * n, + o = ma[i] + if ((void 0 === o && ((o = new Float32Array(i)), (ma[i] = o)), 0 !== t)) { + r.toArray(o, 0) + for (var a = 1, s = 0; a !== t; ++a) (s += n), e[a].toArray(o, s) + } + return o + } + function wa(e, t) { + if (e.length !== t.length) return !1 + for (var n = 0, r = e.length; n < r; n++) if (e[n] !== t[n]) return !1 + return !0 + } + function xa(e, t) { + for (var n = 0, r = t.length; n < r; n++) e[n] = t[n] + } + function Ea(e, t) { + var n = va[t] + void 0 === n && ((n = new Int32Array(t)), (va[t] = n)) + for (var r = 0; r !== t; ++r) n[r] = e.allocateTextureUnit() + return n + } + function Ma(e, t) { + var n = this.cache + n[0] !== t && (e.uniform1f(this.addr, t), (n[0] = t)) + } + function _a(e, t) { + var n = this.cache + if (void 0 !== t.x) + (n[0] === t.x && n[1] === t.y) || + (e.uniform2f(this.addr, t.x, t.y), (n[0] = t.x), (n[1] = t.y)) + else { + if (wa(n, t)) return + e.uniform2fv(this.addr, t), xa(n, t) + } + } + function Ta(e, t) { + var n = this.cache + if (void 0 !== t.x) + (n[0] === t.x && n[1] === t.y && n[2] === t.z) || + (e.uniform3f(this.addr, t.x, t.y, t.z), + (n[0] = t.x), + (n[1] = t.y), + (n[2] = t.z)) + else if (void 0 !== t.r) + (n[0] === t.r && n[1] === t.g && n[2] === t.b) || + (e.uniform3f(this.addr, t.r, t.g, t.b), + (n[0] = t.r), + (n[1] = t.g), + (n[2] = t.b)) + else { + if (wa(n, t)) return + e.uniform3fv(this.addr, t), xa(n, t) + } + } + function Sa(e, t) { + var n = this.cache + if (void 0 !== t.x) + (n[0] === t.x && n[1] === t.y && n[2] === t.z && n[3] === t.w) || + (e.uniform4f(this.addr, t.x, t.y, t.z, t.w), + (n[0] = t.x), + (n[1] = t.y), + (n[2] = t.z), + (n[3] = t.w)) + else { + if (wa(n, t)) return + e.uniform4fv(this.addr, t), xa(n, t) + } + } + function Ca(e, t) { + var n = this.cache, + r = t.elements + if (void 0 === r) { + if (wa(n, t)) return + e.uniformMatrix2fv(this.addr, !1, t), xa(n, t) + } else { + if (wa(n, r)) return + ba.set(r), e.uniformMatrix2fv(this.addr, !1, ba), xa(n, r) + } + } + function La(e, t) { + var n = this.cache, + r = t.elements + if (void 0 === r) { + if (wa(n, t)) return + e.uniformMatrix3fv(this.addr, !1, t), xa(n, t) + } else { + if (wa(n, r)) return + ya.set(r), e.uniformMatrix3fv(this.addr, !1, ya), xa(n, r) + } + } + function Ra(e, t) { + var n = this.cache, + r = t.elements + if (void 0 === r) { + if (wa(n, t)) return + e.uniformMatrix4fv(this.addr, !1, t), xa(n, t) + } else { + if (wa(n, r)) return + ga.set(r), e.uniformMatrix4fv(this.addr, !1, ga), xa(n, r) + } + } + function Pa(e, t, n) { + var r = this.cache, + i = n.allocateTextureUnit() + r[0] !== i && (e.uniform1i(this.addr, i), (r[0] = i)), + n.safeSetTexture2D(t || ha, i) + } + function Da(e, t, n) { + var r = this.cache, + i = n.allocateTextureUnit() + r[0] !== i && (e.uniform1i(this.addr, i), (r[0] = i)), + n.setTexture2DArray(t || da, i) + } + function Oa(e, t, n) { + var r = this.cache, + i = n.allocateTextureUnit() + r[0] !== i && (e.uniform1i(this.addr, i), (r[0] = i)), + n.setTexture3D(t || pa, i) + } + function Ia(e, t, n) { + var r = this.cache, + i = n.allocateTextureUnit() + r[0] !== i && (e.uniform1i(this.addr, i), (r[0] = i)), + n.safeSetTextureCube(t || fa, i) + } + function Ba(e, t) { + var n = this.cache + n[0] !== t && (e.uniform1i(this.addr, t), (n[0] = t)) + } + function Fa(e, t) { + var n = this.cache + wa(n, t) || (e.uniform2iv(this.addr, t), xa(n, t)) + } + function ka(e, t) { + var n = this.cache + wa(n, t) || (e.uniform3iv(this.addr, t), xa(n, t)) + } + function Na(e, t) { + var n = this.cache + wa(n, t) || (e.uniform4iv(this.addr, t), xa(n, t)) + } + function Ua(e, t) { + var n = this.cache + n[0] !== t && (e.uniform1ui(this.addr, t), (n[0] = t)) + } + function Ha(e) { + switch (e) { + case 5126: + return Ma + case 35664: + return _a + case 35665: + return Ta + case 35666: + return Sa + case 35674: + return Ca + case 35675: + return La + case 35676: + return Ra + case 5124: + case 35670: + return Ba + case 35667: + case 35671: + return Fa + case 35668: + case 35672: + return ka + case 35669: + case 35673: + return Na + case 5125: + return Ua + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Pa + case 35679: + case 36299: + case 36307: + return Oa + case 35680: + case 36300: + case 36308: + case 36293: + return Ia + case 36289: + case 36303: + case 36311: + case 36292: + return Da + } + } + function Ga(e, t) { + e.uniform1fv(this.addr, t) + } + function za(e, t) { + e.uniform1iv(this.addr, t) + } + function ja(e, t) { + e.uniform2iv(this.addr, t) + } + function Va(e, t) { + e.uniform3iv(this.addr, t) + } + function Wa(e, t) { + e.uniform4iv(this.addr, t) + } + function qa(e, t) { + var n = Aa(t, this.size, 2) + e.uniform2fv(this.addr, n) + } + function Xa(e, t) { + var n = Aa(t, this.size, 3) + e.uniform3fv(this.addr, n) + } + function Ya(e, t) { + var n = Aa(t, this.size, 4) + e.uniform4fv(this.addr, n) + } + function Qa(e, t) { + var n = Aa(t, this.size, 4) + e.uniformMatrix2fv(this.addr, !1, n) + } + function Za(e, t) { + var n = Aa(t, this.size, 9) + e.uniformMatrix3fv(this.addr, !1, n) + } + function Ka(e, t) { + var n = Aa(t, this.size, 16) + e.uniformMatrix4fv(this.addr, !1, n) + } + function Ja(e, t, n) { + var r = t.length, + i = Ea(n, r) + e.uniform1iv(this.addr, i) + for (var o = 0; o !== r; ++o) n.safeSetTexture2D(t[o] || ha, i[o]) + } + function $a(e, t, n) { + var r = t.length, + i = Ea(n, r) + e.uniform1iv(this.addr, i) + for (var o = 0; o !== r; ++o) n.safeSetTextureCube(t[o] || fa, i[o]) + } + function es(e) { + switch (e) { + case 5126: + return Ga + case 35664: + return qa + case 35665: + return Xa + case 35666: + return Ya + case 35674: + return Qa + case 35675: + return Za + case 35676: + return Ka + case 5124: + case 35670: + return za + case 35667: + case 35671: + return ja + case 35668: + case 35672: + return Va + case 35669: + case 35673: + return Wa + case 35678: + case 36198: + case 36298: + case 36306: + case 35682: + return Ja + case 35680: + case 36300: + case 36308: + case 36293: + return $a + } + } + function ts(e, t, n) { + ;(this.id = e), + (this.addr = n), + (this.cache = []), + (this.setValue = Ha(t.type)) + } + function ns(e, t, n) { + ;(this.id = e), + (this.addr = n), + (this.cache = []), + (this.size = t.size), + (this.setValue = es(t.type)) + } + function rs(e) { + ;(this.id = e), (this.seq = []), (this.map = {}) + } + ;(ns.prototype.updateCache = function (e) { + var t = this.cache + e instanceof Float32Array && + t.length !== e.length && + (this.cache = new Float32Array(e.length)), + xa(t, e) + }), + (rs.prototype.setValue = function (e, t, n) { + for (var r = this.seq, i = 0, o = r.length; i !== o; ++i) { + var a = r[i] + a.setValue(e, t[a.id], n) + } + }) + var is = /(\w+)(\])?(\[|\.)?/g + function os(e, t) { + e.seq.push(t), (e.map[t.id] = t) + } + function as(e, t, n) { + var r = e.name, + i = r.length + for (is.lastIndex = 0; ; ) { + var o = is.exec(r), + a = is.lastIndex, + s = o[1], + l = ']' === o[2], + c = o[3] + if ((l && (s |= 0), void 0 === c || ('[' === c && a + 2 === i))) { + os(n, void 0 === c ? new ts(s, e, t) : new ns(s, e, t)) + break + } + var u = n.map[s] + void 0 === u && os(n, (u = new rs(s))), (n = u) + } + } + function ss(e, t) { + ;(this.seq = []), (this.map = {}) + for (var n = e.getProgramParameter(t, 35718), r = 0; r < n; ++r) { + var i = e.getActiveUniform(t, r) + as(i, e.getUniformLocation(t, i.name), this) + } + } + function ls(e, t, n) { + var r = e.createShader(t) + return e.shaderSource(r, n), e.compileShader(r), r + } + ;(ss.prototype.setValue = function (e, t, n, r) { + var i = this.map[t] + void 0 !== i && i.setValue(e, n, r) + }), + (ss.prototype.setOptional = function (e, t, n) { + var r = t[n] + void 0 !== r && this.setValue(e, n, r) + }), + (ss.upload = function (e, t, n, r) { + for (var i = 0, o = t.length; i !== o; ++i) { + var a = t[i], + s = n[a.id] + !1 !== s.needsUpdate && a.setValue(e, s.value, r) + } + }), + (ss.seqWithValue = function (e, t) { + for (var n = [], r = 0, i = e.length; r !== i; ++r) { + var o = e[r] + o.id in t && n.push(o) + } + return n + }) + var cs = 0 + function us(e) { + for (var t = e.split('\n'), n = 0; n < t.length; n++) + t[n] = n + 1 + ': ' + t[n] + return t.join('\n') + } + function hs(e) { + switch (e) { + case Kt: + return ['Linear', '( value )'] + case Jt: + return ['sRGB', '( value )'] + case en: + return ['RGBE', '( value )'] + case nn: + return ['RGBM', '( value, 7.0 )'] + case rn: + return ['RGBM', '( value, 16.0 )'] + case on: + return ['RGBD', '( value, 256.0 )'] + case $t: + return ['Gamma', '( value, float( GAMMA_FACTOR ) )'] + case tn: + return ['LogLuv', '( value )'] + default: + return ( + console.warn('THREE.WebGLProgram: Unsupported encoding:', e), + ['Linear', '( value )'] + ) + } + } + function ds(e, t, n) { + var r = e.getShaderParameter(t, 35713), + i = e.getShaderInfoLog(t).trim() + return r && '' === i + ? '' + : 'THREE.WebGLShader: gl.getShaderInfoLog() ' + + n + + '\n' + + i + + us(e.getShaderSource(t)) + } + function ps(e, t) { + var n = hs(t) + return ( + 'vec4 ' + e + '( vec4 value ) { return ' + n[0] + 'ToLinear' + n[1] + '; }' + ) + } + function fs(e, t) { + var n = hs(t) + return 'vec4 ' + e + '( vec4 value ) { return LinearTo' + n[0] + n[1] + '; }' + } + function ms(e, t) { + var n + switch (t) { + case ee: + n = 'Linear' + break + case te: + n = 'Reinhard' + break + case ne: + n = 'OptimizedCineon' + break + case re: + n = 'ACESFilmic' + break + case ie: + n = 'Custom' + break + default: + console.warn('THREE.WebGLProgram: Unsupported toneMapping:', t), + (n = 'Linear') + } + return ( + 'vec3 ' + e + '( vec3 color ) { return ' + n + 'ToneMapping( color ); }' + ) + } + function vs(e) { + return [ + e.extensionDerivatives || + e.envMapCubeUV || + e.bumpMap || + e.tangentSpaceNormalMap || + e.clearcoatNormalMap || + e.flatShading || + 'physical' === e.shaderID + ? '#extension GL_OES_standard_derivatives : enable' + : '', + (e.extensionFragDepth || e.logarithmicDepthBuffer) && + e.rendererExtensionFragDepth + ? '#extension GL_EXT_frag_depth : enable' + : '', + e.extensionDrawBuffers && e.rendererExtensionDrawBuffers + ? '#extension GL_EXT_draw_buffers : require' + : '', + (e.extensionShaderTextureLOD || e.envMap) && + e.rendererExtensionShaderTextureLod + ? '#extension GL_EXT_shader_texture_lod : enable' + : '', + ] + .filter(bs) + .join('\n') + } + function gs(e) { + var t = [] + for (var n in e) { + var r = e[n] + !1 !== r && t.push('#define ' + n + ' ' + r) + } + return t.join('\n') + } + function ys(e, t) { + for (var n = {}, r = e.getProgramParameter(t, 35721), i = 0; i < r; i++) { + var o = e.getActiveAttrib(t, i).name + n[o] = e.getAttribLocation(t, o) + } + return n + } + function bs(e) { + return '' !== e + } + function As(e, t) { + return e + .replace(/NUM_DIR_LIGHTS/g, t.numDirLights) + .replace(/NUM_SPOT_LIGHTS/g, t.numSpotLights) + .replace(/NUM_RECT_AREA_LIGHTS/g, t.numRectAreaLights) + .replace(/NUM_POINT_LIGHTS/g, t.numPointLights) + .replace(/NUM_HEMI_LIGHTS/g, t.numHemiLights) + .replace(/NUM_DIR_LIGHT_SHADOWS/g, t.numDirLightShadows) + .replace(/NUM_SPOT_LIGHT_SHADOWS/g, t.numSpotLightShadows) + .replace(/NUM_POINT_LIGHT_SHADOWS/g, t.numPointLightShadows) + } + function ws(e, t) { + return e + .replace(/NUM_CLIPPING_PLANES/g, t.numClippingPlanes) + .replace( + /UNION_CLIPPING_PLANES/g, + t.numClippingPlanes - t.numClipIntersection, + ) + } + var xs = /^[ \t]*#include +<([\w\d./]+)>/gm + function Es(e) { + return e.replace(xs, Ms) + } + function Ms(e, t) { + var n = qo[t] + if (void 0 === n) throw new Error('Can not resolve #include <' + t + '>') + return Es(n) + } + var _s = + /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g, + Ts = + /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g + function Ss(e) { + return e.replace(Ts, Ls).replace(_s, Cs) + } + function Cs(e, t, n, r) { + return ( + console.warn( + 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.', + ), + Ls(e, t, n, r) + ) + } + function Ls(e, t, n, r) { + for (var i = '', o = parseInt(t); o < parseInt(n); o++) + i += r + .replace(/\[\s*i\s*\]/g, '[ ' + o + ' ]') + .replace(/UNROLLED_LOOP_INDEX/g, o) + return i + } + function Rs(e) { + var t = + 'precision ' + e.precision + ' float;\nprecision ' + e.precision + ' int;' + return ( + 'highp' === e.precision + ? (t += '\n#define HIGH_PRECISION') + : 'mediump' === e.precision + ? (t += '\n#define MEDIUM_PRECISION') + : 'lowp' === e.precision && (t += '\n#define LOW_PRECISION'), + t + ) + } + function Ps(e) { + var t = 'SHADOWMAP_TYPE_BASIC' + return ( + e.shadowMapType === d + ? (t = 'SHADOWMAP_TYPE_PCF') + : e.shadowMapType === p + ? (t = 'SHADOWMAP_TYPE_PCF_SOFT') + : e.shadowMapType === f && (t = 'SHADOWMAP_TYPE_VSM'), + t + ) + } + function Ds(e) { + var t = 'ENVMAP_TYPE_CUBE' + if (e.envMap) + switch (e.envMapMode) { + case ae: + case se: + t = 'ENVMAP_TYPE_CUBE' + break + case ue: + case he: + t = 'ENVMAP_TYPE_CUBE_UV' + } + return t + } + function Os(e) { + var t = 'ENVMAP_MODE_REFLECTION' + if (e.envMap) + switch (e.envMapMode) { + case se: + case he: + t = 'ENVMAP_MODE_REFRACTION' + } + return t + } + function Is(e) { + var t = 'ENVMAP_BLENDING_NONE' + if (e.envMap) + switch (e.combine) { + case Z: + t = 'ENVMAP_BLENDING_MULTIPLY' + break + case K: + t = 'ENVMAP_BLENDING_MIX' + break + case J: + t = 'ENVMAP_BLENDING_ADD' + } + return t + } + function Bs(e, t, n, r) { + var i, + o, + a = e.getContext(), + s = n.defines, + l = n.vertexShader, + c = n.fragmentShader, + u = Ps(n), + h = Ds(n), + d = Os(n), + p = Is(n), + f = e.gammaFactor > 0 ? e.gammaFactor : 1, + m = n.isWebGL2 ? '' : vs(n), + v = gs(s), + g = a.createProgram(), + y = n.glslVersion ? '#version ' + n.glslVersion + '\n' : '' + n.isRawShaderMaterial + ? ((i = [v].filter(bs).join('\n')).length > 0 && (i += '\n'), + (o = [m, v].filter(bs).join('\n')).length > 0 && (o += '\n')) + : ((i = [ + Rs(n), + '#define SHADER_NAME ' + n.shaderName, + v, + n.instancing ? '#define USE_INSTANCING' : '', + n.instancingColor ? '#define USE_INSTANCING_COLOR' : '', + n.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', + '#define GAMMA_FACTOR ' + f, + '#define MAX_BONES ' + n.maxBones, + n.useFog && n.fog ? '#define USE_FOG' : '', + n.useFog && n.fogExp2 ? '#define FOG_EXP2' : '', + n.map ? '#define USE_MAP' : '', + n.envMap ? '#define USE_ENVMAP' : '', + n.envMap ? '#define ' + d : '', + n.lightMap ? '#define USE_LIGHTMAP' : '', + n.aoMap ? '#define USE_AOMAP' : '', + n.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + n.bumpMap ? '#define USE_BUMPMAP' : '', + n.normalMap ? '#define USE_NORMALMAP' : '', + n.normalMap && n.objectSpaceNormalMap + ? '#define OBJECTSPACE_NORMALMAP' + : '', + n.normalMap && n.tangentSpaceNormalMap + ? '#define TANGENTSPACE_NORMALMAP' + : '', + n.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', + n.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', + n.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + n.displacementMap && n.supportsVertexTextures + ? '#define USE_DISPLACEMENTMAP' + : '', + n.specularMap ? '#define USE_SPECULARMAP' : '', + n.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + n.metalnessMap ? '#define USE_METALNESSMAP' : '', + n.alphaMap ? '#define USE_ALPHAMAP' : '', + n.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', + n.vertexTangents ? '#define USE_TANGENT' : '', + n.vertexColors ? '#define USE_COLOR' : '', + n.vertexUvs ? '#define USE_UV' : '', + n.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', + n.flatShading ? '#define FLAT_SHADED' : '', + n.skinning ? '#define USE_SKINNING' : '', + n.useVertexTexture ? '#define BONE_TEXTURE' : '', + n.morphTargets ? '#define USE_MORPHTARGETS' : '', + n.morphNormals && !1 === n.flatShading + ? '#define USE_MORPHNORMALS' + : '', + n.doubleSided ? '#define DOUBLE_SIDED' : '', + n.flipSided ? '#define FLIP_SIDED' : '', + n.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + n.shadowMapEnabled ? '#define ' + u : '', + n.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + n.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + n.logarithmicDepthBuffer && n.rendererExtensionFragDepth + ? '#define USE_LOGDEPTHBUF_EXT' + : '', + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + 'uniform bool isOrthographic;', + '#ifdef USE_INSTANCING', + '\tattribute mat4 instanceMatrix;', + '#endif', + '#ifdef USE_INSTANCING_COLOR', + '\tattribute vec3 instanceColor;', + '#endif', + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + '#ifdef USE_TANGENT', + '\tattribute vec4 tangent;', + '#endif', + '#ifdef USE_COLOR', + '\tattribute vec3 color;', + '#endif', + '#ifdef USE_MORPHTARGETS', + '\tattribute vec3 morphTarget0;', + '\tattribute vec3 morphTarget1;', + '\tattribute vec3 morphTarget2;', + '\tattribute vec3 morphTarget3;', + '\t#ifdef USE_MORPHNORMALS', + '\t\tattribute vec3 morphNormal0;', + '\t\tattribute vec3 morphNormal1;', + '\t\tattribute vec3 morphNormal2;', + '\t\tattribute vec3 morphNormal3;', + '\t#else', + '\t\tattribute vec3 morphTarget4;', + '\t\tattribute vec3 morphTarget5;', + '\t\tattribute vec3 morphTarget6;', + '\t\tattribute vec3 morphTarget7;', + '\t#endif', + '#endif', + '#ifdef USE_SKINNING', + '\tattribute vec4 skinIndex;', + '\tattribute vec4 skinWeight;', + '#endif', + '\n', + ] + .filter(bs) + .join('\n')), + (o = [ + m, + Rs(n), + '#define SHADER_NAME ' + n.shaderName, + v, + n.alphaTest + ? '#define ALPHATEST ' + n.alphaTest + (n.alphaTest % 1 ? '' : '.0') + : '', + '#define GAMMA_FACTOR ' + f, + n.useFog && n.fog ? '#define USE_FOG' : '', + n.useFog && n.fogExp2 ? '#define FOG_EXP2' : '', + n.map ? '#define USE_MAP' : '', + n.matcap ? '#define USE_MATCAP' : '', + n.envMap ? '#define USE_ENVMAP' : '', + n.envMap ? '#define ' + h : '', + n.envMap ? '#define ' + d : '', + n.envMap ? '#define ' + p : '', + n.lightMap ? '#define USE_LIGHTMAP' : '', + n.aoMap ? '#define USE_AOMAP' : '', + n.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + n.bumpMap ? '#define USE_BUMPMAP' : '', + n.normalMap ? '#define USE_NORMALMAP' : '', + n.normalMap && n.objectSpaceNormalMap + ? '#define OBJECTSPACE_NORMALMAP' + : '', + n.normalMap && n.tangentSpaceNormalMap + ? '#define TANGENTSPACE_NORMALMAP' + : '', + n.clearcoatMap ? '#define USE_CLEARCOATMAP' : '', + n.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '', + n.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + n.specularMap ? '#define USE_SPECULARMAP' : '', + n.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + n.metalnessMap ? '#define USE_METALNESSMAP' : '', + n.alphaMap ? '#define USE_ALPHAMAP' : '', + n.sheen ? '#define USE_SHEEN' : '', + n.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '', + n.vertexTangents ? '#define USE_TANGENT' : '', + n.vertexColors || n.instancingColor ? '#define USE_COLOR' : '', + n.vertexUvs ? '#define USE_UV' : '', + n.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '', + n.gradientMap ? '#define USE_GRADIENTMAP' : '', + n.flatShading ? '#define FLAT_SHADED' : '', + n.doubleSided ? '#define DOUBLE_SIDED' : '', + n.flipSided ? '#define FLIP_SIDED' : '', + n.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + n.shadowMapEnabled ? '#define ' + u : '', + n.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + n.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', + n.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + n.logarithmicDepthBuffer && n.rendererExtensionFragDepth + ? '#define USE_LOGDEPTHBUF_EXT' + : '', + (n.extensionShaderTextureLOD || n.envMap) && + n.rendererExtensionShaderTextureLod + ? '#define TEXTURE_LOD_EXT' + : '', + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + 'uniform bool isOrthographic;', + n.toneMapping !== $ ? '#define TONE_MAPPING' : '', + n.toneMapping !== $ ? qo.tonemapping_pars_fragment : '', + n.toneMapping !== $ ? ms('toneMapping', n.toneMapping) : '', + n.dithering ? '#define DITHERING' : '', + qo.encodings_pars_fragment, + n.map ? ps('mapTexelToLinear', n.mapEncoding) : '', + n.matcap ? ps('matcapTexelToLinear', n.matcapEncoding) : '', + n.envMap ? ps('envMapTexelToLinear', n.envMapEncoding) : '', + n.emissiveMap + ? ps('emissiveMapTexelToLinear', n.emissiveMapEncoding) + : '', + n.lightMap ? ps('lightMapTexelToLinear', n.lightMapEncoding) : '', + fs('linearToOutputTexel', n.outputEncoding), + n.depthPacking ? '#define DEPTH_PACKING ' + n.depthPacking : '', + '\n', + ] + .filter(bs) + .join('\n'))), + (l = ws((l = As((l = Es(l)), n)), n)), + (c = ws((c = As((c = Es(c)), n)), n)), + (l = Ss(l)), + (c = Ss(c)), + n.isWebGL2 && + !0 !== n.isRawShaderMaterial && + ((y = '#version 300 es\n'), + (i = + [ + '#define attribute in', + '#define varying out', + '#define texture2D texture', + ].join('\n') + + '\n' + + i), + (o = + [ + '#define varying in', + n.glslVersion === Fn ? '' : 'out highp vec4 pc_fragColor;', + n.glslVersion === Fn ? '' : '#define gl_FragColor pc_fragColor', + '#define gl_FragDepthEXT gl_FragDepth', + '#define texture2D texture', + '#define textureCube texture', + '#define texture2DProj textureProj', + '#define texture2DLodEXT textureLod', + '#define texture2DProjLodEXT textureProjLod', + '#define textureCubeLodEXT textureLod', + '#define texture2DGradEXT textureGrad', + '#define texture2DProjGradEXT textureProjGrad', + '#define textureCubeGradEXT textureGrad', + ].join('\n') + + '\n' + + o)) + var b, + A, + w = y + o + c, + x = ls(a, 35633, y + i + l), + E = ls(a, 35632, w) + if ( + (a.attachShader(g, x), + a.attachShader(g, E), + void 0 !== n.index0AttributeName + ? a.bindAttribLocation(g, 0, n.index0AttributeName) + : !0 === n.morphTargets && a.bindAttribLocation(g, 0, 'position'), + a.linkProgram(g), + e.debug.checkShaderErrors) + ) { + var M = a.getProgramInfoLog(g).trim(), + _ = a.getShaderInfoLog(x).trim(), + T = a.getShaderInfoLog(E).trim(), + S = !0, + C = !0 + if (!1 === a.getProgramParameter(g, 35714)) { + S = !1 + var L = ds(a, x, 'vertex'), + R = ds(a, E, 'fragment') + console.error( + 'THREE.WebGLProgram: shader error: ', + a.getError(), + '35715', + a.getProgramParameter(g, 35715), + 'gl.getProgramInfoLog', + M, + L, + R, + ) + } else + '' !== M + ? console.warn('THREE.WebGLProgram: gl.getProgramInfoLog()', M) + : ('' !== _ && '' !== T) || (C = !1) + C && + (this.diagnostics = { + runnable: S, + programLog: M, + vertexShader: { log: _, prefix: i }, + fragmentShader: { log: T, prefix: o }, + }) + } + return ( + a.deleteShader(x), + a.deleteShader(E), + (this.getUniforms = function () { + return void 0 === b && (b = new ss(a, g)), b + }), + (this.getAttributes = function () { + return void 0 === A && (A = ys(a, g)), A + }), + (this.destroy = function () { + r.releaseStatesOfProgram(this), + a.deleteProgram(g), + (this.program = void 0) + }), + (this.name = n.shaderName), + (this.id = cs++), + (this.cacheKey = t), + (this.usedTimes = 1), + (this.program = g), + (this.vertexShader = x), + (this.fragmentShader = E), + this + ) + } + function Fs(e, t, n, r, i, o) { + var a = [], + s = r.isWebGL2, + l = r.logarithmicDepthBuffer, + c = r.floatVertexTextures, + u = r.maxVertexUniforms, + h = r.vertexTextures, + d = r.precision, + p = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'toon', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite', + }, + f = [ + 'precision', + 'isWebGL2', + 'supportsVertexTextures', + 'outputEncoding', + 'instancing', + 'instancingColor', + 'map', + 'mapEncoding', + 'matcap', + 'matcapEncoding', + 'envMap', + 'envMapMode', + 'envMapEncoding', + 'envMapCubeUV', + 'lightMap', + 'lightMapEncoding', + 'aoMap', + 'emissiveMap', + 'emissiveMapEncoding', + 'bumpMap', + 'normalMap', + 'objectSpaceNormalMap', + 'tangentSpaceNormalMap', + 'clearcoatMap', + 'clearcoatRoughnessMap', + 'clearcoatNormalMap', + 'displacementMap', + 'specularMap', + 'roughnessMap', + 'metalnessMap', + 'gradientMap', + 'alphaMap', + 'combine', + 'vertexColors', + 'vertexTangents', + 'vertexUvs', + 'uvsVertexOnly', + 'fog', + 'useFog', + 'fogExp2', + 'flatShading', + 'sizeAttenuation', + 'logarithmicDepthBuffer', + 'skinning', + 'maxBones', + 'useVertexTexture', + 'morphTargets', + 'morphNormals', + 'maxMorphTargets', + 'maxMorphNormals', + 'premultipliedAlpha', + 'numDirLights', + 'numPointLights', + 'numSpotLights', + 'numHemiLights', + 'numRectAreaLights', + 'numDirLightShadows', + 'numPointLightShadows', + 'numSpotLightShadows', + 'shadowMapEnabled', + 'shadowMapType', + 'toneMapping', + 'physicallyCorrectLights', + 'alphaTest', + 'doubleSided', + 'flipSided', + 'numClippingPlanes', + 'numClipIntersection', + 'depthPacking', + 'dithering', + 'sheen', + 'transmissionMap', + ] + function m(e) { + var t = e.skeleton.bones + if (c) return 1024 + var n = u, + r = Math.floor((n - 20) / 4), + i = Math.min(r, t.length) + return i < t.length + ? (console.warn( + 'THREE.WebGLRenderer: Skeleton has ' + + t.length + + ' bones. This GPU supports ' + + i + + '.', + ), + 0) + : i + } + function y(e) { + var t + return ( + e && e.isTexture + ? (t = e.encoding) + : e && e.isWebGLRenderTarget + ? (console.warn( + "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead.", + ), + (t = e.texture.encoding)) + : (t = Kt), + t + ) + } + function b(i, a, u, f, b) { + var A, + w, + x = f.fog, + E = i.isMeshStandardMaterial ? f.environment : null, + M = t.get(i.envMap || E), + _ = p[i.type], + T = b.isSkinnedMesh ? m(b) : 0 + if ( + (null !== i.precision && + (d = r.getMaxPrecision(i.precision)) !== i.precision && + console.warn( + 'THREE.WebGLProgram.getParameters:', + i.precision, + 'not supported, using', + d, + 'instead.', + ), + _) + ) { + var S = Yo[_] + ;(A = S.vertexShader), (w = S.fragmentShader) + } else (A = i.vertexShader), (w = i.fragmentShader) + var C = e.getRenderTarget() + return { + isWebGL2: s, + shaderID: _, + shaderName: i.type, + vertexShader: A, + fragmentShader: w, + defines: i.defines, + isRawShaderMaterial: !0 === i.isRawShaderMaterial, + glslVersion: i.glslVersion, + precision: d, + instancing: !0 === b.isInstancedMesh, + instancingColor: !0 === b.isInstancedMesh && null !== b.instanceColor, + supportsVertexTextures: h, + outputEncoding: null !== C ? y(C.texture) : e.outputEncoding, + map: !!i.map, + mapEncoding: y(i.map), + matcap: !!i.matcap, + matcapEncoding: y(i.matcap), + envMap: !!M, + envMapMode: M && M.mapping, + envMapEncoding: y(M), + envMapCubeUV: !!M && (M.mapping === ue || M.mapping === he), + lightMap: !!i.lightMap, + lightMapEncoding: y(i.lightMap), + aoMap: !!i.aoMap, + emissiveMap: !!i.emissiveMap, + emissiveMapEncoding: y(i.emissiveMap), + bumpMap: !!i.bumpMap, + normalMap: !!i.normalMap, + objectSpaceNormalMap: i.normalMapType === cn, + tangentSpaceNormalMap: i.normalMapType === ln, + clearcoatMap: !!i.clearcoatMap, + clearcoatRoughnessMap: !!i.clearcoatRoughnessMap, + clearcoatNormalMap: !!i.clearcoatNormalMap, + displacementMap: !!i.displacementMap, + roughnessMap: !!i.roughnessMap, + metalnessMap: !!i.metalnessMap, + specularMap: !!i.specularMap, + alphaMap: !!i.alphaMap, + gradientMap: !!i.gradientMap, + sheen: !!i.sheen, + transmissionMap: !!i.transmissionMap, + combine: i.combine, + vertexTangents: i.normalMap && i.vertexTangents, + vertexColors: i.vertexColors, + vertexUvs: + !!i.map || + !!i.bumpMap || + !!i.normalMap || + !!i.specularMap || + !!i.alphaMap || + !!i.emissiveMap || + !!i.roughnessMap || + !!i.metalnessMap || + !!i.clearcoatMap || + !!i.clearcoatRoughnessMap || + !!i.clearcoatNormalMap || + !!i.displacementMap || + !!i.transmissionMap, + uvsVertexOnly: + !( + i.map || + i.bumpMap || + i.normalMap || + i.specularMap || + i.alphaMap || + i.emissiveMap || + i.roughnessMap || + i.metalnessMap || + i.clearcoatNormalMap || + i.transmissionMap + ) && !!i.displacementMap, + fog: !!x, + useFog: i.fog, + fogExp2: x && x.isFogExp2, + flatShading: i.flatShading, + sizeAttenuation: i.sizeAttenuation, + logarithmicDepthBuffer: l, + skinning: i.skinning && T > 0, + maxBones: T, + useVertexTexture: c, + morphTargets: i.morphTargets, + morphNormals: i.morphNormals, + maxMorphTargets: e.maxMorphTargets, + maxMorphNormals: e.maxMorphNormals, + numDirLights: a.directional.length, + numPointLights: a.point.length, + numSpotLights: a.spot.length, + numRectAreaLights: a.rectArea.length, + numHemiLights: a.hemi.length, + numDirLightShadows: a.directionalShadowMap.length, + numPointLightShadows: a.pointShadowMap.length, + numSpotLightShadows: a.spotShadowMap.length, + numClippingPlanes: o.numPlanes, + numClipIntersection: o.numIntersection, + dithering: i.dithering, + shadowMapEnabled: e.shadowMap.enabled && u.length > 0, + shadowMapType: e.shadowMap.type, + toneMapping: i.toneMapped ? e.toneMapping : $, + physicallyCorrectLights: e.physicallyCorrectLights, + premultipliedAlpha: i.premultipliedAlpha, + alphaTest: i.alphaTest, + doubleSided: i.side === g, + flipSided: i.side === v, + depthPacking: void 0 !== i.depthPacking && i.depthPacking, + index0AttributeName: i.index0AttributeName, + extensionDerivatives: i.extensions && i.extensions.derivatives, + extensionFragDepth: i.extensions && i.extensions.fragDepth, + extensionDrawBuffers: i.extensions && i.extensions.drawBuffers, + extensionShaderTextureLOD: i.extensions && i.extensions.shaderTextureLOD, + rendererExtensionFragDepth: s || n.has('EXT_frag_depth'), + rendererExtensionDrawBuffers: s || n.has('WEBGL_draw_buffers'), + rendererExtensionShaderTextureLod: s || n.has('EXT_shader_texture_lod'), + customProgramCacheKey: i.customProgramCacheKey(), + } + } + function A(t) { + var n = [] + if ( + (t.shaderID + ? n.push(t.shaderID) + : (n.push(t.fragmentShader), n.push(t.vertexShader)), + void 0 !== t.defines) + ) + for (var r in t.defines) n.push(r), n.push(t.defines[r]) + if (!1 === t.isRawShaderMaterial) { + for (var i = 0; i < f.length; i++) n.push(t[f[i]]) + n.push(e.outputEncoding), n.push(e.gammaFactor) + } + return n.push(t.customProgramCacheKey), n.join() + } + function w(e) { + var t, + n = p[e.type] + if (n) { + var r = Yo[n] + t = Co.clone(r.uniforms) + } else t = e.uniforms + return t + } + function x(t, n) { + for (var r, o = 0, s = a.length; o < s; o++) { + var l = a[o] + if (l.cacheKey === n) { + ++(r = l).usedTimes + break + } + } + return void 0 === r && ((r = new Bs(e, n, t, i)), a.push(r)), r + } + function E(e) { + if (0 === --e.usedTimes) { + var t = a.indexOf(e) + ;(a[t] = a[a.length - 1]), a.pop(), e.destroy() + } + } + return { + getParameters: b, + getProgramCacheKey: A, + getUniforms: w, + acquireProgram: x, + releaseProgram: E, + programs: a, + } + } + function ks() { + var e = new WeakMap() + function t(t) { + var n = e.get(t) + return void 0 === n && ((n = {}), e.set(t, n)), n + } + function n(t) { + e.delete(t) + } + function r(t, n, r) { + e.get(t)[n] = r + } + function i() { + e = new WeakMap() + } + return { get: t, remove: n, update: r, dispose: i } + } + function Ns(e, t) { + return e.groupOrder !== t.groupOrder + ? e.groupOrder - t.groupOrder + : e.renderOrder !== t.renderOrder + ? e.renderOrder - t.renderOrder + : e.program !== t.program + ? e.program.id - t.program.id + : e.material.id !== t.material.id + ? e.material.id - t.material.id + : e.z !== t.z + ? e.z - t.z + : e.id - t.id + } + function Us(e, t) { + return e.groupOrder !== t.groupOrder + ? e.groupOrder - t.groupOrder + : e.renderOrder !== t.renderOrder + ? e.renderOrder - t.renderOrder + : e.z !== t.z + ? t.z - e.z + : e.id - t.id + } + function Hs(e) { + var t = [], + n = 0, + r = [], + i = [], + o = { id: -1 } + function a() { + ;(n = 0), (r.length = 0), (i.length = 0) + } + function s(r, i, a, s, l, c) { + var u = t[n], + h = e.get(a) + return ( + void 0 === u + ? ((u = { + id: r.id, + object: r, + geometry: i, + material: a, + program: h.program || o, + groupOrder: s, + renderOrder: r.renderOrder, + z: l, + group: c, + }), + (t[n] = u)) + : ((u.id = r.id), + (u.object = r), + (u.geometry = i), + (u.material = a), + (u.program = h.program || o), + (u.groupOrder = s), + (u.renderOrder = r.renderOrder), + (u.z = l), + (u.group = c)), + n++, + u + ) + } + function l(e, t, n, o, a, l) { + var c = s(e, t, n, o, a, l) + ;(!0 === n.transparent ? i : r).push(c) + } + function c(e, t, n, o, a, l) { + var c = s(e, t, n, o, a, l) + ;(!0 === n.transparent ? i : r).unshift(c) + } + function u(e, t) { + r.length > 1 && r.sort(e || Ns), i.length > 1 && i.sort(t || Us) + } + function h() { + for (var e = n, r = t.length; e < r; e++) { + var i = t[e] + if (null === i.id) break + ;(i.id = null), + (i.object = null), + (i.geometry = null), + (i.material = null), + (i.program = null), + (i.group = null) + } + } + return { + opaque: r, + transparent: i, + init: a, + push: l, + unshift: c, + finish: h, + sort: u, + } + } + function Gs(e) { + var t = new WeakMap() + function n(n, r) { + var i, + o = t.get(n) + return ( + void 0 === o + ? ((i = new Hs(e)), t.set(n, new WeakMap()), t.get(n).set(r, i)) + : void 0 === (i = o.get(r)) && ((i = new Hs(e)), o.set(r, i)), + i + ) + } + function r() { + t = new WeakMap() + } + return { get: n, dispose: r } + } + function zs() { + var e = {} + return { + get: function (t) { + if (void 0 !== e[t.id]) return e[t.id] + var n + switch (t.type) { + case 'DirectionalLight': + n = { direction: new lr(), color: new Li() } + break + case 'SpotLight': + n = { + position: new lr(), + direction: new lr(), + color: new Li(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0, + } + break + case 'PointLight': + n = { position: new lr(), color: new Li(), distance: 0, decay: 0 } + break + case 'HemisphereLight': + n = { direction: new lr(), skyColor: new Li(), groundColor: new Li() } + break + case 'RectAreaLight': + n = { + color: new Li(), + position: new lr(), + halfWidth: new lr(), + halfHeight: new lr(), + } + } + return (e[t.id] = n), n + }, + } + } + function js() { + var e = {} + return { + get: function (t) { + if (void 0 !== e[t.id]) return e[t.id] + var n + switch (t.type) { + case 'DirectionalLight': + case 'SpotLight': + n = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Jn(), + } + break + case 'PointLight': + n = { + shadowBias: 0, + shadowNormalBias: 0, + shadowRadius: 1, + shadowMapSize: new Jn(), + shadowCameraNear: 1, + shadowCameraFar: 1e3, + } + } + return (e[t.id] = n), n + }, + } + } + var Vs = 0 + function Ws(e, t) { + return (t.castShadow ? 1 : 0) - (e.castShadow ? 1 : 0) + } + function qs(e, t) { + for ( + var n = new zs(), + r = js(), + i = { + version: 0, + hash: { + directionalLength: -1, + pointLength: -1, + spotLength: -1, + rectAreaLength: -1, + hemiLength: -1, + numDirectionalShadows: -1, + numPointShadows: -1, + numSpotShadows: -1, + }, + ambient: [0, 0, 0], + probe: [], + directional: [], + directionalShadow: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotShadow: [], + spotShadowMap: [], + spotShadowMatrix: [], + rectArea: [], + rectAreaLTC1: null, + rectAreaLTC2: null, + point: [], + pointShadow: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + }, + o = 0; + o < 9; + o++ + ) + i.probe.push(new lr()) + var a = new lr(), + s = new Fr(), + l = new Fr() + function c(o) { + for (var a = 0, s = 0, l = 0, c = 0; c < 9; c++) i.probe[c].set(0, 0, 0) + var u = 0, + h = 0, + d = 0, + p = 0, + f = 0, + m = 0, + v = 0, + g = 0 + o.sort(Ws) + for (var y = 0, b = o.length; y < b; y++) { + var A = o[y], + w = A.color, + x = A.intensity, + E = A.distance, + M = A.shadow && A.shadow.map ? A.shadow.map.texture : null + if (A.isAmbientLight) (a += w.r * x), (s += w.g * x), (l += w.b * x) + else if (A.isLightProbe) + for (var _ = 0; _ < 9; _++) + i.probe[_].addScaledVector(A.sh.coefficients[_], x) + else if (A.isDirectionalLight) { + var T = n.get(A) + if ((T.color.copy(A.color).multiplyScalar(A.intensity), A.castShadow)) { + var S = A.shadow, + C = r.get(A) + ;(C.shadowBias = S.bias), + (C.shadowNormalBias = S.normalBias), + (C.shadowRadius = S.radius), + (C.shadowMapSize = S.mapSize), + (i.directionalShadow[u] = C), + (i.directionalShadowMap[u] = M), + (i.directionalShadowMatrix[u] = A.shadow.matrix), + m++ + } + ;(i.directional[u] = T), u++ + } else if (A.isSpotLight) { + var L = n.get(A) + if ( + (L.position.setFromMatrixPosition(A.matrixWorld), + L.color.copy(w).multiplyScalar(x), + (L.distance = E), + (L.coneCos = Math.cos(A.angle)), + (L.penumbraCos = Math.cos(A.angle * (1 - A.penumbra))), + (L.decay = A.decay), + A.castShadow) + ) { + var R = A.shadow, + P = r.get(A) + ;(P.shadowBias = R.bias), + (P.shadowNormalBias = R.normalBias), + (P.shadowRadius = R.radius), + (P.shadowMapSize = R.mapSize), + (i.spotShadow[d] = P), + (i.spotShadowMap[d] = M), + (i.spotShadowMatrix[d] = A.shadow.matrix), + g++ + } + ;(i.spot[d] = L), d++ + } else if (A.isRectAreaLight) { + var D = n.get(A) + D.color.copy(w).multiplyScalar(x), + D.halfWidth.set(0.5 * A.width, 0, 0), + D.halfHeight.set(0, 0.5 * A.height, 0), + (i.rectArea[p] = D), + p++ + } else if (A.isPointLight) { + var O = n.get(A) + if ( + (O.color.copy(A.color).multiplyScalar(A.intensity), + (O.distance = A.distance), + (O.decay = A.decay), + A.castShadow) + ) { + var I = A.shadow, + B = r.get(A) + ;(B.shadowBias = I.bias), + (B.shadowNormalBias = I.normalBias), + (B.shadowRadius = I.radius), + (B.shadowMapSize = I.mapSize), + (B.shadowCameraNear = I.camera.near), + (B.shadowCameraFar = I.camera.far), + (i.pointShadow[h] = B), + (i.pointShadowMap[h] = M), + (i.pointShadowMatrix[h] = A.shadow.matrix), + v++ + } + ;(i.point[h] = O), h++ + } else if (A.isHemisphereLight) { + var F = n.get(A) + F.skyColor.copy(A.color).multiplyScalar(x), + F.groundColor.copy(A.groundColor).multiplyScalar(x), + (i.hemi[f] = F), + f++ + } + } + p > 0 && + (t.isWebGL2 || !0 === e.has('OES_texture_float_linear') + ? ((i.rectAreaLTC1 = Xo.LTC_FLOAT_1), (i.rectAreaLTC2 = Xo.LTC_FLOAT_2)) + : !0 === e.has('OES_texture_half_float_linear') + ? ((i.rectAreaLTC1 = Xo.LTC_HALF_1), (i.rectAreaLTC2 = Xo.LTC_HALF_2)) + : console.error( + 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.', + )), + (i.ambient[0] = a), + (i.ambient[1] = s), + (i.ambient[2] = l) + var k = i.hash + ;(k.directionalLength === u && + k.pointLength === h && + k.spotLength === d && + k.rectAreaLength === p && + k.hemiLength === f && + k.numDirectionalShadows === m && + k.numPointShadows === v && + k.numSpotShadows === g) || + ((i.directional.length = u), + (i.spot.length = d), + (i.rectArea.length = p), + (i.point.length = h), + (i.hemi.length = f), + (i.directionalShadow.length = m), + (i.directionalShadowMap.length = m), + (i.pointShadow.length = v), + (i.pointShadowMap.length = v), + (i.spotShadow.length = g), + (i.spotShadowMap.length = g), + (i.directionalShadowMatrix.length = m), + (i.pointShadowMatrix.length = v), + (i.spotShadowMatrix.length = g), + (k.directionalLength = u), + (k.pointLength = h), + (k.spotLength = d), + (k.rectAreaLength = p), + (k.hemiLength = f), + (k.numDirectionalShadows = m), + (k.numPointShadows = v), + (k.numSpotShadows = g), + (i.version = Vs++)) + } + function u(e, t) { + for ( + var n = 0, + r = 0, + o = 0, + c = 0, + u = 0, + h = t.matrixWorldInverse, + d = 0, + p = e.length; + d < p; + d++ + ) { + var f = e[d] + if (f.isDirectionalLight) { + var m = i.directional[n] + m.direction.setFromMatrixPosition(f.matrixWorld), + a.setFromMatrixPosition(f.target.matrixWorld), + m.direction.sub(a), + m.direction.transformDirection(h), + n++ + } else if (f.isSpotLight) { + var v = i.spot[o] + v.position.setFromMatrixPosition(f.matrixWorld), + v.position.applyMatrix4(h), + v.direction.setFromMatrixPosition(f.matrixWorld), + a.setFromMatrixPosition(f.target.matrixWorld), + v.direction.sub(a), + v.direction.transformDirection(h), + o++ + } else if (f.isRectAreaLight) { + var g = i.rectArea[c] + g.position.setFromMatrixPosition(f.matrixWorld), + g.position.applyMatrix4(h), + l.identity(), + s.copy(f.matrixWorld), + s.premultiply(h), + l.extractRotation(s), + g.halfWidth.set(0.5 * f.width, 0, 0), + g.halfHeight.set(0, 0.5 * f.height, 0), + g.halfWidth.applyMatrix4(l), + g.halfHeight.applyMatrix4(l), + c++ + } else if (f.isPointLight) { + var y = i.point[r] + y.position.setFromMatrixPosition(f.matrixWorld), + y.position.applyMatrix4(h), + r++ + } else if (f.isHemisphereLight) { + var b = i.hemi[u] + b.direction.setFromMatrixPosition(f.matrixWorld), + b.direction.transformDirection(h), + b.direction.normalize(), + u++ + } + } + } + return { setup: c, setupView: u, state: i } + } + function Xs(e, t) { + var n = new qs(e, t), + r = [], + i = [] + function o() { + ;(r.length = 0), (i.length = 0) + } + function a(e) { + r.push(e) + } + function s(e) { + i.push(e) + } + function l() { + n.setup(r) + } + function c(e) { + n.setupView(r, e) + } + return { + init: o, + state: { lightsArray: r, shadowsArray: i, lights: n }, + setupLights: l, + setupLightsView: c, + pushLight: a, + pushShadow: s, + } + } + function Ys(e, t) { + var n = new WeakMap() + function r(r, i) { + var o + return ( + void 0 === i && (i = 0), + !1 === n.has(r) + ? ((o = new Xs(e, t)), n.set(r, []), n.get(r).push(o)) + : i >= n.get(r).length + ? ((o = new Xs(e, t)), n.get(r).push(o)) + : (o = n.get(r)[i]), + o + ) + } + function i() { + n = new WeakMap() + } + return { get: r, dispose: i } + } + function Qs(e) { + Di.call(this), + (this.type = 'MeshDepthMaterial'), + (this.depthPacking = an), + (this.skinning = !1), + (this.morphTargets = !1), + (this.map = null), + (this.alphaMap = null), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.fog = !1), + this.setValues(e) + } + function Zs(e) { + Di.call(this), + (this.type = 'MeshDistanceMaterial'), + (this.referencePosition = new lr()), + (this.nearDistance = 1), + (this.farDistance = 1e3), + (this.skinning = !1), + (this.morphTargets = !1), + (this.map = null), + (this.alphaMap = null), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.fog = !1), + this.setValues(e) + } + ;(Qs.prototype = Object.create(Di.prototype)), + (Qs.prototype.constructor = Qs), + (Qs.prototype.isMeshDepthMaterial = !0), + (Qs.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + (this.depthPacking = e.depthPacking), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.map = e.map), + (this.alphaMap = e.alphaMap), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + this + ) + }), + (Zs.prototype = Object.create(Di.prototype)), + (Zs.prototype.constructor = Zs), + (Zs.prototype.isMeshDistanceMaterial = !0), + (Zs.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.referencePosition.copy(e.referencePosition), + (this.nearDistance = e.nearDistance), + (this.farDistance = e.farDistance), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.map = e.map), + (this.alphaMap = e.alphaMap), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + this + ) + }) + var Ks = + 'uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean * HALF_SAMPLE_RATE;\n\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}', + Js = 'void main() {\n\tgl_Position = vec4( position, 1.0 );\n}' + function $s(e, t, n) { + var r = new zo(), + i = new Jn(), + o = new Jn(), + a = new ir(), + s = [], + l = [], + c = {}, + u = { 0: v, 1: m, 2: g }, + h = new Po({ + defines: { SAMPLE_RATE: 2 / 8, HALF_SAMPLE_RATE: 1 / 8 }, + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Jn() }, + radius: { value: 4 }, + }, + vertexShader: Js, + fragmentShader: Ks, + }), + p = h.clone() + p.defines.HORIZONTAL_PASS = 1 + var y = new ro() + y.setAttribute( + 'position', + new Fi(new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]), 3), + ) + var b = new xo(y, h), + w = this + function x(n, r) { + var i = t.update(b) + ;(h.uniforms.shadow_pass.value = n.map.texture), + (h.uniforms.resolution.value = n.mapSize), + (h.uniforms.radius.value = n.radius), + e.setRenderTarget(n.mapPass), + e.clear(), + e.renderBufferDirect(r, null, i, h, b, null), + (p.uniforms.shadow_pass.value = n.mapPass.texture), + (p.uniforms.resolution.value = n.mapSize), + (p.uniforms.radius.value = n.radius), + e.setRenderTarget(n.map), + e.clear(), + e.renderBufferDirect(r, null, i, p, b, null) + } + function E(e, t, n) { + var r = (e << 0) | (t << 1) | (n << 2), + i = s[r] + return ( + void 0 === i && + ((i = new Qs({ depthPacking: sn, morphTargets: e, skinning: t })), + (s[r] = i)), + i + ) + } + function M(e, t, n) { + var r = (e << 0) | (t << 1) | (n << 2), + i = l[r] + return ( + void 0 === i && + ((i = new Zs({ morphTargets: e, skinning: t })), (l[r] = i)), + i + ) + } + function _(t, n, r, i, o, a, s) { + var l = null, + h = E, + d = t.customDepthMaterial + if ( + (!0 === i.isPointLight && ((h = M), (d = t.customDistanceMaterial)), + void 0 === d) + ) { + var p = !1 + !0 === r.morphTargets && + (p = + n.morphAttributes && + n.morphAttributes.position && + n.morphAttributes.position.length > 0) + var m = !1 + !0 === t.isSkinnedMesh && + (!0 === r.skinning + ? (m = !0) + : console.warn( + 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', + t, + )), + (l = h(p, m, !0 === t.isInstancedMesh)) + } else l = d + if ( + e.localClippingEnabled && + !0 === r.clipShadows && + 0 !== r.clippingPlanes.length + ) { + var v = l.uuid, + g = r.uuid, + y = c[v] + void 0 === y && ((y = {}), (c[v] = y)) + var b = y[g] + void 0 === b && ((b = l.clone()), (y[g] = b)), (l = b) + } + return ( + (l.visible = r.visible), + (l.wireframe = r.wireframe), + (l.side = + s === f + ? null !== r.shadowSide + ? r.shadowSide + : r.side + : null !== r.shadowSide + ? r.shadowSide + : u[r.side]), + (l.clipShadows = r.clipShadows), + (l.clippingPlanes = r.clippingPlanes), + (l.clipIntersection = r.clipIntersection), + (l.wireframeLinewidth = r.wireframeLinewidth), + (l.linewidth = r.linewidth), + !0 === i.isPointLight && + !0 === l.isMeshDistanceMaterial && + (l.referencePosition.setFromMatrixPosition(i.matrixWorld), + (l.nearDistance = o), + (l.farDistance = a)), + l + ) + } + function T(n, i, o, a, s) { + if (!1 !== n.visible) { + if ( + n.layers.test(i.layers) && + (n.isMesh || n.isLine || n.isPoints) && + (n.castShadow || (n.receiveShadow && s === f)) && + (!n.frustumCulled || r.intersectsObject(n)) + ) { + n.modelViewMatrix.multiplyMatrices(o.matrixWorldInverse, n.matrixWorld) + var l = t.update(n), + c = n.material + if (Array.isArray(c)) + for (var u = l.groups, h = 0, d = u.length; h < d; h++) { + var p = u[h], + m = c[p.materialIndex] + if (m && m.visible) { + var v = _(n, l, m, a, o.near, o.far, s) + e.renderBufferDirect(o, null, l, v, n, p) + } + } + else if (c.visible) { + var g = _(n, l, c, a, o.near, o.far, s) + e.renderBufferDirect(o, null, l, g, n, null) + } + } + for (var y = n.children, b = 0, A = y.length; b < A; b++) + T(y[b], i, o, a, s) + } + } + ;(this.enabled = !1), + (this.autoUpdate = !0), + (this.needsUpdate = !1), + (this.type = d), + (this.render = function (t, s, l) { + if ( + !1 !== w.enabled && + (!1 !== w.autoUpdate || !1 !== w.needsUpdate) && + 0 !== t.length + ) { + var c = e.getRenderTarget(), + u = e.getActiveCubeFace(), + h = e.getActiveMipmapLevel(), + d = e.state + d.setBlending(A), + d.buffers.color.setClear(1, 1, 1, 1), + d.buffers.depth.setTest(!0), + d.setScissorTest(!1) + for (var p = 0, m = t.length; p < m; p++) { + var v = t[p], + g = v.shadow + if (void 0 !== g) { + if (!1 !== g.autoUpdate || !1 !== g.needsUpdate) { + i.copy(g.mapSize) + var y = g.getFrameExtents() + if ( + (i.multiply(y), + o.copy(g.mapSize), + (i.x > n || i.y > n) && + (i.x > n && + ((o.x = Math.floor(n / y.x)), + (i.x = o.x * y.x), + (g.mapSize.x = o.x)), + i.y > n && + ((o.y = Math.floor(n / y.y)), + (i.y = o.y * y.y), + (g.mapSize.y = o.y))), + null === g.map && !g.isPointLightShadow && this.type === f) + ) { + var b = { minFilter: Ae, magFilter: Ae, format: Ue } + ;(g.map = new or(i.x, i.y, b)), + (g.map.texture.name = v.name + '.shadowMap'), + (g.mapPass = new or(i.x, i.y, b)), + g.camera.updateProjectionMatrix() + } + if (null === g.map) { + var E = { minFilter: me, magFilter: me, format: Ue } + ;(g.map = new or(i.x, i.y, E)), + (g.map.texture.name = v.name + '.shadowMap'), + g.camera.updateProjectionMatrix() + } + e.setRenderTarget(g.map), e.clear() + for (var M = g.getViewportCount(), _ = 0; _ < M; _++) { + var S = g.getViewport(_) + a.set(o.x * S.x, o.y * S.y, o.x * S.z, o.y * S.w), + d.viewport(a), + g.updateMatrices(v, _), + (r = g.getFrustum()), + T(s, l, g.camera, v, this.type) + } + g.isPointLightShadow || this.type !== f || x(g, l), + (g.needsUpdate = !1) + } + } else console.warn('THREE.WebGLShadowMap:', v, 'has no shadow.') + } + ;(w.needsUpdate = !1), e.setRenderTarget(c, u, h) + } + }) + } + function el(e, t, n) { + var r, + i, + o = n.isWebGL2 + function a() { + var t = !1, + n = new ir(), + r = null, + i = new ir(0, 0, 0, 0) + return { + setMask: function (n) { + r === n || t || (e.colorMask(n, n, n, n), (r = n)) + }, + setLocked: function (e) { + t = e + }, + setClear: function (t, r, o, a, s) { + !0 === s && ((t *= a), (r *= a), (o *= a)), + n.set(t, r, o, a), + !1 === i.equals(n) && (e.clearColor(t, r, o, a), i.copy(n)) + }, + reset: function () { + ;(t = !1), (r = null), i.set(-1, 0, 0, 0) + }, + } + } + function u() { + var t = !1, + n = null, + r = null, + i = null + return { + setTest: function (e) { + e ? be(2929) : Ae(2929) + }, + setMask: function (r) { + n === r || t || (e.depthMask(r), (n = r)) + }, + setFunc: function (t) { + if (r !== t) { + if (t) + switch (t) { + case z: + e.depthFunc(512) + break + case j: + e.depthFunc(519) + break + case V: + e.depthFunc(513) + break + case W: + e.depthFunc(515) + break + case q: + e.depthFunc(514) + break + case X: + e.depthFunc(518) + break + case Y: + e.depthFunc(516) + break + case Q: + e.depthFunc(517) + break + default: + e.depthFunc(515) + } + else e.depthFunc(515) + r = t + } + }, + setLocked: function (e) { + t = e + }, + setClear: function (t) { + i !== t && (e.clearDepth(t), (i = t)) + }, + reset: function () { + ;(t = !1), (n = null), (r = null), (i = null) + }, + } + } + function h() { + var t = !1, + n = null, + r = null, + i = null, + o = null, + a = null, + s = null, + l = null, + c = null + return { + setTest: function (e) { + t || (e ? be(2960) : Ae(2960)) + }, + setMask: function (r) { + n === r || t || (e.stencilMask(r), (n = r)) + }, + setFunc: function (t, n, a) { + ;(r === t && i === n && o === a) || + (e.stencilFunc(t, n, a), (r = t), (i = n), (o = a)) + }, + setOp: function (t, n, r) { + ;(a === t && s === n && l === r) || + (e.stencilOp(t, n, r), (a = t), (s = n), (l = r)) + }, + setLocked: function (e) { + t = e + }, + setClear: function (t) { + c !== t && (e.clearStencil(t), (c = t)) + }, + reset: function () { + ;(t = !1), + (n = null), + (r = null), + (i = null), + (o = null), + (a = null), + (s = null), + (l = null), + (c = null) + }, + } + } + var d = new a(), + p = new u(), + f = new h(), + m = {}, + y = null, + b = null, + Z = null, + K = null, + J = null, + $ = null, + ee = null, + te = null, + ne = null, + re = !1, + ie = null, + oe = null, + ae = null, + se = null, + le = null, + ce = e.getParameter(35661), + ue = !1, + he = 0, + de = e.getParameter(7938) + ;-1 !== de.indexOf('WebGL') + ? ((he = parseFloat(/^WebGL (\d)/.exec(de)[1])), (ue = he >= 1)) + : -1 !== de.indexOf('OpenGL ES') && + ((he = parseFloat(/^OpenGL ES (\d)/.exec(de)[1])), (ue = he >= 2)) + var pe = null, + fe = {}, + me = new ir(), + ve = new ir() + function ge(t, n, r) { + var i = new Uint8Array(4), + o = e.createTexture() + e.bindTexture(t, o), + e.texParameteri(t, 10241, 9728), + e.texParameteri(t, 10240, 9728) + for (var a = 0; a < r; a++) + e.texImage2D(n + a, 0, 6408, 1, 1, 0, 6408, 5121, i) + return o + } + var ye = {} + function be(t) { + !0 !== m[t] && (e.enable(t), (m[t] = !0)) + } + function Ae(t) { + !1 !== m[t] && (e.disable(t), (m[t] = !1)) + } + function we(t) { + return y !== t && (e.useProgram(t), (y = t), !0) + } + ;(ye[3553] = ge(3553, 3553, 1)), + (ye[34067] = ge(34067, 34069, 6)), + d.setClear(0, 0, 0, 1), + p.setClear(1), + f.setClear(0), + be(2929), + p.setFunc(W), + Se(!1), + Ce(l), + be(2884), + _e(A) + var xe = (((r = {})[T] = 32774), (r[S] = 32778), (r[C] = 32779), r) + if (o) (xe[L] = 32775), (xe[R] = 32776) + else { + var Ee = t.get('EXT_blend_minmax') + null !== Ee && ((xe[L] = Ee.MIN_EXT), (xe[R] = Ee.MAX_EXT)) + } + var Me = + (((i = {})[P] = 0), + (i[D] = 1), + (i[O] = 768), + (i[B] = 770), + (i[G] = 776), + (i[U] = 774), + (i[k] = 772), + (i[I] = 769), + (i[F] = 771), + (i[H] = 775), + (i[N] = 773), + i) + function _e(t, n, r, i, o, a, s, l) { + if (t !== A) { + if ((b || (be(3042), (b = !0)), t === _)) + (o = o || n), + (a = a || r), + (s = s || i), + (n === K && o === ee) || + (e.blendEquationSeparate(xe[n], xe[o]), (K = n), (ee = o)), + (r === J && i === $ && a === te && s === ne) || + (e.blendFuncSeparate(Me[r], Me[i], Me[a], Me[s]), + (J = r), + ($ = i), + (te = a), + (ne = s)), + (Z = t), + (re = null) + else if (t !== Z || l !== re) { + if ( + ((K === T && ee === T) || (e.blendEquation(32774), (K = T), (ee = T)), + l) + ) + switch (t) { + case w: + e.blendFuncSeparate(1, 771, 1, 771) + break + case x: + e.blendFunc(1, 1) + break + case E: + e.blendFuncSeparate(0, 0, 769, 771) + break + case M: + e.blendFuncSeparate(0, 768, 0, 770) + break + default: + console.error('THREE.WebGLState: Invalid blending: ', t) + } + else + switch (t) { + case w: + e.blendFuncSeparate(770, 771, 1, 771) + break + case x: + e.blendFunc(770, 1) + break + case E: + e.blendFunc(0, 769) + break + case M: + e.blendFunc(0, 768) + break + default: + console.error('THREE.WebGLState: Invalid blending: ', t) + } + ;(J = null), ($ = null), (te = null), (ne = null), (Z = t), (re = l) + } + } else b && (Ae(3042), (b = !1)) + } + function Te(e, t) { + e.side === g ? Ae(2884) : be(2884) + var n = e.side === v + t && (n = !n), + Se(n), + e.blending === w && !1 === e.transparent + ? _e(A) + : _e( + e.blending, + e.blendEquation, + e.blendSrc, + e.blendDst, + e.blendEquationAlpha, + e.blendSrcAlpha, + e.blendDstAlpha, + e.premultipliedAlpha, + ), + p.setFunc(e.depthFunc), + p.setTest(e.depthTest), + p.setMask(e.depthWrite), + d.setMask(e.colorWrite) + var r = e.stencilWrite + f.setTest(r), + r && + (f.setMask(e.stencilWriteMask), + f.setFunc(e.stencilFunc, e.stencilRef, e.stencilFuncMask), + f.setOp(e.stencilFail, e.stencilZFail, e.stencilZPass)), + Re(e.polygonOffset, e.polygonOffsetFactor, e.polygonOffsetUnits) + } + function Se(t) { + ie !== t && (t ? e.frontFace(2304) : e.frontFace(2305), (ie = t)) + } + function Ce(t) { + t !== s + ? (be(2884), + t !== oe && + (t === l + ? e.cullFace(1029) + : t === c + ? e.cullFace(1028) + : e.cullFace(1032))) + : Ae(2884), + (oe = t) + } + function Le(t) { + t !== ae && (ue && e.lineWidth(t), (ae = t)) + } + function Re(t, n, r) { + t + ? (be(32823), + (se === n && le === r) || (e.polygonOffset(n, r), (se = n), (le = r))) + : Ae(32823) + } + function Pe(e) { + e ? be(3089) : Ae(3089) + } + function De(t) { + void 0 === t && (t = 33984 + ce - 1), + pe !== t && (e.activeTexture(t), (pe = t)) + } + function Oe(t, n) { + null === pe && De() + var r = fe[pe] + void 0 === r && ((r = { type: void 0, texture: void 0 }), (fe[pe] = r)), + (r.type === t && r.texture === n) || + (e.bindTexture(t, n || ye[t]), (r.type = t), (r.texture = n)) + } + function Ie() { + var t = fe[pe] + void 0 !== t && + void 0 !== t.type && + (e.bindTexture(t.type, null), (t.type = void 0), (t.texture = void 0)) + } + function Be() { + try { + e.compressedTexImage2D.apply(e, arguments) + } catch (t) { + console.error('THREE.WebGLState:', t) + } + } + function Fe() { + try { + e.texImage2D.apply(e, arguments) + } catch (t) { + console.error('THREE.WebGLState:', t) + } + } + function ke() { + try { + e.texImage3D.apply(e, arguments) + } catch (t) { + console.error('THREE.WebGLState:', t) + } + } + function Ne(t) { + !1 === me.equals(t) && (e.scissor(t.x, t.y, t.z, t.w), me.copy(t)) + } + function Ue(t) { + !1 === ve.equals(t) && (e.viewport(t.x, t.y, t.z, t.w), ve.copy(t)) + } + function He() { + ;(m = {}), + (pe = null), + (fe = {}), + (y = null), + (b = null), + (Z = null), + (K = null), + (J = null), + ($ = null), + (ee = null), + (te = null), + (ne = null), + (re = !1), + (ie = null), + (oe = null), + (ae = null), + (se = null), + (le = null), + d.reset(), + p.reset(), + f.reset() + } + return { + buffers: { color: d, depth: p, stencil: f }, + enable: be, + disable: Ae, + useProgram: we, + setBlending: _e, + setMaterial: Te, + setFlipSided: Se, + setCullFace: Ce, + setLineWidth: Le, + setPolygonOffset: Re, + setScissorTest: Pe, + activeTexture: De, + bindTexture: Oe, + unbindTexture: Ie, + compressedTexImage2D: Be, + texImage2D: Fe, + texImage3D: ke, + scissor: Ne, + viewport: Ue, + reset: He, + } + } + function tl(e, t, n, r, i, o, a) { + var s, + l, + c, + u = i.isWebGL2, + h = i.maxTextures, + d = i.maxCubemapSize, + p = i.maxTextureSize, + f = i.maxSamples, + m = new WeakMap(), + v = !1 + try { + v = + 'undefined' !== typeof OffscreenCanvas && + null !== new OffscreenCanvas(1, 1).getContext('2d') + } catch (te) {} + function g(e, t) { + return v + ? new OffscreenCanvas(e, t) + : document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas') + } + function y(e, t, n, r) { + var i = 1 + if ( + ((e.width > r || e.height > r) && (i = r / Math.max(e.width, e.height)), + i < 1 || !0 === t) + ) { + if ( + ('undefined' !== typeof HTMLImageElement && + e instanceof HTMLImageElement) || + ('undefined' !== typeof HTMLCanvasElement && + e instanceof HTMLCanvasElement) || + ('undefined' !== typeof ImageBitmap && e instanceof ImageBitmap) + ) { + var o = t ? Kn.floorPowerOfTwo : Math.floor, + a = o(i * e.width), + s = o(i * e.height) + void 0 === c && (c = g(a, s)) + var l = n ? g(a, s) : c + return ( + (l.width = a), + (l.height = s), + l.getContext('2d').drawImage(e, 0, 0, a, s), + console.warn( + 'THREE.WebGLRenderer: Texture has been resized from (' + + e.width + + 'x' + + e.height + + ') to (' + + a + + 'x' + + s + + ').', + ), + l + ) + } + return ( + 'data' in e && + console.warn( + 'THREE.WebGLRenderer: Image in DataTexture is too big (' + + e.width + + 'x' + + e.height + + ').', + ), + e + ) + } + return e + } + function b(e) { + return Kn.isPowerOfTwo(e.width) && Kn.isPowerOfTwo(e.height) + } + function A(e) { + return ( + !u && + (e.wrapS !== pe || + e.wrapT !== pe || + (e.minFilter !== me && e.minFilter !== Ae)) + ) + } + function w(e, t) { + return e.generateMipmaps && t && e.minFilter !== me && e.minFilter !== Ae + } + function x(t, n, i, o) { + e.generateMipmap(t), + (r.get(n).__maxMipLevel = Math.log(Math.max(i, o)) * Math.LOG2E) + } + function E(n, r, i) { + if (!1 === u) return r + if (null !== n) { + if (void 0 !== e[n]) return e[n] + console.warn( + "THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '" + + n + + "'", + ) + } + var o = r + return ( + 6403 === r && + (5126 === i && (o = 33326), + 5131 === i && (o = 33325), + 5121 === i && (o = 33321)), + 6407 === r && + (5126 === i && (o = 34837), + 5131 === i && (o = 34843), + 5121 === i && (o = 32849)), + 6408 === r && + (5126 === i && (o = 34836), + 5131 === i && (o = 34842), + 5121 === i && (o = 32856)), + (33325 !== o && 33326 !== o && 34842 !== o && 34836 !== o) || + t.get('EXT_color_buffer_float'), + o + ) + } + function M(e) { + return e === me || e === ve || e === ye ? 9728 : 9729 + } + function _(e) { + var t = e.target + t.removeEventListener('dispose', _), + S(t), + t.isVideoTexture && m.delete(t), + a.memory.textures-- + } + function T(e) { + var t = e.target + t.removeEventListener('dispose', T), C(t), a.memory.textures-- + } + function S(t) { + var n = r.get(t) + void 0 !== n.__webglInit && (e.deleteTexture(n.__webglTexture), r.remove(t)) + } + function C(t) { + var n = r.get(t), + i = r.get(t.texture) + if (t) { + if ( + (void 0 !== i.__webglTexture && e.deleteTexture(i.__webglTexture), + t.depthTexture && t.depthTexture.dispose(), + t.isWebGLCubeRenderTarget) + ) + for (var o = 0; o < 6; o++) + e.deleteFramebuffer(n.__webglFramebuffer[o]), + n.__webglDepthbuffer && + e.deleteRenderbuffer(n.__webglDepthbuffer[o]) + else + e.deleteFramebuffer(n.__webglFramebuffer), + n.__webglDepthbuffer && e.deleteRenderbuffer(n.__webglDepthbuffer), + n.__webglMultisampledFramebuffer && + e.deleteFramebuffer(n.__webglMultisampledFramebuffer), + n.__webglColorRenderbuffer && + e.deleteRenderbuffer(n.__webglColorRenderbuffer), + n.__webglDepthRenderbuffer && + e.deleteRenderbuffer(n.__webglDepthRenderbuffer) + r.remove(t.texture), r.remove(t) + } + } + var L = 0 + function R() { + L = 0 + } + function P() { + var e = L + return ( + e >= h && + console.warn( + 'THREE.WebGLTextures: Trying to use ' + + e + + ' texture units while this GPU supports only ' + + h, + ), + (L += 1), + e + ) + } + function D(e, t) { + var i = r.get(e) + if ( + (e.isVideoTexture && Z(e), e.version > 0 && i.__version !== e.version) + ) { + var o = e.image + if (void 0 === o) + console.warn( + 'THREE.WebGLRenderer: Texture marked for update but image is undefined', + ) + else { + if (!1 !== o.complete) return void H(i, e, t) + console.warn( + 'THREE.WebGLRenderer: Texture marked for update but image is incomplete', + ) + } + } + n.activeTexture(33984 + t), n.bindTexture(3553, i.__webglTexture) + } + function O(e, t) { + var i = r.get(e) + e.version > 0 && i.__version !== e.version + ? H(i, e, t) + : (n.activeTexture(33984 + t), n.bindTexture(35866, i.__webglTexture)) + } + function I(e, t) { + var i = r.get(e) + e.version > 0 && i.__version !== e.version + ? H(i, e, t) + : (n.activeTexture(33984 + t), n.bindTexture(32879, i.__webglTexture)) + } + function B(e, t) { + var i = r.get(e) + e.version > 0 && i.__version !== e.version + ? G(i, e, t) + : (n.activeTexture(33984 + t), n.bindTexture(34067, i.__webglTexture)) + } + var F = (((s = {})[de] = 10497), (s[pe] = 33071), (s[fe] = 33648), s), + k = + (((l = {})[me] = 9728), + (l[ve] = 9984), + (l[ye] = 9986), + (l[Ae] = 9729), + (l[we] = 9985), + (l[Ee] = 9987), + l) + function N(n, o, a) { + a + ? (e.texParameteri(n, 10242, F[o.wrapS]), + e.texParameteri(n, 10243, F[o.wrapT]), + (32879 !== n && 35866 !== n) || e.texParameteri(n, 32882, F[o.wrapR]), + e.texParameteri(n, 10240, k[o.magFilter]), + e.texParameteri(n, 10241, k[o.minFilter])) + : (e.texParameteri(n, 10242, 33071), + e.texParameteri(n, 10243, 33071), + (32879 !== n && 35866 !== n) || e.texParameteri(n, 32882, 33071), + (o.wrapS === pe && o.wrapT === pe) || + console.warn( + 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.', + ), + e.texParameteri(n, 10240, M(o.magFilter)), + e.texParameteri(n, 10241, M(o.minFilter)), + o.minFilter !== me && + o.minFilter !== Ae && + console.warn( + 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.', + )) + var s = t.get('EXT_texture_filter_anisotropic') + if (s) { + if (o.type === Pe && null === t.get('OES_texture_float_linear')) return + if ( + o.type === De && + null === (u || t.get('OES_texture_half_float_linear')) + ) + return + ;(o.anisotropy > 1 || r.get(o).__currentAnisotropy) && + (e.texParameterf( + n, + s.TEXTURE_MAX_ANISOTROPY_EXT, + Math.min(o.anisotropy, i.getMaxAnisotropy()), + ), + (r.get(o).__currentAnisotropy = o.anisotropy)) + } + } + function U(t, n) { + void 0 === t.__webglInit && + ((t.__webglInit = !0), + n.addEventListener('dispose', _), + (t.__webglTexture = e.createTexture()), + a.memory.textures++) + } + function H(t, r, i) { + var a = 3553 + r.isDataTexture2DArray && (a = 35866), + r.isDataTexture3D && (a = 32879), + U(t, r), + n.activeTexture(33984 + i), + n.bindTexture(a, t.__webglTexture), + e.pixelStorei(37440, r.flipY), + e.pixelStorei(37441, r.premultiplyAlpha), + e.pixelStorei(3317, r.unpackAlignment) + var s, + l = A(r) && !1 === b(r.image), + c = y(r.image, l, !1, p), + h = b(c) || u, + d = o.convert(r.format), + f = o.convert(r.type), + m = E(r.internalFormat, d, f) + N(a, r, h) + var v = r.mipmaps + if (r.isDepthTexture) + (m = 6402), + u + ? (m = + r.type === Pe + ? 36012 + : r.type === Re + ? 33190 + : r.type === Fe + ? 35056 + : 33189) + : r.type === Pe && + console.error( + 'WebGLRenderer: Floating point depth texture requires WebGL2.', + ), + r.format === je && + 6402 === m && + r.type !== Ce && + r.type !== Re && + (console.warn( + 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.', + ), + (r.type = Ce), + (f = o.convert(r.type))), + r.format === Ve && + 6402 === m && + ((m = 34041), + r.type !== Fe && + (console.warn( + 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.', + ), + (r.type = Fe), + (f = o.convert(r.type)))), + n.texImage2D(3553, 0, m, c.width, c.height, 0, d, f, null) + else if (r.isDataTexture) + if (v.length > 0 && h) { + for (var g = 0, M = v.length; g < M; g++) + (s = v[g]), + n.texImage2D(3553, g, m, s.width, s.height, 0, d, f, s.data) + ;(r.generateMipmaps = !1), (t.__maxMipLevel = v.length - 1) + } else + n.texImage2D(3553, 0, m, c.width, c.height, 0, d, f, c.data), + (t.__maxMipLevel = 0) + else if (r.isCompressedTexture) { + for (var _ = 0, T = v.length; _ < T; _++) + (s = v[_]), + r.format !== Ue && r.format !== Ne + ? null !== d + ? n.compressedTexImage2D(3553, _, m, s.width, s.height, 0, s.data) + : console.warn( + 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()', + ) + : n.texImage2D(3553, _, m, s.width, s.height, 0, d, f, s.data) + t.__maxMipLevel = v.length - 1 + } else if (r.isDataTexture2DArray) + n.texImage3D(35866, 0, m, c.width, c.height, c.depth, 0, d, f, c.data), + (t.__maxMipLevel = 0) + else if (r.isDataTexture3D) + n.texImage3D(32879, 0, m, c.width, c.height, c.depth, 0, d, f, c.data), + (t.__maxMipLevel = 0) + else if (v.length > 0 && h) { + for (var S = 0, C = v.length; S < C; S++) + (s = v[S]), n.texImage2D(3553, S, m, d, f, s) + ;(r.generateMipmaps = !1), (t.__maxMipLevel = v.length - 1) + } else n.texImage2D(3553, 0, m, d, f, c), (t.__maxMipLevel = 0) + w(r, h) && x(a, r, c.width, c.height), + (t.__version = r.version), + r.onUpdate && r.onUpdate(r) + } + function G(t, r, i) { + if (6 === r.image.length) { + U(t, r), + n.activeTexture(33984 + i), + n.bindTexture(34067, t.__webglTexture), + e.pixelStorei(37440, r.flipY), + e.pixelStorei(37441, r.premultiplyAlpha), + e.pixelStorei(3317, r.unpackAlignment) + for ( + var a = r && (r.isCompressedTexture || r.image[0].isCompressedTexture), + s = r.image[0] && r.image[0].isDataTexture, + l = [], + c = 0; + c < 6; + c++ + ) + l[c] = + a || s + ? s + ? r.image[c].image + : r.image[c] + : y(r.image[c], !1, !0, d) + var h, + p = l[0], + f = b(p) || u, + m = o.convert(r.format), + v = o.convert(r.type), + g = E(r.internalFormat, m, v) + if ((N(34067, r, f), a)) { + for (var A = 0; A < 6; A++) { + h = l[A].mipmaps + for (var M = 0; M < h.length; M++) { + var _ = h[M] + r.format !== Ue && r.format !== Ne + ? null !== m + ? n.compressedTexImage2D( + 34069 + A, + M, + g, + _.width, + _.height, + 0, + _.data, + ) + : console.warn( + 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()', + ) + : n.texImage2D( + 34069 + A, + M, + g, + _.width, + _.height, + 0, + m, + v, + _.data, + ) + } + } + t.__maxMipLevel = h.length - 1 + } else { + h = r.mipmaps + for (var T = 0; T < 6; T++) + if (s) { + n.texImage2D( + 34069 + T, + 0, + g, + l[T].width, + l[T].height, + 0, + m, + v, + l[T].data, + ) + for (var S = 0; S < h.length; S++) { + var C = h[S].image[T].image + n.texImage2D( + 34069 + T, + S + 1, + g, + C.width, + C.height, + 0, + m, + v, + C.data, + ) + } + } else { + n.texImage2D(34069 + T, 0, g, m, v, l[T]) + for (var L = 0; L < h.length; L++) { + var R = h[L] + n.texImage2D(34069 + T, L + 1, g, m, v, R.image[T]) + } + } + t.__maxMipLevel = h.length + } + w(r, f) && x(34067, r, p.width, p.height), + (t.__version = r.version), + r.onUpdate && r.onUpdate(r) + } + } + function z(t, i, a, s) { + var l = o.convert(i.texture.format), + c = o.convert(i.texture.type), + u = E(i.texture.internalFormat, l, c) + n.texImage2D(s, 0, u, i.width, i.height, 0, l, c, null), + e.bindFramebuffer(36160, t), + e.framebufferTexture2D(36160, a, s, r.get(i.texture).__webglTexture, 0), + e.bindFramebuffer(36160, null) + } + function j(t, n, r) { + if ((e.bindRenderbuffer(36161, t), n.depthBuffer && !n.stencilBuffer)) { + var i = 33189 + if (r) { + var a = n.depthTexture + a && + a.isDepthTexture && + (a.type === Pe ? (i = 36012) : a.type === Re && (i = 33190)) + var s = Q(n) + e.renderbufferStorageMultisample(36161, s, i, n.width, n.height) + } else e.renderbufferStorage(36161, i, n.width, n.height) + e.framebufferRenderbuffer(36160, 36096, 36161, t) + } else if (n.depthBuffer && n.stencilBuffer) { + if (r) { + var l = Q(n) + e.renderbufferStorageMultisample(36161, l, 35056, n.width, n.height) + } else e.renderbufferStorage(36161, 34041, n.width, n.height) + e.framebufferRenderbuffer(36160, 33306, 36161, t) + } else { + var c = o.convert(n.texture.format), + u = o.convert(n.texture.type), + h = E(n.texture.internalFormat, c, u) + if (r) { + var d = Q(n) + e.renderbufferStorageMultisample(36161, d, h, n.width, n.height) + } else e.renderbufferStorage(36161, h, n.width, n.height) + } + e.bindRenderbuffer(36161, null) + } + function V(t, n) { + if (n && n.isWebGLCubeRenderTarget) + throw new Error('Depth Texture with cube render targets is not supported') + if ( + (e.bindFramebuffer(36160, t), + !n.depthTexture || !n.depthTexture.isDepthTexture) + ) + throw new Error( + 'renderTarget.depthTexture must be an instance of THREE.DepthTexture', + ) + ;(r.get(n.depthTexture).__webglTexture && + n.depthTexture.image.width === n.width && + n.depthTexture.image.height === n.height) || + ((n.depthTexture.image.width = n.width), + (n.depthTexture.image.height = n.height), + (n.depthTexture.needsUpdate = !0)), + D(n.depthTexture, 0) + var i = r.get(n.depthTexture).__webglTexture + if (n.depthTexture.format === je) + e.framebufferTexture2D(36160, 36096, 3553, i, 0) + else { + if (n.depthTexture.format !== Ve) + throw new Error('Unknown depthTexture format') + e.framebufferTexture2D(36160, 33306, 3553, i, 0) + } + } + function W(t) { + var n = r.get(t), + i = !0 === t.isWebGLCubeRenderTarget + if (t.depthTexture) { + if (i) + throw new Error( + 'target.depthTexture not supported in Cube render targets', + ) + V(n.__webglFramebuffer, t) + } else if (i) { + n.__webglDepthbuffer = [] + for (var o = 0; o < 6; o++) + e.bindFramebuffer(36160, n.__webglFramebuffer[o]), + (n.__webglDepthbuffer[o] = e.createRenderbuffer()), + j(n.__webglDepthbuffer[o], t, !1) + } else + e.bindFramebuffer(36160, n.__webglFramebuffer), + (n.__webglDepthbuffer = e.createRenderbuffer()), + j(n.__webglDepthbuffer, t, !1) + e.bindFramebuffer(36160, null) + } + function q(t) { + var i = r.get(t), + s = r.get(t.texture) + t.addEventListener('dispose', T), + (s.__webglTexture = e.createTexture()), + a.memory.textures++ + var l = !0 === t.isWebGLCubeRenderTarget, + c = !0 === t.isWebGLMultisampleRenderTarget, + h = b(t) || u + if ( + (!u || + t.texture.format !== Ne || + (t.texture.type !== Pe && t.texture.type !== De) || + ((t.texture.format = Ue), + console.warn( + 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.', + )), + l) + ) { + i.__webglFramebuffer = [] + for (var d = 0; d < 6; d++) + i.__webglFramebuffer[d] = e.createFramebuffer() + } else if (((i.__webglFramebuffer = e.createFramebuffer()), c)) + if (u) { + ;(i.__webglMultisampledFramebuffer = e.createFramebuffer()), + (i.__webglColorRenderbuffer = e.createRenderbuffer()), + e.bindRenderbuffer(36161, i.__webglColorRenderbuffer) + var p = o.convert(t.texture.format), + f = o.convert(t.texture.type), + m = E(t.texture.internalFormat, p, f), + v = Q(t) + e.renderbufferStorageMultisample(36161, v, m, t.width, t.height), + e.bindFramebuffer(36160, i.__webglMultisampledFramebuffer), + e.framebufferRenderbuffer( + 36160, + 36064, + 36161, + i.__webglColorRenderbuffer, + ), + e.bindRenderbuffer(36161, null), + t.depthBuffer && + ((i.__webglDepthRenderbuffer = e.createRenderbuffer()), + j(i.__webglDepthRenderbuffer, t, !0)), + e.bindFramebuffer(36160, null) + } else + console.warn( + 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.', + ) + if (l) { + n.bindTexture(34067, s.__webglTexture), N(34067, t.texture, h) + for (var g = 0; g < 6; g++) + z(i.__webglFramebuffer[g], t, 36064, 34069 + g) + w(t.texture, h) && x(34067, t.texture, t.width, t.height), + n.bindTexture(34067, null) + } else + n.bindTexture(3553, s.__webglTexture), + N(3553, t.texture, h), + z(i.__webglFramebuffer, t, 36064, 3553), + w(t.texture, h) && x(3553, t.texture, t.width, t.height), + n.bindTexture(3553, null) + t.depthBuffer && W(t) + } + function X(e) { + var t = e.texture + if (w(t, b(e) || u)) { + var i = e.isWebGLCubeRenderTarget ? 34067 : 3553, + o = r.get(t).__webglTexture + n.bindTexture(i, o), x(i, t, e.width, e.height), n.bindTexture(i, null) + } + } + function Y(t) { + if (t.isWebGLMultisampleRenderTarget) + if (u) { + var n = r.get(t) + e.bindFramebuffer(36008, n.__webglMultisampledFramebuffer), + e.bindFramebuffer(36009, n.__webglFramebuffer) + var i = t.width, + o = t.height, + a = 16384 + t.depthBuffer && (a |= 256), + t.stencilBuffer && (a |= 1024), + e.blitFramebuffer(0, 0, i, o, 0, 0, i, o, a, 9728), + e.bindFramebuffer(36160, n.__webglMultisampledFramebuffer) + } else + console.warn( + 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.', + ) + } + function Q(e) { + return u && e.isWebGLMultisampleRenderTarget ? Math.min(f, e.samples) : 0 + } + function Z(e) { + var t = a.render.frame + m.get(e) !== t && (m.set(e, t), e.update()) + } + var K = !1, + J = !1 + function $(e, t) { + e && + e.isWebGLRenderTarget && + (!1 === K && + (console.warn( + "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead.", + ), + (K = !0)), + (e = e.texture)), + D(e, t) + } + function ee(e, t) { + e && + e.isWebGLCubeRenderTarget && + (!1 === J && + (console.warn( + "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead.", + ), + (J = !0)), + (e = e.texture)), + B(e, t) + } + ;(this.allocateTextureUnit = P), + (this.resetTextureUnits = R), + (this.setTexture2D = D), + (this.setTexture2DArray = O), + (this.setTexture3D = I), + (this.setTextureCube = B), + (this.setupRenderTarget = q), + (this.updateRenderTargetMipmap = X), + (this.updateMultisampleRenderTarget = Y), + (this.safeSetTexture2D = $), + (this.safeSetTextureCube = ee) + } + function nl(e, t, n) { + var r = n.isWebGL2 + function i(e) { + var n + if (e === _e) return 5121 + if (e === Oe) return 32819 + if (e === Ie) return 32820 + if (e === Be) return 33635 + if (e === Te) return 5120 + if (e === Se) return 5122 + if (e === Ce) return 5123 + if (e === Le) return 5124 + if (e === Re) return 5125 + if (e === Pe) return 5126 + if (e === De) + return r + ? 5131 + : null !== (n = t.get('OES_texture_half_float')) + ? n.HALF_FLOAT_OES + : null + if (e === ke) return 6406 + if (e === Ne) return 6407 + if (e === Ue) return 6408 + if (e === He) return 6409 + if (e === Ge) return 6410 + if (e === je) return 6402 + if (e === Ve) return 34041 + if (e === We) return 6403 + if (e === qe) return 36244 + if (e === Xe) return 33319 + if (e === Ye) return 33320 + if (e === Qe) return 36248 + if (e === Ze) return 36249 + if (e === Ke || e === Je || e === $e || e === et) { + if (null === (n = t.get('WEBGL_compressed_texture_s3tc'))) return null + if (e === Ke) return n.COMPRESSED_RGB_S3TC_DXT1_EXT + if (e === Je) return n.COMPRESSED_RGBA_S3TC_DXT1_EXT + if (e === $e) return n.COMPRESSED_RGBA_S3TC_DXT3_EXT + if (e === et) return n.COMPRESSED_RGBA_S3TC_DXT5_EXT + } + if (e === tt || e === nt || e === rt || e === it) { + if (null === (n = t.get('WEBGL_compressed_texture_pvrtc'))) return null + if (e === tt) return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG + if (e === nt) return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG + if (e === rt) return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG + if (e === it) return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG + } + if (e === ot) + return null !== (n = t.get('WEBGL_compressed_texture_etc1')) + ? n.COMPRESSED_RGB_ETC1_WEBGL + : null + if ( + (e === at || e === st) && + null !== (n = t.get('WEBGL_compressed_texture_etc')) + ) { + if (e === at) return n.COMPRESSED_RGB8_ETC2 + if (e === st) return n.COMPRESSED_RGBA8_ETC2_EAC + } + return e === lt || + e === ct || + e === ut || + e === ht || + e === dt || + e === pt || + e === ft || + e === mt || + e === vt || + e === gt || + e === yt || + e === bt || + e === At || + e === wt || + e === Et || + e === Mt || + e === _t || + e === Tt || + e === St || + e === Ct || + e === Lt || + e === Rt || + e === Pt || + e === Dt || + e === Ot || + e === It || + e === Bt || + e === Ft + ? null !== (n = t.get('WEBGL_compressed_texture_astc')) + ? e + : null + : e === xt + ? null !== (n = t.get('EXT_texture_compression_bptc')) + ? e + : null + : e === Fe + ? r + ? 34042 + : null !== (n = t.get('WEBGL_depth_texture')) + ? n.UNSIGNED_INT_24_8_WEBGL + : null + : void 0 + } + return { convert: i } + } + function rl() { + si.call(this), (this.type = 'Group') + } + function il(e) { + void 0 === e && (e = []), Oo.call(this), (this.cameras = e) + } + ;(rl.prototype = Object.assign(Object.create(si.prototype), { + constructor: rl, + isGroup: !0, + })), + (il.prototype = Object.assign(Object.create(Oo.prototype), { + constructor: il, + isArrayCamera: !0, + })) + var ol = new lr(), + al = new lr() + function sl(e, t, n) { + ol.setFromMatrixPosition(t.matrixWorld), + al.setFromMatrixPosition(n.matrixWorld) + var r = ol.distanceTo(al), + i = t.projectionMatrix.elements, + o = n.projectionMatrix.elements, + a = i[14] / (i[10] - 1), + s = i[14] / (i[10] + 1), + l = (i[9] + 1) / i[5], + c = (i[9] - 1) / i[5], + u = (i[8] - 1) / i[0], + h = (o[8] + 1) / o[0], + d = a * u, + p = a * h, + f = r / (-u + h), + m = f * -u + t.matrixWorld.decompose(e.position, e.quaternion, e.scale), + e.translateX(m), + e.translateZ(f), + e.matrixWorld.compose(e.position, e.quaternion, e.scale), + e.matrixWorldInverse.getInverse(e.matrixWorld) + var v = a + f, + g = s + f, + y = d - m, + b = p + (r - m), + A = ((l * s) / g) * v, + w = ((c * s) / g) * v + e.projectionMatrix.makePerspective(y, b, A, w, v, g) + } + function ll(e) { + var t, + n, + r = this, + i = null, + o = null, + a = null, + s = [], + l = new Fr(), + c = new Fr(), + u = 1, + h = 'local-floor' + 'undefined' !== typeof window && + 'VRFrameData' in window && + ((o = new window.VRFrameData()), + window.addEventListener('vrdisplaypresentchange', A, !1)) + var d = new Fr(), + p = new sr(), + f = new lr(), + m = new Oo() + ;(m.viewport = new ir()), m.layers.enable(1) + var v = new Oo() + ;(v.viewport = new ir()), v.layers.enable(2) + var g = new il([m, v]) + g.layers.enable(1), g.layers.enable(2) + var y, + b = new Jn() + function A() { + if ((r.isPresenting = null !== i && !0 === i.isPresenting)) { + var o = i.getEyeParameters('left') + ;(t = 2 * o.renderWidth * u), + (n = o.renderHeight * u), + (y = e.getPixelRatio()), + e.getSize(b), + e.setDrawingBufferSize(t, n, 1), + m.viewport.set(0, 0, t / 2, n), + v.viewport.set(t / 2, 0, t / 2, n), + T.start(), + r.dispatchEvent({ type: 'sessionstart' }) + } else + r.enabled && e.setDrawingBufferSize(b.width, b.height, y), + T.stop(), + r.dispatchEvent({ type: 'sessionend' }) + } + var w = [], + x = [] + function E(e) { + for ( + var t = navigator.getGamepads && navigator.getGamepads(), + n = 0, + r = t.length; + n < r; + n++ + ) { + var i = t[n] + if ( + i && + ('Daydream Controller' === i.id || + 'Gear VR Controller' === i.id || + 'Oculus Go Controller' === i.id || + 'OpenVR Gamepad' === i.id || + i.id.startsWith('Oculus Touch') || + i.id.startsWith('HTC Vive Focus') || + i.id.startsWith('Spatial Controller')) + ) { + var o = i.hand + if (0 === e && ('' === o || 'right' === o)) return i + if (1 === e && 'left' === o) return i + } + } + } + function M() { + for (var e = 0; e < s.length; e++) { + var t = s[e], + n = E(e) + if (void 0 !== n && void 0 !== n.pose) { + if (null === n.pose) return + var r = n.pose + !1 === r.hasPosition && t.position.set(0.2, -0.6, -0.05), + null !== r.position && t.position.fromArray(r.position), + null !== r.orientation && t.quaternion.fromArray(r.orientation), + t.matrix.compose(t.position, t.quaternion, t.scale), + t.matrix.premultiply(l), + t.matrix.decompose(t.position, t.quaternion, t.scale), + (t.matrixWorldNeedsUpdate = !0), + (t.visible = !0) + var i = 'Daydream Controller' === n.id ? 0 : 1 + void 0 === w[e] && (w[e] = !1), + w[e] !== n.buttons[i].pressed && + ((w[e] = n.buttons[i].pressed), + !0 === w[e] + ? t.dispatchEvent({ type: 'selectstart' }) + : (t.dispatchEvent({ type: 'selectend' }), + t.dispatchEvent({ type: 'select' }))), + (i = 2), + void 0 === x[e] && (x[e] = !1), + void 0 !== n.buttons[i] && + x[e] !== n.buttons[i].pressed && + ((x[e] = n.buttons[i].pressed), + !0 === x[e] + ? t.dispatchEvent({ type: 'squeezestart' }) + : (t.dispatchEvent({ type: 'squeezeend' }), + t.dispatchEvent({ type: 'squeeze' }))) + } else t.visible = !1 + } + } + function _(e, r) { + null !== r && + 4 === r.length && + e.set(r[0] * t, r[1] * n, r[2] * t, r[3] * n) + } + ;(this.enabled = !1), + (this.getController = function (e) { + var t = s[e] + return ( + void 0 === t && + (((t = new rl()).matrixAutoUpdate = !1), + (t.visible = !1), + (s[e] = t)), + t + ) + }), + (this.getDevice = function () { + return i + }), + (this.setDevice = function (e) { + void 0 !== e && (i = e), T.setContext(e) + }), + (this.setFramebufferScaleFactor = function (e) { + u = e + }), + (this.setReferenceSpaceType = function (e) { + h = e + }), + (this.setPoseTarget = function (e) { + void 0 !== e && (a = e) + }), + (this.getCamera = function (e) { + var t = 'local-floor' === h ? 1.6 : 0 + if ( + ((i.depthNear = e.near), + (i.depthFar = e.far), + i.getFrameData(o), + 'local-floor' === h) + ) { + var n = i.stageParameters + n + ? l.fromArray(n.sittingToStandingTransform) + : l.makeTranslation(0, t, 0) + } + var r = o.pose, + s = null !== a ? a : e + s.matrix.copy(l), + s.matrix.decompose(s.position, s.quaternion, s.scale), + null !== r.orientation && + (p.fromArray(r.orientation), s.quaternion.multiply(p)), + null !== r.position && + (p.setFromRotationMatrix(l), + f.fromArray(r.position), + f.applyQuaternion(p), + s.position.add(f)), + s.updateMatrixWorld() + for (var u = s.children, y = 0, b = u.length; y < b; y++) + u[y].updateMatrixWorld(!0) + ;(m.near = e.near), + (v.near = e.near), + (m.far = e.far), + (v.far = e.far), + m.matrixWorldInverse.fromArray(o.leftViewMatrix), + v.matrixWorldInverse.fromArray(o.rightViewMatrix), + c.getInverse(l), + 'local-floor' === h && + (m.matrixWorldInverse.multiply(c), v.matrixWorldInverse.multiply(c)) + var A = s.parent + null !== A && + (d.getInverse(A.matrixWorld), + m.matrixWorldInverse.multiply(d), + v.matrixWorldInverse.multiply(d)), + m.matrixWorld.getInverse(m.matrixWorldInverse), + v.matrixWorld.getInverse(v.matrixWorldInverse), + m.projectionMatrix.fromArray(o.leftProjectionMatrix), + v.projectionMatrix.fromArray(o.rightProjectionMatrix), + sl(g, m, v) + var w = i.getLayers() + if (w.length) { + var x = w[0] + _(m.viewport, x.leftBounds), _(v.viewport, x.rightBounds) + } + return M(), g + }), + (this.getStandingMatrix = function () { + return l + }), + (this.isPresenting = !1) + var T = new jo() + ;(this.setAnimationLoop = function (e) { + T.setAnimationLoop(e), this.isPresenting && T.start() + }), + (this.submitFrame = function () { + this.isPresenting && i.submitFrame() + }), + (this.dispose = function () { + 'undefined' !== typeof window && + window.removeEventListener('vrdisplaypresentchange', A) + }), + (this.setFrameOfReferenceType = function () { + console.warn( + 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.', + ) + }) + } + function cl() { + ;(this._targetRay = null), (this._grip = null), (this._hand = null) + } + function ul(e, t) { + var n, + r = this, + i = null, + o = 1, + a = null, + s = 'local-floor', + l = null, + c = null, + u = [], + h = new Map(), + d = [], + p = new Oo() + p.layers.enable(1), (p.viewport = new ir()) + var f = new Oo() + f.layers.enable(2), (f.viewport = new ir()) + var m = [p, f], + v = new il() + v.layers.enable(1), v.layers.enable(2) + var g = null, + y = null + function b(e) { + var t = h.get(e.inputSource) + t && t.dispatchEvent({ type: e.type, data: e.inputSource }) + } + function A() { + h.forEach(function (e, t) { + e.disconnect(t) + }), + h.clear(), + (g = null), + (y = null), + e.setFramebuffer(null), + e.setRenderTarget(e.getRenderTarget()), + C.stop(), + (r.isPresenting = !1), + r.dispatchEvent({ type: 'sessionend' }) + } + function w(e) { + for (var t = i.inputSources, n = 0; n < u.length; n++) h.set(t[n], u[n]) + for (var r = 0; r < e.removed.length; r++) { + var o = e.removed[r], + a = h.get(o) + a && (a.dispatchEvent({ type: 'disconnected', data: o }), h.delete(o)) + } + for (var s = 0; s < e.added.length; s++) { + var l = e.added[s], + c = h.get(l) + c && c.dispatchEvent({ type: 'connected', data: l }) + } + } + ;(this.layersEnabled = !1), + (this.enabled = !1), + (this.isPresenting = !1), + (this.getCameraPose = function () { + return l + }), + (this.getController = function (e) { + var t = u[e] + return void 0 === t && ((t = new cl()), (u[e] = t)), t.getTargetRaySpace() + }), + (this.getControllerGrip = function (e) { + var t = u[e] + return void 0 === t && ((t = new cl()), (u[e] = t)), t.getGripSpace() + }), + (this.getHand = function (e) { + var t = u[e] + return void 0 === t && ((t = new cl()), (u[e] = t)), t.getHandSpace() + }), + (this.setFramebufferScaleFactor = function (e) { + ;(o = e), + !0 === r.isPresenting && + console.warn( + 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.', + ) + }), + (this.setReferenceSpaceType = function (e) { + ;(s = e), + !0 === r.isPresenting && + console.warn( + 'THREE.WebXRManager: Cannot change reference space type while presenting.', + ) + }), + (this.getReferenceSpace = function () { + return a + }), + (this.getSession = function () { + return i + }), + (this.setSession = (function () { + var e = Nn( + regeneratorRuntime.mark(function e(l) { + var c, u + return regeneratorRuntime.wrap( + function (e) { + for (;;) + switch ((e.prev = e.next)) { + case 0: + if (null === (i = l)) { + e.next = 24 + break + } + if ( + (i.addEventListener('select', b), + i.addEventListener('selectstart', b), + i.addEventListener('selectend', b), + i.addEventListener('squeeze', b), + i.addEventListener('squeezestart', b), + i.addEventListener('squeezeend', b), + i.addEventListener('end', A), + i.addEventListener('inputsourceschange', w), + !0 === (c = t.getContextAttributes()).xrCompatible) + ) { + e.next = 14 + break + } + return (e.next = 14), t.makeXRCompatible() + case 14: + return ( + (u = { + antialias: c.antialias, + alpha: c.alpha, + depth: c.depth, + stencil: c.stencil, + framebufferScaleFactor: o, + }), + (n = new XRWebGLLayer(i, t, u)), + window.XRWebGLBinding && this.layersEnabled + ? this.addLayer(n) + : i.updateRenderState({ baseLayer: n }), + (e.next = 19), + i.requestReferenceSpace(s) + ) + case 19: + ;(a = e.sent), + C.setContext(i), + C.start(), + (r.isPresenting = !0), + r.dispatchEvent({ type: 'sessionstart' }) + case 24: + case 'end': + return e.stop() + } + }, + e, + this, + ) + }), + ) + return function (t) { + return e.apply(this, arguments) + } + })()), + (this.addLayer = function (e) { + window.XRWebGLBinding && + this.layersEnabled && + i && + (d.push(e), i.updateRenderState({ layers: d })) + }), + (this.removeLayer = function (e) { + window.XRWebGLBinding && + this.layersEnabled && + i && + (d.splice(d.indexOf(e), 1), i.updateRenderState({ layers: d })) + }) + var x = new lr(), + E = new lr() + function M(e, t, n) { + x.setFromMatrixPosition(t.matrixWorld), + E.setFromMatrixPosition(n.matrixWorld) + var r = x.distanceTo(E), + i = t.projectionMatrix.elements, + o = n.projectionMatrix.elements, + a = i[14] / (i[10] - 1), + s = i[14] / (i[10] + 1), + l = (i[9] + 1) / i[5], + c = (i[9] - 1) / i[5], + u = (i[8] - 1) / i[0], + h = (o[8] + 1) / o[0], + d = a * u, + p = a * h, + f = r / (-u + h), + m = f * -u + t.matrixWorld.decompose(e.position, e.quaternion, e.scale), + e.translateX(m), + e.translateZ(f), + e.matrixWorld.compose(e.position, e.quaternion, e.scale), + e.matrixWorldInverse.copy(e.matrixWorld).invert() + var v = a + f, + g = s + f, + y = d - m, + b = p + (r - m), + A = ((l * s) / g) * v, + w = ((c * s) / g) * v + e.projectionMatrix.makePerspective(y, b, A, w, v, g) + } + function _(e, t) { + null === t + ? e.matrixWorld.copy(e.matrix) + : e.matrixWorld.multiplyMatrices(t.matrixWorld, e.matrix), + e.matrixWorldInverse.copy(e.matrixWorld).invert() + } + ;(this.setPoseTarget = function (e) { + void 0 !== e && (c = e) + }), + (this.getCamera = function (e) { + ;(v.near = f.near = p.near = e.near), + (v.far = f.far = p.far = e.far), + (g === v.near && y === v.far) || + (i.updateRenderState({ depthNear: v.near, depthFar: v.far }), + (g = v.near), + (y = v.far)) + var t = e.parent, + n = v.cameras, + r = c || e + _(v, t) + for (var o = 0; o < n.length; o++) _(n[o], t) + r.matrixWorld.copy(v.matrixWorld) + for (var a = r.children, s = 0, l = a.length; s < l; s++) + a[s].updateMatrixWorld(!0) + return ( + 2 === n.length + ? M(v, p, f) + : v.projectionMatrix.copy(p.projectionMatrix), + v + ) + }) + var T = null + function S(t, r) { + if (null !== (l = r.getViewerPose(a))) { + var o = l.views + e.setFramebuffer(n.framebuffer) + var s = !1 + o.length !== v.cameras.length && ((v.cameras.length = 0), (s = !0)) + for (var c = 0; c < o.length; c++) { + var h = o[c], + d = n.getViewport(h), + p = m[c] + p.matrix.fromArray(h.transform.matrix), + p.projectionMatrix.fromArray(h.projectionMatrix), + p.viewport.set(d.x, d.y, d.width, d.height), + 0 === c && v.matrix.copy(p.matrix), + !0 === s && v.cameras.push(p) + } + } + for (var f = i.inputSources, g = 0; g < u.length; g++) { + var y = u[g], + b = f[g] + y.update(b, r, a) + } + T && T(t, r) + } + var C = new jo() + C.setAnimationLoop(S), + (this.setAnimationLoop = function (e) { + T = e + }), + (this.dispose = function () {}) + } + function hl(e) { + function t(e, t) { + e.fogColor.value.copy(t.color), + t.isFog + ? ((e.fogNear.value = t.near), (e.fogFar.value = t.far)) + : t.isFogExp2 && (e.fogDensity.value = t.density) + } + function n(e, t, n, v) { + t.isMeshBasicMaterial + ? r(e, t) + : t.isMeshLambertMaterial + ? (r(e, t), l(e, t)) + : t.isMeshToonMaterial + ? (r(e, t), u(e, t)) + : t.isMeshPhongMaterial + ? (r(e, t), c(e, t)) + : t.isMeshStandardMaterial + ? (r(e, t), t.isMeshPhysicalMaterial ? d(e, t) : h(e, t)) + : t.isMeshMatcapMaterial + ? (r(e, t), p(e, t)) + : t.isMeshDepthMaterial + ? (r(e, t), f(e, t)) + : t.isMeshDistanceMaterial + ? (r(e, t), m(e, t)) + : t.isMeshNormalMaterial + ? (r(e, t), g(e, t)) + : t.isLineBasicMaterial + ? (i(e, t), t.isLineDashedMaterial && o(e, t)) + : t.isPointsMaterial + ? a(e, t, n, v) + : t.isSpriteMaterial + ? s(e, t) + : t.isShadowMaterial + ? (e.color.value.copy(t.color), (e.opacity.value = t.opacity)) + : t.isShaderMaterial && (t.uniformsNeedUpdate = !1) + } + function r(t, n) { + ;(t.opacity.value = n.opacity), + n.color && t.diffuse.value.copy(n.color), + n.emissive && + t.emissive.value.copy(n.emissive).multiplyScalar(n.emissiveIntensity), + n.map && (t.map.value = n.map), + n.alphaMap && (t.alphaMap.value = n.alphaMap), + n.specularMap && (t.specularMap.value = n.specularMap) + var r, + i, + o = e.get(n).envMap + if (o) { + ;(t.envMap.value = o), + (t.flipEnvMap.value = o.isCubeTexture && o._needsFlipEnvMap ? -1 : 1), + (t.reflectivity.value = n.reflectivity), + (t.refractionRatio.value = n.refractionRatio) + var a = e.get(o).__maxMipLevel + void 0 !== a && (t.maxMipLevel.value = a) + } + n.lightMap && + ((t.lightMap.value = n.lightMap), + (t.lightMapIntensity.value = n.lightMapIntensity)), + n.aoMap && + ((t.aoMap.value = n.aoMap), + (t.aoMapIntensity.value = n.aoMapIntensity)), + n.map + ? (r = n.map) + : n.specularMap + ? (r = n.specularMap) + : n.displacementMap + ? (r = n.displacementMap) + : n.normalMap + ? (r = n.normalMap) + : n.bumpMap + ? (r = n.bumpMap) + : n.roughnessMap + ? (r = n.roughnessMap) + : n.metalnessMap + ? (r = n.metalnessMap) + : n.alphaMap + ? (r = n.alphaMap) + : n.emissiveMap + ? (r = n.emissiveMap) + : n.clearcoatMap + ? (r = n.clearcoatMap) + : n.clearcoatNormalMap + ? (r = n.clearcoatNormalMap) + : n.clearcoatRoughnessMap && (r = n.clearcoatRoughnessMap), + void 0 !== r && + (r.isWebGLRenderTarget && (r = r.texture), + !0 === r.matrixAutoUpdate && r.updateMatrix(), + t.uvTransform.value.copy(r.matrix)), + n.aoMap ? (i = n.aoMap) : n.lightMap && (i = n.lightMap), + void 0 !== i && + (i.isWebGLRenderTarget && (i = i.texture), + !0 === i.matrixAutoUpdate && i.updateMatrix(), + t.uv2Transform.value.copy(i.matrix)) + } + function i(e, t) { + e.diffuse.value.copy(t.color), (e.opacity.value = t.opacity) + } + function o(e, t) { + ;(e.dashSize.value = t.dashSize), + (e.totalSize.value = t.dashSize + t.gapSize), + (e.scale.value = t.scale) + } + function a(e, t, n, r) { + var i + e.diffuse.value.copy(t.color), + (e.opacity.value = t.opacity), + (e.size.value = t.size * n), + (e.scale.value = 0.5 * r), + t.map && (e.map.value = t.map), + t.alphaMap && (e.alphaMap.value = t.alphaMap), + t.map ? (i = t.map) : t.alphaMap && (i = t.alphaMap), + void 0 !== i && + (!0 === i.matrixAutoUpdate && i.updateMatrix(), + e.uvTransform.value.copy(i.matrix)) + } + function s(e, t) { + var n + e.diffuse.value.copy(t.color), + (e.opacity.value = t.opacity), + (e.rotation.value = t.rotation), + t.map && (e.map.value = t.map), + t.alphaMap && (e.alphaMap.value = t.alphaMap), + t.map ? (n = t.map) : t.alphaMap && (n = t.alphaMap), + void 0 !== n && + (!0 === n.matrixAutoUpdate && n.updateMatrix(), + e.uvTransform.value.copy(n.matrix)) + } + function l(e, t) { + t.emissiveMap && (e.emissiveMap.value = t.emissiveMap) + } + function c(e, t) { + e.specular.value.copy(t.specular), + (e.shininess.value = Math.max(t.shininess, 1e-4)), + t.emissiveMap && (e.emissiveMap.value = t.emissiveMap), + t.bumpMap && + ((e.bumpMap.value = t.bumpMap), + (e.bumpScale.value = t.bumpScale), + t.side === v && (e.bumpScale.value *= -1)), + t.normalMap && + ((e.normalMap.value = t.normalMap), + e.normalScale.value.copy(t.normalScale), + t.side === v && e.normalScale.value.negate()), + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)) + } + function u(e, t) { + t.gradientMap && (e.gradientMap.value = t.gradientMap), + t.emissiveMap && (e.emissiveMap.value = t.emissiveMap), + t.bumpMap && + ((e.bumpMap.value = t.bumpMap), + (e.bumpScale.value = t.bumpScale), + t.side === v && (e.bumpScale.value *= -1)), + t.normalMap && + ((e.normalMap.value = t.normalMap), + e.normalScale.value.copy(t.normalScale), + t.side === v && e.normalScale.value.negate()), + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)) + } + function h(t, n) { + ;(t.roughness.value = n.roughness), + (t.metalness.value = n.metalness), + n.roughnessMap && (t.roughnessMap.value = n.roughnessMap), + n.metalnessMap && (t.metalnessMap.value = n.metalnessMap), + n.emissiveMap && (t.emissiveMap.value = n.emissiveMap), + n.bumpMap && + ((t.bumpMap.value = n.bumpMap), + (t.bumpScale.value = n.bumpScale), + n.side === v && (t.bumpScale.value *= -1)), + n.normalMap && + ((t.normalMap.value = n.normalMap), + t.normalScale.value.copy(n.normalScale), + n.side === v && t.normalScale.value.negate()), + n.displacementMap && + ((t.displacementMap.value = n.displacementMap), + (t.displacementScale.value = n.displacementScale), + (t.displacementBias.value = n.displacementBias)), + e.get(n).envMap && (t.envMapIntensity.value = n.envMapIntensity) + } + function d(e, t) { + h(e, t), + (e.reflectivity.value = t.reflectivity), + (e.clearcoat.value = t.clearcoat), + (e.clearcoatRoughness.value = t.clearcoatRoughness), + t.sheen && e.sheen.value.copy(t.sheen), + t.clearcoatMap && (e.clearcoatMap.value = t.clearcoatMap), + t.clearcoatRoughnessMap && + (e.clearcoatRoughnessMap.value = t.clearcoatRoughnessMap), + t.clearcoatNormalMap && + (e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale), + (e.clearcoatNormalMap.value = t.clearcoatNormalMap), + t.side === v && e.clearcoatNormalScale.value.negate()), + (e.transmission.value = t.transmission), + t.transmissionMap && (e.transmissionMap.value = t.transmissionMap) + } + function p(e, t) { + t.matcap && (e.matcap.value = t.matcap), + t.bumpMap && + ((e.bumpMap.value = t.bumpMap), + (e.bumpScale.value = t.bumpScale), + t.side === v && (e.bumpScale.value *= -1)), + t.normalMap && + ((e.normalMap.value = t.normalMap), + e.normalScale.value.copy(t.normalScale), + t.side === v && e.normalScale.value.negate()), + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)) + } + function f(e, t) { + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)) + } + function m(e, t) { + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)), + e.referencePosition.value.copy(t.referencePosition), + (e.nearDistance.value = t.nearDistance), + (e.farDistance.value = t.farDistance) + } + function g(e, t) { + t.bumpMap && + ((e.bumpMap.value = t.bumpMap), + (e.bumpScale.value = t.bumpScale), + t.side === v && (e.bumpScale.value *= -1)), + t.normalMap && + ((e.normalMap.value = t.normalMap), + e.normalScale.value.copy(t.normalScale), + t.side === v && e.normalScale.value.negate()), + t.displacementMap && + ((e.displacementMap.value = t.displacementMap), + (e.displacementScale.value = t.displacementScale), + (e.displacementBias.value = t.displacementBias)) + } + return { refreshFogUniforms: t, refreshMaterialUniforms: n } + } + function dl() { + var e = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas') + return (e.style.display = 'block'), e + } + function pl(e) { + var t = void 0 !== (e = e || {}).canvas ? e.canvas : dl(), + n = void 0 !== e.context ? e.context : null, + r = void 0 !== e.alpha && e.alpha, + i = void 0 === e.depth || e.depth, + o = void 0 === e.stencil || e.stencil, + a = void 0 !== e.antialias && e.antialias, + s = void 0 === e.premultipliedAlpha || e.premultipliedAlpha, + l = void 0 !== e.preserveDrawingBuffer && e.preserveDrawingBuffer, + c = void 0 !== e.powerPreference ? e.powerPreference : 'default', + u = + void 0 !== e.failIfMajorPerformanceCaveat && + e.failIfMajorPerformanceCaveat, + h = null, + d = null, + p = [] + ;(this.domElement = t), + (this.debug = { checkShaderErrors: !0 }), + (this.autoClear = !0), + (this.autoClearColor = !0), + (this.autoClearDepth = !0), + (this.autoClearStencil = !0), + (this.sortObjects = !0), + (this.clippingPlanes = []), + (this.localClippingEnabled = !1), + (this.gammaFactor = 2), + (this.outputEncoding = Kt), + (this.physicallyCorrectLights = !1), + (this.toneMapping = $), + (this.toneMappingExposure = 1), + (this.maxMorphTargets = 8), + (this.maxMorphNormals = 4) + var f = this, + m = !1, + v = null, + g = 0, + y = 0, + b = null, + A = null, + w = -1, + x = null, + E = new ir(), + M = new ir(), + _ = null, + T = t.width, + S = t.height, + C = 1, + L = null, + R = null, + P = new ir(0, 0, T, S), + D = new ir(0, 0, T, S), + O = !1, + I = new zo(), + B = !1, + F = !1, + k = new Fr(), + N = new lr(), + U = { + background: null, + fog: null, + environment: null, + overrideMaterial: null, + isScene: !0, + } + function H() { + return null === b ? C : 1 + } + var G, + z, + j, + V, + W, + q, + X, + Y, + Q, + Z, + K, + J, + ee, + te, + ne, + re, + ie, + oe, + ae, + se, + le, + ce = n + function ue(e, n) { + for (var r = 0; r < e.length; r++) { + var i = e[r], + o = t.getContext(i, n) + if (null !== o) return o + } + return null + } + try { + var he = { + alpha: r, + depth: i, + stencil: o, + antialias: a, + premultipliedAlpha: s, + preserveDrawingBuffer: l, + powerPreference: c, + failIfMajorPerformanceCaveat: u, + } + if ( + (t.addEventListener('webglcontextlost', ve, !1), + t.addEventListener('webglcontextrestored', ge, !1), + null === ce) + ) { + var de = ['webgl2', 'webgl', 'experimental-webgl'] + if ((!0 === f.isWebGL1Renderer && de.shift(), null === (ce = ue(de, he)))) + throw ue(de) + ? new Error( + 'Error creating WebGL context with your selected attributes.', + ) + : new Error('Error creating WebGL context.') + } + void 0 === ce.getShaderPrecisionFormat && + (ce.getShaderPrecisionFormat = function () { + return { rangeMin: 1, rangeMax: 1, precision: 1 } + }) + } catch (Be) { + throw (console.error('THREE.WebGLRenderer: ' + Be.message), Be) + } + function pe() { + ;(G = new ta(ce)), + (z = new Jo(ce, G, e)), + G.init(z), + (se = new nl(ce, G, z)), + (j = new el(ce, G, z)).scissor(M.copy(D).multiplyScalar(C).floor()), + j.viewport(E.copy(P).multiplyScalar(C).floor()), + (V = new ia(ce)), + (W = new ks()), + (q = new tl(ce, G, j, W, z, se, V)), + (X = new ea(f)), + (Y = new Vo(ce, z)), + (le = new Zo(ce, G, Y, z)), + (Q = new na(ce, Y, V, le)), + (Z = new la(ce, Q, Y, V)), + (ie = new sa(ce)), + (ne = new $o(W)), + (K = new Fs(f, X, G, z, le, ne)), + (J = new hl(W)), + (ee = new Gs(W)), + (te = new Ys(G, z)), + (re = new Qo(f, X, j, Z, s)), + (oe = new Ko(ce, G, V, z)), + (ae = new ra(ce, G, V, z)), + (V.programs = K.programs), + (f.capabilities = z), + (f.extensions = G), + (f.properties = W), + (f.renderLists = ee), + (f.state = j), + (f.info = V) + } + pe() + var fe = + 'undefined' !== typeof navigator && 'xr' in navigator + ? new ul(f, ce) + : new ll(f) + this.xr = fe + var me = new $s(f, Z, z.maxTextureSize) + function ve(e) { + e.preventDefault(), + console.log('THREE.WebGLRenderer: Context Lost.'), + (m = !0) + } + function ge() { + console.log('THREE.WebGLRenderer: Context Restored.'), (m = !1), pe() + } + function ye(e) { + var t = e.target + t.removeEventListener('dispose', ye), be(t) + } + function be(e) { + Ae(e), W.remove(e) + } + function Ae(e) { + var t = W.get(e).program + void 0 !== t && K.releaseProgram(t) + } + function we(e, t) { + e.render(function (e) { + f.renderBufferImmediate(e, t) + }) + } + ;(this.shadowMap = me), + (this.getContext = function () { + return ce + }), + (this.getContextAttributes = function () { + return ce.getContextAttributes() + }), + (this.forceContextLoss = function () { + var e = G.get('WEBGL_lose_context') + e && e.loseContext() + }), + (this.forceContextRestore = function () { + var e = G.get('WEBGL_lose_context') + e && e.restoreContext() + }), + (this.getPixelRatio = function () { + return C + }), + (this.setPixelRatio = function (e) { + void 0 !== e && ((C = e), this.setSize(T, S, !1)) + }), + (this.getSize = function (e) { + return ( + void 0 === e && + (console.warn( + 'WebGLRenderer: .getsize() now requires a Vector2 as an argument', + ), + (e = new Jn())), + e.set(T, S) + ) + }), + (this.setSize = function (e, n, r) { + fe.isPresenting + ? console.warn( + "THREE.WebGLRenderer: Can't change size while VR device is presenting.", + ) + : ((T = e), + (S = n), + (t.width = Math.floor(e * C)), + (t.height = Math.floor(n * C)), + !1 !== r && ((t.style.width = e + 'px'), (t.style.height = n + 'px')), + this.setViewport(0, 0, e, n)) + }), + (this.getDrawingBufferSize = function (e) { + return ( + void 0 === e && + (console.warn( + 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument', + ), + (e = new Jn())), + e.set(T * C, S * C).floor() + ) + }), + (this.setDrawingBufferSize = function (e, n, r) { + ;(T = e), + (S = n), + (C = r), + (t.width = Math.floor(e * r)), + (t.height = Math.floor(n * r)), + this.setViewport(0, 0, e, n) + }), + (this.getCurrentViewport = function (e) { + return ( + void 0 === e && + (console.warn( + 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument', + ), + (e = new ir())), + e.copy(E) + ) + }), + (this.getViewport = function (e) { + return e.copy(P) + }), + (this.setViewport = function (e, t, n, r) { + e.isVector4 ? P.set(e.x, e.y, e.z, e.w) : P.set(e, t, n, r), + j.viewport(E.copy(P).multiplyScalar(C).floor()) + }), + (this.getScissor = function (e) { + return e.copy(D) + }), + (this.setScissor = function (e, t, n, r) { + e.isVector4 ? D.set(e.x, e.y, e.z, e.w) : D.set(e, t, n, r), + j.scissor(M.copy(D).multiplyScalar(C).floor()) + }), + (this.getScissorTest = function () { + return O + }), + (this.setScissorTest = function (e) { + j.setScissorTest((O = e)) + }), + (this.setOpaqueSort = function (e) { + L = e + }), + (this.setTransparentSort = function (e) { + R = e + }), + (this.getClearColor = function (e) { + return ( + void 0 === e && + (console.warn( + 'WebGLRenderer: .getClearColor() now requires a Color as an argument', + ), + (e = new Li())), + e.copy(re.getClearColor()) + ) + }), + (this.setClearColor = function () { + re.setClearColor.apply(re, arguments) + }), + (this.getClearAlpha = function () { + return re.getClearAlpha() + }), + (this.setClearAlpha = function () { + re.setClearAlpha.apply(re, arguments) + }), + (this.clear = function (e, t, n) { + var r = 0 + ;(void 0 === e || e) && (r |= 16384), + (void 0 === t || t) && (r |= 256), + (void 0 === n || n) && (r |= 1024), + ce.clear(r) + }), + (this.clearColor = function () { + this.clear(!0, !1, !1) + }), + (this.clearDepth = function () { + this.clear(!1, !0, !1) + }), + (this.clearStencil = function () { + this.clear(!1, !1, !0) + }), + (this.dispose = function () { + t.removeEventListener('webglcontextlost', ve, !1), + t.removeEventListener('webglcontextrestored', ge, !1), + ee.dispose(), + te.dispose(), + W.dispose(), + X.dispose(), + Z.dispose(), + le.dispose(), + fe.dispose(), + Me.stop() + }), + (this.renderBufferImmediate = function (e, t) { + le.initAttributes() + var n = W.get(e) + e.hasPositions && !n.position && (n.position = ce.createBuffer()), + e.hasNormals && !n.normal && (n.normal = ce.createBuffer()), + e.hasUvs && !n.uv && (n.uv = ce.createBuffer()), + e.hasColors && !n.color && (n.color = ce.createBuffer()) + var r = t.getAttributes() + e.hasPositions && + (ce.bindBuffer(34962, n.position), + ce.bufferData(34962, e.positionArray, 35048), + le.enableAttribute(r.position), + ce.vertexAttribPointer(r.position, 3, 5126, !1, 0, 0)), + e.hasNormals && + (ce.bindBuffer(34962, n.normal), + ce.bufferData(34962, e.normalArray, 35048), + le.enableAttribute(r.normal), + ce.vertexAttribPointer(r.normal, 3, 5126, !1, 0, 0)), + e.hasUvs && + (ce.bindBuffer(34962, n.uv), + ce.bufferData(34962, e.uvArray, 35048), + le.enableAttribute(r.uv), + ce.vertexAttribPointer(r.uv, 2, 5126, !1, 0, 0)), + e.hasColors && + (ce.bindBuffer(34962, n.color), + ce.bufferData(34962, e.colorArray, 35048), + le.enableAttribute(r.color), + ce.vertexAttribPointer(r.color, 3, 5126, !1, 0, 0)), + le.disableUnusedAttributes(), + ce.drawArrays(4, 0, e.count), + (e.count = 0) + }), + (this.renderBufferDirect = function (e, t, n, r, i, o) { + null === t && (t = U) + var a = i.isMesh && i.matrixWorld.determinant() < 0, + s = Re(e, t, r, i) + j.setMaterial(r, a) + var l = n.index, + c = n.attributes.position + if (null === l) { + if (void 0 === c || 0 === c.count) return + } else if (0 === l.count) return + var u, + h = 1 + !0 === r.wireframe && ((l = Q.getWireframeAttribute(n)), (h = 2)), + (r.morphTargets || r.morphNormals) && ie.update(i, n, r, s), + le.setup(i, r, s, n, l) + var d = oe + null !== l && ((u = Y.get(l)), (d = ae).setIndex(u)) + var p = null !== l ? l.count : c.count, + f = n.drawRange.start * h, + m = n.drawRange.count * h, + v = null !== o ? o.start * h : 0, + g = null !== o ? o.count * h : 1 / 0, + y = Math.max(f, v), + b = Math.min(p, f + m, v + g) - 1, + A = Math.max(0, b - y + 1) + if (0 !== A) { + if (i.isMesh) + !0 === r.wireframe + ? (j.setLineWidth(r.wireframeLinewidth * H()), d.setMode(1)) + : d.setMode(4) + else if (i.isLine) { + var w = r.linewidth + void 0 === w && (w = 1), + j.setLineWidth(w * H()), + i.isLineSegments + ? d.setMode(1) + : i.isLineLoop + ? d.setMode(2) + : d.setMode(3) + } else i.isPoints ? d.setMode(0) : i.isSprite && d.setMode(4) + if (i.isInstancedMesh) d.renderInstances(y, A, i.count) + else if (n.isInstancedBufferGeometry) { + var x = Math.min(n.instanceCount, n._maxInstanceCount) + d.renderInstances(y, A, x) + } else d.render(y, A) + } + }), + (this.compile = function (e, t) { + ;(d = te.get(e)).init(), + e.traverseVisible(function (e) { + e.isLight && + e.layers.test(t.layers) && + (d.pushLight(e), e.castShadow && d.pushShadow(e)) + }), + d.setupLights() + var n = new WeakMap() + e.traverse(function (t) { + var r = t.material + if (r) + if (Array.isArray(r)) + for (var i = 0; i < r.length; i++) { + var o = r[i] + !1 === n.has(o) && (Le(o, e, t), n.set(o)) + } + else !1 === n.has(r) && (Le(r, e, t), n.set(r)) + }) + }) + var xe = null + function Ee(e) { + fe.isPresenting || (xe && xe(e)) + } + var Me = new jo() + function Te(e, t, n, r) { + if (!1 !== e.visible) { + if (e.layers.test(t.layers)) + if (e.isGroup) n = e.renderOrder + else if (e.isLOD) !0 === e.autoUpdate && e.update(t) + else if (e.isLight) d.pushLight(e), e.castShadow && d.pushShadow(e) + else if (e.isSprite) { + if (!e.frustumCulled || I.intersectsSprite(e)) { + r && N.setFromMatrixPosition(e.matrixWorld).applyMatrix4(k) + var i = Z.update(e), + o = e.material + o.visible && h.push(e, i, o, n, N.z, null) + } + } else if (e.isImmediateRenderObject) + r && N.setFromMatrixPosition(e.matrixWorld).applyMatrix4(k), + h.push(e, null, e.material, n, N.z, null) + else if ( + (e.isMesh || e.isLine || e.isPoints) && + (e.isSkinnedMesh && + e.skeleton.frame !== V.render.frame && + (e.skeleton.update(), (e.skeleton.frame = V.render.frame)), + !e.frustumCulled || I.intersectsObject(e)) + ) { + r && N.setFromMatrixPosition(e.matrixWorld).applyMatrix4(k) + var a = Z.update(e), + s = e.material + if (Array.isArray(s)) + for (var l = a.groups, c = 0, u = l.length; c < u; c++) { + var p = l[c], + f = s[p.materialIndex] + f && f.visible && h.push(e, a, f, n, N.z, p) + } + else s.visible && h.push(e, a, s, n, N.z, null) + } + for (var m = e.children, v = 0, g = m.length; v < g; v++) + Te(m[v], t, n, r) + } + } + function Se(e, t, n) { + for ( + var r = !0 === t.isScene ? t.overrideMaterial : null, i = 0, o = e.length; + i < o; + i++ + ) { + var a = e[i], + s = a.object, + l = a.geometry, + c = null === r ? a.material : r, + u = a.group + if (n.isArrayCamera) + for (var h = n.cameras, p = 0, f = h.length; p < f; p++) { + var m = h[p] + s.layers.test(m.layers) && + (j.viewport(E.copy(m.viewport)), + d.setupLightsView(m), + Ce(s, t, m, l, c, u)) + } + else Ce(s, t, n, l, c, u) + } + } + function Ce(e, t, n, r, i, o) { + if ( + (e.onBeforeRender(f, t, n, r, i, o), + e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse, e.matrixWorld), + e.normalMatrix.getNormalMatrix(e.modelViewMatrix), + e.isImmediateRenderObject) + ) { + var a = Re(n, t, i, e) + j.setMaterial(i), le.reset(), we(e, a) + } else f.renderBufferDirect(n, t, r, i, e, o) + e.onAfterRender(f, t, n, r, i, o) + } + function Le(e, t, n) { + !0 !== t.isScene && (t = U) + var r = W.get(e), + i = d.state.lights, + o = d.state.shadowsArray, + a = i.state.version, + s = K.getParameters(e, i.state, o, t, n), + l = K.getProgramCacheKey(s), + c = r.program, + u = !0 + if ( + ((r.environment = e.isMeshStandardMaterial ? t.environment : null), + (r.fog = t.fog), + (r.envMap = X.get(e.envMap || r.environment)), + void 0 === c) + ) + e.addEventListener('dispose', ye) + else if (c.cacheKey !== l) Ae(e) + else if (r.lightsStateVersion !== a) u = !1 + else { + if (void 0 !== s.shaderID) return + u = !1 + } + u && + ((s.uniforms = K.getUniforms(e)), + e.onBeforeCompile(s, f), + (c = K.acquireProgram(s, l)), + (r.program = c), + (r.uniforms = s.uniforms), + (r.outputEncoding = s.outputEncoding)) + var h = r.uniforms + ;((e.isShaderMaterial || e.isRawShaderMaterial) && !0 !== e.clipping) || + ((r.numClippingPlanes = ne.numPlanes), + (r.numIntersection = ne.numIntersection), + (h.clippingPlanes = ne.uniform)), + (r.needsLights = Ie(e)), + (r.lightsStateVersion = a), + r.needsLights && + ((h.ambientLightColor.value = i.state.ambient), + (h.lightProbe.value = i.state.probe), + (h.directionalLights.value = i.state.directional), + (h.directionalLightShadows.value = i.state.directionalShadow), + (h.spotLights.value = i.state.spot), + (h.spotLightShadows.value = i.state.spotShadow), + (h.rectAreaLights.value = i.state.rectArea), + (h.ltc_1.value = i.state.rectAreaLTC1), + (h.ltc_2.value = i.state.rectAreaLTC2), + (h.pointLights.value = i.state.point), + (h.pointLightShadows.value = i.state.pointShadow), + (h.hemisphereLights.value = i.state.hemi), + (h.directionalShadowMap.value = i.state.directionalShadowMap), + (h.directionalShadowMatrix.value = i.state.directionalShadowMatrix), + (h.spotShadowMap.value = i.state.spotShadowMap), + (h.spotShadowMatrix.value = i.state.spotShadowMatrix), + (h.pointShadowMap.value = i.state.pointShadowMap), + (h.pointShadowMatrix.value = i.state.pointShadowMatrix)) + var p = r.program.getUniforms(), + m = ss.seqWithValue(p.seq, h) + r.uniformsList = m + } + function Re(e, t, n, r) { + !0 !== t.isScene && (t = U), q.resetTextureUnits() + var i = t.fog, + o = n.isMeshStandardMaterial ? t.environment : null, + a = null === b ? f.outputEncoding : b.texture.encoding, + s = X.get(n.envMap || o), + l = W.get(n), + c = d.state.lights + if (!0 === B && (!0 === F || e !== x)) { + var u = e === x && n.id === w + ne.setState(n, e, u) + } + n.version === l.__version + ? (n.fog && l.fog !== i) || + l.environment !== o || + (l.needsLights && l.lightsStateVersion !== c.state.version) + ? Le(n, t, r) + : void 0 === l.numClippingPlanes || + (l.numClippingPlanes === ne.numPlanes && + l.numIntersection === ne.numIntersection) + ? (l.outputEncoding !== a || l.envMap !== s) && Le(n, t, r) + : Le(n, t, r) + : (Le(n, t, r), (l.__version = n.version)) + var h = !1, + p = !1, + m = !1, + v = l.program, + g = v.getUniforms(), + y = l.uniforms + if ( + (j.useProgram(v.program) && ((h = !0), (p = !0), (m = !0)), + n.id !== w && ((w = n.id), (p = !0)), + h || x !== e) + ) { + if ( + (g.setValue(ce, 'projectionMatrix', e.projectionMatrix), + z.logarithmicDepthBuffer && + g.setValue(ce, 'logDepthBufFC', 2 / (Math.log(e.far + 1) / Math.LN2)), + x !== e && ((x = e), (p = !0), (m = !0)), + n.isShaderMaterial || + n.isMeshPhongMaterial || + n.isMeshToonMaterial || + n.isMeshStandardMaterial || + n.envMap) + ) { + var A = g.map.cameraPosition + void 0 !== A && A.setValue(ce, N.setFromMatrixPosition(e.matrixWorld)) + } + ;(n.isMeshPhongMaterial || + n.isMeshToonMaterial || + n.isMeshLambertMaterial || + n.isMeshBasicMaterial || + n.isMeshStandardMaterial || + n.isShaderMaterial) && + g.setValue(ce, 'isOrthographic', !0 === e.isOrthographicCamera), + (n.isMeshPhongMaterial || + n.isMeshToonMaterial || + n.isMeshLambertMaterial || + n.isMeshBasicMaterial || + n.isMeshStandardMaterial || + n.isShaderMaterial || + n.isShadowMaterial || + n.skinning) && + g.setValue(ce, 'viewMatrix', e.matrixWorldInverse) + } + if (n.skinning) { + g.setOptional(ce, r, 'bindMatrix'), + g.setOptional(ce, r, 'bindMatrixInverse') + var E = r.skeleton + if (E) { + var M = E.bones + if (z.floatVertexTextures) { + if (null === E.boneTexture) { + var _ = Math.sqrt(4 * M.length) + ;(_ = Kn.ceilPowerOfTwo(_)), (_ = Math.max(_, 4)) + var T = new Float32Array(_ * _ * 4) + T.set(E.boneMatrices) + var L = new Uo(T, _, _, Ue, Pe) + ;(E.boneMatrices = T), (E.boneTexture = L), (E.boneTextureSize = _) + } + g.setValue(ce, 'boneTexture', E.boneTexture, q), + g.setValue(ce, 'boneTextureSize', E.boneTextureSize) + } else g.setOptional(ce, E, 'boneMatrices') + } + } + return ( + (p || l.receiveShadow !== r.receiveShadow) && + ((l.receiveShadow = r.receiveShadow), + g.setValue(ce, 'receiveShadow', r.receiveShadow)), + p && + (g.setValue(ce, 'toneMappingExposure', f.toneMappingExposure), + l.needsLights && Oe(y, m), + i && n.fog && J.refreshFogUniforms(y, i), + J.refreshMaterialUniforms(y, n, C, S), + ss.upload(ce, l.uniformsList, y, q)), + n.isShaderMaterial && + !0 === n.uniformsNeedUpdate && + (ss.upload(ce, l.uniformsList, y, q), (n.uniformsNeedUpdate = !1)), + n.isSpriteMaterial && g.setValue(ce, 'center', r.center), + g.setValue(ce, 'modelViewMatrix', r.modelViewMatrix), + g.setValue(ce, 'normalMatrix', r.normalMatrix), + g.setValue(ce, 'modelMatrix', r.matrixWorld), + v + ) + } + function Oe(e, t) { + ;(e.ambientLightColor.needsUpdate = t), + (e.lightProbe.needsUpdate = t), + (e.directionalLights.needsUpdate = t), + (e.directionalLightShadows.needsUpdate = t), + (e.pointLights.needsUpdate = t), + (e.pointLightShadows.needsUpdate = t), + (e.spotLights.needsUpdate = t), + (e.spotLightShadows.needsUpdate = t), + (e.rectAreaLights.needsUpdate = t), + (e.hemisphereLights.needsUpdate = t) + } + function Ie(e) { + return ( + e.isMeshLambertMaterial || + e.isMeshToonMaterial || + e.isMeshPhongMaterial || + e.isMeshStandardMaterial || + e.isShadowMaterial || + (e.isShaderMaterial && !0 === e.lights) + ) + } + Me.setAnimationLoop(Ee), + 'undefined' !== typeof window && Me.setContext(window), + (this.setAnimationLoop = function (e) { + ;(xe = e), fe.setAnimationLoop(e), null === e ? Me.stop() : Me.start() + }), + (this.render = function (e, t) { + var n, r + if ( + (void 0 !== arguments[2] && + (console.warn( + 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.', + ), + (n = arguments[2])), + void 0 !== arguments[3] && + (console.warn( + 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.', + ), + (r = arguments[3])), + void 0 === t || !0 === t.isCamera) + ) { + if (!0 !== m) { + le.resetDefaultState(), + (w = -1), + (x = null), + !0 === e.autoUpdate && e.updateMatrixWorld(), + null === t.parent && t.updateMatrixWorld(), + !0 === fe.enabled && + !0 === fe.isPresenting && + (t = fe.getCamera(t)), + !0 === e.isScene && e.onBeforeRender(f, e, t, n || b), + (d = te.get(e, p.length)).init(), + p.push(d), + k.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), + I.setFromProjectionMatrix(k), + (F = this.localClippingEnabled), + (B = ne.init(this.clippingPlanes, F, t)), + (h = ee.get(e, t)).init(), + Te(e, t, 0, f.sortObjects), + h.finish(), + !0 === f.sortObjects && h.sort(L, R), + !0 === B && ne.beginShadows() + var i = d.state.shadowsArray + me.render(i, e, t), + d.setupLights(), + d.setupLightsView(t), + !0 === B && ne.endShadows(), + !0 === this.info.autoReset && this.info.reset(), + void 0 !== n && this.setRenderTarget(n), + re.render(h, e, t, r) + var o = h.opaque, + a = h.transparent + o.length > 0 && Se(o, e, t), + a.length > 0 && Se(a, e, t), + !0 === e.isScene && e.onAfterRender(f, e, t), + null !== b && + (q.updateRenderTargetMipmap(b), + q.updateMultisampleRenderTarget(b)), + j.buffers.depth.setTest(!0), + j.buffers.depth.setMask(!0), + j.buffers.color.setMask(!0), + j.setPolygonOffset(!1), + fe.enabled && fe.submitFrame && fe.submitFrame(), + p.pop(), + (d = p.length > 0 ? p[p.length - 1] : null), + (h = null) + } + } else + console.error( + 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.', + ) + }), + (this.setTexture2D = (function () { + var e = !1 + return function (t, n) { + t && + t.isWebGLRenderTarget && + (e || + (console.warn( + "THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead.", + ), + (e = !0)), + (t = t.texture)), + q.setTexture2D(t, n) + } + })()), + (this.setFramebuffer = function (e) { + v !== e && null === b && ce.bindFramebuffer(36160, e), (v = e) + }), + (this.getActiveCubeFace = function () { + return g + }), + (this.getActiveMipmapLevel = function () { + return y + }), + (this.getRenderList = function () { + return h + }), + (this.setRenderList = function (e) { + h = e + }), + (this.getRenderTarget = function () { + return b + }), + (this.setRenderTarget = function (e, t, n) { + void 0 === t && (t = 0), + void 0 === n && (n = 0), + (b = e), + (g = t), + (y = n), + e && void 0 === W.get(e).__webglFramebuffer && q.setupRenderTarget(e) + var r = v, + i = !1 + if (e) { + var o = W.get(e).__webglFramebuffer + e.isWebGLCubeRenderTarget + ? ((r = o[t]), (i = !0)) + : (r = e.isWebGLMultisampleRenderTarget + ? W.get(e).__webglMultisampledFramebuffer + : o), + E.copy(e.viewport), + M.copy(e.scissor), + (_ = e.scissorTest) + } else + E.copy(P).multiplyScalar(C).floor(), + M.copy(D).multiplyScalar(C).floor(), + (_ = O) + if ( + (A !== r && (ce.bindFramebuffer(36160, r), (A = r)), + j.viewport(E), + j.scissor(M), + j.setScissorTest(_), + i) + ) { + var a = W.get(e.texture) + ce.framebufferTexture2D(36160, 36064, 34069 + t, a.__webglTexture, n) + } + }), + (this.readRenderTargetPixels = function (e, t, n, r, i, o, a) { + if (e && e.isWebGLRenderTarget) { + var s = W.get(e).__webglFramebuffer + if ((e.isWebGLCubeRenderTarget && void 0 !== a && (s = s[a]), s)) { + var l = !1 + s !== A && (ce.bindFramebuffer(36160, s), (l = !0)) + try { + var c = e.texture, + u = c.format, + h = c.type + if (u !== Ue && se.convert(u) !== ce.getParameter(35739)) + return void console.error( + 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.', + ) + var d = + h === De && + (G.has('EXT_color_buffer_half_float') || + (z.isWebGL2 && G.has('EXT_color_buffer_float'))) + if ( + h !== _e && + se.convert(h) !== ce.getParameter(35738) && + (h !== Pe || + !( + z.isWebGL2 || + G.has('OES_texture_float') || + G.has('WEBGL_color_buffer_float') + )) && + !d + ) + return void console.error( + 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.', + ) + 36053 === ce.checkFramebufferStatus(36160) + ? t >= 0 && + t <= e.width - r && + n >= 0 && + n <= e.height - i && + ce.readPixels(t, n, r, i, se.convert(u), se.convert(h), o) + : console.error( + 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.', + ) + } finally { + l && ce.bindFramebuffer(36160, A) + } + } + } else + console.error( + 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.', + ) + }), + (this.copyFramebufferToTexture = function (e, t, n) { + void 0 === n && (n = 0) + var r = Math.pow(2, -n), + i = Math.floor(t.image.width * r), + o = Math.floor(t.image.height * r), + a = se.convert(t.format) + q.setTexture2D(t, 0), + ce.copyTexImage2D(3553, n, a, e.x, e.y, i, o, 0), + j.unbindTexture() + }), + (this.copyTextureToTexture = function (e, t, n, r) { + void 0 === r && (r = 0) + var i = t.image.width, + o = t.image.height, + a = se.convert(n.format), + s = se.convert(n.type) + q.setTexture2D(n, 0), + ce.pixelStorei(37440, n.flipY), + ce.pixelStorei(37441, n.premultiplyAlpha), + ce.pixelStorei(3317, n.unpackAlignment), + t.isDataTexture + ? ce.texSubImage2D(3553, r, e.x, e.y, i, o, a, s, t.image.data) + : t.isCompressedTexture + ? ce.compressedTexSubImage2D( + 3553, + r, + e.x, + e.y, + t.mipmaps[0].width, + t.mipmaps[0].height, + a, + t.mipmaps[0].data, + ) + : ce.texSubImage2D(3553, r, e.x, e.y, a, s, t.image), + 0 === r && n.generateMipmaps && ce.generateMipmap(3553), + j.unbindTexture() + }), + (this.initTexture = function (e) { + q.setTexture2D(e, 0), j.unbindTexture() + }), + (this.resetState = function () { + j.reset(), le.reset() + }), + 'undefined' !== typeof __THREE_DEVTOOLS__ && + __THREE_DEVTOOLS__.dispatchEvent( + new CustomEvent('observe', { detail: this }), + ) + } + function fl(e) { + pl.call(this, e) + } + Object.assign(ll.prototype, qn.prototype), + Object.assign(cl.prototype, { + constructor: cl, + getHandSpace: function () { + return ( + null === this._hand && + ((this._hand = new rl()), + (this._hand.matrixAutoUpdate = !1), + (this._hand.visible = !1), + (this._hand.joints = {}), + (this._hand.inputState = { pinching: !1 })), + this._hand + ) + }, + getTargetRaySpace: function () { + return ( + null === this._targetRay && + ((this._targetRay = new rl()), + (this._targetRay.matrixAutoUpdate = !1), + (this._targetRay.visible = !1)), + this._targetRay + ) + }, + getGripSpace: function () { + return ( + null === this._grip && + ((this._grip = new rl()), + (this._grip.matrixAutoUpdate = !1), + (this._grip.visible = !1)), + this._grip + ) + }, + dispatchEvent: function (e) { + return ( + null !== this._targetRay && this._targetRay.dispatchEvent(e), + null !== this._grip && this._grip.dispatchEvent(e), + null !== this._hand && this._hand.dispatchEvent(e), + this + ) + }, + disconnect: function (e) { + return ( + this.dispatchEvent({ type: 'disconnected', data: e }), + null !== this._targetRay && (this._targetRay.visible = !1), + null !== this._grip && (this._grip.visible = !1), + null !== this._hand && (this._hand.visible = !1), + this + ) + }, + update: function (e, t, n) { + var r = null, + i = null, + o = null, + a = this._targetRay, + s = this._grip, + l = this._hand + if (e && 'visible-blurred' !== t.session.visibilityState) + if (l && e.hand) { + o = !0 + for (var c, u = Wn(e.hand.values()); !(c = u()).done; ) { + var h = c.value, + d = t.getJointPose(h, n) + if (void 0 === l.joints[h.jointName]) { + var p = new rl() + ;(p.matrixAutoUpdate = !1), + (p.visible = !1), + (l.joints[h.jointName] = p), + l.add(p) + } + var f = l.joints[h.jointName] + null !== d && + (f.matrix.fromArray(d.transform.matrix), + f.matrix.decompose(f.position, f.rotation, f.scale), + (f.jointRadius = d.radius)), + (f.visible = null !== d) + } + var m = l.joints['index-finger-tip'], + v = l.joints['thumb-tip'], + g = m.position.distanceTo(v.position), + y = 0.02, + b = 0.005 + l.inputState.pinching && g > y + b + ? ((l.inputState.pinching = !1), + this.dispatchEvent({ + type: 'pinchend', + handedness: e.handedness, + target: this, + })) + : !l.inputState.pinching && + g <= y - b && + ((l.inputState.pinching = !0), + this.dispatchEvent({ + type: 'pinchstart', + handedness: e.handedness, + target: this, + })) + } else + null !== a && + null !== (r = t.getPose(e.targetRaySpace, n)) && + (a.matrix.fromArray(r.transform.matrix), + a.matrix.decompose(a.position, a.rotation, a.scale)), + null !== s && + e.gripSpace && + null !== (i = t.getPose(e.gripSpace, n)) && + (s.matrix.fromArray(i.transform.matrix), + s.matrix.decompose(s.position, s.rotation, s.scale)) + return ( + null !== a && (a.visible = null !== r), + null !== s && (s.visible = null !== i), + null !== l && (l.visible = null !== o), + this + ) + }, + }), + Object.assign(ul.prototype, qn.prototype), + (fl.prototype = Object.assign(Object.create(pl.prototype), { + constructor: fl, + isWebGL1Renderer: !0, + })) + var ml = (function () { + function e(e, t) { + Object.defineProperty(this, 'isFogExp2', { value: !0 }), + (this.name = ''), + (this.color = new Li(e)), + (this.density = void 0 !== t ? t : 25e-5) + } + var t = e.prototype + return ( + (t.clone = function () { + return new e(this.color, this.density) + }), + (t.toJSON = function () { + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density, + } + }), + e + ) + })(), + vl = (function () { + function e(e, t, n) { + Object.defineProperty(this, 'isFog', { value: !0 }), + (this.name = ''), + (this.color = new Li(e)), + (this.near = void 0 !== t ? t : 1), + (this.far = void 0 !== n ? n : 1e3) + } + var t = e.prototype + return ( + (t.clone = function () { + return new e(this.color, this.near, this.far) + }), + (t.toJSON = function () { + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far, + } + }), + e + ) + })(), + gl = (function (e) { + function t() { + var t + return ( + (t = e.call(this) || this), + Object.defineProperty(zn(t), 'isScene', { value: !0 }), + (t.type = 'Scene'), + (t.background = null), + (t.environment = null), + (t.fog = null), + (t.overrideMaterial = null), + (t.autoUpdate = !0), + 'undefined' !== typeof __THREE_DEVTOOLS__ && + __THREE_DEVTOOLS__.dispatchEvent( + new CustomEvent('observe', { detail: zn(t) }), + ), + t + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.copy = function (t, n) { + return ( + e.prototype.copy.call(this, t, n), + null !== t.background && (this.background = t.background.clone()), + null !== t.environment && (this.environment = t.environment.clone()), + null !== t.fog && (this.fog = t.fog.clone()), + null !== t.overrideMaterial && + (this.overrideMaterial = t.overrideMaterial.clone()), + (this.autoUpdate = t.autoUpdate), + (this.matrixAutoUpdate = t.matrixAutoUpdate), + this + ) + }), + (n.toJSON = function (t) { + var n = e.prototype.toJSON.call(this, t) + return ( + null !== this.background && + (n.object.background = this.background.toJSON(t)), + null !== this.environment && + (n.object.environment = this.environment.toJSON(t)), + null !== this.fog && (n.object.fog = this.fog.toJSON()), + n + ) + }), + t + ) + })(si) + function yl(e, t) { + ;(this.array = e), + (this.stride = t), + (this.count = void 0 !== e ? e.length / t : 0), + (this.usage = Tn), + (this.updateRange = { offset: 0, count: -1 }), + (this.version = 0), + (this.uuid = Kn.generateUUID()) + } + Object.defineProperty(yl.prototype, 'needsUpdate', { + set: function (e) { + !0 === e && this.version++ + }, + }), + Object.assign(yl.prototype, { + isInterleavedBuffer: !0, + onUploadCallback: function () {}, + setUsage: function (e) { + return (this.usage = e), this + }, + copy: function (e) { + return ( + (this.array = new e.array.constructor(e.array)), + (this.count = e.count), + (this.stride = e.stride), + (this.usage = e.usage), + this + ) + }, + copyAt: function (e, t, n) { + ;(e *= this.stride), (n *= t.stride) + for (var r = 0, i = this.stride; r < i; r++) + this.array[e + r] = t.array[n + r] + return this + }, + set: function (e, t) { + return void 0 === t && (t = 0), this.array.set(e, t), this + }, + clone: function (e) { + void 0 === e.arrayBuffers && (e.arrayBuffers = {}), + void 0 === this.array.buffer._uuid && + (this.array.buffer._uuid = Kn.generateUUID()), + void 0 === e.arrayBuffers[this.array.buffer._uuid] && + (e.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer) + var t = new yl( + new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]), + this.stride, + ) + return t.setUsage(this.usage), t + }, + onUpload: function (e) { + return (this.onUploadCallback = e), this + }, + toJSON: function (e) { + return ( + void 0 === e.arrayBuffers && (e.arrayBuffers = {}), + void 0 === this.array.buffer._uuid && + (this.array.buffer._uuid = Kn.generateUUID()), + void 0 === e.arrayBuffers[this.array.buffer._uuid] && + (e.arrayBuffers[this.array.buffer._uuid] = Array.prototype.slice.call( + new Uint32Array(this.array.buffer), + )), + { + uuid: this.uuid, + buffer: this.array.buffer._uuid, + type: this.array.constructor.name, + stride: this.stride, + } + ) + }, + }) + var bl, + Al = new lr() + function wl(e, t, n, r) { + ;(this.name = ''), + (this.data = e), + (this.itemSize = t), + (this.offset = n), + (this.normalized = !0 === r) + } + function xl(e) { + Di.call(this), + (this.type = 'SpriteMaterial'), + (this.color = new Li(16777215)), + (this.map = null), + (this.alphaMap = null), + (this.rotation = 0), + (this.sizeAttenuation = !0), + (this.transparent = !0), + this.setValues(e) + } + Object.defineProperties(wl.prototype, { + count: { + get: function () { + return this.data.count + }, + }, + array: { + get: function () { + return this.data.array + }, + }, + needsUpdate: { + set: function (e) { + this.data.needsUpdate = e + }, + }, + }), + Object.assign(wl.prototype, { + isInterleavedBufferAttribute: !0, + applyMatrix4: function (e) { + for (var t = 0, n = this.data.count; t < n; t++) + (Al.x = this.getX(t)), + (Al.y = this.getY(t)), + (Al.z = this.getZ(t)), + Al.applyMatrix4(e), + this.setXYZ(t, Al.x, Al.y, Al.z) + return this + }, + setX: function (e, t) { + return (this.data.array[e * this.data.stride + this.offset] = t), this + }, + setY: function (e, t) { + return (this.data.array[e * this.data.stride + this.offset + 1] = t), this + }, + setZ: function (e, t) { + return (this.data.array[e * this.data.stride + this.offset + 2] = t), this + }, + setW: function (e, t) { + return (this.data.array[e * this.data.stride + this.offset + 3] = t), this + }, + getX: function (e) { + return this.data.array[e * this.data.stride + this.offset] + }, + getY: function (e) { + return this.data.array[e * this.data.stride + this.offset + 1] + }, + getZ: function (e) { + return this.data.array[e * this.data.stride + this.offset + 2] + }, + getW: function (e) { + return this.data.array[e * this.data.stride + this.offset + 3] + }, + setXY: function (e, t, n) { + return ( + (e = e * this.data.stride + this.offset), + (this.data.array[e + 0] = t), + (this.data.array[e + 1] = n), + this + ) + }, + setXYZ: function (e, t, n, r) { + return ( + (e = e * this.data.stride + this.offset), + (this.data.array[e + 0] = t), + (this.data.array[e + 1] = n), + (this.data.array[e + 2] = r), + this + ) + }, + setXYZW: function (e, t, n, r, i) { + return ( + (e = e * this.data.stride + this.offset), + (this.data.array[e + 0] = t), + (this.data.array[e + 1] = n), + (this.data.array[e + 2] = r), + (this.data.array[e + 3] = i), + this + ) + }, + clone: function (e) { + if (void 0 === e) { + console.log( + 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.', + ) + for (var t = [], n = 0; n < this.count; n++) + for ( + var r = n * this.data.stride + this.offset, i = 0; + i < this.itemSize; + i++ + ) + t.push(this.data.array[r + i]) + return new Fi( + new this.array.constructor(t), + this.itemSize, + this.normalized, + ) + } + return ( + void 0 === e.interleavedBuffers && (e.interleavedBuffers = {}), + void 0 === e.interleavedBuffers[this.data.uuid] && + (e.interleavedBuffers[this.data.uuid] = this.data.clone(e)), + new wl( + e.interleavedBuffers[this.data.uuid], + this.itemSize, + this.offset, + this.normalized, + ) + ) + }, + toJSON: function (e) { + if (void 0 === e) { + console.log( + 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.', + ) + for (var t = [], n = 0; n < this.count; n++) + for ( + var r = n * this.data.stride + this.offset, i = 0; + i < this.itemSize; + i++ + ) + t.push(this.data.array[r + i]) + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: t, + normalized: this.normalized, + } + } + return ( + void 0 === e.interleavedBuffers && (e.interleavedBuffers = {}), + void 0 === e.interleavedBuffers[this.data.uuid] && + (e.interleavedBuffers[this.data.uuid] = this.data.toJSON(e)), + { + isInterleavedBufferAttribute: !0, + itemSize: this.itemSize, + data: this.data.uuid, + offset: this.offset, + normalized: this.normalized, + } + ) + }, + }), + (xl.prototype = Object.create(Di.prototype)), + (xl.prototype.constructor = xl), + (xl.prototype.isSpriteMaterial = !0), + (xl.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.map = e.map), + (this.alphaMap = e.alphaMap), + (this.rotation = e.rotation), + (this.sizeAttenuation = e.sizeAttenuation), + this + ) + }) + var El = new lr(), + Ml = new lr(), + _l = new lr(), + Tl = new Jn(), + Sl = new Jn(), + Cl = new Fr(), + Ll = new lr(), + Rl = new lr(), + Pl = new lr(), + Dl = new Jn(), + Ol = new Jn(), + Il = new Jn() + function Bl(e) { + if ((si.call(this), (this.type = 'Sprite'), void 0 === bl)) { + bl = new ro() + var t = new yl( + new Float32Array([ + -0.5, -0.5, 0, 0, 0, 0.5, -0.5, 0, 1, 0, 0.5, 0.5, 0, 1, 1, -0.5, 0.5, + 0, 0, 1, + ]), + 5, + ) + bl.setIndex([0, 1, 2, 0, 2, 3]), + bl.setAttribute('position', new wl(t, 3, 0, !1)), + bl.setAttribute('uv', new wl(t, 2, 3, !1)) + } + ;(this.geometry = bl), + (this.material = void 0 !== e ? e : new xl()), + (this.center = new Jn(0.5, 0.5)) + } + function Fl(e, t, n, r, i, o) { + Tl.subVectors(e, n).addScalar(0.5).multiply(r), + void 0 !== i + ? ((Sl.x = o * Tl.x - i * Tl.y), (Sl.y = i * Tl.x + o * Tl.y)) + : Sl.copy(Tl), + e.copy(t), + (e.x += Sl.x), + (e.y += Sl.y), + e.applyMatrix4(Cl) + } + Bl.prototype = Object.assign(Object.create(si.prototype), { + constructor: Bl, + isSprite: !0, + raycast: function (e, t) { + null === e.camera && + console.error( + 'THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.', + ), + Ml.setFromMatrixScale(this.matrixWorld), + Cl.copy(e.camera.matrixWorld), + this.modelViewMatrix.multiplyMatrices( + e.camera.matrixWorldInverse, + this.matrixWorld, + ), + _l.setFromMatrixPosition(this.modelViewMatrix), + e.camera.isPerspectiveCamera && + !1 === this.material.sizeAttenuation && + Ml.multiplyScalar(-_l.z) + var n, + r, + i = this.material.rotation + 0 !== i && ((r = Math.cos(i)), (n = Math.sin(i))) + var o = this.center + Fl(Ll.set(-0.5, -0.5, 0), _l, o, Ml, n, r), + Fl(Rl.set(0.5, -0.5, 0), _l, o, Ml, n, r), + Fl(Pl.set(0.5, 0.5, 0), _l, o, Ml, n, r), + Dl.set(0, 0), + Ol.set(1, 0), + Il.set(1, 1) + var a = e.ray.intersectTriangle(Ll, Rl, Pl, !1, El) + if ( + null !== a || + (Fl(Rl.set(-0.5, 0.5, 0), _l, o, Ml, n, r), + Ol.set(0, 1), + null !== (a = e.ray.intersectTriangle(Ll, Pl, Rl, !1, El))) + ) { + var s = e.ray.origin.distanceTo(El) + s < e.near || + s > e.far || + t.push({ + distance: s, + point: El.clone(), + uv: xi.getUV(El, Ll, Rl, Pl, Dl, Ol, Il, new Jn()), + face: null, + object: this, + }) + } + }, + copy: function (e) { + return ( + si.prototype.copy.call(this, e), + void 0 !== e.center && this.center.copy(e.center), + (this.material = e.material), + this + ) + }, + }) + var kl = new lr(), + Nl = new lr() + function Ul() { + si.call(this), + (this._currentLevel = 0), + (this.type = 'LOD'), + Object.defineProperties(this, { levels: { enumerable: !0, value: [] } }), + (this.autoUpdate = !0) + } + Ul.prototype = Object.assign(Object.create(si.prototype), { + constructor: Ul, + isLOD: !0, + copy: function (e) { + si.prototype.copy.call(this, e, !1) + for (var t = e.levels, n = 0, r = t.length; n < r; n++) { + var i = t[n] + this.addLevel(i.object.clone(), i.distance) + } + return (this.autoUpdate = e.autoUpdate), this + }, + addLevel: function (e, t) { + void 0 === t && (t = 0), (t = Math.abs(t)) + var n, + r = this.levels + for (n = 0; n < r.length && !(t < r[n].distance); n++); + return r.splice(n, 0, { distance: t, object: e }), this.add(e), this + }, + getCurrentLevel: function () { + return this._currentLevel + }, + getObjectForDistance: function (e) { + var t = this.levels + if (t.length > 0) { + var n, r + for (n = 1, r = t.length; n < r && !(e < t[n].distance); n++); + return t[n - 1].object + } + return null + }, + raycast: function (e, t) { + if (this.levels.length > 0) { + kl.setFromMatrixPosition(this.matrixWorld) + var n = e.ray.origin.distanceTo(kl) + this.getObjectForDistance(n).raycast(e, t) + } + }, + update: function (e) { + var t = this.levels + if (t.length > 1) { + kl.setFromMatrixPosition(e.matrixWorld), + Nl.setFromMatrixPosition(this.matrixWorld) + var n, + r, + i = kl.distanceTo(Nl) / e.zoom + for ( + t[0].object.visible = !0, n = 1, r = t.length; + n < r && i >= t[n].distance; + n++ + ) + (t[n - 1].object.visible = !1), (t[n].object.visible = !0) + for (this._currentLevel = n - 1; n < r; n++) t[n].object.visible = !1 + } + }, + toJSON: function (e) { + var t = si.prototype.toJSON.call(this, e) + !1 === this.autoUpdate && (t.object.autoUpdate = !1), (t.object.levels = []) + for (var n = this.levels, r = 0, i = n.length; r < i; r++) { + var o = n[r] + t.object.levels.push({ object: o.object.uuid, distance: o.distance }) + } + return t + }, + }) + var Hl = new lr(), + Gl = new ir(), + zl = new ir(), + jl = new lr(), + Vl = new Fr() + function Wl(e, t) { + e && + e.isGeometry && + console.error( + 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ), + xo.call(this, e, t), + (this.type = 'SkinnedMesh'), + (this.bindMode = 'attached'), + (this.bindMatrix = new Fr()), + (this.bindMatrixInverse = new Fr()) + } + function ql() { + si.call(this), (this.type = 'Bone') + } + ;(Wl.prototype = Object.assign(Object.create(xo.prototype), { + constructor: Wl, + isSkinnedMesh: !0, + copy: function (e) { + return ( + xo.prototype.copy.call(this, e), + (this.bindMode = e.bindMode), + this.bindMatrix.copy(e.bindMatrix), + this.bindMatrixInverse.copy(e.bindMatrixInverse), + (this.skeleton = e.skeleton), + this + ) + }, + bind: function (e, t) { + ;(this.skeleton = e), + void 0 === t && + (this.updateMatrixWorld(!0), + this.skeleton.calculateInverses(), + (t = this.matrixWorld)), + this.bindMatrix.copy(t), + this.bindMatrixInverse.copy(t).invert() + }, + pose: function () { + this.skeleton.pose() + }, + normalizeSkinWeights: function () { + for ( + var e = new ir(), + t = this.geometry.attributes.skinWeight, + n = 0, + r = t.count; + n < r; + n++ + ) { + ;(e.x = t.getX(n)), + (e.y = t.getY(n)), + (e.z = t.getZ(n)), + (e.w = t.getW(n)) + var i = 1 / e.manhattanLength() + i !== 1 / 0 ? e.multiplyScalar(i) : e.set(1, 0, 0, 0), + t.setXYZW(n, e.x, e.y, e.z, e.w) + } + }, + updateMatrixWorld: function (e) { + xo.prototype.updateMatrixWorld.call(this, e), + 'attached' === this.bindMode + ? this.bindMatrixInverse.copy(this.matrixWorld).invert() + : 'detached' === this.bindMode + ? this.bindMatrixInverse.copy(this.bindMatrix).invert() + : console.warn( + 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode, + ) + }, + boneTransform: function (e, t) { + var n = this.skeleton, + r = this.geometry + Gl.fromBufferAttribute(r.attributes.skinIndex, e), + zl.fromBufferAttribute(r.attributes.skinWeight, e), + Hl.fromBufferAttribute(r.attributes.position, e).applyMatrix4( + this.bindMatrix, + ), + t.set(0, 0, 0) + for (var i = 0; i < 4; i++) { + var o = zl.getComponent(i) + if (0 !== o) { + var a = Gl.getComponent(i) + Vl.multiplyMatrices(n.bones[a].matrixWorld, n.boneInverses[a]), + t.addScaledVector(jl.copy(Hl).applyMatrix4(Vl), o) + } + } + return t.applyMatrix4(this.bindMatrixInverse) + }, + })), + (ql.prototype = Object.assign(Object.create(si.prototype), { + constructor: ql, + isBone: !0, + })) + var Xl = new Fr(), + Yl = new Fr() + function Ql(e, t) { + void 0 === e && (e = []), + void 0 === t && (t = []), + (this.uuid = Kn.generateUUID()), + (this.bones = e.slice(0)), + (this.boneInverses = t), + (this.boneMatrices = null), + (this.boneTexture = null), + (this.boneTextureSize = 0), + (this.frame = -1), + this.init() + } + Object.assign(Ql.prototype, { + init: function () { + var e = this.bones, + t = this.boneInverses + if (((this.boneMatrices = new Float32Array(16 * e.length)), 0 === t.length)) + this.calculateInverses() + else if (e.length !== t.length) { + console.warn( + 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.', + ), + (this.boneInverses = []) + for (var n = 0, r = this.bones.length; n < r; n++) + this.boneInverses.push(new Fr()) + } + }, + calculateInverses: function () { + this.boneInverses.length = 0 + for (var e = 0, t = this.bones.length; e < t; e++) { + var n = new Fr() + this.bones[e] && n.copy(this.bones[e].matrixWorld).invert(), + this.boneInverses.push(n) + } + }, + pose: function () { + for (var e = 0, t = this.bones.length; e < t; e++) { + var n = this.bones[e] + n && n.matrixWorld.copy(this.boneInverses[e]).invert() + } + for (var r = 0, i = this.bones.length; r < i; r++) { + var o = this.bones[r] + o && + (o.parent && o.parent.isBone + ? (o.matrix.copy(o.parent.matrixWorld).invert(), + o.matrix.multiply(o.matrixWorld)) + : o.matrix.copy(o.matrixWorld), + o.matrix.decompose(o.position, o.quaternion, o.scale)) + } + }, + update: function () { + for ( + var e = this.bones, + t = this.boneInverses, + n = this.boneMatrices, + r = this.boneTexture, + i = 0, + o = e.length; + i < o; + i++ + ) { + var a = e[i] ? e[i].matrixWorld : Yl + Xl.multiplyMatrices(a, t[i]), Xl.toArray(n, 16 * i) + } + null !== r && (r.needsUpdate = !0) + }, + clone: function () { + return new Ql(this.bones, this.boneInverses) + }, + getBoneByName: function (e) { + for (var t = 0, n = this.bones.length; t < n; t++) { + var r = this.bones[t] + if (r.name === e) return r + } + }, + dispose: function () { + null !== this.boneTexture && + (this.boneTexture.dispose(), (this.boneTexture = null)) + }, + fromJSON: function (e, t) { + this.uuid = e.uuid + for (var n = 0, r = e.bones.length; n < r; n++) { + var i = e.bones[n], + o = t[i] + void 0 === o && + (console.warn('THREE.Skeleton: No bone found with UUID:', i), + (o = new ql())), + this.bones.push(o), + this.boneInverses.push(new Fr().fromArray(e.boneInverses[n])) + } + return this.init(), this + }, + toJSON: function () { + var e = { + metadata: { + version: 4.5, + type: 'Skeleton', + generator: 'Skeleton.toJSON', + }, + bones: [], + boneInverses: [], + } + e.uuid = this.uuid + for ( + var t = this.bones, n = this.boneInverses, r = 0, i = t.length; + r < i; + r++ + ) { + var o = t[r] + e.bones.push(o.uuid) + var a = n[r] + e.boneInverses.push(a.toArray()) + } + return e + }, + }) + var Zl = new Fr(), + Kl = new Fr(), + Jl = [], + $l = new xo() + function ec(e, t, n) { + xo.call(this, e, t), + (this.instanceMatrix = new Fi(new Float32Array(16 * n), 16)), + (this.instanceColor = null), + (this.count = n), + (this.frustumCulled = !1) + } + function tc(e) { + Di.call(this), + (this.type = 'LineBasicMaterial'), + (this.color = new Li(16777215)), + (this.linewidth = 1), + (this.linecap = 'round'), + (this.linejoin = 'round'), + (this.morphTargets = !1), + this.setValues(e) + } + ;(ec.prototype = Object.assign(Object.create(xo.prototype), { + constructor: ec, + isInstancedMesh: !0, + copy: function (e) { + return ( + xo.prototype.copy.call(this, e), + this.instanceMatrix.copy(e.instanceMatrix), + null !== e.instanceColor && + (this.instanceColor = e.instanceColor.clone()), + (this.count = e.count), + this + ) + }, + getColorAt: function (e, t) { + t.fromArray(this.instanceColor.array, 3 * e) + }, + getMatrixAt: function (e, t) { + t.fromArray(this.instanceMatrix.array, 16 * e) + }, + raycast: function (e, t) { + var n = this.matrixWorld, + r = this.count + if ( + (($l.geometry = this.geometry), + ($l.material = this.material), + void 0 !== $l.material) + ) + for (var i = 0; i < r; i++) { + this.getMatrixAt(i, Zl), + Kl.multiplyMatrices(n, Zl), + ($l.matrixWorld = Kl), + $l.raycast(e, Jl) + for (var o = 0, a = Jl.length; o < a; o++) { + var s = Jl[o] + ;(s.instanceId = i), (s.object = this), t.push(s) + } + Jl.length = 0 + } + }, + setColorAt: function (e, t) { + null === this.instanceColor && + (this.instanceColor = new Fi(new Float32Array(3 * this.count), 3)), + t.toArray(this.instanceColor.array, 3 * e) + }, + setMatrixAt: function (e, t) { + t.toArray(this.instanceMatrix.array, 16 * e) + }, + updateMorphTargets: function () {}, + dispose: function () { + this.dispatchEvent({ type: 'dispose' }) + }, + })), + (tc.prototype = Object.create(Di.prototype)), + (tc.prototype.constructor = tc), + (tc.prototype.isLineBasicMaterial = !0), + (tc.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.linewidth = e.linewidth), + (this.linecap = e.linecap), + (this.linejoin = e.linejoin), + (this.morphTargets = e.morphTargets), + this + ) + }) + var nc = new lr(), + rc = new lr(), + ic = new Fr(), + oc = new Br(), + ac = new Sr() + function sc(e, t) { + void 0 === e && (e = new ro()), + void 0 === t && (t = new tc()), + si.call(this), + (this.type = 'Line'), + (this.geometry = e), + (this.material = t), + this.updateMorphTargets() + } + sc.prototype = Object.assign(Object.create(si.prototype), { + constructor: sc, + isLine: !0, + copy: function (e) { + return ( + si.prototype.copy.call(this, e), + (this.material = e.material), + (this.geometry = e.geometry), + this + ) + }, + computeLineDistances: function () { + var e = this.geometry + if (e.isBufferGeometry) + if (null === e.index) { + for ( + var t = e.attributes.position, n = [0], r = 1, i = t.count; + r < i; + r++ + ) + nc.fromBufferAttribute(t, r - 1), + rc.fromBufferAttribute(t, r), + (n[r] = n[r - 1]), + (n[r] += nc.distanceTo(rc)) + e.setAttribute('lineDistance', new Wi(n, 1)) + } else + console.warn( + 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.', + ) + else + e.isGeometry && + console.error( + 'THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + return this + }, + raycast: function (e, t) { + var n = this.geometry, + r = this.matrixWorld, + i = e.params.Line.threshold + if ( + (null === n.boundingSphere && n.computeBoundingSphere(), + ac.copy(n.boundingSphere), + ac.applyMatrix4(r), + (ac.radius += i), + !1 !== e.ray.intersectsSphere(ac)) + ) { + ic.copy(r).invert(), oc.copy(e.ray).applyMatrix4(ic) + var o = i / ((this.scale.x + this.scale.y + this.scale.z) / 3), + a = o * o, + s = new lr(), + l = new lr(), + c = new lr(), + u = new lr(), + h = this.isLineSegments ? 2 : 1 + if (n.isBufferGeometry) { + var d = n.index, + p = n.attributes.position + if (null !== d) + for (var f = d.array, m = 0, v = f.length - 1; m < v; m += h) { + var g = f[m], + y = f[m + 1] + if ( + (s.fromBufferAttribute(p, g), + l.fromBufferAttribute(p, y), + !(oc.distanceSqToSegment(s, l, u, c) > a)) + ) { + u.applyMatrix4(this.matrixWorld) + var b = e.ray.origin.distanceTo(u) + b < e.near || + b > e.far || + t.push({ + distance: b, + point: c.clone().applyMatrix4(this.matrixWorld), + index: m, + face: null, + faceIndex: null, + object: this, + }) + } + } + else + for (var A = 0, w = p.count - 1; A < w; A += h) + if ( + (s.fromBufferAttribute(p, A), + l.fromBufferAttribute(p, A + 1), + !(oc.distanceSqToSegment(s, l, u, c) > a)) + ) { + u.applyMatrix4(this.matrixWorld) + var x = e.ray.origin.distanceTo(u) + x < e.near || + x > e.far || + t.push({ + distance: x, + point: c.clone().applyMatrix4(this.matrixWorld), + index: A, + face: null, + faceIndex: null, + object: this, + }) + } + } else + n.isGeometry && + console.error( + 'THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + } + }, + updateMorphTargets: function () { + var e = this.geometry + if (e.isBufferGeometry) { + var t = e.morphAttributes, + n = Object.keys(t) + if (n.length > 0) { + var r = t[n[0]] + if (void 0 !== r) { + ;(this.morphTargetInfluences = []), (this.morphTargetDictionary = {}) + for (var i = 0, o = r.length; i < o; i++) { + var a = r[i].name || String(i) + this.morphTargetInfluences.push(0), + (this.morphTargetDictionary[a] = i) + } + } + } + } else { + var s = e.morphTargets + void 0 !== s && + s.length > 0 && + console.error( + 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + } + }, + }) + var lc = new lr(), + cc = new lr() + function uc(e, t) { + sc.call(this, e, t), (this.type = 'LineSegments') + } + function hc(e, t) { + sc.call(this, e, t), (this.type = 'LineLoop') + } + function dc(e) { + Di.call(this), + (this.type = 'PointsMaterial'), + (this.color = new Li(16777215)), + (this.map = null), + (this.alphaMap = null), + (this.size = 1), + (this.sizeAttenuation = !0), + (this.morphTargets = !1), + this.setValues(e) + } + ;(uc.prototype = Object.assign(Object.create(sc.prototype), { + constructor: uc, + isLineSegments: !0, + computeLineDistances: function () { + var e = this.geometry + if (e.isBufferGeometry) + if (null === e.index) { + for ( + var t = e.attributes.position, n = [], r = 0, i = t.count; + r < i; + r += 2 + ) + lc.fromBufferAttribute(t, r), + cc.fromBufferAttribute(t, r + 1), + (n[r] = 0 === r ? 0 : n[r - 1]), + (n[r + 1] = n[r] + lc.distanceTo(cc)) + e.setAttribute('lineDistance', new Wi(n, 1)) + } else + console.warn( + 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.', + ) + else + e.isGeometry && + console.error( + 'THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + return this + }, + })), + (hc.prototype = Object.assign(Object.create(sc.prototype), { + constructor: hc, + isLineLoop: !0, + })), + (dc.prototype = Object.create(Di.prototype)), + (dc.prototype.constructor = dc), + (dc.prototype.isPointsMaterial = !0), + (dc.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.map = e.map), + (this.alphaMap = e.alphaMap), + (this.size = e.size), + (this.sizeAttenuation = e.sizeAttenuation), + (this.morphTargets = e.morphTargets), + this + ) + }) + var pc = new Fr(), + fc = new Br(), + mc = new Sr(), + vc = new lr() + function gc(e, t) { + void 0 === e && (e = new ro()), + void 0 === t && (t = new dc()), + si.call(this), + (this.type = 'Points'), + (this.geometry = e), + (this.material = t), + this.updateMorphTargets() + } + function yc(e, t, n, r, i, o, a) { + var s = fc.distanceSqToPoint(e) + if (s < n) { + var l = new lr() + fc.closestPointToPoint(e, l), l.applyMatrix4(r) + var c = i.ray.origin.distanceTo(l) + if (c < i.near || c > i.far) return + o.push({ + distance: c, + distanceToRay: Math.sqrt(s), + point: l, + index: t, + face: null, + object: a, + }) + } + } + function bc(e, t, n, r, i, o, a, s, l) { + nr.call(this, e, t, n, r, i, o, a, s, l), + (this.format = void 0 !== a ? a : Ne), + (this.minFilter = void 0 !== o ? o : Ae), + (this.magFilter = void 0 !== i ? i : Ae), + (this.generateMipmaps = !1) + var c = this + function u() { + ;(c.needsUpdate = !0), e.requestVideoFrameCallback(u) + } + 'requestVideoFrameCallback' in e && e.requestVideoFrameCallback(u) + } + function Ac(e, t, n, r, i, o, a, s, l, c, u, h) { + nr.call(this, null, o, a, s, l, c, r, i, u, h), + (this.image = { width: t, height: n }), + (this.mipmaps = e), + (this.flipY = !1), + (this.generateMipmaps = !1) + } + function wc(e, t, n, r, i, o, a, s, l) { + nr.call(this, e, t, n, r, i, o, a, s, l), (this.needsUpdate = !0) + } + function xc(e, t, n, r, i, o, a, s, l, c) { + if ((c = void 0 !== c ? c : je) !== je && c !== Ve) + throw new Error( + 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat', + ) + void 0 === n && c === je && (n = Ce), + void 0 === n && c === Ve && (n = Fe), + nr.call(this, null, r, i, o, a, s, c, n, l), + (this.image = { width: e, height: t }), + (this.magFilter = void 0 !== a ? a : me), + (this.minFilter = void 0 !== s ? s : me), + (this.flipY = !1), + (this.generateMipmaps = !1) + } + ;(gc.prototype = Object.assign(Object.create(si.prototype), { + constructor: gc, + isPoints: !0, + copy: function (e) { + return ( + si.prototype.copy.call(this, e), + (this.material = e.material), + (this.geometry = e.geometry), + this + ) + }, + raycast: function (e, t) { + var n = this.geometry, + r = this.matrixWorld, + i = e.params.Points.threshold + if ( + (null === n.boundingSphere && n.computeBoundingSphere(), + mc.copy(n.boundingSphere), + mc.applyMatrix4(r), + (mc.radius += i), + !1 !== e.ray.intersectsSphere(mc)) + ) { + pc.copy(r).invert(), fc.copy(e.ray).applyMatrix4(pc) + var o = i / ((this.scale.x + this.scale.y + this.scale.z) / 3), + a = o * o + if (n.isBufferGeometry) { + var s = n.index, + l = n.attributes.position + if (null !== s) + for (var c = s.array, u = 0, h = c.length; u < h; u++) { + var d = c[u] + vc.fromBufferAttribute(l, d), yc(vc, d, a, r, e, t, this) + } + else + for (var p = 0, f = l.count; p < f; p++) + vc.fromBufferAttribute(l, p), yc(vc, p, a, r, e, t, this) + } else + console.error( + 'THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + } + }, + updateMorphTargets: function () { + var e = this.geometry + if (e.isBufferGeometry) { + var t = e.morphAttributes, + n = Object.keys(t) + if (n.length > 0) { + var r = t[n[0]] + if (void 0 !== r) { + ;(this.morphTargetInfluences = []), (this.morphTargetDictionary = {}) + for (var i = 0, o = r.length; i < o; i++) { + var a = r[i].name || String(i) + this.morphTargetInfluences.push(0), + (this.morphTargetDictionary[a] = i) + } + } + } + } else { + var s = e.morphTargets + void 0 !== s && + s.length > 0 && + console.error( + 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.', + ) + } + }, + })), + (bc.prototype = Object.assign(Object.create(nr.prototype), { + constructor: bc, + clone: function () { + return new this.constructor(this.image).copy(this) + }, + isVideoTexture: !0, + update: function () { + var e = this.image + !1 === 'requestVideoFrameCallback' in e && + e.readyState >= e.HAVE_CURRENT_DATA && + (this.needsUpdate = !0) + }, + })), + (Ac.prototype = Object.create(nr.prototype)), + (Ac.prototype.constructor = Ac), + (Ac.prototype.isCompressedTexture = !0), + (wc.prototype = Object.create(nr.prototype)), + (wc.prototype.constructor = wc), + (wc.prototype.isCanvasTexture = !0), + (xc.prototype = Object.create(nr.prototype)), + (xc.prototype.constructor = xc), + (xc.prototype.isDepthTexture = !0) + var Ec = (function (e) { + function t(t, n, r, i) { + var o + void 0 === t && (t = 1), + void 0 === n && (n = 8), + void 0 === r && (r = 0), + void 0 === i && (i = 2 * Math.PI), + ((o = e.call(this) || this).type = 'CircleGeometry'), + (o.parameters = { + radius: t, + segments: n, + thetaStart: r, + thetaLength: i, + }), + (n = Math.max(3, n)) + var a = [], + s = [], + l = [], + c = [], + u = new lr(), + h = new Jn() + s.push(0, 0, 0), l.push(0, 0, 1), c.push(0.5, 0.5) + for (var d = 0, p = 3; d <= n; d++, p += 3) { + var f = r + (d / n) * i + ;(u.x = t * Math.cos(f)), + (u.y = t * Math.sin(f)), + s.push(u.x, u.y, u.z), + l.push(0, 0, 1), + (h.x = (s[p] / t + 1) / 2), + (h.y = (s[p + 1] / t + 1) / 2), + c.push(h.x, h.y) + } + for (var m = 1; m <= n; m++) a.push(m, m + 1, 0) + return ( + o.setIndex(a), + o.setAttribute('position', new Wi(s, 3)), + o.setAttribute('normal', new Wi(l, 3)), + o.setAttribute('uv', new Wi(c, 2)), + o + ) + } + return Gn(t, e), t + })(ro), + Mc = (function (e) { + function t(t, n, r, i, o, a, s, l) { + var c + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 1), + void 0 === i && (i = 8), + void 0 === o && (o = 1), + void 0 === a && (a = !1), + void 0 === s && (s = 0), + void 0 === l && (l = 2 * Math.PI), + ((c = e.call(this) || this).type = 'CylinderGeometry'), + (c.parameters = { + radiusTop: t, + radiusBottom: n, + height: r, + radialSegments: i, + heightSegments: o, + openEnded: a, + thetaStart: s, + thetaLength: l, + }) + var u = zn(c) + ;(i = Math.floor(i)), (o = Math.floor(o)) + var h = [], + d = [], + p = [], + f = [], + m = 0, + v = [], + g = r / 2, + y = 0 + function b() { + for ( + var e = new lr(), a = new lr(), c = 0, b = (n - t) / r, A = 0; + A <= o; + A++ + ) { + for (var w = [], x = A / o, E = x * (n - t) + t, M = 0; M <= i; M++) { + var _ = M / i, + T = _ * l + s, + S = Math.sin(T), + C = Math.cos(T) + ;(a.x = E * S), + (a.y = -x * r + g), + (a.z = E * C), + d.push(a.x, a.y, a.z), + e.set(S, b, C).normalize(), + p.push(e.x, e.y, e.z), + f.push(_, 1 - x), + w.push(m++) + } + v.push(w) + } + for (var L = 0; L < i; L++) + for (var R = 0; R < o; R++) { + var P = v[R][L], + D = v[R + 1][L], + O = v[R + 1][L + 1], + I = v[R][L + 1] + h.push(P, D, I), h.push(D, O, I), (c += 6) + } + u.addGroup(y, c, 0), (y += c) + } + function A(e) { + for ( + var r = m, + o = new Jn(), + a = new lr(), + c = 0, + v = !0 === e ? t : n, + b = !0 === e ? 1 : -1, + A = 1; + A <= i; + A++ + ) + d.push(0, g * b, 0), p.push(0, b, 0), f.push(0.5, 0.5), m++ + for (var w = m, x = 0; x <= i; x++) { + var E = (x / i) * l + s, + M = Math.cos(E), + _ = Math.sin(E) + ;(a.x = v * _), + (a.y = g * b), + (a.z = v * M), + d.push(a.x, a.y, a.z), + p.push(0, b, 0), + (o.x = 0.5 * M + 0.5), + (o.y = 0.5 * _ * b + 0.5), + f.push(o.x, o.y), + m++ + } + for (var T = 0; T < i; T++) { + var S = r + T, + C = w + T + !0 === e ? h.push(C, C + 1, S) : h.push(C + 1, C, S), (c += 3) + } + u.addGroup(y, c, !0 === e ? 1 : 2), (y += c) + } + return ( + b(), + !1 === a && (t > 0 && A(!0), n > 0 && A(!1)), + c.setIndex(h), + c.setAttribute('position', new Wi(d, 3)), + c.setAttribute('normal', new Wi(p, 3)), + c.setAttribute('uv', new Wi(f, 2)), + c + ) + } + return Gn(t, e), t + })(ro), + _c = (function (e) { + function t(t, n, r, i, o, a, s) { + var l + return ( + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = 8), + void 0 === i && (i = 1), + void 0 === o && (o = !1), + void 0 === a && (a = 0), + void 0 === s && (s = 2 * Math.PI), + ((l = e.call(this, 0, t, n, r, i, o, a, s) || this).type = + 'ConeGeometry'), + (l.parameters = { + radius: t, + height: n, + radialSegments: r, + heightSegments: i, + openEnded: o, + thetaStart: a, + thetaLength: s, + }), + l + ) + } + return Gn(t, e), t + })(Mc), + Tc = (function (e) { + function t(t, n, r, i) { + var o + void 0 === r && (r = 1), + void 0 === i && (i = 0), + ((o = e.call(this) || this).type = 'PolyhedronGeometry'), + (o.parameters = { vertices: t, indices: n, radius: r, detail: i }) + var a = [], + s = [] + function l(e) { + for ( + var t = new lr(), r = new lr(), i = new lr(), o = 0; + o < n.length; + o += 3 + ) + f(n[o + 0], t), f(n[o + 1], r), f(n[o + 2], i), c(t, r, i, e) + } + function c(e, t, n, r) { + for (var i = r + 1, o = [], a = 0; a <= i; a++) { + o[a] = [] + for ( + var s = e.clone().lerp(n, a / i), + l = t.clone().lerp(n, a / i), + c = i - a, + u = 0; + u <= c; + u++ + ) + o[a][u] = 0 === u && a === i ? s : s.clone().lerp(l, u / c) + } + for (var h = 0; h < i; h++) + for (var d = 0; d < 2 * (i - h) - 1; d++) { + var f = Math.floor(d / 2) + d % 2 === 0 + ? (p(o[h][f + 1]), p(o[h + 1][f]), p(o[h][f])) + : (p(o[h][f + 1]), p(o[h + 1][f + 1]), p(o[h + 1][f])) + } + } + function u(e) { + for (var t = new lr(), n = 0; n < a.length; n += 3) + (t.x = a[n + 0]), + (t.y = a[n + 1]), + (t.z = a[n + 2]), + t.normalize().multiplyScalar(e), + (a[n + 0] = t.x), + (a[n + 1] = t.y), + (a[n + 2] = t.z) + } + function h() { + for (var e = new lr(), t = 0; t < a.length; t += 3) { + ;(e.x = a[t + 0]), (e.y = a[t + 1]), (e.z = a[t + 2]) + var n = g(e) / 2 / Math.PI + 0.5, + r = y(e) / Math.PI + 0.5 + s.push(n, 1 - r) + } + m(), d() + } + function d() { + for (var e = 0; e < s.length; e += 6) { + var t = s[e + 0], + n = s[e + 2], + r = s[e + 4], + i = Math.max(t, n, r), + o = Math.min(t, n, r) + i > 0.9 && + o < 0.1 && + (t < 0.2 && (s[e + 0] += 1), + n < 0.2 && (s[e + 2] += 1), + r < 0.2 && (s[e + 4] += 1)) + } + } + function p(e) { + a.push(e.x, e.y, e.z) + } + function f(e, n) { + var r = 3 * e + ;(n.x = t[r + 0]), (n.y = t[r + 1]), (n.z = t[r + 2]) + } + function m() { + for ( + var e = new lr(), + t = new lr(), + n = new lr(), + r = new lr(), + i = new Jn(), + o = new Jn(), + l = new Jn(), + c = 0, + u = 0; + c < a.length; + c += 9, u += 6 + ) { + e.set(a[c + 0], a[c + 1], a[c + 2]), + t.set(a[c + 3], a[c + 4], a[c + 5]), + n.set(a[c + 6], a[c + 7], a[c + 8]), + i.set(s[u + 0], s[u + 1]), + o.set(s[u + 2], s[u + 3]), + l.set(s[u + 4], s[u + 5]), + r.copy(e).add(t).add(n).divideScalar(3) + var h = g(r) + v(i, u + 0, e, h), v(o, u + 2, t, h), v(l, u + 4, n, h) + } + } + function v(e, t, n, r) { + r < 0 && 1 === e.x && (s[t] = e.x - 1), + 0 === n.x && 0 === n.z && (s[t] = r / 2 / Math.PI + 0.5) + } + function g(e) { + return Math.atan2(e.z, -e.x) + } + function y(e) { + return Math.atan2(-e.y, Math.sqrt(e.x * e.x + e.z * e.z)) + } + return ( + l(i), + u(r), + h(), + o.setAttribute('position', new Wi(a, 3)), + o.setAttribute('normal', new Wi(a.slice(), 3)), + o.setAttribute('uv', new Wi(s, 2)), + 0 === i ? o.computeVertexNormals() : o.normalizeNormals(), + o + ) + } + return Gn(t, e), t + })(ro), + Sc = (function (e) { + function t(t, n) { + var r + void 0 === t && (t = 1), void 0 === n && (n = 0) + var i = (1 + Math.sqrt(5)) / 2, + o = 1 / i, + a = [ + -1, + -1, + -1, + -1, + -1, + 1, + -1, + 1, + -1, + -1, + 1, + 1, + 1, + -1, + -1, + 1, + -1, + 1, + 1, + 1, + -1, + 1, + 1, + 1, + 0, + -o, + -i, + 0, + -o, + i, + 0, + o, + -i, + 0, + o, + i, + -o, + -i, + 0, + -o, + i, + 0, + o, + -i, + 0, + o, + i, + 0, + -i, + 0, + -o, + i, + 0, + -o, + -i, + 0, + o, + i, + 0, + o, + ], + s = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, 7, 19, 17, 7, 17, 6, 7, 6, 15, 17, 4, + 8, 17, 8, 10, 17, 10, 6, 8, 0, 16, 8, 16, 2, 8, 2, 10, 0, 12, 1, 0, 1, + 18, 0, 18, 16, 6, 10, 2, 6, 2, 13, 6, 13, 15, 2, 16, 18, 2, 18, 3, 2, + 3, 13, 18, 1, 9, 18, 9, 11, 18, 11, 3, 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, 19, 5, 14, 19, 14, 4, 19, 4, 17, 1, + 12, 14, 1, 14, 5, 1, 5, 9, + ] + return ( + ((r = e.call(this, a, s, t, n) || this).type = 'DodecahedronGeometry'), + (r.parameters = { radius: t, detail: n }), + r + ) + } + return Gn(t, e), t + })(Tc), + Cc = new lr(), + Lc = new lr(), + Rc = new lr(), + Pc = new xi(), + Dc = (function (e) { + function t(t, n) { + var r + if ( + (((r = e.call(this) || this).type = 'EdgesGeometry'), + (r.parameters = { thresholdAngle: n }), + (n = void 0 !== n ? n : 1), + !0 === t.isGeometry) + ) + return ( + console.error( + 'THREE.EdgesGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ), + zn(r) + ) + for ( + var i = 4, + o = Math.pow(10, i), + a = Math.cos(Kn.DEG2RAD * n), + s = t.getIndex(), + l = t.getAttribute('position'), + c = s ? s.count : l.count, + u = [0, 0, 0], + h = ['a', 'b', 'c'], + d = new Array(3), + p = {}, + f = [], + m = 0; + m < c; + m += 3 + ) { + s + ? ((u[0] = s.getX(m)), (u[1] = s.getX(m + 1)), (u[2] = s.getX(m + 2))) + : ((u[0] = m), (u[1] = m + 1), (u[2] = m + 2)) + var v = Pc.a, + g = Pc.b, + y = Pc.c + if ( + (v.fromBufferAttribute(l, u[0]), + g.fromBufferAttribute(l, u[1]), + y.fromBufferAttribute(l, u[2]), + Pc.getNormal(Rc), + (d[0] = + Math.round(v.x * o) + + ',' + + Math.round(v.y * o) + + ',' + + Math.round(v.z * o)), + (d[1] = + Math.round(g.x * o) + + ',' + + Math.round(g.y * o) + + ',' + + Math.round(g.z * o)), + (d[2] = + Math.round(y.x * o) + + ',' + + Math.round(y.y * o) + + ',' + + Math.round(y.z * o)), + d[0] !== d[1] && d[1] !== d[2] && d[2] !== d[0]) + ) + for (var b = 0; b < 3; b++) { + var A = (b + 1) % 3, + w = d[b], + x = d[A], + E = Pc[h[b]], + M = Pc[h[A]], + _ = w + '_' + x, + T = x + '_' + w + T in p && p[T] + ? (Rc.dot(p[T].normal) <= a && + (f.push(E.x, E.y, E.z), f.push(M.x, M.y, M.z)), + (p[T] = null)) + : _ in p || + (p[_] = { index0: u[b], index1: u[A], normal: Rc.clone() }) + } + } + for (var S in p) + if (p[S]) { + var C = p[S], + L = C.index0, + R = C.index1 + Cc.fromBufferAttribute(l, L), + Lc.fromBufferAttribute(l, R), + f.push(Cc.x, Cc.y, Cc.z), + f.push(Lc.x, Lc.y, Lc.z) + } + return r.setAttribute('position', new Wi(f, 3)), r + } + return Gn(t, e), t + })(ro), + Oc = { + triangulate: function (e, t, n) { + n = n || 2 + var r, + i, + o, + a, + s, + l, + c, + u = t && t.length, + h = u ? t[0] * n : e.length, + d = Ic(e, 0, h, n, !0), + p = [] + if (!d || d.next === d.prev) return p + if ((u && (d = Gc(e, t, d, n)), e.length > 80 * n)) { + ;(r = o = e[0]), (i = a = e[1]) + for (var f = n; f < h; f += n) + (s = e[f]) < r && (r = s), + (l = e[f + 1]) < i && (i = l), + s > o && (o = s), + l > a && (a = l) + c = 0 !== (c = Math.max(o - r, a - i)) ? 1 / c : 0 + } + return Fc(d, p, n, r, i, c), p + }, + } + function Ic(e, t, n, r, i) { + var o, a + if (i === uu(e, t, n, r) > 0) + for (o = t; o < n; o += r) a = su(o, e[o], e[o + 1], a) + else for (o = n - r; o >= t; o -= r) a = su(o, e[o], e[o + 1], a) + return a && $c(a, a.next) && (lu(a), (a = a.next)), a + } + function Bc(e, t) { + if (!e) return e + t || (t = e) + var n, + r = e + do { + if ( + ((n = !1), r.steiner || (!$c(r, r.next) && 0 !== Jc(r.prev, r, r.next))) + ) + r = r.next + else { + if ((lu(r), (r = t = r.prev) === r.next)) break + n = !0 + } + } while (n || r !== t) + return t + } + function Fc(e, t, n, r, i, o, a) { + if (e) { + !a && o && qc(e, r, i, o) + for (var s, l, c = e; e.prev !== e.next; ) + if (((s = e.prev), (l = e.next), o ? Nc(e, r, i, o) : kc(e))) + t.push(s.i / n), + t.push(e.i / n), + t.push(l.i / n), + lu(e), + (e = l.next), + (c = l.next) + else if ((e = l) === c) { + a + ? 1 === a + ? Fc((e = Uc(Bc(e), t, n)), t, n, r, i, o, 2) + : 2 === a && Hc(e, t, n, r, i, o) + : Fc(Bc(e), t, n, r, i, o, 1) + break + } + } + } + function kc(e) { + var t = e.prev, + n = e, + r = e.next + if (Jc(t, n, r) >= 0) return !1 + for (var i = e.next.next; i !== e.prev; ) { + if ( + Zc(t.x, t.y, n.x, n.y, r.x, r.y, i.x, i.y) && + Jc(i.prev, i, i.next) >= 0 + ) + return !1 + i = i.next + } + return !0 + } + function Nc(e, t, n, r) { + var i = e.prev, + o = e, + a = e.next + if (Jc(i, o, a) >= 0) return !1 + for ( + var s = i.x < o.x ? (i.x < a.x ? i.x : a.x) : o.x < a.x ? o.x : a.x, + l = i.y < o.y ? (i.y < a.y ? i.y : a.y) : o.y < a.y ? o.y : a.y, + c = i.x > o.x ? (i.x > a.x ? i.x : a.x) : o.x > a.x ? o.x : a.x, + u = i.y > o.y ? (i.y > a.y ? i.y : a.y) : o.y > a.y ? o.y : a.y, + h = Yc(s, l, t, n, r), + d = Yc(c, u, t, n, r), + p = e.prevZ, + f = e.nextZ; + p && p.z >= h && f && f.z <= d; + + ) { + if ( + p !== e.prev && + p !== e.next && + Zc(i.x, i.y, o.x, o.y, a.x, a.y, p.x, p.y) && + Jc(p.prev, p, p.next) >= 0 + ) + return !1 + if ( + ((p = p.prevZ), + f !== e.prev && + f !== e.next && + Zc(i.x, i.y, o.x, o.y, a.x, a.y, f.x, f.y) && + Jc(f.prev, f, f.next) >= 0) + ) + return !1 + f = f.nextZ + } + for (; p && p.z >= h; ) { + if ( + p !== e.prev && + p !== e.next && + Zc(i.x, i.y, o.x, o.y, a.x, a.y, p.x, p.y) && + Jc(p.prev, p, p.next) >= 0 + ) + return !1 + p = p.prevZ + } + for (; f && f.z <= d; ) { + if ( + f !== e.prev && + f !== e.next && + Zc(i.x, i.y, o.x, o.y, a.x, a.y, f.x, f.y) && + Jc(f.prev, f, f.next) >= 0 + ) + return !1 + f = f.nextZ + } + return !0 + } + function Uc(e, t, n) { + var r = e + do { + var i = r.prev, + o = r.next.next + !$c(i, o) && + eu(i, r, r.next, o) && + iu(i, o) && + iu(o, i) && + (t.push(i.i / n), + t.push(r.i / n), + t.push(o.i / n), + lu(r), + lu(r.next), + (r = e = o)), + (r = r.next) + } while (r !== e) + return Bc(r) + } + function Hc(e, t, n, r, i, o) { + var a = e + do { + for (var s = a.next.next; s !== a.prev; ) { + if (a.i !== s.i && Kc(a, s)) { + var l = au(a, s) + return ( + (a = Bc(a, a.next)), + (l = Bc(l, l.next)), + Fc(a, t, n, r, i, o), + void Fc(l, t, n, r, i, o) + ) + } + s = s.next + } + a = a.next + } while (a !== e) + } + function Gc(e, t, n, r) { + var i, + o, + a, + s = [] + for (i = 0, o = t.length; i < o; i++) + (a = Ic(e, t[i] * r, i < o - 1 ? t[i + 1] * r : e.length, r, !1)) === + a.next && (a.steiner = !0), + s.push(Qc(a)) + for (s.sort(zc), i = 0; i < s.length; i++) jc(s[i], n), (n = Bc(n, n.next)) + return n + } + function zc(e, t) { + return e.x - t.x + } + function jc(e, t) { + if ((t = Vc(e, t))) { + var n = au(t, e) + Bc(t, t.next), Bc(n, n.next) + } + } + function Vc(e, t) { + var n, + r = t, + i = e.x, + o = e.y, + a = -1 / 0 + do { + if (o <= r.y && o >= r.next.y && r.next.y !== r.y) { + var s = r.x + ((o - r.y) * (r.next.x - r.x)) / (r.next.y - r.y) + if (s <= i && s > a) { + if (((a = s), s === i)) { + if (o === r.y) return r + if (o === r.next.y) return r.next + } + n = r.x < r.next.x ? r : r.next + } + } + r = r.next + } while (r !== t) + if (!n) return null + if (i === a) return n + var l, + c = n, + u = n.x, + h = n.y, + d = 1 / 0 + r = n + do { + i >= r.x && + r.x >= u && + i !== r.x && + Zc(o < h ? i : a, o, u, h, o < h ? a : i, o, r.x, r.y) && + ((l = Math.abs(o - r.y) / (i - r.x)), + iu(r, e) && + (l < d || (l === d && (r.x > n.x || (r.x === n.x && Wc(n, r))))) && + ((n = r), (d = l))), + (r = r.next) + } while (r !== c) + return n + } + function Wc(e, t) { + return Jc(e.prev, e, t.prev) < 0 && Jc(t.next, e, e.next) < 0 + } + function qc(e, t, n, r) { + var i = e + do { + null === i.z && (i.z = Yc(i.x, i.y, t, n, r)), + (i.prevZ = i.prev), + (i.nextZ = i.next), + (i = i.next) + } while (i !== e) + ;(i.prevZ.nextZ = null), (i.prevZ = null), Xc(i) + } + function Xc(e) { + var t, + n, + r, + i, + o, + a, + s, + l, + c = 1 + do { + for (n = e, e = null, o = null, a = 0; n; ) { + for (a++, r = n, s = 0, t = 0; t < c && (s++, (r = r.nextZ)); t++); + for (l = c; s > 0 || (l > 0 && r); ) + 0 !== s && (0 === l || !r || n.z <= r.z) + ? ((i = n), (n = n.nextZ), s--) + : ((i = r), (r = r.nextZ), l--), + o ? (o.nextZ = i) : (e = i), + (i.prevZ = o), + (o = i) + n = r + } + ;(o.nextZ = null), (c *= 2) + } while (a > 1) + return e + } + function Yc(e, t, n, r, i) { + return ( + (e = + 1431655765 & + ((e = + 858993459 & + ((e = + 252645135 & + ((e = 16711935 & ((e = 32767 * (e - n) * i) | (e << 8))) | + (e << 4))) | + (e << 2))) | + (e << 1))) | + ((t = + 1431655765 & + ((t = + 858993459 & + ((t = + 252645135 & + ((t = 16711935 & ((t = 32767 * (t - r) * i) | (t << 8))) | + (t << 4))) | + (t << 2))) | + (t << 1))) << + 1) + ) + } + function Qc(e) { + var t = e, + n = e + do { + ;(t.x < n.x || (t.x === n.x && t.y < n.y)) && (n = t), (t = t.next) + } while (t !== e) + return n + } + function Zc(e, t, n, r, i, o, a, s) { + return ( + (i - a) * (t - s) - (e - a) * (o - s) >= 0 && + (e - a) * (r - s) - (n - a) * (t - s) >= 0 && + (n - a) * (o - s) - (i - a) * (r - s) >= 0 + ) + } + function Kc(e, t) { + return ( + e.next.i !== t.i && + e.prev.i !== t.i && + !ru(e, t) && + ((iu(e, t) && + iu(t, e) && + ou(e, t) && + (Jc(e.prev, e, t.prev) || Jc(e, t.prev, t))) || + ($c(e, t) && Jc(e.prev, e, e.next) > 0 && Jc(t.prev, t, t.next) > 0)) + ) + } + function Jc(e, t, n) { + return (t.y - e.y) * (n.x - t.x) - (t.x - e.x) * (n.y - t.y) + } + function $c(e, t) { + return e.x === t.x && e.y === t.y + } + function eu(e, t, n, r) { + var i = nu(Jc(e, t, n)), + o = nu(Jc(e, t, r)), + a = nu(Jc(n, r, e)), + s = nu(Jc(n, r, t)) + return ( + (i !== o && a !== s) || + !(0 !== i || !tu(e, n, t)) || + !(0 !== o || !tu(e, r, t)) || + !(0 !== a || !tu(n, e, r)) || + !(0 !== s || !tu(n, t, r)) + ) + } + function tu(e, t, n) { + return ( + t.x <= Math.max(e.x, n.x) && + t.x >= Math.min(e.x, n.x) && + t.y <= Math.max(e.y, n.y) && + t.y >= Math.min(e.y, n.y) + ) + } + function nu(e) { + return e > 0 ? 1 : e < 0 ? -1 : 0 + } + function ru(e, t) { + var n = e + do { + if ( + n.i !== e.i && + n.next.i !== e.i && + n.i !== t.i && + n.next.i !== t.i && + eu(n, n.next, e, t) + ) + return !0 + n = n.next + } while (n !== e) + return !1 + } + function iu(e, t) { + return Jc(e.prev, e, e.next) < 0 + ? Jc(e, t, e.next) >= 0 && Jc(e, e.prev, t) >= 0 + : Jc(e, t, e.prev) < 0 || Jc(e, e.next, t) < 0 + } + function ou(e, t) { + var n = e, + r = !1, + i = (e.x + t.x) / 2, + o = (e.y + t.y) / 2 + do { + n.y > o !== n.next.y > o && + n.next.y !== n.y && + i < ((n.next.x - n.x) * (o - n.y)) / (n.next.y - n.y) + n.x && + (r = !r), + (n = n.next) + } while (n !== e) + return r + } + function au(e, t) { + var n = new cu(e.i, e.x, e.y), + r = new cu(t.i, t.x, t.y), + i = e.next, + o = t.prev + return ( + (e.next = t), + (t.prev = e), + (n.next = i), + (i.prev = n), + (r.next = n), + (n.prev = r), + (o.next = r), + (r.prev = o), + r + ) + } + function su(e, t, n, r) { + var i = new cu(e, t, n) + return ( + r + ? ((i.next = r.next), (i.prev = r), (r.next.prev = i), (r.next = i)) + : ((i.prev = i), (i.next = i)), + i + ) + } + function lu(e) { + ;(e.next.prev = e.prev), + (e.prev.next = e.next), + e.prevZ && (e.prevZ.nextZ = e.nextZ), + e.nextZ && (e.nextZ.prevZ = e.prevZ) + } + function cu(e, t, n) { + ;(this.i = e), + (this.x = t), + (this.y = n), + (this.prev = null), + (this.next = null), + (this.z = null), + (this.prevZ = null), + (this.nextZ = null), + (this.steiner = !1) + } + function uu(e, t, n, r) { + for (var i = 0, o = t, a = n - r; o < n; o += r) + (i += (e[a] - e[o]) * (e[o + 1] + e[a + 1])), (a = o) + return i + } + var hu = { + area: function (e) { + for (var t = e.length, n = 0, r = t - 1, i = 0; i < t; r = i++) + n += e[r].x * e[i].y - e[i].x * e[r].y + return 0.5 * n + }, + isClockWise: function (e) { + return hu.area(e) < 0 + }, + triangulateShape: function (e, t) { + var n = [], + r = [], + i = [] + du(e), pu(n, e) + var o = e.length + t.forEach(du) + for (var a = 0; a < t.length; a++) + r.push(o), (o += t[a].length), pu(n, t[a]) + for (var s = Oc.triangulate(n, r), l = 0; l < s.length; l += 3) + i.push(s.slice(l, l + 3)) + return i + }, + } + function du(e) { + var t = e.length + t > 2 && e[t - 1].equals(e[0]) && e.pop() + } + function pu(e, t) { + for (var n = 0; n < t.length; n++) e.push(t[n].x), e.push(t[n].y) + } + var fu = (function (e) { + function t(t, n) { + var r + ;((r = e.call(this) || this).type = 'ExtrudeGeometry'), + (r.parameters = { shapes: t, options: n }), + (t = Array.isArray(t) ? t : [t]) + for (var i = zn(r), o = [], a = [], s = 0, l = t.length; s < l; s++) + c(t[s]) + function c(e) { + var t = [], + r = void 0 !== n.curveSegments ? n.curveSegments : 12, + s = void 0 !== n.steps ? n.steps : 1, + l = void 0 !== n.depth ? n.depth : 100, + c = void 0 === n.bevelEnabled || n.bevelEnabled, + u = void 0 !== n.bevelThickness ? n.bevelThickness : 6, + h = void 0 !== n.bevelSize ? n.bevelSize : u - 2, + d = void 0 !== n.bevelOffset ? n.bevelOffset : 0, + p = void 0 !== n.bevelSegments ? n.bevelSegments : 3, + f = n.extrudePath, + m = void 0 !== n.UVGenerator ? n.UVGenerator : mu + void 0 !== n.amount && + (console.warn( + 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.', + ), + (l = n.amount)) + var v, + g, + y, + b, + A, + w = !1 + f && + ((v = f.getSpacedPoints(s)), + (w = !0), + (c = !1), + (g = f.computeFrenetFrames(s, !1)), + (y = new lr()), + (b = new lr()), + (A = new lr())), + c || ((p = 0), (u = 0), (h = 0), (d = 0)) + var x = e.extractPoints(r), + E = x.shape, + M = x.holes + if (!hu.isClockWise(E)) { + E = E.reverse() + for (var _ = 0, T = M.length; _ < T; _++) { + var S = M[_] + hu.isClockWise(S) && (M[_] = S.reverse()) + } + } + for ( + var C = hu.triangulateShape(E, M), L = E, R = 0, P = M.length; + R < P; + R++ + ) { + var D = M[R] + E = E.concat(D) + } + function O(e, t, n) { + return ( + t || console.error('THREE.ExtrudeGeometry: vec does not exist'), + t.clone().multiplyScalar(n).add(e) + ) + } + var I = E.length, + B = C.length + function F(e, t, n) { + var r, + i, + o, + a = e.x - t.x, + s = e.y - t.y, + l = n.x - e.x, + c = n.y - e.y, + u = a * a + s * s, + h = a * c - s * l + if (Math.abs(h) > Number.EPSILON) { + var d = Math.sqrt(u), + p = Math.sqrt(l * l + c * c), + f = t.x - s / d, + m = t.y + a / d, + v = + ((n.x - c / p - f) * c - (n.y + l / p - m) * l) / + (a * c - s * l), + g = (r = f + a * v - e.x) * r + (i = m + s * v - e.y) * i + if (g <= 2) return new Jn(r, i) + o = Math.sqrt(g / 2) + } else { + var y = !1 + a > Number.EPSILON + ? l > Number.EPSILON && (y = !0) + : a < -Number.EPSILON + ? l < -Number.EPSILON && (y = !0) + : Math.sign(s) === Math.sign(c) && (y = !0), + y + ? ((r = -s), (i = a), (o = Math.sqrt(u))) + : ((r = a), (i = s), (o = Math.sqrt(u / 2))) + } + return new Jn(r / o, i / o) + } + for ( + var k = [], N = 0, U = L.length, H = U - 1, G = N + 1; + N < U; + N++, H++, G++ + ) + H === U && (H = 0), G === U && (G = 0), (k[N] = F(L[N], L[H], L[G])) + for (var z, j = [], V = k.concat(), W = 0, q = M.length; W < q; W++) { + var X = M[W] + z = [] + for ( + var Y = 0, Q = X.length, Z = Q - 1, K = Y + 1; + Y < Q; + Y++, Z++, K++ + ) + Z === Q && (Z = 0), K === Q && (K = 0), (z[Y] = F(X[Y], X[Z], X[K])) + j.push(z), (V = V.concat(z)) + } + for (var J = 0; J < p; J++) { + for ( + var $ = J / p, + ee = u * Math.cos(($ * Math.PI) / 2), + te = h * Math.sin(($ * Math.PI) / 2) + d, + ne = 0, + re = L.length; + ne < re; + ne++ + ) { + var ie = O(L[ne], k[ne], te) + Oe(ie.x, ie.y, -ee) + } + for (var oe = 0, ae = M.length; oe < ae; oe++) { + var se = M[oe] + z = j[oe] + for (var le = 0, ce = se.length; le < ce; le++) { + var ue = O(se[le], z[le], te) + Oe(ue.x, ue.y, -ee) + } + } + } + for (var he = h + d, de = 0; de < I; de++) { + var pe = c ? O(E[de], V[de], he) : E[de] + w + ? (b.copy(g.normals[0]).multiplyScalar(pe.x), + y.copy(g.binormals[0]).multiplyScalar(pe.y), + A.copy(v[0]).add(b).add(y), + Oe(A.x, A.y, A.z)) + : Oe(pe.x, pe.y, 0) + } + for (var fe = 1; fe <= s; fe++) + for (var me = 0; me < I; me++) { + var ve = c ? O(E[me], V[me], he) : E[me] + w + ? (b.copy(g.normals[fe]).multiplyScalar(ve.x), + y.copy(g.binormals[fe]).multiplyScalar(ve.y), + A.copy(v[fe]).add(b).add(y), + Oe(A.x, A.y, A.z)) + : Oe(ve.x, ve.y, (l / s) * fe) + } + for (var ge = p - 1; ge >= 0; ge--) { + for ( + var ye = ge / p, + be = u * Math.cos((ye * Math.PI) / 2), + Ae = h * Math.sin((ye * Math.PI) / 2) + d, + we = 0, + xe = L.length; + we < xe; + we++ + ) { + var Ee = O(L[we], k[we], Ae) + Oe(Ee.x, Ee.y, l + be) + } + for (var Me = 0, _e = M.length; Me < _e; Me++) { + var Te = M[Me] + z = j[Me] + for (var Se = 0, Ce = Te.length; Se < Ce; Se++) { + var Le = O(Te[Se], z[Se], Ae) + w + ? Oe(Le.x, Le.y + v[s - 1].y, v[s - 1].x + be) + : Oe(Le.x, Le.y, l + be) + } + } + } + function Re() { + var e = o.length / 3 + if (c) { + for (var t = 0, n = I * t, r = 0; r < B; r++) { + var a = C[r] + Ie(a[2] + n, a[1] + n, a[0] + n) + } + n = I * (t = s + 2 * p) + for (var l = 0; l < B; l++) { + var u = C[l] + Ie(u[0] + n, u[1] + n, u[2] + n) + } + } else { + for (var h = 0; h < B; h++) { + var d = C[h] + Ie(d[2], d[1], d[0]) + } + for (var f = 0; f < B; f++) { + var m = C[f] + Ie(m[0] + I * s, m[1] + I * s, m[2] + I * s) + } + } + i.addGroup(e, o.length / 3 - e, 0) + } + function Pe() { + var e = o.length / 3, + t = 0 + De(L, t), (t += L.length) + for (var n = 0, r = M.length; n < r; n++) { + var a = M[n] + De(a, t), (t += a.length) + } + i.addGroup(e, o.length / 3 - e, 1) + } + function De(e, t) { + for (var n = e.length; --n >= 0; ) { + var r = n, + i = n - 1 + i < 0 && (i = e.length - 1) + for (var o = 0, a = s + 2 * p; o < a; o++) { + var l = I * o, + c = I * (o + 1) + Be(t + r + l, t + i + l, t + i + c, t + r + c) + } + } + } + function Oe(e, n, r) { + t.push(e), t.push(n), t.push(r) + } + function Ie(e, t, n) { + Fe(e), Fe(t), Fe(n) + var r = o.length / 3, + a = m.generateTopUV(i, o, r - 3, r - 2, r - 1) + ke(a[0]), ke(a[1]), ke(a[2]) + } + function Be(e, t, n, r) { + Fe(e), Fe(t), Fe(r), Fe(t), Fe(n), Fe(r) + var a = o.length / 3, + s = m.generateSideWallUV(i, o, a - 6, a - 3, a - 2, a - 1) + ke(s[0]), ke(s[1]), ke(s[3]), ke(s[1]), ke(s[2]), ke(s[3]) + } + function Fe(e) { + o.push(t[3 * e + 0]), o.push(t[3 * e + 1]), o.push(t[3 * e + 2]) + } + function ke(e) { + a.push(e.x), a.push(e.y) + } + Re(), Pe() + } + return ( + r.setAttribute('position', new Wi(o, 3)), + r.setAttribute('uv', new Wi(a, 2)), + r.computeVertexNormals(), + r + ) + } + return ( + Gn(t, e), + (t.prototype.toJSON = function () { + var e = ro.prototype.toJSON.call(this) + return vu(this.parameters.shapes, this.parameters.options, e) + }), + t + ) + })(ro), + mu = { + generateTopUV: function (e, t, n, r, i) { + var o = t[3 * n], + a = t[3 * n + 1], + s = t[3 * r], + l = t[3 * r + 1], + c = t[3 * i], + u = t[3 * i + 1] + return [new Jn(o, a), new Jn(s, l), new Jn(c, u)] + }, + generateSideWallUV: function (e, t, n, r, i, o) { + var a = t[3 * n], + s = t[3 * n + 1], + l = t[3 * n + 2], + c = t[3 * r], + u = t[3 * r + 1], + h = t[3 * r + 2], + d = t[3 * i], + p = t[3 * i + 1], + f = t[3 * i + 2], + m = t[3 * o], + v = t[3 * o + 1], + g = t[3 * o + 2] + return Math.abs(s - u) < 0.01 + ? [ + new Jn(a, 1 - l), + new Jn(c, 1 - h), + new Jn(d, 1 - f), + new Jn(m, 1 - g), + ] + : [ + new Jn(s, 1 - l), + new Jn(u, 1 - h), + new Jn(p, 1 - f), + new Jn(v, 1 - g), + ] + }, + } + function vu(e, t, n) { + if (((n.shapes = []), Array.isArray(e))) + for (var r = 0, i = e.length; r < i; r++) { + var o = e[r] + n.shapes.push(o.uuid) + } + else n.shapes.push(e.uuid) + return ( + void 0 !== t.extrudePath && + (n.options.extrudePath = t.extrudePath.toJSON()), + n + ) + } + var gu = (function (e) { + function t(t, n) { + var r + void 0 === t && (t = 1), void 0 === n && (n = 0) + var i = (1 + Math.sqrt(5)) / 2, + o = [ + -1, + i, + 0, + 1, + i, + 0, + -1, + -i, + 0, + 1, + -i, + 0, + 0, + -1, + i, + 0, + 1, + i, + 0, + -1, + -i, + 0, + 1, + -i, + i, + 0, + -1, + i, + 0, + 1, + -i, + 0, + -1, + -i, + 0, + 1, + ], + a = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, 1, 5, 9, 5, 11, 4, + 11, 10, 2, 10, 7, 6, 7, 1, 8, 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, + 8, 9, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1, + ] + return ( + ((r = e.call(this, o, a, t, n) || this).type = 'IcosahedronGeometry'), + (r.parameters = { radius: t, detail: n }), + r + ) + } + return Gn(t, e), t + })(Tc), + yu = (function (e) { + function t(t, n, r, i) { + var o + void 0 === n && (n = 12), + void 0 === r && (r = 0), + void 0 === i && (i = 2 * Math.PI), + ((o = e.call(this) || this).type = 'LatheGeometry'), + (o.parameters = { points: t, segments: n, phiStart: r, phiLength: i }), + (n = Math.floor(n)), + (i = Kn.clamp(i, 0, 2 * Math.PI)) + for ( + var a = [], + s = [], + l = [], + c = 1 / n, + u = new lr(), + h = new Jn(), + d = 0; + d <= n; + d++ + ) + for ( + var p = r + d * c * i, f = Math.sin(p), m = Math.cos(p), v = 0; + v <= t.length - 1; + v++ + ) + (u.x = t[v].x * f), + (u.y = t[v].y), + (u.z = t[v].x * m), + s.push(u.x, u.y, u.z), + (h.x = d / n), + (h.y = v / (t.length - 1)), + l.push(h.x, h.y) + for (var g = 0; g < n; g++) + for (var y = 0; y < t.length - 1; y++) { + var b = y + g * t.length, + A = b, + w = b + t.length, + x = b + t.length + 1, + E = b + 1 + a.push(A, w, E), a.push(w, x, E) + } + if ( + (o.setIndex(a), + o.setAttribute('position', new Wi(s, 3)), + o.setAttribute('uv', new Wi(l, 2)), + o.computeVertexNormals(), + i === 2 * Math.PI) + ) + for ( + var M = o.attributes.normal.array, + _ = new lr(), + T = new lr(), + S = new lr(), + C = n * t.length * 3, + L = 0, + R = 0; + L < t.length; + L++, R += 3 + ) + (_.x = M[R + 0]), + (_.y = M[R + 1]), + (_.z = M[R + 2]), + (T.x = M[C + R + 0]), + (T.y = M[C + R + 1]), + (T.z = M[C + R + 2]), + S.addVectors(_, T).normalize(), + (M[R + 0] = M[C + R + 0] = S.x), + (M[R + 1] = M[C + R + 1] = S.y), + (M[R + 2] = M[C + R + 2] = S.z) + return o + } + return Gn(t, e), t + })(ro), + bu = (function (e) { + function t(t, n) { + var r + void 0 === t && (t = 1), void 0 === n && (n = 0) + var i = [1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, -1], + o = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, 0, 5, 2, 1, 2, 5, 1, 5, 3, 1, 3, 4, 1, 4, + 2, + ] + return ( + ((r = e.call(this, i, o, t, n) || this).type = 'OctahedronGeometry'), + (r.parameters = { radius: t, detail: n }), + r + ) + } + return Gn(t, e), t + })(Tc) + function Au(e, t, n) { + ro.call(this), + (this.type = 'ParametricGeometry'), + (this.parameters = { func: e, slices: t, stacks: n }) + var r = [], + i = [], + o = [], + a = [], + s = 1e-5, + l = new lr(), + c = new lr(), + u = new lr(), + h = new lr(), + d = new lr() + e.length < 3 && + console.error( + 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.', + ) + for (var p = t + 1, f = 0; f <= n; f++) + for (var m = f / n, v = 0; v <= t; v++) { + var g = v / t + e(g, m, c), + i.push(c.x, c.y, c.z), + g - s >= 0 + ? (e(g - s, m, u), h.subVectors(c, u)) + : (e(g + s, m, u), h.subVectors(u, c)), + m - s >= 0 + ? (e(g, m - s, u), d.subVectors(c, u)) + : (e(g, m + s, u), d.subVectors(u, c)), + l.crossVectors(h, d).normalize(), + o.push(l.x, l.y, l.z), + a.push(g, m) + } + for (var y = 0; y < n; y++) + for (var b = 0; b < t; b++) { + var A = y * p + b, + w = y * p + b + 1, + x = (y + 1) * p + b + 1, + E = (y + 1) * p + b + r.push(A, w, E), r.push(w, x, E) + } + this.setIndex(r), + this.setAttribute('position', new Wi(i, 3)), + this.setAttribute('normal', new Wi(o, 3)), + this.setAttribute('uv', new Wi(a, 2)) + } + ;(Au.prototype = Object.create(ro.prototype)), (Au.prototype.constructor = Au) + var wu = (function (e) { + function t(t, n, r, i, o, a) { + var s + void 0 === t && (t = 0.5), + void 0 === n && (n = 1), + void 0 === r && (r = 8), + void 0 === i && (i = 1), + void 0 === o && (o = 0), + void 0 === a && (a = 2 * Math.PI), + ((s = e.call(this) || this).type = 'RingGeometry'), + (s.parameters = { + innerRadius: t, + outerRadius: n, + thetaSegments: r, + phiSegments: i, + thetaStart: o, + thetaLength: a, + }), + (r = Math.max(3, r)) + for ( + var l = [], + c = [], + u = [], + h = [], + d = t, + p = (n - t) / (i = Math.max(1, i)), + f = new lr(), + m = new Jn(), + v = 0; + v <= i; + v++ + ) { + for (var g = 0; g <= r; g++) { + var y = o + (g / r) * a + ;(f.x = d * Math.cos(y)), + (f.y = d * Math.sin(y)), + c.push(f.x, f.y, f.z), + u.push(0, 0, 1), + (m.x = (f.x / n + 1) / 2), + (m.y = (f.y / n + 1) / 2), + h.push(m.x, m.y) + } + d += p + } + for (var b = 0; b < i; b++) + for (var A = b * (r + 1), w = 0; w < r; w++) { + var x = w + A, + E = x, + M = x + r + 1, + _ = x + r + 2, + T = x + 1 + l.push(E, M, T), l.push(M, _, T) + } + return ( + s.setIndex(l), + s.setAttribute('position', new Wi(c, 3)), + s.setAttribute('normal', new Wi(u, 3)), + s.setAttribute('uv', new Wi(h, 2)), + s + ) + } + return Gn(t, e), t + })(ro), + xu = (function (e) { + function t(t, n) { + var r + void 0 === n && (n = 12), + ((r = e.call(this) || this).type = 'ShapeGeometry'), + (r.parameters = { shapes: t, curveSegments: n }) + var i = [], + o = [], + a = [], + s = [], + l = 0, + c = 0 + if (!1 === Array.isArray(t)) h(t) + else + for (var u = 0; u < t.length; u++) + h(t[u]), r.addGroup(l, c, u), (l += c), (c = 0) + function h(e) { + var t = o.length / 3, + r = e.extractPoints(n), + l = r.shape, + u = r.holes + !1 === hu.isClockWise(l) && (l = l.reverse()) + for (var h = 0, d = u.length; h < d; h++) { + var p = u[h] + !0 === hu.isClockWise(p) && (u[h] = p.reverse()) + } + for ( + var f = hu.triangulateShape(l, u), m = 0, v = u.length; + m < v; + m++ + ) { + var g = u[m] + l = l.concat(g) + } + for (var y = 0, b = l.length; y < b; y++) { + var A = l[y] + o.push(A.x, A.y, 0), a.push(0, 0, 1), s.push(A.x, A.y) + } + for (var w = 0, x = f.length; w < x; w++) { + var E = f[w], + M = E[0] + t, + _ = E[1] + t, + T = E[2] + t + i.push(M, _, T), (c += 3) + } + } + return ( + r.setIndex(i), + r.setAttribute('position', new Wi(o, 3)), + r.setAttribute('normal', new Wi(a, 3)), + r.setAttribute('uv', new Wi(s, 2)), + r + ) + } + return ( + Gn(t, e), + (t.prototype.toJSON = function () { + var e = ro.prototype.toJSON.call(this) + return Eu(this.parameters.shapes, e) + }), + t + ) + })(ro) + function Eu(e, t) { + if (((t.shapes = []), Array.isArray(e))) + for (var n = 0, r = e.length; n < r; n++) { + var i = e[n] + t.shapes.push(i.uuid) + } + else t.shapes.push(e.uuid) + return t + } + var Mu = (function (e) { + function t(t, n, r, i, o, a, s) { + var l + void 0 === t && (t = 1), + void 0 === n && (n = 8), + void 0 === r && (r = 6), + void 0 === i && (i = 0), + void 0 === o && (o = 2 * Math.PI), + void 0 === a && (a = 0), + void 0 === s && (s = Math.PI), + ((l = e.call(this) || this).type = 'SphereGeometry'), + (l.parameters = { + radius: t, + widthSegments: n, + heightSegments: r, + phiStart: i, + phiLength: o, + thetaStart: a, + thetaLength: s, + }), + (n = Math.max(3, Math.floor(n))), + (r = Math.max(2, Math.floor(r))) + for ( + var c = Math.min(a + s, Math.PI), + u = 0, + h = [], + d = new lr(), + p = new lr(), + f = [], + m = [], + v = [], + g = [], + y = 0; + y <= r; + y++ + ) { + var b = [], + A = y / r, + w = 0 + 0 == y && 0 == a + ? (w = 0.5 / n) + : y == r && c == Math.PI && (w = -0.5 / n) + for (var x = 0; x <= n; x++) { + var E = x / n + ;(d.x = -t * Math.cos(i + E * o) * Math.sin(a + A * s)), + (d.y = t * Math.cos(a + A * s)), + (d.z = t * Math.sin(i + E * o) * Math.sin(a + A * s)), + m.push(d.x, d.y, d.z), + p.copy(d).normalize(), + v.push(p.x, p.y, p.z), + g.push(E + w, 1 - A), + b.push(u++) + } + h.push(b) + } + for (var M = 0; M < r; M++) + for (var _ = 0; _ < n; _++) { + var T = h[M][_ + 1], + S = h[M][_], + C = h[M + 1][_], + L = h[M + 1][_ + 1] + ;(0 !== M || a > 0) && f.push(T, S, L), + (M !== r - 1 || c < Math.PI) && f.push(S, C, L) + } + return ( + l.setIndex(f), + l.setAttribute('position', new Wi(m, 3)), + l.setAttribute('normal', new Wi(v, 3)), + l.setAttribute('uv', new Wi(g, 2)), + l + ) + } + return Gn(t, e), t + })(ro), + _u = (function (e) { + function t(t, n) { + var r + void 0 === t && (t = 1), void 0 === n && (n = 0) + var i = [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1], + o = [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1] + return ( + ((r = e.call(this, i, o, t, n) || this).type = 'TetrahedronGeometry'), + (r.parameters = { radius: t, detail: n }), + r + ) + } + return Gn(t, e), t + })(Tc), + Tu = (function (e) { + function t(t, n) { + var r + void 0 === n && (n = {}) + var i = n.font + if (!i || !i.isFont) + return ( + console.error( + 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.', + ), + new ro() || zn(r) + ) + var o = i.generateShapes(t, n.size) + return ( + (n.depth = void 0 !== n.height ? n.height : 50), + void 0 === n.bevelThickness && (n.bevelThickness = 10), + void 0 === n.bevelSize && (n.bevelSize = 8), + void 0 === n.bevelEnabled && (n.bevelEnabled = !1), + ((r = e.call(this, o, n) || this).type = 'TextGeometry'), + r + ) + } + return Gn(t, e), t + })(fu), + Su = (function (e) { + function t(t, n, r, i, o) { + var a + void 0 === t && (t = 1), + void 0 === n && (n = 0.4), + void 0 === r && (r = 8), + void 0 === i && (i = 6), + void 0 === o && (o = 2 * Math.PI), + ((a = e.call(this) || this).type = 'TorusGeometry'), + (a.parameters = { + radius: t, + tube: n, + radialSegments: r, + tubularSegments: i, + arc: o, + }), + (r = Math.floor(r)), + (i = Math.floor(i)) + for ( + var s = [], + l = [], + c = [], + u = [], + h = new lr(), + d = new lr(), + p = new lr(), + f = 0; + f <= r; + f++ + ) + for (var m = 0; m <= i; m++) { + var v = (m / i) * o, + g = (f / r) * Math.PI * 2 + ;(d.x = (t + n * Math.cos(g)) * Math.cos(v)), + (d.y = (t + n * Math.cos(g)) * Math.sin(v)), + (d.z = n * Math.sin(g)), + l.push(d.x, d.y, d.z), + (h.x = t * Math.cos(v)), + (h.y = t * Math.sin(v)), + p.subVectors(d, h).normalize(), + c.push(p.x, p.y, p.z), + u.push(m / i), + u.push(f / r) + } + for (var y = 1; y <= r; y++) + for (var b = 1; b <= i; b++) { + var A = (i + 1) * y + b - 1, + w = (i + 1) * (y - 1) + b - 1, + x = (i + 1) * (y - 1) + b, + E = (i + 1) * y + b + s.push(A, w, E), s.push(w, x, E) + } + return ( + a.setIndex(s), + a.setAttribute('position', new Wi(l, 3)), + a.setAttribute('normal', new Wi(c, 3)), + a.setAttribute('uv', new Wi(u, 2)), + a + ) + } + return Gn(t, e), t + })(ro), + Cu = (function (e) { + function t(t, n, r, i, o, a) { + var s + void 0 === t && (t = 1), + void 0 === n && (n = 0.4), + void 0 === r && (r = 64), + void 0 === i && (i = 8), + void 0 === o && (o = 2), + void 0 === a && (a = 3), + ((s = e.call(this) || this).type = 'TorusKnotGeometry'), + (s.parameters = { + radius: t, + tube: n, + tubularSegments: r, + radialSegments: i, + p: o, + q: a, + }), + (r = Math.floor(r)), + (i = Math.floor(i)) + for ( + var l = [], + c = [], + u = [], + h = [], + d = new lr(), + p = new lr(), + f = new lr(), + m = new lr(), + v = new lr(), + g = new lr(), + y = new lr(), + b = 0; + b <= r; + ++b + ) { + var A = (b / r) * o * Math.PI * 2 + P(A, o, a, t, f), + P(A + 0.01, o, a, t, m), + g.subVectors(m, f), + y.addVectors(m, f), + v.crossVectors(g, y), + y.crossVectors(v, g), + v.normalize(), + y.normalize() + for (var w = 0; w <= i; ++w) { + var x = (w / i) * Math.PI * 2, + E = -n * Math.cos(x), + M = n * Math.sin(x) + ;(d.x = f.x + (E * y.x + M * v.x)), + (d.y = f.y + (E * y.y + M * v.y)), + (d.z = f.z + (E * y.z + M * v.z)), + c.push(d.x, d.y, d.z), + p.subVectors(d, f).normalize(), + u.push(p.x, p.y, p.z), + h.push(b / r), + h.push(w / i) + } + } + for (var _ = 1; _ <= r; _++) + for (var T = 1; T <= i; T++) { + var S = (i + 1) * (_ - 1) + (T - 1), + C = (i + 1) * _ + (T - 1), + L = (i + 1) * _ + T, + R = (i + 1) * (_ - 1) + T + l.push(S, C, R), l.push(C, L, R) + } + function P(e, t, n, r, i) { + var o = Math.cos(e), + a = Math.sin(e), + s = (n / t) * e, + l = Math.cos(s) + ;(i.x = r * (2 + l) * 0.5 * o), + (i.y = r * (2 + l) * a * 0.5), + (i.z = r * Math.sin(s) * 0.5) + } + return ( + s.setIndex(l), + s.setAttribute('position', new Wi(c, 3)), + s.setAttribute('normal', new Wi(u, 3)), + s.setAttribute('uv', new Wi(h, 2)), + s + ) + } + return Gn(t, e), t + })(ro), + Lu = (function (e) { + function t(t, n, r, i, o) { + var a + void 0 === n && (n = 64), + void 0 === r && (r = 1), + void 0 === i && (i = 8), + void 0 === o && (o = !1), + ((a = e.call(this) || this).type = 'TubeGeometry'), + (a.parameters = { + path: t, + tubularSegments: n, + radius: r, + radialSegments: i, + closed: o, + }) + var s = t.computeFrenetFrames(n, o) + ;(a.tangents = s.tangents), + (a.normals = s.normals), + (a.binormals = s.binormals) + var l = new lr(), + c = new lr(), + u = new Jn(), + h = new lr(), + d = [], + p = [], + f = [], + m = [] + function v() { + for (var e = 0; e < n; e++) g(e) + g(!1 === o ? n : 0), b(), y() + } + function g(e) { + h = t.getPointAt(e / n, h) + for (var o = s.normals[e], a = s.binormals[e], u = 0; u <= i; u++) { + var f = (u / i) * Math.PI * 2, + m = Math.sin(f), + v = -Math.cos(f) + ;(c.x = v * o.x + m * a.x), + (c.y = v * o.y + m * a.y), + (c.z = v * o.z + m * a.z), + c.normalize(), + p.push(c.x, c.y, c.z), + (l.x = h.x + r * c.x), + (l.y = h.y + r * c.y), + (l.z = h.z + r * c.z), + d.push(l.x, l.y, l.z) + } + } + function y() { + for (var e = 1; e <= n; e++) + for (var t = 1; t <= i; t++) { + var r = (i + 1) * (e - 1) + (t - 1), + o = (i + 1) * e + (t - 1), + a = (i + 1) * e + t, + s = (i + 1) * (e - 1) + t + m.push(r, o, s), m.push(o, a, s) + } + } + function b() { + for (var e = 0; e <= n; e++) + for (var t = 0; t <= i; t++) + (u.x = e / n), (u.y = t / i), f.push(u.x, u.y) + } + return ( + v(), + a.setIndex(m), + a.setAttribute('position', new Wi(d, 3)), + a.setAttribute('normal', new Wi(p, 3)), + a.setAttribute('uv', new Wi(f, 2)), + a + ) + } + return ( + Gn(t, e), + (t.prototype.toJSON = function () { + var e = ro.prototype.toJSON.call(this) + return (e.path = this.parameters.path.toJSON()), e + }), + t + ) + })(ro), + Ru = (function (e) { + function t(t) { + var n + if ( + (((n = e.call(this) || this).type = 'WireframeGeometry'), + !0 === t.isGeometry) + ) + return ( + console.error( + 'THREE.WireframeGeometry no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.', + ), + zn(n) + ) + var r = [], + i = [0, 0], + o = {}, + a = new lr() + if (null !== t.index) { + var s = t.attributes.position, + l = t.index, + c = t.groups + 0 === c.length && (c = [{ start: 0, count: l.count, materialIndex: 0 }]) + for (var u = 0, h = c.length; u < h; ++u) + for (var d = c[u], p = d.start, f = p, m = p + d.count; f < m; f += 3) + for (var v = 0; v < 3; v++) { + var g = l.getX(f + v), + y = l.getX(f + ((v + 1) % 3)) + ;(i[0] = Math.min(g, y)), (i[1] = Math.max(g, y)) + var b = i[0] + ',' + i[1] + void 0 === o[b] && (o[b] = { index1: i[0], index2: i[1] }) + } + for (var A in o) { + var w = o[A] + a.fromBufferAttribute(s, w.index1), + r.push(a.x, a.y, a.z), + a.fromBufferAttribute(s, w.index2), + r.push(a.x, a.y, a.z) + } + } else + for (var x = t.attributes.position, E = 0, M = x.count / 3; E < M; E++) + for (var _ = 0; _ < 3; _++) { + var T = 3 * E + _ + a.fromBufferAttribute(x, T), r.push(a.x, a.y, a.z) + var S = 3 * E + ((_ + 1) % 3) + a.fromBufferAttribute(x, S), r.push(a.x, a.y, a.z) + } + return n.setAttribute('position', new Wi(r, 3)), n + } + return Gn(t, e), t + })(ro), + Pu = Object.freeze({ + __proto__: null, + BoxGeometry: _o, + BoxBufferGeometry: _o, + CircleGeometry: Ec, + CircleBufferGeometry: Ec, + ConeGeometry: _c, + ConeBufferGeometry: _c, + CylinderGeometry: Mc, + CylinderBufferGeometry: Mc, + DodecahedronGeometry: Sc, + DodecahedronBufferGeometry: Sc, + EdgesGeometry: Dc, + ExtrudeGeometry: fu, + ExtrudeBufferGeometry: fu, + IcosahedronGeometry: gu, + IcosahedronBufferGeometry: gu, + LatheGeometry: yu, + LatheBufferGeometry: yu, + OctahedronGeometry: bu, + OctahedronBufferGeometry: bu, + ParametricGeometry: Au, + ParametricBufferGeometry: Au, + PlaneGeometry: Wo, + PlaneBufferGeometry: Wo, + PolyhedronGeometry: Tc, + PolyhedronBufferGeometry: Tc, + RingGeometry: wu, + RingBufferGeometry: wu, + ShapeGeometry: xu, + ShapeBufferGeometry: xu, + SphereGeometry: Mu, + SphereBufferGeometry: Mu, + TetrahedronGeometry: _u, + TetrahedronBufferGeometry: _u, + TextGeometry: Tu, + TextBufferGeometry: Tu, + TorusGeometry: Su, + TorusBufferGeometry: Su, + TorusKnotGeometry: Cu, + TorusKnotBufferGeometry: Cu, + TubeGeometry: Lu, + TubeBufferGeometry: Lu, + WireframeGeometry: Ru, + }) + function Du(e) { + Di.call(this), + (this.type = 'ShadowMaterial'), + (this.color = new Li(0)), + (this.transparent = !0), + this.setValues(e) + } + function Ou(e) { + Po.call(this, e), (this.type = 'RawShaderMaterial') + } + function Iu(e) { + Di.call(this), + (this.defines = { STANDARD: '' }), + (this.type = 'MeshStandardMaterial'), + (this.color = new Li(16777215)), + (this.roughness = 1), + (this.metalness = 0), + (this.map = null), + (this.lightMap = null), + (this.lightMapIntensity = 1), + (this.aoMap = null), + (this.aoMapIntensity = 1), + (this.emissive = new Li(0)), + (this.emissiveIntensity = 1), + (this.emissiveMap = null), + (this.bumpMap = null), + (this.bumpScale = 1), + (this.normalMap = null), + (this.normalMapType = ln), + (this.normalScale = new Jn(1, 1)), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.roughnessMap = null), + (this.metalnessMap = null), + (this.alphaMap = null), + (this.envMap = null), + (this.envMapIntensity = 1), + (this.refractionRatio = 0.98), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.wireframeLinecap = 'round'), + (this.wireframeLinejoin = 'round'), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + (this.vertexTangents = !1), + this.setValues(e) + } + function Bu(e) { + Iu.call(this), + (this.defines = { STANDARD: '', PHYSICAL: '' }), + (this.type = 'MeshPhysicalMaterial'), + (this.clearcoat = 0), + (this.clearcoatMap = null), + (this.clearcoatRoughness = 0), + (this.clearcoatRoughnessMap = null), + (this.clearcoatNormalScale = new Jn(1, 1)), + (this.clearcoatNormalMap = null), + (this.reflectivity = 0.5), + Object.defineProperty(this, 'ior', { + get: function () { + return (1 + 0.4 * this.reflectivity) / (1 - 0.4 * this.reflectivity) + }, + set: function (e) { + this.reflectivity = Kn.clamp((2.5 * (e - 1)) / (e + 1), 0, 1) + }, + }), + (this.sheen = null), + (this.transmission = 0), + (this.transmissionMap = null), + this.setValues(e) + } + function Fu(e) { + Di.call(this), + (this.type = 'MeshPhongMaterial'), + (this.color = new Li(16777215)), + (this.specular = new Li(1118481)), + (this.shininess = 30), + (this.map = null), + (this.lightMap = null), + (this.lightMapIntensity = 1), + (this.aoMap = null), + (this.aoMapIntensity = 1), + (this.emissive = new Li(0)), + (this.emissiveIntensity = 1), + (this.emissiveMap = null), + (this.bumpMap = null), + (this.bumpScale = 1), + (this.normalMap = null), + (this.normalMapType = ln), + (this.normalScale = new Jn(1, 1)), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.specularMap = null), + (this.alphaMap = null), + (this.envMap = null), + (this.combine = Z), + (this.reflectivity = 1), + (this.refractionRatio = 0.98), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.wireframeLinecap = 'round'), + (this.wireframeLinejoin = 'round'), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + this.setValues(e) + } + function ku(e) { + Di.call(this), + (this.defines = { TOON: '' }), + (this.type = 'MeshToonMaterial'), + (this.color = new Li(16777215)), + (this.map = null), + (this.gradientMap = null), + (this.lightMap = null), + (this.lightMapIntensity = 1), + (this.aoMap = null), + (this.aoMapIntensity = 1), + (this.emissive = new Li(0)), + (this.emissiveIntensity = 1), + (this.emissiveMap = null), + (this.bumpMap = null), + (this.bumpScale = 1), + (this.normalMap = null), + (this.normalMapType = ln), + (this.normalScale = new Jn(1, 1)), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.alphaMap = null), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.wireframeLinecap = 'round'), + (this.wireframeLinejoin = 'round'), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + this.setValues(e) + } + function Nu(e) { + Di.call(this), + (this.type = 'MeshNormalMaterial'), + (this.bumpMap = null), + (this.bumpScale = 1), + (this.normalMap = null), + (this.normalMapType = ln), + (this.normalScale = new Jn(1, 1)), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.fog = !1), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + this.setValues(e) + } + function Uu(e) { + Di.call(this), + (this.type = 'MeshLambertMaterial'), + (this.color = new Li(16777215)), + (this.map = null), + (this.lightMap = null), + (this.lightMapIntensity = 1), + (this.aoMap = null), + (this.aoMapIntensity = 1), + (this.emissive = new Li(0)), + (this.emissiveIntensity = 1), + (this.emissiveMap = null), + (this.specularMap = null), + (this.alphaMap = null), + (this.envMap = null), + (this.combine = Z), + (this.reflectivity = 1), + (this.refractionRatio = 0.98), + (this.wireframe = !1), + (this.wireframeLinewidth = 1), + (this.wireframeLinecap = 'round'), + (this.wireframeLinejoin = 'round'), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + this.setValues(e) + } + function Hu(e) { + Di.call(this), + (this.defines = { MATCAP: '' }), + (this.type = 'MeshMatcapMaterial'), + (this.color = new Li(16777215)), + (this.matcap = null), + (this.map = null), + (this.bumpMap = null), + (this.bumpScale = 1), + (this.normalMap = null), + (this.normalMapType = ln), + (this.normalScale = new Jn(1, 1)), + (this.displacementMap = null), + (this.displacementScale = 1), + (this.displacementBias = 0), + (this.alphaMap = null), + (this.skinning = !1), + (this.morphTargets = !1), + (this.morphNormals = !1), + this.setValues(e) + } + function Gu(e) { + tc.call(this), + (this.type = 'LineDashedMaterial'), + (this.scale = 1), + (this.dashSize = 3), + (this.gapSize = 1), + this.setValues(e) + } + ;(Du.prototype = Object.create(Di.prototype)), + (Du.prototype.constructor = Du), + (Du.prototype.isShadowMaterial = !0), + (Du.prototype.copy = function (e) { + return Di.prototype.copy.call(this, e), this.color.copy(e.color), this + }), + (Ou.prototype = Object.create(Po.prototype)), + (Ou.prototype.constructor = Ou), + (Ou.prototype.isRawShaderMaterial = !0), + (Iu.prototype = Object.create(Di.prototype)), + (Iu.prototype.constructor = Iu), + (Iu.prototype.isMeshStandardMaterial = !0), + (Iu.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + (this.defines = { STANDARD: '' }), + this.color.copy(e.color), + (this.roughness = e.roughness), + (this.metalness = e.metalness), + (this.map = e.map), + (this.lightMap = e.lightMap), + (this.lightMapIntensity = e.lightMapIntensity), + (this.aoMap = e.aoMap), + (this.aoMapIntensity = e.aoMapIntensity), + this.emissive.copy(e.emissive), + (this.emissiveMap = e.emissiveMap), + (this.emissiveIntensity = e.emissiveIntensity), + (this.bumpMap = e.bumpMap), + (this.bumpScale = e.bumpScale), + (this.normalMap = e.normalMap), + (this.normalMapType = e.normalMapType), + this.normalScale.copy(e.normalScale), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.roughnessMap = e.roughnessMap), + (this.metalnessMap = e.metalnessMap), + (this.alphaMap = e.alphaMap), + (this.envMap = e.envMap), + (this.envMapIntensity = e.envMapIntensity), + (this.refractionRatio = e.refractionRatio), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.wireframeLinecap = e.wireframeLinecap), + (this.wireframeLinejoin = e.wireframeLinejoin), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + (this.vertexTangents = e.vertexTangents), + this + ) + }), + (Bu.prototype = Object.create(Iu.prototype)), + (Bu.prototype.constructor = Bu), + (Bu.prototype.isMeshPhysicalMaterial = !0), + (Bu.prototype.copy = function (e) { + return ( + Iu.prototype.copy.call(this, e), + (this.defines = { STANDARD: '', PHYSICAL: '' }), + (this.clearcoat = e.clearcoat), + (this.clearcoatMap = e.clearcoatMap), + (this.clearcoatRoughness = e.clearcoatRoughness), + (this.clearcoatRoughnessMap = e.clearcoatRoughnessMap), + (this.clearcoatNormalMap = e.clearcoatNormalMap), + this.clearcoatNormalScale.copy(e.clearcoatNormalScale), + (this.reflectivity = e.reflectivity), + e.sheen + ? (this.sheen = (this.sheen || new Li()).copy(e.sheen)) + : (this.sheen = null), + (this.transmission = e.transmission), + (this.transmissionMap = e.transmissionMap), + this + ) + }), + (Fu.prototype = Object.create(Di.prototype)), + (Fu.prototype.constructor = Fu), + (Fu.prototype.isMeshPhongMaterial = !0), + (Fu.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + this.specular.copy(e.specular), + (this.shininess = e.shininess), + (this.map = e.map), + (this.lightMap = e.lightMap), + (this.lightMapIntensity = e.lightMapIntensity), + (this.aoMap = e.aoMap), + (this.aoMapIntensity = e.aoMapIntensity), + this.emissive.copy(e.emissive), + (this.emissiveMap = e.emissiveMap), + (this.emissiveIntensity = e.emissiveIntensity), + (this.bumpMap = e.bumpMap), + (this.bumpScale = e.bumpScale), + (this.normalMap = e.normalMap), + (this.normalMapType = e.normalMapType), + this.normalScale.copy(e.normalScale), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.specularMap = e.specularMap), + (this.alphaMap = e.alphaMap), + (this.envMap = e.envMap), + (this.combine = e.combine), + (this.reflectivity = e.reflectivity), + (this.refractionRatio = e.refractionRatio), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.wireframeLinecap = e.wireframeLinecap), + (this.wireframeLinejoin = e.wireframeLinejoin), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + this + ) + }), + (ku.prototype = Object.create(Di.prototype)), + (ku.prototype.constructor = ku), + (ku.prototype.isMeshToonMaterial = !0), + (ku.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.map = e.map), + (this.gradientMap = e.gradientMap), + (this.lightMap = e.lightMap), + (this.lightMapIntensity = e.lightMapIntensity), + (this.aoMap = e.aoMap), + (this.aoMapIntensity = e.aoMapIntensity), + this.emissive.copy(e.emissive), + (this.emissiveMap = e.emissiveMap), + (this.emissiveIntensity = e.emissiveIntensity), + (this.bumpMap = e.bumpMap), + (this.bumpScale = e.bumpScale), + (this.normalMap = e.normalMap), + (this.normalMapType = e.normalMapType), + this.normalScale.copy(e.normalScale), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.alphaMap = e.alphaMap), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.wireframeLinecap = e.wireframeLinecap), + (this.wireframeLinejoin = e.wireframeLinejoin), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + this + ) + }), + (Nu.prototype = Object.create(Di.prototype)), + (Nu.prototype.constructor = Nu), + (Nu.prototype.isMeshNormalMaterial = !0), + (Nu.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + (this.bumpMap = e.bumpMap), + (this.bumpScale = e.bumpScale), + (this.normalMap = e.normalMap), + (this.normalMapType = e.normalMapType), + this.normalScale.copy(e.normalScale), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + this + ) + }), + (Uu.prototype = Object.create(Di.prototype)), + (Uu.prototype.constructor = Uu), + (Uu.prototype.isMeshLambertMaterial = !0), + (Uu.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.map = e.map), + (this.lightMap = e.lightMap), + (this.lightMapIntensity = e.lightMapIntensity), + (this.aoMap = e.aoMap), + (this.aoMapIntensity = e.aoMapIntensity), + this.emissive.copy(e.emissive), + (this.emissiveMap = e.emissiveMap), + (this.emissiveIntensity = e.emissiveIntensity), + (this.specularMap = e.specularMap), + (this.alphaMap = e.alphaMap), + (this.envMap = e.envMap), + (this.combine = e.combine), + (this.reflectivity = e.reflectivity), + (this.refractionRatio = e.refractionRatio), + (this.wireframe = e.wireframe), + (this.wireframeLinewidth = e.wireframeLinewidth), + (this.wireframeLinecap = e.wireframeLinecap), + (this.wireframeLinejoin = e.wireframeLinejoin), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + this + ) + }), + (Hu.prototype = Object.create(Di.prototype)), + (Hu.prototype.constructor = Hu), + (Hu.prototype.isMeshMatcapMaterial = !0), + (Hu.prototype.copy = function (e) { + return ( + Di.prototype.copy.call(this, e), + (this.defines = { MATCAP: '' }), + this.color.copy(e.color), + (this.matcap = e.matcap), + (this.map = e.map), + (this.bumpMap = e.bumpMap), + (this.bumpScale = e.bumpScale), + (this.normalMap = e.normalMap), + (this.normalMapType = e.normalMapType), + this.normalScale.copy(e.normalScale), + (this.displacementMap = e.displacementMap), + (this.displacementScale = e.displacementScale), + (this.displacementBias = e.displacementBias), + (this.alphaMap = e.alphaMap), + (this.skinning = e.skinning), + (this.morphTargets = e.morphTargets), + (this.morphNormals = e.morphNormals), + this + ) + }), + (Gu.prototype = Object.create(tc.prototype)), + (Gu.prototype.constructor = Gu), + (Gu.prototype.isLineDashedMaterial = !0), + (Gu.prototype.copy = function (e) { + return ( + tc.prototype.copy.call(this, e), + (this.scale = e.scale), + (this.dashSize = e.dashSize), + (this.gapSize = e.gapSize), + this + ) + }) + var zu = Object.freeze({ + __proto__: null, + ShadowMaterial: Du, + SpriteMaterial: xl, + RawShaderMaterial: Ou, + ShaderMaterial: Po, + PointsMaterial: dc, + MeshPhysicalMaterial: Bu, + MeshStandardMaterial: Iu, + MeshPhongMaterial: Fu, + MeshToonMaterial: ku, + MeshNormalMaterial: Nu, + MeshLambertMaterial: Uu, + MeshDepthMaterial: Qs, + MeshDistanceMaterial: Zs, + MeshBasicMaterial: Oi, + MeshMatcapMaterial: Hu, + LineDashedMaterial: Gu, + LineBasicMaterial: tc, + Material: Di, + }), + ju = { + arraySlice: function (e, t, n) { + return ju.isTypedArray(e) + ? new e.constructor(e.subarray(t, void 0 !== n ? n : e.length)) + : e.slice(t, n) + }, + convertArray: function (e, t, n) { + return !e || (!n && e.constructor === t) + ? e + : 'number' === typeof t.BYTES_PER_ELEMENT + ? new t(e) + : Array.prototype.slice.call(e) + }, + isTypedArray: function (e) { + return ArrayBuffer.isView(e) && !(e instanceof DataView) + }, + getKeyframeOrder: function (e) { + function t(t, n) { + return e[t] - e[n] + } + for (var n = e.length, r = new Array(n), i = 0; i !== n; ++i) r[i] = i + return r.sort(t), r + }, + sortedArray: function (e, t, n) { + for ( + var r = e.length, i = new e.constructor(r), o = 0, a = 0; + a !== r; + ++o + ) + for (var s = n[o] * t, l = 0; l !== t; ++l) i[a++] = e[s + l] + return i + }, + flattenJSON: function (e, t, n, r) { + for (var i = 1, o = e[0]; void 0 !== o && void 0 === o[r]; ) o = e[i++] + if (void 0 !== o) { + var a = o[r] + if (void 0 !== a) + if (Array.isArray(a)) + do { + void 0 !== (a = o[r]) && (t.push(o.time), n.push.apply(n, a)), + (o = e[i++]) + } while (void 0 !== o) + else if (void 0 !== a.toArray) + do { + void 0 !== (a = o[r]) && (t.push(o.time), a.toArray(n, n.length)), + (o = e[i++]) + } while (void 0 !== o) + else + do { + void 0 !== (a = o[r]) && (t.push(o.time), n.push(a)), (o = e[i++]) + } while (void 0 !== o) + } + }, + subclip: function (e, t, n, r, i) { + void 0 === i && (i = 30) + var o = e.clone() + o.name = t + for (var a = [], s = 0; s < o.tracks.length; ++s) { + for ( + var l = o.tracks[s], c = l.getValueSize(), u = [], h = [], d = 0; + d < l.times.length; + ++d + ) { + var p = l.times[d] * i + if (!(p < n || p >= r)) { + u.push(l.times[d]) + for (var f = 0; f < c; ++f) h.push(l.values[d * c + f]) + } + } + 0 !== u.length && + ((l.times = ju.convertArray(u, l.times.constructor)), + (l.values = ju.convertArray(h, l.values.constructor)), + a.push(l)) + } + o.tracks = a + for (var m = 1 / 0, v = 0; v < o.tracks.length; ++v) + m > o.tracks[v].times[0] && (m = o.tracks[v].times[0]) + for (var g = 0; g < o.tracks.length; ++g) o.tracks[g].shift(-1 * m) + return o.resetDuration(), o + }, + makeClipAdditive: function (e, t, n, r) { + void 0 === t && (t = 0), + void 0 === n && (n = e), + void 0 === r && (r = 30), + r <= 0 && (r = 30) + for ( + var i = n.tracks.length, + o = t / r, + a = function (t) { + var r = n.tracks[t], + i = r.ValueTypeName + if ('bool' === i || 'string' === i) return 'continue' + var a = e.tracks.find(function (e) { + return e.name === r.name && e.ValueTypeName === i + }) + if (void 0 === a) return 'continue' + var s = 0, + l = r.getValueSize() + r.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline && + (s = l / 3) + var c = 0, + u = a.getValueSize() + a.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline && + (c = u / 3) + var h = r.times.length - 1, + d = void 0 + if (o <= r.times[0]) { + var p = s, + f = l - s + d = ju.arraySlice(r.values, p, f) + } else if (o >= r.times[h]) { + var m = h * l + s, + v = m + l - s + d = ju.arraySlice(r.values, m, v) + } else { + var g = r.createInterpolant(), + y = s, + b = l - s + g.evaluate(o), (d = ju.arraySlice(g.resultBuffer, y, b)) + } + 'quaternion' === i && + new sr().fromArray(d).normalize().conjugate().toArray(d) + for (var A = a.times.length, w = 0; w < A; ++w) { + var x = w * u + c + if ('quaternion' === i) + sr.multiplyQuaternionsFlat(a.values, x, d, 0, a.values, x) + else + for (var E = u - 2 * c, M = 0; M < E; ++M) + a.values[x + M] -= d[M] + } + }, + s = 0; + s < i; + ++s + ) + a(s) + return (e.blendMode = Xt), e + }, + } + function Vu(e, t, n, r) { + ;(this.parameterPositions = e), + (this._cachedIndex = 0), + (this.resultBuffer = void 0 !== r ? r : new t.constructor(n)), + (this.sampleValues = t), + (this.valueSize = n) + } + function Wu(e, t, n, r) { + Vu.call(this, e, t, n, r), + (this._weightPrev = -0), + (this._offsetPrev = -0), + (this._weightNext = -0), + (this._offsetNext = -0) + } + function qu(e, t, n, r) { + Vu.call(this, e, t, n, r) + } + function Xu(e, t, n, r) { + Vu.call(this, e, t, n, r) + } + function Yu(e, t, n, r) { + if (void 0 === e) + throw new Error('THREE.KeyframeTrack: track name is undefined') + if (void 0 === t || 0 === t.length) + throw new Error('THREE.KeyframeTrack: no keyframes in track named ' + e) + ;(this.name = e), + (this.times = ju.convertArray(t, this.TimeBufferType)), + (this.values = ju.convertArray(n, this.ValueBufferType)), + this.setInterpolation(r || this.DefaultInterpolation) + } + function Qu(e, t, n) { + Yu.call(this, e, t, n) + } + function Zu(e, t, n, r) { + Yu.call(this, e, t, n, r) + } + function Ku(e, t, n, r) { + Yu.call(this, e, t, n, r) + } + function Ju(e, t, n, r) { + Vu.call(this, e, t, n, r) + } + function $u(e, t, n, r) { + Yu.call(this, e, t, n, r) + } + function eh(e, t, n, r) { + Yu.call(this, e, t, n, r) + } + function th(e, t, n, r) { + Yu.call(this, e, t, n, r) + } + function nh(e, t, n, r) { + void 0 === t && (t = -1), + void 0 === r && (r = qt), + (this.name = e), + (this.tracks = n), + (this.duration = t), + (this.blendMode = r), + (this.uuid = Kn.generateUUID()), + this.duration < 0 && this.resetDuration() + } + function rh(e) { + switch (e.toLowerCase()) { + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + return Ku + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + return th + case 'color': + return Zu + case 'quaternion': + return $u + case 'bool': + case 'boolean': + return Qu + case 'string': + return eh + } + throw new Error('THREE.KeyframeTrack: Unsupported typeName: ' + e) + } + function ih(e) { + if (void 0 === e.type) + throw new Error('THREE.KeyframeTrack: track type undefined, can not parse') + var t = rh(e.type) + if (void 0 === e.times) { + var n = [], + r = [] + ju.flattenJSON(e.keys, n, r, 'value'), (e.times = n), (e.values = r) + } + return void 0 !== t.parse + ? t.parse(e) + : new t(e.name, e.times, e.values, e.interpolation) + } + Object.assign(Vu.prototype, { + evaluate: function (e) { + var t = this.parameterPositions, + n = this._cachedIndex, + r = t[n], + i = t[n - 1] + e: { + t: { + var o + n: { + r: if (!(e < r)) { + for (var a = n + 2; ; ) { + if (void 0 === r) { + if (e < i) break r + return ( + (n = t.length), + (this._cachedIndex = n), + this.afterEnd_(n - 1, e, i) + ) + } + if (n === a) break + if (((i = r), e < (r = t[++n]))) break t + } + o = t.length + break n + } + if (e >= i) break e + var s = t[1] + e < s && ((n = 2), (i = s)) + for (var l = n - 2; ; ) { + if (void 0 === i) + return (this._cachedIndex = 0), this.beforeStart_(0, e, r) + if (n === l) break + if (((r = i), e >= (i = t[--n - 1]))) break t + } + ;(o = n), (n = 0) + } + for (; n < o; ) { + var c = (n + o) >>> 1 + e < t[c] ? (o = c) : (n = c + 1) + } + if (((r = t[n]), void 0 === (i = t[n - 1]))) + return (this._cachedIndex = 0), this.beforeStart_(0, e, r) + if (void 0 === r) + return ( + (n = t.length), (this._cachedIndex = n), this.afterEnd_(n - 1, i, e) + ) + } + ;(this._cachedIndex = n), this.intervalChanged_(n, i, r) + } + return this.interpolate_(n, i, e, r) + }, + settings: null, + DefaultSettings_: {}, + getSettings_: function () { + return this.settings || this.DefaultSettings_ + }, + copySampleValue_: function (e) { + for ( + var t = this.resultBuffer, + n = this.sampleValues, + r = this.valueSize, + i = e * r, + o = 0; + o !== r; + ++o + ) + t[o] = n[i + o] + return t + }, + interpolate_: function () { + throw new Error('call to abstract method') + }, + intervalChanged_: function () {}, + }), + Object.assign(Vu.prototype, { + beforeStart_: Vu.prototype.copySampleValue_, + afterEnd_: Vu.prototype.copySampleValue_, + }), + (Wu.prototype = Object.assign(Object.create(Vu.prototype), { + constructor: Wu, + DefaultSettings_: { endingStart: jt, endingEnd: jt }, + intervalChanged_: function (e, t, n) { + var r = this.parameterPositions, + i = e - 2, + o = e + 1, + a = r[i], + s = r[o] + if (void 0 === a) + switch (this.getSettings_().endingStart) { + case Vt: + ;(i = e), (a = 2 * t - n) + break + case Wt: + a = t + r[(i = r.length - 2)] - r[i + 1] + break + default: + ;(i = e), (a = n) + } + if (void 0 === s) + switch (this.getSettings_().endingEnd) { + case Vt: + ;(o = e), (s = 2 * n - t) + break + case Wt: + ;(o = 1), (s = n + r[1] - r[0]) + break + default: + ;(o = e - 1), (s = t) + } + var l = 0.5 * (n - t), + c = this.valueSize + ;(this._weightPrev = l / (t - a)), + (this._weightNext = l / (s - n)), + (this._offsetPrev = i * c), + (this._offsetNext = o * c) + }, + interpolate_: function (e, t, n, r) { + for ( + var i = this.resultBuffer, + o = this.sampleValues, + a = this.valueSize, + s = e * a, + l = s - a, + c = this._offsetPrev, + u = this._offsetNext, + h = this._weightPrev, + d = this._weightNext, + p = (n - t) / (r - t), + f = p * p, + m = f * p, + v = -h * m + 2 * h * f - h * p, + g = (1 + h) * m + (-1.5 - 2 * h) * f + (-0.5 + h) * p + 1, + y = (-1 - d) * m + (1.5 + d) * f + 0.5 * p, + b = d * m - d * f, + A = 0; + A !== a; + ++A + ) + i[A] = v * o[c + A] + g * o[l + A] + y * o[s + A] + b * o[u + A] + return i + }, + })), + (qu.prototype = Object.assign(Object.create(Vu.prototype), { + constructor: qu, + interpolate_: function (e, t, n, r) { + for ( + var i = this.resultBuffer, + o = this.sampleValues, + a = this.valueSize, + s = e * a, + l = s - a, + c = (n - t) / (r - t), + u = 1 - c, + h = 0; + h !== a; + ++h + ) + i[h] = o[l + h] * u + o[s + h] * c + return i + }, + })), + (Xu.prototype = Object.assign(Object.create(Vu.prototype), { + constructor: Xu, + interpolate_: function (e) { + return this.copySampleValue_(e - 1) + }, + })), + Object.assign(Yu, { + toJSON: function (e) { + var t, + n = e.constructor + if (void 0 !== n.toJSON) t = n.toJSON(e) + else { + t = { + name: e.name, + times: ju.convertArray(e.times, Array), + values: ju.convertArray(e.values, Array), + } + var r = e.getInterpolation() + r !== e.DefaultInterpolation && (t.interpolation = r) + } + return (t.type = e.ValueTypeName), t + }, + }), + Object.assign(Yu.prototype, { + constructor: Yu, + TimeBufferType: Float32Array, + ValueBufferType: Float32Array, + DefaultInterpolation: Gt, + InterpolantFactoryMethodDiscrete: function (e) { + return new Xu(this.times, this.values, this.getValueSize(), e) + }, + InterpolantFactoryMethodLinear: function (e) { + return new qu(this.times, this.values, this.getValueSize(), e) + }, + InterpolantFactoryMethodSmooth: function (e) { + return new Wu(this.times, this.values, this.getValueSize(), e) + }, + setInterpolation: function (e) { + var t + switch (e) { + case Ht: + t = this.InterpolantFactoryMethodDiscrete + break + case Gt: + t = this.InterpolantFactoryMethodLinear + break + case zt: + t = this.InterpolantFactoryMethodSmooth + } + if (void 0 === t) { + var n = + 'unsupported interpolation for ' + + this.ValueTypeName + + ' keyframe track named ' + + this.name + if (void 0 === this.createInterpolant) { + if (e === this.DefaultInterpolation) throw new Error(n) + this.setInterpolation(this.DefaultInterpolation) + } + return console.warn('THREE.KeyframeTrack:', n), this + } + return (this.createInterpolant = t), this + }, + getInterpolation: function () { + switch (this.createInterpolant) { + case this.InterpolantFactoryMethodDiscrete: + return Ht + case this.InterpolantFactoryMethodLinear: + return Gt + case this.InterpolantFactoryMethodSmooth: + return zt + } + }, + getValueSize: function () { + return this.values.length / this.times.length + }, + shift: function (e) { + if (0 !== e) + for (var t = this.times, n = 0, r = t.length; n !== r; ++n) t[n] += e + return this + }, + scale: function (e) { + if (1 !== e) + for (var t = this.times, n = 0, r = t.length; n !== r; ++n) t[n] *= e + return this + }, + trim: function (e, t) { + for ( + var n = this.times, r = n.length, i = 0, o = r - 1; + i !== r && n[i] < e; + + ) + ++i + for (; -1 !== o && n[o] > t; ) --o + if ((++o, 0 !== i || o !== r)) { + i >= o && (i = (o = Math.max(o, 1)) - 1) + var a = this.getValueSize() + ;(this.times = ju.arraySlice(n, i, o)), + (this.values = ju.arraySlice(this.values, i * a, o * a)) + } + return this + }, + validate: function () { + var e = !0, + t = this.getValueSize() + t - Math.floor(t) !== 0 && + (console.error( + 'THREE.KeyframeTrack: Invalid value size in track.', + this, + ), + (e = !1)) + var n = this.times, + r = this.values, + i = n.length + 0 === i && + (console.error('THREE.KeyframeTrack: Track is empty.', this), (e = !1)) + for (var o = null, a = 0; a !== i; a++) { + var s = n[a] + if ('number' === typeof s && isNaN(s)) { + console.error( + 'THREE.KeyframeTrack: Time is not a valid number.', + this, + a, + s, + ), + (e = !1) + break + } + if (null !== o && o > s) { + console.error( + 'THREE.KeyframeTrack: Out of order keys.', + this, + a, + s, + o, + ), + (e = !1) + break + } + o = s + } + if (void 0 !== r && ju.isTypedArray(r)) + for (var l = 0, c = r.length; l !== c; ++l) { + var u = r[l] + if (isNaN(u)) { + console.error( + 'THREE.KeyframeTrack: Value is not a valid number.', + this, + l, + u, + ), + (e = !1) + break + } + } + return e + }, + optimize: function () { + for ( + var e = ju.arraySlice(this.times), + t = ju.arraySlice(this.values), + n = this.getValueSize(), + r = this.getInterpolation() === zt, + i = e.length - 1, + o = 1, + a = 1; + a < i; + ++a + ) { + var s = !1, + l = e[a] + if (l !== e[a + 1] && (1 !== a || l !== e[0])) + if (r) s = !0 + else + for (var c = a * n, u = c - n, h = c + n, d = 0; d !== n; ++d) { + var p = t[c + d] + if (p !== t[u + d] || p !== t[h + d]) { + s = !0 + break + } + } + if (s) { + if (a !== o) { + e[o] = e[a] + for (var f = a * n, m = o * n, v = 0; v !== n; ++v) + t[m + v] = t[f + v] + } + ++o + } + } + if (i > 0) { + e[o] = e[i] + for (var g = i * n, y = o * n, b = 0; b !== n; ++b) t[y + b] = t[g + b] + ++o + } + return ( + o !== e.length + ? ((this.times = ju.arraySlice(e, 0, o)), + (this.values = ju.arraySlice(t, 0, o * n))) + : ((this.times = e), (this.values = t)), + this + ) + }, + clone: function () { + var e = ju.arraySlice(this.times, 0), + t = ju.arraySlice(this.values, 0), + n = new (0, this.constructor)(this.name, e, t) + return (n.createInterpolant = this.createInterpolant), n + }, + }), + (Qu.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: Qu, + ValueTypeName: 'bool', + ValueBufferType: Array, + DefaultInterpolation: Ht, + InterpolantFactoryMethodLinear: void 0, + InterpolantFactoryMethodSmooth: void 0, + })), + (Zu.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: Zu, + ValueTypeName: 'color', + })), + (Ku.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: Ku, + ValueTypeName: 'number', + })), + (Ju.prototype = Object.assign(Object.create(Vu.prototype), { + constructor: Ju, + interpolate_: function (e, t, n, r) { + for ( + var i = this.resultBuffer, + o = this.sampleValues, + a = this.valueSize, + s = (n - t) / (r - t), + l = e * a, + c = l + a; + l !== c; + l += 4 + ) + sr.slerpFlat(i, 0, o, l - a, o, l, s) + return i + }, + })), + ($u.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: $u, + ValueTypeName: 'quaternion', + DefaultInterpolation: Gt, + InterpolantFactoryMethodLinear: function (e) { + return new Ju(this.times, this.values, this.getValueSize(), e) + }, + InterpolantFactoryMethodSmooth: void 0, + })), + (eh.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: eh, + ValueTypeName: 'string', + ValueBufferType: Array, + DefaultInterpolation: Ht, + InterpolantFactoryMethodLinear: void 0, + InterpolantFactoryMethodSmooth: void 0, + })), + (th.prototype = Object.assign(Object.create(Yu.prototype), { + constructor: th, + ValueTypeName: 'vector', + })), + Object.assign(nh, { + parse: function (e) { + for ( + var t = [], n = e.tracks, r = 1 / (e.fps || 1), i = 0, o = n.length; + i !== o; + ++i + ) + t.push(ih(n[i]).scale(r)) + var a = new nh(e.name, e.duration, t, e.blendMode) + return (a.uuid = e.uuid), a + }, + toJSON: function (e) { + for ( + var t = [], + n = e.tracks, + r = { + name: e.name, + duration: e.duration, + tracks: t, + uuid: e.uuid, + blendMode: e.blendMode, + }, + i = 0, + o = n.length; + i !== o; + ++i + ) + t.push(Yu.toJSON(n[i])) + return r + }, + CreateFromMorphTargetSequence: function (e, t, n, r) { + for (var i = t.length, o = [], a = 0; a < i; a++) { + var s = [], + l = [] + s.push((a + i - 1) % i, a, (a + 1) % i), l.push(0, 1, 0) + var c = ju.getKeyframeOrder(s) + ;(s = ju.sortedArray(s, 1, c)), + (l = ju.sortedArray(l, 1, c)), + r || 0 !== s[0] || (s.push(i), l.push(l[0])), + o.push( + new Ku('.morphTargetInfluences[' + t[a].name + ']', s, l).scale( + 1 / n, + ), + ) + } + return new nh(e, -1, o) + }, + findByName: function (e, t) { + var n = e + if (!Array.isArray(e)) { + var r = e + n = (r.geometry && r.geometry.animations) || r.animations + } + for (var i = 0; i < n.length; i++) if (n[i].name === t) return n[i] + return null + }, + CreateClipsFromMorphTargetSequences: function (e, t, n) { + for ( + var r = {}, i = /^([\w-]*?)([\d]+)$/, o = 0, a = e.length; + o < a; + o++ + ) { + var s = e[o], + l = s.name.match(i) + if (l && l.length > 1) { + var c = l[1], + u = r[c] + u || (r[c] = u = []), u.push(s) + } + } + var h = [] + for (var d in r) h.push(nh.CreateFromMorphTargetSequence(d, r[d], t, n)) + return h + }, + parseAnimation: function (e, t) { + if (!e) + return ( + console.error( + 'THREE.AnimationClip: No animation in JSONLoader data.', + ), + null + ) + for ( + var n = function (e, t, n, r, i) { + if (0 !== n.length) { + var o = [], + a = [] + ju.flattenJSON(n, o, a, r), + 0 !== o.length && i.push(new e(t, o, a)) + } + }, + r = [], + i = e.name || 'default', + o = e.fps || 30, + a = e.blendMode, + s = e.length || -1, + l = e.hierarchy || [], + c = 0; + c < l.length; + c++ + ) { + var u = l[c].keys + if (u && 0 !== u.length) + if (u[0].morphTargets) { + var h = {}, + d = void 0 + for (d = 0; d < u.length; d++) + if (u[d].morphTargets) + for (var p = 0; p < u[d].morphTargets.length; p++) + h[u[d].morphTargets[p]] = -1 + for (var f in h) { + for ( + var m = [], v = [], g = 0; + g !== u[d].morphTargets.length; + ++g + ) { + var y = u[d] + m.push(y.time), v.push(y.morphTarget === f ? 1 : 0) + } + r.push(new Ku('.morphTargetInfluence[' + f + ']', m, v)) + } + s = h.length * (o || 1) + } else { + var b = '.bones[' + t[c].name + ']' + n(th, b + '.position', u, 'pos', r), + n($u, b + '.quaternion', u, 'rot', r), + n(th, b + '.scale', u, 'scl', r) + } + } + return 0 === r.length ? null : new nh(i, s, r, a) + }, + }), + Object.assign(nh.prototype, { + resetDuration: function () { + for (var e = 0, t = 0, n = this.tracks.length; t !== n; ++t) { + var r = this.tracks[t] + e = Math.max(e, r.times[r.times.length - 1]) + } + return (this.duration = e), this + }, + trim: function () { + for (var e = 0; e < this.tracks.length; e++) + this.tracks[e].trim(0, this.duration) + return this + }, + validate: function () { + for (var e = !0, t = 0; t < this.tracks.length; t++) + e = e && this.tracks[t].validate() + return e + }, + optimize: function () { + for (var e = 0; e < this.tracks.length; e++) this.tracks[e].optimize() + return this + }, + clone: function () { + for (var e = [], t = 0; t < this.tracks.length; t++) + e.push(this.tracks[t].clone()) + return new nh(this.name, this.duration, e, this.blendMode) + }, + toJSON: function () { + return nh.toJSON(this) + }, + }) + var oh = { + enabled: !1, + files: {}, + add: function (e, t) { + !1 !== this.enabled && (this.files[e] = t) + }, + get: function (e) { + if (!1 !== this.enabled) return this.files[e] + }, + remove: function (e) { + delete this.files[e] + }, + clear: function () { + this.files = {} + }, + } + function ah(e, t, n) { + var r = this, + i = !1, + o = 0, + a = 0, + s = void 0, + l = [] + ;(this.onStart = void 0), + (this.onLoad = e), + (this.onProgress = t), + (this.onError = n), + (this.itemStart = function (e) { + a++, !1 === i && void 0 !== r.onStart && r.onStart(e, o, a), (i = !0) + }), + (this.itemEnd = function (e) { + o++, + void 0 !== r.onProgress && r.onProgress(e, o, a), + o === a && ((i = !1), void 0 !== r.onLoad && r.onLoad()) + }), + (this.itemError = function (e) { + void 0 !== r.onError && r.onError(e) + }), + (this.resolveURL = function (e) { + return s ? s(e) : e + }), + (this.setURLModifier = function (e) { + return (s = e), this + }), + (this.addHandler = function (e, t) { + return l.push(e, t), this + }), + (this.removeHandler = function (e) { + var t = l.indexOf(e) + return -1 !== t && l.splice(t, 2), this + }), + (this.getHandler = function (e) { + for (var t = 0, n = l.length; t < n; t += 2) { + var r = l[t], + i = l[t + 1] + if ((r.global && (r.lastIndex = 0), r.test(e))) return i + } + return null + }) + } + var sh = new ah() + function lh(e) { + ;(this.manager = void 0 !== e ? e : sh), + (this.crossOrigin = 'anonymous'), + (this.withCredentials = !1), + (this.path = ''), + (this.resourcePath = ''), + (this.requestHeader = {}) + } + Object.assign(lh.prototype, { + load: function () {}, + loadAsync: function (e, t) { + var n = this + return new Promise(function (r, i) { + n.load(e, r, t, i) + }) + }, + parse: function () {}, + setCrossOrigin: function (e) { + return (this.crossOrigin = e), this + }, + setWithCredentials: function (e) { + return (this.withCredentials = e), this + }, + setPath: function (e) { + return (this.path = e), this + }, + setResourcePath: function (e) { + return (this.resourcePath = e), this + }, + setRequestHeader: function (e) { + return (this.requestHeader = e), this + }, + }) + var ch = {} + function uh(e) { + lh.call(this, e) + } + function hh(e) { + lh.call(this, e) + } + function dh(e) { + lh.call(this, e) + } + function ph(e) { + lh.call(this, e) + } + function fh(e) { + lh.call(this, e) + } + function mh(e) { + lh.call(this, e) + } + function vh(e) { + lh.call(this, e) + } + function gh() { + ;(this.type = 'Curve'), (this.arcLengthDivisions = 200) + } + function yh(e, t, n, r, i, o, a, s) { + gh.call(this), + (this.type = 'EllipseCurve'), + (this.aX = e || 0), + (this.aY = t || 0), + (this.xRadius = n || 1), + (this.yRadius = r || 1), + (this.aStartAngle = i || 0), + (this.aEndAngle = o || 2 * Math.PI), + (this.aClockwise = a || !1), + (this.aRotation = s || 0) + } + function bh(e, t, n, r, i, o) { + yh.call(this, e, t, n, n, r, i, o), (this.type = 'ArcCurve') + } + function Ah() { + var e = 0, + t = 0, + n = 0, + r = 0 + function i(i, o, a, s) { + ;(e = i), + (t = a), + (n = -3 * i + 3 * o - 2 * a - s), + (r = 2 * i - 2 * o + a + s) + } + return { + initCatmullRom: function (e, t, n, r, o) { + i(t, n, o * (n - e), o * (r - t)) + }, + initNonuniformCatmullRom: function (e, t, n, r, o, a, s) { + var l = (t - e) / o - (n - e) / (o + a) + (n - t) / a, + c = (n - t) / a - (r - t) / (a + s) + (r - n) / s + i(t, n, (l *= a), (c *= a)) + }, + calc: function (i) { + var o = i * i + return e + t * i + n * o + r * (o * i) + }, + } + } + ;(uh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: uh, + load: function (e, t, n, r) { + void 0 === e && (e = ''), + void 0 !== this.path && (e = this.path + e), + (e = this.manager.resolveURL(e)) + var i = this, + o = oh.get(e) + if (void 0 !== o) + return ( + i.manager.itemStart(e), + setTimeout(function () { + t && t(o), i.manager.itemEnd(e) + }, 0), + o + ) + if (void 0 === ch[e]) { + var a, + s = /^data:(.*?)(;base64)?,(.*)$/, + l = e.match(s) + if (l) { + var c = l[1], + u = !!l[2], + h = l[3] + ;(h = decodeURIComponent(h)), u && (h = atob(h)) + try { + var d, + p = (this.responseType || '').toLowerCase() + switch (p) { + case 'arraybuffer': + case 'blob': + for (var f = new Uint8Array(h.length), m = 0; m < h.length; m++) + f[m] = h.charCodeAt(m) + d = 'blob' === p ? new Blob([f.buffer], { type: c }) : f.buffer + break + case 'document': + var v = new DOMParser() + d = v.parseFromString(h, c) + break + case 'json': + d = JSON.parse(h) + break + default: + d = h + } + setTimeout(function () { + t && t(d), i.manager.itemEnd(e) + }, 0) + } catch (y) { + setTimeout(function () { + r && r(y), i.manager.itemError(e), i.manager.itemEnd(e) + }, 0) + } + } else { + for (var g in ((ch[e] = []), + ch[e].push({ onLoad: t, onProgress: n, onError: r }), + (a = new XMLHttpRequest()).open('GET', e, !0), + a.addEventListener( + 'load', + function (t) { + var n = this.response, + r = ch[e] + if ((delete ch[e], 200 === this.status || 0 === this.status)) { + 0 === this.status && + console.warn('THREE.FileLoader: HTTP Status 0 received.'), + oh.add(e, n) + for (var o = 0, a = r.length; o < a; o++) { + var s = r[o] + s.onLoad && s.onLoad(n) + } + i.manager.itemEnd(e) + } else { + for (var l = 0, c = r.length; l < c; l++) { + var u = r[l] + u.onError && u.onError(t) + } + i.manager.itemError(e), i.manager.itemEnd(e) + } + }, + !1, + ), + a.addEventListener( + 'progress', + function (t) { + for (var n = ch[e], r = 0, i = n.length; r < i; r++) { + var o = n[r] + o.onProgress && o.onProgress(t) + } + }, + !1, + ), + a.addEventListener( + 'error', + function (t) { + var n = ch[e] + delete ch[e] + for (var r = 0, o = n.length; r < o; r++) { + var a = n[r] + a.onError && a.onError(t) + } + i.manager.itemError(e), i.manager.itemEnd(e) + }, + !1, + ), + a.addEventListener( + 'abort', + function (t) { + var n = ch[e] + delete ch[e] + for (var r = 0, o = n.length; r < o; r++) { + var a = n[r] + a.onError && a.onError(t) + } + i.manager.itemError(e), i.manager.itemEnd(e) + }, + !1, + ), + void 0 !== this.responseType && (a.responseType = this.responseType), + void 0 !== this.withCredentials && + (a.withCredentials = this.withCredentials), + a.overrideMimeType && + a.overrideMimeType( + void 0 !== this.mimeType ? this.mimeType : 'text/plain', + ), + this.requestHeader)) + a.setRequestHeader(g, this.requestHeader[g]) + a.send(null) + } + return i.manager.itemStart(e), a + } + ch[e].push({ onLoad: t, onProgress: n, onError: r }) + }, + setResponseType: function (e) { + return (this.responseType = e), this + }, + setMimeType: function (e) { + return (this.mimeType = e), this + }, + })), + (hh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: hh, + load: function (t, n, r, i) { + var o = this, + a = new uh(o.manager) + a.setPath(o.path), + a.setRequestHeader(o.requestHeader), + a.setWithCredentials(o.withCredentials), + a.load( + t, + function (r) { + try { + n(o.parse(JSON.parse(r))) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + parse: function (e) { + for (var t = [], n = 0; n < e.length; n++) { + var r = nh.parse(e[n]) + t.push(r) + } + return t + }, + })), + (dh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: dh, + load: function (e, t, n, r) { + var i = this, + o = [], + a = new Ac(), + s = new uh(this.manager) + s.setPath(this.path), + s.setResponseType('arraybuffer'), + s.setRequestHeader(this.requestHeader), + s.setWithCredentials(i.withCredentials) + var l = 0 + function c(c) { + s.load( + e[c], + function (e) { + var n = i.parse(e, !0) + ;(o[c] = { + width: n.width, + height: n.height, + format: n.format, + mipmaps: n.mipmaps, + }), + 6 === (l += 1) && + (1 === n.mipmapCount && (a.minFilter = Ae), + (a.image = o), + (a.format = n.format), + (a.needsUpdate = !0), + t && t(a)) + }, + n, + r, + ) + } + if (Array.isArray(e)) for (var u = 0, h = e.length; u < h; ++u) c(u) + else + s.load( + e, + function (e) { + var n = i.parse(e, !0) + if (n.isCubemap) { + for ( + var r = n.mipmaps.length / n.mipmapCount, s = 0; + s < r; + s++ + ) { + o[s] = { mipmaps: [] } + for (var l = 0; l < n.mipmapCount; l++) + o[s].mipmaps.push(n.mipmaps[s * n.mipmapCount + l]), + (o[s].format = n.format), + (o[s].width = n.width), + (o[s].height = n.height) + } + a.image = o + } else + (a.image.width = n.width), + (a.image.height = n.height), + (a.mipmaps = n.mipmaps) + 1 === n.mipmapCount && (a.minFilter = Ae), + (a.format = n.format), + (a.needsUpdate = !0), + t && t(a) + }, + n, + r, + ) + return a + }, + })), + (ph.prototype = Object.assign(Object.create(lh.prototype), { + constructor: ph, + load: function (e, t, n, r) { + void 0 !== this.path && (e = this.path + e), + (e = this.manager.resolveURL(e)) + var i = this, + o = oh.get(e) + if (void 0 !== o) + return ( + i.manager.itemStart(e), + setTimeout(function () { + t && t(o), i.manager.itemEnd(e) + }, 0), + o + ) + var a = document.createElementNS('http://www.w3.org/1999/xhtml', 'img') + function s() { + a.removeEventListener('load', s, !1), + a.removeEventListener('error', l, !1), + oh.add(e, this), + t && t(this), + i.manager.itemEnd(e) + } + function l(t) { + a.removeEventListener('load', s, !1), + a.removeEventListener('error', l, !1), + r && r(t), + i.manager.itemError(e), + i.manager.itemEnd(e) + } + return ( + a.addEventListener('load', s, !1), + a.addEventListener('error', l, !1), + 'data:' !== e.substr(0, 5) && + void 0 !== this.crossOrigin && + (a.crossOrigin = this.crossOrigin), + i.manager.itemStart(e), + (a.src = e), + a + ) + }, + })), + (fh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: fh, + load: function (e, t, n, r) { + var i = new ko(), + o = new ph(this.manager) + o.setCrossOrigin(this.crossOrigin), o.setPath(this.path) + var a = 0 + function s(n) { + o.load( + e[n], + function (e) { + ;(i.images[n] = e), 6 === ++a && ((i.needsUpdate = !0), t && t(i)) + }, + void 0, + r, + ) + } + for (var l = 0; l < e.length; ++l) s(l) + return i + }, + })), + (mh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: mh, + load: function (e, t, n, r) { + var i = this, + o = new Uo(), + a = new uh(this.manager) + return ( + a.setResponseType('arraybuffer'), + a.setRequestHeader(this.requestHeader), + a.setPath(this.path), + a.setWithCredentials(i.withCredentials), + a.load( + e, + function (e) { + var n = i.parse(e) + n && + (void 0 !== n.image + ? (o.image = n.image) + : void 0 !== n.data && + ((o.image.width = n.width), + (o.image.height = n.height), + (o.image.data = n.data)), + (o.wrapS = void 0 !== n.wrapS ? n.wrapS : pe), + (o.wrapT = void 0 !== n.wrapT ? n.wrapT : pe), + (o.magFilter = void 0 !== n.magFilter ? n.magFilter : Ae), + (o.minFilter = void 0 !== n.minFilter ? n.minFilter : Ae), + (o.anisotropy = void 0 !== n.anisotropy ? n.anisotropy : 1), + void 0 !== n.encoding && (o.encoding = n.encoding), + void 0 !== n.flipY && (o.flipY = n.flipY), + void 0 !== n.format && (o.format = n.format), + void 0 !== n.type && (o.type = n.type), + void 0 !== n.mipmaps && + ((o.mipmaps = n.mipmaps), (o.minFilter = Ee)), + 1 === n.mipmapCount && (o.minFilter = Ae), + (o.needsUpdate = !0), + t && t(o, n)) + }, + n, + r, + ), + o + ) + }, + })), + (vh.prototype = Object.assign(Object.create(lh.prototype), { + constructor: vh, + load: function (e, t, n, r) { + var i = new nr(), + o = new ph(this.manager) + return ( + o.setCrossOrigin(this.crossOrigin), + o.setPath(this.path), + o.load( + e, + function (n) { + i.image = n + var r = + e.search(/\.jpe?g($|\?)/i) > 0 || + 0 === e.search(/^data\:image\/jpeg/) + ;(i.format = r ? Ne : Ue), + (i.needsUpdate = !0), + void 0 !== t && t(i) + }, + n, + r, + ), + i + ) + }, + })), + Object.assign(gh.prototype, { + getPoint: function () { + return console.warn('THREE.Curve: .getPoint() not implemented.'), null + }, + getPointAt: function (e, t) { + var n = this.getUtoTmapping(e) + return this.getPoint(n, t) + }, + getPoints: function (e) { + void 0 === e && (e = 5) + for (var t = [], n = 0; n <= e; n++) t.push(this.getPoint(n / e)) + return t + }, + getSpacedPoints: function (e) { + void 0 === e && (e = 5) + for (var t = [], n = 0; n <= e; n++) t.push(this.getPointAt(n / e)) + return t + }, + getLength: function () { + var e = this.getLengths() + return e[e.length - 1] + }, + getLengths: function (e) { + if ( + (void 0 === e && (e = this.arcLengthDivisions), + this.cacheArcLengths && + this.cacheArcLengths.length === e + 1 && + !this.needsUpdate) + ) + return this.cacheArcLengths + this.needsUpdate = !1 + var t, + n = [], + r = this.getPoint(0), + i = 0 + n.push(0) + for (var o = 1; o <= e; o++) + (i += (t = this.getPoint(o / e)).distanceTo(r)), n.push(i), (r = t) + return (this.cacheArcLengths = n), n + }, + updateArcLengths: function () { + ;(this.needsUpdate = !0), this.getLengths() + }, + getUtoTmapping: function (e, t) { + var n, + r = this.getLengths(), + i = 0, + o = r.length + n = t || e * r[o - 1] + for (var a, s = 0, l = o - 1; s <= l; ) + if ((a = r[(i = Math.floor(s + (l - s) / 2))] - n) < 0) s = i + 1 + else { + if (!(a > 0)) { + l = i + break + } + l = i - 1 + } + if (r[(i = l)] === n) return i / (o - 1) + var c = r[i] + return (i + (n - c) / (r[i + 1] - c)) / (o - 1) + }, + getTangent: function (e, t) { + var n = 1e-4, + r = e - n, + i = e + n + r < 0 && (r = 0), i > 1 && (i = 1) + var o = this.getPoint(r), + a = this.getPoint(i), + s = t || (o.isVector2 ? new Jn() : new lr()) + return s.copy(a).sub(o).normalize(), s + }, + getTangentAt: function (e, t) { + var n = this.getUtoTmapping(e) + return this.getTangent(n, t) + }, + computeFrenetFrames: function (e, t) { + for ( + var n = new lr(), + r = [], + i = [], + o = [], + a = new lr(), + s = new Fr(), + l = 0; + l <= e; + l++ + ) { + var c = l / e + ;(r[l] = this.getTangentAt(c, new lr())), r[l].normalize() + } + ;(i[0] = new lr()), (o[0] = new lr()) + var u = Number.MAX_VALUE, + h = Math.abs(r[0].x), + d = Math.abs(r[0].y), + p = Math.abs(r[0].z) + h <= u && ((u = h), n.set(1, 0, 0)), + d <= u && ((u = d), n.set(0, 1, 0)), + p <= u && n.set(0, 0, 1), + a.crossVectors(r[0], n).normalize(), + i[0].crossVectors(r[0], a), + o[0].crossVectors(r[0], i[0]) + for (var f = 1; f <= e; f++) { + if ( + ((i[f] = i[f - 1].clone()), + (o[f] = o[f - 1].clone()), + a.crossVectors(r[f - 1], r[f]), + a.length() > Number.EPSILON) + ) { + a.normalize() + var m = Math.acos(Kn.clamp(r[f - 1].dot(r[f]), -1, 1)) + i[f].applyMatrix4(s.makeRotationAxis(a, m)) + } + o[f].crossVectors(r[f], i[f]) + } + if (!0 === t) { + var v = Math.acos(Kn.clamp(i[0].dot(i[e]), -1, 1)) + ;(v /= e), r[0].dot(a.crossVectors(i[0], i[e])) > 0 && (v = -v) + for (var g = 1; g <= e; g++) + i[g].applyMatrix4(s.makeRotationAxis(r[g], v * g)), + o[g].crossVectors(r[g], i[g]) + } + return { tangents: r, normals: i, binormals: o } + }, + clone: function () { + return new this.constructor().copy(this) + }, + copy: function (e) { + return (this.arcLengthDivisions = e.arcLengthDivisions), this + }, + toJSON: function () { + var e = { + metadata: { version: 4.5, type: 'Curve', generator: 'Curve.toJSON' }, + } + return ( + (e.arcLengthDivisions = this.arcLengthDivisions), + (e.type = this.type), + e + ) + }, + fromJSON: function (e) { + return (this.arcLengthDivisions = e.arcLengthDivisions), this + }, + }), + (yh.prototype = Object.create(gh.prototype)), + (yh.prototype.constructor = yh), + (yh.prototype.isEllipseCurve = !0), + (yh.prototype.getPoint = function (e, t) { + for ( + var n = t || new Jn(), + r = 2 * Math.PI, + i = this.aEndAngle - this.aStartAngle, + o = Math.abs(i) < Number.EPSILON; + i < 0; + + ) + i += r + for (; i > r; ) i -= r + i < Number.EPSILON && (i = o ? 0 : r), + !0 !== this.aClockwise || o || (i === r ? (i = -r) : (i -= r)) + var a = this.aStartAngle + e * i, + s = this.aX + this.xRadius * Math.cos(a), + l = this.aY + this.yRadius * Math.sin(a) + if (0 !== this.aRotation) { + var c = Math.cos(this.aRotation), + u = Math.sin(this.aRotation), + h = s - this.aX, + d = l - this.aY + ;(s = h * c - d * u + this.aX), (l = h * u + d * c + this.aY) + } + return n.set(s, l) + }), + (yh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + (this.aX = e.aX), + (this.aY = e.aY), + (this.xRadius = e.xRadius), + (this.yRadius = e.yRadius), + (this.aStartAngle = e.aStartAngle), + (this.aEndAngle = e.aEndAngle), + (this.aClockwise = e.aClockwise), + (this.aRotation = e.aRotation), + this + ) + }), + (yh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return ( + (e.aX = this.aX), + (e.aY = this.aY), + (e.xRadius = this.xRadius), + (e.yRadius = this.yRadius), + (e.aStartAngle = this.aStartAngle), + (e.aEndAngle = this.aEndAngle), + (e.aClockwise = this.aClockwise), + (e.aRotation = this.aRotation), + e + ) + }), + (yh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + (this.aX = e.aX), + (this.aY = e.aY), + (this.xRadius = e.xRadius), + (this.yRadius = e.yRadius), + (this.aStartAngle = e.aStartAngle), + (this.aEndAngle = e.aEndAngle), + (this.aClockwise = e.aClockwise), + (this.aRotation = e.aRotation), + this + ) + }), + (bh.prototype = Object.create(yh.prototype)), + (bh.prototype.constructor = bh), + (bh.prototype.isArcCurve = !0) + var wh = new lr(), + xh = new Ah(), + Eh = new Ah(), + Mh = new Ah() + function _h(e, t, n, r) { + void 0 === e && (e = []), + void 0 === t && (t = !1), + void 0 === n && (n = 'centripetal'), + void 0 === r && (r = 0.5), + gh.call(this), + (this.type = 'CatmullRomCurve3'), + (this.points = e), + (this.closed = t), + (this.curveType = n), + (this.tension = r) + } + function Th(e, t, n, r, i) { + var o = 0.5 * (r - t), + a = 0.5 * (i - n), + s = e * e + return ( + (2 * n - 2 * r + o + a) * (e * s) + + (-3 * n + 3 * r - 2 * o - a) * s + + o * e + + n + ) + } + function Sh(e, t) { + var n = 1 - e + return n * n * t + } + function Ch(e, t) { + return 2 * (1 - e) * e * t + } + function Lh(e, t) { + return e * e * t + } + function Rh(e, t, n, r) { + return Sh(e, t) + Ch(e, n) + Lh(e, r) + } + function Ph(e, t) { + var n = 1 - e + return n * n * n * t + } + function Dh(e, t) { + var n = 1 - e + return 3 * n * n * e * t + } + function Oh(e, t) { + return 3 * (1 - e) * e * e * t + } + function Ih(e, t) { + return e * e * e * t + } + function Bh(e, t, n, r, i) { + return Ph(e, t) + Dh(e, n) + Oh(e, r) + Ih(e, i) + } + function Fh(e, t, n, r) { + void 0 === e && (e = new Jn()), + void 0 === t && (t = new Jn()), + void 0 === n && (n = new Jn()), + void 0 === r && (r = new Jn()), + gh.call(this), + (this.type = 'CubicBezierCurve'), + (this.v0 = e), + (this.v1 = t), + (this.v2 = n), + (this.v3 = r) + } + function kh(e, t, n, r) { + void 0 === e && (e = new lr()), + void 0 === t && (t = new lr()), + void 0 === n && (n = new lr()), + void 0 === r && (r = new lr()), + gh.call(this), + (this.type = 'CubicBezierCurve3'), + (this.v0 = e), + (this.v1 = t), + (this.v2 = n), + (this.v3 = r) + } + function Nh(e, t) { + void 0 === e && (e = new Jn()), + void 0 === t && (t = new Jn()), + gh.call(this), + (this.type = 'LineCurve'), + (this.v1 = e), + (this.v2 = t) + } + function Uh(e, t) { + void 0 === e && (e = new lr()), + void 0 === t && (t = new lr()), + gh.call(this), + (this.type = 'LineCurve3'), + (this.v1 = e), + (this.v2 = t) + } + function Hh(e, t, n) { + void 0 === e && (e = new Jn()), + void 0 === t && (t = new Jn()), + void 0 === n && (n = new Jn()), + gh.call(this), + (this.type = 'QuadraticBezierCurve'), + (this.v0 = e), + (this.v1 = t), + (this.v2 = n) + } + function Gh(e, t, n) { + void 0 === e && (e = new lr()), + void 0 === t && (t = new lr()), + void 0 === n && (n = new lr()), + gh.call(this), + (this.type = 'QuadraticBezierCurve3'), + (this.v0 = e), + (this.v1 = t), + (this.v2 = n) + } + function zh(e) { + void 0 === e && (e = []), + gh.call(this), + (this.type = 'SplineCurve'), + (this.points = e) + } + ;(_h.prototype = Object.create(gh.prototype)), + (_h.prototype.constructor = _h), + (_h.prototype.isCatmullRomCurve3 = !0), + (_h.prototype.getPoint = function (e, t) { + void 0 === t && (t = new lr()) + var n, + r, + i = t, + o = this.points, + a = o.length, + s = (a - (this.closed ? 0 : 1)) * e, + l = Math.floor(s), + c = s - l + this.closed + ? (l += l > 0 ? 0 : (Math.floor(Math.abs(l) / a) + 1) * a) + : 0 === c && l === a - 1 && ((l = a - 2), (c = 1)), + this.closed || l > 0 + ? (n = o[(l - 1) % a]) + : (wh.subVectors(o[0], o[1]).add(o[0]), (n = wh)) + var u = o[l % a], + h = o[(l + 1) % a] + if ( + (this.closed || l + 2 < a + ? (r = o[(l + 2) % a]) + : (wh.subVectors(o[a - 1], o[a - 2]).add(o[a - 1]), (r = wh)), + 'centripetal' === this.curveType || 'chordal' === this.curveType) + ) { + var d = 'chordal' === this.curveType ? 0.5 : 0.25, + p = Math.pow(n.distanceToSquared(u), d), + f = Math.pow(u.distanceToSquared(h), d), + m = Math.pow(h.distanceToSquared(r), d) + f < 1e-4 && (f = 1), + p < 1e-4 && (p = f), + m < 1e-4 && (m = f), + xh.initNonuniformCatmullRom(n.x, u.x, h.x, r.x, p, f, m), + Eh.initNonuniformCatmullRom(n.y, u.y, h.y, r.y, p, f, m), + Mh.initNonuniformCatmullRom(n.z, u.z, h.z, r.z, p, f, m) + } else + 'catmullrom' === this.curveType && + (xh.initCatmullRom(n.x, u.x, h.x, r.x, this.tension), + Eh.initCatmullRom(n.y, u.y, h.y, r.y, this.tension), + Mh.initCatmullRom(n.z, u.z, h.z, r.z, this.tension)) + return i.set(xh.calc(c), Eh.calc(c), Mh.calc(c)), i + }), + (_h.prototype.copy = function (e) { + gh.prototype.copy.call(this, e), (this.points = []) + for (var t = 0, n = e.points.length; t < n; t++) { + var r = e.points[t] + this.points.push(r.clone()) + } + return ( + (this.closed = e.closed), + (this.curveType = e.curveType), + (this.tension = e.tension), + this + ) + }), + (_h.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + e.points = [] + for (var t = 0, n = this.points.length; t < n; t++) { + var r = this.points[t] + e.points.push(r.toArray()) + } + return ( + (e.closed = this.closed), + (e.curveType = this.curveType), + (e.tension = this.tension), + e + ) + }), + (_h.prototype.fromJSON = function (e) { + gh.prototype.fromJSON.call(this, e), (this.points = []) + for (var t = 0, n = e.points.length; t < n; t++) { + var r = e.points[t] + this.points.push(new lr().fromArray(r)) + } + return ( + (this.closed = e.closed), + (this.curveType = e.curveType), + (this.tension = e.tension), + this + ) + }), + (Fh.prototype = Object.create(gh.prototype)), + (Fh.prototype.constructor = Fh), + (Fh.prototype.isCubicBezierCurve = !0), + (Fh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new Jn()) + var n = t, + r = this.v0, + i = this.v1, + o = this.v2, + a = this.v3 + return n.set(Bh(e, r.x, i.x, o.x, a.x), Bh(e, r.y, i.y, o.y, a.y)), n + }), + (Fh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v0.copy(e.v0), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this.v3.copy(e.v3), + this + ) + }), + (Fh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return ( + (e.v0 = this.v0.toArray()), + (e.v1 = this.v1.toArray()), + (e.v2 = this.v2.toArray()), + (e.v3 = this.v3.toArray()), + e + ) + }), + (Fh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v0.fromArray(e.v0), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this.v3.fromArray(e.v3), + this + ) + }), + (kh.prototype = Object.create(gh.prototype)), + (kh.prototype.constructor = kh), + (kh.prototype.isCubicBezierCurve3 = !0), + (kh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new lr()) + var n = t, + r = this.v0, + i = this.v1, + o = this.v2, + a = this.v3 + return ( + n.set( + Bh(e, r.x, i.x, o.x, a.x), + Bh(e, r.y, i.y, o.y, a.y), + Bh(e, r.z, i.z, o.z, a.z), + ), + n + ) + }), + (kh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v0.copy(e.v0), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this.v3.copy(e.v3), + this + ) + }), + (kh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return ( + (e.v0 = this.v0.toArray()), + (e.v1 = this.v1.toArray()), + (e.v2 = this.v2.toArray()), + (e.v3 = this.v3.toArray()), + e + ) + }), + (kh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v0.fromArray(e.v0), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this.v3.fromArray(e.v3), + this + ) + }), + (Nh.prototype = Object.create(gh.prototype)), + (Nh.prototype.constructor = Nh), + (Nh.prototype.isLineCurve = !0), + (Nh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new Jn()) + var n = t + return ( + 1 === e + ? n.copy(this.v2) + : (n.copy(this.v2).sub(this.v1), n.multiplyScalar(e).add(this.v1)), + n + ) + }), + (Nh.prototype.getPointAt = function (e, t) { + return this.getPoint(e, t) + }), + (Nh.prototype.getTangent = function (e, t) { + var n = t || new Jn() + return n.copy(this.v2).sub(this.v1).normalize(), n + }), + (Nh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this + ) + }), + (Nh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return (e.v1 = this.v1.toArray()), (e.v2 = this.v2.toArray()), e + }), + (Nh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this + ) + }), + (Uh.prototype = Object.create(gh.prototype)), + (Uh.prototype.constructor = Uh), + (Uh.prototype.isLineCurve3 = !0), + (Uh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new lr()) + var n = t + return ( + 1 === e + ? n.copy(this.v2) + : (n.copy(this.v2).sub(this.v1), n.multiplyScalar(e).add(this.v1)), + n + ) + }), + (Uh.prototype.getPointAt = function (e, t) { + return this.getPoint(e, t) + }), + (Uh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this + ) + }), + (Uh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return (e.v1 = this.v1.toArray()), (e.v2 = this.v2.toArray()), e + }), + (Uh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this + ) + }), + (Hh.prototype = Object.create(gh.prototype)), + (Hh.prototype.constructor = Hh), + (Hh.prototype.isQuadraticBezierCurve = !0), + (Hh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new Jn()) + var n = t, + r = this.v0, + i = this.v1, + o = this.v2 + return n.set(Rh(e, r.x, i.x, o.x), Rh(e, r.y, i.y, o.y)), n + }), + (Hh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v0.copy(e.v0), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this + ) + }), + (Hh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return ( + (e.v0 = this.v0.toArray()), + (e.v1 = this.v1.toArray()), + (e.v2 = this.v2.toArray()), + e + ) + }), + (Hh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v0.fromArray(e.v0), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this + ) + }), + (Gh.prototype = Object.create(gh.prototype)), + (Gh.prototype.constructor = Gh), + (Gh.prototype.isQuadraticBezierCurve3 = !0), + (Gh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new lr()) + var n = t, + r = this.v0, + i = this.v1, + o = this.v2 + return ( + n.set(Rh(e, r.x, i.x, o.x), Rh(e, r.y, i.y, o.y), Rh(e, r.z, i.z, o.z)), n + ) + }), + (Gh.prototype.copy = function (e) { + return ( + gh.prototype.copy.call(this, e), + this.v0.copy(e.v0), + this.v1.copy(e.v1), + this.v2.copy(e.v2), + this + ) + }), + (Gh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + return ( + (e.v0 = this.v0.toArray()), + (e.v1 = this.v1.toArray()), + (e.v2 = this.v2.toArray()), + e + ) + }), + (Gh.prototype.fromJSON = function (e) { + return ( + gh.prototype.fromJSON.call(this, e), + this.v0.fromArray(e.v0), + this.v1.fromArray(e.v1), + this.v2.fromArray(e.v2), + this + ) + }), + (zh.prototype = Object.create(gh.prototype)), + (zh.prototype.constructor = zh), + (zh.prototype.isSplineCurve = !0), + (zh.prototype.getPoint = function (e, t) { + void 0 === t && (t = new Jn()) + var n = t, + r = this.points, + i = (r.length - 1) * e, + o = Math.floor(i), + a = i - o, + s = r[0 === o ? o : o - 1], + l = r[o], + c = r[o > r.length - 2 ? r.length - 1 : o + 1], + u = r[o > r.length - 3 ? r.length - 1 : o + 2] + return n.set(Th(a, s.x, l.x, c.x, u.x), Th(a, s.y, l.y, c.y, u.y)), n + }), + (zh.prototype.copy = function (e) { + gh.prototype.copy.call(this, e), (this.points = []) + for (var t = 0, n = e.points.length; t < n; t++) { + var r = e.points[t] + this.points.push(r.clone()) + } + return this + }), + (zh.prototype.toJSON = function () { + var e = gh.prototype.toJSON.call(this) + e.points = [] + for (var t = 0, n = this.points.length; t < n; t++) { + var r = this.points[t] + e.points.push(r.toArray()) + } + return e + }), + (zh.prototype.fromJSON = function (e) { + gh.prototype.fromJSON.call(this, e), (this.points = []) + for (var t = 0, n = e.points.length; t < n; t++) { + var r = e.points[t] + this.points.push(new Jn().fromArray(r)) + } + return this + }) + var jh = Object.freeze({ + __proto__: null, + ArcCurve: bh, + CatmullRomCurve3: _h, + CubicBezierCurve: Fh, + CubicBezierCurve3: kh, + EllipseCurve: yh, + LineCurve: Nh, + LineCurve3: Uh, + QuadraticBezierCurve: Hh, + QuadraticBezierCurve3: Gh, + SplineCurve: zh, + }) + function Vh() { + gh.call(this), + (this.type = 'CurvePath'), + (this.curves = []), + (this.autoClose = !1) + } + function Wh(e) { + Vh.call(this), + (this.type = 'Path'), + (this.currentPoint = new Jn()), + e && this.setFromPoints(e) + } + function qh(e) { + Wh.call(this, e), + (this.uuid = Kn.generateUUID()), + (this.type = 'Shape'), + (this.holes = []) + } + function Xh(e, t) { + void 0 === t && (t = 1), + si.call(this), + (this.type = 'Light'), + (this.color = new Li(e)), + (this.intensity = t) + } + function Yh(e, t, n) { + Xh.call(this, e, n), + (this.type = 'HemisphereLight'), + this.position.copy(si.DefaultUp), + this.updateMatrix(), + (this.groundColor = new Li(t)) + } + function Qh(e) { + ;(this.camera = e), + (this.bias = 0), + (this.normalBias = 0), + (this.radius = 1), + (this.mapSize = new Jn(512, 512)), + (this.map = null), + (this.mapPass = null), + (this.matrix = new Fr()), + (this.autoUpdate = !0), + (this.needsUpdate = !1), + (this._frustum = new zo()), + (this._frameExtents = new Jn(1, 1)), + (this._viewportCount = 1), + (this._viewports = [new ir(0, 0, 1, 1)]) + } + function Zh() { + Qh.call(this, new Oo(50, 1, 0.5, 500)), (this.focus = 1) + } + function Kh(e, t, n, r, i, o) { + Xh.call(this, e, t), + (this.type = 'SpotLight'), + this.position.copy(si.DefaultUp), + this.updateMatrix(), + (this.target = new si()), + Object.defineProperty(this, 'power', { + get: function () { + return this.intensity * Math.PI + }, + set: function (e) { + this.intensity = e / Math.PI + }, + }), + (this.distance = void 0 !== n ? n : 0), + (this.angle = void 0 !== r ? r : Math.PI / 3), + (this.penumbra = void 0 !== i ? i : 0), + (this.decay = void 0 !== o ? o : 1), + (this.shadow = new Zh()) + } + function Jh() { + Qh.call(this, new Oo(90, 1, 0.5, 500)), + (this._frameExtents = new Jn(4, 2)), + (this._viewportCount = 6), + (this._viewports = [ + new ir(2, 1, 1, 1), + new ir(0, 1, 1, 1), + new ir(3, 1, 1, 1), + new ir(1, 1, 1, 1), + new ir(3, 0, 1, 1), + new ir(1, 0, 1, 1), + ]), + (this._cubeDirections = [ + new lr(1, 0, 0), + new lr(-1, 0, 0), + new lr(0, 0, 1), + new lr(0, 0, -1), + new lr(0, 1, 0), + new lr(0, -1, 0), + ]), + (this._cubeUps = [ + new lr(0, 1, 0), + new lr(0, 1, 0), + new lr(0, 1, 0), + new lr(0, 1, 0), + new lr(0, 0, 1), + new lr(0, 0, -1), + ]) + } + function $h(e, t, n, r) { + Xh.call(this, e, t), + (this.type = 'PointLight'), + Object.defineProperty(this, 'power', { + get: function () { + return 4 * this.intensity * Math.PI + }, + set: function (e) { + this.intensity = e / (4 * Math.PI) + }, + }), + (this.distance = void 0 !== n ? n : 0), + (this.decay = void 0 !== r ? r : 1), + (this.shadow = new Jh()) + } + function ed(e, t, n, r, i, o) { + void 0 === e && (e = -1), + void 0 === t && (t = 1), + void 0 === n && (n = 1), + void 0 === r && (r = -1), + void 0 === i && (i = 0.1), + void 0 === o && (o = 2e3), + Do.call(this), + (this.type = 'OrthographicCamera'), + (this.zoom = 1), + (this.view = null), + (this.left = e), + (this.right = t), + (this.top = n), + (this.bottom = r), + (this.near = i), + (this.far = o), + this.updateProjectionMatrix() + } + function td() { + Qh.call(this, new ed(-5, 5, 5, -5, 0.5, 500)) + } + function nd(e, t) { + Xh.call(this, e, t), + (this.type = 'DirectionalLight'), + this.position.copy(si.DefaultUp), + this.updateMatrix(), + (this.target = new si()), + (this.shadow = new td()) + } + function rd(e, t) { + Xh.call(this, e, t), (this.type = 'AmbientLight') + } + function id(e, t, n, r) { + Xh.call(this, e, t), + (this.type = 'RectAreaLight'), + (this.width = void 0 !== n ? n : 10), + (this.height = void 0 !== r ? r : 10) + } + ;(Vh.prototype = Object.assign(Object.create(gh.prototype), { + constructor: Vh, + add: function (e) { + this.curves.push(e) + }, + closePath: function () { + var e = this.curves[0].getPoint(0), + t = this.curves[this.curves.length - 1].getPoint(1) + e.equals(t) || this.curves.push(new Nh(t, e)) + }, + getPoint: function (e) { + for ( + var t = e * this.getLength(), n = this.getCurveLengths(), r = 0; + r < n.length; + + ) { + if (n[r] >= t) { + var i = n[r] - t, + o = this.curves[r], + a = o.getLength(), + s = 0 === a ? 0 : 1 - i / a + return o.getPointAt(s) + } + r++ + } + return null + }, + getLength: function () { + var e = this.getCurveLengths() + return e[e.length - 1] + }, + updateArcLengths: function () { + ;(this.needsUpdate = !0), (this.cacheLengths = null), this.getCurveLengths() + }, + getCurveLengths: function () { + if (this.cacheLengths && this.cacheLengths.length === this.curves.length) + return this.cacheLengths + for (var e = [], t = 0, n = 0, r = this.curves.length; n < r; n++) + (t += this.curves[n].getLength()), e.push(t) + return (this.cacheLengths = e), e + }, + getSpacedPoints: function (e) { + void 0 === e && (e = 40) + for (var t = [], n = 0; n <= e; n++) t.push(this.getPoint(n / e)) + return this.autoClose && t.push(t[0]), t + }, + getPoints: function (e) { + void 0 === e && (e = 12) + for (var t, n = [], r = 0, i = this.curves; r < i.length; r++) + for ( + var o = i[r], + a = + o && o.isEllipseCurve + ? 2 * e + : o && (o.isLineCurve || o.isLineCurve3) + ? 1 + : o && o.isSplineCurve + ? e * o.points.length + : e, + s = o.getPoints(a), + l = 0; + l < s.length; + l++ + ) { + var c = s[l] + ;(t && t.equals(c)) || (n.push(c), (t = c)) + } + return ( + this.autoClose && + n.length > 1 && + !n[n.length - 1].equals(n[0]) && + n.push(n[0]), + n + ) + }, + copy: function (e) { + gh.prototype.copy.call(this, e), (this.curves = []) + for (var t = 0, n = e.curves.length; t < n; t++) { + var r = e.curves[t] + this.curves.push(r.clone()) + } + return (this.autoClose = e.autoClose), this + }, + toJSON: function () { + var e = gh.prototype.toJSON.call(this) + ;(e.autoClose = this.autoClose), (e.curves = []) + for (var t = 0, n = this.curves.length; t < n; t++) { + var r = this.curves[t] + e.curves.push(r.toJSON()) + } + return e + }, + fromJSON: function (e) { + gh.prototype.fromJSON.call(this, e), + (this.autoClose = e.autoClose), + (this.curves = []) + for (var t = 0, n = e.curves.length; t < n; t++) { + var r = e.curves[t] + this.curves.push(new jh[r.type]().fromJSON(r)) + } + return this + }, + })), + (Wh.prototype = Object.assign(Object.create(Vh.prototype), { + constructor: Wh, + setFromPoints: function (e) { + this.moveTo(e[0].x, e[0].y) + for (var t = 1, n = e.length; t < n; t++) this.lineTo(e[t].x, e[t].y) + return this + }, + moveTo: function (e, t) { + return this.currentPoint.set(e, t), this + }, + lineTo: function (e, t) { + var n = new Nh(this.currentPoint.clone(), new Jn(e, t)) + return this.curves.push(n), this.currentPoint.set(e, t), this + }, + quadraticCurveTo: function (e, t, n, r) { + var i = new Hh(this.currentPoint.clone(), new Jn(e, t), new Jn(n, r)) + return this.curves.push(i), this.currentPoint.set(n, r), this + }, + bezierCurveTo: function (e, t, n, r, i, o) { + var a = new Fh( + this.currentPoint.clone(), + new Jn(e, t), + new Jn(n, r), + new Jn(i, o), + ) + return this.curves.push(a), this.currentPoint.set(i, o), this + }, + splineThru: function (e) { + var t = new zh([this.currentPoint.clone()].concat(e)) + return this.curves.push(t), this.currentPoint.copy(e[e.length - 1]), this + }, + arc: function (e, t, n, r, i, o) { + var a = this.currentPoint.x, + s = this.currentPoint.y + return this.absarc(e + a, t + s, n, r, i, o), this + }, + absarc: function (e, t, n, r, i, o) { + return this.absellipse(e, t, n, n, r, i, o), this + }, + ellipse: function (e, t, n, r, i, o, a, s) { + var l = this.currentPoint.x, + c = this.currentPoint.y + return this.absellipse(e + l, t + c, n, r, i, o, a, s), this + }, + absellipse: function (e, t, n, r, i, o, a, s) { + var l = new yh(e, t, n, r, i, o, a, s) + if (this.curves.length > 0) { + var c = l.getPoint(0) + c.equals(this.currentPoint) || this.lineTo(c.x, c.y) + } + this.curves.push(l) + var u = l.getPoint(1) + return this.currentPoint.copy(u), this + }, + copy: function (e) { + return ( + Vh.prototype.copy.call(this, e), + this.currentPoint.copy(e.currentPoint), + this + ) + }, + toJSON: function () { + var e = Vh.prototype.toJSON.call(this) + return (e.currentPoint = this.currentPoint.toArray()), e + }, + fromJSON: function (e) { + return ( + Vh.prototype.fromJSON.call(this, e), + this.currentPoint.fromArray(e.currentPoint), + this + ) + }, + })), + (qh.prototype = Object.assign(Object.create(Wh.prototype), { + constructor: qh, + getPointsHoles: function (e) { + for (var t = [], n = 0, r = this.holes.length; n < r; n++) + t[n] = this.holes[n].getPoints(e) + return t + }, + extractPoints: function (e) { + return { shape: this.getPoints(e), holes: this.getPointsHoles(e) } + }, + copy: function (e) { + Wh.prototype.copy.call(this, e), (this.holes = []) + for (var t = 0, n = e.holes.length; t < n; t++) { + var r = e.holes[t] + this.holes.push(r.clone()) + } + return this + }, + toJSON: function () { + var e = Wh.prototype.toJSON.call(this) + ;(e.uuid = this.uuid), (e.holes = []) + for (var t = 0, n = this.holes.length; t < n; t++) { + var r = this.holes[t] + e.holes.push(r.toJSON()) + } + return e + }, + fromJSON: function (e) { + Wh.prototype.fromJSON.call(this, e), + (this.uuid = e.uuid), + (this.holes = []) + for (var t = 0, n = e.holes.length; t < n; t++) { + var r = e.holes[t] + this.holes.push(new Wh().fromJSON(r)) + } + return this + }, + })), + (Xh.prototype = Object.assign(Object.create(si.prototype), { + constructor: Xh, + isLight: !0, + copy: function (e) { + return ( + si.prototype.copy.call(this, e), + this.color.copy(e.color), + (this.intensity = e.intensity), + this + ) + }, + toJSON: function (e) { + var t = si.prototype.toJSON.call(this, e) + return ( + (t.object.color = this.color.getHex()), + (t.object.intensity = this.intensity), + void 0 !== this.groundColor && + (t.object.groundColor = this.groundColor.getHex()), + void 0 !== this.distance && (t.object.distance = this.distance), + void 0 !== this.angle && (t.object.angle = this.angle), + void 0 !== this.decay && (t.object.decay = this.decay), + void 0 !== this.penumbra && (t.object.penumbra = this.penumbra), + void 0 !== this.shadow && (t.object.shadow = this.shadow.toJSON()), + t + ) + }, + })), + (Yh.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: Yh, + isHemisphereLight: !0, + copy: function (e) { + return ( + Xh.prototype.copy.call(this, e), + this.groundColor.copy(e.groundColor), + this + ) + }, + })), + Object.assign(Qh.prototype, { + _projScreenMatrix: new Fr(), + _lightPositionWorld: new lr(), + _lookTarget: new lr(), + getViewportCount: function () { + return this._viewportCount + }, + getFrustum: function () { + return this._frustum + }, + updateMatrices: function (e) { + var t = this.camera, + n = this.matrix, + r = this._projScreenMatrix, + i = this._lookTarget, + o = this._lightPositionWorld + o.setFromMatrixPosition(e.matrixWorld), + t.position.copy(o), + i.setFromMatrixPosition(e.target.matrixWorld), + t.lookAt(i), + t.updateMatrixWorld(), + r.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), + this._frustum.setFromProjectionMatrix(r), + n.set(0.5, 0, 0, 0.5, 0, 0.5, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0, 1), + n.multiply(t.projectionMatrix), + n.multiply(t.matrixWorldInverse) + }, + getViewport: function (e) { + return this._viewports[e] + }, + getFrameExtents: function () { + return this._frameExtents + }, + copy: function (e) { + return ( + (this.camera = e.camera.clone()), + (this.bias = e.bias), + (this.radius = e.radius), + this.mapSize.copy(e.mapSize), + this + ) + }, + clone: function () { + return new this.constructor().copy(this) + }, + toJSON: function () { + var e = {} + return ( + 0 !== this.bias && (e.bias = this.bias), + 0 !== this.normalBias && (e.normalBias = this.normalBias), + 1 !== this.radius && (e.radius = this.radius), + (512 === this.mapSize.x && 512 === this.mapSize.y) || + (e.mapSize = this.mapSize.toArray()), + (e.camera = this.camera.toJSON(!1).object), + delete e.camera.matrix, + e + ) + }, + }), + (Zh.prototype = Object.assign(Object.create(Qh.prototype), { + constructor: Zh, + isSpotLightShadow: !0, + updateMatrices: function (e) { + var t = this.camera, + n = 2 * Kn.RAD2DEG * e.angle * this.focus, + r = this.mapSize.width / this.mapSize.height, + i = e.distance || t.far + ;(n === t.fov && r === t.aspect && i === t.far) || + ((t.fov = n), (t.aspect = r), (t.far = i), t.updateProjectionMatrix()), + Qh.prototype.updateMatrices.call(this, e) + }, + })), + (Kh.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: Kh, + isSpotLight: !0, + copy: function (e) { + return ( + Xh.prototype.copy.call(this, e), + (this.distance = e.distance), + (this.angle = e.angle), + (this.penumbra = e.penumbra), + (this.decay = e.decay), + (this.target = e.target.clone()), + (this.shadow = e.shadow.clone()), + this + ) + }, + })), + (Jh.prototype = Object.assign(Object.create(Qh.prototype), { + constructor: Jh, + isPointLightShadow: !0, + updateMatrices: function (e, t) { + void 0 === t && (t = 0) + var n = this.camera, + r = this.matrix, + i = this._lightPositionWorld, + o = this._lookTarget, + a = this._projScreenMatrix + i.setFromMatrixPosition(e.matrixWorld), + n.position.copy(i), + o.copy(n.position), + o.add(this._cubeDirections[t]), + n.up.copy(this._cubeUps[t]), + n.lookAt(o), + n.updateMatrixWorld(), + r.makeTranslation(-i.x, -i.y, -i.z), + a.multiplyMatrices(n.projectionMatrix, n.matrixWorldInverse), + this._frustum.setFromProjectionMatrix(a) + }, + })), + ($h.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: $h, + isPointLight: !0, + copy: function (e) { + return ( + Xh.prototype.copy.call(this, e), + (this.distance = e.distance), + (this.decay = e.decay), + (this.shadow = e.shadow.clone()), + this + ) + }, + })), + (ed.prototype = Object.assign(Object.create(Do.prototype), { + constructor: ed, + isOrthographicCamera: !0, + copy: function (e, t) { + return ( + Do.prototype.copy.call(this, e, t), + (this.left = e.left), + (this.right = e.right), + (this.top = e.top), + (this.bottom = e.bottom), + (this.near = e.near), + (this.far = e.far), + (this.zoom = e.zoom), + (this.view = null === e.view ? null : Object.assign({}, e.view)), + this + ) + }, + setViewOffset: function (e, t, n, r, i, o) { + null === this.view && + (this.view = { + enabled: !0, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1, + }), + (this.view.enabled = !0), + (this.view.fullWidth = e), + (this.view.fullHeight = t), + (this.view.offsetX = n), + (this.view.offsetY = r), + (this.view.width = i), + (this.view.height = o), + this.updateProjectionMatrix() + }, + clearViewOffset: function () { + null !== this.view && (this.view.enabled = !1), + this.updateProjectionMatrix() + }, + updateProjectionMatrix: function () { + var e = (this.right - this.left) / (2 * this.zoom), + t = (this.top - this.bottom) / (2 * this.zoom), + n = (this.right + this.left) / 2, + r = (this.top + this.bottom) / 2, + i = n - e, + o = n + e, + a = r + t, + s = r - t + if (null !== this.view && this.view.enabled) { + var l = (this.right - this.left) / this.view.fullWidth / this.zoom, + c = (this.top - this.bottom) / this.view.fullHeight / this.zoom + ;(o = (i += l * this.view.offsetX) + l * this.view.width), + (s = (a -= c * this.view.offsetY) - c * this.view.height) + } + this.projectionMatrix.makeOrthographic(i, o, a, s, this.near, this.far), + this.projectionMatrixInverse.copy(this.projectionMatrix).invert() + }, + toJSON: function (e) { + var t = si.prototype.toJSON.call(this, e) + return ( + (t.object.zoom = this.zoom), + (t.object.left = this.left), + (t.object.right = this.right), + (t.object.top = this.top), + (t.object.bottom = this.bottom), + (t.object.near = this.near), + (t.object.far = this.far), + null !== this.view && (t.object.view = Object.assign({}, this.view)), + t + ) + }, + })), + (td.prototype = Object.assign(Object.create(Qh.prototype), { + constructor: td, + isDirectionalLightShadow: !0, + updateMatrices: function (e) { + Qh.prototype.updateMatrices.call(this, e) + }, + })), + (nd.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: nd, + isDirectionalLight: !0, + copy: function (e) { + return ( + Xh.prototype.copy.call(this, e), + (this.target = e.target.clone()), + (this.shadow = e.shadow.clone()), + this + ) + }, + })), + (rd.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: rd, + isAmbientLight: !0, + })), + (id.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: id, + isRectAreaLight: !0, + copy: function (e) { + return ( + Xh.prototype.copy.call(this, e), + (this.width = e.width), + (this.height = e.height), + this + ) + }, + toJSON: function (e) { + var t = Xh.prototype.toJSON.call(this, e) + return (t.object.width = this.width), (t.object.height = this.height), t + }, + })) + var od = (function () { + function e() { + Object.defineProperty(this, 'isSphericalHarmonics3', { value: !0 }), + (this.coefficients = []) + for (var e = 0; e < 9; e++) this.coefficients.push(new lr()) + } + var t = e.prototype + return ( + (t.set = function (e) { + for (var t = 0; t < 9; t++) this.coefficients[t].copy(e[t]) + return this + }), + (t.zero = function () { + for (var e = 0; e < 9; e++) this.coefficients[e].set(0, 0, 0) + return this + }), + (t.getAt = function (e, t) { + var n = e.x, + r = e.y, + i = e.z, + o = this.coefficients + return ( + t.copy(o[0]).multiplyScalar(0.282095), + t.addScaledVector(o[1], 0.488603 * r), + t.addScaledVector(o[2], 0.488603 * i), + t.addScaledVector(o[3], 0.488603 * n), + t.addScaledVector(o[4], n * r * 1.092548), + t.addScaledVector(o[5], r * i * 1.092548), + t.addScaledVector(o[6], 0.315392 * (3 * i * i - 1)), + t.addScaledVector(o[7], n * i * 1.092548), + t.addScaledVector(o[8], 0.546274 * (n * n - r * r)), + t + ) + }), + (t.getIrradianceAt = function (e, t) { + var n = e.x, + r = e.y, + i = e.z, + o = this.coefficients + return ( + t.copy(o[0]).multiplyScalar(0.886227), + t.addScaledVector(o[1], 1.023328 * r), + t.addScaledVector(o[2], 1.023328 * i), + t.addScaledVector(o[3], 1.023328 * n), + t.addScaledVector(o[4], 0.858086 * n * r), + t.addScaledVector(o[5], 0.858086 * r * i), + t.addScaledVector(o[6], 0.743125 * i * i - 0.247708), + t.addScaledVector(o[7], 0.858086 * n * i), + t.addScaledVector(o[8], 0.429043 * (n * n - r * r)), + t + ) + }), + (t.add = function (e) { + for (var t = 0; t < 9; t++) this.coefficients[t].add(e.coefficients[t]) + return this + }), + (t.addScaledSH = function (e, t) { + for (var n = 0; n < 9; n++) + this.coefficients[n].addScaledVector(e.coefficients[n], t) + return this + }), + (t.scale = function (e) { + for (var t = 0; t < 9; t++) this.coefficients[t].multiplyScalar(e) + return this + }), + (t.lerp = function (e, t) { + for (var n = 0; n < 9; n++) + this.coefficients[n].lerp(e.coefficients[n], t) + return this + }), + (t.equals = function (e) { + for (var t = 0; t < 9; t++) + if (!this.coefficients[t].equals(e.coefficients[t])) return !1 + return !0 + }), + (t.copy = function (e) { + return this.set(e.coefficients) + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.fromArray = function (e, t) { + void 0 === t && (t = 0) + for (var n = this.coefficients, r = 0; r < 9; r++) + n[r].fromArray(e, t + 3 * r) + return this + }), + (t.toArray = function (e, t) { + void 0 === e && (e = []), void 0 === t && (t = 0) + for (var n = this.coefficients, r = 0; r < 9; r++) + n[r].toArray(e, t + 3 * r) + return e + }), + (e.getBasisAt = function (e, t) { + var n = e.x, + r = e.y, + i = e.z + ;(t[0] = 0.282095), + (t[1] = 0.488603 * r), + (t[2] = 0.488603 * i), + (t[3] = 0.488603 * n), + (t[4] = 1.092548 * n * r), + (t[5] = 1.092548 * r * i), + (t[6] = 0.315392 * (3 * i * i - 1)), + (t[7] = 1.092548 * n * i), + (t[8] = 0.546274 * (n * n - r * r)) + }), + e + ) + })() + function ad(e, t) { + Xh.call(this, void 0, t), + (this.type = 'LightProbe'), + (this.sh = void 0 !== e ? e : new od()) + } + function sd(e) { + lh.call(this, e), (this.textures = {}) + } + ;(ad.prototype = Object.assign(Object.create(Xh.prototype), { + constructor: ad, + isLightProbe: !0, + copy: function (e) { + return Xh.prototype.copy.call(this, e), this.sh.copy(e.sh), this + }, + fromJSON: function (e) { + return (this.intensity = e.intensity), this.sh.fromArray(e.sh), this + }, + toJSON: function (e) { + var t = Xh.prototype.toJSON.call(this, e) + return (t.object.sh = this.sh.toArray()), t + }, + })), + (sd.prototype = Object.assign(Object.create(lh.prototype), { + constructor: sd, + load: function (t, n, r, i) { + var o = this, + a = new uh(o.manager) + a.setPath(o.path), + a.setRequestHeader(o.requestHeader), + a.setWithCredentials(o.withCredentials), + a.load( + t, + function (r) { + try { + n(o.parse(JSON.parse(r))) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + parse: function (e) { + var t = this.textures + function n(e) { + return ( + void 0 === t[e] && + console.warn('THREE.MaterialLoader: Undefined texture', e), + t[e] + ) + } + var r = new zu[e.type]() + if ( + (void 0 !== e.uuid && (r.uuid = e.uuid), + void 0 !== e.name && (r.name = e.name), + void 0 !== e.color && void 0 !== r.color && r.color.setHex(e.color), + void 0 !== e.roughness && (r.roughness = e.roughness), + void 0 !== e.metalness && (r.metalness = e.metalness), + void 0 !== e.sheen && (r.sheen = new Li().setHex(e.sheen)), + void 0 !== e.emissive && + void 0 !== r.emissive && + r.emissive.setHex(e.emissive), + void 0 !== e.specular && + void 0 !== r.specular && + r.specular.setHex(e.specular), + void 0 !== e.shininess && (r.shininess = e.shininess), + void 0 !== e.clearcoat && (r.clearcoat = e.clearcoat), + void 0 !== e.clearcoatRoughness && + (r.clearcoatRoughness = e.clearcoatRoughness), + void 0 !== e.fog && (r.fog = e.fog), + void 0 !== e.flatShading && (r.flatShading = e.flatShading), + void 0 !== e.blending && (r.blending = e.blending), + void 0 !== e.combine && (r.combine = e.combine), + void 0 !== e.side && (r.side = e.side), + void 0 !== e.opacity && (r.opacity = e.opacity), + void 0 !== e.transparent && (r.transparent = e.transparent), + void 0 !== e.alphaTest && (r.alphaTest = e.alphaTest), + void 0 !== e.depthTest && (r.depthTest = e.depthTest), + void 0 !== e.depthWrite && (r.depthWrite = e.depthWrite), + void 0 !== e.colorWrite && (r.colorWrite = e.colorWrite), + void 0 !== e.stencilWrite && (r.stencilWrite = e.stencilWrite), + void 0 !== e.stencilWriteMask && + (r.stencilWriteMask = e.stencilWriteMask), + void 0 !== e.stencilFunc && (r.stencilFunc = e.stencilFunc), + void 0 !== e.stencilRef && (r.stencilRef = e.stencilRef), + void 0 !== e.stencilFuncMask && (r.stencilFuncMask = e.stencilFuncMask), + void 0 !== e.stencilFail && (r.stencilFail = e.stencilFail), + void 0 !== e.stencilZFail && (r.stencilZFail = e.stencilZFail), + void 0 !== e.stencilZPass && (r.stencilZPass = e.stencilZPass), + void 0 !== e.wireframe && (r.wireframe = e.wireframe), + void 0 !== e.wireframeLinewidth && + (r.wireframeLinewidth = e.wireframeLinewidth), + void 0 !== e.wireframeLinecap && + (r.wireframeLinecap = e.wireframeLinecap), + void 0 !== e.wireframeLinejoin && + (r.wireframeLinejoin = e.wireframeLinejoin), + void 0 !== e.rotation && (r.rotation = e.rotation), + 1 !== e.linewidth && (r.linewidth = e.linewidth), + void 0 !== e.dashSize && (r.dashSize = e.dashSize), + void 0 !== e.gapSize && (r.gapSize = e.gapSize), + void 0 !== e.scale && (r.scale = e.scale), + void 0 !== e.polygonOffset && (r.polygonOffset = e.polygonOffset), + void 0 !== e.polygonOffsetFactor && + (r.polygonOffsetFactor = e.polygonOffsetFactor), + void 0 !== e.polygonOffsetUnits && + (r.polygonOffsetUnits = e.polygonOffsetUnits), + void 0 !== e.skinning && (r.skinning = e.skinning), + void 0 !== e.morphTargets && (r.morphTargets = e.morphTargets), + void 0 !== e.morphNormals && (r.morphNormals = e.morphNormals), + void 0 !== e.dithering && (r.dithering = e.dithering), + void 0 !== e.vertexTangents && (r.vertexTangents = e.vertexTangents), + void 0 !== e.visible && (r.visible = e.visible), + void 0 !== e.toneMapped && (r.toneMapped = e.toneMapped), + void 0 !== e.userData && (r.userData = e.userData), + void 0 !== e.vertexColors && + ('number' === typeof e.vertexColors + ? (r.vertexColors = e.vertexColors > 0) + : (r.vertexColors = e.vertexColors)), + void 0 !== e.uniforms) + ) + for (var i in e.uniforms) { + var o = e.uniforms[i] + switch (((r.uniforms[i] = {}), o.type)) { + case 't': + r.uniforms[i].value = n(o.value) + break + case 'c': + r.uniforms[i].value = new Li().setHex(o.value) + break + case 'v2': + r.uniforms[i].value = new Jn().fromArray(o.value) + break + case 'v3': + r.uniforms[i].value = new lr().fromArray(o.value) + break + case 'v4': + r.uniforms[i].value = new ir().fromArray(o.value) + break + case 'm3': + r.uniforms[i].value = new $n().fromArray(o.value) + break + case 'm4': + r.uniforms[i].value = new Fr().fromArray(o.value) + break + default: + r.uniforms[i].value = o.value + } + } + if ( + (void 0 !== e.defines && (r.defines = e.defines), + void 0 !== e.vertexShader && (r.vertexShader = e.vertexShader), + void 0 !== e.fragmentShader && (r.fragmentShader = e.fragmentShader), + void 0 !== e.extensions) + ) + for (var a in e.extensions) r.extensions[a] = e.extensions[a] + if ( + (void 0 !== e.shading && (r.flatShading = 1 === e.shading), + void 0 !== e.size && (r.size = e.size), + void 0 !== e.sizeAttenuation && (r.sizeAttenuation = e.sizeAttenuation), + void 0 !== e.map && (r.map = n(e.map)), + void 0 !== e.matcap && (r.matcap = n(e.matcap)), + void 0 !== e.alphaMap && (r.alphaMap = n(e.alphaMap)), + void 0 !== e.bumpMap && (r.bumpMap = n(e.bumpMap)), + void 0 !== e.bumpScale && (r.bumpScale = e.bumpScale), + void 0 !== e.normalMap && (r.normalMap = n(e.normalMap)), + void 0 !== e.normalMapType && (r.normalMapType = e.normalMapType), + void 0 !== e.normalScale) + ) { + var s = e.normalScale + !1 === Array.isArray(s) && (s = [s, s]), + (r.normalScale = new Jn().fromArray(s)) + } + return ( + void 0 !== e.displacementMap && + (r.displacementMap = n(e.displacementMap)), + void 0 !== e.displacementScale && + (r.displacementScale = e.displacementScale), + void 0 !== e.displacementBias && + (r.displacementBias = e.displacementBias), + void 0 !== e.roughnessMap && (r.roughnessMap = n(e.roughnessMap)), + void 0 !== e.metalnessMap && (r.metalnessMap = n(e.metalnessMap)), + void 0 !== e.emissiveMap && (r.emissiveMap = n(e.emissiveMap)), + void 0 !== e.emissiveIntensity && + (r.emissiveIntensity = e.emissiveIntensity), + void 0 !== e.specularMap && (r.specularMap = n(e.specularMap)), + void 0 !== e.envMap && (r.envMap = n(e.envMap)), + void 0 !== e.envMapIntensity && (r.envMapIntensity = e.envMapIntensity), + void 0 !== e.reflectivity && (r.reflectivity = e.reflectivity), + void 0 !== e.refractionRatio && (r.refractionRatio = e.refractionRatio), + void 0 !== e.lightMap && (r.lightMap = n(e.lightMap)), + void 0 !== e.lightMapIntensity && + (r.lightMapIntensity = e.lightMapIntensity), + void 0 !== e.aoMap && (r.aoMap = n(e.aoMap)), + void 0 !== e.aoMapIntensity && (r.aoMapIntensity = e.aoMapIntensity), + void 0 !== e.gradientMap && (r.gradientMap = n(e.gradientMap)), + void 0 !== e.clearcoatMap && (r.clearcoatMap = n(e.clearcoatMap)), + void 0 !== e.clearcoatRoughnessMap && + (r.clearcoatRoughnessMap = n(e.clearcoatRoughnessMap)), + void 0 !== e.clearcoatNormalMap && + (r.clearcoatNormalMap = n(e.clearcoatNormalMap)), + void 0 !== e.clearcoatNormalScale && + (r.clearcoatNormalScale = new Jn().fromArray(e.clearcoatNormalScale)), + void 0 !== e.transmission && (r.transmission = e.transmission), + void 0 !== e.transmissionMap && + (r.transmissionMap = n(e.transmissionMap)), + r + ) + }, + setTextures: function (e) { + return (this.textures = e), this + }, + })) + var ld = { + decodeText: function (t) { + if ('undefined' !== typeof TextDecoder) return new TextDecoder().decode(t) + for (var n = '', r = 0, i = t.length; r < i; r++) + n += String.fromCharCode(t[r]) + try { + return decodeURIComponent(escape(n)) + } catch (e) { + return n + } + }, + extractUrlBase: function (e) { + var t = e.lastIndexOf('/') + return -1 === t ? './' : e.substr(0, t + 1) + }, + } + function cd() { + ro.call(this), + (this.type = 'InstancedBufferGeometry'), + (this.instanceCount = 1 / 0) + } + function ud(e, t, n, r) { + 'number' === typeof n && + ((r = n), + (n = !1), + console.error( + 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.', + )), + Fi.call(this, e, t, n), + (this.meshPerAttribute = r || 1) + } + function hd(e) { + lh.call(this, e) + } + ;(cd.prototype = Object.assign(Object.create(ro.prototype), { + constructor: cd, + isInstancedBufferGeometry: !0, + copy: function (e) { + return ( + ro.prototype.copy.call(this, e), + (this.instanceCount = e.instanceCount), + this + ) + }, + clone: function () { + return new this.constructor().copy(this) + }, + toJSON: function () { + var e = ro.prototype.toJSON.call(this) + return ( + (e.instanceCount = this.instanceCount), + (e.isInstancedBufferGeometry = !0), + e + ) + }, + })), + (ud.prototype = Object.assign(Object.create(Fi.prototype), { + constructor: ud, + isInstancedBufferAttribute: !0, + copy: function (e) { + return ( + Fi.prototype.copy.call(this, e), + (this.meshPerAttribute = e.meshPerAttribute), + this + ) + }, + toJSON: function () { + var e = Fi.prototype.toJSON.call(this) + return ( + (e.meshPerAttribute = this.meshPerAttribute), + (e.isInstancedBufferAttribute = !0), + e + ) + }, + })), + (hd.prototype = Object.assign(Object.create(lh.prototype), { + constructor: hd, + load: function (t, n, r, i) { + var o = this, + a = new uh(o.manager) + a.setPath(o.path), + a.setRequestHeader(o.requestHeader), + a.setWithCredentials(o.withCredentials), + a.load( + t, + function (r) { + try { + n(o.parse(JSON.parse(r))) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + parse: function (e) { + var t = {}, + n = {} + function r(e, n) { + if (void 0 !== t[n]) return t[n] + var r = e.interleavedBuffers[n], + o = i(e, r.buffer), + a = new yl(Qi(r.type, o), r.stride) + return (a.uuid = r.uuid), (t[n] = a), a + } + function i(e, t) { + if (void 0 !== n[t]) return n[t] + var r = e.arrayBuffers[t], + i = new Uint32Array(r).buffer + return (n[t] = i), i + } + var o = e.isInstancedBufferGeometry ? new cd() : new ro(), + a = e.data.index + if (void 0 !== a) { + var s = Qi(a.type, a.array) + o.setIndex(new Fi(s, 1)) + } + var l = e.data.attributes + for (var c in l) { + var u = l[c], + h = void 0 + if (u.isInterleavedBufferAttribute) + h = new wl(r(e.data, u.data), u.itemSize, u.offset, u.normalized) + else { + var d = Qi(u.type, u.array) + h = new (u.isInstancedBufferAttribute ? ud : Fi)( + d, + u.itemSize, + u.normalized, + ) + } + void 0 !== u.name && (h.name = u.name), o.setAttribute(c, h) + } + var p = e.data.morphAttributes + if (p) + for (var f in p) { + for (var m = p[f], v = [], g = 0, y = m.length; g < y; g++) { + var b = m[g], + A = void 0 + ;(A = b.isInterleavedBufferAttribute + ? new wl(r(e.data, b.data), b.itemSize, b.offset, b.normalized) + : new Fi(Qi(b.type, b.array), b.itemSize, b.normalized)), + void 0 !== b.name && (A.name = b.name), + v.push(A) + } + o.morphAttributes[f] = v + } + e.data.morphTargetsRelative && (o.morphTargetsRelative = !0) + var w = e.data.groups || e.data.drawcalls || e.data.offsets + if (void 0 !== w) + for (var x = 0, E = w.length; x !== E; ++x) { + var M = w[x] + o.addGroup(M.start, M.count, M.materialIndex) + } + var _ = e.data.boundingSphere + if (void 0 !== _) { + var T = new lr() + void 0 !== _.center && T.fromArray(_.center), + (o.boundingSphere = new Sr(T, _.radius)) + } + return ( + e.name && (o.name = e.name), e.userData && (o.userData = e.userData), o + ) + }, + })) + var dd = (function (e) { + function t(t) { + return e.call(this, t) || this + } + Gn(t, e) + var n = t.prototype + return ( + (n.load = function (e, t, n, r) { + var i = this, + o = '' === this.path ? ld.extractUrlBase(e) : this.path + this.resourcePath = this.resourcePath || o + var a = new uh(this.manager) + a.setPath(this.path), + a.setRequestHeader(this.requestHeader), + a.setWithCredentials(this.withCredentials), + a.load( + e, + function (n) { + var o = null + try { + o = JSON.parse(n) + } catch (s) { + return ( + void 0 !== r && r(s), + void console.error( + "THREE:ObjectLoader: Can't parse " + e + '.', + s.message, + ) + ) + } + var a = o.metadata + void 0 !== a && + void 0 !== a.type && + 'geometry' !== a.type.toLowerCase() + ? i.parse(o, t) + : console.error("THREE.ObjectLoader: Can't load " + e) + }, + n, + r, + ) + }), + (n.parse = function (e, t) { + var n = this.parseAnimations(e.animations), + r = this.parseShapes(e.shapes), + i = this.parseGeometries(e.geometries, r), + o = this.parseImages(e.images, function () { + void 0 !== t && t(l) + }), + a = this.parseTextures(e.textures, o), + s = this.parseMaterials(e.materials, a), + l = this.parseObject(e.object, i, s, n), + c = this.parseSkeletons(e.skeletons, l) + if ((this.bindSkeletons(l, c), void 0 !== t)) { + var u = !1 + for (var h in o) + if (o[h] instanceof HTMLImageElement) { + u = !0 + break + } + !1 === u && t(l) + } + return l + }), + (n.parseShapes = function (e) { + var t = {} + if (void 0 !== e) + for (var n = 0, r = e.length; n < r; n++) { + var i = new qh().fromJSON(e[n]) + t[i.uuid] = i + } + return t + }), + (n.parseSkeletons = function (e, t) { + var n = {}, + r = {} + if ( + (t.traverse(function (e) { + e.isBone && (r[e.uuid] = e) + }), + void 0 !== e) + ) + for (var i = 0, o = e.length; i < o; i++) { + var a = new Ql().fromJSON(e[i], r) + n[a.uuid] = a + } + return n + }), + (n.parseGeometries = function (e, t) { + var n, + r = {} + if (void 0 !== e) + for (var i = new hd(), o = 0, a = e.length; o < a; o++) { + var s = void 0, + l = e[o] + switch (l.type) { + case 'PlaneGeometry': + case 'PlaneBufferGeometry': + s = new Pu[l.type]( + l.width, + l.height, + l.widthSegments, + l.heightSegments, + ) + break + case 'BoxGeometry': + case 'BoxBufferGeometry': + s = new Pu[l.type]( + l.width, + l.height, + l.depth, + l.widthSegments, + l.heightSegments, + l.depthSegments, + ) + break + case 'CircleGeometry': + case 'CircleBufferGeometry': + s = new Pu[l.type]( + l.radius, + l.segments, + l.thetaStart, + l.thetaLength, + ) + break + case 'CylinderGeometry': + case 'CylinderBufferGeometry': + s = new Pu[l.type]( + l.radiusTop, + l.radiusBottom, + l.height, + l.radialSegments, + l.heightSegments, + l.openEnded, + l.thetaStart, + l.thetaLength, + ) + break + case 'ConeGeometry': + case 'ConeBufferGeometry': + s = new Pu[l.type]( + l.radius, + l.height, + l.radialSegments, + l.heightSegments, + l.openEnded, + l.thetaStart, + l.thetaLength, + ) + break + case 'SphereGeometry': + case 'SphereBufferGeometry': + s = new Pu[l.type]( + l.radius, + l.widthSegments, + l.heightSegments, + l.phiStart, + l.phiLength, + l.thetaStart, + l.thetaLength, + ) + break + case 'DodecahedronGeometry': + case 'DodecahedronBufferGeometry': + case 'IcosahedronGeometry': + case 'IcosahedronBufferGeometry': + case 'OctahedronGeometry': + case 'OctahedronBufferGeometry': + case 'TetrahedronGeometry': + case 'TetrahedronBufferGeometry': + s = new Pu[l.type](l.radius, l.detail) + break + case 'RingGeometry': + case 'RingBufferGeometry': + s = new Pu[l.type]( + l.innerRadius, + l.outerRadius, + l.thetaSegments, + l.phiSegments, + l.thetaStart, + l.thetaLength, + ) + break + case 'TorusGeometry': + case 'TorusBufferGeometry': + s = new Pu[l.type]( + l.radius, + l.tube, + l.radialSegments, + l.tubularSegments, + l.arc, + ) + break + case 'TorusKnotGeometry': + case 'TorusKnotBufferGeometry': + s = new Pu[l.type]( + l.radius, + l.tube, + l.tubularSegments, + l.radialSegments, + l.p, + l.q, + ) + break + case 'TubeGeometry': + case 'TubeBufferGeometry': + s = new Pu[l.type]( + new jh[l.path.type]().fromJSON(l.path), + l.tubularSegments, + l.radius, + l.radialSegments, + l.closed, + ) + break + case 'LatheGeometry': + case 'LatheBufferGeometry': + s = new Pu[l.type]( + l.points, + l.segments, + l.phiStart, + l.phiLength, + ) + break + case 'PolyhedronGeometry': + case 'PolyhedronBufferGeometry': + s = new Pu[l.type](l.vertices, l.indices, l.radius, l.details) + break + case 'ShapeGeometry': + case 'ShapeBufferGeometry': + n = [] + for (var c = 0, u = l.shapes.length; c < u; c++) { + var h = t[l.shapes[c]] + n.push(h) + } + s = new Pu[l.type](n, l.curveSegments) + break + case 'ExtrudeGeometry': + case 'ExtrudeBufferGeometry': + n = [] + for (var d = 0, p = l.shapes.length; d < p; d++) { + var f = t[l.shapes[d]] + n.push(f) + } + var m = l.options.extrudePath + void 0 !== m && + (l.options.extrudePath = new jh[m.type]().fromJSON(m)), + (s = new Pu[l.type](n, l.options)) + break + case 'BufferGeometry': + case 'InstancedBufferGeometry': + s = i.parse(l) + break + case 'Geometry': + 'THREE' in window && 'LegacyJSONLoader' in THREE + ? (s = new THREE.LegacyJSONLoader().parse( + l, + this.resourcePath, + ).geometry) + : console.error( + 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".', + ) + break + default: + console.warn( + 'THREE.ObjectLoader: Unsupported geometry type "' + + l.type + + '"', + ) + continue + } + ;(s.uuid = l.uuid), + void 0 !== l.name && (s.name = l.name), + !0 === s.isBufferGeometry && + void 0 !== l.userData && + (s.userData = l.userData), + (r[l.uuid] = s) + } + return r + }), + (n.parseMaterials = function (e, t) { + var n = {}, + r = {} + if (void 0 !== e) { + var i = new sd() + i.setTextures(t) + for (var o = 0, a = e.length; o < a; o++) { + var s = e[o] + if ('MultiMaterial' === s.type) { + for (var l = [], c = 0; c < s.materials.length; c++) { + var u = s.materials[c] + void 0 === n[u.uuid] && (n[u.uuid] = i.parse(u)), + l.push(n[u.uuid]) + } + r[s.uuid] = l + } else + void 0 === n[s.uuid] && (n[s.uuid] = i.parse(s)), + (r[s.uuid] = n[s.uuid]) + } + } + return r + }), + (n.parseAnimations = function (e) { + var t = {} + if (void 0 !== e) + for (var n = 0; n < e.length; n++) { + var r = e[n], + i = nh.parse(r) + t[i.uuid] = i + } + return t + }), + (n.parseImages = function (e, t) { + var n, + r = this, + i = {} + function o(e) { + return ( + r.manager.itemStart(e), + n.load( + e, + function () { + r.manager.itemEnd(e) + }, + void 0, + function () { + r.manager.itemError(e), r.manager.itemEnd(e) + }, + ) + ) + } + function a(e) { + if ('string' === typeof e) { + var t = e + return o( + /^(\/\/)|([a-z]+:(\/\/)?)/i.test(t) ? t : r.resourcePath + t, + ) + } + return e.data + ? { data: Qi(e.type, e.data), width: e.width, height: e.height } + : null + } + if (void 0 !== e && e.length > 0) { + var s = new ah(t) + ;(n = new ph(s)).setCrossOrigin(this.crossOrigin) + for (var l = 0, c = e.length; l < c; l++) { + var u = e[l], + h = u.url + if (Array.isArray(h)) { + i[u.uuid] = [] + for (var d = 0, p = h.length; d < p; d++) { + var f = a(h[d]) + null !== f && + (f instanceof HTMLImageElement + ? i[u.uuid].push(f) + : i[u.uuid].push(new Uo(f.data, f.width, f.height))) + } + } else { + var m = a(u.url) + null !== m && (i[u.uuid] = m) + } + } + } + return i + }), + (n.parseTextures = function (e, t) { + function n(e, t) { + return 'number' === typeof e + ? e + : (console.warn( + 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', + e, + ), + t[e]) + } + var r = {} + if (void 0 !== e) + for (var i = 0, o = e.length; i < o; i++) { + var a = e[i] + void 0 === a.image && + console.warn( + 'THREE.ObjectLoader: No "image" specified for', + a.uuid, + ), + void 0 === t[a.image] && + console.warn('THREE.ObjectLoader: Undefined image', a.image) + var s = void 0, + l = t[a.image] + Array.isArray(l) + ? ((s = new ko(l)), 6 === l.length && (s.needsUpdate = !0)) + : ((s = + l && l.data ? new Uo(l.data, l.width, l.height) : new nr(l)), + l && (s.needsUpdate = !0)), + (s.uuid = a.uuid), + void 0 !== a.name && (s.name = a.name), + void 0 !== a.mapping && (s.mapping = n(a.mapping, pd)), + void 0 !== a.offset && s.offset.fromArray(a.offset), + void 0 !== a.repeat && s.repeat.fromArray(a.repeat), + void 0 !== a.center && s.center.fromArray(a.center), + void 0 !== a.rotation && (s.rotation = a.rotation), + void 0 !== a.wrap && + ((s.wrapS = n(a.wrap[0], fd)), (s.wrapT = n(a.wrap[1], fd))), + void 0 !== a.format && (s.format = a.format), + void 0 !== a.type && (s.type = a.type), + void 0 !== a.encoding && (s.encoding = a.encoding), + void 0 !== a.minFilter && (s.minFilter = n(a.minFilter, md)), + void 0 !== a.magFilter && (s.magFilter = n(a.magFilter, md)), + void 0 !== a.anisotropy && (s.anisotropy = a.anisotropy), + void 0 !== a.flipY && (s.flipY = a.flipY), + void 0 !== a.premultiplyAlpha && + (s.premultiplyAlpha = a.premultiplyAlpha), + void 0 !== a.unpackAlignment && + (s.unpackAlignment = a.unpackAlignment), + (r[a.uuid] = s) + } + return r + }), + (n.parseObject = function (e, t, n, r) { + var i, o, a + function s(e) { + return ( + void 0 === t[e] && + console.warn('THREE.ObjectLoader: Undefined geometry', e), + t[e] + ) + } + function l(e) { + if (void 0 !== e) { + if (Array.isArray(e)) { + for (var t = [], r = 0, i = e.length; r < i; r++) { + var o = e[r] + void 0 === n[o] && + console.warn('THREE.ObjectLoader: Undefined material', o), + t.push(n[o]) + } + return t + } + return ( + void 0 === n[e] && + console.warn('THREE.ObjectLoader: Undefined material', e), + n[e] + ) + } + } + switch (e.type) { + case 'Scene': + ;(i = new gl()), + void 0 !== e.background && + Number.isInteger(e.background) && + (i.background = new Li(e.background)), + void 0 !== e.fog && + ('Fog' === e.fog.type + ? (i.fog = new vl(e.fog.color, e.fog.near, e.fog.far)) + : 'FogExp2' === e.fog.type && + (i.fog = new ml(e.fog.color, e.fog.density))) + break + case 'PerspectiveCamera': + ;(i = new Oo(e.fov, e.aspect, e.near, e.far)), + void 0 !== e.focus && (i.focus = e.focus), + void 0 !== e.zoom && (i.zoom = e.zoom), + void 0 !== e.filmGauge && (i.filmGauge = e.filmGauge), + void 0 !== e.filmOffset && (i.filmOffset = e.filmOffset), + void 0 !== e.view && (i.view = Object.assign({}, e.view)) + break + case 'OrthographicCamera': + ;(i = new ed(e.left, e.right, e.top, e.bottom, e.near, e.far)), + void 0 !== e.zoom && (i.zoom = e.zoom), + void 0 !== e.view && (i.view = Object.assign({}, e.view)) + break + case 'AmbientLight': + i = new rd(e.color, e.intensity) + break + case 'DirectionalLight': + i = new nd(e.color, e.intensity) + break + case 'PointLight': + i = new $h(e.color, e.intensity, e.distance, e.decay) + break + case 'RectAreaLight': + i = new id(e.color, e.intensity, e.width, e.height) + break + case 'SpotLight': + i = new Kh( + e.color, + e.intensity, + e.distance, + e.angle, + e.penumbra, + e.decay, + ) + break + case 'HemisphereLight': + i = new Yh(e.color, e.groundColor, e.intensity) + break + case 'LightProbe': + i = new ad().fromJSON(e) + break + case 'SkinnedMesh': + ;(i = new Wl((o = s(e.geometry)), (a = l(e.material)))), + void 0 !== e.bindMode && (i.bindMode = e.bindMode), + void 0 !== e.bindMatrix && i.bindMatrix.fromArray(e.bindMatrix), + void 0 !== e.skeleton && (i.skeleton = e.skeleton) + break + case 'Mesh': + i = new xo((o = s(e.geometry)), (a = l(e.material))) + break + case 'InstancedMesh': + ;(o = s(e.geometry)), (a = l(e.material)) + var c = e.count, + u = e.instanceMatrix + ;(i = new ec(o, a, c)).instanceMatrix = new Fi( + new Float32Array(u.array), + 16, + ) + break + case 'LOD': + i = new Ul() + break + case 'Line': + i = new sc(s(e.geometry), l(e.material)) + break + case 'LineLoop': + i = new hc(s(e.geometry), l(e.material)) + break + case 'LineSegments': + i = new uc(s(e.geometry), l(e.material)) + break + case 'PointCloud': + case 'Points': + i = new gc(s(e.geometry), l(e.material)) + break + case 'Sprite': + i = new Bl(l(e.material)) + break + case 'Group': + i = new rl() + break + case 'Bone': + i = new ql() + break + default: + i = new si() + } + if ( + ((i.uuid = e.uuid), + void 0 !== e.name && (i.name = e.name), + void 0 !== e.matrix + ? (i.matrix.fromArray(e.matrix), + void 0 !== e.matrixAutoUpdate && + (i.matrixAutoUpdate = e.matrixAutoUpdate), + i.matrixAutoUpdate && + i.matrix.decompose(i.position, i.quaternion, i.scale)) + : (void 0 !== e.position && i.position.fromArray(e.position), + void 0 !== e.rotation && i.rotation.fromArray(e.rotation), + void 0 !== e.quaternion && i.quaternion.fromArray(e.quaternion), + void 0 !== e.scale && i.scale.fromArray(e.scale)), + void 0 !== e.castShadow && (i.castShadow = e.castShadow), + void 0 !== e.receiveShadow && (i.receiveShadow = e.receiveShadow), + e.shadow && + (void 0 !== e.shadow.bias && (i.shadow.bias = e.shadow.bias), + void 0 !== e.shadow.normalBias && + (i.shadow.normalBias = e.shadow.normalBias), + void 0 !== e.shadow.radius && (i.shadow.radius = e.shadow.radius), + void 0 !== e.shadow.mapSize && + i.shadow.mapSize.fromArray(e.shadow.mapSize), + void 0 !== e.shadow.camera && + (i.shadow.camera = this.parseObject(e.shadow.camera))), + void 0 !== e.visible && (i.visible = e.visible), + void 0 !== e.frustumCulled && (i.frustumCulled = e.frustumCulled), + void 0 !== e.renderOrder && (i.renderOrder = e.renderOrder), + void 0 !== e.userData && (i.userData = e.userData), + void 0 !== e.layers && (i.layers.mask = e.layers), + void 0 !== e.children) + ) + for (var h = e.children, d = 0; d < h.length; d++) + i.add(this.parseObject(h[d], t, n, r)) + if (void 0 !== e.animations) + for (var p = e.animations, f = 0; f < p.length; f++) { + var m = p[f] + i.animations.push(r[m]) + } + if ('LOD' === e.type) { + void 0 !== e.autoUpdate && (i.autoUpdate = e.autoUpdate) + for (var v = e.levels, g = 0; g < v.length; g++) { + var y = v[g], + b = i.getObjectByProperty('uuid', y.object) + void 0 !== b && i.addLevel(b, y.distance) + } + } + return i + }), + (n.bindSkeletons = function (e, t) { + 0 !== Object.keys(t).length && + e.traverse(function (e) { + if (!0 === e.isSkinnedMesh && void 0 !== e.skeleton) { + var n = t[e.skeleton] + void 0 === n + ? console.warn( + 'THREE.ObjectLoader: No skeleton found with UUID:', + e.skeleton, + ) + : e.bind(n, e.bindMatrix) + } + }) + }), + (n.setTexturePath = function (e) { + return ( + console.warn( + 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().', + ), + this.setResourcePath(e) + ) + }), + t + ) + })(lh), + pd = { + UVMapping: oe, + CubeReflectionMapping: ae, + CubeRefractionMapping: se, + EquirectangularReflectionMapping: le, + EquirectangularRefractionMapping: ce, + CubeUVReflectionMapping: ue, + CubeUVRefractionMapping: he, + }, + fd = { + RepeatWrapping: de, + ClampToEdgeWrapping: pe, + MirroredRepeatWrapping: fe, + }, + md = { + NearestFilter: me, + NearestMipmapNearestFilter: ve, + NearestMipmapLinearFilter: ye, + LinearFilter: Ae, + LinearMipmapNearestFilter: we, + LinearMipmapLinearFilter: Ee, + } + function vd(e) { + 'undefined' === typeof createImageBitmap && + console.warn('THREE.ImageBitmapLoader: createImageBitmap() not supported.'), + 'undefined' === typeof fetch && + console.warn('THREE.ImageBitmapLoader: fetch() not supported.'), + lh.call(this, e), + (this.options = { premultiplyAlpha: 'none' }) + } + function gd() { + ;(this.type = 'ShapePath'), + (this.color = new Li()), + (this.subPaths = []), + (this.currentPath = null) + } + ;(vd.prototype = Object.assign(Object.create(lh.prototype), { + constructor: vd, + isImageBitmapLoader: !0, + setOptions: function (e) { + return (this.options = e), this + }, + load: function (e, t, n, r) { + void 0 === e && (e = ''), + void 0 !== this.path && (e = this.path + e), + (e = this.manager.resolveURL(e)) + var i = this, + o = oh.get(e) + if (void 0 !== o) + return ( + i.manager.itemStart(e), + setTimeout(function () { + t && t(o), i.manager.itemEnd(e) + }, 0), + o + ) + var a = {} + ;(a.credentials = + 'anonymous' === this.crossOrigin ? 'same-origin' : 'include'), + fetch(e, a) + .then(function (e) { + return e.blob() + }) + .then(function (e) { + return createImageBitmap(e, i.options) + }) + .then(function (n) { + oh.add(e, n), t && t(n), i.manager.itemEnd(e) + }) + .catch(function (t) { + r && r(t), i.manager.itemError(e), i.manager.itemEnd(e) + }), + i.manager.itemStart(e) + }, + })), + Object.assign(gd.prototype, { + moveTo: function (e, t) { + return ( + (this.currentPath = new Wh()), + this.subPaths.push(this.currentPath), + this.currentPath.moveTo(e, t), + this + ) + }, + lineTo: function (e, t) { + return this.currentPath.lineTo(e, t), this + }, + quadraticCurveTo: function (e, t, n, r) { + return this.currentPath.quadraticCurveTo(e, t, n, r), this + }, + bezierCurveTo: function (e, t, n, r, i, o) { + return this.currentPath.bezierCurveTo(e, t, n, r, i, o), this + }, + splineThru: function (e) { + return this.currentPath.splineThru(e), this + }, + toShapes: function (e, t) { + function n(e) { + for (var t = [], n = 0, r = e.length; n < r; n++) { + var i = e[n], + o = new qh() + ;(o.curves = i.curves), t.push(o) + } + return t + } + function r(e, t) { + for (var n = t.length, r = !1, i = n - 1, o = 0; o < n; i = o++) { + var a = t[i], + s = t[o], + l = s.x - a.x, + c = s.y - a.y + if (Math.abs(c) > Number.EPSILON) { + if ( + (c < 0 && ((a = t[o]), (l = -l), (s = t[i]), (c = -c)), + e.y < a.y || e.y > s.y) + ) + continue + if (e.y === a.y) { + if (e.x === a.x) return !0 + } else { + var u = c * (e.x - a.x) - l * (e.y - a.y) + if (0 === u) return !0 + if (u < 0) continue + r = !r + } + } else { + if (e.y !== a.y) continue + if ((s.x <= e.x && e.x <= a.x) || (a.x <= e.x && e.x <= s.x)) + return !0 + } + } + return r + } + var i, + o, + a, + s = hu.isClockWise, + l = this.subPaths + if (0 === l.length) return [] + if (!0 === t) return n(l) + var c = [] + if (1 === l.length) + return (o = l[0]), ((a = new qh()).curves = o.curves), c.push(a), c + var u = !s(l[0].getPoints()) + u = e ? !u : u + var h, + d, + p = [], + f = [], + m = [], + v = 0 + ;(f[v] = void 0), (m[v] = []) + for (var g = 0, y = l.length; g < y; g++) + (i = s((h = (o = l[g]).getPoints()))), + (i = e ? !i : i) + ? (!u && f[v] && v++, + (f[v] = { s: new qh(), p: h }), + (f[v].s.curves = o.curves), + u && v++, + (m[v] = [])) + : m[v].push({ h: o, p: h[0] }) + if (!f[0]) return n(l) + if (f.length > 1) { + for (var b = !1, A = [], w = 0, x = f.length; w < x; w++) p[w] = [] + for (var E = 0, M = f.length; E < M; E++) + for (var _ = m[E], T = 0; T < _.length; T++) { + for (var S = _[T], C = !0, L = 0; L < f.length; L++) + r(S.p, f[L].p) && + (E !== L && A.push({ froms: E, tos: L, hole: T }), + C ? ((C = !1), p[L].push(S)) : (b = !0)) + C && p[E].push(S) + } + A.length > 0 && (b || (m = p)) + } + for (var R = 0, P = f.length; R < P; R++) { + ;(a = f[R].s), c.push(a) + for (var D = 0, O = (d = m[R]).length; D < O; D++) a.holes.push(d[D].h) + } + return c + }, + }) + var yd, + bd = (function () { + function e(e) { + Object.defineProperty(this, 'isFont', { value: !0 }), + (this.type = 'Font'), + (this.data = e) + } + return ( + (e.prototype.generateShapes = function (e, t) { + void 0 === t && (t = 100) + for ( + var n = [], r = Ad(e, t, this.data), i = 0, o = r.length; + i < o; + i++ + ) + Array.prototype.push.apply(n, r[i].toShapes()) + return n + }), + e + ) + })() + function Ad(e, t, n) { + for ( + var r = Array.from ? Array.from(e) : String(e).split(''), + i = t / n.resolution, + o = (n.boundingBox.yMax - n.boundingBox.yMin + n.underlineThickness) * i, + a = [], + s = 0, + l = 0, + c = 0; + c < r.length; + c++ + ) { + var u = r[c] + if ('\n' === u) (s = 0), (l -= o) + else { + var h = wd(u, i, s, l, n) + ;(s += h.offsetX), a.push(h.path) + } + } + return a + } + function wd(e, t, n, r, i) { + var o = i.glyphs[e] || i.glyphs['?'] + if (o) { + var a, + s, + l, + c, + u, + h, + d, + p, + f = new gd() + if (o.o) + for ( + var m = o._cachedOutline || (o._cachedOutline = o.o.split(' ')), + v = 0, + g = m.length; + v < g; + + ) + switch (m[v++]) { + case 'm': + ;(a = m[v++] * t + n), (s = m[v++] * t + r), f.moveTo(a, s) + break + case 'l': + ;(a = m[v++] * t + n), (s = m[v++] * t + r), f.lineTo(a, s) + break + case 'q': + ;(l = m[v++] * t + n), + (c = m[v++] * t + r), + (u = m[v++] * t + n), + (h = m[v++] * t + r), + f.quadraticCurveTo(u, h, l, c) + break + case 'b': + ;(l = m[v++] * t + n), + (c = m[v++] * t + r), + (u = m[v++] * t + n), + (h = m[v++] * t + r), + (d = m[v++] * t + n), + (p = m[v++] * t + r), + f.bezierCurveTo(u, h, d, p, l, c) + } + return { offsetX: o.ha * t, path: f } + } + console.error( + 'THREE.Font: character "' + + e + + '" does not exists in font family ' + + i.familyName + + '.', + ) + } + function xd(e) { + lh.call(this, e) + } + xd.prototype = Object.assign(Object.create(lh.prototype), { + constructor: xd, + load: function (t, n, r, i) { + var o = this, + a = new uh(this.manager) + a.setPath(this.path), + a.setRequestHeader(this.requestHeader), + a.setWithCredentials(o.withCredentials), + a.load( + t, + function (t) { + var r + try { + r = JSON.parse(t) + } catch (e) { + console.warn( + 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.', + ), + (r = JSON.parse(t.substring(65, t.length - 2))) + } + var i = o.parse(r) + n && n(i) + }, + r, + i, + ) + }, + parse: function (e) { + return new bd(e) + }, + }) + var Ed = { + getContext: function () { + return ( + void 0 === yd && + (yd = new (window.AudioContext || window.webkitAudioContext)()), + yd + ) + }, + setContext: function (e) { + yd = e + }, + } + function Md(e) { + lh.call(this, e) + } + function _d(e, t, n) { + ad.call(this, void 0, n) + var r = new Li().set(e), + i = new Li().set(t), + o = new lr(r.r, r.g, r.b), + a = new lr(i.r, i.g, i.b), + s = Math.sqrt(Math.PI), + l = s * Math.sqrt(0.75) + this.sh.coefficients[0].copy(o).add(a).multiplyScalar(s), + this.sh.coefficients[1].copy(o).sub(a).multiplyScalar(l) + } + function Td(e, t) { + ad.call(this, void 0, t) + var n = new Li().set(e) + this.sh.coefficients[0] + .set(n.r, n.g, n.b) + .multiplyScalar(2 * Math.sqrt(Math.PI)) + } + ;(Md.prototype = Object.assign(Object.create(lh.prototype), { + constructor: Md, + load: function (t, n, r, i) { + var o = this, + a = new uh(o.manager) + a.setResponseType('arraybuffer'), + a.setPath(o.path), + a.setRequestHeader(o.requestHeader), + a.setWithCredentials(o.withCredentials), + a.load( + t, + function (r) { + try { + var a = r.slice(0) + Ed.getContext().decodeAudioData(a, function (e) { + n(e) + }) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + })), + (_d.prototype = Object.assign(Object.create(ad.prototype), { + constructor: _d, + isHemisphereLightProbe: !0, + copy: function (e) { + return ad.prototype.copy.call(this, e), this + }, + toJSON: function (e) { + return ad.prototype.toJSON.call(this, e) + }, + })), + (Td.prototype = Object.assign(Object.create(ad.prototype), { + constructor: Td, + isAmbientLightProbe: !0, + copy: function (e) { + return ad.prototype.copy.call(this, e), this + }, + toJSON: function (e) { + return ad.prototype.toJSON.call(this, e) + }, + })) + var Sd = new Fr(), + Cd = new Fr() + function Ld() { + ;(this.type = 'StereoCamera'), + (this.aspect = 1), + (this.eyeSep = 0.064), + (this.cameraL = new Oo()), + this.cameraL.layers.enable(1), + (this.cameraL.matrixAutoUpdate = !1), + (this.cameraR = new Oo()), + this.cameraR.layers.enable(2), + (this.cameraR.matrixAutoUpdate = !1), + (this._cache = { + focus: null, + fov: null, + aspect: null, + near: null, + far: null, + zoom: null, + eyeSep: null, + }) + } + Object.assign(Ld.prototype, { + update: function (e) { + var t = this._cache + if ( + t.focus !== e.focus || + t.fov !== e.fov || + t.aspect !== e.aspect * this.aspect || + t.near !== e.near || + t.far !== e.far || + t.zoom !== e.zoom || + t.eyeSep !== this.eyeSep + ) { + ;(t.focus = e.focus), + (t.fov = e.fov), + (t.aspect = e.aspect * this.aspect), + (t.near = e.near), + (t.far = e.far), + (t.zoom = e.zoom), + (t.eyeSep = this.eyeSep) + var n, + r, + i = e.projectionMatrix.clone(), + o = t.eyeSep / 2, + a = (o * t.near) / t.focus, + s = (t.near * Math.tan(Kn.DEG2RAD * t.fov * 0.5)) / t.zoom + ;(Cd.elements[12] = -o), + (Sd.elements[12] = o), + (n = -s * t.aspect + a), + (r = s * t.aspect + a), + (i.elements[0] = (2 * t.near) / (r - n)), + (i.elements[8] = (r + n) / (r - n)), + this.cameraL.projectionMatrix.copy(i), + (n = -s * t.aspect - a), + (r = s * t.aspect - a), + (i.elements[0] = (2 * t.near) / (r - n)), + (i.elements[8] = (r + n) / (r - n)), + this.cameraR.projectionMatrix.copy(i) + } + this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Cd), + this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Sd) + }, + }) + var Rd = (function () { + function e(e) { + ;(this.autoStart = void 0 === e || e), + (this.startTime = 0), + (this.oldTime = 0), + (this.elapsedTime = 0), + (this.running = !1) + } + var t = e.prototype + return ( + (t.start = function () { + ;(this.startTime = Pd()), + (this.oldTime = this.startTime), + (this.elapsedTime = 0), + (this.running = !0) + }), + (t.stop = function () { + this.getElapsedTime(), (this.running = !1), (this.autoStart = !1) + }), + (t.getElapsedTime = function () { + return this.getDelta(), this.elapsedTime + }), + (t.getDelta = function () { + var e = 0 + if (this.autoStart && !this.running) return this.start(), 0 + if (this.running) { + var t = Pd() + ;(e = (t - this.oldTime) / 1e3), + (this.oldTime = t), + (this.elapsedTime += e) + } + return e + }), + e + ) + })() + function Pd() { + return ('undefined' === typeof performance ? Date : performance).now() + } + var Dd = new lr(), + Od = new sr(), + Id = new lr(), + Bd = new lr(), + Fd = (function (e) { + function t() { + var t + return ( + ((t = e.call(this) || this).type = 'AudioListener'), + (t.context = Ed.getContext()), + (t.gain = t.context.createGain()), + t.gain.connect(t.context.destination), + (t.filter = null), + (t.timeDelta = 0), + (t._clock = new Rd()), + t + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.getInput = function () { + return this.gain + }), + (n.removeFilter = function () { + return ( + null !== this.filter && + (this.gain.disconnect(this.filter), + this.filter.disconnect(this.context.destination), + this.gain.connect(this.context.destination), + (this.filter = null)), + this + ) + }), + (n.getFilter = function () { + return this.filter + }), + (n.setFilter = function (e) { + return ( + null !== this.filter + ? (this.gain.disconnect(this.filter), + this.filter.disconnect(this.context.destination)) + : this.gain.disconnect(this.context.destination), + (this.filter = e), + this.gain.connect(this.filter), + this.filter.connect(this.context.destination), + this + ) + }), + (n.getMasterVolume = function () { + return this.gain.gain.value + }), + (n.setMasterVolume = function (e) { + return ( + this.gain.gain.setTargetAtTime(e, this.context.currentTime, 0.01), + this + ) + }), + (n.updateMatrixWorld = function (t) { + e.prototype.updateMatrixWorld.call(this, t) + var n = this.context.listener, + r = this.up + if ( + ((this.timeDelta = this._clock.getDelta()), + this.matrixWorld.decompose(Dd, Od, Id), + Bd.set(0, 0, -1).applyQuaternion(Od), + n.positionX) + ) { + var i = this.context.currentTime + this.timeDelta + n.positionX.linearRampToValueAtTime(Dd.x, i), + n.positionY.linearRampToValueAtTime(Dd.y, i), + n.positionZ.linearRampToValueAtTime(Dd.z, i), + n.forwardX.linearRampToValueAtTime(Bd.x, i), + n.forwardY.linearRampToValueAtTime(Bd.y, i), + n.forwardZ.linearRampToValueAtTime(Bd.z, i), + n.upX.linearRampToValueAtTime(r.x, i), + n.upY.linearRampToValueAtTime(r.y, i), + n.upZ.linearRampToValueAtTime(r.z, i) + } else + n.setPosition(Dd.x, Dd.y, Dd.z), + n.setOrientation(Bd.x, Bd.y, Bd.z, r.x, r.y, r.z) + }), + t + ) + })(si), + kd = (function (e) { + function t(t) { + var n + return ( + ((n = e.call(this) || this).type = 'Audio'), + (n.listener = t), + (n.context = t.context), + (n.gain = n.context.createGain()), + n.gain.connect(t.getInput()), + (n.autoplay = !1), + (n.buffer = null), + (n.detune = 0), + (n.loop = !1), + (n.loopStart = 0), + (n.loopEnd = 0), + (n.offset = 0), + (n.duration = void 0), + (n.playbackRate = 1), + (n.isPlaying = !1), + (n.hasPlaybackControl = !0), + (n.source = null), + (n.sourceType = 'empty'), + (n._startedAt = 0), + (n._progress = 0), + (n._connected = !1), + (n.filters = []), + n + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.getOutput = function () { + return this.gain + }), + (n.setNodeSource = function (e) { + return ( + (this.hasPlaybackControl = !1), + (this.sourceType = 'audioNode'), + (this.source = e), + this.connect(), + this + ) + }), + (n.setMediaElementSource = function (e) { + return ( + (this.hasPlaybackControl = !1), + (this.sourceType = 'mediaNode'), + (this.source = this.context.createMediaElementSource(e)), + this.connect(), + this + ) + }), + (n.setMediaStreamSource = function (e) { + return ( + (this.hasPlaybackControl = !1), + (this.sourceType = 'mediaStreamNode'), + (this.source = this.context.createMediaStreamSource(e)), + this.connect(), + this + ) + }), + (n.setBuffer = function (e) { + return ( + (this.buffer = e), + (this.sourceType = 'buffer'), + this.autoplay && this.play(), + this + ) + }), + (n.play = function (e) { + if ((void 0 === e && (e = 0), !0 !== this.isPlaying)) { + if (!1 !== this.hasPlaybackControl) { + this._startedAt = this.context.currentTime + e + var t = this.context.createBufferSource() + return ( + (t.buffer = this.buffer), + (t.loop = this.loop), + (t.loopStart = this.loopStart), + (t.loopEnd = this.loopEnd), + (t.onended = this.onEnded.bind(this)), + t.start( + this._startedAt, + this._progress + this.offset, + this.duration, + ), + (this.isPlaying = !0), + (this.source = t), + this.setDetune(this.detune), + this.setPlaybackRate(this.playbackRate), + this.connect() + ) + } + console.warn('THREE.Audio: this Audio has no playback control.') + } else console.warn('THREE.Audio: Audio is already playing.') + }), + (n.pause = function () { + if (!1 !== this.hasPlaybackControl) + return ( + !0 === this.isPlaying && + ((this._progress += + Math.max(this.context.currentTime - this._startedAt, 0) * + this.playbackRate), + !0 === this.loop && + (this._progress = + this._progress % (this.duration || this.buffer.duration)), + this.source.stop(), + (this.source.onended = null), + (this.isPlaying = !1)), + this + ) + console.warn('THREE.Audio: this Audio has no playback control.') + }), + (n.stop = function () { + if (!1 !== this.hasPlaybackControl) + return ( + (this._progress = 0), + this.source.stop(), + (this.source.onended = null), + (this.isPlaying = !1), + this + ) + console.warn('THREE.Audio: this Audio has no playback control.') + }), + (n.connect = function () { + if (this.filters.length > 0) { + this.source.connect(this.filters[0]) + for (var e = 1, t = this.filters.length; e < t; e++) + this.filters[e - 1].connect(this.filters[e]) + this.filters[this.filters.length - 1].connect(this.getOutput()) + } else this.source.connect(this.getOutput()) + return (this._connected = !0), this + }), + (n.disconnect = function () { + if (this.filters.length > 0) { + this.source.disconnect(this.filters[0]) + for (var e = 1, t = this.filters.length; e < t; e++) + this.filters[e - 1].disconnect(this.filters[e]) + this.filters[this.filters.length - 1].disconnect(this.getOutput()) + } else this.source.disconnect(this.getOutput()) + return (this._connected = !1), this + }), + (n.getFilters = function () { + return this.filters + }), + (n.setFilters = function (e) { + return ( + e || (e = []), + !0 === this._connected + ? (this.disconnect(), (this.filters = e.slice()), this.connect()) + : (this.filters = e.slice()), + this + ) + }), + (n.setDetune = function (e) { + if (((this.detune = e), void 0 !== this.source.detune)) + return ( + !0 === this.isPlaying && + this.source.detune.setTargetAtTime( + this.detune, + this.context.currentTime, + 0.01, + ), + this + ) + }), + (n.getDetune = function () { + return this.detune + }), + (n.getFilter = function () { + return this.getFilters()[0] + }), + (n.setFilter = function (e) { + return this.setFilters(e ? [e] : []) + }), + (n.setPlaybackRate = function (e) { + if (!1 !== this.hasPlaybackControl) + return ( + (this.playbackRate = e), + !0 === this.isPlaying && + this.source.playbackRate.setTargetAtTime( + this.playbackRate, + this.context.currentTime, + 0.01, + ), + this + ) + console.warn('THREE.Audio: this Audio has no playback control.') + }), + (n.getPlaybackRate = function () { + return this.playbackRate + }), + (n.onEnded = function () { + this.isPlaying = !1 + }), + (n.getLoop = function () { + return !1 === this.hasPlaybackControl + ? (console.warn('THREE.Audio: this Audio has no playback control.'), + !1) + : this.loop + }), + (n.setLoop = function (e) { + if (!1 !== this.hasPlaybackControl) + return ( + (this.loop = e), + !0 === this.isPlaying && (this.source.loop = this.loop), + this + ) + console.warn('THREE.Audio: this Audio has no playback control.') + }), + (n.setLoopStart = function (e) { + return (this.loopStart = e), this + }), + (n.setLoopEnd = function (e) { + return (this.loopEnd = e), this + }), + (n.getVolume = function () { + return this.gain.gain.value + }), + (n.setVolume = function (e) { + return ( + this.gain.gain.setTargetAtTime(e, this.context.currentTime, 0.01), + this + ) + }), + t + ) + })(si), + Nd = new lr(), + Ud = new sr(), + Hd = new lr(), + Gd = new lr(), + zd = (function (e) { + function t(t) { + var n + return ( + ((n = e.call(this, t) || this).panner = n.context.createPanner()), + (n.panner.panningModel = 'HRTF'), + n.panner.connect(n.gain), + n + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.getOutput = function () { + return this.panner + }), + (n.getRefDistance = function () { + return this.panner.refDistance + }), + (n.setRefDistance = function (e) { + return (this.panner.refDistance = e), this + }), + (n.getRolloffFactor = function () { + return this.panner.rolloffFactor + }), + (n.setRolloffFactor = function (e) { + return (this.panner.rolloffFactor = e), this + }), + (n.getDistanceModel = function () { + return this.panner.distanceModel + }), + (n.setDistanceModel = function (e) { + return (this.panner.distanceModel = e), this + }), + (n.getMaxDistance = function () { + return this.panner.maxDistance + }), + (n.setMaxDistance = function (e) { + return (this.panner.maxDistance = e), this + }), + (n.setDirectionalCone = function (e, t, n) { + return ( + (this.panner.coneInnerAngle = e), + (this.panner.coneOuterAngle = t), + (this.panner.coneOuterGain = n), + this + ) + }), + (n.updateMatrixWorld = function (t) { + if ( + (e.prototype.updateMatrixWorld.call(this, t), + !0 !== this.hasPlaybackControl || !1 !== this.isPlaying) + ) { + this.matrixWorld.decompose(Nd, Ud, Hd), + Gd.set(0, 0, 1).applyQuaternion(Ud) + var n = this.panner + if (n.positionX) { + var r = this.context.currentTime + this.listener.timeDelta + n.positionX.linearRampToValueAtTime(Nd.x, r), + n.positionY.linearRampToValueAtTime(Nd.y, r), + n.positionZ.linearRampToValueAtTime(Nd.z, r), + n.orientationX.linearRampToValueAtTime(Gd.x, r), + n.orientationY.linearRampToValueAtTime(Gd.y, r), + n.orientationZ.linearRampToValueAtTime(Gd.z, r) + } else + n.setPosition(Nd.x, Nd.y, Nd.z), n.setOrientation(Gd.x, Gd.y, Gd.z) + } + }), + t + ) + })(kd), + jd = (function () { + function e(e, t) { + void 0 === t && (t = 2048), + (this.analyser = e.context.createAnalyser()), + (this.analyser.fftSize = t), + (this.data = new Uint8Array(this.analyser.frequencyBinCount)), + e.getOutput().connect(this.analyser) + } + var t = e.prototype + return ( + (t.getFrequencyData = function () { + return this.analyser.getByteFrequencyData(this.data), this.data + }), + (t.getAverageFrequency = function () { + for (var e = 0, t = this.getFrequencyData(), n = 0; n < t.length; n++) + e += t[n] + return e / t.length + }), + e + ) + })() + function Vd(e, t, n) { + var r, i, o + switch (((this.binding = e), (this.valueSize = n), t)) { + case 'quaternion': + ;(r = this._slerp), + (i = this._slerpAdditive), + (o = this._setAdditiveIdentityQuaternion), + (this.buffer = new Float64Array(6 * n)), + (this._workIndex = 5) + break + case 'string': + case 'bool': + ;(r = this._select), + (i = this._select), + (o = this._setAdditiveIdentityOther), + (this.buffer = new Array(5 * n)) + break + default: + ;(r = this._lerp), + (i = this._lerpAdditive), + (o = this._setAdditiveIdentityNumeric), + (this.buffer = new Float64Array(5 * n)) + } + ;(this._mixBufferRegion = r), + (this._mixBufferRegionAdditive = i), + (this._setIdentity = o), + (this._origIndex = 3), + (this._addIndex = 4), + (this.cumulativeWeight = 0), + (this.cumulativeWeightAdditive = 0), + (this.useCount = 0), + (this.referenceCount = 0) + } + Object.assign(Vd.prototype, { + accumulate: function (e, t) { + var n = this.buffer, + r = this.valueSize, + i = e * r + r, + o = this.cumulativeWeight + if (0 === o) { + for (var a = 0; a !== r; ++a) n[i + a] = n[a] + o = t + } else { + var s = t / (o += t) + this._mixBufferRegion(n, i, 0, s, r) + } + this.cumulativeWeight = o + }, + accumulateAdditive: function (e) { + var t = this.buffer, + n = this.valueSize, + r = n * this._addIndex + 0 === this.cumulativeWeightAdditive && this._setIdentity(), + this._mixBufferRegionAdditive(t, r, 0, e, n), + (this.cumulativeWeightAdditive += e) + }, + apply: function (e) { + var t = this.valueSize, + n = this.buffer, + r = e * t + t, + i = this.cumulativeWeight, + o = this.cumulativeWeightAdditive, + a = this.binding + if ( + ((this.cumulativeWeight = 0), (this.cumulativeWeightAdditive = 0), i < 1) + ) { + var s = t * this._origIndex + this._mixBufferRegion(n, r, s, 1 - i, t) + } + o > 0 && this._mixBufferRegionAdditive(n, r, this._addIndex * t, 1, t) + for (var l = t, c = t + t; l !== c; ++l) + if (n[l] !== n[l + t]) { + a.setValue(n, r) + break + } + }, + saveOriginalState: function () { + var e = this.binding, + t = this.buffer, + n = this.valueSize, + r = n * this._origIndex + e.getValue(t, r) + for (var i = n, o = r; i !== o; ++i) t[i] = t[r + (i % n)] + this._setIdentity(), + (this.cumulativeWeight = 0), + (this.cumulativeWeightAdditive = 0) + }, + restoreOriginalState: function () { + var e = 3 * this.valueSize + this.binding.setValue(this.buffer, e) + }, + _setAdditiveIdentityNumeric: function () { + for ( + var e = this._addIndex * this.valueSize, t = e + this.valueSize, n = e; + n < t; + n++ + ) + this.buffer[n] = 0 + }, + _setAdditiveIdentityQuaternion: function () { + this._setAdditiveIdentityNumeric(), + (this.buffer[this._addIndex * this.valueSize + 3] = 1) + }, + _setAdditiveIdentityOther: function () { + for ( + var e = this._origIndex * this.valueSize, + t = this._addIndex * this.valueSize, + n = 0; + n < this.valueSize; + n++ + ) + this.buffer[t + n] = this.buffer[e + n] + }, + _select: function (e, t, n, r, i) { + if (r >= 0.5) for (var o = 0; o !== i; ++o) e[t + o] = e[n + o] + }, + _slerp: function (e, t, n, r) { + sr.slerpFlat(e, t, e, t, e, n, r) + }, + _slerpAdditive: function (e, t, n, r, i) { + var o = this._workIndex * i + sr.multiplyQuaternionsFlat(e, o, e, t, e, n), + sr.slerpFlat(e, t, e, t, e, o, r) + }, + _lerp: function (e, t, n, r, i) { + for (var o = 1 - r, a = 0; a !== i; ++a) { + var s = t + a + e[s] = e[s] * o + e[n + a] * r + } + }, + _lerpAdditive: function (e, t, n, r, i) { + for (var o = 0; o !== i; ++o) { + var a = t + o + e[a] = e[a] + e[n + o] * r + } + }, + }) + var Wd = '\\[\\]\\.:\\/', + qd = new RegExp('[' + Wd + ']', 'g'), + Xd = '[^' + Wd + ']', + Yd = '[^' + Wd.replace('\\.', '') + ']', + Qd = /((?:WC+[\/:])*)/.source.replace('WC', Xd), + Zd = /(WCOD+)?/.source.replace('WCOD', Yd), + Kd = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace('WC', Xd), + Jd = /\.(WC+)(?:\[(.+)\])?/.source.replace('WC', Xd), + $d = new RegExp('^' + Qd + Zd + Kd + Jd + '$'), + ep = ['material', 'materials', 'bones'] + function tp(e, t, n) { + var r = n || np.parseTrackName(t) + ;(this._targetGroup = e), (this._bindings = e.subscribe_(t, r)) + } + function np(e, t, n) { + ;(this.path = t), + (this.parsedPath = n || np.parseTrackName(t)), + (this.node = np.findNode(e, this.parsedPath.nodeName) || e), + (this.rootNode = e) + } + function rp() { + ;(this.uuid = Kn.generateUUID()), + (this._objects = Array.prototype.slice.call(arguments)), + (this.nCachedObjects_ = 0) + var e = {} + this._indicesByUUID = e + for (var t = 0, n = arguments.length; t !== n; ++t) e[arguments[t].uuid] = t + ;(this._paths = []), + (this._parsedPaths = []), + (this._bindings = []), + (this._bindingsIndicesByPath = {}) + var r = this + this.stats = { + objects: { + get total() { + return r._objects.length + }, + get inUse() { + return this.total - r.nCachedObjects_ + }, + }, + get bindingsPerObject() { + return r._bindings.length + }, + } + } + Object.assign(tp.prototype, { + getValue: function (e, t) { + this.bind() + var n = this._targetGroup.nCachedObjects_, + r = this._bindings[n] + void 0 !== r && r.getValue(e, t) + }, + setValue: function (e, t) { + for ( + var n = this._bindings, + r = this._targetGroup.nCachedObjects_, + i = n.length; + r !== i; + ++r + ) + n[r].setValue(e, t) + }, + bind: function () { + for ( + var e = this._bindings, + t = this._targetGroup.nCachedObjects_, + n = e.length; + t !== n; + ++t + ) + e[t].bind() + }, + unbind: function () { + for ( + var e = this._bindings, + t = this._targetGroup.nCachedObjects_, + n = e.length; + t !== n; + ++t + ) + e[t].unbind() + }, + }), + Object.assign(np, { + Composite: tp, + create: function (e, t, n) { + return e && e.isAnimationObjectGroup + ? new np.Composite(e, t, n) + : new np(e, t, n) + }, + sanitizeNodeName: function (e) { + return e.replace(/\s/g, '_').replace(qd, '') + }, + parseTrackName: function (e) { + var t = $d.exec(e) + if (!t) throw new Error('PropertyBinding: Cannot parse trackName: ' + e) + var n = { + nodeName: t[2], + objectName: t[3], + objectIndex: t[4], + propertyName: t[5], + propertyIndex: t[6], + }, + r = n.nodeName && n.nodeName.lastIndexOf('.') + if (void 0 !== r && -1 !== r) { + var i = n.nodeName.substring(r + 1) + ;-1 !== ep.indexOf(i) && + ((n.nodeName = n.nodeName.substring(0, r)), (n.objectName = i)) + } + if (null === n.propertyName || 0 === n.propertyName.length) + throw new Error( + 'PropertyBinding: can not parse propertyName from trackName: ' + e, + ) + return n + }, + findNode: function (e, t) { + if ( + !t || + '' === t || + '.' === t || + -1 === t || + t === e.name || + t === e.uuid + ) + return e + if (e.skeleton) { + var n = e.skeleton.getBoneByName(t) + if (void 0 !== n) return n + } + if (e.children) { + var r = (function e(n) { + for (var r = 0; r < n.length; r++) { + var i = n[r] + if (i.name === t || i.uuid === t) return i + var o = e(i.children) + if (o) return o + } + return null + })(e.children) + if (r) return r + } + return null + }, + }), + Object.assign(np.prototype, { + _getValue_unavailable: function () {}, + _setValue_unavailable: function () {}, + BindingType: { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3, + }, + Versioning: { None: 0, NeedsUpdate: 1, MatrixWorldNeedsUpdate: 2 }, + GetterByBindingType: [ + function (e, t) { + e[t] = this.node[this.propertyName] + }, + function (e, t) { + for (var n = this.resolvedProperty, r = 0, i = n.length; r !== i; ++r) + e[t++] = n[r] + }, + function (e, t) { + e[t] = this.resolvedProperty[this.propertyIndex] + }, + function (e, t) { + this.resolvedProperty.toArray(e, t) + }, + ], + SetterByBindingTypeAndVersioning: [ + [ + function (e, t) { + this.targetObject[this.propertyName] = e[t] + }, + function (e, t) { + ;(this.targetObject[this.propertyName] = e[t]), + (this.targetObject.needsUpdate = !0) + }, + function (e, t) { + ;(this.targetObject[this.propertyName] = e[t]), + (this.targetObject.matrixWorldNeedsUpdate = !0) + }, + ], + [ + function (e, t) { + for (var n = this.resolvedProperty, r = 0, i = n.length; r !== i; ++r) + n[r] = e[t++] + }, + function (e, t) { + for (var n = this.resolvedProperty, r = 0, i = n.length; r !== i; ++r) + n[r] = e[t++] + this.targetObject.needsUpdate = !0 + }, + function (e, t) { + for (var n = this.resolvedProperty, r = 0, i = n.length; r !== i; ++r) + n[r] = e[t++] + this.targetObject.matrixWorldNeedsUpdate = !0 + }, + ], + [ + function (e, t) { + this.resolvedProperty[this.propertyIndex] = e[t] + }, + function (e, t) { + ;(this.resolvedProperty[this.propertyIndex] = e[t]), + (this.targetObject.needsUpdate = !0) + }, + function (e, t) { + ;(this.resolvedProperty[this.propertyIndex] = e[t]), + (this.targetObject.matrixWorldNeedsUpdate = !0) + }, + ], + [ + function (e, t) { + this.resolvedProperty.fromArray(e, t) + }, + function (e, t) { + this.resolvedProperty.fromArray(e, t), + (this.targetObject.needsUpdate = !0) + }, + function (e, t) { + this.resolvedProperty.fromArray(e, t), + (this.targetObject.matrixWorldNeedsUpdate = !0) + }, + ], + ], + getValue: function (e, t) { + this.bind(), this.getValue(e, t) + }, + setValue: function (e, t) { + this.bind(), this.setValue(e, t) + }, + bind: function () { + var e = this.node, + t = this.parsedPath, + n = t.objectName, + r = t.propertyName, + i = t.propertyIndex + if ( + (e || + ((e = np.findNode(this.rootNode, t.nodeName) || this.rootNode), + (this.node = e)), + (this.getValue = this._getValue_unavailable), + (this.setValue = this._setValue_unavailable), + e) + ) { + if (n) { + var o = t.objectIndex + switch (n) { + case 'materials': + if (!e.material) + return void console.error( + 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', + this, + ) + if (!e.material.materials) + return void console.error( + 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', + this, + ) + e = e.material.materials + break + case 'bones': + if (!e.skeleton) + return void console.error( + 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', + this, + ) + e = e.skeleton.bones + for (var a = 0; a < e.length; a++) + if (e[a].name === o) { + o = a + break + } + break + default: + if (void 0 === e[n]) + return void console.error( + 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', + this, + ) + e = e[n] + } + if (void 0 !== o) { + if (void 0 === e[o]) + return void console.error( + 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', + this, + e, + ) + e = e[o] + } + } + var s = e[r] + if (void 0 !== s) { + var l = this.Versioning.None + ;(this.targetObject = e), + void 0 !== e.needsUpdate + ? (l = this.Versioning.NeedsUpdate) + : void 0 !== e.matrixWorldNeedsUpdate && + (l = this.Versioning.MatrixWorldNeedsUpdate) + var c = this.BindingType.Direct + if (void 0 !== i) { + if ('morphTargetInfluences' === r) { + if (!e.geometry) + return void console.error( + 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', + this, + ) + if (!e.geometry.isBufferGeometry) + return void console.error( + 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', + this, + ) + if (!e.geometry.morphAttributes) + return void console.error( + 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', + this, + ) + void 0 !== e.morphTargetDictionary[i] && + (i = e.morphTargetDictionary[i]) + } + ;(c = this.BindingType.ArrayElement), + (this.resolvedProperty = s), + (this.propertyIndex = i) + } else + void 0 !== s.fromArray && void 0 !== s.toArray + ? ((c = this.BindingType.HasFromToArray), + (this.resolvedProperty = s)) + : Array.isArray(s) + ? ((c = this.BindingType.EntireArray), + (this.resolvedProperty = s)) + : (this.propertyName = r) + ;(this.getValue = this.GetterByBindingType[c]), + (this.setValue = this.SetterByBindingTypeAndVersioning[c][l]) + } else { + var u = t.nodeName + console.error( + 'THREE.PropertyBinding: Trying to update property for track: ' + + u + + '.' + + r + + " but it wasn't found.", + e, + ) + } + } else + console.error( + 'THREE.PropertyBinding: Trying to update node for track: ' + + this.path + + " but it wasn't found.", + ) + }, + unbind: function () { + ;(this.node = null), + (this.getValue = this._getValue_unbound), + (this.setValue = this._setValue_unbound) + }, + }), + Object.assign(np.prototype, { + _getValue_unbound: np.prototype.getValue, + _setValue_unbound: np.prototype.setValue, + }), + Object.assign(rp.prototype, { + isAnimationObjectGroup: !0, + add: function () { + for ( + var e = this._objects, + t = this._indicesByUUID, + n = this._paths, + r = this._parsedPaths, + i = this._bindings, + o = i.length, + a = void 0, + s = e.length, + l = this.nCachedObjects_, + c = 0, + u = arguments.length; + c !== u; + ++c + ) { + var h = arguments[c], + d = h.uuid, + p = t[d] + if (void 0 === p) { + ;(p = s++), (t[d] = p), e.push(h) + for (var f = 0, m = o; f !== m; ++f) i[f].push(new np(h, n[f], r[f])) + } else if (p < l) { + a = e[p] + var v = --l, + g = e[v] + ;(t[g.uuid] = p), (e[p] = g), (t[d] = v), (e[v] = h) + for (var y = 0, b = o; y !== b; ++y) { + var A = i[y], + w = A[v], + x = A[p] + ;(A[p] = w), void 0 === x && (x = new np(h, n[y], r[y])), (A[v] = x) + } + } else + e[p] !== a && + console.error( + 'THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.', + ) + } + this.nCachedObjects_ = l + }, + remove: function () { + for ( + var e = this._objects, + t = this._indicesByUUID, + n = this._bindings, + r = n.length, + i = this.nCachedObjects_, + o = 0, + a = arguments.length; + o !== a; + ++o + ) { + var s = arguments[o], + l = s.uuid, + c = t[l] + if (void 0 !== c && c >= i) { + var u = i++, + h = e[u] + ;(t[h.uuid] = c), (e[c] = h), (t[l] = u), (e[u] = s) + for (var d = 0, p = r; d !== p; ++d) { + var f = n[d], + m = f[u], + v = f[c] + ;(f[c] = m), (f[u] = v) + } + } + } + this.nCachedObjects_ = i + }, + uncache: function () { + for ( + var e = this._objects, + t = this._indicesByUUID, + n = this._bindings, + r = n.length, + i = this.nCachedObjects_, + o = e.length, + a = 0, + s = arguments.length; + a !== s; + ++a + ) { + var l = arguments[a].uuid, + c = t[l] + if (void 0 !== c) + if ((delete t[l], c < i)) { + var u = --i, + h = e[u], + d = --o, + p = e[d] + ;(t[h.uuid] = c), (e[c] = h), (t[p.uuid] = u), (e[u] = p), e.pop() + for (var f = 0, m = r; f !== m; ++f) { + var v = n[f], + g = v[u], + y = v[d] + ;(v[c] = g), (v[u] = y), v.pop() + } + } else { + var b = --o, + A = e[b] + b > 0 && (t[A.uuid] = c), (e[c] = A), e.pop() + for (var w = 0, x = r; w !== x; ++w) { + var E = n[w] + ;(E[c] = E[b]), E.pop() + } + } + } + this.nCachedObjects_ = i + }, + subscribe_: function (e, t) { + var n = this._bindingsIndicesByPath, + r = n[e], + i = this._bindings + if (void 0 !== r) return i[r] + var o = this._paths, + a = this._parsedPaths, + s = this._objects, + l = s.length, + c = this.nCachedObjects_, + u = new Array(l) + ;(r = i.length), (n[e] = r), o.push(e), a.push(t), i.push(u) + for (var h = c, d = s.length; h !== d; ++h) { + var p = s[h] + u[h] = new np(p, e, t) + } + return u + }, + unsubscribe_: function (e) { + var t = this._bindingsIndicesByPath, + n = t[e] + if (void 0 !== n) { + var r = this._paths, + i = this._parsedPaths, + o = this._bindings, + a = o.length - 1, + s = o[a] + ;(t[e[a]] = n), + (o[n] = s), + o.pop(), + (i[n] = i[a]), + i.pop(), + (r[n] = r[a]), + r.pop() + } + }, + }) + var ip = (function () { + function e(e, t, n, r) { + void 0 === n && (n = null), + void 0 === r && (r = t.blendMode), + (this._mixer = e), + (this._clip = t), + (this._localRoot = n), + (this.blendMode = r) + for ( + var i = t.tracks, + o = i.length, + a = new Array(o), + s = { endingStart: jt, endingEnd: jt }, + l = 0; + l !== o; + ++l + ) { + var c = i[l].createInterpolant(null) + ;(a[l] = c), (c.settings = s) + } + ;(this._interpolantSettings = s), + (this._interpolants = a), + (this._propertyBindings = new Array(o)), + (this._cacheIndex = null), + (this._byClipCacheIndex = null), + (this._timeScaleInterpolant = null), + (this._weightInterpolant = null), + (this.loop = Nt), + (this._loopCount = -1), + (this._startTime = null), + (this.time = 0), + (this.timeScale = 1), + (this._effectiveTimeScale = 1), + (this.weight = 1), + (this._effectiveWeight = 1), + (this.repetitions = 1 / 0), + (this.paused = !1), + (this.enabled = !0), + (this.clampWhenFinished = !1), + (this.zeroSlopeAtStart = !0), + (this.zeroSlopeAtEnd = !0) + } + var t = e.prototype + return ( + (t.play = function () { + return this._mixer._activateAction(this), this + }), + (t.stop = function () { + return this._mixer._deactivateAction(this), this.reset() + }), + (t.reset = function () { + return ( + (this.paused = !1), + (this.enabled = !0), + (this.time = 0), + (this._loopCount = -1), + (this._startTime = null), + this.stopFading().stopWarping() + ) + }), + (t.isRunning = function () { + return ( + this.enabled && + !this.paused && + 0 !== this.timeScale && + null === this._startTime && + this._mixer._isActiveAction(this) + ) + }), + (t.isScheduled = function () { + return this._mixer._isActiveAction(this) + }), + (t.startAt = function (e) { + return (this._startTime = e), this + }), + (t.setLoop = function (e, t) { + return (this.loop = e), (this.repetitions = t), this + }), + (t.setEffectiveWeight = function (e) { + return ( + (this.weight = e), + (this._effectiveWeight = this.enabled ? e : 0), + this.stopFading() + ) + }), + (t.getEffectiveWeight = function () { + return this._effectiveWeight + }), + (t.fadeIn = function (e) { + return this._scheduleFading(e, 0, 1) + }), + (t.fadeOut = function (e) { + return this._scheduleFading(e, 1, 0) + }), + (t.crossFadeFrom = function (e, t, n) { + if ((e.fadeOut(t), this.fadeIn(t), n)) { + var r = this._clip.duration, + i = e._clip.duration, + o = i / r, + a = r / i + e.warp(1, o, t), this.warp(a, 1, t) + } + return this + }), + (t.crossFadeTo = function (e, t, n) { + return e.crossFadeFrom(this, t, n) + }), + (t.stopFading = function () { + var e = this._weightInterpolant + return ( + null !== e && + ((this._weightInterpolant = null), + this._mixer._takeBackControlInterpolant(e)), + this + ) + }), + (t.setEffectiveTimeScale = function (e) { + return ( + (this.timeScale = e), + (this._effectiveTimeScale = this.paused ? 0 : e), + this.stopWarping() + ) + }), + (t.getEffectiveTimeScale = function () { + return this._effectiveTimeScale + }), + (t.setDuration = function (e) { + return (this.timeScale = this._clip.duration / e), this.stopWarping() + }), + (t.syncWith = function (e) { + return ( + (this.time = e.time), (this.timeScale = e.timeScale), this.stopWarping() + ) + }), + (t.halt = function (e) { + return this.warp(this._effectiveTimeScale, 0, e) + }), + (t.warp = function (e, t, n) { + var r = this._mixer, + i = r.time, + o = this.timeScale, + a = this._timeScaleInterpolant + null === a && + ((a = r._lendControlInterpolant()), (this._timeScaleInterpolant = a)) + var s = a.parameterPositions, + l = a.sampleValues + return (s[0] = i), (s[1] = i + n), (l[0] = e / o), (l[1] = t / o), this + }), + (t.stopWarping = function () { + var e = this._timeScaleInterpolant + return ( + null !== e && + ((this._timeScaleInterpolant = null), + this._mixer._takeBackControlInterpolant(e)), + this + ) + }), + (t.getMixer = function () { + return this._mixer + }), + (t.getClip = function () { + return this._clip + }), + (t.getRoot = function () { + return this._localRoot || this._mixer._root + }), + (t._update = function (e, t, n, r) { + if (this.enabled) { + var i = this._startTime + if (null !== i) { + var o = (e - i) * n + if (o < 0 || 0 === n) return + ;(this._startTime = null), (t = n * o) + } + t *= this._updateTimeScale(e) + var a = this._updateTime(t), + s = this._updateWeight(e) + if (s > 0) { + var l = this._interpolants, + c = this._propertyBindings + switch (this.blendMode) { + case Xt: + for (var u = 0, h = l.length; u !== h; ++u) + l[u].evaluate(a), c[u].accumulateAdditive(s) + break + case qt: + default: + for (var d = 0, p = l.length; d !== p; ++d) + l[d].evaluate(a), c[d].accumulate(r, s) + } + } + } else this._updateWeight(e) + }), + (t._updateWeight = function (e) { + var t = 0 + if (this.enabled) { + t = this.weight + var n = this._weightInterpolant + if (null !== n) { + var r = n.evaluate(e)[0] + ;(t *= r), + e > n.parameterPositions[1] && + (this.stopFading(), 0 === r && (this.enabled = !1)) + } + } + return (this._effectiveWeight = t), t + }), + (t._updateTimeScale = function (e) { + var t = 0 + if (!this.paused) { + t = this.timeScale + var n = this._timeScaleInterpolant + null !== n && + ((t *= n.evaluate(e)[0]), + e > n.parameterPositions[1] && + (this.stopWarping(), + 0 === t ? (this.paused = !0) : (this.timeScale = t))) + } + return (this._effectiveTimeScale = t), t + }), + (t._updateTime = function (e) { + var t = this._clip.duration, + n = this.loop, + r = this.time + e, + i = this._loopCount, + o = n === Ut + if (0 === e) return -1 === i ? r : o && 1 === (1 & i) ? t - r : r + if (n === kt) { + ;-1 === i && ((this._loopCount = 0), this._setEndings(!0, !0, !1)) + e: { + if (r >= t) r = t + else { + if (!(r < 0)) { + this.time = r + break e + } + r = 0 + } + this.clampWhenFinished ? (this.paused = !0) : (this.enabled = !1), + (this.time = r), + this._mixer.dispatchEvent({ + type: 'finished', + action: this, + direction: e < 0 ? -1 : 1, + }) + } + } else { + if ( + (-1 === i && + (e >= 0 + ? ((i = 0), this._setEndings(!0, 0 === this.repetitions, o)) + : this._setEndings(0 === this.repetitions, !0, o)), + r >= t || r < 0) + ) { + var a = Math.floor(r / t) + ;(r -= t * a), (i += Math.abs(a)) + var s = this.repetitions - i + if (s <= 0) + this.clampWhenFinished ? (this.paused = !0) : (this.enabled = !1), + (r = e > 0 ? t : 0), + (this.time = r), + this._mixer.dispatchEvent({ + type: 'finished', + action: this, + direction: e > 0 ? 1 : -1, + }) + else { + if (1 === s) { + var l = e < 0 + this._setEndings(l, !l, o) + } else this._setEndings(!1, !1, o) + ;(this._loopCount = i), + (this.time = r), + this._mixer.dispatchEvent({ + type: 'loop', + action: this, + loopDelta: a, + }) + } + } else this.time = r + if (o && 1 === (1 & i)) return t - r + } + return r + }), + (t._setEndings = function (e, t, n) { + var r = this._interpolantSettings + n + ? ((r.endingStart = Vt), (r.endingEnd = Vt)) + : ((r.endingStart = e ? (this.zeroSlopeAtStart ? Vt : jt) : Wt), + (r.endingEnd = t ? (this.zeroSlopeAtEnd ? Vt : jt) : Wt)) + }), + (t._scheduleFading = function (e, t, n) { + var r = this._mixer, + i = r.time, + o = this._weightInterpolant + null === o && + ((o = r._lendControlInterpolant()), (this._weightInterpolant = o)) + var a = o.parameterPositions, + s = o.sampleValues + return (a[0] = i), (s[0] = t), (a[1] = i + e), (s[1] = n), this + }), + e + ) + })() + function op(e) { + ;(this._root = e), + this._initMemoryManager(), + (this._accuIndex = 0), + (this.time = 0), + (this.timeScale = 1) + } + op.prototype = Object.assign(Object.create(qn.prototype), { + constructor: op, + _bindAction: function (e, t) { + var n = e._localRoot || this._root, + r = e._clip.tracks, + i = r.length, + o = e._propertyBindings, + a = e._interpolants, + s = n.uuid, + l = this._bindingsByRootAndName, + c = l[s] + void 0 === c && ((c = {}), (l[s] = c)) + for (var u = 0; u !== i; ++u) { + var h = r[u], + d = h.name, + p = c[d] + if (void 0 !== p) o[u] = p + else { + if (void 0 !== (p = o[u])) { + null === p._cacheIndex && + (++p.referenceCount, this._addInactiveBinding(p, s, d)) + continue + } + var f = t && t._propertyBindings[u].binding.parsedPath + ++(p = new Vd(np.create(n, d, f), h.ValueTypeName, h.getValueSize())) + .referenceCount, + this._addInactiveBinding(p, s, d), + (o[u] = p) + } + a[u].resultBuffer = p.buffer + } + }, + _activateAction: function (e) { + if (!this._isActiveAction(e)) { + if (null === e._cacheIndex) { + var t = (e._localRoot || this._root).uuid, + n = e._clip.uuid, + r = this._actionsByClip[n] + this._bindAction(e, r && r.knownActions[0]), + this._addInactiveAction(e, n, t) + } + for (var i = e._propertyBindings, o = 0, a = i.length; o !== a; ++o) { + var s = i[o] + 0 === s.useCount++ && (this._lendBinding(s), s.saveOriginalState()) + } + this._lendAction(e) + } + }, + _deactivateAction: function (e) { + if (this._isActiveAction(e)) { + for (var t = e._propertyBindings, n = 0, r = t.length; n !== r; ++n) { + var i = t[n] + 0 === --i.useCount && + (i.restoreOriginalState(), this._takeBackBinding(i)) + } + this._takeBackAction(e) + } + }, + _initMemoryManager: function () { + ;(this._actions = []), + (this._nActiveActions = 0), + (this._actionsByClip = {}), + (this._bindings = []), + (this._nActiveBindings = 0), + (this._bindingsByRootAndName = {}), + (this._controlInterpolants = []), + (this._nActiveControlInterpolants = 0) + var e = this + this.stats = { + actions: { + get total() { + return e._actions.length + }, + get inUse() { + return e._nActiveActions + }, + }, + bindings: { + get total() { + return e._bindings.length + }, + get inUse() { + return e._nActiveBindings + }, + }, + controlInterpolants: { + get total() { + return e._controlInterpolants.length + }, + get inUse() { + return e._nActiveControlInterpolants + }, + }, + } + }, + _isActiveAction: function (e) { + var t = e._cacheIndex + return null !== t && t < this._nActiveActions + }, + _addInactiveAction: function (e, t, n) { + var r = this._actions, + i = this._actionsByClip, + o = i[t] + if (void 0 === o) + (o = { knownActions: [e], actionByRoot: {} }), + (e._byClipCacheIndex = 0), + (i[t] = o) + else { + var a = o.knownActions + ;(e._byClipCacheIndex = a.length), a.push(e) + } + ;(e._cacheIndex = r.length), r.push(e), (o.actionByRoot[n] = e) + }, + _removeInactiveAction: function (e) { + var t = this._actions, + n = t[t.length - 1], + r = e._cacheIndex + ;(n._cacheIndex = r), (t[r] = n), t.pop(), (e._cacheIndex = null) + var i = e._clip.uuid, + o = this._actionsByClip, + a = o[i], + s = a.knownActions, + l = s[s.length - 1], + c = e._byClipCacheIndex + ;(l._byClipCacheIndex = c), + (s[c] = l), + s.pop(), + (e._byClipCacheIndex = null), + delete a.actionByRoot[(e._localRoot || this._root).uuid], + 0 === s.length && delete o[i], + this._removeInactiveBindingsForAction(e) + }, + _removeInactiveBindingsForAction: function (e) { + for (var t = e._propertyBindings, n = 0, r = t.length; n !== r; ++n) { + var i = t[n] + 0 === --i.referenceCount && this._removeInactiveBinding(i) + } + }, + _lendAction: function (e) { + var t = this._actions, + n = e._cacheIndex, + r = this._nActiveActions++, + i = t[r] + ;(e._cacheIndex = r), (t[r] = e), (i._cacheIndex = n), (t[n] = i) + }, + _takeBackAction: function (e) { + var t = this._actions, + n = e._cacheIndex, + r = --this._nActiveActions, + i = t[r] + ;(e._cacheIndex = r), (t[r] = e), (i._cacheIndex = n), (t[n] = i) + }, + _addInactiveBinding: function (e, t, n) { + var r = this._bindingsByRootAndName, + i = this._bindings, + o = r[t] + void 0 === o && ((o = {}), (r[t] = o)), + (o[n] = e), + (e._cacheIndex = i.length), + i.push(e) + }, + _removeInactiveBinding: function (e) { + var t = this._bindings, + n = e.binding, + r = n.rootNode.uuid, + i = n.path, + o = this._bindingsByRootAndName, + a = o[r], + s = t[t.length - 1], + l = e._cacheIndex + ;(s._cacheIndex = l), + (t[l] = s), + t.pop(), + delete a[i], + 0 === Object.keys(a).length && delete o[r] + }, + _lendBinding: function (e) { + var t = this._bindings, + n = e._cacheIndex, + r = this._nActiveBindings++, + i = t[r] + ;(e._cacheIndex = r), (t[r] = e), (i._cacheIndex = n), (t[n] = i) + }, + _takeBackBinding: function (e) { + var t = this._bindings, + n = e._cacheIndex, + r = --this._nActiveBindings, + i = t[r] + ;(e._cacheIndex = r), (t[r] = e), (i._cacheIndex = n), (t[n] = i) + }, + _lendControlInterpolant: function () { + var e = this._controlInterpolants, + t = this._nActiveControlInterpolants++, + n = e[t] + return ( + void 0 === n && + (((n = new qu( + new Float32Array(2), + new Float32Array(2), + 1, + this._controlInterpolantsResultBuffer, + )).__cacheIndex = t), + (e[t] = n)), + n + ) + }, + _takeBackControlInterpolant: function (e) { + var t = this._controlInterpolants, + n = e.__cacheIndex, + r = --this._nActiveControlInterpolants, + i = t[r] + ;(e.__cacheIndex = r), (t[r] = e), (i.__cacheIndex = n), (t[n] = i) + }, + _controlInterpolantsResultBuffer: new Float32Array(1), + clipAction: function (e, t, n) { + var r = t || this._root, + i = r.uuid, + o = 'string' === typeof e ? nh.findByName(r, e) : e, + a = null !== o ? o.uuid : e, + s = this._actionsByClip[a], + l = null + if ((void 0 === n && (n = null !== o ? o.blendMode : qt), void 0 !== s)) { + var c = s.actionByRoot[i] + if (void 0 !== c && c.blendMode === n) return c + ;(l = s.knownActions[0]), null === o && (o = l._clip) + } + if (null === o) return null + var u = new ip(this, o, t, n) + return this._bindAction(u, l), this._addInactiveAction(u, a, i), u + }, + existingAction: function (e, t) { + var n = t || this._root, + r = n.uuid, + i = 'string' === typeof e ? nh.findByName(n, e) : e, + o = i ? i.uuid : e, + a = this._actionsByClip[o] + return (void 0 !== a && a.actionByRoot[r]) || null + }, + stopAllAction: function () { + for (var e = this._actions, t = this._nActiveActions - 1; t >= 0; --t) + e[t].stop() + return this + }, + update: function (e) { + e *= this.timeScale + for ( + var t = this._actions, + n = this._nActiveActions, + r = (this.time += e), + i = Math.sign(e), + o = (this._accuIndex ^= 1), + a = 0; + a !== n; + ++a + ) + t[a]._update(r, e, i, o) + for (var s = this._bindings, l = this._nActiveBindings, c = 0; c !== l; ++c) + s[c].apply(o) + return this + }, + setTime: function (e) { + this.time = 0 + for (var t = 0; t < this._actions.length; t++) this._actions[t].time = 0 + return this.update(e) + }, + getRoot: function () { + return this._root + }, + uncacheClip: function (e) { + var t = this._actions, + n = e.uuid, + r = this._actionsByClip, + i = r[n] + if (void 0 !== i) { + for (var o = i.knownActions, a = 0, s = o.length; a !== s; ++a) { + var l = o[a] + this._deactivateAction(l) + var c = l._cacheIndex, + u = t[t.length - 1] + ;(l._cacheIndex = null), + (l._byClipCacheIndex = null), + (u._cacheIndex = c), + (t[c] = u), + t.pop(), + this._removeInactiveBindingsForAction(l) + } + delete r[n] + } + }, + uncacheRoot: function (e) { + var t = e.uuid, + n = this._actionsByClip + for (var r in n) { + var i = n[r].actionByRoot[t] + void 0 !== i && (this._deactivateAction(i), this._removeInactiveAction(i)) + } + var o = this._bindingsByRootAndName[t] + if (void 0 !== o) + for (var a in o) { + var s = o[a] + s.restoreOriginalState(), this._removeInactiveBinding(s) + } + }, + uncacheAction: function (e, t) { + var n = this.existingAction(e, t) + null !== n && (this._deactivateAction(n), this._removeInactiveAction(n)) + }, + }) + var ap = (function () { + function e(e) { + 'string' === typeof e && + (console.warn('THREE.Uniform: Type parameter is no longer needed.'), + (e = arguments[1])), + (this.value = e) + } + return ( + (e.prototype.clone = function () { + return new e( + void 0 === this.value.clone ? this.value : this.value.clone(), + ) + }), + e + ) + })() + function sp(e, t, n) { + yl.call(this, e, t), (this.meshPerAttribute = n || 1) + } + function lp(e, t, n, r, i) { + ;(this.buffer = e), + (this.type = t), + (this.itemSize = n), + (this.elementSize = r), + (this.count = i), + (this.version = 0) + } + function cp(e, t, n, r) { + ;(this.ray = new Br(e, t)), + (this.near = n || 0), + (this.far = r || 1 / 0), + (this.camera = null), + (this.layers = new Xr()), + (this.params = { + Mesh: {}, + Line: { threshold: 1 }, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {}, + }), + Object.defineProperties(this.params, { + PointCloud: { + get: function () { + return ( + console.warn( + 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.', + ), + this.Points + ) + }, + }, + }) + } + function up(e, t) { + return e.distance - t.distance + } + function hp(e, t, n, r) { + if ((e.layers.test(t.layers) && e.raycast(t, n), !0 === r)) + for (var i = e.children, o = 0, a = i.length; o < a; o++) hp(i[o], t, n, !0) + } + ;(sp.prototype = Object.assign(Object.create(yl.prototype), { + constructor: sp, + isInstancedInterleavedBuffer: !0, + copy: function (e) { + return ( + yl.prototype.copy.call(this, e), + (this.meshPerAttribute = e.meshPerAttribute), + this + ) + }, + clone: function (e) { + var t = yl.prototype.clone.call(this, e) + return (t.meshPerAttribute = this.meshPerAttribute), t + }, + toJSON: function (e) { + var t = yl.prototype.toJSON.call(this, e) + return ( + (t.isInstancedInterleavedBuffer = !0), + (t.meshPerAttribute = this.meshPerAttribute), + t + ) + }, + })), + Object.defineProperty(lp.prototype, 'needsUpdate', { + set: function (e) { + !0 === e && this.version++ + }, + }), + Object.assign(lp.prototype, { + isGLBufferAttribute: !0, + setBuffer: function (e) { + return (this.buffer = e), this + }, + setType: function (e, t) { + return (this.type = e), (this.elementSize = t), this + }, + setItemSize: function (e) { + return (this.itemSize = e), this + }, + setCount: function (e) { + return (this.count = e), this + }, + }), + Object.assign(cp.prototype, { + set: function (e, t) { + this.ray.set(e, t) + }, + setFromCamera: function (e, t) { + t && t.isPerspectiveCamera + ? (this.ray.origin.setFromMatrixPosition(t.matrixWorld), + this.ray.direction + .set(e.x, e.y, 0.5) + .unproject(t) + .sub(this.ray.origin) + .normalize(), + (this.camera = t)) + : t && t.isOrthographicCamera + ? (this.ray.origin + .set(e.x, e.y, (t.near + t.far) / (t.near - t.far)) + .unproject(t), + this.ray.direction.set(0, 0, -1).transformDirection(t.matrixWorld), + (this.camera = t)) + : console.error('THREE.Raycaster: Unsupported camera type: ' + t.type) + }, + intersectObject: function (e, t, n) { + var r = n || [] + return hp(e, this, r, t), r.sort(up), r + }, + intersectObjects: function (e, t, n) { + var r = n || [] + if (!1 === Array.isArray(e)) + return ( + console.warn( + 'THREE.Raycaster.intersectObjects: objects is not an Array.', + ), + r + ) + for (var i = 0, o = e.length; i < o; i++) hp(e[i], this, r, t) + return r.sort(up), r + }, + }) + var dp = (function () { + function e(e, t, n) { + return ( + void 0 === e && (e = 1), + void 0 === t && (t = 0), + void 0 === n && (n = 0), + (this.radius = e), + (this.phi = t), + (this.theta = n), + this + ) + } + var t = e.prototype + return ( + (t.set = function (e, t, n) { + return (this.radius = e), (this.phi = t), (this.theta = n), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return ( + (this.radius = e.radius), + (this.phi = e.phi), + (this.theta = e.theta), + this + ) + }), + (t.makeSafe = function () { + var e = 1e-6 + return (this.phi = Math.max(e, Math.min(Math.PI - e, this.phi))), this + }), + (t.setFromVector3 = function (e) { + return this.setFromCartesianCoords(e.x, e.y, e.z) + }), + (t.setFromCartesianCoords = function (e, t, n) { + return ( + (this.radius = Math.sqrt(e * e + t * t + n * n)), + 0 === this.radius + ? ((this.theta = 0), (this.phi = 0)) + : ((this.theta = Math.atan2(e, n)), + (this.phi = Math.acos(Kn.clamp(t / this.radius, -1, 1)))), + this + ) + }), + e + ) + })(), + pp = (function () { + function e(e, t, n) { + return ( + (this.radius = void 0 !== e ? e : 1), + (this.theta = void 0 !== t ? t : 0), + (this.y = void 0 !== n ? n : 0), + this + ) + } + var t = e.prototype + return ( + (t.set = function (e, t, n) { + return (this.radius = e), (this.theta = t), (this.y = n), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return ( + (this.radius = e.radius), (this.theta = e.theta), (this.y = e.y), this + ) + }), + (t.setFromVector3 = function (e) { + return this.setFromCartesianCoords(e.x, e.y, e.z) + }), + (t.setFromCartesianCoords = function (e, t, n) { + return ( + (this.radius = Math.sqrt(e * e + n * n)), + (this.theta = Math.atan2(e, n)), + (this.y = t), + this + ) + }), + e + ) + })(), + fp = new Jn(), + mp = (function () { + function e(e, t) { + Object.defineProperty(this, 'isBox2', { value: !0 }), + (this.min = void 0 !== e ? e : new Jn(1 / 0, 1 / 0)), + (this.max = void 0 !== t ? t : new Jn(-1 / 0, -1 / 0)) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.min.copy(e), this.max.copy(t), this + }), + (t.setFromPoints = function (e) { + this.makeEmpty() + for (var t = 0, n = e.length; t < n; t++) this.expandByPoint(e[t]) + return this + }), + (t.setFromCenterAndSize = function (e, t) { + var n = fp.copy(t).multiplyScalar(0.5) + return this.min.copy(e).sub(n), this.max.copy(e).add(n), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.min.copy(e.min), this.max.copy(e.max), this + }), + (t.makeEmpty = function () { + return ( + (this.min.x = this.min.y = 1 / 0), + (this.max.x = this.max.y = -1 / 0), + this + ) + }), + (t.isEmpty = function () { + return this.max.x < this.min.x || this.max.y < this.min.y + }), + (t.getCenter = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Box2: .getCenter() target is now required'), + (e = new Jn())), + this.isEmpty() + ? e.set(0, 0) + : e.addVectors(this.min, this.max).multiplyScalar(0.5) + ) + }), + (t.getSize = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Box2: .getSize() target is now required'), + (e = new Jn())), + this.isEmpty() ? e.set(0, 0) : e.subVectors(this.max, this.min) + ) + }), + (t.expandByPoint = function (e) { + return this.min.min(e), this.max.max(e), this + }), + (t.expandByVector = function (e) { + return this.min.sub(e), this.max.add(e), this + }), + (t.expandByScalar = function (e) { + return this.min.addScalar(-e), this.max.addScalar(e), this + }), + (t.containsPoint = function (e) { + return !( + e.x < this.min.x || + e.x > this.max.x || + e.y < this.min.y || + e.y > this.max.y + ) + }), + (t.containsBox = function (e) { + return ( + this.min.x <= e.min.x && + e.max.x <= this.max.x && + this.min.y <= e.min.y && + e.max.y <= this.max.y + ) + }), + (t.getParameter = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Box2: .getParameter() target is now required'), + (t = new Jn())), + t.set( + (e.x - this.min.x) / (this.max.x - this.min.x), + (e.y - this.min.y) / (this.max.y - this.min.y), + ) + ) + }), + (t.intersectsBox = function (e) { + return !( + e.max.x < this.min.x || + e.min.x > this.max.x || + e.max.y < this.min.y || + e.min.y > this.max.y + ) + }), + (t.clampPoint = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Box2: .clampPoint() target is now required'), + (t = new Jn())), + t.copy(e).clamp(this.min, this.max) + ) + }), + (t.distanceToPoint = function (e) { + return fp.copy(e).clamp(this.min, this.max).sub(e).length() + }), + (t.intersect = function (e) { + return this.min.max(e.min), this.max.min(e.max), this + }), + (t.union = function (e) { + return this.min.min(e.min), this.max.max(e.max), this + }), + (t.translate = function (e) { + return this.min.add(e), this.max.add(e), this + }), + (t.equals = function (e) { + return e.min.equals(this.min) && e.max.equals(this.max) + }), + e + ) + })(), + vp = new lr(), + gp = new lr(), + yp = (function () { + function e(e, t) { + ;(this.start = void 0 !== e ? e : new lr()), + (this.end = void 0 !== t ? t : new lr()) + } + var t = e.prototype + return ( + (t.set = function (e, t) { + return this.start.copy(e), this.end.copy(t), this + }), + (t.clone = function () { + return new this.constructor().copy(this) + }), + (t.copy = function (e) { + return this.start.copy(e.start), this.end.copy(e.end), this + }), + (t.getCenter = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Line3: .getCenter() target is now required'), + (e = new lr())), + e.addVectors(this.start, this.end).multiplyScalar(0.5) + ) + }), + (t.delta = function (e) { + return ( + void 0 === e && + (console.warn('THREE.Line3: .delta() target is now required'), + (e = new lr())), + e.subVectors(this.end, this.start) + ) + }), + (t.distanceSq = function () { + return this.start.distanceToSquared(this.end) + }), + (t.distance = function () { + return this.start.distanceTo(this.end) + }), + (t.at = function (e, t) { + return ( + void 0 === t && + (console.warn('THREE.Line3: .at() target is now required'), + (t = new lr())), + this.delta(t).multiplyScalar(e).add(this.start) + ) + }), + (t.closestPointToPointParameter = function (e, t) { + vp.subVectors(e, this.start), gp.subVectors(this.end, this.start) + var n = gp.dot(gp), + r = gp.dot(vp) / n + return t && (r = Kn.clamp(r, 0, 1)), r + }), + (t.closestPointToPoint = function (e, t, n) { + var r = this.closestPointToPointParameter(e, t) + return ( + void 0 === n && + (console.warn( + 'THREE.Line3: .closestPointToPoint() target is now required', + ), + (n = new lr())), + this.delta(n).multiplyScalar(r).add(this.start) + ) + }), + (t.applyMatrix4 = function (e) { + return this.start.applyMatrix4(e), this.end.applyMatrix4(e), this + }), + (t.equals = function (e) { + return e.start.equals(this.start) && e.end.equals(this.end) + }), + e + ) + })() + function bp(e) { + si.call(this), + (this.material = e), + (this.render = function () {}), + (this.hasPositions = !1), + (this.hasNormals = !1), + (this.hasColors = !1), + (this.hasUvs = !1), + (this.positionArray = null), + (this.normalArray = null), + (this.colorArray = null), + (this.uvArray = null), + (this.count = 0) + } + ;(bp.prototype = Object.create(si.prototype)), + (bp.prototype.constructor = bp), + (bp.prototype.isImmediateRenderObject = !0) + var Ap = new lr(), + wp = (function (e) { + function t(t, n) { + var r + ;((r = e.call(this) || this).light = t), + r.light.updateMatrixWorld(), + (r.matrix = t.matrixWorld), + (r.matrixAutoUpdate = !1), + (r.color = n) + for ( + var i = new ro(), + o = [ + 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, -1, 1, + ], + a = 0, + s = 1, + l = 32; + a < l; + a++, s++ + ) { + var c = (a / l) * Math.PI * 2, + u = (s / l) * Math.PI * 2 + o.push(Math.cos(c), Math.sin(c), 1, Math.cos(u), Math.sin(u), 1) + } + i.setAttribute('position', new Wi(o, 3)) + var h = new tc({ fog: !1, toneMapped: !1 }) + return (r.cone = new uc(i, h)), r.add(r.cone), r.update(), r + } + Gn(t, e) + var n = t.prototype + return ( + (n.dispose = function () { + this.cone.geometry.dispose(), this.cone.material.dispose() + }), + (n.update = function () { + this.light.updateMatrixWorld() + var e = this.light.distance ? this.light.distance : 1e3, + t = e * Math.tan(this.light.angle) + this.cone.scale.set(t, t, e), + Ap.setFromMatrixPosition(this.light.target.matrixWorld), + this.cone.lookAt(Ap), + void 0 !== this.color + ? this.cone.material.color.set(this.color) + : this.cone.material.color.copy(this.light.color) + }), + t + ) + })(si), + xp = new lr(), + Ep = new Fr(), + Mp = new Fr(), + _p = (function (e) { + function t(t) { + for ( + var n, + r = Tp(t), + i = new ro(), + o = [], + a = [], + s = new Li(0, 0, 1), + l = new Li(0, 1, 0), + c = 0; + c < r.length; + c++ + ) { + var u = r[c] + u.parent && + u.parent.isBone && + (o.push(0, 0, 0), + o.push(0, 0, 0), + a.push(s.r, s.g, s.b), + a.push(l.r, l.g, l.b)) + } + i.setAttribute('position', new Wi(o, 3)), + i.setAttribute('color', new Wi(a, 3)) + var h = new tc({ + vertexColors: !0, + depthTest: !1, + depthWrite: !1, + toneMapped: !1, + transparent: !0, + }) + return ( + ((n = e.call(this, i, h) || this).type = 'SkeletonHelper'), + (n.isSkeletonHelper = !0), + (n.root = t), + (n.bones = r), + (n.matrix = t.matrixWorld), + (n.matrixAutoUpdate = !1), + n + ) + } + return ( + Gn(t, e), + (t.prototype.updateMatrixWorld = function (t) { + var n = this.bones, + r = this.geometry, + i = r.getAttribute('position') + Mp.copy(this.root.matrixWorld).invert() + for (var o = 0, a = 0; o < n.length; o++) { + var s = n[o] + s.parent && + s.parent.isBone && + (Ep.multiplyMatrices(Mp, s.matrixWorld), + xp.setFromMatrixPosition(Ep), + i.setXYZ(a, xp.x, xp.y, xp.z), + Ep.multiplyMatrices(Mp, s.parent.matrixWorld), + xp.setFromMatrixPosition(Ep), + i.setXYZ(a + 1, xp.x, xp.y, xp.z), + (a += 2)) + } + ;(r.getAttribute('position').needsUpdate = !0), + e.prototype.updateMatrixWorld.call(this, t) + }), + t + ) + })(uc) + function Tp(e) { + var t = [] + e && e.isBone && t.push(e) + for (var n = 0; n < e.children.length; n++) t.push.apply(t, Tp(e.children[n])) + return t + } + var Sp = (function (e) { + function t(t, n, r) { + var i, + o = new Mu(n, 4, 2), + a = new Oi({ wireframe: !0, fog: !1, toneMapped: !1 }) + return ( + ((i = e.call(this, o, a) || this).light = t), + i.light.updateMatrixWorld(), + (i.color = r), + (i.type = 'PointLightHelper'), + (i.matrix = i.light.matrixWorld), + (i.matrixAutoUpdate = !1), + i.update(), + i + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.dispose = function () { + this.geometry.dispose(), this.material.dispose() + }), + (n.update = function () { + void 0 !== this.color + ? this.material.color.set(this.color) + : this.material.color.copy(this.light.color) + }), + t + ) + })(xo), + Cp = new lr(), + Lp = new Li(), + Rp = new Li(), + Pp = (function (e) { + function t(t, n, r) { + var i + ;((i = e.call(this) || this).light = t), + i.light.updateMatrixWorld(), + (i.matrix = t.matrixWorld), + (i.matrixAutoUpdate = !1), + (i.color = r) + var o = new bu(n) + o.rotateY(0.5 * Math.PI), + (i.material = new Oi({ wireframe: !0, fog: !1, toneMapped: !1 })), + void 0 === i.color && (i.material.vertexColors = !0) + var a = o.getAttribute('position'), + s = new Float32Array(3 * a.count) + return ( + o.setAttribute('color', new Fi(s, 3)), + i.add(new xo(o, i.material)), + i.update(), + i + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.dispose = function () { + this.children[0].geometry.dispose(), this.children[0].material.dispose() + }), + (n.update = function () { + var e = this.children[0] + if (void 0 !== this.color) this.material.color.set(this.color) + else { + var t = e.geometry.getAttribute('color') + Lp.copy(this.light.color), Rp.copy(this.light.groundColor) + for (var n = 0, r = t.count; n < r; n++) { + var i = n < r / 2 ? Lp : Rp + t.setXYZ(n, i.r, i.g, i.b) + } + t.needsUpdate = !0 + } + e.lookAt(Cp.setFromMatrixPosition(this.light.matrixWorld).negate()) + }), + t + ) + })(si), + Dp = (function (e) { + function t(t, n, r, i) { + var o + void 0 === t && (t = 10), + void 0 === n && (n = 10), + void 0 === r && (r = 4473924), + void 0 === i && (i = 8947848), + (r = new Li(r)), + (i = new Li(i)) + for ( + var a = n / 2, + s = t / n, + l = t / 2, + c = [], + u = [], + h = 0, + d = 0, + p = -l; + h <= n; + h++, p += s + ) { + c.push(-l, 0, p, l, 0, p), c.push(p, 0, -l, p, 0, l) + var f = h === a ? r : i + f.toArray(u, d), + (d += 3), + f.toArray(u, d), + (d += 3), + f.toArray(u, d), + (d += 3), + f.toArray(u, d), + (d += 3) + } + var m = new ro() + m.setAttribute('position', new Wi(c, 3)), + m.setAttribute('color', new Wi(u, 3)) + var v = new tc({ vertexColors: !0, toneMapped: !1 }) + return ((o = e.call(this, m, v) || this).type = 'GridHelper'), o + } + return Gn(t, e), t + })(uc), + Op = (function (e) { + function t(t, n, r, i, o, a) { + var s + void 0 === t && (t = 10), + void 0 === n && (n = 16), + void 0 === r && (r = 8), + void 0 === i && (i = 64), + void 0 === o && (o = 4473924), + void 0 === a && (a = 8947848), + (o = new Li(o)), + (a = new Li(a)) + for (var l = [], c = [], u = 0; u <= n; u++) { + var h = (u / n) * (2 * Math.PI), + d = Math.sin(h) * t, + p = Math.cos(h) * t + l.push(0, 0, 0), l.push(d, 0, p) + var f = 1 & u ? o : a + c.push(f.r, f.g, f.b), c.push(f.r, f.g, f.b) + } + for (var m = 0; m <= r; m++) + for (var v = 1 & m ? o : a, g = t - (t / r) * m, y = 0; y < i; y++) { + var b = (y / i) * (2 * Math.PI), + A = Math.sin(b) * g, + w = Math.cos(b) * g + l.push(A, 0, w), + c.push(v.r, v.g, v.b), + (b = ((y + 1) / i) * (2 * Math.PI)), + (A = Math.sin(b) * g), + (w = Math.cos(b) * g), + l.push(A, 0, w), + c.push(v.r, v.g, v.b) + } + var x = new ro() + x.setAttribute('position', new Wi(l, 3)), + x.setAttribute('color', new Wi(c, 3)) + var E = new tc({ vertexColors: !0, toneMapped: !1 }) + return ((s = e.call(this, x, E) || this).type = 'PolarGridHelper'), s + } + return Gn(t, e), t + })(uc), + Ip = new lr(), + Bp = new lr(), + Fp = new lr(), + kp = (function (e) { + function t(t, n, r) { + var i + ;((i = e.call(this) || this).light = t), + i.light.updateMatrixWorld(), + (i.matrix = t.matrixWorld), + (i.matrixAutoUpdate = !1), + (i.color = r), + void 0 === n && (n = 1) + var o = new ro() + o.setAttribute( + 'position', + new Wi([-n, n, 0, n, n, 0, n, -n, 0, -n, -n, 0, -n, n, 0], 3), + ) + var a = new tc({ fog: !1, toneMapped: !1 }) + return ( + (i.lightPlane = new sc(o, a)), + i.add(i.lightPlane), + (o = new ro()).setAttribute('position', new Wi([0, 0, 0, 0, 0, 1], 3)), + (i.targetLine = new sc(o, a)), + i.add(i.targetLine), + i.update(), + i + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.dispose = function () { + this.lightPlane.geometry.dispose(), + this.lightPlane.material.dispose(), + this.targetLine.geometry.dispose(), + this.targetLine.material.dispose() + }), + (n.update = function () { + Ip.setFromMatrixPosition(this.light.matrixWorld), + Bp.setFromMatrixPosition(this.light.target.matrixWorld), + Fp.subVectors(Bp, Ip), + this.lightPlane.lookAt(Bp), + void 0 !== this.color + ? (this.lightPlane.material.color.set(this.color), + this.targetLine.material.color.set(this.color)) + : (this.lightPlane.material.color.copy(this.light.color), + this.targetLine.material.color.copy(this.light.color)), + this.targetLine.lookAt(Bp), + (this.targetLine.scale.z = Fp.length()) + }), + t + ) + })(si), + Np = new lr(), + Up = new Do(), + Hp = (function (e) { + function t(t) { + var n, + r = new ro(), + i = new tc({ color: 16777215, vertexColors: !0, toneMapped: !1 }), + o = [], + a = [], + s = {}, + l = new Li(16755200), + c = new Li(16711680), + u = new Li(43775), + h = new Li(16777215), + d = new Li(3355443) + function p(e, t, n) { + f(e, n), f(t, n) + } + function f(e, t) { + o.push(0, 0, 0), + a.push(t.r, t.g, t.b), + void 0 === s[e] && (s[e] = []), + s[e].push(o.length / 3 - 1) + } + return ( + p('n1', 'n2', l), + p('n2', 'n4', l), + p('n4', 'n3', l), + p('n3', 'n1', l), + p('f1', 'f2', l), + p('f2', 'f4', l), + p('f4', 'f3', l), + p('f3', 'f1', l), + p('n1', 'f1', l), + p('n2', 'f2', l), + p('n3', 'f3', l), + p('n4', 'f4', l), + p('p', 'n1', c), + p('p', 'n2', c), + p('p', 'n3', c), + p('p', 'n4', c), + p('u1', 'u2', u), + p('u2', 'u3', u), + p('u3', 'u1', u), + p('c', 't', h), + p('p', 'c', d), + p('cn1', 'cn2', d), + p('cn3', 'cn4', d), + p('cf1', 'cf2', d), + p('cf3', 'cf4', d), + r.setAttribute('position', new Wi(o, 3)), + r.setAttribute('color', new Wi(a, 3)), + ((n = e.call(this, r, i) || this).type = 'CameraHelper'), + (n.camera = t), + n.camera.updateProjectionMatrix && n.camera.updateProjectionMatrix(), + (n.matrix = t.matrixWorld), + (n.matrixAutoUpdate = !1), + (n.pointMap = s), + n.update(), + n + ) + } + return ( + Gn(t, e), + (t.prototype.update = function () { + var e = this.geometry, + t = this.pointMap, + n = 1, + r = 1 + Up.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse), + Gp('c', t, e, Up, 0, 0, -1), + Gp('t', t, e, Up, 0, 0, 1), + Gp('n1', t, e, Up, -n, -r, -1), + Gp('n2', t, e, Up, n, -r, -1), + Gp('n3', t, e, Up, -n, r, -1), + Gp('n4', t, e, Up, n, r, -1), + Gp('f1', t, e, Up, -n, -r, 1), + Gp('f2', t, e, Up, n, -r, 1), + Gp('f3', t, e, Up, -n, r, 1), + Gp('f4', t, e, Up, n, r, 1), + Gp('u1', t, e, Up, 0.7 * n, 1.1 * r, -1), + Gp('u2', t, e, Up, 0.7 * -n, 1.1 * r, -1), + Gp('u3', t, e, Up, 0, 2 * r, -1), + Gp('cf1', t, e, Up, -n, 0, 1), + Gp('cf2', t, e, Up, n, 0, 1), + Gp('cf3', t, e, Up, 0, -r, 1), + Gp('cf4', t, e, Up, 0, r, 1), + Gp('cn1', t, e, Up, -n, 0, -1), + Gp('cn2', t, e, Up, n, 0, -1), + Gp('cn3', t, e, Up, 0, -r, -1), + Gp('cn4', t, e, Up, 0, r, -1), + (e.getAttribute('position').needsUpdate = !0) + }), + t + ) + })(uc) + function Gp(e, t, n, r, i, o, a) { + Np.set(i, o, a).unproject(r) + var s = t[e] + if (void 0 !== s) + for (var l = n.getAttribute('position'), c = 0, u = s.length; c < u; c++) + l.setXYZ(s[c], Np.x, Np.y, Np.z) + } + var zp, + jp, + Vp, + Wp = new hr(), + qp = (function (e) { + function t(t, n) { + var r + void 0 === n && (n = 16776960) + var i = new Uint16Array([ + 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, + 7, + ]), + o = new Float32Array(24), + a = new ro() + return ( + a.setIndex(new Fi(i, 1)), + a.setAttribute('position', new Fi(o, 3)), + ((r = + e.call(this, a, new tc({ color: n, toneMapped: !1 })) || + this).object = t), + (r.type = 'BoxHelper'), + (r.matrixAutoUpdate = !1), + r.update(), + r + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.update = function (e) { + if ( + (void 0 !== e && + console.warn('THREE.BoxHelper: .update() has no longer arguments.'), + void 0 !== this.object && Wp.setFromObject(this.object), + !Wp.isEmpty()) + ) { + var t = Wp.min, + n = Wp.max, + r = this.geometry.attributes.position, + i = r.array + ;(i[0] = n.x), + (i[1] = n.y), + (i[2] = n.z), + (i[3] = t.x), + (i[4] = n.y), + (i[5] = n.z), + (i[6] = t.x), + (i[7] = t.y), + (i[8] = n.z), + (i[9] = n.x), + (i[10] = t.y), + (i[11] = n.z), + (i[12] = n.x), + (i[13] = n.y), + (i[14] = t.z), + (i[15] = t.x), + (i[16] = n.y), + (i[17] = t.z), + (i[18] = t.x), + (i[19] = t.y), + (i[20] = t.z), + (i[21] = n.x), + (i[22] = t.y), + (i[23] = t.z), + (r.needsUpdate = !0), + this.geometry.computeBoundingSphere() + } + }), + (n.setFromObject = function (e) { + return (this.object = e), this.update(), this + }), + (n.copy = function (e) { + return uc.prototype.copy.call(this, e), (this.object = e.object), this + }), + t + ) + })(uc), + Xp = (function (e) { + function t(t, n) { + var r + void 0 === n && (n = 16776960) + var i = new Uint16Array([ + 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, + 7, + ]), + o = [ + 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, + -1, 1, -1, -1, + ], + a = new ro() + return ( + a.setIndex(new Fi(i, 1)), + a.setAttribute('position', new Wi(o, 3)), + ((r = + e.call(this, a, new tc({ color: n, toneMapped: !1 })) || this).box = + t), + (r.type = 'Box3Helper'), + r.geometry.computeBoundingSphere(), + r + ) + } + return ( + Gn(t, e), + (t.prototype.updateMatrixWorld = function (t) { + var n = this.box + n.isEmpty() || + (n.getCenter(this.position), + n.getSize(this.scale), + this.scale.multiplyScalar(0.5), + e.prototype.updateMatrixWorld.call(this, t)) + }), + t + ) + })(uc), + Yp = (function (e) { + function t(t, n, r) { + var i + void 0 === n && (n = 1), void 0 === r && (r = 16776960) + var o = r, + a = [ + 1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, + 1, 1, 1, 0, 0, 1, 0, 0, 0, + ], + s = new ro() + s.setAttribute('position', new Wi(a, 3)), + s.computeBoundingSphere(), + ((i = + e.call(this, s, new tc({ color: o, toneMapped: !1 })) || this).type = + 'PlaneHelper'), + (i.plane = t), + (i.size = n) + var l = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, -1, -1, 1, 1, -1, 1], + c = new ro() + return ( + c.setAttribute('position', new Wi(l, 3)), + c.computeBoundingSphere(), + i.add( + new xo( + c, + new Oi({ + color: o, + opacity: 0.2, + transparent: !0, + depthWrite: !1, + toneMapped: !1, + }), + ), + ), + i + ) + } + return ( + Gn(t, e), + (t.prototype.updateMatrixWorld = function (t) { + var n = -this.plane.constant + Math.abs(n) < 1e-8 && (n = 1e-8), + this.scale.set(0.5 * this.size, 0.5 * this.size, n), + (this.children[0].material.side = n < 0 ? v : m), + this.lookAt(this.plane.normal), + e.prototype.updateMatrixWorld.call(this, t) + }), + t + ) + })(sc), + Qp = new lr(), + Zp = (function (e) { + function t(t, n, r, i, o, a) { + var s + return ( + ((s = e.call(this) || this).type = 'ArrowHelper'), + void 0 === t && (t = new lr(0, 0, 1)), + void 0 === n && (n = new lr(0, 0, 0)), + void 0 === r && (r = 1), + void 0 === i && (i = 16776960), + void 0 === o && (o = 0.2 * r), + void 0 === a && (a = 0.2 * o), + void 0 === zp && + ((zp = new ro()).setAttribute( + 'position', + new Wi([0, 0, 0, 0, 1, 0], 3), + ), + (jp = new Mc(0, 0.5, 1, 5, 1)).translate(0, -0.5, 0)), + s.position.copy(n), + (s.line = new sc(zp, new tc({ color: i, toneMapped: !1 }))), + (s.line.matrixAutoUpdate = !1), + s.add(s.line), + (s.cone = new xo(jp, new Oi({ color: i, toneMapped: !1 }))), + (s.cone.matrixAutoUpdate = !1), + s.add(s.cone), + s.setDirection(t), + s.setLength(r, o, a), + s + ) + } + Gn(t, e) + var n = t.prototype + return ( + (n.setDirection = function (e) { + if (e.y > 0.99999) this.quaternion.set(0, 0, 0, 1) + else if (e.y < -0.99999) this.quaternion.set(1, 0, 0, 0) + else { + Qp.set(e.z, 0, -e.x).normalize() + var t = Math.acos(e.y) + this.quaternion.setFromAxisAngle(Qp, t) + } + }), + (n.setLength = function (e, t, n) { + void 0 === t && (t = 0.2 * e), + void 0 === n && (n = 0.2 * t), + this.line.scale.set(1, Math.max(1e-4, e - t), 1), + this.line.updateMatrix(), + this.cone.scale.set(n, t, n), + (this.cone.position.y = e), + this.cone.updateMatrix() + }), + (n.setColor = function (e) { + this.line.material.color.set(e), this.cone.material.color.set(e) + }), + (n.copy = function (t) { + return ( + e.prototype.copy.call(this, t, !1), + this.line.copy(t.line), + this.cone.copy(t.cone), + this + ) + }), + t + ) + })(si), + Kp = (function (e) { + function t(t) { + var n + void 0 === t && (t = 1) + var r = [0, 0, 0, t, 0, 0, 0, 0, 0, 0, t, 0, 0, 0, 0, 0, 0, t], + i = [1, 0, 0, 1, 0.6, 0, 0, 1, 0, 0.6, 1, 0, 0, 0, 1, 0, 0.6, 1], + o = new ro() + o.setAttribute('position', new Wi(r, 3)), + o.setAttribute('color', new Wi(i, 3)) + var a = new tc({ vertexColors: !0, toneMapped: !1 }) + return ((n = e.call(this, o, a) || this).type = 'AxesHelper'), n + } + return Gn(t, e), t + })(uc), + Jp = new Float32Array(1), + $p = new Int32Array(Jp.buffer), + ef = { + toHalfFloat: function (e) { + Jp[0] = e + var t = $p[0], + n = (t >> 16) & 32768, + r = (t >> 12) & 2047, + i = (t >> 23) & 255 + return i < 103 + ? n + : i > 142 + ? ((n |= 31744), (n |= (255 == i ? 0 : 1) && 8388607 & t)) + : i < 113 + ? (n |= ((r |= 2048) >> (114 - i)) + ((r >> (113 - i)) & 1)) + : ((n |= ((i - 112) << 10) | (r >> 1)), (n += 1 & r)) + }, + }, + tf = 4, + nf = 8, + rf = Math.pow(2, nf), + of = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582], + af = nf - tf + 1 + of.length, + sf = 20, + lf = + (((Vp = {})[Kt] = 0), + (Vp[Jt] = 1), + (Vp[en] = 2), + (Vp[nn] = 3), + (Vp[rn] = 4), + (Vp[on] = 5), + (Vp[$t] = 6), + Vp), + cf = new Oi({ side: v, depthWrite: !1, depthTest: !1 }), + uf = new xo(new _o(), cf), + hf = new ed(), + df = Mf(), + pf = df._lodPlanes, + ff = df._sizeLods, + mf = df._sigmas, + vf = new Li(), + gf = null, + yf = (1 + Math.sqrt(5)) / 2, + bf = 1 / yf, + Af = [ + new lr(1, 1, 1), + new lr(-1, 1, 1), + new lr(1, 1, -1), + new lr(-1, 1, -1), + new lr(0, yf, bf), + new lr(0, yf, -bf), + new lr(bf, 0, yf), + new lr(-bf, 0, yf), + new lr(yf, bf, 0), + new lr(-yf, bf, 0), + ] + function wf(e) { + var t = Math.max(e.r, e.g, e.b), + n = Math.min(Math.max(Math.ceil(Math.log2(t)), -128), 127) + return e.multiplyScalar(Math.pow(2, -n)), (n + 128) / 255 + } + var xf = (function () { + function e(e) { + ;(this._renderer = e), + (this._pingPongRenderTarget = null), + (this._blurMaterial = Sf(sf)), + (this._equirectShader = null), + (this._cubemapShader = null), + this._compileMaterial(this._blurMaterial) + } + var t = e.prototype + return ( + (t.fromScene = function (e, t, n, r) { + void 0 === t && (t = 0), + void 0 === n && (n = 0.1), + void 0 === r && (r = 100), + (gf = this._renderer.getRenderTarget()) + var i = this._allocateTargets() + return ( + this._sceneToCubeUV(e, n, r, i), + t > 0 && this._blur(i, 0, 0, t), + this._applyPMREM(i), + this._cleanup(i), + i + ) + }), + (t.fromEquirectangular = function (e) { + return this._fromTexture(e) + }), + (t.fromCubemap = function (e) { + return this._fromTexture(e) + }), + (t.compileCubemapShader = function () { + null === this._cubemapShader && + ((this._cubemapShader = Lf()), + this._compileMaterial(this._cubemapShader)) + }), + (t.compileEquirectangularShader = function () { + null === this._equirectShader && + ((this._equirectShader = Cf()), + this._compileMaterial(this._equirectShader)) + }), + (t.dispose = function () { + this._blurMaterial.dispose(), + null !== this._cubemapShader && this._cubemapShader.dispose(), + null !== this._equirectShader && this._equirectShader.dispose() + for (var e = 0; e < pf.length; e++) pf[e].dispose() + }), + (t._cleanup = function (e) { + this._pingPongRenderTarget.dispose(), + this._renderer.setRenderTarget(gf), + (e.scissorTest = !1), + Tf(e, 0, 0, e.width, e.height) + }), + (t._fromTexture = function (e) { + gf = this._renderer.getRenderTarget() + var t = this._allocateTargets(e) + return ( + this._textureToCubeUV(e, t), this._applyPMREM(t), this._cleanup(t), t + ) + }), + (t._allocateTargets = function (e) { + var t = { + magFilter: me, + minFilter: me, + generateMipmaps: !1, + type: _e, + format: ze, + encoding: Ef(e) ? e.encoding : en, + depthBuffer: !1, + }, + n = _f(t) + return (n.depthBuffer = !e), (this._pingPongRenderTarget = _f(t)), n + }), + (t._compileMaterial = function (e) { + var t = new xo(pf[0], e) + this._renderer.compile(t, hf) + }), + (t._sceneToCubeUV = function (e, t, n, r) { + var i = new Oo(90, 1, t, n), + o = [1, -1, 1, 1, 1, 1], + a = [1, 1, 1, -1, -1, -1], + s = this._renderer, + l = s.autoClear, + c = s.outputEncoding, + u = s.toneMapping + s.getClearColor(vf), + (s.toneMapping = $), + (s.outputEncoding = Kt), + (s.autoClear = !1) + var h = !1, + d = e.background + if (d) { + if (d.isColor) { + cf.color.copy(d).convertSRGBToLinear(), (e.background = null) + var p = wf(cf.color) + ;(cf.opacity = p), (h = !0) + } + } else { + cf.color.copy(vf).convertSRGBToLinear() + var f = wf(cf.color) + ;(cf.opacity = f), (h = !0) + } + for (var m = 0; m < 6; m++) { + var v = m % 3 + 0 == v + ? (i.up.set(0, o[m], 0), i.lookAt(a[m], 0, 0)) + : 1 == v + ? (i.up.set(0, 0, o[m]), i.lookAt(0, a[m], 0)) + : (i.up.set(0, o[m], 0), i.lookAt(0, 0, a[m])), + Tf(r, v * rf, m > 2 ? rf : 0, rf, rf), + s.setRenderTarget(r), + h && s.render(uf, i), + s.render(e, i) + } + ;(s.toneMapping = u), (s.outputEncoding = c), (s.autoClear = l) + }), + (t._textureToCubeUV = function (e, t) { + var n = this._renderer + e.isCubeTexture + ? null == this._cubemapShader && (this._cubemapShader = Lf()) + : null == this._equirectShader && (this._equirectShader = Cf()) + var r = e.isCubeTexture ? this._cubemapShader : this._equirectShader, + i = new xo(pf[0], r), + o = r.uniforms + ;(o.envMap.value = e), + e.isCubeTexture || + o.texelSize.value.set(1 / e.image.width, 1 / e.image.height), + (o.inputEncoding.value = lf[e.encoding]), + (o.outputEncoding.value = lf[t.texture.encoding]), + Tf(t, 0, 0, 3 * rf, 2 * rf), + n.setRenderTarget(t), + n.render(i, hf) + }), + (t._applyPMREM = function (e) { + var t = this._renderer, + n = t.autoClear + t.autoClear = !1 + for (var r = 1; r < af; r++) { + var i = Math.sqrt(mf[r] * mf[r] - mf[r - 1] * mf[r - 1]), + o = Af[(r - 1) % Af.length] + this._blur(e, r - 1, r, i, o) + } + t.autoClear = n + }), + (t._blur = function (e, t, n, r, i) { + var o = this._pingPongRenderTarget + this._halfBlur(e, o, t, n, r, 'latitudinal', i), + this._halfBlur(o, e, n, n, r, 'longitudinal', i) + }), + (t._halfBlur = function (e, t, n, r, i, o, a) { + var s = this._renderer, + l = this._blurMaterial + 'latitudinal' !== o && + 'longitudinal' !== o && + console.error( + 'blur direction must be either latitudinal or longitudinal!', + ) + var c = 3, + u = new xo(pf[r], l), + h = l.uniforms, + d = ff[n] - 1, + p = isFinite(i) ? Math.PI / (2 * d) : (2 * Math.PI) / (2 * sf - 1), + f = i / p, + m = isFinite(i) ? 1 + Math.floor(c * f) : sf + m > sf && + console.warn( + 'sigmaRadians, ' + + i + + ', is too large and will clip, as it requested ' + + m + + ' samples when the maximum is set to ' + + sf, + ) + for (var v = [], g = 0, y = 0; y < sf; ++y) { + var b = y / f, + A = Math.exp((-b * b) / 2) + v.push(A), 0 == y ? (g += A) : y < m && (g += 2 * A) + } + for (var w = 0; w < v.length; w++) v[w] = v[w] / g + ;(h.envMap.value = e.texture), + (h.samples.value = m), + (h.weights.value = v), + (h.latitudinal.value = 'latitudinal' === o), + a && (h.poleAxis.value = a), + (h.dTheta.value = p), + (h.mipInt.value = nf - n), + (h.inputEncoding.value = lf[e.texture.encoding]), + (h.outputEncoding.value = lf[e.texture.encoding]) + var x = ff[r] + Tf( + t, + 3 * Math.max(0, rf - 2 * x), + (0 === r ? 0 : 2 * rf) + 2 * x * (r > nf - tf ? r - nf + tf : 0), + 3 * x, + 2 * x, + ), + s.setRenderTarget(t), + s.render(u, hf) + }), + e + ) + })() + function Ef(e) { + return ( + void 0 !== e && + e.type === _e && + (e.encoding === Kt || e.encoding === Jt || e.encoding === $t) + ) + } + function Mf() { + for (var e = [], t = [], n = [], r = nf, i = 0; i < af; i++) { + var o = Math.pow(2, r) + t.push(o) + var a = 1 / o + i > nf - tf ? (a = of[i - nf + tf - 1]) : 0 == i && (a = 0), n.push(a) + for ( + var s = 1 / (o - 1), + l = -s / 2, + c = 1 + s / 2, + u = [l, l, c, l, c, c, l, l, c, c, l, c], + h = 6, + d = 6, + p = 3, + f = 2, + m = 1, + v = new Float32Array(p * d * h), + g = new Float32Array(f * d * h), + y = new Float32Array(m * d * h), + b = 0; + b < h; + b++ + ) { + var A = ((b % 3) * 2) / 3 - 1, + w = b > 2 ? 0 : -1, + x = [ + A, + w, + 0, + A + 2 / 3, + w, + 0, + A + 2 / 3, + w + 1, + 0, + A, + w, + 0, + A + 2 / 3, + w + 1, + 0, + A, + w + 1, + 0, + ] + v.set(x, p * d * b), g.set(u, f * d * b) + var E = [b, b, b, b, b, b] + y.set(E, m * d * b) + } + var M = new ro() + M.setAttribute('position', new Fi(v, p)), + M.setAttribute('uv', new Fi(g, f)), + M.setAttribute('faceIndex', new Fi(y, m)), + e.push(M), + r > tf && r-- + } + return { _lodPlanes: e, _sizeLods: t, _sigmas: n } + } + function _f(e) { + var t = new or(3 * rf, 3 * rf, e) + return ( + (t.texture.mapping = ue), + (t.texture.name = 'PMREM.cubeUv'), + (t.scissorTest = !0), + t + ) + } + function Tf(e, t, n, r, i) { + e.viewport.set(t, n, r, i), e.scissor.set(t, n, r, i) + } + function Sf(e) { + return new Ou({ + name: 'SphericalGaussianBlur', + defines: { n: e }, + uniforms: { + envMap: { value: null }, + samples: { value: 1 }, + weights: { value: new Float32Array(e) }, + latitudinal: { value: !1 }, + dTheta: { value: 0 }, + mipInt: { value: 0 }, + poleAxis: { value: new lr(0, 1, 0) }, + inputEncoding: { value: lf[Kt] }, + outputEncoding: { value: lf[Kt] }, + }, + vertexShader: Rf(), + fragmentShader: + '\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t' + + Pf() + + "\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t", + blending: A, + depthTest: !1, + depthWrite: !1, + }) + } + function Cf() { + return new Ou({ + name: 'EquirectangularToCubeUV', + uniforms: { + envMap: { value: null }, + texelSize: { value: new Jn(1, 1) }, + inputEncoding: { value: lf[Kt] }, + outputEncoding: { value: lf[Kt] }, + }, + vertexShader: Rf(), + fragmentShader: + '\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t' + + Pf() + + '\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t', + blending: A, + depthTest: !1, + depthWrite: !1, + }) + } + function Lf() { + return new Ou({ + name: 'CubemapToCubeUV', + uniforms: { + envMap: { value: null }, + inputEncoding: { value: lf[Kt] }, + outputEncoding: { value: lf[Kt] }, + }, + vertexShader: Rf(), + fragmentShader: + '\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t' + + Pf() + + '\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t', + blending: A, + depthTest: !1, + depthWrite: !1, + }) + } + function Rf() { + return '\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t' + } + function Pf() { + return '\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include <encodings_pars_fragment>\n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t' + } + function Df(e, t, n, r, i, o, a) { + return ( + console.warn( + 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.', + ), + new Ri(e, t, n, i, o, a) + ) + } + var Of = 0, + If = 1, + Bf = 0, + Ff = 1, + kf = 2 + function Nf(e) { + return ( + console.warn( + 'THREE.MeshFaceMaterial has been removed. Use an Array instead.', + ), + e + ) + } + function Uf(e) { + return ( + void 0 === e && (e = []), + console.warn('THREE.MultiMaterial has been removed. Use an Array instead.'), + (e.isMultiMaterial = !0), + (e.materials = e), + (e.clone = function () { + return e.slice() + }), + e + ) + } + function Hf(e, t) { + return ( + console.warn('THREE.PointCloud has been renamed to THREE.Points.'), + new gc(e, t) + ) + } + function Gf(e) { + return ( + console.warn('THREE.Particle has been renamed to THREE.Sprite.'), new Bl(e) + ) + } + function zf(e, t) { + return ( + console.warn('THREE.ParticleSystem has been renamed to THREE.Points.'), + new gc(e, t) + ) + } + function jf(e) { + return ( + console.warn( + 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.', + ), + new dc(e) + ) + } + function Vf(e) { + return ( + console.warn( + 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.', + ), + new dc(e) + ) + } + function Wf(e) { + return ( + console.warn( + 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.', + ), + new dc(e) + ) + } + function qf(e, t, n) { + return ( + console.warn('THREE.Vertex has been removed. Use THREE.Vector3 instead.'), + new lr(e, t, n) + ) + } + function Xf(e, t) { + return ( + console.warn( + 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.', + ), + new Fi(e, t).setUsage(Sn) + ) + } + function Yf(e, t) { + return ( + console.warn( + 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.', + ), + new ki(e, t) + ) + } + function Qf(e, t) { + return ( + console.warn( + 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.', + ), + new Ni(e, t) + ) + } + function Zf(e, t) { + return ( + console.warn( + 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.', + ), + new Ui(e, t) + ) + } + function Kf(e, t) { + return ( + console.warn( + 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.', + ), + new Hi(e, t) + ) + } + function Jf(e, t) { + return ( + console.warn( + 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.', + ), + new Gi(e, t) + ) + } + function $f(e, t) { + return ( + console.warn( + 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.', + ), + new zi(e, t) + ) + } + function em(e, t) { + return ( + console.warn( + 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.', + ), + new ji(e, t) + ) + } + function tm(e, t) { + return ( + console.warn( + 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.', + ), + new Wi(e, t) + ) + } + function nm(e, t) { + return ( + console.warn( + 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.', + ), + new qi(e, t) + ) + } + function rm(e) { + console.warn( + 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.', + ), + _h.call(this, e), + (this.type = 'catmullrom'), + (this.closed = !0) + } + function im(e) { + console.warn( + 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.', + ), + _h.call(this, e), + (this.type = 'catmullrom') + } + function om(e) { + console.warn( + 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.', + ), + _h.call(this, e), + (this.type = 'catmullrom') + } + function am(e) { + return ( + console.warn('THREE.AxisHelper has been renamed to THREE.AxesHelper.'), + new Kp(e) + ) + } + function sm(e, t) { + return ( + console.warn( + 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.', + ), + new qp(e, t) + ) + } + function lm(e, t) { + return ( + console.warn( + 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.', + ), + new uc(new Dc(e.geometry), new tc({ color: void 0 !== t ? t : 16777215 })) + ) + } + function cm(e, t) { + return ( + console.warn( + 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.', + ), + new uc(new Ru(e.geometry), new tc({ color: void 0 !== t ? t : 16777215 })) + ) + } + function um(e) { + return ( + console.warn('THREE.XHRLoader has been renamed to THREE.FileLoader.'), + new uh(e) + ) + } + function hm(e) { + return ( + console.warn( + 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.', + ), + new mh(e) + ) + } + function dm(e, t, n) { + return ( + console.warn( + 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).', + ), + new No(e, n) + ) + } + ;(gh.create = function (e, t) { + return ( + console.log('THREE.Curve.create() has been deprecated'), + (e.prototype = Object.create(gh.prototype)), + (e.prototype.constructor = e), + (e.prototype.getPoint = t), + e + ) + }), + Object.assign(Wh.prototype, { + fromPoints: function (e) { + return ( + console.warn( + 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().', + ), + this.setFromPoints(e) + ) + }, + }), + (rm.prototype = Object.create(_h.prototype)), + (im.prototype = Object.create(_h.prototype)), + (om.prototype = Object.create(_h.prototype)), + Object.assign(om.prototype, { + initFromArray: function () { + console.error('THREE.Spline: .initFromArray() has been removed.') + }, + getControlPointsArray: function () { + console.error('THREE.Spline: .getControlPointsArray() has been removed.') + }, + reparametrizeByArcLength: function () { + console.error( + 'THREE.Spline: .reparametrizeByArcLength() has been removed.', + ) + }, + }), + (Dp.prototype.setColors = function () { + console.error( + 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.', + ) + }), + (_p.prototype.update = function () { + console.error( + 'THREE.SkeletonHelper: update() no longer needs to be called.', + ) + }), + Object.assign(lh.prototype, { + extractUrlBase: function (e) { + return ( + console.warn( + 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.', + ), + ld.extractUrlBase(e) + ) + }, + }), + (lh.Handlers = { + add: function () { + console.error( + 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.', + ) + }, + get: function () { + console.error( + 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.', + ) + }, + }), + Object.assign(mp.prototype, { + center: function (e) { + return ( + console.warn('THREE.Box2: .center() has been renamed to .getCenter().'), + this.getCenter(e) + ) + }, + empty: function () { + return ( + console.warn('THREE.Box2: .empty() has been renamed to .isEmpty().'), + this.isEmpty() + ) + }, + isIntersectionBox: function (e) { + return ( + console.warn( + 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().', + ), + this.intersectsBox(e) + ) + }, + size: function (e) { + return ( + console.warn('THREE.Box2: .size() has been renamed to .getSize().'), + this.getSize(e) + ) + }, + }), + Object.assign(hr.prototype, { + center: function (e) { + return ( + console.warn('THREE.Box3: .center() has been renamed to .getCenter().'), + this.getCenter(e) + ) + }, + empty: function () { + return ( + console.warn('THREE.Box3: .empty() has been renamed to .isEmpty().'), + this.isEmpty() + ) + }, + isIntersectionBox: function (e) { + return ( + console.warn( + 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().', + ), + this.intersectsBox(e) + ) + }, + isIntersectionSphere: function (e) { + return ( + console.warn( + 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().', + ), + this.intersectsSphere(e) + ) + }, + size: function (e) { + return ( + console.warn('THREE.Box3: .size() has been renamed to .getSize().'), + this.getSize(e) + ) + }, + }), + Object.assign(Sr.prototype, { + empty: function () { + return ( + console.warn('THREE.Sphere: .empty() has been renamed to .isEmpty().'), + this.isEmpty() + ) + }, + }), + (zo.prototype.setFromMatrix = function (e) { + return ( + console.warn( + 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().', + ), + this.setFromProjectionMatrix(e) + ) + }), + (yp.prototype.center = function (e) { + return ( + console.warn('THREE.Line3: .center() has been renamed to .getCenter().'), + this.getCenter(e) + ) + }), + Object.assign(Kn, { + random16: function () { + return ( + console.warn( + 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.', + ), + Math.random() + ) + }, + nearestPowerOfTwo: function (e) { + return ( + console.warn( + 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().', + ), + Kn.floorPowerOfTwo(e) + ) + }, + nextPowerOfTwo: function (e) { + return ( + console.warn( + 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().', + ), + Kn.ceilPowerOfTwo(e) + ) + }, + }), + Object.assign($n.prototype, { + flattenToArrayOffset: function (e, t) { + return ( + console.warn( + 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.', + ), + this.toArray(e, t) + ) + }, + multiplyVector3: function (e) { + return ( + console.warn( + 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.', + ), + e.applyMatrix3(this) + ) + }, + multiplyVector3Array: function () { + console.error('THREE.Matrix3: .multiplyVector3Array() has been removed.') + }, + applyToBufferAttribute: function (e) { + return ( + console.warn( + 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.', + ), + e.applyMatrix3(this) + ) + }, + applyToVector3Array: function () { + console.error('THREE.Matrix3: .applyToVector3Array() has been removed.') + }, + getInverse: function (e) { + return ( + console.warn( + 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.', + ), + this.copy(e).invert() + ) + }, + }), + Object.assign(Fr.prototype, { + extractPosition: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().', + ), + this.copyPosition(e) + ) + }, + flattenToArrayOffset: function (e, t) { + return ( + console.warn( + 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.', + ), + this.toArray(e, t) + ) + }, + getPosition: function () { + return ( + console.warn( + 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.', + ), + new lr().setFromMatrixColumn(this, 3) + ) + }, + setRotationFromQuaternion: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().', + ), + this.makeRotationFromQuaternion(e) + ) + }, + multiplyToArray: function () { + console.warn('THREE.Matrix4: .multiplyToArray() has been removed.') + }, + multiplyVector3: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.', + ), + e.applyMatrix4(this) + ) + }, + multiplyVector4: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.', + ), + e.applyMatrix4(this) + ) + }, + multiplyVector3Array: function () { + console.error('THREE.Matrix4: .multiplyVector3Array() has been removed.') + }, + rotateAxis: function (e) { + console.warn( + 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.', + ), + e.transformDirection(this) + }, + crossVector: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.', + ), + e.applyMatrix4(this) + ) + }, + translate: function () { + console.error('THREE.Matrix4: .translate() has been removed.') + }, + rotateX: function () { + console.error('THREE.Matrix4: .rotateX() has been removed.') + }, + rotateY: function () { + console.error('THREE.Matrix4: .rotateY() has been removed.') + }, + rotateZ: function () { + console.error('THREE.Matrix4: .rotateZ() has been removed.') + }, + rotateByAxis: function () { + console.error('THREE.Matrix4: .rotateByAxis() has been removed.') + }, + applyToBufferAttribute: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.', + ), + e.applyMatrix4(this) + ) + }, + applyToVector3Array: function () { + console.error('THREE.Matrix4: .applyToVector3Array() has been removed.') + }, + makeFrustum: function (e, t, n, r, i, o) { + return ( + console.warn( + 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.', + ), + this.makePerspective(e, t, r, n, i, o) + ) + }, + getInverse: function (e) { + return ( + console.warn( + 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.', + ), + this.copy(e).invert() + ) + }, + }), + (hi.prototype.isIntersectionLine = function (e) { + return ( + console.warn( + 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().', + ), + this.intersectsLine(e) + ) + }), + Object.assign(sr.prototype, { + multiplyVector3: function (e) { + return ( + console.warn( + 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.', + ), + e.applyQuaternion(this) + ) + }, + inverse: function () { + return ( + console.warn( + 'THREE.Quaternion: .inverse() has been renamed to invert().', + ), + this.invert() + ) + }, + }), + Object.assign(Br.prototype, { + isIntersectionBox: function (e) { + return ( + console.warn( + 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().', + ), + this.intersectsBox(e) + ) + }, + isIntersectionPlane: function (e) { + return ( + console.warn( + 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().', + ), + this.intersectsPlane(e) + ) + }, + isIntersectionSphere: function (e) { + return ( + console.warn( + 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().', + ), + this.intersectsSphere(e) + ) + }, + }), + Object.assign(xi.prototype, { + area: function () { + return ( + console.warn('THREE.Triangle: .area() has been renamed to .getArea().'), + this.getArea() + ) + }, + barycoordFromPoint: function (e, t) { + return ( + console.warn( + 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().', + ), + this.getBarycoord(e, t) + ) + }, + midpoint: function (e) { + return ( + console.warn( + 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().', + ), + this.getMidpoint(e) + ) + }, + normal: function (e) { + return ( + console.warn( + 'THREE.Triangle: .normal() has been renamed to .getNormal().', + ), + this.getNormal(e) + ) + }, + plane: function (e) { + return ( + console.warn( + 'THREE.Triangle: .plane() has been renamed to .getPlane().', + ), + this.getPlane(e) + ) + }, + }), + Object.assign(xi, { + barycoordFromPoint: function (e, t, n, r, i) { + return ( + console.warn( + 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().', + ), + xi.getBarycoord(e, t, n, r, i) + ) + }, + normal: function (e, t, n, r) { + return ( + console.warn( + 'THREE.Triangle: .normal() has been renamed to .getNormal().', + ), + xi.getNormal(e, t, n, r) + ) + }, + }), + Object.assign(qh.prototype, { + extractAllPoints: function (e) { + return ( + console.warn( + 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.', + ), + this.extractPoints(e) + ) + }, + extrude: function (e) { + return ( + console.warn( + 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.', + ), + new fu(this, e) + ) + }, + makeGeometry: function (e) { + return ( + console.warn( + 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.', + ), + new xu(this, e) + ) + }, + }), + Object.assign(Jn.prototype, { + fromAttribute: function (e, t, n) { + return ( + console.warn( + 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().', + ), + this.fromBufferAttribute(e, t, n) + ) + }, + distanceToManhattan: function (e) { + return ( + console.warn( + 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().', + ), + this.manhattanDistanceTo(e) + ) + }, + lengthManhattan: function () { + return ( + console.warn( + 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().', + ), + this.manhattanLength() + ) + }, + }), + Object.assign(lr.prototype, { + setEulerFromRotationMatrix: function () { + console.error( + 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.', + ) + }, + setEulerFromQuaternion: function () { + console.error( + 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.', + ) + }, + getPositionFromMatrix: function (e) { + return ( + console.warn( + 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().', + ), + this.setFromMatrixPosition(e) + ) + }, + getScaleFromMatrix: function (e) { + return ( + console.warn( + 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().', + ), + this.setFromMatrixScale(e) + ) + }, + getColumnFromMatrix: function (e, t) { + return ( + console.warn( + 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().', + ), + this.setFromMatrixColumn(t, e) + ) + }, + applyProjection: function (e) { + return ( + console.warn( + 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.', + ), + this.applyMatrix4(e) + ) + }, + fromAttribute: function (e, t, n) { + return ( + console.warn( + 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().', + ), + this.fromBufferAttribute(e, t, n) + ) + }, + distanceToManhattan: function (e) { + return ( + console.warn( + 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().', + ), + this.manhattanDistanceTo(e) + ) + }, + lengthManhattan: function () { + return ( + console.warn( + 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().', + ), + this.manhattanLength() + ) + }, + }), + Object.assign(ir.prototype, { + fromAttribute: function (e, t, n) { + return ( + console.warn( + 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().', + ), + this.fromBufferAttribute(e, t, n) + ) + }, + lengthManhattan: function () { + return ( + console.warn( + 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().', + ), + this.manhattanLength() + ) + }, + }), + Object.assign(si.prototype, { + getChildByName: function (e) { + return ( + console.warn( + 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().', + ), + this.getObjectByName(e) + ) + }, + renderDepth: function () { + console.warn( + 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.', + ) + }, + translate: function (e, t) { + return ( + console.warn( + 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.', + ), + this.translateOnAxis(t, e) + ) + }, + getWorldRotation: function () { + console.error( + 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.', + ) + }, + applyMatrix: function (e) { + return ( + console.warn( + 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().', + ), + this.applyMatrix4(e) + ) + }, + }), + Object.defineProperties(si.prototype, { + eulerOrder: { + get: function () { + return ( + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'), + this.rotation.order + ) + }, + set: function (e) { + console.warn('THREE.Object3D: .eulerOrder is now .rotation.order.'), + (this.rotation.order = e) + }, + }, + useQuaternion: { + get: function () { + console.warn( + 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.', + ) + }, + set: function () { + console.warn( + 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.', + ) + }, + }, + }), + Object.assign(xo.prototype, { + setDrawMode: function () { + console.error( + 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.', + ) + }, + }), + Object.defineProperties(xo.prototype, { + drawMode: { + get: function () { + return ( + console.error( + 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.', + ), + Yt + ) + }, + set: function () { + console.error( + 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.', + ) + }, + }, + }), + Object.defineProperties(Ul.prototype, { + objects: { + get: function () { + return ( + console.warn('THREE.LOD: .objects has been renamed to .levels.'), + this.levels + ) + }, + }, + }), + Object.defineProperty(Ql.prototype, 'useVertexTexture', { + get: function () { + console.warn('THREE.Skeleton: useVertexTexture has been removed.') + }, + set: function () { + console.warn('THREE.Skeleton: useVertexTexture has been removed.') + }, + }), + (Wl.prototype.initBones = function () { + console.error('THREE.SkinnedMesh: initBones() has been removed.') + }), + Object.defineProperty(gh.prototype, '__arcLengthDivisions', { + get: function () { + return ( + console.warn( + 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.', + ), + this.arcLengthDivisions + ) + }, + set: function (e) { + console.warn( + 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.', + ), + (this.arcLengthDivisions = e) + }, + }), + (Oo.prototype.setLens = function (e, t) { + console.warn( + 'THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup.', + ), + void 0 !== t && (this.filmGauge = t), + this.setFocalLength(e) + }), + Object.defineProperties(Xh.prototype, { + onlyShadow: { + set: function () { + console.warn('THREE.Light: .onlyShadow has been removed.') + }, + }, + shadowCameraFov: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.', + ), + (this.shadow.camera.fov = e) + }, + }, + shadowCameraLeft: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.', + ), + (this.shadow.camera.left = e) + }, + }, + shadowCameraRight: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.', + ), + (this.shadow.camera.right = e) + }, + }, + shadowCameraTop: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.', + ), + (this.shadow.camera.top = e) + }, + }, + shadowCameraBottom: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.', + ), + (this.shadow.camera.bottom = e) + }, + }, + shadowCameraNear: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.', + ), + (this.shadow.camera.near = e) + }, + }, + shadowCameraFar: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.', + ), + (this.shadow.camera.far = e) + }, + }, + shadowCameraVisible: { + set: function () { + console.warn( + 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.', + ) + }, + }, + shadowBias: { + set: function (e) { + console.warn('THREE.Light: .shadowBias is now .shadow.bias.'), + (this.shadow.bias = e) + }, + }, + shadowDarkness: { + set: function () { + console.warn('THREE.Light: .shadowDarkness has been removed.') + }, + }, + shadowMapWidth: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.', + ), + (this.shadow.mapSize.width = e) + }, + }, + shadowMapHeight: { + set: function (e) { + console.warn( + 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.', + ), + (this.shadow.mapSize.height = e) + }, + }, + }), + Object.defineProperties(Fi.prototype, { + length: { + get: function () { + return ( + console.warn( + 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.', + ), + this.array.length + ) + }, + }, + dynamic: { + get: function () { + return ( + console.warn( + 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.', + ), + this.usage === Sn + ) + }, + set: function () { + console.warn( + 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.', + ), + this.setUsage(Sn) + }, + }, + }), + Object.assign(Fi.prototype, { + setDynamic: function (e) { + return ( + console.warn( + 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.', + ), + this.setUsage(!0 === e ? Sn : Tn), + this + ) + }, + copyIndicesArray: function () { + console.error( + 'THREE.BufferAttribute: .copyIndicesArray() has been removed.', + ) + }, + setArray: function () { + console.error( + 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers', + ) + }, + }), + Object.assign(ro.prototype, { + addIndex: function (e) { + console.warn( + 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().', + ), + this.setIndex(e) + }, + addAttribute: function (e, t) { + return ( + console.warn( + 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().', + ), + (t && t.isBufferAttribute) || (t && t.isInterleavedBufferAttribute) + ? 'index' === e + ? (console.warn( + 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.', + ), + this.setIndex(t), + this) + : this.setAttribute(e, t) + : (console.warn( + 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).', + ), + this.setAttribute(e, new Fi(arguments[1], arguments[2]))) + ) + }, + addDrawCall: function (e, t, n) { + void 0 !== n && + console.warn( + 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.', + ), + console.warn( + 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().', + ), + this.addGroup(e, t) + }, + clearDrawCalls: function () { + console.warn( + 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().', + ), + this.clearGroups() + }, + computeOffsets: function () { + console.warn('THREE.BufferGeometry: .computeOffsets() has been removed.') + }, + removeAttribute: function (e) { + return ( + console.warn( + 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().', + ), + this.deleteAttribute(e) + ) + }, + applyMatrix: function (e) { + return ( + console.warn( + 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().', + ), + this.applyMatrix4(e) + ) + }, + }), + Object.defineProperties(ro.prototype, { + drawcalls: { + get: function () { + return ( + console.error( + 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.', + ), + this.groups + ) + }, + }, + offsets: { + get: function () { + return ( + console.warn( + 'THREE.BufferGeometry: .offsets has been renamed to .groups.', + ), + this.groups + ) + }, + }, + }), + Object.defineProperties(cd.prototype, { + maxInstancedCount: { + get: function () { + return ( + console.warn( + 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.', + ), + this.instanceCount + ) + }, + set: function (e) { + console.warn( + 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.', + ), + (this.instanceCount = e) + }, + }, + }), + Object.defineProperties(cp.prototype, { + linePrecision: { + get: function () { + return ( + console.warn( + 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.', + ), + this.params.Line.threshold + ) + }, + set: function (e) { + console.warn( + 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.', + ), + (this.params.Line.threshold = e) + }, + }, + }), + Object.defineProperties(yl.prototype, { + dynamic: { + get: function () { + return ( + console.warn( + 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.', + ), + this.usage === Sn + ) + }, + set: function (e) { + console.warn( + 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.', + ), + this.setUsage(e) + }, + }, + }), + Object.assign(yl.prototype, { + setDynamic: function (e) { + return ( + console.warn( + 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.', + ), + this.setUsage(!0 === e ? Sn : Tn), + this + ) + }, + setArray: function () { + console.error( + 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers', + ) + }, + }), + Object.assign(fu.prototype, { + getArrays: function () { + console.error('THREE.ExtrudeGeometry: .getArrays() has been removed.') + }, + addShapeList: function () { + console.error('THREE.ExtrudeGeometry: .addShapeList() has been removed.') + }, + addShape: function () { + console.error('THREE.ExtrudeGeometry: .addShape() has been removed.') + }, + }), + Object.assign(gl.prototype, { + dispose: function () { + console.error('THREE.Scene: .dispose() has been removed.') + }, + }), + Object.defineProperties(ap.prototype, { + dynamic: { + set: function () { + console.warn( + 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.', + ) + }, + }, + onUpdate: { + value: function () { + return ( + console.warn( + 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.', + ), + this + ) + }, + }, + }), + Object.defineProperties(Di.prototype, { + wrapAround: { + get: function () { + console.warn('THREE.Material: .wrapAround has been removed.') + }, + set: function () { + console.warn('THREE.Material: .wrapAround has been removed.') + }, + }, + overdraw: { + get: function () { + console.warn('THREE.Material: .overdraw has been removed.') + }, + set: function () { + console.warn('THREE.Material: .overdraw has been removed.') + }, + }, + wrapRGB: { + get: function () { + return ( + console.warn('THREE.Material: .wrapRGB has been removed.'), new Li() + ) + }, + }, + shading: { + get: function () { + console.error( + 'THREE.' + + this.type + + ': .shading has been removed. Use the boolean .flatShading instead.', + ) + }, + set: function (e) { + console.warn( + 'THREE.' + + this.type + + ': .shading has been removed. Use the boolean .flatShading instead.', + ), + (this.flatShading = e === y) + }, + }, + stencilMask: { + get: function () { + return ( + console.warn( + 'THREE.' + + this.type + + ': .stencilMask has been removed. Use .stencilFuncMask instead.', + ), + this.stencilFuncMask + ) + }, + set: function (e) { + console.warn( + 'THREE.' + + this.type + + ': .stencilMask has been removed. Use .stencilFuncMask instead.', + ), + (this.stencilFuncMask = e) + }, + }, + }), + Object.defineProperties(Fu.prototype, { + metal: { + get: function () { + return ( + console.warn( + 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.', + ), + !1 + ) + }, + set: function () { + console.warn( + 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead', + ) + }, + }, + }), + Object.defineProperties(Bu.prototype, { + transparency: { + get: function () { + return ( + console.warn( + 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.', + ), + this.transmission + ) + }, + set: function (e) { + console.warn( + 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.', + ), + (this.transmission = e) + }, + }, + }), + Object.defineProperties(Po.prototype, { + derivatives: { + get: function () { + return ( + console.warn( + 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.', + ), + this.extensions.derivatives + ) + }, + set: function (e) { + console.warn( + 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.', + ), + (this.extensions.derivatives = e) + }, + }, + }), + Object.assign(pl.prototype, { + clearTarget: function (e, t, n, r) { + console.warn( + 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.', + ), + this.setRenderTarget(e), + this.clear(t, n, r) + }, + animate: function (e) { + console.warn( + 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().', + ), + this.setAnimationLoop(e) + }, + getCurrentRenderTarget: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().', + ), + this.getRenderTarget() + ) + }, + getMaxAnisotropy: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().', + ), + this.capabilities.getMaxAnisotropy() + ) + }, + getPrecision: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.', + ), + this.capabilities.precision + ) + }, + resetGLState: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().', + ), + this.state.reset() + ) + }, + supportsFloatTextures: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).", + ), + this.extensions.get('OES_texture_float') + ) + }, + supportsHalfFloatTextures: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).", + ), + this.extensions.get('OES_texture_half_float') + ) + }, + supportsStandardDerivatives: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).", + ), + this.extensions.get('OES_standard_derivatives') + ) + }, + supportsCompressedTextureS3TC: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).", + ), + this.extensions.get('WEBGL_compressed_texture_s3tc') + ) + }, + supportsCompressedTexturePVRTC: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).", + ), + this.extensions.get('WEBGL_compressed_texture_pvrtc') + ) + }, + supportsBlendMinMax: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).", + ), + this.extensions.get('EXT_blend_minmax') + ) + }, + supportsVertexTextures: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.', + ), + this.capabilities.vertexTextures + ) + }, + supportsInstancedArrays: function () { + return ( + console.warn( + "THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' ).", + ), + this.extensions.get('ANGLE_instanced_arrays') + ) + }, + enableScissorTest: function (e) { + console.warn( + 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().', + ), + this.setScissorTest(e) + }, + initMaterial: function () { + console.warn('THREE.WebGLRenderer: .initMaterial() has been removed.') + }, + addPrePlugin: function () { + console.warn('THREE.WebGLRenderer: .addPrePlugin() has been removed.') + }, + addPostPlugin: function () { + console.warn('THREE.WebGLRenderer: .addPostPlugin() has been removed.') + }, + updateShadowMap: function () { + console.warn('THREE.WebGLRenderer: .updateShadowMap() has been removed.') + }, + setFaceCulling: function () { + console.warn('THREE.WebGLRenderer: .setFaceCulling() has been removed.') + }, + allocTextureUnit: function () { + console.warn('THREE.WebGLRenderer: .allocTextureUnit() has been removed.') + }, + setTexture: function () { + console.warn('THREE.WebGLRenderer: .setTexture() has been removed.') + }, + setTextureCube: function () { + console.warn('THREE.WebGLRenderer: .setTextureCube() has been removed.') + }, + getActiveMipMapLevel: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().', + ), + this.getActiveMipmapLevel() + ) + }, + }), + Object.defineProperties(pl.prototype, { + shadowMapEnabled: { + get: function () { + return this.shadowMap.enabled + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.', + ), + (this.shadowMap.enabled = e) + }, + }, + shadowMapType: { + get: function () { + return this.shadowMap.type + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.', + ), + (this.shadowMap.type = e) + }, + }, + shadowMapCullFace: { + get: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.', + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.', + ) + }, + }, + context: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.', + ), + this.getContext() + ) + }, + }, + vr: { + get: function () { + return ( + console.warn('THREE.WebGLRenderer: .vr has been renamed to .xr'), + this.xr + ) + }, + }, + gammaInput: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.', + ), + !1 + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.', + ) + }, + }, + gammaOutput: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.', + ), + !1 + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.', + ), + (this.outputEncoding = !0 === e ? Jt : Kt) + }, + }, + toneMappingWhitePoint: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.', + ), + 1 + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.', + ) + }, + }, + }), + Object.defineProperties($s.prototype, { + cullFace: { + get: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.', + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.', + ) + }, + }, + renderReverseSided: { + get: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.', + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.', + ) + }, + }, + renderSingleSided: { + get: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.', + ) + }, + set: function () { + console.warn( + 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.', + ) + }, + }, + }), + Object.defineProperties(or.prototype, { + wrapS: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.', + ), + this.texture.wrapS + ) + }, + set: function (e) { + console.warn('THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.'), + (this.texture.wrapS = e) + }, + }, + wrapT: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.', + ), + this.texture.wrapT + ) + }, + set: function (e) { + console.warn('THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.'), + (this.texture.wrapT = e) + }, + }, + magFilter: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.', + ), + this.texture.magFilter + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.', + ), + (this.texture.magFilter = e) + }, + }, + minFilter: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.', + ), + this.texture.minFilter + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.', + ), + (this.texture.minFilter = e) + }, + }, + anisotropy: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.', + ), + this.texture.anisotropy + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.', + ), + (this.texture.anisotropy = e) + }, + }, + offset: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .offset is now .texture.offset.', + ), + this.texture.offset + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .offset is now .texture.offset.', + ), + (this.texture.offset = e) + }, + }, + repeat: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.', + ), + this.texture.repeat + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.', + ), + (this.texture.repeat = e) + }, + }, + format: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .format is now .texture.format.', + ), + this.texture.format + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .format is now .texture.format.', + ), + (this.texture.format = e) + }, + }, + type: { + get: function () { + return ( + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'), + this.texture.type + ) + }, + set: function (e) { + console.warn('THREE.WebGLRenderTarget: .type is now .texture.type.'), + (this.texture.type = e) + }, + }, + generateMipmaps: { + get: function () { + return ( + console.warn( + 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.', + ), + this.texture.generateMipmaps + ) + }, + set: function (e) { + console.warn( + 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.', + ), + (this.texture.generateMipmaps = e) + }, + }, + }), + Object.defineProperties(kd.prototype, { + load: { + value: function (e) { + console.warn( + 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.', + ) + var t = this + return ( + new Md().load(e, function (e) { + t.setBuffer(e) + }), + this + ) + }, + }, + startTime: { + set: function () { + console.warn('THREE.Audio: .startTime is now .play( delay ).') + }, + }, + }), + (jd.prototype.getData = function () { + return ( + console.warn( + 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().', + ), + this.getFrequencyData() + ) + }), + (Fo.prototype.updateCubeMap = function (e, t) { + return ( + console.warn('THREE.CubeCamera: .updateCubeMap() is now .update().'), + this.update(e, t) + ) + }), + (Fo.prototype.clear = function (e, t, n, r) { + return ( + console.warn('THREE.CubeCamera: .clear() is now .renderTarget.clear().'), + this.renderTarget.clear(e, t, n, r) + ) + }) + var pm = { + merge: function (e, t, n) { + var r + console.warn( + 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.', + ), + t.isMesh && + (t.matrixAutoUpdate && t.updateMatrix(), + (r = t.matrix), + (t = t.geometry)), + e.merge(t, r, n) + }, + center: function (e) { + return ( + console.warn( + 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.', + ), + e.center() + ) + }, + } + function fm() { + console.error('THREE.CanvasRenderer has been removed') + } + function mm() { + console.error('THREE.JSONLoader has been removed.') + } + ;(er.crossOrigin = void 0), + (er.loadTexture = function (e, t, n, r) { + console.warn( + 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.', + ) + var i = new vh() + i.setCrossOrigin(this.crossOrigin) + var o = i.load(e, n, void 0, r) + return t && (o.mapping = t), o + }), + (er.loadTextureCube = function (e, t, n, r) { + console.warn( + 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.', + ) + var i = new fh() + i.setCrossOrigin(this.crossOrigin) + var o = i.load(e, n, void 0, r) + return t && (o.mapping = t), o + }), + (er.loadCompressedTexture = function () { + console.error( + 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.', + ) + }), + (er.loadCompressedTextureCube = function () { + console.error( + 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.', + ) + }) + var vm = { + createMultiMaterialObject: function () { + console.error( + 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js', + ) + }, + detach: function () { + console.error( + 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js', + ) + }, + attach: function () { + console.error( + 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js', + ) + }, + } + function gm() { + console.error( + 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js', + ) + } + 'undefined' !== typeof __THREE_DEVTOOLS__ && + __THREE_DEVTOOLS__.dispatchEvent( + new CustomEvent('register', { detail: { revision: i } }), + ), + 'undefined' !== typeof window && + (window.__THREE__ + ? console.warn('WARNING: Multiple instances of Three.js being imported.') + : (window.__THREE__ = i)), + (t.ACESFilmicToneMapping = re), + (t.AddEquation = T), + (t.AddOperation = J), + (t.AdditiveAnimationBlendMode = Xt), + (t.AdditiveBlending = x), + (t.AlphaFormat = ke), + (t.AlwaysDepth = j), + (t.AlwaysStencilFunc = _n), + (t.AmbientLight = rd), + (t.AmbientLightProbe = Td), + (t.AnimationClip = nh), + (t.AnimationLoader = hh), + (t.AnimationMixer = op), + (t.AnimationObjectGroup = rp), + (t.AnimationUtils = ju), + (t.ArcCurve = bh), + (t.ArrayCamera = il), + (t.ArrowHelper = Zp), + (t.Audio = kd), + (t.AudioAnalyser = jd), + (t.AudioContext = Ed), + (t.AudioListener = Fd), + (t.AudioLoader = Md), + (t.AxesHelper = Kp), + (t.AxisHelper = am), + (t.BackSide = v), + (t.BasicDepthPacking = an), + (t.BasicShadowMap = h), + (t.BinaryTextureLoader = hm), + (t.Bone = ql), + (t.BooleanKeyframeTrack = Qu), + (t.BoundingBoxHelper = sm), + (t.Box2 = mp), + (t.Box3 = hr), + (t.Box3Helper = Xp), + (t.BoxBufferGeometry = _o), + (t.BoxGeometry = _o), + (t.BoxHelper = qp), + (t.BufferAttribute = Fi), + (t.BufferGeometry = ro), + (t.BufferGeometryLoader = hd), + (t.ByteType = Te), + (t.Cache = oh), + (t.Camera = Do), + (t.CameraHelper = Hp), + (t.CanvasRenderer = fm), + (t.CanvasTexture = wc), + (t.CatmullRomCurve3 = _h), + (t.CineonToneMapping = ne), + (t.CircleBufferGeometry = Ec), + (t.CircleGeometry = Ec), + (t.ClampToEdgeWrapping = pe), + (t.Clock = Rd), + (t.ClosedSplineCurve3 = rm), + (t.Color = Li), + (t.ColorKeyframeTrack = Zu), + (t.CompressedTexture = Ac), + (t.CompressedTextureLoader = dh), + (t.ConeBufferGeometry = _c), + (t.ConeGeometry = _c), + (t.CubeCamera = Fo), + (t.CubeReflectionMapping = ae), + (t.CubeRefractionMapping = se), + (t.CubeTexture = ko), + (t.CubeTextureLoader = fh), + (t.CubeUVReflectionMapping = ue), + (t.CubeUVRefractionMapping = he), + (t.CubicBezierCurve = Fh), + (t.CubicBezierCurve3 = kh), + (t.CubicInterpolant = Wu), + (t.CullFaceBack = l), + (t.CullFaceFront = c), + (t.CullFaceFrontBack = u), + (t.CullFaceNone = s), + (t.Curve = gh), + (t.CurvePath = Vh), + (t.CustomBlending = _), + (t.CustomToneMapping = ie), + (t.CylinderBufferGeometry = Mc), + (t.CylinderGeometry = Mc), + (t.Cylindrical = pp), + (t.DataTexture = Uo), + (t.DataTexture2DArray = ca), + (t.DataTexture3D = ua), + (t.DataTextureLoader = mh), + (t.DataUtils = ef), + (t.DecrementStencilOp = fn), + (t.DecrementWrapStencilOp = vn), + (t.DefaultLoadingManager = sh), + (t.DepthFormat = je), + (t.DepthStencilFormat = Ve), + (t.DepthTexture = xc), + (t.DirectionalLight = nd), + (t.DirectionalLightHelper = kp), + (t.DiscreteInterpolant = Xu), + (t.DodecahedronBufferGeometry = Sc), + (t.DodecahedronGeometry = Sc), + (t.DoubleSide = g), + (t.DstAlphaFactor = k), + (t.DstColorFactor = U), + (t.DynamicBufferAttribute = Xf), + (t.DynamicCopyUsage = On), + (t.DynamicDrawUsage = Sn), + (t.DynamicReadUsage = Rn), + (t.EdgesGeometry = Dc), + (t.EdgesHelper = lm), + (t.EllipseCurve = yh), + (t.EqualDepth = q), + (t.EqualStencilFunc = An), + (t.EquirectangularReflectionMapping = le), + (t.EquirectangularRefractionMapping = ce), + (t.Euler = Vr), + (t.EventDispatcher = qn), + (t.ExtrudeBufferGeometry = fu), + (t.ExtrudeGeometry = fu), + (t.Face3 = Ri), + (t.Face4 = Df), + (t.FaceColors = Ff), + (t.FileLoader = uh), + (t.FlatShading = y), + (t.Float16BufferAttribute = Vi), + (t.Float32Attribute = tm), + (t.Float32BufferAttribute = Wi), + (t.Float64Attribute = nm), + (t.Float64BufferAttribute = qi), + (t.FloatType = Pe), + (t.Fog = vl), + (t.FogExp2 = ml), + (t.Font = bd), + (t.FontLoader = xd), + (t.FrontSide = m), + (t.Frustum = zo), + (t.GLBufferAttribute = lp), + (t.GLSL1 = Bn), + (t.GLSL3 = Fn), + (t.GammaEncoding = $t), + (t.GeometryUtils = pm), + (t.GreaterDepth = Y), + (t.GreaterEqualDepth = X), + (t.GreaterEqualStencilFunc = Mn), + (t.GreaterStencilFunc = xn), + (t.GridHelper = Dp), + (t.Group = rl), + (t.HalfFloatType = De), + (t.HemisphereLight = Yh), + (t.HemisphereLightHelper = Pp), + (t.HemisphereLightProbe = _d), + (t.IcosahedronBufferGeometry = gu), + (t.IcosahedronGeometry = gu), + (t.ImageBitmapLoader = vd), + (t.ImageLoader = ph), + (t.ImageUtils = er), + (t.ImmediateRenderObject = bp), + (t.IncrementStencilOp = pn), + (t.IncrementWrapStencilOp = mn), + (t.InstancedBufferAttribute = ud), + (t.InstancedBufferGeometry = cd), + (t.InstancedInterleavedBuffer = sp), + (t.InstancedMesh = ec), + (t.Int16Attribute = Kf), + (t.Int16BufferAttribute = Hi), + (t.Int32Attribute = $f), + (t.Int32BufferAttribute = zi), + (t.Int8Attribute = Yf), + (t.Int8BufferAttribute = ki), + (t.IntType = Le), + (t.InterleavedBuffer = yl), + (t.InterleavedBufferAttribute = wl), + (t.Interpolant = Vu), + (t.InterpolateDiscrete = Ht), + (t.InterpolateLinear = Gt), + (t.InterpolateSmooth = zt), + (t.InvertStencilOp = gn), + (t.JSONLoader = mm), + (t.KeepStencilOp = hn), + (t.KeyframeTrack = Yu), + (t.LOD = Ul), + (t.LatheBufferGeometry = yu), + (t.LatheGeometry = yu), + (t.Layers = Xr), + (t.LensFlare = gm), + (t.LessDepth = V), + (t.LessEqualDepth = W), + (t.LessEqualStencilFunc = wn), + (t.LessStencilFunc = bn), + (t.Light = Xh), + (t.LightProbe = ad), + (t.Line = sc), + (t.Line3 = yp), + (t.LineBasicMaterial = tc), + (t.LineCurve = Nh), + (t.LineCurve3 = Uh), + (t.LineDashedMaterial = Gu), + (t.LineLoop = hc), + (t.LinePieces = If), + (t.LineSegments = uc), + (t.LineStrip = Of), + (t.LinearEncoding = Kt), + (t.LinearFilter = Ae), + (t.LinearInterpolant = qu), + (t.LinearMipMapLinearFilter = Me), + (t.LinearMipMapNearestFilter = xe), + (t.LinearMipmapLinearFilter = Ee), + (t.LinearMipmapNearestFilter = we), + (t.LinearToneMapping = ee), + (t.Loader = lh), + (t.LoaderUtils = ld), + (t.LoadingManager = ah), + (t.LogLuvEncoding = tn), + (t.LoopOnce = kt), + (t.LoopPingPong = Ut), + (t.LoopRepeat = Nt), + (t.LuminanceAlphaFormat = Ge), + (t.LuminanceFormat = He), + (t.MOUSE = o), + (t.Material = Di), + (t.MaterialLoader = sd), + (t.Math = Kn), + (t.MathUtils = Kn), + (t.Matrix3 = $n), + (t.Matrix4 = Fr), + (t.MaxEquation = R), + (t.Mesh = xo), + (t.MeshBasicMaterial = Oi), + (t.MeshDepthMaterial = Qs), + (t.MeshDistanceMaterial = Zs), + (t.MeshFaceMaterial = Nf), + (t.MeshLambertMaterial = Uu), + (t.MeshMatcapMaterial = Hu), + (t.MeshNormalMaterial = Nu), + (t.MeshPhongMaterial = Fu), + (t.MeshPhysicalMaterial = Bu), + (t.MeshStandardMaterial = Iu), + (t.MeshToonMaterial = ku), + (t.MinEquation = L), + (t.MirroredRepeatWrapping = fe), + (t.MixOperation = K), + (t.MultiMaterial = Uf), + (t.MultiplyBlending = M), + (t.MultiplyOperation = Z), + (t.NearestFilter = me), + (t.NearestMipMapLinearFilter = be), + (t.NearestMipMapNearestFilter = ge), + (t.NearestMipmapLinearFilter = ye), + (t.NearestMipmapNearestFilter = ve), + (t.NeverDepth = z), + (t.NeverStencilFunc = yn), + (t.NoBlending = A), + (t.NoColors = Bf), + (t.NoToneMapping = $), + (t.NormalAnimationBlendMode = qt), + (t.NormalBlending = w), + (t.NotEqualDepth = Q), + (t.NotEqualStencilFunc = En), + (t.NumberKeyframeTrack = Ku), + (t.Object3D = si), + (t.ObjectLoader = dd), + (t.ObjectSpaceNormalMap = cn), + (t.OctahedronBufferGeometry = bu), + (t.OctahedronGeometry = bu), + (t.OneFactor = D), + (t.OneMinusDstAlphaFactor = N), + (t.OneMinusDstColorFactor = H), + (t.OneMinusSrcAlphaFactor = F), + (t.OneMinusSrcColorFactor = I), + (t.OrthographicCamera = ed), + (t.PCFShadowMap = d), + (t.PCFSoftShadowMap = p), + (t.PMREMGenerator = xf), + (t.ParametricBufferGeometry = Au), + (t.ParametricGeometry = Au), + (t.Particle = Gf), + (t.ParticleBasicMaterial = Vf), + (t.ParticleSystem = zf), + (t.ParticleSystemMaterial = Wf), + (t.Path = Wh), + (t.PerspectiveCamera = Oo), + (t.Plane = hi), + (t.PlaneBufferGeometry = Wo), + (t.PlaneGeometry = Wo), + (t.PlaneHelper = Yp), + (t.PointCloud = Hf), + (t.PointCloudMaterial = jf), + (t.PointLight = $h), + (t.PointLightHelper = Sp), + (t.Points = gc), + (t.PointsMaterial = dc), + (t.PolarGridHelper = Op), + (t.PolyhedronBufferGeometry = Tc), + (t.PolyhedronGeometry = Tc), + (t.PositionalAudio = zd), + (t.PropertyBinding = np), + (t.PropertyMixer = Vd), + (t.QuadraticBezierCurve = Hh), + (t.QuadraticBezierCurve3 = Gh), + (t.Quaternion = sr), + (t.QuaternionKeyframeTrack = $u), + (t.QuaternionLinearInterpolant = Ju), + (t.REVISION = i), + (t.RGBADepthPacking = sn), + (t.RGBAFormat = Ue), + (t.RGBAIntegerFormat = Ze), + (t.RGBA_ASTC_10x10_Format = bt), + (t.RGBA_ASTC_10x5_Format = vt), + (t.RGBA_ASTC_10x6_Format = gt), + (t.RGBA_ASTC_10x8_Format = yt), + (t.RGBA_ASTC_12x10_Format = At), + (t.RGBA_ASTC_12x12_Format = wt), + (t.RGBA_ASTC_4x4_Format = lt), + (t.RGBA_ASTC_5x4_Format = ct), + (t.RGBA_ASTC_5x5_Format = ut), + (t.RGBA_ASTC_6x5_Format = ht), + (t.RGBA_ASTC_6x6_Format = dt), + (t.RGBA_ASTC_8x5_Format = pt), + (t.RGBA_ASTC_8x6_Format = ft), + (t.RGBA_ASTC_8x8_Format = mt), + (t.RGBA_BPTC_Format = xt), + (t.RGBA_ETC2_EAC_Format = st), + (t.RGBA_PVRTC_2BPPV1_Format = it), + (t.RGBA_PVRTC_4BPPV1_Format = rt), + (t.RGBA_S3TC_DXT1_Format = Je), + (t.RGBA_S3TC_DXT3_Format = $e), + (t.RGBA_S3TC_DXT5_Format = et), + (t.RGBDEncoding = on), + (t.RGBEEncoding = en), + (t.RGBEFormat = ze), + (t.RGBFormat = Ne), + (t.RGBIntegerFormat = Qe), + (t.RGBM16Encoding = rn), + (t.RGBM7Encoding = nn), + (t.RGB_ETC1_Format = ot), + (t.RGB_ETC2_Format = at), + (t.RGB_PVRTC_2BPPV1_Format = nt), + (t.RGB_PVRTC_4BPPV1_Format = tt), + (t.RGB_S3TC_DXT1_Format = Ke), + (t.RGFormat = Xe), + (t.RGIntegerFormat = Ye), + (t.RawShaderMaterial = Ou), + (t.Ray = Br), + (t.Raycaster = cp), + (t.RectAreaLight = id), + (t.RedFormat = We), + (t.RedIntegerFormat = qe), + (t.ReinhardToneMapping = te), + (t.RepeatWrapping = de), + (t.ReplaceStencilOp = dn), + (t.ReverseSubtractEquation = C), + (t.RingBufferGeometry = wu), + (t.RingGeometry = wu), + (t.SRGB8_ALPHA8_ASTC_10x10_Format = It), + (t.SRGB8_ALPHA8_ASTC_10x5_Format = Pt), + (t.SRGB8_ALPHA8_ASTC_10x6_Format = Dt), + (t.SRGB8_ALPHA8_ASTC_10x8_Format = Ot), + (t.SRGB8_ALPHA8_ASTC_12x10_Format = Bt), + (t.SRGB8_ALPHA8_ASTC_12x12_Format = Ft), + (t.SRGB8_ALPHA8_ASTC_4x4_Format = Et), + (t.SRGB8_ALPHA8_ASTC_5x4_Format = Mt), + (t.SRGB8_ALPHA8_ASTC_5x5_Format = _t), + (t.SRGB8_ALPHA8_ASTC_6x5_Format = Tt), + (t.SRGB8_ALPHA8_ASTC_6x6_Format = St), + (t.SRGB8_ALPHA8_ASTC_8x5_Format = Ct), + (t.SRGB8_ALPHA8_ASTC_8x6_Format = Lt), + (t.SRGB8_ALPHA8_ASTC_8x8_Format = Rt), + (t.Scene = gl), + (t.SceneUtils = vm), + (t.ShaderChunk = qo), + (t.ShaderLib = Yo), + (t.ShaderMaterial = Po), + (t.ShadowMaterial = Du), + (t.Shape = qh), + (t.ShapeBufferGeometry = xu), + (t.ShapeGeometry = xu), + (t.ShapePath = gd), + (t.ShapeUtils = hu), + (t.ShortType = Se), + (t.Skeleton = Ql), + (t.SkeletonHelper = _p), + (t.SkinnedMesh = Wl), + (t.SmoothShading = b), + (t.Sphere = Sr), + (t.SphereBufferGeometry = Mu), + (t.SphereGeometry = Mu), + (t.Spherical = dp), + (t.SphericalHarmonics3 = od), + (t.Spline = om), + (t.SplineCurve = zh), + (t.SplineCurve3 = im), + (t.SpotLight = Kh), + (t.SpotLightHelper = wp), + (t.Sprite = Bl), + (t.SpriteMaterial = xl), + (t.SrcAlphaFactor = B), + (t.SrcAlphaSaturateFactor = G), + (t.SrcColorFactor = O), + (t.StaticCopyUsage = Dn), + (t.StaticDrawUsage = Tn), + (t.StaticReadUsage = Ln), + (t.StereoCamera = Ld), + (t.StreamCopyUsage = In), + (t.StreamDrawUsage = Cn), + (t.StreamReadUsage = Pn), + (t.StringKeyframeTrack = eh), + (t.SubtractEquation = S), + (t.SubtractiveBlending = E), + (t.TOUCH = a), + (t.TangentSpaceNormalMap = ln), + (t.TetrahedronBufferGeometry = _u), + (t.TetrahedronGeometry = _u), + (t.TextBufferGeometry = Tu), + (t.TextGeometry = Tu), + (t.Texture = nr), + (t.TextureLoader = vh), + (t.TorusBufferGeometry = Su), + (t.TorusGeometry = Su), + (t.TorusKnotBufferGeometry = Cu), + (t.TorusKnotGeometry = Cu), + (t.Triangle = xi), + (t.TriangleFanDrawMode = Zt), + (t.TriangleStripDrawMode = Qt), + (t.TrianglesDrawMode = Yt), + (t.TubeBufferGeometry = Lu), + (t.TubeGeometry = Lu), + (t.UVMapping = oe), + (t.Uint16Attribute = Jf), + (t.Uint16BufferAttribute = Gi), + (t.Uint32Attribute = em), + (t.Uint32BufferAttribute = ji), + (t.Uint8Attribute = Qf), + (t.Uint8BufferAttribute = Ni), + (t.Uint8ClampedAttribute = Zf), + (t.Uint8ClampedBufferAttribute = Ui), + (t.Uniform = ap), + (t.UniformsLib = Xo), + (t.UniformsUtils = Co), + (t.UnsignedByteType = _e), + (t.UnsignedInt248Type = Fe), + (t.UnsignedIntType = Re), + (t.UnsignedShort4444Type = Oe), + (t.UnsignedShort5551Type = Ie), + (t.UnsignedShort565Type = Be), + (t.UnsignedShortType = Ce), + (t.VSMShadowMap = f), + (t.Vector2 = Jn), + (t.Vector3 = lr), + (t.Vector4 = ir), + (t.VectorKeyframeTrack = th), + (t.Vertex = qf), + (t.VertexColors = kf), + (t.VideoTexture = bc), + (t.WebGL1Renderer = fl), + (t.WebGLCubeRenderTarget = No), + (t.WebGLMultisampleRenderTarget = ar), + (t.WebGLRenderTarget = or), + (t.WebGLRenderTargetCube = dm), + (t.WebGLRenderer = pl), + (t.WebGLUtils = nl), + (t.WireframeGeometry = Ru), + (t.WireframeHelper = cm), + (t.WrapAroundEnding = Wt), + (t.XHRLoader = um), + (t.ZeroCurvatureEnding = jt), + (t.ZeroFactor = P), + (t.ZeroSlopeEnding = Vt), + (t.ZeroStencilOp = un), + (t.sRGBEncoding = Jt), + Object.defineProperty(t, '__esModule', { value: !0 }) + }), + 'object' === typeof i && 'undefined' !== typeof r + ? a(i) + : 'function' === typeof t && t.amd + ? t(['exports'], a) + : a( + ((o = 'undefined' !== typeof globalThis ? globalThis : o || self).THREE = + {}), + ) + }, + {}, + ], + 58: [ + function (e, t, n) { + ;(THREE.DRACOLoader = function (e) { + THREE.Loader.call(this, e), + (this.decoderPath = ''), + (this.decoderConfig = {}), + (this.decoderBinary = null), + (this.decoderPending = null), + (this.workerLimit = 4), + (this.workerPool = []), + (this.workerNextTaskID = 1), + (this.workerSourceURL = ''), + (this.defaultAttributeIDs = { + position: 'POSITION', + normal: 'NORMAL', + color: 'COLOR', + uv: 'TEX_COORD', + }), + (this.defaultAttributeTypes = { + position: 'Float32Array', + normal: 'Float32Array', + color: 'Float32Array', + uv: 'Float32Array', + }) + }), + (THREE.DRACOLoader.prototype = Object.assign( + Object.create(THREE.Loader.prototype), + { + constructor: THREE.DRACOLoader, + setDecoderPath: function (e) { + return (this.decoderPath = e), this + }, + setDecoderConfig: function (e) { + return (this.decoderConfig = e), this + }, + setWorkerLimit: function (e) { + return (this.workerLimit = e), this + }, + setVerbosity: function () { + console.warn( + 'THREE.DRACOLoader: The .setVerbosity() method has been removed.', + ) + }, + setDrawMode: function () { + console.warn( + 'THREE.DRACOLoader: The .setDrawMode() method has been removed.', + ) + }, + setSkipDequantization: function () { + console.warn( + 'THREE.DRACOLoader: The .setSkipDequantization() method has been removed.', + ) + }, + load: function (e, t, n, r) { + var i = new THREE.FileLoader(this.manager) + i.setPath(this.path), + i.setResponseType('arraybuffer'), + i.setRequestHeader(this.requestHeader), + i.setWithCredentials(this.withCredentials), + i.load( + e, + (e) => { + var n = { + attributeIDs: this.defaultAttributeIDs, + attributeTypes: this.defaultAttributeTypes, + useUniqueIDs: !1, + } + this.decodeGeometry(e, n).then(t).catch(r) + }, + n, + r, + ) + }, + decodeDracoFile: function (e, t, n, r) { + var i = { + attributeIDs: n || this.defaultAttributeIDs, + attributeTypes: r || this.defaultAttributeTypes, + useUniqueIDs: !!n, + } + this.decodeGeometry(e, i).then(t) + }, + decodeGeometry: function (e, t) { + for (var n in t.attributeTypes) { + var r = t.attributeTypes[n] + void 0 !== r.BYTES_PER_ELEMENT && (t.attributeTypes[n] = r.name) + } + var i, + o = JSON.stringify(t) + if (THREE.DRACOLoader.taskCache.has(e)) { + var a = THREE.DRACOLoader.taskCache.get(e) + if (a.key === o) return a.promise + if (0 === e.byteLength) + throw new Error( + 'THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.', + ) + } + var s = this.workerNextTaskID++, + l = e.byteLength, + c = this._getWorker(s, l) + .then( + (n) => ( + (i = n), + new Promise((n, r) => { + ;(i._callbacks[s] = { resolve: n, reject: r }), + i.postMessage( + { type: 'decode', id: s, taskConfig: t, buffer: e }, + [e], + ) + }) + ), + ) + .then((e) => this._createGeometry(e.geometry)) + return ( + c + .catch(() => !0) + .then(() => { + i && s && this._releaseTask(i, s) + }), + THREE.DRACOLoader.taskCache.set(e, { key: o, promise: c }), + c + ) + }, + _createGeometry: function (e) { + var t = new THREE.BufferGeometry() + e.index && t.setIndex(new THREE.BufferAttribute(e.index.array, 1)) + for (var n = 0; n < e.attributes.length; n++) { + var r = e.attributes[n], + i = r.name, + o = r.array, + a = r.itemSize + t.setAttribute(i, new THREE.BufferAttribute(o, a)) + } + return t + }, + _loadLibrary: function (e, t) { + var n = new THREE.FileLoader(this.manager) + return ( + n.setPath(this.decoderPath), + n.setResponseType(t), + n.setWithCredentials(this.withCredentials), + new Promise((t, r) => { + n.load(e, t, void 0, r) + }) + ) + }, + preload: function () { + return this._initDecoder(), this + }, + _initDecoder: function () { + if (this.decoderPending) return this.decoderPending + var e = 'object' !== typeof WebAssembly || 'js' === this.decoderConfig.type, + t = [] + return ( + e + ? t.push(this._loadLibrary('draco_decoder.js', 'text')) + : (t.push(this._loadLibrary('draco_wasm_wrapper.js', 'text')), + t.push(this._loadLibrary('draco_decoder.wasm', 'arraybuffer'))), + (this.decoderPending = Promise.all(t).then((t) => { + var n = t[0] + e || (this.decoderConfig.wasmBinary = t[1]) + var r = THREE.DRACOLoader.DRACOWorker.toString(), + i = [ + '/* draco decoder */', + n, + '', + '/* worker */', + r.substring(r.indexOf('{') + 1, r.lastIndexOf('}')), + ].join('\n') + this.workerSourceURL = URL.createObjectURL(new Blob([i])) + })), + this.decoderPending + ) + }, + _getWorker: function (e, t) { + return this._initDecoder().then(() => { + var n + return ( + this.workerPool.length < this.workerLimit + ? (((n = new Worker(this.workerSourceURL))._callbacks = {}), + (n._taskCosts = {}), + (n._taskLoad = 0), + n.postMessage({ type: 'init', decoderConfig: this.decoderConfig }), + (n.onmessage = function (e) { + var t = e.data + switch (t.type) { + case 'decode': + n._callbacks[t.id].resolve(t) + break + case 'error': + n._callbacks[t.id].reject(t) + break + default: + console.error( + 'THREE.DRACOLoader: Unexpected message, "' + t.type + '"', + ) + } + }), + this.workerPool.push(n)) + : this.workerPool.sort(function (e, t) { + return e._taskLoad > t._taskLoad ? -1 : 1 + }), + ((n = this.workerPool[this.workerPool.length - 1])._taskCosts[e] = t), + (n._taskLoad += t), + n + ) + }) + }, + _releaseTask: function (e, t) { + ;(e._taskLoad -= e._taskCosts[t]), + delete e._callbacks[t], + delete e._taskCosts[t] + }, + debug: function () { + console.log( + 'Task load: ', + this.workerPool.map((e) => e._taskLoad), + ) + }, + dispose: function () { + for (var e = 0; e < this.workerPool.length; ++e) + this.workerPool[e].terminate() + return (this.workerPool.length = 0), this + }, + }, + )), + (THREE.DRACOLoader.DRACOWorker = function () { + var e, t + function n(e, t, n, o) { + var a, + s, + l = o.attributeIDs, + c = o.attributeTypes, + u = t.GetEncodedGeometryType(n) + if (u === e.TRIANGULAR_MESH) + (a = new e.Mesh()), (s = t.DecodeBufferToMesh(n, a)) + else { + if (u !== e.POINT_CLOUD) + throw new Error('THREE.DRACOLoader: Unexpected geometry type.') + ;(a = new e.PointCloud()), (s = t.DecodeBufferToPointCloud(n, a)) + } + if (!s.ok() || 0 === a.ptr) + throw new Error('THREE.DRACOLoader: Decoding failed: ' + s.error_msg()) + var h = { index: null, attributes: [] } + for (var d in l) { + var p, + f, + m = self[c[d]] + if (o.useUniqueIDs) (f = l[d]), (p = t.GetAttributeByUniqueId(a, f)) + else { + if (-1 === (f = t.GetAttributeId(a, e[l[d]]))) continue + p = t.GetAttribute(a, f) + } + h.attributes.push(i(e, t, a, d, m, p)) + } + return u === e.TRIANGULAR_MESH && (h.index = r(e, t, a)), e.destroy(a), h + } + function r(e, t, n) { + var r = 3 * n.num_faces(), + i = 4 * r, + o = e._malloc(i) + t.GetTrianglesUInt32Array(n, i, o) + var a = new Uint32Array(e.HEAPF32.buffer, o, r).slice() + return e._free(o), { array: a, itemSize: 1 } + } + function i(e, t, n, r, i, a) { + var s = a.num_components(), + l = n.num_points() * s, + c = l * i.BYTES_PER_ELEMENT, + u = o(e, i), + h = e._malloc(c) + t.GetAttributeDataArrayForAllPoints(n, a, u, c, h) + var d = new i(e.HEAPF32.buffer, h, l).slice() + return e._free(h), { name: r, array: d, itemSize: s } + } + function o(e, t) { + switch (t) { + case Float32Array: + return e.DT_FLOAT32 + case Int8Array: + return e.DT_INT8 + case Int16Array: + return e.DT_INT16 + case Int32Array: + return e.DT_INT32 + case Uint8Array: + return e.DT_UINT8 + case Uint16Array: + return e.DT_UINT16 + case Uint32Array: + return e.DT_UINT32 + } + } + onmessage = function (r) { + var i = r.data + switch (i.type) { + case 'init': + ;(e = i.decoderConfig), + (t = new Promise(function (t) { + ;(e.onModuleLoaded = function (e) { + t({ draco: e }) + }), + DracoDecoderModule(e) + })) + break + case 'decode': + var o = i.buffer, + a = i.taskConfig + t.then((e) => { + var t = e.draco, + r = new t.Decoder(), + s = new t.DecoderBuffer() + s.Init(new Int8Array(o), o.byteLength) + try { + var l = n(t, r, s, a), + c = l.attributes.map((e) => e.array.buffer) + l.index && c.push(l.index.array.buffer), + self.postMessage({ type: 'decode', id: i.id, geometry: l }, c) + } catch (u) { + console.error(u), + self.postMessage({ type: 'error', id: i.id, error: u.message }) + } finally { + t.destroy(s), t.destroy(r) + } + }) + } + } + }), + (THREE.DRACOLoader.taskCache = new WeakMap()), + (THREE.DRACOLoader.setDecoderPath = function () { + console.warn( + 'THREE.DRACOLoader: The .setDecoderPath() method has been removed. Use instance methods.', + ) + }), + (THREE.DRACOLoader.setDecoderConfig = function () { + console.warn( + 'THREE.DRACOLoader: The .setDecoderConfig() method has been removed. Use instance methods.', + ) + }), + (THREE.DRACOLoader.releaseDecoderModule = function () { + console.warn( + 'THREE.DRACOLoader: The .releaseDecoderModule() method has been removed. Use instance methods.', + ) + }), + (THREE.DRACOLoader.getDecoderModule = function () { + console.warn( + 'THREE.DRACOLoader: The .getDecoderModule() method has been removed. Use instance methods.', + ) + }) + }, + {}, + ], + 59: [ + function (t, n, r) { + THREE.GLTFLoader = (function () { + function t(e) { + THREE.Loader.call(this, e), + (this.dracoLoader = null), + (this.ddsLoader = null), + (this.ktx2Loader = null), + (this.meshoptDecoder = null), + (this.pluginCallbacks = []), + this.register(function (e) { + return new s(e) + }), + this.register(function (e) { + return new c(e) + }), + this.register(function (e) { + return new u(e) + }), + this.register(function (e) { + return new l(e) + }), + this.register(function (e) { + return new o(e) + }), + this.register(function (e) { + return new h(e) + }) + } + function n() { + var e = {} + return { + get: function (t) { + return e[t] + }, + add: function (t, n) { + e[t] = n + }, + remove: function (t) { + delete e[t] + }, + removeAll: function () { + e = {} + }, + } + } + t.prototype = Object.assign(Object.create(THREE.Loader.prototype), { + constructor: t, + load: function (t, n, r, i) { + var o, + a = this + ;(o = + '' !== this.resourcePath + ? this.resourcePath + : '' !== this.path + ? this.path + : THREE.LoaderUtils.extractUrlBase(t)), + this.manager.itemStart(t) + var s = function (e) { + i ? i(e) : console.error(e), a.manager.itemError(t), a.manager.itemEnd(t) + }, + l = new THREE.FileLoader(this.manager) + l.setPath(this.path), + l.setResponseType('arraybuffer'), + l.setRequestHeader(this.requestHeader), + l.setWithCredentials(this.withCredentials), + l.load( + t, + function (r) { + try { + a.parse( + r, + o, + function (e) { + n(e), a.manager.itemEnd(t) + }, + s, + ) + } catch (e) { + s(e) + } + }, + r, + s, + ) + }, + setDRACOLoader: function (e) { + return (this.dracoLoader = e), this + }, + setDDSLoader: function (e) { + return (this.ddsLoader = e), this + }, + setKTX2Loader: function (e) { + return (this.ktx2Loader = e), this + }, + setMeshoptDecoder: function (e) { + return (this.meshoptDecoder = e), this + }, + register: function (e) { + return ( + -1 === this.pluginCallbacks.indexOf(e) && this.pluginCallbacks.push(e), this + ) + }, + unregister: function (e) { + return ( + -1 !== this.pluginCallbacks.indexOf(e) && + this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e), 1), + this + ) + }, + parse: function (e, t, n, o) { + var s, + l = {}, + c = {} + if ('string' === typeof e) s = e + else if (THREE.LoaderUtils.decodeText(new Uint8Array(e, 0, 4)) === d) { + try { + l[r.KHR_BINARY_GLTF] = new m(e) + } catch (x) { + return void (o && o(x)) + } + s = l[r.KHR_BINARY_GLTF].content + } else s = THREE.LoaderUtils.decodeText(new Uint8Array(e)) + var u = JSON.parse(s) + if (void 0 === u.asset || u.asset.version[0] < 2) + o && + o( + new Error( + 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.', + ), + ) + else { + var h = new U(u, { + path: t || this.resourcePath || '', + crossOrigin: this.crossOrigin, + manager: this.manager, + ktx2Loader: this.ktx2Loader, + meshoptDecoder: this.meshoptDecoder, + }) + h.fileLoader.setRequestHeader(this.requestHeader) + for (var p = 0; p < this.pluginCallbacks.length; p++) { + var f = this.pluginCallbacks[p](h) + ;(c[f.name] = f), (l[f.name] = !0) + } + if (u.extensionsUsed) + for (p = 0; p < u.extensionsUsed.length; ++p) { + var y = u.extensionsUsed[p], + w = u.extensionsRequired || [] + switch (y) { + case r.KHR_MATERIALS_UNLIT: + l[y] = new a() + break + case r.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: + l[y] = new b() + break + case r.KHR_DRACO_MESH_COMPRESSION: + l[y] = new v(u, this.dracoLoader) + break + case r.MSFT_TEXTURE_DDS: + l[y] = new i(this.ddsLoader) + break + case r.KHR_TEXTURE_TRANSFORM: + l[y] = new g() + break + case r.KHR_MESH_QUANTIZATION: + l[y] = new A() + break + default: + w.indexOf(y) >= 0 && + void 0 === c[y] && + console.warn('THREE.GLTFLoader: Unknown extension "' + y + '".') + } + } + h.setExtensions(l), h.setPlugins(c), h.parse(n, o) + } + }, + }) + var r = { + KHR_BINARY_GLTF: 'KHR_binary_glTF', + KHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression', + KHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual', + KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat', + KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness', + KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission', + KHR_MATERIALS_UNLIT: 'KHR_materials_unlit', + KHR_TEXTURE_BASISU: 'KHR_texture_basisu', + KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform', + KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization', + EXT_TEXTURE_WEBP: 'EXT_texture_webp', + EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression', + MSFT_TEXTURE_DDS: 'MSFT_texture_dds', + } + function i(e) { + if (!e) + throw new Error( + 'THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader', + ) + ;(this.name = r.MSFT_TEXTURE_DDS), (this.ddsLoader = e) + } + function o(e) { + ;(this.parser = e), + (this.name = r.KHR_LIGHTS_PUNCTUAL), + (this.cache = { refs: {}, uses: {} }) + } + function a() { + this.name = r.KHR_MATERIALS_UNLIT + } + function s(e) { + ;(this.parser = e), (this.name = r.KHR_MATERIALS_CLEARCOAT) + } + function l(e) { + ;(this.parser = e), (this.name = r.KHR_MATERIALS_TRANSMISSION) + } + function c(e) { + ;(this.parser = e), (this.name = r.KHR_TEXTURE_BASISU) + } + function u(e) { + ;(this.parser = e), (this.name = r.EXT_TEXTURE_WEBP), (this.isSupported = null) + } + function h(e) { + ;(this.name = r.EXT_MESHOPT_COMPRESSION), (this.parser = e) + } + ;(o.prototype._markDefs = function () { + for ( + var e = this.parser, t = this.parser.json.nodes || [], n = 0, r = t.length; + n < r; + n++ + ) { + var i = t[n] + i.extensions && + i.extensions[this.name] && + void 0 !== i.extensions[this.name].light && + e._addNodeRef(this.cache, i.extensions[this.name].light) + } + }), + (o.prototype._loadLight = function (e) { + var t = this.parser, + n = 'light:' + e, + r = t.cache.get(n) + if (r) return r + var i, + o = t.json, + a = (((o.extensions && o.extensions[this.name]) || {}).lights || [])[e], + s = new THREE.Color(16777215) + void 0 !== a.color && s.fromArray(a.color) + var l = void 0 !== a.range ? a.range : 0 + switch (a.type) { + case 'directional': + ;(i = new THREE.DirectionalLight(s)).target.position.set(0, 0, -1), + i.add(i.target) + break + case 'point': + ;(i = new THREE.PointLight(s)).distance = l + break + case 'spot': + ;((i = new THREE.SpotLight(s)).distance = l), + (a.spot = a.spot || {}), + (a.spot.innerConeAngle = + void 0 !== a.spot.innerConeAngle ? a.spot.innerConeAngle : 0), + (a.spot.outerConeAngle = + void 0 !== a.spot.outerConeAngle + ? a.spot.outerConeAngle + : Math.PI / 4), + (i.angle = a.spot.outerConeAngle), + (i.penumbra = 1 - a.spot.innerConeAngle / a.spot.outerConeAngle), + i.target.position.set(0, 0, -1), + i.add(i.target) + break + default: + throw new Error('THREE.GLTFLoader: Unexpected light type: ' + a.type) + } + return ( + i.position.set(0, 0, 0), + (i.decay = 2), + void 0 !== a.intensity && (i.intensity = a.intensity), + (i.name = t.createUniqueName(a.name || 'light_' + e)), + (r = Promise.resolve(i)), + t.cache.add(n, r), + r + ) + }), + (o.prototype.createNodeAttachment = function (e) { + var t = this, + n = this.parser, + r = n.json.nodes[e], + i = ((r.extensions && r.extensions[this.name]) || {}).light + return void 0 === i + ? null + : this._loadLight(i).then(function (e) { + return n._getNodeRef(t.cache, i, e) + }) + }), + (a.prototype.getMaterialType = function () { + return THREE.MeshBasicMaterial + }), + (a.prototype.extendParams = function (e, t, n) { + var r = [] + ;(e.color = new THREE.Color(1, 1, 1)), (e.opacity = 1) + var i = t.pbrMetallicRoughness + if (i) { + if (Array.isArray(i.baseColorFactor)) { + var o = i.baseColorFactor + e.color.fromArray(o), (e.opacity = o[3]) + } + void 0 !== i.baseColorTexture && + r.push(n.assignTexture(e, 'map', i.baseColorTexture)) + } + return Promise.all(r) + }), + (s.prototype.getMaterialType = function (e) { + var t = this.parser.json.materials[e] + return t.extensions && t.extensions[this.name] + ? THREE.MeshPhysicalMaterial + : null + }), + (s.prototype.extendMaterialParams = function (e, t) { + var n = this.parser, + r = n.json.materials[e] + if (!r.extensions || !r.extensions[this.name]) return Promise.resolve() + var i = [], + o = r.extensions[this.name] + if ( + (void 0 !== o.clearcoatFactor && (t.clearcoat = o.clearcoatFactor), + void 0 !== o.clearcoatTexture && + i.push(n.assignTexture(t, 'clearcoatMap', o.clearcoatTexture)), + void 0 !== o.clearcoatRoughnessFactor && + (t.clearcoatRoughness = o.clearcoatRoughnessFactor), + void 0 !== o.clearcoatRoughnessTexture && + i.push( + n.assignTexture( + t, + 'clearcoatRoughnessMap', + o.clearcoatRoughnessTexture, + ), + ), + void 0 !== o.clearcoatNormalTexture && + (i.push( + n.assignTexture(t, 'clearcoatNormalMap', o.clearcoatNormalTexture), + ), + void 0 !== o.clearcoatNormalTexture.scale)) + ) { + var a = o.clearcoatNormalTexture.scale + t.clearcoatNormalScale = new THREE.Vector2(a, -a) + } + return Promise.all(i) + }), + (l.prototype.getMaterialType = function (e) { + var t = this.parser.json.materials[e] + return t.extensions && t.extensions[this.name] + ? THREE.MeshPhysicalMaterial + : null + }), + (l.prototype.extendMaterialParams = function (e, t) { + var n = this.parser, + r = n.json.materials[e] + if (!r.extensions || !r.extensions[this.name]) return Promise.resolve() + var i = [], + o = r.extensions[this.name] + return ( + void 0 !== o.transmissionFactor && (t.transmission = o.transmissionFactor), + void 0 !== o.transmissionTexture && + i.push(n.assignTexture(t, 'transmissionMap', o.transmissionTexture)), + Promise.all(i) + ) + }), + (c.prototype.loadTexture = function (e) { + var t = this.parser, + n = t.json, + r = n.textures[e] + if (!r.extensions || !r.extensions[this.name]) return null + var i = r.extensions[this.name], + o = n.images[i.source], + a = t.options.ktx2Loader + if (!a) { + if (n.extensionsRequired && n.extensionsRequired.indexOf(this.name) >= 0) + throw new Error( + 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures', + ) + return null + } + return t.loadTextureImage(e, o, a) + }), + (u.prototype.loadTexture = function (e) { + var t = this.name, + n = this.parser, + r = n.json, + i = r.textures[e] + if (!i.extensions || !i.extensions[t]) return null + var o = i.extensions[t], + a = r.images[o.source], + s = a.uri ? n.options.manager.getHandler(a.uri) : n.textureLoader + return this.detectSupport().then(function (i) { + if (i) return n.loadTextureImage(e, a, s) + if (r.extensionsRequired && r.extensionsRequired.indexOf(t) >= 0) + throw new Error( + 'THREE.GLTFLoader: WebP required by asset but unsupported.', + ) + return n.loadTexture(e) + }) + }), + (u.prototype.detectSupport = function () { + return ( + this.isSupported || + (this.isSupported = new Promise(function (e) { + var t = new Image() + ;(t.src = + 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA'), + (t.onload = t.onerror = + function () { + e(1 === t.height) + }) + })), + this.isSupported + ) + }), + (h.prototype.loadBufferView = function (e) { + var t = this.parser.json, + n = t.bufferViews[e] + if (n.extensions && n.extensions[this.name]) { + var r = n.extensions[this.name], + i = this.parser.getDependency('buffer', r.buffer), + o = this.parser.options.meshoptDecoder + if (!o || !o.supported) { + if (t.extensionsRequired && t.extensionsRequired.indexOf(this.name) >= 0) + throw new Error( + 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files', + ) + return null + } + return Promise.all([i, o.ready]).then(function (e) { + var t = r.byteOffset || 0, + n = r.byteLength || 0, + i = r.count, + a = r.byteStride, + s = new ArrayBuffer(i * a), + l = new Uint8Array(e[0], t, n) + return o.decodeGltfBuffer(new Uint8Array(s), i, a, l, r.mode, r.filter), s + }) + } + return null + }) + var d = 'glTF', + p = 12, + f = { JSON: 1313821514, BIN: 5130562 } + function m(e) { + ;(this.name = r.KHR_BINARY_GLTF), (this.content = null), (this.body = null) + var t = new DataView(e, 0, p) + if ( + ((this.header = { + magic: THREE.LoaderUtils.decodeText(new Uint8Array(e.slice(0, 4))), + version: t.getUint32(4, !0), + length: t.getUint32(8, !0), + }), + this.header.magic !== d) + ) + throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.') + if (this.header.version < 2) + throw new Error('THREE.GLTFLoader: Legacy binary file detected.') + for (var n = this.header.length - p, i = new DataView(e, p), o = 0; o < n; ) { + var a = i.getUint32(o, !0) + o += 4 + var s = i.getUint32(o, !0) + if (((o += 4), s === f.JSON)) { + var l = new Uint8Array(e, p + o, a) + this.content = THREE.LoaderUtils.decodeText(l) + } else if (s === f.BIN) { + var c = p + o + this.body = e.slice(c, c + a) + } + o += a + } + if (null === this.content) + throw new Error('THREE.GLTFLoader: JSON content not found.') + } + function v(e, t) { + if (!t) throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.') + ;(this.name = r.KHR_DRACO_MESH_COMPRESSION), + (this.json = e), + (this.dracoLoader = t), + this.dracoLoader.preload() + } + function g() { + this.name = r.KHR_TEXTURE_TRANSFORM + } + function y(e) { + THREE.MeshStandardMaterial.call(this), + (this.isGLTFSpecularGlossinessMaterial = !0) + var t = [ + '#ifdef USE_SPECULARMAP', + '\tuniform sampler2D specularMap;', + '#endif', + ].join('\n'), + n = [ + '#ifdef USE_GLOSSINESSMAP', + '\tuniform sampler2D glossinessMap;', + '#endif', + ].join('\n'), + r = [ + 'vec3 specularFactor = specular;', + '#ifdef USE_SPECULARMAP', + '\tvec4 texelSpecular = texture2D( specularMap, vUv );', + '\ttexelSpecular = sRGBToLinear( texelSpecular );', + '\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', + '\tspecularFactor *= texelSpecular.rgb;', + '#endif', + ].join('\n'), + i = [ + 'float glossinessFactor = glossiness;', + '#ifdef USE_GLOSSINESSMAP', + '\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );', + '\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', + '\tglossinessFactor *= texelGlossiness.a;', + '#endif', + ].join('\n'), + o = [ + 'PhysicalMaterial material;', + 'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );', + 'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );', + 'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );', + 'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.', + 'material.specularRoughness += geometryRoughness;', + 'material.specularRoughness = min( material.specularRoughness, 1.0 );', + 'material.specularColor = specularFactor;', + ].join('\n'), + a = { + specular: { value: new THREE.Color().setHex(16777215) }, + glossiness: { value: 1 }, + specularMap: { value: null }, + glossinessMap: { value: null }, + } + ;(this._extraUniforms = a), + (this.onBeforeCompile = function (e) { + for (var s in a) e.uniforms[s] = a[s] + e.fragmentShader = e.fragmentShader + .replace('uniform float roughness;', 'uniform vec3 specular;') + .replace('uniform float metalness;', 'uniform float glossiness;') + .replace('#include <roughnessmap_pars_fragment>', t) + .replace('#include <metalnessmap_pars_fragment>', n) + .replace('#include <roughnessmap_fragment>', r) + .replace('#include <metalnessmap_fragment>', i) + .replace('#include <lights_physical_fragment>', o) + }), + Object.defineProperties(this, { + specular: { + get: function () { + return a.specular.value + }, + set: function (e) { + a.specular.value = e + }, + }, + specularMap: { + get: function () { + return a.specularMap.value + }, + set: function (e) { + ;(a.specularMap.value = e), + e + ? (this.defines.USE_SPECULARMAP = '') + : delete this.defines.USE_SPECULARMAP + }, + }, + glossiness: { + get: function () { + return a.glossiness.value + }, + set: function (e) { + a.glossiness.value = e + }, + }, + glossinessMap: { + get: function () { + return a.glossinessMap.value + }, + set: function (e) { + ;(a.glossinessMap.value = e), + e + ? ((this.defines.USE_GLOSSINESSMAP = ''), + (this.defines.USE_UV = '')) + : (delete this.defines.USE_GLOSSINESSMAP, + delete this.defines.USE_UV) + }, + }, + }), + delete this.metalness, + delete this.roughness, + delete this.metalnessMap, + delete this.roughnessMap, + this.setValues(e) + } + function b() { + return { + name: r.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS, + specularGlossinessParams: [ + 'color', + 'map', + 'lightMap', + 'lightMapIntensity', + 'aoMap', + 'aoMapIntensity', + 'emissive', + 'emissiveIntensity', + 'emissiveMap', + 'bumpMap', + 'bumpScale', + 'normalMap', + 'normalMapType', + 'displacementMap', + 'displacementScale', + 'displacementBias', + 'specularMap', + 'specular', + 'glossinessMap', + 'glossiness', + 'alphaMap', + 'envMap', + 'envMapIntensity', + 'refractionRatio', + ], + getMaterialType: function () { + return y + }, + extendParams: function (e, t, n) { + var r = t.extensions[this.name] + ;(e.color = new THREE.Color(1, 1, 1)), (e.opacity = 1) + var i = [] + if (Array.isArray(r.diffuseFactor)) { + var o = r.diffuseFactor + e.color.fromArray(o), (e.opacity = o[3]) + } + if ( + (void 0 !== r.diffuseTexture && + i.push(n.assignTexture(e, 'map', r.diffuseTexture)), + (e.emissive = new THREE.Color(0, 0, 0)), + (e.glossiness = void 0 !== r.glossinessFactor ? r.glossinessFactor : 1), + (e.specular = new THREE.Color(1, 1, 1)), + Array.isArray(r.specularFactor) && e.specular.fromArray(r.specularFactor), + void 0 !== r.specularGlossinessTexture) + ) { + var a = r.specularGlossinessTexture + i.push(n.assignTexture(e, 'glossinessMap', a)), + i.push(n.assignTexture(e, 'specularMap', a)) + } + return Promise.all(i) + }, + createMaterial: function (e) { + var t = new y(e) + return ( + (t.fog = !0), + (t.color = e.color), + (t.map = void 0 === e.map ? null : e.map), + (t.lightMap = null), + (t.lightMapIntensity = 1), + (t.aoMap = void 0 === e.aoMap ? null : e.aoMap), + (t.aoMapIntensity = 1), + (t.emissive = e.emissive), + (t.emissiveIntensity = 1), + (t.emissiveMap = void 0 === e.emissiveMap ? null : e.emissiveMap), + (t.bumpMap = void 0 === e.bumpMap ? null : e.bumpMap), + (t.bumpScale = 1), + (t.normalMap = void 0 === e.normalMap ? null : e.normalMap), + (t.normalMapType = THREE.TangentSpaceNormalMap), + e.normalScale && (t.normalScale = e.normalScale), + (t.displacementMap = null), + (t.displacementScale = 1), + (t.displacementBias = 0), + (t.specularMap = void 0 === e.specularMap ? null : e.specularMap), + (t.specular = e.specular), + (t.glossinessMap = void 0 === e.glossinessMap ? null : e.glossinessMap), + (t.glossiness = e.glossiness), + (t.alphaMap = null), + (t.envMap = void 0 === e.envMap ? null : e.envMap), + (t.envMapIntensity = 1), + (t.refractionRatio = 0.98), + t + ) + }, + } + } + function A() { + this.name = r.KHR_MESH_QUANTIZATION + } + function w(e, t, n, r) { + THREE.Interpolant.call(this, e, t, n, r) + } + ;(v.prototype.decodePrimitive = function (e, t) { + var n = this.json, + r = this.dracoLoader, + i = e.extensions[this.name].bufferView, + o = e.extensions[this.name].attributes, + a = {}, + s = {}, + l = {} + for (var c in o) { + var u = S[c] || c.toLowerCase() + a[u] = o[c] + } + for (c in e.attributes) + if (((u = S[c] || c.toLowerCase()), void 0 !== o[c])) { + var h = n.accessors[e.attributes[c]], + d = E[h.componentType] + ;(l[u] = d), (s[u] = !0 === h.normalized) + } + return t.getDependency('bufferView', i).then(function (e) { + return new Promise(function (t) { + r.decodeDracoFile( + e, + function (e) { + for (var n in e.attributes) { + var r = e.attributes[n], + i = s[n] + void 0 !== i && (r.normalized = i) + } + t(e) + }, + a, + l, + ) + }) + }) + }), + (g.prototype.extendTexture = function (e, t) { + return ( + (e = e.clone()), + void 0 !== t.offset && e.offset.fromArray(t.offset), + void 0 !== t.rotation && (e.rotation = t.rotation), + void 0 !== t.scale && e.repeat.fromArray(t.scale), + void 0 !== t.texCoord && + console.warn( + 'THREE.GLTFLoader: Custom UV sets in "' + + this.name + + '" extension not yet supported.', + ), + (e.needsUpdate = !0), + e + ) + }), + (y.prototype = Object.create(THREE.MeshStandardMaterial.prototype)), + (y.prototype.constructor = y), + (y.prototype.copy = function (e) { + return ( + THREE.MeshStandardMaterial.prototype.copy.call(this, e), + (this.specularMap = e.specularMap), + this.specular.copy(e.specular), + (this.glossinessMap = e.glossinessMap), + (this.glossiness = e.glossiness), + delete this.metalness, + delete this.roughness, + delete this.metalnessMap, + delete this.roughnessMap, + this + ) + }), + (w.prototype = Object.create(THREE.Interpolant.prototype)), + (w.prototype.constructor = w), + (w.prototype.copySampleValue_ = function (e) { + for ( + var t = this.resultBuffer, + n = this.sampleValues, + r = this.valueSize, + i = e * r * 3 + r, + o = 0; + o !== r; + o++ + ) + t[o] = n[i + o] + return t + }), + (w.prototype.beforeStart_ = w.prototype.copySampleValue_), + (w.prototype.afterEnd_ = w.prototype.copySampleValue_), + (w.prototype.interpolate_ = function (e, t, n, r) { + for ( + var i = this.resultBuffer, + o = this.sampleValues, + a = this.valueSize, + s = 2 * a, + l = 3 * a, + c = r - t, + u = (n - t) / c, + h = u * u, + d = h * u, + p = e * l, + f = p - l, + m = -2 * d + 3 * h, + v = d - h, + g = 1 - m, + y = v - h + u, + b = 0; + b !== a; + b++ + ) { + var A = o[f + b + a], + w = o[f + b + s] * c, + x = o[p + b + a], + E = o[p + b] * c + i[b] = g * A + y * w + m * x + v * E + } + return i + }) + var x = { + FLOAT: 5126, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + LINEAR: 9729, + REPEAT: 10497, + SAMPLER_2D: 35678, + POINTS: 0, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + TRIANGLES: 4, + TRIANGLE_STRIP: 5, + TRIANGLE_FAN: 6, + UNSIGNED_BYTE: 5121, + UNSIGNED_SHORT: 5123, + }, + E = { + 5120: Int8Array, + 5121: Uint8Array, + 5122: Int16Array, + 5123: Uint16Array, + 5125: Uint32Array, + 5126: Float32Array, + }, + M = { + 9728: THREE.NearestFilter, + 9729: THREE.LinearFilter, + 9984: THREE.NearestMipmapNearestFilter, + 9985: THREE.LinearMipmapNearestFilter, + 9986: THREE.NearestMipmapLinearFilter, + 9987: THREE.LinearMipmapLinearFilter, + }, + _ = { + 33071: THREE.ClampToEdgeWrapping, + 33648: THREE.MirroredRepeatWrapping, + 10497: THREE.RepeatWrapping, + }, + T = { SCALAR: 1, VEC2: 2, VEC3: 3, VEC4: 4, MAT2: 4, MAT3: 9, MAT4: 16 }, + S = { + POSITION: 'position', + NORMAL: 'normal', + TANGENT: 'tangent', + TEXCOORD_0: 'uv', + TEXCOORD_1: 'uv2', + COLOR_0: 'color', + WEIGHTS_0: 'skinWeight', + JOINTS_0: 'skinIndex', + }, + C = { + scale: 'scale', + translation: 'position', + rotation: 'quaternion', + weights: 'morphTargetInfluences', + }, + L = { + CUBICSPLINE: void 0, + LINEAR: THREE.InterpolateLinear, + STEP: THREE.InterpolateDiscrete, + }, + R = { OPAQUE: 'OPAQUE', MASK: 'MASK', BLEND: 'BLEND' } + function P(e, t) { + return 'string' !== typeof e || '' === e + ? '' + : (/^https?:\/\//i.test(t) && + /^\//.test(e) && + (t = t.replace(/(^https?:\/\/[^\/]+).*/i, '$1')), + /^(https?:)?\/\//i.test(e) || + /^data:.*,.*$/i.test(e) || + /^blob:.*$/i.test(e) + ? e + : t + e) + } + function D(e) { + return ( + void 0 === e.DefaultMaterial && + (e.DefaultMaterial = new THREE.MeshStandardMaterial({ + color: 16777215, + emissive: 0, + metalness: 1, + roughness: 1, + transparent: !1, + depthTest: !0, + side: THREE.FrontSide, + })), + e.DefaultMaterial + ) + } + function O(e, t, n) { + for (var r in n.extensions) + void 0 === e[r] && + ((t.userData.gltfExtensions = t.userData.gltfExtensions || {}), + (t.userData.gltfExtensions[r] = n.extensions[r])) + } + function I(e, t) { + void 0 !== t.extras && + ('object' === typeof t.extras + ? Object.assign(e.userData, t.extras) + : console.warn( + 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + t.extras, + )) + } + function B(e, t, n) { + for ( + var r = !1, i = !1, o = 0, a = t.length; + o < a && + (void 0 !== (c = t[o]).POSITION && (r = !0), + void 0 !== c.NORMAL && (i = !0), + !r || !i); + o++ + ); + if (!r && !i) return Promise.resolve(e) + var s = [], + l = [] + for (o = 0, a = t.length; o < a; o++) { + var c = t[o] + if (r) { + var u = + void 0 !== c.POSITION + ? n.getDependency('accessor', c.POSITION) + : e.attributes.position + s.push(u) + } + i && + ((u = + void 0 !== c.NORMAL + ? n.getDependency('accessor', c.NORMAL) + : e.attributes.normal), + l.push(u)) + } + return Promise.all([Promise.all(s), Promise.all(l)]).then(function (t) { + var n = t[0], + o = t[1] + return ( + r && (e.morphAttributes.position = n), + i && (e.morphAttributes.normal = o), + (e.morphTargetsRelative = !0), + e + ) + }) + } + function F(e, t) { + if ((e.updateMorphTargets(), void 0 !== t.weights)) + for (var n = 0, r = t.weights.length; n < r; n++) + e.morphTargetInfluences[n] = t.weights[n] + if (t.extras && Array.isArray(t.extras.targetNames)) { + var i = t.extras.targetNames + if (e.morphTargetInfluences.length === i.length) + for (e.morphTargetDictionary = {}, n = 0, r = i.length; n < r; n++) + e.morphTargetDictionary[i[n]] = n + else + console.warn( + 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.', + ) + } + } + function k(e) { + var t = e.extensions && e.extensions[r.KHR_DRACO_MESH_COMPRESSION] + return t + ? 'draco:' + t.bufferView + ':' + t.indices + ':' + N(t.attributes) + : e.indices + ':' + N(e.attributes) + ':' + e.mode + } + function N(e) { + for (var t = '', n = Object.keys(e).sort(), r = 0, i = n.length; r < i; r++) + t += n[r] + ':' + e[n[r]] + ';' + return t + } + function U(e, t) { + ;(this.json = e || {}), + (this.extensions = {}), + (this.plugins = {}), + (this.options = t || {}), + (this.cache = new n()), + (this.associations = new Map()), + (this.primitiveCache = {}), + (this.meshCache = { refs: {}, uses: {} }), + (this.cameraCache = { refs: {}, uses: {} }), + (this.lightCache = { refs: {}, uses: {} }), + (this.nodeNamesUsed = {}), + 'undefined' !== typeof createImageBitmap && + !1 === /Firefox/.test(navigator.userAgent) + ? (this.textureLoader = new THREE.ImageBitmapLoader(this.options.manager)) + : (this.textureLoader = new THREE.TextureLoader(this.options.manager)), + this.textureLoader.setCrossOrigin(this.options.crossOrigin), + (this.fileLoader = new THREE.FileLoader(this.options.manager)), + this.fileLoader.setResponseType('arraybuffer'), + 'use-credentials' === this.options.crossOrigin && + this.fileLoader.setWithCredentials(!0) + } + function H(e, t, n) { + var r = t.attributes, + i = new THREE.Box3() + if (void 0 !== r.POSITION) { + var o = (d = n.json.accessors[r.POSITION]).min, + a = d.max + if (void 0 !== o && void 0 !== a) { + i.set( + new THREE.Vector3(o[0], o[1], o[2]), + new THREE.Vector3(a[0], a[1], a[2]), + ) + var s = t.targets + if (void 0 !== s) { + for ( + var l = new THREE.Vector3(), + c = new THREE.Vector3(), + u = 0, + h = s.length; + u < h; + u++ + ) { + var d, + p = s[u] + if (void 0 !== p.POSITION) + (o = (d = n.json.accessors[p.POSITION]).min), + (a = d.max), + void 0 !== o && void 0 !== a + ? (c.setX(Math.max(Math.abs(o[0]), Math.abs(a[0]))), + c.setY(Math.max(Math.abs(o[1]), Math.abs(a[1]))), + c.setZ(Math.max(Math.abs(o[2]), Math.abs(a[2]))), + l.max(c)) + : console.warn( + 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.', + ) + } + i.expandByVector(l) + } + e.boundingBox = i + var f = new THREE.Sphere() + i.getCenter(f.center), + (f.radius = i.min.distanceTo(i.max) / 2), + (e.boundingSphere = f) + } else + console.warn( + 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.', + ) + } + } + function G(e, t, n) { + var r = t.attributes, + i = [] + function o(t, r) { + return n.getDependency('accessor', t).then(function (t) { + e.setAttribute(r, t) + }) + } + for (var a in r) { + var s = S[a] || a.toLowerCase() + s in e.attributes || i.push(o(r[a], s)) + } + if (void 0 !== t.indices && !e.index) { + var l = n.getDependency('accessor', t.indices).then(function (t) { + e.setIndex(t) + }) + i.push(l) + } + return ( + I(e, t), + H(e, t, n), + Promise.all(i).then(function () { + return void 0 !== t.targets ? B(e, t.targets, n) : e + }) + ) + } + function z(e, t) { + var n = e.getIndex() + if (null === n) { + var r = [], + i = e.getAttribute('position') + if (void 0 === i) + return ( + console.error( + 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.', + ), + e + ) + for (var o = 0; o < i.count; o++) r.push(o) + e.setIndex(r), (n = e.getIndex()) + } + var a = n.count - 2, + s = [] + if (t === THREE.TriangleFanDrawMode) + for (o = 1; o <= a; o++) + s.push(n.getX(0)), s.push(n.getX(o)), s.push(n.getX(o + 1)) + else + for (o = 0; o < a; o++) + o % 2 === 0 + ? (s.push(n.getX(o)), s.push(n.getX(o + 1)), s.push(n.getX(o + 2))) + : (s.push(n.getX(o + 2)), s.push(n.getX(o + 1)), s.push(n.getX(o))) + s.length / 3 !== a && + console.error( + 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.', + ) + var l = e.clone() + return l.setIndex(s), l + } + return ( + (U.prototype.setExtensions = function (e) { + this.extensions = e + }), + (U.prototype.setPlugins = function (e) { + this.plugins = e + }), + (U.prototype.parse = function (e, t) { + var n = this, + r = this.json, + i = this.extensions + this.cache.removeAll(), + this._invokeAll(function (e) { + return e._markDefs && e._markDefs() + }), + Promise.all([ + this.getDependencies('scene'), + this.getDependencies('animation'), + this.getDependencies('camera'), + ]) + .then(function (t) { + var o = { + scene: t[0][r.scene || 0], + scenes: t[0], + animations: t[1], + cameras: t[2], + asset: r.asset, + parser: n, + userData: {}, + } + O(i, o, r), I(o, r), e(o) + }) + .catch(t) + }), + (U.prototype._markDefs = function () { + for ( + var e = this.json.nodes || [], + t = this.json.skins || [], + n = this.json.meshes || [], + r = 0, + i = t.length; + r < i; + r++ + ) + for (var o = t[r].joints, a = 0, s = o.length; a < s; a++) + e[o[a]].isBone = !0 + for (var l = 0, c = e.length; l < c; l++) { + var u = e[l] + void 0 !== u.mesh && + (this._addNodeRef(this.meshCache, u.mesh), + void 0 !== u.skin && (n[u.mesh].isSkinnedMesh = !0)), + void 0 !== u.camera && this._addNodeRef(this.cameraCache, u.camera) + } + }), + (U.prototype._addNodeRef = function (e, t) { + void 0 !== t && + (void 0 === e.refs[t] && (e.refs[t] = e.uses[t] = 0), e.refs[t]++) + }), + (U.prototype._getNodeRef = function (e, t, n) { + if (e.refs[t] <= 1) return n + var r = n.clone() + return (r.name += '_instance_' + e.uses[t]++), r + }), + (U.prototype._invokeOne = function (e) { + var t = Object.values(this.plugins) + t.push(this) + for (var n = 0; n < t.length; n++) { + var r = e(t[n]) + if (r) return r + } + }), + (U.prototype._invokeAll = function (e) { + var t = Object.values(this.plugins) + t.unshift(this) + for (var n = [], r = 0; r < t.length; r++) { + var i = e(t[r]) + i && n.push(i) + } + return n + }), + (U.prototype.getDependency = function (e, t) { + var n = e + ':' + t, + r = this.cache.get(n) + if (!r) { + switch (e) { + case 'scene': + r = this.loadScene(t) + break + case 'node': + r = this.loadNode(t) + break + case 'mesh': + r = this._invokeOne(function (e) { + return e.loadMesh && e.loadMesh(t) + }) + break + case 'accessor': + r = this.loadAccessor(t) + break + case 'bufferView': + r = this._invokeOne(function (e) { + return e.loadBufferView && e.loadBufferView(t) + }) + break + case 'buffer': + r = this.loadBuffer(t) + break + case 'material': + r = this._invokeOne(function (e) { + return e.loadMaterial && e.loadMaterial(t) + }) + break + case 'texture': + r = this._invokeOne(function (e) { + return e.loadTexture && e.loadTexture(t) + }) + break + case 'skin': + r = this.loadSkin(t) + break + case 'animation': + r = this.loadAnimation(t) + break + case 'camera': + r = this.loadCamera(t) + break + default: + throw new Error('Unknown type: ' + e) + } + this.cache.add(n, r) + } + return r + }), + (U.prototype.getDependencies = function (e) { + var t = this.cache.get(e) + if (!t) { + var n = this, + r = this.json[e + ('mesh' === e ? 'es' : 's')] || [] + ;(t = Promise.all( + r.map(function (t, r) { + return n.getDependency(e, r) + }), + )), + this.cache.add(e, t) + } + return t + }), + (U.prototype.loadBuffer = function (e) { + var t = this.json.buffers[e], + n = this.fileLoader + if (t.type && 'arraybuffer' !== t.type) + throw new Error( + 'THREE.GLTFLoader: ' + t.type + ' buffer type is not supported.', + ) + if (void 0 === t.uri && 0 === e) + return Promise.resolve(this.extensions[r.KHR_BINARY_GLTF].body) + var i = this.options + return new Promise(function (e, r) { + n.load(P(t.uri, i.path), e, void 0, function () { + r(new Error('THREE.GLTFLoader: Failed to load buffer "' + t.uri + '".')) + }) + }) + }), + (U.prototype.loadBufferView = function (e) { + var t = this.json.bufferViews[e] + return this.getDependency('buffer', t.buffer).then(function (e) { + var n = t.byteLength || 0, + r = t.byteOffset || 0 + return e.slice(r, r + n) + }) + }), + (U.prototype.loadAccessor = function (e) { + var t = this, + n = this.json, + r = this.json.accessors[e] + if (void 0 === r.bufferView && void 0 === r.sparse) + return Promise.resolve(null) + var i = [] + return ( + void 0 !== r.bufferView + ? i.push(this.getDependency('bufferView', r.bufferView)) + : i.push(null), + void 0 !== r.sparse && + (i.push(this.getDependency('bufferView', r.sparse.indices.bufferView)), + i.push(this.getDependency('bufferView', r.sparse.values.bufferView))), + Promise.all(i).then(function (e) { + var i, + o, + a = e[0], + s = T[r.type], + l = E[r.componentType], + c = l.BYTES_PER_ELEMENT, + u = c * s, + h = r.byteOffset || 0, + d = + void 0 !== r.bufferView + ? n.bufferViews[r.bufferView].byteStride + : void 0, + p = !0 === r.normalized + if (d && d !== u) { + var f = Math.floor(h / d), + m = + 'InterleavedBuffer:' + + r.bufferView + + ':' + + r.componentType + + ':' + + f + + ':' + + r.count, + v = t.cache.get(m) + v || + ((i = new l(a, f * d, (r.count * d) / c)), + (v = new THREE.InterleavedBuffer(i, d / c)), + t.cache.add(m, v)), + (o = new THREE.InterleavedBufferAttribute(v, s, (h % d) / c, p)) + } else (i = null === a ? new l(r.count * s) : new l(a, h, r.count * s)), (o = new THREE.BufferAttribute(i, s, p)) + if (void 0 !== r.sparse) { + var g = T.SCALAR, + y = E[r.sparse.indices.componentType], + b = r.sparse.indices.byteOffset || 0, + A = r.sparse.values.byteOffset || 0, + w = new y(e[1], b, r.sparse.count * g), + x = new l(e[2], A, r.sparse.count * s) + null !== a && + (o = new THREE.BufferAttribute( + o.array.slice(), + o.itemSize, + o.normalized, + )) + for (var M = 0, _ = w.length; M < _; M++) { + var S = w[M] + if ( + (o.setX(S, x[M * s]), + s >= 2 && o.setY(S, x[M * s + 1]), + s >= 3 && o.setZ(S, x[M * s + 2]), + s >= 4 && o.setW(S, x[M * s + 3]), + s >= 5) + ) + throw new Error( + 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.', + ) + } + } + return o + }) + ) + }), + (U.prototype.loadTexture = function (e) { + var t, + n, + i = this, + o = this.json, + a = this.options, + s = o.textures[e], + l = s.extensions || {} + return ( + (t = l[r.MSFT_TEXTURE_DDS] + ? o.images[l[r.MSFT_TEXTURE_DDS].source] + : o.images[s.source]).uri && (n = a.manager.getHandler(t.uri)), + n || + (n = l[r.MSFT_TEXTURE_DDS] + ? i.extensions[r.MSFT_TEXTURE_DDS].ddsLoader + : this.textureLoader), + this.loadTextureImage(e, t, n) + ) + }), + (U.prototype.loadTextureImage = function (e, t, n) { + var r = this, + i = this.json, + o = this.options, + a = i.textures[e], + s = self.URL || self.webkitURL, + l = t.uri, + c = !1, + u = !0 + return ( + 'image/jpeg' === t.mimeType && (u = !1), + void 0 !== t.bufferView && + (l = r.getDependency('bufferView', t.bufferView).then(function (e) { + if ('image/png' === t.mimeType) { + var n = new DataView(e, 25, 1).getUint8(0, !1) + u = 6 === n || 4 === n || 3 === n + } + c = !0 + var r = new Blob([e], { type: t.mimeType }) + return (l = s.createObjectURL(r)) + })), + Promise.resolve(l) + .then(function (e) { + return new Promise(function (t, r) { + var i = t + !0 === n.isImageBitmapLoader && + (i = function (e) { + t(new THREE.CanvasTexture(e)) + }), + n.load(P(e, o.path), i, void 0, r) + }) + }) + .then(function (t) { + !0 === c && s.revokeObjectURL(l), + (t.flipY = !1), + a.name && (t.name = a.name), + u || (t.format = THREE.RGBFormat) + var n = (i.samplers || {})[a.sampler] || {} + return ( + (t.magFilter = M[n.magFilter] || THREE.LinearFilter), + (t.minFilter = M[n.minFilter] || THREE.LinearMipmapLinearFilter), + (t.wrapS = _[n.wrapS] || THREE.RepeatWrapping), + (t.wrapT = _[n.wrapT] || THREE.RepeatWrapping), + r.associations.set(t, { type: 'textures', index: e }), + t + ) + }) + ) + }), + (U.prototype.assignTexture = function (e, t, n) { + var i = this + return this.getDependency('texture', n.index).then(function (o) { + if ( + (void 0 === n.texCoord || + 0 == n.texCoord || + ('aoMap' === t && 1 == n.texCoord) || + console.warn( + 'THREE.GLTFLoader: Custom UV set ' + + n.texCoord + + ' for texture ' + + t + + ' not yet supported.', + ), + i.extensions[r.KHR_TEXTURE_TRANSFORM]) + ) { + var a = + void 0 !== n.extensions ? n.extensions[r.KHR_TEXTURE_TRANSFORM] : void 0 + if (a) { + var s = i.associations.get(o) + ;(o = i.extensions[r.KHR_TEXTURE_TRANSFORM].extendTexture(o, a)), + i.associations.set(o, s) + } + } + e[t] = o + }) + }), + (U.prototype.assignFinalMaterial = function (e) { + var t = e.geometry, + n = e.material, + r = void 0 !== t.attributes.tangent, + i = void 0 !== t.attributes.color, + o = void 0 === t.attributes.normal, + a = !0 === e.isSkinnedMesh, + s = Object.keys(t.morphAttributes).length > 0, + l = s && void 0 !== t.morphAttributes.normal + if (e.isPoints) { + var c = 'PointsMaterial:' + n.uuid, + u = this.cache.get(c) + u || + ((u = new THREE.PointsMaterial()), + THREE.Material.prototype.copy.call(u, n), + u.color.copy(n.color), + (u.map = n.map), + (u.sizeAttenuation = !1), + this.cache.add(c, u)), + (n = u) + } else if (e.isLine) { + c = 'LineBasicMaterial:' + n.uuid + var h = this.cache.get(c) + h || + ((h = new THREE.LineBasicMaterial()), + THREE.Material.prototype.copy.call(h, n), + h.color.copy(n.color), + this.cache.add(c, h)), + (n = h) + } + if (r || i || o || a || s) { + ;(c = 'ClonedMaterial:' + n.uuid + ':'), + n.isGLTFSpecularGlossinessMaterial && (c += 'specular-glossiness:'), + a && (c += 'skinning:'), + r && (c += 'vertex-tangents:'), + i && (c += 'vertex-colors:'), + o && (c += 'flat-shading:'), + s && (c += 'morph-targets:'), + l && (c += 'morph-normals:') + var d = this.cache.get(c) + d || + ((d = n.clone()), + a && (d.skinning = !0), + i && (d.vertexColors = !0), + o && (d.flatShading = !0), + s && (d.morphTargets = !0), + l && (d.morphNormals = !0), + r && + ((d.vertexTangents = !0), + n.normalScale && (n.normalScale.y *= -1), + n.clearcoatNormalScale && (n.clearcoatNormalScale.y *= -1)), + this.cache.add(c, d), + this.associations.set(d, this.associations.get(n))), + (n = d) + } + n.aoMap && + void 0 === t.attributes.uv2 && + void 0 !== t.attributes.uv && + t.setAttribute('uv2', t.attributes.uv), + (e.material = n) + }), + (U.prototype.getMaterialType = function () { + return THREE.MeshStandardMaterial + }), + (U.prototype.loadMaterial = function (e) { + var t, + n = this, + i = this.json, + o = this.extensions, + a = i.materials[e], + s = {}, + l = a.extensions || {}, + c = [] + if (l[r.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]) { + var u = o[r.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS] + ;(t = u.getMaterialType()), c.push(u.extendParams(s, a, n)) + } else if (l[r.KHR_MATERIALS_UNLIT]) { + var h = o[r.KHR_MATERIALS_UNLIT] + ;(t = h.getMaterialType()), c.push(h.extendParams(s, a, n)) + } else { + var d = a.pbrMetallicRoughness || {} + if ( + ((s.color = new THREE.Color(1, 1, 1)), + (s.opacity = 1), + Array.isArray(d.baseColorFactor)) + ) { + var p = d.baseColorFactor + s.color.fromArray(p), (s.opacity = p[3]) + } + void 0 !== d.baseColorTexture && + c.push(n.assignTexture(s, 'map', d.baseColorTexture)), + (s.metalness = void 0 !== d.metallicFactor ? d.metallicFactor : 1), + (s.roughness = void 0 !== d.roughnessFactor ? d.roughnessFactor : 1), + void 0 !== d.metallicRoughnessTexture && + (c.push(n.assignTexture(s, 'metalnessMap', d.metallicRoughnessTexture)), + c.push(n.assignTexture(s, 'roughnessMap', d.metallicRoughnessTexture))), + (t = this._invokeOne(function (t) { + return t.getMaterialType && t.getMaterialType(e) + })), + c.push( + Promise.all( + this._invokeAll(function (t) { + return t.extendMaterialParams && t.extendMaterialParams(e, s) + }), + ), + ) + } + !0 === a.doubleSided && (s.side = THREE.DoubleSide) + var f = a.alphaMode || R.OPAQUE + return ( + f === R.BLEND + ? ((s.transparent = !0), (s.depthWrite = !1)) + : ((s.transparent = !1), + f === R.MASK && + (s.alphaTest = void 0 !== a.alphaCutoff ? a.alphaCutoff : 0.5)), + void 0 !== a.normalTexture && + t !== THREE.MeshBasicMaterial && + (c.push(n.assignTexture(s, 'normalMap', a.normalTexture)), + (s.normalScale = new THREE.Vector2(1, -1)), + void 0 !== a.normalTexture.scale && + s.normalScale.set(a.normalTexture.scale, -a.normalTexture.scale)), + void 0 !== a.occlusionTexture && + t !== THREE.MeshBasicMaterial && + (c.push(n.assignTexture(s, 'aoMap', a.occlusionTexture)), + void 0 !== a.occlusionTexture.strength && + (s.aoMapIntensity = a.occlusionTexture.strength)), + void 0 !== a.emissiveFactor && + t !== THREE.MeshBasicMaterial && + (s.emissive = new THREE.Color().fromArray(a.emissiveFactor)), + void 0 !== a.emissiveTexture && + t !== THREE.MeshBasicMaterial && + c.push(n.assignTexture(s, 'emissiveMap', a.emissiveTexture)), + Promise.all(c).then(function () { + var i + return ( + (i = + t === y + ? o[r.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(s) + : new t(s)), + a.name && (i.name = a.name), + i.map && (i.map.encoding = THREE.sRGBEncoding), + i.emissiveMap && (i.emissiveMap.encoding = THREE.sRGBEncoding), + I(i, a), + n.associations.set(i, { type: 'materials', index: e }), + a.extensions && O(o, i, a), + i + ) + }) + ) + }), + (U.prototype.createUniqueName = function (e) { + for ( + var t = THREE.PropertyBinding.sanitizeNodeName(e || ''), n = t, r = 1; + this.nodeNamesUsed[n]; + ++r + ) + n = t + '_' + r + return (this.nodeNamesUsed[n] = !0), n + }), + (U.prototype.loadGeometries = function (e) { + var t = this, + n = this.extensions, + i = this.primitiveCache + function o(e) { + return n[r.KHR_DRACO_MESH_COMPRESSION] + .decodePrimitive(e, t) + .then(function (n) { + return G(n, e, t) + }) + } + for (var a = [], s = 0, l = e.length; s < l; s++) { + var c, + u = e[s], + h = k(u), + d = i[h] + d + ? a.push(d.promise) + : ((c = + u.extensions && u.extensions[r.KHR_DRACO_MESH_COMPRESSION] + ? o(u) + : G(new THREE.BufferGeometry(), u, t)), + (i[h] = { primitive: u, promise: c }), + a.push(c)) + } + return Promise.all(a) + }), + (U.prototype.loadMesh = function (e) { + for ( + var t = this, + n = this.json, + r = this.extensions, + i = n.meshes[e], + o = i.primitives, + a = [], + s = 0, + l = o.length; + s < l; + s++ + ) { + var c = + void 0 === o[s].material + ? D(this.cache) + : this.getDependency('material', o[s].material) + a.push(c) + } + return ( + a.push(t.loadGeometries(o)), + Promise.all(a).then(function (n) { + for ( + var a = n.slice(0, n.length - 1), + s = n[n.length - 1], + l = [], + c = 0, + u = s.length; + c < u; + c++ + ) { + var h, + d = s[c], + p = o[c], + f = a[c] + if ( + p.mode === x.TRIANGLES || + p.mode === x.TRIANGLE_STRIP || + p.mode === x.TRIANGLE_FAN || + void 0 === p.mode + ) + (h = + !0 === i.isSkinnedMesh + ? new THREE.SkinnedMesh(d, f) + : new THREE.Mesh(d, f)), + !0 === f.isMeshStandardMaterial && + f.side === THREE.DoubleSide && + null !== d.getIndex() && + !0 === d.hasAttribute('position') && + !0 === d.hasAttribute('normal') && + !0 === d.hasAttribute('uv') && + !1 === d.hasAttribute('tangent') && + (d.computeTangents(), (f.vertexTangents = !0)), + !0 !== h.isSkinnedMesh || + h.geometry.attributes.skinWeight.normalized || + h.normalizeSkinWeights(), + p.mode === x.TRIANGLE_STRIP + ? (h.geometry = z(h.geometry, THREE.TriangleStripDrawMode)) + : p.mode === x.TRIANGLE_FAN && + (h.geometry = z(h.geometry, THREE.TriangleFanDrawMode)) + else if (p.mode === x.LINES) h = new THREE.LineSegments(d, f) + else if (p.mode === x.LINE_STRIP) h = new THREE.Line(d, f) + else if (p.mode === x.LINE_LOOP) h = new THREE.LineLoop(d, f) + else { + if (p.mode !== x.POINTS) + throw new Error( + 'THREE.GLTFLoader: Primitive mode unsupported: ' + p.mode, + ) + h = new THREE.Points(d, f) + } + Object.keys(h.geometry.morphAttributes).length > 0 && F(h, i), + (h.name = t.createUniqueName(i.name || 'mesh_' + e)), + I(h, i), + p.extensions && O(r, h, p), + t.assignFinalMaterial(h), + l.push(h) + } + if (1 === l.length) return l[0] + var m = new THREE.Group() + for (c = 0, u = l.length; c < u; c++) m.add(l[c]) + return m + }) + ) + }), + (U.prototype.loadCamera = function (e) { + var t, + n = this.json.cameras[e], + r = n[n.type] + if (r) + return ( + 'perspective' === n.type + ? (t = new THREE.PerspectiveCamera( + THREE.MathUtils.radToDeg(r.yfov), + r.aspectRatio || 1, + r.znear || 1, + r.zfar || 2e6, + )) + : 'orthographic' === n.type && + (t = new THREE.OrthographicCamera( + -r.xmag, + r.xmag, + r.ymag, + -r.ymag, + r.znear, + r.zfar, + )), + n.name && (t.name = this.createUniqueName(n.name)), + I(t, n), + Promise.resolve(t) + ) + console.warn('THREE.GLTFLoader: Missing camera parameters.') + }), + (U.prototype.loadSkin = function (e) { + var t = this.json.skins[e], + n = { joints: t.joints } + return void 0 === t.inverseBindMatrices + ? Promise.resolve(n) + : this.getDependency('accessor', t.inverseBindMatrices).then(function (e) { + return (n.inverseBindMatrices = e), n + }) + }), + (U.prototype.loadAnimation = function (e) { + for ( + var t = this.json.animations[e], + n = [], + r = [], + i = [], + o = [], + a = [], + s = 0, + l = t.channels.length; + s < l; + s++ + ) { + var c = t.channels[s], + u = t.samplers[c.sampler], + h = c.target, + d = void 0 !== h.node ? h.node : h.id, + p = void 0 !== t.parameters ? t.parameters[u.input] : u.input, + f = void 0 !== t.parameters ? t.parameters[u.output] : u.output + n.push(this.getDependency('node', d)), + r.push(this.getDependency('accessor', p)), + i.push(this.getDependency('accessor', f)), + o.push(u), + a.push(h) + } + return Promise.all([ + Promise.all(n), + Promise.all(r), + Promise.all(i), + Promise.all(o), + Promise.all(a), + ]).then(function (n) { + for ( + var r = n[0], + i = n[1], + o = n[2], + a = n[3], + s = n[4], + l = [], + c = 0, + u = r.length; + c < u; + c++ + ) { + var h = r[c], + d = i[c], + p = o[c], + f = a[c], + m = s[c] + if (void 0 !== h) { + var v + switch ((h.updateMatrix(), (h.matrixAutoUpdate = !0), C[m.path])) { + case C.weights: + v = THREE.NumberKeyframeTrack + break + case C.rotation: + v = THREE.QuaternionKeyframeTrack + break + case C.position: + case C.scale: + default: + v = THREE.VectorKeyframeTrack + } + var g = h.name ? h.name : h.uuid, + y = + void 0 !== f.interpolation + ? L[f.interpolation] + : THREE.InterpolateLinear, + b = [] + C[m.path] === C.weights + ? h.traverse(function (e) { + !0 === e.isMesh && + e.morphTargetInfluences && + b.push(e.name ? e.name : e.uuid) + }) + : b.push(g) + var A = p.array + if (p.normalized) { + var x + if (A.constructor === Int8Array) x = 1 / 127 + else if (A.constructor === Uint8Array) x = 1 / 255 + else if (A.constructor == Int16Array) x = 1 / 32767 + else { + if (A.constructor !== Uint16Array) + throw new Error( + 'THREE.GLTFLoader: Unsupported output accessor component type.', + ) + x = 1 / 65535 + } + for ( + var E = new Float32Array(A.length), M = 0, _ = A.length; + M < _; + M++ + ) + E[M] = A[M] * x + A = E + } + for (M = 0, _ = b.length; M < _; M++) { + var T = new v(b[M] + '.' + C[m.path], d.array, A, y) + 'CUBICSPLINE' === f.interpolation && + ((T.createInterpolant = function (e) { + return new w(this.times, this.values, this.getValueSize() / 3, e) + }), + (T.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = + !0)), + l.push(T) + } + } + } + var S = t.name ? t.name : 'animation_' + e + return new THREE.AnimationClip(S, void 0, l) + }) + }), + (U.prototype.loadNode = function (e) { + var t = this.json, + n = this.extensions, + r = this, + i = t.nodes[e], + o = i.name ? r.createUniqueName(i.name) : '' + return (function () { + var t = [] + return ( + void 0 !== i.mesh && + t.push( + r.getDependency('mesh', i.mesh).then(function (e) { + var t = r._getNodeRef(r.meshCache, i.mesh, e) + return ( + void 0 !== i.weights && + t.traverse(function (e) { + if (e.isMesh) + for (var t = 0, n = i.weights.length; t < n; t++) + e.morphTargetInfluences[t] = i.weights[t] + }), + t + ) + }), + ), + void 0 !== i.camera && + t.push( + r.getDependency('camera', i.camera).then(function (e) { + return r._getNodeRef(r.cameraCache, i.camera, e) + }), + ), + r + ._invokeAll(function (t) { + return t.createNodeAttachment && t.createNodeAttachment(e) + }) + .forEach(function (e) { + t.push(e) + }), + Promise.all(t) + ) + })().then(function (t) { + var a + if ( + (a = + !0 === i.isBone + ? new THREE.Bone() + : t.length > 1 + ? new THREE.Group() + : 1 === t.length + ? t[0] + : new THREE.Object3D()) !== t[0] + ) + for (var s = 0, l = t.length; s < l; s++) a.add(t[s]) + if ( + (i.name && ((a.userData.name = i.name), (a.name = o)), + I(a, i), + i.extensions && O(n, a, i), + void 0 !== i.matrix) + ) { + var c = new THREE.Matrix4() + c.fromArray(i.matrix), a.applyMatrix4(c) + } else void 0 !== i.translation && a.position.fromArray(i.translation), void 0 !== i.rotation && a.quaternion.fromArray(i.rotation), void 0 !== i.scale && a.scale.fromArray(i.scale) + return r.associations.set(a, { type: 'nodes', index: e }), a + }) + }), + (U.prototype.loadScene = (function () { + function e(t, n, r, i) { + var o = r.nodes[t] + return i + .getDependency('node', t) + .then(function (e) { + return void 0 === o.skin + ? e + : i + .getDependency('skin', o.skin) + .then(function (e) { + for (var n = [], r = 0, o = (t = e).joints.length; r < o; r++) + n.push(i.getDependency('node', t.joints[r])) + return Promise.all(n) + }) + .then(function (n) { + return ( + e.traverse(function (e) { + if (e.isMesh) { + for ( + var r = [], i = [], o = 0, a = n.length; + o < a; + o++ + ) { + var s = n[o] + if (s) { + r.push(s) + var l = new THREE.Matrix4() + void 0 !== t.inverseBindMatrices && + l.fromArray(t.inverseBindMatrices.array, 16 * o), + i.push(l) + } else + console.warn( + 'THREE.GLTFLoader: Joint "%s" could not be found.', + t.joints[o], + ) + } + e.bind(new THREE.Skeleton(r, i), e.matrixWorld) + } + }), + e + ) + }) + var t + }) + .then(function (t) { + n.add(t) + var a = [] + if (o.children) + for (var s = o.children, l = 0, c = s.length; l < c; l++) { + var u = s[l] + a.push(e(u, t, r, i)) + } + return Promise.all(a) + }) + } + return function (t) { + var n = this.json, + r = this.extensions, + i = this.json.scenes[t], + o = this, + a = new THREE.Group() + i.name && (a.name = o.createUniqueName(i.name)), + I(a, i), + i.extensions && O(r, a, i) + for (var s = i.nodes || [], l = [], c = 0, u = s.length; c < u; c++) + l.push(e(s[c], a, n, o)) + return Promise.all(l).then(function () { + return a + }) + } + })()), + t + ) + })() + }, + {}, + ], + 60: [ + function (t, n, r) { + ;(THREE.MTLLoader = function (e) { + THREE.Loader.call(this, e) + }), + (THREE.MTLLoader.prototype = Object.assign( + Object.create(THREE.Loader.prototype), + { + constructor: THREE.MTLLoader, + load: function (t, n, r, i) { + var o = this, + a = '' === this.path ? THREE.LoaderUtils.extractUrlBase(t) : this.path, + s = new THREE.FileLoader(this.manager) + s.setPath(this.path), + s.setRequestHeader(this.requestHeader), + s.setWithCredentials(this.withCredentials), + s.load( + t, + function (r) { + try { + n(o.parse(r, a)) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + setMaterialOptions: function (e) { + return (this.materialOptions = e), this + }, + parse: function (e, t) { + for ( + var n = e.split('\n'), r = {}, i = /\s+/, o = {}, a = 0; + a < n.length; + a++ + ) { + var s = n[a] + if (0 !== (s = s.trim()).length && '#' !== s.charAt(0)) { + var l = s.indexOf(' '), + c = l >= 0 ? s.substring(0, l) : s + c = c.toLowerCase() + var u = l >= 0 ? s.substring(l + 1) : '' + if (((u = u.trim()), 'newmtl' === c)) (r = { name: u }), (o[u] = r) + else if ('ka' === c || 'kd' === c || 'ks' === c || 'ke' === c) { + var h = u.split(i, 3) + r[c] = [parseFloat(h[0]), parseFloat(h[1]), parseFloat(h[2])] + } else r[c] = u + } + } + var d = new THREE.MTLLoader.MaterialCreator( + this.resourcePath || t, + this.materialOptions, + ) + return ( + d.setCrossOrigin(this.crossOrigin), + d.setManager(this.manager), + d.setMaterials(o), + d + ) + }, + }, + )), + (THREE.MTLLoader.MaterialCreator = function (e, t) { + ;(this.baseUrl = e || ''), + (this.options = t), + (this.materialsInfo = {}), + (this.materials = {}), + (this.materialsArray = []), + (this.nameLookup = {}), + (this.side = + this.options && this.options.side ? this.options.side : THREE.FrontSide), + (this.wrap = + this.options && this.options.wrap + ? this.options.wrap + : THREE.RepeatWrapping) + }), + (THREE.MTLLoader.MaterialCreator.prototype = { + constructor: THREE.MTLLoader.MaterialCreator, + crossOrigin: 'anonymous', + setCrossOrigin: function (e) { + return (this.crossOrigin = e), this + }, + setManager: function (e) { + this.manager = e + }, + setMaterials: function (e) { + ;(this.materialsInfo = this.convert(e)), + (this.materials = {}), + (this.materialsArray = []), + (this.nameLookup = {}) + }, + convert: function (e) { + if (!this.options) return e + var t = {} + for (var n in e) { + var r = e[n], + i = {} + for (var o in ((t[n] = i), r)) { + var a = !0, + s = r[o], + l = o.toLowerCase() + switch (l) { + case 'kd': + case 'ka': + case 'ks': + this.options && + this.options.normalizeRGB && + (s = [s[0] / 255, s[1] / 255, s[2] / 255]), + this.options && + this.options.ignoreZeroRGBs && + 0 === s[0] && + 0 === s[1] && + 0 === s[2] && + (a = !1) + } + a && (i[l] = s) + } + } + return t + }, + preload: function () { + for (var e in this.materialsInfo) this.create(e) + }, + getIndex: function (e) { + return this.nameLookup[e] + }, + getAsArray: function () { + var e = 0 + for (var t in this.materialsInfo) + (this.materialsArray[e] = this.create(t)), (this.nameLookup[t] = e), e++ + return this.materialsArray + }, + create: function (e) { + return ( + void 0 === this.materials[e] && this.createMaterial_(e), this.materials[e] + ) + }, + createMaterial_: function (e) { + var t = this, + n = this.materialsInfo[e], + r = { name: e, side: this.side } + function i(e, t) { + return 'string' !== typeof t || '' === t + ? '' + : /^https?:\/\//i.test(t) + ? t + : e + t + } + function o(e, n) { + if (!r[e]) { + var o = t.getTextureParams(n, r), + a = t.loadTexture(i(t.baseUrl, o.url)) + a.repeat.copy(o.scale), + a.offset.copy(o.offset), + (a.wrapS = t.wrap), + (a.wrapT = t.wrap), + (r[e] = a) + } + } + for (var a in n) { + var s, + l = n[a] + if ('' !== l) + switch (a.toLowerCase()) { + case 'kd': + r.color = new THREE.Color().fromArray(l) + break + case 'ks': + r.specular = new THREE.Color().fromArray(l) + break + case 'ke': + r.emissive = new THREE.Color().fromArray(l) + break + case 'map_kd': + o('map', l) + break + case 'map_ks': + o('specularMap', l) + break + case 'map_ke': + o('emissiveMap', l) + break + case 'norm': + o('normalMap', l) + break + case 'map_bump': + case 'bump': + o('bumpMap', l) + break + case 'map_d': + o('alphaMap', l), (r.transparent = !0) + break + case 'ns': + r.shininess = parseFloat(l) + break + case 'd': + ;(s = parseFloat(l)) < 1 && ((r.opacity = s), (r.transparent = !0)) + break + case 'tr': + ;(s = parseFloat(l)), + this.options && this.options.invertTrProperty && (s = 1 - s), + s > 0 && ((r.opacity = 1 - s), (r.transparent = !0)) + } + } + return (this.materials[e] = new THREE.MeshPhongMaterial(r)), this.materials[e] + }, + getTextureParams: function (e, t) { + var n, + r = { scale: new THREE.Vector2(1, 1), offset: new THREE.Vector2(0, 0) }, + i = e.split(/\s+/) + return ( + (n = i.indexOf('-bm')) >= 0 && + ((t.bumpScale = parseFloat(i[n + 1])), i.splice(n, 2)), + (n = i.indexOf('-s')) >= 0 && + (r.scale.set(parseFloat(i[n + 1]), parseFloat(i[n + 2])), i.splice(n, 4)), + (n = i.indexOf('-o')) >= 0 && + (r.offset.set(parseFloat(i[n + 1]), parseFloat(i[n + 2])), + i.splice(n, 4)), + (r.url = i.join(' ').trim()), + r + ) + }, + loadTexture: function (e, t, n, r, i) { + var o, + a = void 0 !== this.manager ? this.manager : THREE.DefaultLoadingManager, + s = a.getHandler(e) + return ( + null === s && (s = new THREE.TextureLoader(a)), + s.setCrossOrigin && s.setCrossOrigin(this.crossOrigin), + (o = s.load(e, n, r, i)), + void 0 !== t && (o.mapping = t), + o + ) + }, + }) + }, + {}, + ], + 61: [ + function (t, n, r) { + THREE.OBJLoader = (function () { + var t = /^[og]\s*(.+)?/, + n = /^mtllib /, + r = /^usemtl /, + i = /^usemap /, + o = new THREE.Vector3(), + a = new THREE.Vector3(), + s = new THREE.Vector3(), + l = new THREE.Vector3(), + c = new THREE.Vector3() + function u() { + var e = { + objects: [], + object: {}, + vertices: [], + normals: [], + colors: [], + uvs: [], + materials: {}, + materialLibraries: [], + startObject: function (e, t) { + if (this.object && !1 === this.object.fromDeclaration) + return ( + (this.object.name = e), void (this.object.fromDeclaration = !1 !== t) + ) + var n = + this.object && 'function' === typeof this.object.currentMaterial + ? this.object.currentMaterial() + : void 0 + if ( + (this.object && + 'function' === typeof this.object._finalize && + this.object._finalize(!0), + (this.object = { + name: e || '', + fromDeclaration: !1 !== t, + geometry: { + vertices: [], + normals: [], + colors: [], + uvs: [], + hasUVIndices: !1, + }, + materials: [], + smooth: !0, + startMaterial: function (e, t) { + var n = this._finalize(!1) + n && + (n.inherited || n.groupCount <= 0) && + this.materials.splice(n.index, 1) + var r = { + index: this.materials.length, + name: e || '', + mtllib: Array.isArray(t) && t.length > 0 ? t[t.length - 1] : '', + smooth: void 0 !== n ? n.smooth : this.smooth, + groupStart: void 0 !== n ? n.groupEnd : 0, + groupEnd: -1, + groupCount: -1, + inherited: !1, + clone: function (e) { + var t = { + index: 'number' === typeof e ? e : this.index, + name: this.name, + mtllib: this.mtllib, + smooth: this.smooth, + groupStart: 0, + groupEnd: -1, + groupCount: -1, + inherited: !1, + } + return (t.clone = this.clone.bind(t)), t + }, + } + return this.materials.push(r), r + }, + currentMaterial: function () { + if (this.materials.length > 0) + return this.materials[this.materials.length - 1] + }, + _finalize: function (e) { + var t = this.currentMaterial() + if ( + (t && + -1 === t.groupEnd && + ((t.groupEnd = this.geometry.vertices.length / 3), + (t.groupCount = t.groupEnd - t.groupStart), + (t.inherited = !1)), + e && this.materials.length > 1) + ) + for (var n = this.materials.length - 1; n >= 0; n--) + this.materials[n].groupCount <= 0 && this.materials.splice(n, 1) + return ( + e && + 0 === this.materials.length && + this.materials.push({ name: '', smooth: this.smooth }), + t + ) + }, + }), + n && n.name && 'function' === typeof n.clone) + ) { + var r = n.clone(0) + ;(r.inherited = !0), this.object.materials.push(r) + } + this.objects.push(this.object) + }, + finalize: function () { + this.object && + 'function' === typeof this.object._finalize && + this.object._finalize(!0) + }, + parseVertexIndex: function (e, t) { + var n = parseInt(e, 10) + return 3 * (n >= 0 ? n - 1 : n + t / 3) + }, + parseNormalIndex: function (e, t) { + var n = parseInt(e, 10) + return 3 * (n >= 0 ? n - 1 : n + t / 3) + }, + parseUVIndex: function (e, t) { + var n = parseInt(e, 10) + return 2 * (n >= 0 ? n - 1 : n + t / 2) + }, + addVertex: function (e, t, n) { + var r = this.vertices, + i = this.object.geometry.vertices + i.push(r[e + 0], r[e + 1], r[e + 2]), + i.push(r[t + 0], r[t + 1], r[t + 2]), + i.push(r[n + 0], r[n + 1], r[n + 2]) + }, + addVertexPoint: function (e) { + var t = this.vertices + this.object.geometry.vertices.push(t[e + 0], t[e + 1], t[e + 2]) + }, + addVertexLine: function (e) { + var t = this.vertices + this.object.geometry.vertices.push(t[e + 0], t[e + 1], t[e + 2]) + }, + addNormal: function (e, t, n) { + var r = this.normals, + i = this.object.geometry.normals + i.push(r[e + 0], r[e + 1], r[e + 2]), + i.push(r[t + 0], r[t + 1], r[t + 2]), + i.push(r[n + 0], r[n + 1], r[n + 2]) + }, + addFaceNormal: function (e, t, n) { + var r = this.vertices, + i = this.object.geometry.normals + o.fromArray(r, e), + a.fromArray(r, t), + s.fromArray(r, n), + c.subVectors(s, a), + l.subVectors(o, a), + c.cross(l), + c.normalize(), + i.push(c.x, c.y, c.z), + i.push(c.x, c.y, c.z), + i.push(c.x, c.y, c.z) + }, + addColor: function (e, t, n) { + var r = this.colors, + i = this.object.geometry.colors + void 0 !== r[e] && i.push(r[e + 0], r[e + 1], r[e + 2]), + void 0 !== r[t] && i.push(r[t + 0], r[t + 1], r[t + 2]), + void 0 !== r[n] && i.push(r[n + 0], r[n + 1], r[n + 2]) + }, + addUV: function (e, t, n) { + var r = this.uvs, + i = this.object.geometry.uvs + i.push(r[e + 0], r[e + 1]), + i.push(r[t + 0], r[t + 1]), + i.push(r[n + 0], r[n + 1]) + }, + addDefaultUV: function () { + var e = this.object.geometry.uvs + e.push(0, 0), e.push(0, 0), e.push(0, 0) + }, + addUVLine: function (e) { + var t = this.uvs + this.object.geometry.uvs.push(t[e + 0], t[e + 1]) + }, + addFace: function (e, t, n, r, i, o, a, s, l) { + var c = this.vertices.length, + u = this.parseVertexIndex(e, c), + h = this.parseVertexIndex(t, c), + d = this.parseVertexIndex(n, c) + if ( + (this.addVertex(u, h, d), + this.addColor(u, h, d), + void 0 !== a && '' !== a) + ) { + var p = this.normals.length + ;(u = this.parseNormalIndex(a, p)), + (h = this.parseNormalIndex(s, p)), + (d = this.parseNormalIndex(l, p)), + this.addNormal(u, h, d) + } else this.addFaceNormal(u, h, d) + if (void 0 !== r && '' !== r) { + var f = this.uvs.length + ;(u = this.parseUVIndex(r, f)), + (h = this.parseUVIndex(i, f)), + (d = this.parseUVIndex(o, f)), + this.addUV(u, h, d), + (this.object.geometry.hasUVIndices = !0) + } else this.addDefaultUV() + }, + addPointGeometry: function (e) { + this.object.geometry.type = 'Points' + for (var t = this.vertices.length, n = 0, r = e.length; n < r; n++) { + var i = this.parseVertexIndex(e[n], t) + this.addVertexPoint(i), this.addColor(i) + } + }, + addLineGeometry: function (e, t) { + this.object.geometry.type = 'Line' + for ( + var n = this.vertices.length, r = this.uvs.length, i = 0, o = e.length; + i < o; + i++ + ) + this.addVertexLine(this.parseVertexIndex(e[i], n)) + var a = 0 + for (o = t.length; a < o; a++) this.addUVLine(this.parseUVIndex(t[a], r)) + }, + } + return e.startObject('', !1), e + } + function h(e) { + THREE.Loader.call(this, e), (this.materials = null) + } + return ( + (h.prototype = Object.assign(Object.create(THREE.Loader.prototype), { + constructor: h, + load: function (t, n, r, i) { + var o = this, + a = new THREE.FileLoader(this.manager) + a.setPath(this.path), + a.setRequestHeader(this.requestHeader), + a.setWithCredentials(this.withCredentials), + a.load( + t, + function (r) { + try { + n(o.parse(r)) + } catch (e) { + i ? i(e) : console.error(e), o.manager.itemError(t) + } + }, + r, + i, + ) + }, + setMaterials: function (e) { + return (this.materials = e), this + }, + parse: function (e) { + var o = new u() + ;-1 !== e.indexOf('\r\n') && (e = e.replace(/\r\n/g, '\n')), + -1 !== e.indexOf('\\\n') && (e = e.replace(/\\\n/g, '')) + for ( + var a = e.split('\n'), + s = '', + l = '', + c = [], + h = 'function' === typeof ''.trimLeft, + d = 0, + p = a.length; + d < p; + d++ + ) + if ( + ((s = a[d]), + 0 !== (s = h ? s.trimLeft() : s.trim()).length && + '#' !== (l = s.charAt(0))) + ) + if ('v' === l) { + var f = s.split(/\s+/) + switch (f[0]) { + case 'v': + o.vertices.push( + parseFloat(f[1]), + parseFloat(f[2]), + parseFloat(f[3]), + ), + f.length >= 7 + ? o.colors.push( + parseFloat(f[4]), + parseFloat(f[5]), + parseFloat(f[6]), + ) + : o.colors.push(void 0, void 0, void 0) + break + case 'vn': + o.normals.push( + parseFloat(f[1]), + parseFloat(f[2]), + parseFloat(f[3]), + ) + break + case 'vt': + o.uvs.push(parseFloat(f[1]), parseFloat(f[2])) + } + } else if ('f' === l) { + for ( + var m = s.substr(1).trim().split(/\s+/), + v = [], + g = 0, + y = m.length; + g < y; + g++ + ) { + var b = m[g] + if (b.length > 0) { + var A = b.split('/') + v.push(A) + } + } + var w = v[0] + for (g = 1, y = v.length - 1; g < y; g++) { + var x = v[g], + E = v[g + 1] + o.addFace(w[0], x[0], E[0], w[1], x[1], E[1], w[2], x[2], E[2]) + } + } else if ('l' === l) { + var M = s.substring(1).trim().split(' '), + _ = [], + T = [] + if (-1 === s.indexOf('/')) _ = M + else + for (var S = 0, C = M.length; S < C; S++) { + var L = M[S].split('/') + '' !== L[0] && _.push(L[0]), '' !== L[1] && T.push(L[1]) + } + o.addLineGeometry(_, T) + } else if ('p' === l) { + var R = s.substr(1).trim().split(' ') + o.addPointGeometry(R) + } else if (null !== (c = t.exec(s))) { + var P = (' ' + c[0].substr(1).trim()).substr(1) + o.startObject(P) + } else if (r.test(s)) + o.object.startMaterial(s.substring(7).trim(), o.materialLibraries) + else if (n.test(s)) o.materialLibraries.push(s.substring(7).trim()) + else if (i.test(s)) + console.warn( + 'THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.', + ) + else if ('s' === l) { + if ((c = s.split(' ')).length > 1) { + var D = c[1].trim().toLowerCase() + o.object.smooth = '0' !== D && 'off' !== D + } else o.object.smooth = !0 + ;(W = o.object.currentMaterial()) && (W.smooth = o.object.smooth) + } else { + if ('\0' === s) continue + console.warn('THREE.OBJLoader: Unexpected line: "' + s + '"') + } + o.finalize() + var O = new THREE.Group() + if ( + ((O.materialLibraries = [].concat(o.materialLibraries)), + !0 === + !( + 1 === o.objects.length && 0 === o.objects[0].geometry.vertices.length + )) + ) + for (d = 0, p = o.objects.length; d < p; d++) { + var I = o.objects[d], + B = I.geometry, + F = I.materials, + k = 'Line' === B.type, + N = 'Points' === B.type, + U = !1 + if (0 !== B.vertices.length) { + ;(Q = new THREE.BufferGeometry()).setAttribute( + 'position', + new THREE.Float32BufferAttribute(B.vertices, 3), + ), + B.normals.length > 0 && + Q.setAttribute( + 'normal', + new THREE.Float32BufferAttribute(B.normals, 3), + ), + B.colors.length > 0 && + ((U = !0), + Q.setAttribute( + 'color', + new THREE.Float32BufferAttribute(B.colors, 3), + )), + !0 === B.hasUVIndices && + Q.setAttribute('uv', new THREE.Float32BufferAttribute(B.uvs, 2)) + for (var H, G = [], z = 0, j = F.length; z < j; z++) { + var V = (Y = F[z]).name + '_' + Y.smooth + '_' + U, + W = o.materials[V] + if (null !== this.materials) + if ( + ((W = this.materials.create(Y.name)), + !k || !W || W instanceof THREE.LineBasicMaterial) + ) { + if (N && W && !(W instanceof THREE.PointsMaterial)) { + var q = new THREE.PointsMaterial({ + size: 10, + sizeAttenuation: !1, + }) + THREE.Material.prototype.copy.call(q, W), + q.color.copy(W.color), + (q.map = W.map), + (W = q) + } + } else { + var X = new THREE.LineBasicMaterial() + THREE.Material.prototype.copy.call(X, W), + X.color.copy(W.color), + (W = X) + } + void 0 === W && + (((W = k + ? new THREE.LineBasicMaterial() + : N + ? new THREE.PointsMaterial({ size: 1, sizeAttenuation: !1 }) + : new THREE.MeshPhongMaterial()).name = Y.name), + (W.flatShading = !Y.smooth), + (W.vertexColors = U), + (o.materials[V] = W)), + G.push(W) + } + if (G.length > 1) { + for (z = 0, j = F.length; z < j; z++) { + var Y = F[z] + Q.addGroup(Y.groupStart, Y.groupCount, z) + } + H = k + ? new THREE.LineSegments(Q, G) + : N + ? new THREE.Points(Q, G) + : new THREE.Mesh(Q, G) + } else + H = k + ? new THREE.LineSegments(Q, G[0]) + : N + ? new THREE.Points(Q, G[0]) + : new THREE.Mesh(Q, G[0]) + ;(H.name = I.name), O.add(H) + } + } + else if (o.vertices.length > 0) { + var Q + ;(W = new THREE.PointsMaterial({ size: 1, sizeAttenuation: !1 })), + (Q = new THREE.BufferGeometry()).setAttribute( + 'position', + new THREE.Float32BufferAttribute(o.vertices, 3), + ), + o.colors.length > 0 && + void 0 !== o.colors[0] && + (Q.setAttribute( + 'color', + new THREE.Float32BufferAttribute(o.colors, 3), + ), + (W.vertexColors = !0)) + var Z = new THREE.Points(Q, W) + O.add(Z) + } + return O + }, + })), + h + ) + })() + }, + {}, + ], + 62: [ + function (e, t, n) { + THREE.BufferGeometryUtils = { + computeTangents: function (e) { + e.computeTangents(), + console.warn( + 'THREE.BufferGeometryUtils: .computeTangents() has been removed. Use BufferGeometry.computeTangents() instead.', + ) + }, + mergeBufferGeometries: function (e, t) { + for ( + var n = null !== e[0].index, + r = new Set(Object.keys(e[0].attributes)), + i = new Set(Object.keys(e[0].morphAttributes)), + o = {}, + a = {}, + s = e[0].morphTargetsRelative, + l = new THREE.BufferGeometry(), + c = 0, + u = 0; + u < e.length; + ++u + ) { + var h = e[u], + d = 0 + if (n !== (null !== h.index)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.', + ), + null + ) + for (var p in h.attributes) { + if (!r.has(p)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. All geometries must have compatible attributes; make sure "' + + p + + '" attribute exists among all geometries, or in none of them.', + ), + null + ) + void 0 === o[p] && (o[p] = []), o[p].push(h.attributes[p]), d++ + } + if (d !== r.size) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. Make sure all geometries have the same number of attributes.', + ), + null + ) + if (s !== h.morphTargetsRelative) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. .morphTargetsRelative must be consistent throughout all geometries.', + ), + null + ) + for (var p in h.morphAttributes) { + if (!i.has(p)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. .morphAttributes must be consistent throughout all geometries.', + ), + null + ) + void 0 === a[p] && (a[p] = []), a[p].push(h.morphAttributes[p]) + } + if ( + ((l.userData.mergedUserData = l.userData.mergedUserData || []), + l.userData.mergedUserData.push(h.userData), + t) + ) { + var f + if (n) f = h.index.count + else { + if (void 0 === h.attributes.position) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index ' + + u + + '. The geometry must have either an index or a position attribute', + ), + null + ) + f = h.attributes.position.count + } + l.addGroup(c, f, u), (c += f) + } + } + if (n) { + var m = 0, + v = [] + for (u = 0; u < e.length; ++u) { + for (var g = e[u].index, y = 0; y < g.count; ++y) v.push(g.getX(y) + m) + m += e[u].attributes.position.count + } + l.setIndex(v) + } + for (var p in o) { + var b = this.mergeBufferAttributes(o[p]) + if (!b) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + + p + + ' attribute.', + ), + null + ) + l.setAttribute(p, b) + } + for (var p in a) { + var A = a[p][0].length + if (0 === A) break + for ( + l.morphAttributes = l.morphAttributes || {}, + l.morphAttributes[p] = [], + u = 0; + u < A; + ++u + ) { + var w = [] + for (y = 0; y < a[p].length; ++y) w.push(a[p][y][u]) + var x = this.mergeBufferAttributes(w) + if (!x) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the ' + + p + + ' morphAttribute.', + ), + null + ) + l.morphAttributes[p].push(x) + } + } + return l + }, + mergeBufferAttributes: function (e) { + for (var t, n, r, i = 0, o = 0; o < e.length; ++o) { + var a = e[o] + if (a.isInterleavedBufferAttribute) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported.', + ), + null + ) + if ((void 0 === t && (t = a.array.constructor), t !== a.array.constructor)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes.', + ), + null + ) + if ((void 0 === n && (n = a.itemSize), n !== a.itemSize)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes.', + ), + null + ) + if ((void 0 === r && (r = a.normalized), r !== a.normalized)) + return ( + console.error( + 'THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes.', + ), + null + ) + i += a.array.length + } + var s = new t(i), + l = 0 + for (o = 0; o < e.length; ++o) s.set(e[o].array, l), (l += e[o].array.length) + return new THREE.BufferAttribute(s, n, r) + }, + interleaveAttributes: function (e) { + for (var t, n = 0, r = 0, i = 0, o = e.length; i < o; ++i) { + var a = e[i] + if ((void 0 === t && (t = a.array.constructor), t !== a.array.constructor)) + return ( + console.error( + 'AttributeBuffers of different types cannot be interleaved', + ), + null + ) + ;(n += a.array.length), (r += a.itemSize) + } + var s = new THREE.InterleavedBuffer(new t(n), r), + l = 0, + c = [], + u = ['getX', 'getY', 'getZ', 'getW'], + h = ['setX', 'setY', 'setZ', 'setW'], + d = 0 + for (o = e.length; d < o; d++) { + var p = (a = e[d]).itemSize, + f = a.count, + m = new THREE.InterleavedBufferAttribute(s, p, l, a.normalized) + c.push(m), (l += p) + for (var v = 0; v < f; v++) for (var g = 0; g < p; g++) m[h[g]](v, a[u[g]](v)) + } + return c + }, + estimateBytesUsed: function (e) { + var t = 0 + for (var n in e.attributes) { + var r = e.getAttribute(n) + t += r.count * r.itemSize * r.array.BYTES_PER_ELEMENT + } + var i = e.getIndex() + return (t += i ? i.count * i.itemSize * i.array.BYTES_PER_ELEMENT : 0) + }, + mergeVertices: function (e, t = 1e-4) { + t = Math.max(t, Number.EPSILON) + for ( + var n = {}, + r = e.getIndex(), + i = e.getAttribute('position'), + o = r ? r.count : i.count, + a = 0, + s = Object.keys(e.attributes), + l = {}, + c = {}, + u = [], + h = ['getX', 'getY', 'getZ', 'getW'], + d = 0, + p = s.length; + d < p; + d++ + ) + (l[(b = s[d])] = []), + (E = e.morphAttributes[b]) && + (c[b] = new Array(E.length).fill().map(() => [])) + var f = Math.log10(1 / t), + m = Math.pow(10, f) + for (d = 0; d < o; d++) { + var v = r ? r.getX(d) : d, + g = '', + y = 0 + for (p = s.length; y < p; y++) + for (var b = s[y], A = (x = e.getAttribute(b)).itemSize, w = 0; w < A; w++) + g += ~~(x[h[w]](v) * m) + ',' + if (g in n) u.push(n[g]) + else { + for (y = 0, p = s.length; y < p; y++) { + b = s[y] + var x = e.getAttribute(b), + E = e.morphAttributes[b], + M = ((A = x.itemSize), l[b]), + _ = c[b] + for (w = 0; w < A; w++) { + var T = h[w] + if ((M.push(x[T](v)), E)) + for (var S = 0, C = E.length; S < C; S++) _[S].push(E[S][T](v)) + } + } + ;(n[g] = a), u.push(a), a++ + } + } + const L = e.clone() + for (d = 0, p = s.length; d < p; d++) { + b = s[d] + var R = e.getAttribute(b), + P = new R.array.constructor(l[b]) + if ( + ((x = new THREE.BufferAttribute(P, R.itemSize, R.normalized)), + L.setAttribute(b, x), + b in c) + ) + for (y = 0; y < c[b].length; y++) { + var D = e.morphAttributes[b][y], + O = + ((P = new D.array.constructor(c[b][y])), + new THREE.BufferAttribute(P, D.itemSize, D.normalized)) + L.morphAttributes[b][y] = O + } + } + return L.setIndex(u), L + }, + toTrianglesDrawMode: function (e, t) { + if (t === THREE.TrianglesDrawMode) + return ( + console.warn( + 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.', + ), + e + ) + if (t === THREE.TriangleFanDrawMode || t === THREE.TriangleStripDrawMode) { + var n = e.getIndex() + if (null === n) { + var r = [], + i = e.getAttribute('position') + if (void 0 === i) + return ( + console.error( + 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.', + ), + e + ) + for (var o = 0; o < i.count; o++) r.push(o) + e.setIndex(r), (n = e.getIndex()) + } + var a = n.count - 2, + s = [] + if (t === THREE.TriangleFanDrawMode) + for (o = 1; o <= a; o++) + s.push(n.getX(0)), s.push(n.getX(o)), s.push(n.getX(o + 1)) + else + for (o = 0; o < a; o++) + o % 2 === 0 + ? (s.push(n.getX(o)), s.push(n.getX(o + 1)), s.push(n.getX(o + 2))) + : (s.push(n.getX(o + 2)), s.push(n.getX(o + 1)), s.push(n.getX(o))) + s.length / 3 !== a && + console.error( + 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.', + ) + var l = e.clone() + return l.setIndex(s), l.clearGroups(), l + } + return ( + console.error( + 'THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:', + t, + ), + e + ) + }, + computeMorphedAttributes: function (e) { + if (!0 !== e.geometry.isBufferGeometry) + return ( + console.error( + 'THREE.BufferGeometryUtils: Geometry is not of type THREE.BufferGeometry.', + ), + null + ) + var t = new THREE.Vector3(), + n = new THREE.Vector3(), + r = new THREE.Vector3(), + i = new THREE.Vector3(), + o = new THREE.Vector3(), + a = new THREE.Vector3(), + s = new THREE.Vector3(), + l = new THREE.Vector3(), + c = new THREE.Vector3() + function u(e, u, h, d, p, f, m, v, g) { + t.fromBufferAttribute(h, f), + n.fromBufferAttribute(h, m), + r.fromBufferAttribute(h, v) + var y = e.morphTargetInfluences + if (u.morphTargets && d && y) { + s.set(0, 0, 0), l.set(0, 0, 0), c.set(0, 0, 0) + for (var b = 0, A = d.length; b < A; b++) { + var w = y[b] + ;(d = d[b]), + 0 !== w && + (i.fromBufferAttribute(d, f), + o.fromBufferAttribute(d, m), + a.fromBufferAttribute(d, v), + p + ? (s.addScaledVector(i, w), + l.addScaledVector(o, w), + c.addScaledVector(a, w)) + : (s.addScaledVector(i.sub(t), w), + l.addScaledVector(o.sub(n), w), + c.addScaledVector(a.sub(r), w))) + } + t.add(s), n.add(l), r.add(c) + } + e.isSkinnedMesh && + (e.boneTransform(f, t), e.boneTransform(m, n), e.boneTransform(v, r)), + (g[3 * f + 0] = t.x), + (g[3 * f + 1] = t.y), + (g[3 * f + 2] = t.z), + (g[3 * m + 0] = n.x), + (g[3 * m + 1] = n.y), + (g[3 * m + 2] = n.z), + (g[3 * v + 0] = r.x), + (g[3 * v + 1] = r.y), + (g[3 * v + 2] = r.z) + } + var h, + d, + p, + f, + m, + v, + g, + y, + b, + A = e.geometry, + w = e.material, + x = A.index, + E = A.attributes.position, + M = A.morphAttributes.position, + _ = A.morphTargetsRelative, + T = A.attributes.normal, + S = A.morphAttributes.position, + C = A.groups, + L = A.drawRange, + R = new Float32Array(E.count * E.itemSize), + P = new Float32Array(T.count * T.itemSize) + if (null !== x) + if (Array.isArray(w)) + for (f = 0, v = C.length; f < v; f++) + for ( + b = w[(y = C[f]).materialIndex], + m = Math.max(y.start, L.start), + g = Math.min(y.start + y.count, L.start + L.count); + m < g; + m += 3 + ) + u( + e, + b, + E, + M, + _, + (h = x.getX(m)), + (d = x.getX(m + 1)), + (p = x.getX(m + 2)), + R, + ), + u(e, b, T, S, _, h, d, p, P) + else + for ( + f = Math.max(0, L.start), v = Math.min(x.count, L.start + L.count); + f < v; + f += 3 + ) + u( + e, + w, + E, + M, + _, + (h = x.getX(f)), + (d = x.getX(f + 1)), + (p = x.getX(f + 2)), + R, + ), + u(e, w, T, S, _, h, d, p, P) + else if (void 0 !== E) + if (Array.isArray(w)) + for (f = 0, v = C.length; f < v; f++) + for ( + b = w[(y = C[f]).materialIndex], + m = Math.max(y.start, L.start), + g = Math.min(y.start + y.count, L.start + L.count); + m < g; + m += 3 + ) + u(e, b, E, M, _, (h = m), (d = m + 1), (p = m + 2), R), + u(e, b, T, S, _, h, d, p, P) + else + for ( + f = Math.max(0, L.start), v = Math.min(E.count, L.start + L.count); + f < v; + f += 3 + ) + u(e, w, E, M, _, (h = f), (d = f + 1), (p = f + 2), R), + u(e, w, T, S, _, h, d, p, P) + return { + positionAttribute: E, + normalAttribute: T, + morphedPositionAttribute: new THREE.Float32BufferAttribute(R, 3), + morphedNormalAttribute: new THREE.Float32BufferAttribute(P, 3), + } + }, + } + }, + {}, + ], + 63: [ + function (e, t, n) { + var r = e('layout-bmfont-text'), + i = e('inherits'), + o = e('quad-indices'), + a = e('three-buffer-vertex-data'), + s = e('object-assign'), + l = e('./lib/vertices'), + c = e('./lib/utils'), + u = THREE.BufferGeometry + function h(e) { + u.call(this), + 'string' === typeof e && (e = { text: e }), + (this._opt = s({}, e)), + e && this.update(e) + } + ;(t.exports = function (e) { + return new h(e) + }), + i(h, u), + (h.prototype.update = function (e) { + if ( + ('string' === typeof e && (e = { text: e }), !(e = s({}, this._opt, e)).font) + ) + throw new TypeError('must specify a { font } in options') + this.layout = r(e) + var t = !1 !== e.flipY, + n = e.font, + i = n.common.scaleW, + c = n.common.scaleH, + u = this.layout.glyphs.filter(function (e) { + var t = e.data + return t.width * t.height > 0 + }) + this.visibleGlyphs = u + var h = l.positions(u), + d = l.uvs(u, i, c, t), + p = o({ clockwise: !0, type: 'uint16', count: u.length }) + if ( + (a.index(this, p, 1, 'uint16'), + a.attr(this, 'position', h, 2), + a.attr(this, 'uv', d, 2), + !e.multipage && 'page' in this.attributes) + ) + this.removeAttribute('page') + else if (e.multipage) { + var f = l.pages(u) + a.attr(this, 'page', f, 1) + } + }), + (h.prototype.computeBoundingSphere = function () { + null === this.boundingSphere && (this.boundingSphere = new THREE.Sphere()) + var e = this.attributes.position.array, + t = this.attributes.position.itemSize + if (!e || !t || e.length < 2) + return ( + (this.boundingSphere.radius = 0), + void this.boundingSphere.center.set(0, 0, 0) + ) + c.computeSphere(e, this.boundingSphere), + isNaN(this.boundingSphere.radius) && + console.error( + 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', + ) + }), + (h.prototype.computeBoundingBox = function () { + null === this.boundingBox && (this.boundingBox = new THREE.Box3()) + var e = this.boundingBox, + t = this.attributes.position.array, + n = this.attributes.position.itemSize + !t || !n || t.length < 2 ? e.makeEmpty() : c.computeBox(t, e) + }) + }, + { + './lib/utils': 64, + './lib/vertices': 65, + inherits: 30, + 'layout-bmfont-text': 36, + 'object-assign': 39, + 'quad-indices': 51, + 'three-buffer-vertex-data': 66, + }, + ], + 64: [ + function (e, t, n) { + var r = 2, + i = { min: [0, 0], max: [0, 0] } + function o(e) { + var t = e.length / r + ;(i.min[0] = e[0]), (i.min[1] = e[1]), (i.max[0] = e[0]), (i.max[1] = e[1]) + for (var n = 0; n < t; n++) { + var o = e[n * r + 0], + a = e[n * r + 1] + ;(i.min[0] = Math.min(o, i.min[0])), + (i.min[1] = Math.min(a, i.min[1])), + (i.max[0] = Math.max(o, i.max[0])), + (i.max[1] = Math.max(a, i.max[1])) + } + } + ;(t.exports.computeBox = function (e, t) { + o(e), t.min.set(i.min[0], i.min[1], 0), t.max.set(i.max[0], i.max[1], 0) + }), + (t.exports.computeSphere = function (e, t) { + o(e) + var n = i.min[0], + r = i.min[1], + a = i.max[0] - n, + s = i.max[1] - r, + l = Math.sqrt(a * a + s * s) + t.center.set(n + a / 2, r + s / 2, 0), (t.radius = l / 2) + }) + }, + {}, + ], + 65: [ + function (e, t, n) { + ;(t.exports.pages = function (e) { + var t = new Float32Array(4 * e.length * 1), + n = 0 + return ( + e.forEach(function (e) { + var r = e.data.page || 0 + ;(t[n++] = r), (t[n++] = r), (t[n++] = r), (t[n++] = r) + }), + t + ) + }), + (t.exports.uvs = function (e, t, n, r) { + var i = new Float32Array(4 * e.length * 2), + o = 0 + return ( + e.forEach(function (e) { + var a = e.data, + s = a.x + a.width, + l = a.y + a.height, + c = a.x / t, + u = a.y / n, + h = s / t, + d = l / n + r && ((u = (n - a.y) / n), (d = (n - l) / n)), + (i[o++] = c), + (i[o++] = u), + (i[o++] = c), + (i[o++] = d), + (i[o++] = h), + (i[o++] = d), + (i[o++] = h), + (i[o++] = u) + }), + i + ) + }), + (t.exports.positions = function (e) { + var t = new Float32Array(4 * e.length * 2), + n = 0 + return ( + e.forEach(function (e) { + var r = e.data, + i = e.position[0] + r.xoffset, + o = e.position[1] + r.yoffset, + a = r.width, + s = r.height + ;(t[n++] = i), + (t[n++] = o), + (t[n++] = i), + (t[n++] = o + s), + (t[n++] = i + a), + (t[n++] = o + s), + (t[n++] = i + a), + (t[n++] = o) + }), + t + ) + }) + }, + {}, + ], + 66: [ + function (e, t, n) { + var r = e('flatten-vertex-data') + function i(e, t, n, r) { + 'number' !== typeof n && (n = 1), 'string' !== typeof r && (r = 'uint16') + var i = !e.index && 'function' !== typeof e.setIndex, + o = a(i ? e.getAttribute('index') : e.index, t, n, r) + o && (i ? e.addAttribute('index', o) : (e.index = o)) + } + function o(e, t, n, r, i) { + if ( + ('number' !== typeof r && (r = 3), + 'string' !== typeof i && (i = 'float32'), + Array.isArray(n) && Array.isArray(n[0]) && n[0].length !== r) + ) + throw new Error( + 'Nested vertex array has unexpected size; expected ' + + r + + ' but found ' + + n[0].length, + ) + var o = a(e.getAttribute(t), n, r, i) + e.setAttribute(t, o) + } + function a(e, t, n, i) { + return ( + (t = r((t = t || []), i)), + ((e = new THREE.BufferAttribute(t, n)).itemSize = n), + (e.needsUpdate = !0), + e + ) + } + ;(t.exports.attr = o), (t.exports.index = i) + }, + { 'flatten-vertex-data': 23 }, + ], + 67: [ + function (e, t, n) { + ;(function (t, r) { + var i = e('process/browser.js').nextTick, + o = Function.prototype.apply, + a = Array.prototype.slice, + s = {}, + l = 0 + function c(e, t) { + ;(this._id = e), (this._clearFn = t) + } + ;(n.setTimeout = function () { + return new c(o.call(setTimeout, window, arguments), clearTimeout) + }), + (n.setInterval = function () { + return new c(o.call(setInterval, window, arguments), clearInterval) + }), + (n.clearTimeout = n.clearInterval = + function (e) { + e.close() + }), + (c.prototype.unref = c.prototype.ref = function () {}), + (c.prototype.close = function () { + this._clearFn.call(window, this._id) + }), + (n.enroll = function (e, t) { + clearTimeout(e._idleTimeoutId), (e._idleTimeout = t) + }), + (n.unenroll = function (e) { + clearTimeout(e._idleTimeoutId), (e._idleTimeout = -1) + }), + (n._unrefActive = n.active = + function (e) { + clearTimeout(e._idleTimeoutId) + var t = e._idleTimeout + t >= 0 && + (e._idleTimeoutId = setTimeout(function () { + e._onTimeout && e._onTimeout() + }, t)) + }), + (n.setImmediate = + 'function' === typeof t + ? t + : function (e) { + var t = l++, + r = !(arguments.length < 2) && a.call(arguments, 1) + return ( + (s[t] = !0), + i(function () { + s[t] && (r ? e.apply(null, r) : e.call(null), n.clearImmediate(t)) + }), + t + ) + }), + (n.clearImmediate = + 'function' === typeof r + ? r + : function (e) { + delete s[e] + }) + }.call(this, e('timers').setImmediate, e('timers').clearImmediate)) + }, + { 'process/browser.js': 49, timers: 67 }, + ], + 68: [ + function (e, n, i) { + ;(function (e) { + !(function (e, r) { + 'object' === typeof i && 'undefined' !== typeof n + ? (n.exports = r()) + : 'function' === typeof t && t.amd + ? t(r) + : (e.WebVRPolyfill = r()) + })(this, function () { + 'use strict' + var t = + 'undefined' !== typeof window + ? window + : 'undefined' !== typeof e + ? e + : 'undefined' !== typeof self + ? self + : {} + function n(e) { + return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, 'default') + ? e.default + : e + } + function r(e, t) { + return e((t = { exports: {} }), t.exports), t.exports + } + var i = function () { + return ( + /Android/i.test(navigator.userAgent) || + /iPhone|iPad|iPod/i.test(navigator.userAgent) + ) + }, + o = function (e, t) { + for (var n = 0, r = e.length; n < r; n++) t[n] = e[n] + }, + a = function (e, t) { + for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) + return e + }, + s = n( + r(function (e, n) { + var r + ;(r = function () { + var e = function (e, t) { + if (!(e instanceof t)) + throw new TypeError('Cannot call a class as a function') + }, + n = (function () { + function e(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n] + ;(r.enumerable = r.enumerable || !1), + (r.configurable = !0), + 'value' in r && (r.writable = !0), + Object.defineProperty(e, r.key, r) + } + } + return function (t, n, r) { + return n && e(t.prototype, n), r && e(t, r), t + } + })(), + r = (function () { + function e(e, t) { + var n = [], + r = !0, + i = !1, + o = void 0 + try { + for ( + var a, s = e[Symbol.iterator](); + !(r = (a = s.next()).done) && + (n.push(a.value), !t || n.length !== t); + r = !0 + ); + } catch (l) { + ;(i = !0), (o = l) + } finally { + try { + !r && s.return && s.return() + } finally { + if (i) throw o + } + } + return n + } + return function (t, n) { + if (Array.isArray(t)) return t + if (Symbol.iterator in Object(t)) return e(t, n) + throw new TypeError( + 'Invalid attempt to destructure non-iterable instance', + ) + } + })(), + i = 0.001, + o = 1, + a = function (e, t) { + return 'data:' + e + ',' + encodeURIComponent(t) + }, + s = function (e, t, n) { + return e + (t - e) * n + }, + l = (function () { + var e = /iPad|iPhone|iPod/.test(navigator.platform) + return function () { + return e + } + })(), + c = (function () { + var e = + -1 !== navigator.userAgent.indexOf('Version') && + -1 !== navigator.userAgent.indexOf('Android') && + -1 !== navigator.userAgent.indexOf('Chrome') + return function () { + return e + } + })(), + u = (function () { + var e = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) + return function () { + return e + } + })(), + h = (function () { + var e = + -1 !== navigator.userAgent.indexOf('Firefox') && + -1 !== navigator.userAgent.indexOf('Android') + return function () { + return e + } + })(), + d = (function () { + var e = navigator.userAgent.match(/.*Chrome\/([0-9]+)/), + t = e ? parseInt(e[1], 10) : null + return function () { + return t + } + })(), + p = (function () { + var e = !1 + return ( + (e = l() && u() && -1 !== navigator.userAgent.indexOf('13_4')), + function () { + return e + } + ) + })(), + f = (function () { + var e = !1 + if (65 === d()) { + var t = navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/) + if (t) { + var n = t[1].split('.'), + i = r(n, 4), + o = (i[0], i[1], i[2]), + a = i[3] + e = 3325 === parseInt(o, 10) && parseInt(a, 10) < 148 + } + } + return function () { + return e + } + })(), + m = (function () { + var e = -1 !== navigator.userAgent.indexOf('R7 Build') + return function () { + return e + } + })(), + v = function () { + var e = 90 == window.orientation || -90 == window.orientation + return m() ? !e : e + }, + g = function (e) { + return !isNaN(e) && !(e <= i) && !(e > o) + }, + y = function () { + return ( + Math.max(window.screen.width, window.screen.height) * + window.devicePixelRatio + ) + }, + b = function () { + return ( + Math.min(window.screen.width, window.screen.height) * + window.devicePixelRatio + ) + }, + A = function (e) { + if (c()) return !1 + if (e.requestFullscreen) e.requestFullscreen() + else if (e.webkitRequestFullscreen) e.webkitRequestFullscreen() + else if (e.mozRequestFullScreen) e.mozRequestFullScreen() + else { + if (!e.msRequestFullscreen) return !1 + e.msRequestFullscreen() + } + return !0 + }, + w = function () { + if (document.exitFullscreen) document.exitFullscreen() + else if (document.webkitExitFullscreen) + document.webkitExitFullscreen() + else if (document.mozCancelFullScreen) + document.mozCancelFullScreen() + else { + if (!document.msExitFullscreen) return !1 + document.msExitFullscreen() + } + return !0 + }, + x = function () { + return ( + document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement || + document.msFullscreenElement + ) + }, + E = function (e, t, n, r) { + var i = e.createShader(e.VERTEX_SHADER) + e.shaderSource(i, t), e.compileShader(i) + var o = e.createShader(e.FRAGMENT_SHADER) + e.shaderSource(o, n), e.compileShader(o) + var a = e.createProgram() + for (var s in (e.attachShader(a, i), e.attachShader(a, o), r)) + e.bindAttribLocation(a, r[s], s) + return e.linkProgram(a), e.deleteShader(i), e.deleteShader(o), a + }, + M = function (e, t) { + for ( + var n = {}, + r = e.getProgramParameter(t, e.ACTIVE_UNIFORMS), + i = '', + o = 0; + o < r; + o++ + ) + n[(i = e.getActiveUniform(t, o).name.replace('[0]', ''))] = + e.getUniformLocation(t, i) + return n + }, + _ = function (e, t, n, r, i, o, a) { + var s = 1 / (t - n), + l = 1 / (r - i), + c = 1 / (o - a) + return ( + (e[0] = -2 * s), + (e[1] = 0), + (e[2] = 0), + (e[3] = 0), + (e[4] = 0), + (e[5] = -2 * l), + (e[6] = 0), + (e[7] = 0), + (e[8] = 0), + (e[9] = 0), + (e[10] = 2 * c), + (e[11] = 0), + (e[12] = (t + n) * s), + (e[13] = (i + r) * l), + (e[14] = (a + o) * c), + (e[15] = 1), + e + ) + }, + T = function () { + var e, + t = !1 + return ( + (e = navigator.userAgent || navigator.vendor || window.opera), + (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test( + e, + ) || + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( + e.substr(0, 4), + )) && + (t = !0), + t + ) + }, + S = function (e, t) { + for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) + return e + }, + C = function (e) { + if (l()) { + var t = e.style.width, + n = e.style.height + ;(e.style.width = parseInt(t) + 1 + 'px'), + (e.style.height = parseInt(n) + 'px'), + setTimeout(function () { + ;(e.style.width = t), (e.style.height = n) + }, 100) + } + window.canvas = e + }, + L = (function () { + var e = Math.PI / 180, + t = 0.25 * Math.PI + function n(n, r, i, o) { + var a = Math.tan(r ? r.upDegrees * e : t), + s = Math.tan(r ? r.downDegrees * e : t), + l = Math.tan(r ? r.leftDegrees * e : t), + c = Math.tan(r ? r.rightDegrees * e : t), + u = 2 / (l + c), + h = 2 / (a + s) + return ( + (n[0] = u), + (n[1] = 0), + (n[2] = 0), + (n[3] = 0), + (n[4] = 0), + (n[5] = h), + (n[6] = 0), + (n[7] = 0), + (n[8] = -(l - c) * u * 0.5), + (n[9] = (a - s) * h * 0.5), + (n[10] = o / (i - o)), + (n[11] = -1), + (n[12] = 0), + (n[13] = 0), + (n[14] = (o * i) / (i - o)), + (n[15] = 0), + n + ) + } + function r(e, t, n) { + var r = t[0], + i = t[1], + o = t[2], + a = t[3], + s = r + r, + l = i + i, + c = o + o, + u = r * s, + h = r * l, + d = r * c, + p = i * l, + f = i * c, + m = o * c, + v = a * s, + g = a * l, + y = a * c + return ( + (e[0] = 1 - (p + m)), + (e[1] = h + y), + (e[2] = d - g), + (e[3] = 0), + (e[4] = h - y), + (e[5] = 1 - (u + m)), + (e[6] = f + v), + (e[7] = 0), + (e[8] = d + g), + (e[9] = f - v), + (e[10] = 1 - (u + p)), + (e[11] = 0), + (e[12] = n[0]), + (e[13] = n[1]), + (e[14] = n[2]), + (e[15] = 1), + e + ) + } + function i(e, t, n) { + var r, + i, + o, + a, + s, + l, + c, + u, + h, + d, + p, + f, + m = n[0], + v = n[1], + g = n[2] + return ( + t === e + ? ((e[12] = t[0] * m + t[4] * v + t[8] * g + t[12]), + (e[13] = t[1] * m + t[5] * v + t[9] * g + t[13]), + (e[14] = t[2] * m + t[6] * v + t[10] * g + t[14]), + (e[15] = t[3] * m + t[7] * v + t[11] * g + t[15])) + : ((r = t[0]), + (i = t[1]), + (o = t[2]), + (a = t[3]), + (s = t[4]), + (l = t[5]), + (c = t[6]), + (u = t[7]), + (h = t[8]), + (d = t[9]), + (p = t[10]), + (f = t[11]), + (e[0] = r), + (e[1] = i), + (e[2] = o), + (e[3] = a), + (e[4] = s), + (e[5] = l), + (e[6] = c), + (e[7] = u), + (e[8] = h), + (e[9] = d), + (e[10] = p), + (e[11] = f), + (e[12] = r * m + s * v + h * g + t[12]), + (e[13] = i * m + l * v + d * g + t[13]), + (e[14] = o * m + c * v + p * g + t[14]), + (e[15] = a * m + u * v + f * g + t[15])), + e + ) + } + function o(e, t) { + var n = t[0], + r = t[1], + i = t[2], + o = t[3], + a = t[4], + s = t[5], + l = t[6], + c = t[7], + u = t[8], + h = t[9], + d = t[10], + p = t[11], + f = t[12], + m = t[13], + v = t[14], + g = t[15], + y = n * s - r * a, + b = n * l - i * a, + A = n * c - o * a, + w = r * l - i * s, + x = r * c - o * s, + E = i * c - o * l, + M = u * m - h * f, + _ = u * v - d * f, + T = u * g - p * f, + S = h * v - d * m, + C = h * g - p * m, + L = d * g - p * v, + R = y * L - b * C + A * S + w * T - x * _ + E * M + return R + ? ((R = 1 / R), + (e[0] = (s * L - l * C + c * S) * R), + (e[1] = (i * C - r * L - o * S) * R), + (e[2] = (m * E - v * x + g * w) * R), + (e[3] = (d * x - h * E - p * w) * R), + (e[4] = (l * T - a * L - c * _) * R), + (e[5] = (n * L - i * T + o * _) * R), + (e[6] = (v * A - f * E - g * b) * R), + (e[7] = (u * E - d * A + p * b) * R), + (e[8] = (a * C - s * T + c * M) * R), + (e[9] = (r * T - n * C - o * M) * R), + (e[10] = (f * x - m * A + g * y) * R), + (e[11] = (h * A - u * x - p * y) * R), + (e[12] = (s * _ - a * S - l * M) * R), + (e[13] = (n * S - r * _ + i * M) * R), + (e[14] = (m * b - f * w - v * y) * R), + (e[15] = (u * w - h * b + d * y) * R), + e) + : null + } + var a = new Float32Array([0, 0, 0, 1]), + s = new Float32Array([0, 0, 0]) + function l(e, t, l, c, u, h) { + n(e, c || null, h.depthNear, h.depthFar), + r(t, l.orientation || a, l.position || s), + u && i(t, t, u), + o(t, t) + } + return function (e, t, n) { + return ( + !(!e || !t) && + ((e.pose = t), + (e.timestamp = t.timestamp), + l( + e.leftProjectionMatrix, + e.leftViewMatrix, + t, + n._getFieldOfView('left'), + n._getEyeOffset('left'), + n, + ), + l( + e.rightProjectionMatrix, + e.rightViewMatrix, + t, + n._getFieldOfView('right'), + n._getEyeOffset('right'), + n, + ), + !0) + ) + } + })(), + R = function () { + var e = window.self !== window.top, + t = P(document.referrer), + n = P(window.location.href) + return e && t !== n + }, + P = function (e) { + var t, + n = e.indexOf('://') + t = -1 !== n ? n + 3 : 0 + var r = e.indexOf('/', t) + return -1 === r && (r = e.length), e.substring(0, r) + }, + D = function (e) { + return e.w > 1 + ? (console.warn('getQuaternionAngle: w > 1'), 0) + : 2 * Math.acos(e.w) + }, + O = (function () { + var e = {} + return function (t, n) { + void 0 === e[t] && + (console.warn('webvr-polyfill: ' + n), (e[t] = !0)) + } + })(), + I = function (e, t) { + O( + e, + e + + ' has been deprecated. This may not work on native WebVR displays. ' + + (t ? 'Please use ' + t + ' instead.' : ''), + ) + } + function B(e, t, n) { + if (t) { + for (var r = [], i = null, o = 0; o < t.length; ++o) + switch ((a = t[o])) { + case e.TEXTURE_BINDING_2D: + case e.TEXTURE_BINDING_CUBE_MAP: + if ((l = t[++o]) < e.TEXTURE0 || l > e.TEXTURE31) { + console.error( + 'TEXTURE_BINDING_2D or TEXTURE_BINDING_CUBE_MAP must be followed by a valid texture unit', + ), + r.push(null, null) + break + } + i || (i = e.getParameter(e.ACTIVE_TEXTURE)), + e.activeTexture(l), + r.push(e.getParameter(a), null) + break + case e.ACTIVE_TEXTURE: + ;(i = e.getParameter(e.ACTIVE_TEXTURE)), r.push(null) + break + default: + r.push(e.getParameter(a)) + } + for (n(e), o = 0; o < t.length; ++o) { + var a = t[o], + s = r[o] + switch (a) { + case e.ACTIVE_TEXTURE: + break + case e.ARRAY_BUFFER_BINDING: + e.bindBuffer(e.ARRAY_BUFFER, s) + break + case e.COLOR_CLEAR_VALUE: + e.clearColor(s[0], s[1], s[2], s[3]) + break + case e.COLOR_WRITEMASK: + e.colorMask(s[0], s[1], s[2], s[3]) + break + case e.CURRENT_PROGRAM: + e.useProgram(s) + break + case e.ELEMENT_ARRAY_BUFFER_BINDING: + e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, s) + break + case e.FRAMEBUFFER_BINDING: + e.bindFramebuffer(e.FRAMEBUFFER, s) + break + case e.RENDERBUFFER_BINDING: + e.bindRenderbuffer(e.RENDERBUFFER, s) + break + case e.TEXTURE_BINDING_2D: + if ((l = t[++o]) < e.TEXTURE0 || l > e.TEXTURE31) break + e.activeTexture(l), e.bindTexture(e.TEXTURE_2D, s) + break + case e.TEXTURE_BINDING_CUBE_MAP: + var l + if ((l = t[++o]) < e.TEXTURE0 || l > e.TEXTURE31) break + e.activeTexture(l), e.bindTexture(e.TEXTURE_CUBE_MAP, s) + break + case e.VIEWPORT: + e.viewport(s[0], s[1], s[2], s[3]) + break + case e.BLEND: + case e.CULL_FACE: + case e.DEPTH_TEST: + case e.SCISSOR_TEST: + case e.STENCIL_TEST: + s ? e.enable(a) : e.disable(a) + break + default: + console.log('No GL restore behavior for 0x' + a.toString(16)) + } + i && e.activeTexture(i) + } + } else n(e) + } + var F = B, + k = [ + 'attribute vec2 position;', + 'attribute vec3 texCoord;', + 'varying vec2 vTexCoord;', + 'uniform vec4 viewportOffsetScale[2];', + 'void main() {', + ' vec4 viewport = viewportOffsetScale[int(texCoord.z)];', + ' vTexCoord = (texCoord.xy * viewport.zw) + viewport.xy;', + ' gl_Position = vec4( position, 1.0, 1.0 );', + '}', + ].join('\n'), + N = [ + 'precision mediump float;', + 'uniform sampler2D diffuse;', + 'varying vec2 vTexCoord;', + 'void main() {', + ' gl_FragColor = texture2D(diffuse, vTexCoord);', + '}', + ].join('\n') + function U(e, t, n, r) { + ;(this.gl = e), + (this.cardboardUI = t), + (this.bufferScale = n), + (this.dirtySubmitFrameBindings = r), + (this.ctxAttribs = e.getContextAttributes()), + (this.instanceExt = e.getExtension('ANGLE_instanced_arrays')), + (this.meshWidth = 20), + (this.meshHeight = 20), + (this.bufferWidth = e.drawingBufferWidth), + (this.bufferHeight = e.drawingBufferHeight), + (this.realBindFramebuffer = e.bindFramebuffer), + (this.realEnable = e.enable), + (this.realDisable = e.disable), + (this.realColorMask = e.colorMask), + (this.realClearColor = e.clearColor), + (this.realViewport = e.viewport), + l() || + ((this.realCanvasWidth = Object.getOwnPropertyDescriptor( + e.canvas.__proto__, + 'width', + )), + (this.realCanvasHeight = Object.getOwnPropertyDescriptor( + e.canvas.__proto__, + 'height', + ))), + (this.isPatched = !1), + (this.lastBoundFramebuffer = null), + (this.cullFace = !1), + (this.depthTest = !1), + (this.blend = !1), + (this.scissorTest = !1), + (this.stencilTest = !1), + (this.viewport = [0, 0, 0, 0]), + (this.colorMask = [!0, !0, !0, !0]), + (this.clearColor = [0, 0, 0, 0]), + (this.attribs = { position: 0, texCoord: 1 }), + (this.program = E(e, k, N, this.attribs)), + (this.uniforms = M(e, this.program)), + (this.viewportOffsetScale = new Float32Array(8)), + this.setTextureBounds(), + (this.vertexBuffer = e.createBuffer()), + (this.indexBuffer = e.createBuffer()), + (this.indexCount = 0), + (this.renderTarget = e.createTexture()), + (this.framebuffer = e.createFramebuffer()), + (this.depthStencilBuffer = null), + (this.depthBuffer = null), + (this.stencilBuffer = null), + this.ctxAttribs.depth && this.ctxAttribs.stencil + ? (this.depthStencilBuffer = e.createRenderbuffer()) + : this.ctxAttribs.depth + ? (this.depthBuffer = e.createRenderbuffer()) + : this.ctxAttribs.stencil && + (this.stencilBuffer = e.createRenderbuffer()), + this.patch(), + this.onResize() + } + ;(U.prototype.destroy = function () { + var e = this.gl + this.unpatch(), + e.deleteProgram(this.program), + e.deleteBuffer(this.vertexBuffer), + e.deleteBuffer(this.indexBuffer), + e.deleteTexture(this.renderTarget), + e.deleteFramebuffer(this.framebuffer), + this.depthStencilBuffer && + e.deleteRenderbuffer(this.depthStencilBuffer), + this.depthBuffer && e.deleteRenderbuffer(this.depthBuffer), + this.stencilBuffer && e.deleteRenderbuffer(this.stencilBuffer), + this.cardboardUI && this.cardboardUI.destroy() + }), + (U.prototype.onResize = function () { + var e = this.gl, + t = this, + n = [e.RENDERBUFFER_BINDING, e.TEXTURE_BINDING_2D, e.TEXTURE0] + F(e, n, function (e) { + t.realBindFramebuffer.call(e, e.FRAMEBUFFER, null), + t.scissorTest && t.realDisable.call(e, e.SCISSOR_TEST), + t.realColorMask.call(e, !0, !0, !0, !0), + t.realViewport.call( + e, + 0, + 0, + e.drawingBufferWidth, + e.drawingBufferHeight, + ), + t.realClearColor.call(e, 0, 0, 0, 1), + e.clear(e.COLOR_BUFFER_BIT), + t.realBindFramebuffer.call(e, e.FRAMEBUFFER, t.framebuffer), + e.bindTexture(e.TEXTURE_2D, t.renderTarget), + e.texImage2D( + e.TEXTURE_2D, + 0, + t.ctxAttribs.alpha ? e.RGBA : e.RGB, + t.bufferWidth, + t.bufferHeight, + 0, + t.ctxAttribs.alpha ? e.RGBA : e.RGB, + e.UNSIGNED_BYTE, + null, + ), + e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.LINEAR), + e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), + e.texParameteri( + e.TEXTURE_2D, + e.TEXTURE_WRAP_S, + e.CLAMP_TO_EDGE, + ), + e.texParameteri( + e.TEXTURE_2D, + e.TEXTURE_WRAP_T, + e.CLAMP_TO_EDGE, + ), + e.framebufferTexture2D( + e.FRAMEBUFFER, + e.COLOR_ATTACHMENT0, + e.TEXTURE_2D, + t.renderTarget, + 0, + ), + t.ctxAttribs.depth && t.ctxAttribs.stencil + ? (e.bindRenderbuffer(e.RENDERBUFFER, t.depthStencilBuffer), + e.renderbufferStorage( + e.RENDERBUFFER, + e.DEPTH_STENCIL, + t.bufferWidth, + t.bufferHeight, + ), + e.framebufferRenderbuffer( + e.FRAMEBUFFER, + e.DEPTH_STENCIL_ATTACHMENT, + e.RENDERBUFFER, + t.depthStencilBuffer, + )) + : t.ctxAttribs.depth + ? (e.bindRenderbuffer(e.RENDERBUFFER, t.depthBuffer), + e.renderbufferStorage( + e.RENDERBUFFER, + e.DEPTH_COMPONENT16, + t.bufferWidth, + t.bufferHeight, + ), + e.framebufferRenderbuffer( + e.FRAMEBUFFER, + e.DEPTH_ATTACHMENT, + e.RENDERBUFFER, + t.depthBuffer, + )) + : t.ctxAttribs.stencil && + (e.bindRenderbuffer(e.RENDERBUFFER, t.stencilBuffer), + e.renderbufferStorage( + e.RENDERBUFFER, + e.STENCIL_INDEX8, + t.bufferWidth, + t.bufferHeight, + ), + e.framebufferRenderbuffer( + e.FRAMEBUFFER, + e.STENCIL_ATTACHMENT, + e.RENDERBUFFER, + t.stencilBuffer, + )), + !e.checkFramebufferStatus(e.FRAMEBUFFER) === + e.FRAMEBUFFER_COMPLETE && + console.error('Framebuffer incomplete!'), + t.realBindFramebuffer.call( + e, + e.FRAMEBUFFER, + t.lastBoundFramebuffer, + ), + t.scissorTest && t.realEnable.call(e, e.SCISSOR_TEST), + t.realColorMask.apply(e, t.colorMask), + t.realViewport.apply(e, t.viewport), + t.realClearColor.apply(e, t.clearColor) + }), + this.cardboardUI && this.cardboardUI.onResize() + }), + (U.prototype.patch = function () { + if (!this.isPatched) { + var e = this, + t = this.gl.canvas, + n = this.gl + l() || + ((t.width = y() * this.bufferScale), + (t.height = b() * this.bufferScale), + Object.defineProperty(t, 'width', { + configurable: !0, + enumerable: !0, + get: function () { + return e.bufferWidth + }, + set: function (n) { + ;(e.bufferWidth = n), + e.realCanvasWidth.set.call(t, n), + e.onResize() + }, + }), + Object.defineProperty(t, 'height', { + configurable: !0, + enumerable: !0, + get: function () { + return e.bufferHeight + }, + set: function (n) { + ;(e.bufferHeight = n), + e.realCanvasHeight.set.call(t, n), + e.onResize() + }, + })), + (this.lastBoundFramebuffer = n.getParameter( + n.FRAMEBUFFER_BINDING, + )), + null == this.lastBoundFramebuffer && + ((this.lastBoundFramebuffer = this.framebuffer), + this.gl.bindFramebuffer(n.FRAMEBUFFER, this.framebuffer)), + (this.gl.bindFramebuffer = function (t, r) { + ;(e.lastBoundFramebuffer = r || e.framebuffer), + e.realBindFramebuffer.call(n, t, e.lastBoundFramebuffer) + }), + (this.cullFace = n.getParameter(n.CULL_FACE)), + (this.depthTest = n.getParameter(n.DEPTH_TEST)), + (this.blend = n.getParameter(n.BLEND)), + (this.scissorTest = n.getParameter(n.SCISSOR_TEST)), + (this.stencilTest = n.getParameter(n.STENCIL_TEST)), + (n.enable = function (t) { + switch (t) { + case n.CULL_FACE: + e.cullFace = !0 + break + case n.DEPTH_TEST: + e.depthTest = !0 + break + case n.BLEND: + e.blend = !0 + break + case n.SCISSOR_TEST: + e.scissorTest = !0 + break + case n.STENCIL_TEST: + e.stencilTest = !0 + } + e.realEnable.call(n, t) + }), + (n.disable = function (t) { + switch (t) { + case n.CULL_FACE: + e.cullFace = !1 + break + case n.DEPTH_TEST: + e.depthTest = !1 + break + case n.BLEND: + e.blend = !1 + break + case n.SCISSOR_TEST: + e.scissorTest = !1 + break + case n.STENCIL_TEST: + e.stencilTest = !1 + } + e.realDisable.call(n, t) + }), + (this.colorMask = n.getParameter(n.COLOR_WRITEMASK)), + (n.colorMask = function (t, r, i, o) { + ;(e.colorMask[0] = t), + (e.colorMask[1] = r), + (e.colorMask[2] = i), + (e.colorMask[3] = o), + e.realColorMask.call(n, t, r, i, o) + }), + (this.clearColor = n.getParameter(n.COLOR_CLEAR_VALUE)), + (n.clearColor = function (t, r, i, o) { + ;(e.clearColor[0] = t), + (e.clearColor[1] = r), + (e.clearColor[2] = i), + (e.clearColor[3] = o), + e.realClearColor.call(n, t, r, i, o) + }), + (this.viewport = n.getParameter(n.VIEWPORT)), + (n.viewport = function (t, r, i, o) { + ;(e.viewport[0] = t), + (e.viewport[1] = r), + (e.viewport[2] = i), + (e.viewport[3] = o), + e.realViewport.call(n, t, r, i, o) + }), + (this.isPatched = !0), + C(t) + } + }), + (U.prototype.unpatch = function () { + if (this.isPatched) { + var e = this.gl, + t = this.gl.canvas + l() || + (Object.defineProperty(t, 'width', this.realCanvasWidth), + Object.defineProperty(t, 'height', this.realCanvasHeight)), + (t.width = this.bufferWidth), + (t.height = this.bufferHeight), + (e.bindFramebuffer = this.realBindFramebuffer), + (e.enable = this.realEnable), + (e.disable = this.realDisable), + (e.colorMask = this.realColorMask), + (e.clearColor = this.realClearColor), + (e.viewport = this.realViewport), + this.lastBoundFramebuffer == this.framebuffer && + e.bindFramebuffer(e.FRAMEBUFFER, null), + (this.isPatched = !1), + setTimeout(function () { + C(t) + }, 1) + } + }), + (U.prototype.setTextureBounds = function (e, t) { + e || (e = [0, 0, 0.5, 1]), + t || (t = [0.5, 0, 0.5, 1]), + (this.viewportOffsetScale[0] = e[0]), + (this.viewportOffsetScale[1] = e[1]), + (this.viewportOffsetScale[2] = e[2]), + (this.viewportOffsetScale[3] = e[3]), + (this.viewportOffsetScale[4] = t[0]), + (this.viewportOffsetScale[5] = t[1]), + (this.viewportOffsetScale[6] = t[2]), + (this.viewportOffsetScale[7] = t[3]) + }), + (U.prototype.submitFrame = function () { + var e = this.gl, + t = this, + n = [] + if ( + (this.dirtySubmitFrameBindings || + n.push( + e.CURRENT_PROGRAM, + e.ARRAY_BUFFER_BINDING, + e.ELEMENT_ARRAY_BUFFER_BINDING, + e.TEXTURE_BINDING_2D, + e.TEXTURE0, + ), + F(e, n, function (e) { + t.realBindFramebuffer.call(e, e.FRAMEBUFFER, null) + var n = 0, + r = 0 + t.instanceExt && + ((n = e.getVertexAttrib( + t.attribs.position, + t.instanceExt.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, + )), + (r = e.getVertexAttrib( + t.attribs.texCoord, + t.instanceExt.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, + ))), + t.cullFace && t.realDisable.call(e, e.CULL_FACE), + t.depthTest && t.realDisable.call(e, e.DEPTH_TEST), + t.blend && t.realDisable.call(e, e.BLEND), + t.scissorTest && t.realDisable.call(e, e.SCISSOR_TEST), + t.stencilTest && t.realDisable.call(e, e.STENCIL_TEST), + t.realColorMask.call(e, !0, !0, !0, !0), + t.realViewport.call( + e, + 0, + 0, + e.drawingBufferWidth, + e.drawingBufferHeight, + ), + (t.ctxAttribs.alpha || l()) && + (t.realClearColor.call(e, 0, 0, 0, 1), + e.clear(e.COLOR_BUFFER_BIT)), + e.useProgram(t.program), + e.bindBuffer(e.ELEMENT_ARRAY_BUFFER, t.indexBuffer), + e.bindBuffer(e.ARRAY_BUFFER, t.vertexBuffer), + e.enableVertexAttribArray(t.attribs.position), + e.enableVertexAttribArray(t.attribs.texCoord), + e.vertexAttribPointer( + t.attribs.position, + 2, + e.FLOAT, + !1, + 20, + 0, + ), + e.vertexAttribPointer( + t.attribs.texCoord, + 3, + e.FLOAT, + !1, + 20, + 8, + ), + t.instanceExt && + (0 != n && + t.instanceExt.vertexAttribDivisorANGLE( + t.attribs.position, + 0, + ), + 0 != r && + t.instanceExt.vertexAttribDivisorANGLE( + t.attribs.texCoord, + 0, + )), + e.activeTexture(e.TEXTURE0), + e.uniform1i(t.uniforms.diffuse, 0), + e.bindTexture(e.TEXTURE_2D, t.renderTarget), + e.uniform4fv( + t.uniforms.viewportOffsetScale, + t.viewportOffsetScale, + ), + e.drawElements( + e.TRIANGLES, + t.indexCount, + e.UNSIGNED_SHORT, + 0, + ), + t.cardboardUI && t.cardboardUI.renderNoState(), + t.realBindFramebuffer.call( + t.gl, + e.FRAMEBUFFER, + t.framebuffer, + ), + t.ctxAttribs.preserveDrawingBuffer || + (t.realClearColor.call(e, 0, 0, 0, 0), + e.clear(e.COLOR_BUFFER_BIT)), + t.dirtySubmitFrameBindings || + t.realBindFramebuffer.call( + e, + e.FRAMEBUFFER, + t.lastBoundFramebuffer, + ), + t.cullFace && t.realEnable.call(e, e.CULL_FACE), + t.depthTest && t.realEnable.call(e, e.DEPTH_TEST), + t.blend && t.realEnable.call(e, e.BLEND), + t.scissorTest && t.realEnable.call(e, e.SCISSOR_TEST), + t.stencilTest && t.realEnable.call(e, e.STENCIL_TEST), + t.realColorMask.apply(e, t.colorMask), + t.realViewport.apply(e, t.viewport), + (!t.ctxAttribs.alpha && t.ctxAttribs.preserveDrawingBuffer) || + t.realClearColor.apply(e, t.clearColor), + t.instanceExt && + (0 != n && + t.instanceExt.vertexAttribDivisorANGLE( + t.attribs.position, + n, + ), + 0 != r && + t.instanceExt.vertexAttribDivisorANGLE( + t.attribs.texCoord, + r, + )) + }), + l()) + ) { + var r = e.canvas + ;(r.width == t.bufferWidth && r.height == t.bufferHeight) || + ((t.bufferWidth = r.width), + (t.bufferHeight = r.height), + t.onResize()) + } + }), + (U.prototype.updateDeviceInfo = function (e) { + var t = this.gl, + n = this, + r = [t.ARRAY_BUFFER_BINDING, t.ELEMENT_ARRAY_BUFFER_BINDING] + F(t, r, function (t) { + var r = n.computeMeshVertices_(n.meshWidth, n.meshHeight, e) + if ( + (t.bindBuffer(t.ARRAY_BUFFER, n.vertexBuffer), + t.bufferData(t.ARRAY_BUFFER, r, t.STATIC_DRAW), + !n.indexCount) + ) { + var i = n.computeMeshIndices_(n.meshWidth, n.meshHeight) + t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, n.indexBuffer), + t.bufferData(t.ELEMENT_ARRAY_BUFFER, i, t.STATIC_DRAW), + (n.indexCount = i.length) + } + }) + }), + (U.prototype.computeMeshVertices_ = function (e, t, n) { + for ( + var r = new Float32Array(2 * e * t * 5), + i = n.getLeftEyeVisibleTanAngles(), + o = n.getLeftEyeNoLensTanAngles(), + a = n.getLeftEyeVisibleScreenRect(o), + l = 0, + c = 0; + c < 2; + c++ + ) { + for (var u = 0; u < t; u++) + for (var h = 0; h < e; h++, l++) { + var d = h / (e - 1), + p = u / (t - 1), + f = d, + m = p, + v = s(i[0], i[2], d), + g = s(i[3], i[1], p), + y = Math.sqrt(v * v + g * g), + b = n.distortion.distortInverse(y), + A = (g * b) / y + ;(d = ((v * b) / y - o[0]) / (o[2] - o[0])), + (p = (A - o[3]) / (o[1] - o[3])), + (d = 2 * (a.x + d * a.width - 0.5)), + (p = 2 * (a.y + p * a.height - 0.5)), + (r[5 * l + 0] = d), + (r[5 * l + 1] = p), + (r[5 * l + 2] = f), + (r[5 * l + 3] = m), + (r[5 * l + 4] = c) + } + var w = i[2] - i[0] + ;(i[0] = -(w + i[0])), + (i[2] = w - i[2]), + (w = o[2] - o[0]), + (o[0] = -(w + o[0])), + (o[2] = w - o[2]), + (a.x = 1 - (a.x + a.width)) + } + return r + }), + (U.prototype.computeMeshIndices_ = function (e, t) { + for ( + var n = new Uint16Array(2 * (e - 1) * (t - 1) * 6), + r = e / 2, + i = t / 2, + o = 0, + a = 0, + s = 0; + s < 2; + s++ + ) + for (var l = 0; l < t; l++) + for (var c = 0; c < e; c++, o++) + 0 != c && + 0 != l && + (c <= r == l <= i + ? ((n[a++] = o), + (n[a++] = o - e - 1), + (n[a++] = o - e), + (n[a++] = o - e - 1), + (n[a++] = o), + (n[a++] = o - 1)) + : ((n[a++] = o - 1), + (n[a++] = o - e), + (n[a++] = o), + (n[a++] = o - e), + (n[a++] = o - 1), + (n[a++] = o - e - 1))) + return n + }), + (U.prototype.getOwnPropertyDescriptor_ = function (e, t) { + var n = Object.getOwnPropertyDescriptor(e, t) + return ( + (void 0 !== n.get && void 0 !== n.set) || + ((n.configurable = !0), + (n.enumerable = !0), + (n.get = function () { + return this.getAttribute(t) + }), + (n.set = function (e) { + this.setAttribute(t, e) + })), + n + ) + }) + var H = [ + 'attribute vec2 position;', + 'uniform mat4 projectionMat;', + 'void main() {', + ' gl_Position = projectionMat * vec4( position, -1.0, 1.0 );', + '}', + ].join('\n'), + G = [ + 'precision mediump float;', + 'uniform vec4 color;', + 'void main() {', + ' gl_FragColor = color;', + '}', + ].join('\n'), + z = Math.PI / 180, + j = 60, + V = 12, + W = 20, + q = 1, + X = 0.75, + Y = 0.3125, + Q = 4, + Z = 28, + K = 1.5 + function J(e) { + ;(this.gl = e), + (this.attribs = { position: 0 }), + (this.program = E(e, H, G, this.attribs)), + (this.uniforms = M(e, this.program)), + (this.vertexBuffer = e.createBuffer()), + (this.gearOffset = 0), + (this.gearVertexCount = 0), + (this.arrowOffset = 0), + (this.arrowVertexCount = 0), + (this.projMat = new Float32Array(16)), + (this.listener = null), + this.onResize() + } + function $(e) { + this.coefficients = e + } + ;(J.prototype.destroy = function () { + var e = this.gl + this.listener && + e.canvas.removeEventListener('click', this.listener, !1), + e.deleteProgram(this.program), + e.deleteBuffer(this.vertexBuffer) + }), + (J.prototype.listen = function (e, t) { + var n = this.gl.canvas + ;(this.listener = function (r) { + var i = n.clientWidth / 2, + o = Z * K + r.clientX > i - o && + r.clientX < i + o && + r.clientY > n.clientHeight - o + ? e(r) + : r.clientX < o && r.clientY < o && t(r) + }), + n.addEventListener('click', this.listener, !1) + }), + (J.prototype.onResize = function () { + var e = this.gl, + t = this, + n = [e.ARRAY_BUFFER_BINDING] + F(e, n, function (e) { + var n = [], + r = e.drawingBufferWidth / 2, + i = + Math.max(screen.width, screen.height) * + window.devicePixelRatio, + o = (e.drawingBufferWidth / i) * window.devicePixelRatio, + a = (Q * o) / 2, + s = Z * K * o, + l = (Z * o) / 2, + c = (Z * K - Z) * o + function u(e, t) { + var i = (90 - e) * z, + o = Math.cos(i), + a = Math.sin(i) + n.push(Y * o * l + r, Y * a * l + l), + n.push(t * o * l + r, t * a * l + l) + } + n.push(r - a, s), + n.push(r - a, e.drawingBufferHeight), + n.push(r + a, s), + n.push(r + a, e.drawingBufferHeight), + (t.gearOffset = n.length / 2) + for (var h = 0; h <= 6; h++) { + var d = h * j + u(d, q), + u(d + V, q), + u(d + W, X), + u(d + (j - W), X), + u(d + (j - V), q) + } + function p(t, r) { + n.push(c + t, e.drawingBufferHeight - c - r) + } + ;(t.gearVertexCount = n.length / 2 - t.gearOffset), + (t.arrowOffset = n.length / 2) + var f = a / Math.sin(45 * z) + p(0, l), + p(l, 0), + p(l + f, f), + p(f, l + f), + p(f, l - f), + p(0, l), + p(l, 2 * l), + p(l + f, 2 * l - f), + p(f, l - f), + p(0, l), + p(f, l - a), + p(Z * o, l - a), + p(f, l + a), + p(Z * o, l + a), + (t.arrowVertexCount = n.length / 2 - t.arrowOffset), + e.bindBuffer(e.ARRAY_BUFFER, t.vertexBuffer), + e.bufferData(e.ARRAY_BUFFER, new Float32Array(n), e.STATIC_DRAW) + }) + }), + (J.prototype.render = function () { + var e = this.gl, + t = this, + n = [ + e.CULL_FACE, + e.DEPTH_TEST, + e.BLEND, + e.SCISSOR_TEST, + e.STENCIL_TEST, + e.COLOR_WRITEMASK, + e.VIEWPORT, + e.CURRENT_PROGRAM, + e.ARRAY_BUFFER_BINDING, + ] + F(e, n, function (e) { + e.disable(e.CULL_FACE), + e.disable(e.DEPTH_TEST), + e.disable(e.BLEND), + e.disable(e.SCISSOR_TEST), + e.disable(e.STENCIL_TEST), + e.colorMask(!0, !0, !0, !0), + e.viewport(0, 0, e.drawingBufferWidth, e.drawingBufferHeight), + t.renderNoState() + }) + }), + (J.prototype.renderNoState = function () { + var e = this.gl + e.useProgram(this.program), + e.bindBuffer(e.ARRAY_BUFFER, this.vertexBuffer), + e.enableVertexAttribArray(this.attribs.position), + e.vertexAttribPointer( + this.attribs.position, + 2, + e.FLOAT, + !1, + 8, + 0, + ), + e.uniform4f(this.uniforms.color, 1, 1, 1, 1), + _( + this.projMat, + 0, + e.drawingBufferWidth, + 0, + e.drawingBufferHeight, + 0.1, + 1024, + ), + e.uniformMatrix4fv(this.uniforms.projectionMat, !1, this.projMat), + e.drawArrays(e.TRIANGLE_STRIP, 0, 4), + e.drawArrays( + e.TRIANGLE_STRIP, + this.gearOffset, + this.gearVertexCount, + ), + e.drawArrays( + e.TRIANGLE_STRIP, + this.arrowOffset, + this.arrowVertexCount, + ) + }), + ($.prototype.distortInverse = function (e) { + for ( + var t = 0, n = 1, r = e - this.distort(t); + Math.abs(n - t) > 1e-4; + + ) { + var i = e - this.distort(n), + o = n - i * ((n - t) / (i - r)) + ;(t = n), (n = o), (r = i) + } + return n + }), + ($.prototype.distort = function (e) { + for (var t = e * e, n = 0, r = 0; r < this.coefficients.length; r++) + n = t * (n + this.coefficients[r]) + return (n + 1) * e + }) + var ee = Math.PI / 180, + te = 180 / Math.PI, + ne = function (e, t, n) { + ;(this.x = e || 0), (this.y = t || 0), (this.z = n || 0) + } + ne.prototype = { + constructor: ne, + set: function (e, t, n) { + return (this.x = e), (this.y = t), (this.z = n), this + }, + copy: function (e) { + return (this.x = e.x), (this.y = e.y), (this.z = e.z), this + }, + length: function () { + return Math.sqrt( + this.x * this.x + this.y * this.y + this.z * this.z, + ) + }, + normalize: function () { + var e = this.length() + if (0 !== e) { + var t = 1 / e + this.multiplyScalar(t) + } else (this.x = 0), (this.y = 0), (this.z = 0) + return this + }, + multiplyScalar: function (e) { + ;(this.x *= e), (this.y *= e), (this.z *= e) + }, + applyQuaternion: function (e) { + var t = this.x, + n = this.y, + r = this.z, + i = e.x, + o = e.y, + a = e.z, + s = e.w, + l = s * t + o * r - a * n, + c = s * n + a * t - i * r, + u = s * r + i * n - o * t, + h = -i * t - o * n - a * r + return ( + (this.x = l * s + h * -i + c * -a - u * -o), + (this.y = c * s + h * -o + u * -i - l * -a), + (this.z = u * s + h * -a + l * -o - c * -i), + this + ) + }, + dot: function (e) { + return this.x * e.x + this.y * e.y + this.z * e.z + }, + crossVectors: function (e, t) { + var n = e.x, + r = e.y, + i = e.z, + o = t.x, + a = t.y, + s = t.z + return ( + (this.x = r * s - i * a), + (this.y = i * o - n * s), + (this.z = n * a - r * o), + this + ) + }, + } + var re = function (e, t, n, r) { + ;(this.x = e || 0), + (this.y = t || 0), + (this.z = n || 0), + (this.w = void 0 !== r ? r : 1) + } + function ie(e) { + ;(this.width = e.width || y()), + (this.height = e.height || b()), + (this.widthMeters = e.widthMeters), + (this.heightMeters = e.heightMeters), + (this.bevelMeters = e.bevelMeters) + } + re.prototype = { + constructor: re, + set: function (e, t, n, r) { + return (this.x = e), (this.y = t), (this.z = n), (this.w = r), this + }, + copy: function (e) { + return ( + (this.x = e.x), + (this.y = e.y), + (this.z = e.z), + (this.w = e.w), + this + ) + }, + setFromEulerXYZ: function (e, t, n) { + var r = Math.cos(e / 2), + i = Math.cos(t / 2), + o = Math.cos(n / 2), + a = Math.sin(e / 2), + s = Math.sin(t / 2), + l = Math.sin(n / 2) + return ( + (this.x = a * i * o + r * s * l), + (this.y = r * s * o - a * i * l), + (this.z = r * i * l + a * s * o), + (this.w = r * i * o - a * s * l), + this + ) + }, + setFromEulerYXZ: function (e, t, n) { + var r = Math.cos(e / 2), + i = Math.cos(t / 2), + o = Math.cos(n / 2), + a = Math.sin(e / 2), + s = Math.sin(t / 2), + l = Math.sin(n / 2) + return ( + (this.x = a * i * o + r * s * l), + (this.y = r * s * o - a * i * l), + (this.z = r * i * l - a * s * o), + (this.w = r * i * o + a * s * l), + this + ) + }, + setFromAxisAngle: function (e, t) { + var n = t / 2, + r = Math.sin(n) + return ( + (this.x = e.x * r), + (this.y = e.y * r), + (this.z = e.z * r), + (this.w = Math.cos(n)), + this + ) + }, + multiply: function (e) { + return this.multiplyQuaternions(this, e) + }, + multiplyQuaternions: function (e, t) { + var n = e.x, + r = e.y, + i = e.z, + o = e.w, + a = t.x, + s = t.y, + l = t.z, + c = t.w + return ( + (this.x = n * c + o * a + r * l - i * s), + (this.y = r * c + o * s + i * a - n * l), + (this.z = i * c + o * l + n * s - r * a), + (this.w = o * c - n * a - r * s - i * l), + this + ) + }, + inverse: function () { + return ( + (this.x *= -1), + (this.y *= -1), + (this.z *= -1), + this.normalize(), + this + ) + }, + normalize: function () { + var e = Math.sqrt( + this.x * this.x + + this.y * this.y + + this.z * this.z + + this.w * this.w, + ) + return ( + 0 === e + ? ((this.x = 0), (this.y = 0), (this.z = 0), (this.w = 1)) + : ((e = 1 / e), + (this.x = this.x * e), + (this.y = this.y * e), + (this.z = this.z * e), + (this.w = this.w * e)), + this + ) + }, + slerp: function (e, t) { + if (0 === t) return this + if (1 === t) return this.copy(e) + var n = this.x, + r = this.y, + i = this.z, + o = this.w, + a = o * e.w + n * e.x + r * e.y + i * e.z + if ( + (a < 0 + ? ((this.w = -e.w), + (this.x = -e.x), + (this.y = -e.y), + (this.z = -e.z), + (a = -a)) + : this.copy(e), + a >= 1) + ) + return ( + (this.w = o), (this.x = n), (this.y = r), (this.z = i), this + ) + var s = Math.acos(a), + l = Math.sqrt(1 - a * a) + if (Math.abs(l) < 0.001) + return ( + (this.w = 0.5 * (o + this.w)), + (this.x = 0.5 * (n + this.x)), + (this.y = 0.5 * (r + this.y)), + (this.z = 0.5 * (i + this.z)), + this + ) + var c = Math.sin((1 - t) * s) / l, + u = Math.sin(t * s) / l + return ( + (this.w = o * c + this.w * u), + (this.x = n * c + this.x * u), + (this.y = r * c + this.y * u), + (this.z = i * c + this.z * u), + this + ) + }, + setFromUnitVectors: (function () { + var e, + t, + n = 1e-6 + return function (r, i) { + return ( + void 0 === e && (e = new ne()), + (t = r.dot(i) + 1) < n + ? ((t = 0), + Math.abs(r.x) > Math.abs(r.z) + ? e.set(-r.y, r.x, 0) + : e.set(0, -r.z, r.y)) + : e.crossVectors(r, i), + (this.x = e.x), + (this.y = e.y), + (this.z = e.z), + (this.w = t), + this.normalize(), + this + ) + } + })(), + } + var oe = new ie({ + widthMeters: 0.11, + heightMeters: 0.062, + bevelMeters: 0.004, + }), + ae = new ie({ + widthMeters: 0.1038, + heightMeters: 0.0584, + bevelMeters: 0.004, + }), + se = { + CardboardV1: new ce({ + id: 'CardboardV1', + label: 'Cardboard I/O 2014', + fov: 40, + interLensDistance: 0.06, + baselineLensDistance: 0.035, + screenLensDistance: 0.042, + distortionCoefficients: [0.441, 0.156], + inverseCoefficients: [ + -0.4410035, 0.42756155, -0.4804439, 0.5460139, -0.58821183, + 0.5733938, -0.48303202, 0.33299083, -0.17573841, 0.0651772, + -0.01488963, 0.001559834, + ], + }), + CardboardV2: new ce({ + id: 'CardboardV2', + label: 'Cardboard I/O 2015', + fov: 60, + interLensDistance: 0.064, + baselineLensDistance: 0.035, + screenLensDistance: 0.039, + distortionCoefficients: [0.34, 0.55], + inverseCoefficients: [ + -0.33836704, -0.18162185, 0.862655, -1.2462051, 1.0560602, + -0.58208317, 0.21609078, -0.05444823, 0.009177956, + -0.0009904169, 6183535e-11, -16981803e-13, + ], + }), + } + function le(e, t) { + ;(this.viewer = se.CardboardV2), + this.updateDeviceParams(e), + (this.distortion = new $(this.viewer.distortionCoefficients)) + for (var n = 0; n < t.length; n++) { + var r = t[n] + se[r.id] = new ce(r) + } + } + function ce(e) { + ;(this.id = e.id), + (this.label = e.label), + (this.fov = e.fov), + (this.interLensDistance = e.interLensDistance), + (this.baselineLensDistance = e.baselineLensDistance), + (this.screenLensDistance = e.screenLensDistance), + (this.distortionCoefficients = e.distortionCoefficients), + (this.inverseCoefficients = e.inverseCoefficients) + } + ;(le.prototype.updateDeviceParams = function (e) { + this.device = this.determineDevice_(e) || this.device + }), + (le.prototype.getDevice = function () { + return this.device + }), + (le.prototype.setViewer = function (e) { + ;(this.viewer = e), + (this.distortion = new $(this.viewer.distortionCoefficients)) + }), + (le.prototype.determineDevice_ = function (e) { + if (!e) + return l() + ? (console.warn('Using fallback iOS device measurements.'), ae) + : (console.warn('Using fallback Android device measurements.'), + oe) + var t = 0.0254, + n = t / e.xdpi, + r = t / e.ydpi + return new ie({ + widthMeters: n * y(), + heightMeters: r * b(), + bevelMeters: 0.001 * e.bevelMm, + }) + }), + (le.prototype.getDistortedFieldOfViewLeftEye = function () { + var e = this.viewer, + t = this.device, + n = this.distortion, + r = e.screenLensDistance, + i = (t.widthMeters - e.interLensDistance) / 2, + o = e.interLensDistance / 2, + a = e.baselineLensDistance - t.bevelMeters, + s = t.heightMeters - a, + l = te * Math.atan(n.distort(i / r)), + c = te * Math.atan(n.distort(o / r)), + u = te * Math.atan(n.distort(a / r)), + h = te * Math.atan(n.distort(s / r)) + return { + leftDegrees: Math.min(l, e.fov), + rightDegrees: Math.min(c, e.fov), + downDegrees: Math.min(u, e.fov), + upDegrees: Math.min(h, e.fov), + } + }), + (le.prototype.getLeftEyeVisibleTanAngles = function () { + var e = this.viewer, + t = this.device, + n = this.distortion, + r = Math.tan(-ee * e.fov), + i = Math.tan(ee * e.fov), + o = Math.tan(ee * e.fov), + a = Math.tan(-ee * e.fov), + s = t.widthMeters / 4, + l = t.heightMeters / 2, + c = e.baselineLensDistance - t.bevelMeters - l, + u = e.interLensDistance / 2 - s, + h = -c, + d = e.screenLensDistance, + p = n.distort((u - s) / d), + f = n.distort((h + l) / d), + m = n.distort((u + s) / d), + v = n.distort((h - l) / d), + g = new Float32Array(4) + return ( + (g[0] = Math.max(r, p)), + (g[1] = Math.min(i, f)), + (g[2] = Math.min(o, m)), + (g[3] = Math.max(a, v)), + g + ) + }), + (le.prototype.getLeftEyeNoLensTanAngles = function () { + var e = this.viewer, + t = this.device, + n = this.distortion, + r = new Float32Array(4), + i = n.distortInverse(Math.tan(-ee * e.fov)), + o = n.distortInverse(Math.tan(ee * e.fov)), + a = n.distortInverse(Math.tan(ee * e.fov)), + s = n.distortInverse(Math.tan(-ee * e.fov)), + l = t.widthMeters / 4, + c = t.heightMeters / 2, + u = e.baselineLensDistance - t.bevelMeters - c, + h = e.interLensDistance / 2 - l, + d = -u, + p = e.screenLensDistance, + f = (h - l) / p, + m = (d + c) / p, + v = (h + l) / p, + g = (d - c) / p + return ( + (r[0] = Math.max(i, f)), + (r[1] = Math.min(o, m)), + (r[2] = Math.min(a, v)), + (r[3] = Math.max(s, g)), + r + ) + }), + (le.prototype.getLeftEyeVisibleScreenRect = function (e) { + var t = this.viewer, + n = this.device, + r = t.screenLensDistance, + i = (n.widthMeters - t.interLensDistance) / 2, + o = t.baselineLensDistance - n.bevelMeters, + a = (e[0] * r + i) / n.widthMeters, + s = (e[1] * r + o) / n.heightMeters, + l = (e[2] * r + i) / n.widthMeters, + c = (e[3] * r + o) / n.heightMeters + return { x: a, y: c, width: l - a, height: s - c } + }), + (le.prototype.getFieldOfViewLeftEye = function (e) { + return e + ? this.getUndistortedFieldOfViewLeftEye() + : this.getDistortedFieldOfViewLeftEye() + }), + (le.prototype.getFieldOfViewRightEye = function (e) { + var t = this.getFieldOfViewLeftEye(e) + return { + leftDegrees: t.rightDegrees, + rightDegrees: t.leftDegrees, + upDegrees: t.upDegrees, + downDegrees: t.downDegrees, + } + }), + (le.prototype.getUndistortedFieldOfViewLeftEye = function () { + var e = this.getUndistortedParams_() + return { + leftDegrees: te * Math.atan(e.outerDist), + rightDegrees: te * Math.atan(e.innerDist), + downDegrees: te * Math.atan(e.bottomDist), + upDegrees: te * Math.atan(e.topDist), + } + }), + (le.prototype.getUndistortedViewportLeftEye = function () { + var e = this.getUndistortedParams_(), + t = this.viewer, + n = this.device, + r = t.screenLensDistance, + i = n.widthMeters / r, + o = n.heightMeters / r, + a = n.width / i, + s = n.height / o, + l = Math.round((e.eyePosX - e.outerDist) * a), + c = Math.round((e.eyePosY - e.bottomDist) * s) + return { + x: l, + y: c, + width: Math.round((e.eyePosX + e.innerDist) * a) - l, + height: Math.round((e.eyePosY + e.topDist) * s) - c, + } + }), + (le.prototype.getUndistortedParams_ = function () { + var e = this.viewer, + t = this.device, + n = this.distortion, + r = e.screenLensDistance, + i = e.interLensDistance / 2 / r, + o = t.widthMeters / r, + a = t.heightMeters / r, + s = o / 2 - i, + l = (e.baselineLensDistance - t.bevelMeters) / r, + c = e.fov, + u = n.distortInverse(Math.tan(ee * c)), + h = Math.min(s, u), + d = Math.min(i, u), + p = Math.min(l, u) + return { + outerDist: h, + innerDist: d, + topDist: Math.min(a - l, u), + bottomDist: p, + eyePosX: s, + eyePosY: l, + } + }), + (le.Viewers = se) + var ue = { + format: 1, + last_updated: '2019-11-09T17:36:14Z', + devices: [ + { + type: 'android', + rules: [{ mdmh: 'asus/*/Nexus 7/*' }, { ua: 'Nexus 7' }], + dpi: [320.8, 323], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'asus/*/ASUS_X00PD/*' }, { ua: 'ASUS_X00PD' }], + dpi: 245, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'asus/*/ASUS_X008D/*' }, { ua: 'ASUS_X008D' }], + dpi: 282, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'asus/*/ASUS_Z00AD/*' }, { ua: 'ASUS_Z00AD' }], + dpi: [403, 404.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel 2 XL/*' }, { ua: 'Pixel 2 XL' }], + dpi: 537.9, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel 3 XL/*' }, { ua: 'Pixel 3 XL' }], + dpi: [558.5, 553.8], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel XL/*' }, { ua: 'Pixel XL' }], + dpi: [537.9, 533], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel 3/*' }, { ua: 'Pixel 3' }], + dpi: 442.4, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel 2/*' }, { ua: 'Pixel 2' }], + dpi: 441, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'Google/*/Pixel/*' }, { ua: 'Pixel' }], + dpi: [432.6, 436.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'HTC/*/HTC6435LVW/*' }, { ua: 'HTC6435LVW' }], + dpi: [449.7, 443.3], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'HTC/*/HTC One XL/*' }, { ua: 'HTC One XL' }], + dpi: [315.3, 314.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'htc/*/Nexus 9/*' }, { ua: 'Nexus 9' }], + dpi: 289, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'HTC/*/HTC One M9/*' }, { ua: 'HTC One M9' }], + dpi: [442.5, 443.3], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'HTC/*/HTC One_M8/*' }, { ua: 'HTC One_M8' }], + dpi: [449.7, 447.4], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'HTC/*/HTC One/*' }, { ua: 'HTC One' }], + dpi: 472.8, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Huawei/*/Nexus 6P/*' }, { ua: 'Nexus 6P' }], + dpi: [515.1, 518], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Huawei/*/BLN-L24/*' }, { ua: 'HONORBLN-L24' }], + dpi: 480, + bw: 4, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'Huawei/*/BKL-L09/*' }, { ua: 'BKL-L09' }], + dpi: 403, + bw: 3.47, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'LENOVO/*/Lenovo PB2-690Y/*' }, + { ua: 'Lenovo PB2-690Y' }, + ], + dpi: [457.2, 454.713], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/Nexus 5X/*' }, { ua: 'Nexus 5X' }], + dpi: [422, 419.9], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LGMS345/*' }, { ua: 'LGMS345' }], + dpi: [221.7, 219.1], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LG-D800/*' }, { ua: 'LG-D800' }], + dpi: [422, 424.1], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LG-D850/*' }, { ua: 'LG-D850' }], + dpi: [537.9, 541.9], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/VS985 4G/*' }, { ua: 'VS985 4G' }], + dpi: [537.9, 535.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/Nexus 5/*' }, { ua: 'Nexus 5 B' }], + dpi: [442.4, 444.8], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/Nexus 4/*' }, { ua: 'Nexus 4' }], + dpi: [319.8, 318.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LG-P769/*' }, { ua: 'LG-P769' }], + dpi: [240.6, 247.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LGMS323/*' }, { ua: 'LGMS323' }], + dpi: [206.6, 204.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'LGE/*/LGLS996/*' }, { ua: 'LGLS996' }], + dpi: [403.4, 401.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Micromax/*/4560MMX/*' }, { ua: '4560MMX' }], + dpi: [240, 219.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Micromax/*/A250/*' }, { ua: 'Micromax A250' }], + dpi: [480, 446.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'Micromax/*/Micromax AQ4501/*' }, + { ua: 'Micromax AQ4501' }, + ], + dpi: 240, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/G5/*' }, { ua: 'Moto G (5) Plus' }], + dpi: [403.4, 403], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'motorola/*/DROID RAZR/*' }, + { ua: 'DROID RAZR' }, + ], + dpi: [368.1, 256.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT830C/*' }, { ua: 'XT830C' }], + dpi: [254, 255.9], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1021/*' }, { ua: 'XT1021' }], + dpi: [254, 256.7], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1023/*' }, { ua: 'XT1023' }], + dpi: [254, 256.7], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1028/*' }, { ua: 'XT1028' }], + dpi: [326.6, 327.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1034/*' }, { ua: 'XT1034' }], + dpi: [326.6, 328.4], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1053/*' }, { ua: 'XT1053' }], + dpi: [315.3, 316.1], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1562/*' }, { ua: 'XT1562' }], + dpi: [403.4, 402.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/Nexus 6/*' }, { ua: 'Nexus 6 B' }], + dpi: [494.3, 489.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1063/*' }, { ua: 'XT1063' }], + dpi: [295, 296.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1064/*' }, { ua: 'XT1064' }], + dpi: [295, 295.6], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1092/*' }, { ua: 'XT1092' }], + dpi: [422, 424.1], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/XT1095/*' }, { ua: 'XT1095' }], + dpi: [422, 423.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'motorola/*/G4/*' }, { ua: 'Moto G (4)' }], + dpi: 401, + bw: 4, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/A0001/*' }, { ua: 'A0001' }], + dpi: [403.4, 401], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE E1001/*' }, { ua: 'ONE E1001' }], + dpi: [442.4, 441.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE E1003/*' }, { ua: 'ONE E1003' }], + dpi: [442.4, 441.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE E1005/*' }, { ua: 'ONE E1005' }], + dpi: [442.4, 441.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE A2001/*' }, { ua: 'ONE A2001' }], + dpi: [391.9, 405.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE A2003/*' }, { ua: 'ONE A2003' }], + dpi: [391.9, 405.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'OnePlus/*/ONE A2005/*' }, { ua: 'ONE A2005' }], + dpi: [391.9, 405.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A3000/*' }, + { ua: 'ONEPLUS A3000' }, + ], + dpi: 401, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A3003/*' }, + { ua: 'ONEPLUS A3003' }, + ], + dpi: 401, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A3010/*' }, + { ua: 'ONEPLUS A3010' }, + ], + dpi: 401, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A5000/*' }, + { ua: 'ONEPLUS A5000 ' }, + ], + dpi: [403.411, 399.737], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONE A5010/*' }, + { ua: 'ONEPLUS A5010' }, + ], + dpi: [403, 400], + bw: 2, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A6000/*' }, + { ua: 'ONEPLUS A6000' }, + ], + dpi: 401, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A6003/*' }, + { ua: 'ONEPLUS A6003' }, + ], + dpi: 401, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A6010/*' }, + { ua: 'ONEPLUS A6010' }, + ], + dpi: 401, + bw: 2, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'OnePlus/*/ONEPLUS A6013/*' }, + { ua: 'ONEPLUS A6013' }, + ], + dpi: 401, + bw: 2, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'OPPO/*/X909/*' }, { ua: 'X909' }], + dpi: [442.4, 444.1], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9082/*' }, { ua: 'GT-I9082' }], + dpi: [184.7, 185.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G360P/*' }, { ua: 'SM-G360P' }], + dpi: [196.7, 205.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/Nexus S/*' }, { ua: 'Nexus S' }], + dpi: [234.5, 229.8], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9300/*' }, { ua: 'GT-I9300' }], + dpi: [304.8, 303.9], + bw: 5, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-T230NU/*' }, { ua: 'SM-T230NU' }], + dpi: 216, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SGH-T399/*' }, { ua: 'SGH-T399' }], + dpi: [217.7, 231.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SGH-M919/*' }, { ua: 'SGH-M919' }], + dpi: [440.8, 437.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N9005/*' }, { ua: 'SM-N9005' }], + dpi: [386.4, 387], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'samsung/*/SAMSUNG-SM-N900A/*' }, + { ua: 'SAMSUNG-SM-N900A' }, + ], + dpi: [386.4, 387.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9500/*' }, { ua: 'GT-I9500' }], + dpi: [442.5, 443.3], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9505/*' }, { ua: 'GT-I9505' }], + dpi: 439.4, + bw: 4, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G900F/*' }, { ua: 'SM-G900F' }], + dpi: [415.6, 431.6], + bw: 5, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G900M/*' }, { ua: 'SM-G900M' }], + dpi: [415.6, 431.6], + bw: 5, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G800F/*' }, { ua: 'SM-G800F' }], + dpi: 326.8, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G906S/*' }, { ua: 'SM-G906S' }], + dpi: [562.7, 572.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9300/*' }, { ua: 'GT-I9300' }], + dpi: [306.7, 304.8], + bw: 5, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-T535/*' }, { ua: 'SM-T535' }], + dpi: [142.6, 136.4], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N920C/*' }, { ua: 'SM-N920C' }], + dpi: [515.1, 518.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N920P/*' }, { ua: 'SM-N920P' }], + dpi: [386.3655, 390.144], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N920W8/*' }, { ua: 'SM-N920W8' }], + dpi: [515.1, 518.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9300I/*' }, { ua: 'GT-I9300I' }], + dpi: [304.8, 305.8], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-I9195/*' }, { ua: 'GT-I9195' }], + dpi: [249.4, 256.7], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SPH-L520/*' }, { ua: 'SPH-L520' }], + dpi: [249.4, 255.9], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'samsung/*/SAMSUNG-SGH-I717/*' }, + { ua: 'SAMSUNG-SGH-I717' }, + ], + dpi: 285.8, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SPH-D710/*' }, { ua: 'SPH-D710' }], + dpi: [217.7, 204.2], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/GT-N7100/*' }, { ua: 'GT-N7100' }], + dpi: 265.1, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SCH-I605/*' }, { ua: 'SCH-I605' }], + dpi: 265.1, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [ + { mdmh: 'samsung/*/Galaxy Nexus/*' }, + { ua: 'Galaxy Nexus' }, + ], + dpi: [315.3, 314.2], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N910H/*' }, { ua: 'SM-N910H' }], + dpi: [515.1, 518], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-N910C/*' }, { ua: 'SM-N910C' }], + dpi: [515.2, 520.2], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G130M/*' }, { ua: 'SM-G130M' }], + dpi: [165.9, 164.8], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G928I/*' }, { ua: 'SM-G928I' }], + dpi: [515.1, 518.4], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G920F/*' }, { ua: 'SM-G920F' }], + dpi: 580.6, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G920P/*' }, { ua: 'SM-G920P' }], + dpi: [522.5, 577], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G925F/*' }, { ua: 'SM-G925F' }], + dpi: 580.6, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G925V/*' }, { ua: 'SM-G925V' }], + dpi: [522.5, 576.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G930F/*' }, { ua: 'SM-G930F' }], + dpi: 576.6, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G935F/*' }, { ua: 'SM-G935F' }], + dpi: 533, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G950F/*' }, { ua: 'SM-G950F' }], + dpi: [562.707, 565.293], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G955U/*' }, { ua: 'SM-G955U' }], + dpi: [522.514, 525.762], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G955F/*' }, { ua: 'SM-G955F' }], + dpi: [522.514, 525.762], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960F/*' }, { ua: 'SM-G960F' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G9600/*' }, { ua: 'SM-G9600' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960T/*' }, { ua: 'SM-G960T' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960N/*' }, { ua: 'SM-G960N' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960U/*' }, { ua: 'SM-G960U' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G9608/*' }, { ua: 'SM-G9608' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960FD/*' }, { ua: 'SM-G960FD' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G960W/*' }, { ua: 'SM-G960W' }], + dpi: [569.575, 571.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G965F/*' }, { ua: 'SM-G965F' }], + dpi: 529, + bw: 2, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Sony/*/C6903/*' }, { ua: 'C6903' }], + dpi: [442.5, 443.3], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'Sony/*/D6653/*' }, { ua: 'D6653' }], + dpi: [428.6, 427.6], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Sony/*/E6653/*' }, { ua: 'E6653' }], + dpi: [428.6, 425.7], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Sony/*/E6853/*' }, { ua: 'E6853' }], + dpi: [403.4, 401.9], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Sony/*/SGP321/*' }, { ua: 'SGP321' }], + dpi: [224.7, 224.1], + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [ + { mdmh: 'TCT/*/ALCATEL ONE TOUCH Fierce/*' }, + { ua: 'ALCATEL ONE TOUCH Fierce' }, + ], + dpi: [240, 247.5], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'THL/*/thl 5000/*' }, { ua: 'thl 5000' }], + dpi: [480, 443.3], + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Fly/*/IQ4412/*' }, { ua: 'IQ4412' }], + dpi: 307.9, + bw: 3, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'ZTE/*/ZTE Blade L2/*' }, { ua: 'ZTE Blade L2' }], + dpi: 240, + bw: 3, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'BENEVE/*/VR518/*' }, { ua: 'VR518' }], + dpi: 480, + bw: 3, + ac: 500, + }, + { + type: 'ios', + rules: [{ res: [640, 960] }], + dpi: [325.1, 328.4], + bw: 4, + ac: 1e3, + }, + { + type: 'ios', + rules: [{ res: [640, 1136] }], + dpi: [317.1, 320.2], + bw: 3, + ac: 1e3, + }, + { + type: 'ios', + rules: [{ res: [750, 1334] }], + dpi: 326.4, + bw: 4, + ac: 1e3, + }, + { + type: 'ios', + rules: [{ res: [1242, 2208] }], + dpi: [453.6, 458.4], + bw: 4, + ac: 1e3, + }, + { + type: 'ios', + rules: [{ res: [1125, 2001] }], + dpi: [410.9, 415.4], + bw: 4, + ac: 1e3, + }, + { + type: 'ios', + rules: [{ res: [1125, 2436] }], + dpi: 458, + bw: 4, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'Huawei/*/EML-L29/*' }, { ua: 'EML-L29' }], + dpi: 428, + bw: 3.45, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'Nokia/*/Nokia 7.1/*' }, { ua: 'Nokia 7.1' }], + dpi: [432, 431.9], + bw: 3, + ac: 500, + }, + { + type: 'ios', + rules: [{ res: [1242, 2688] }], + dpi: 458, + bw: 4, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G570M/*' }, { ua: 'SM-G570M' }], + dpi: 320, + bw: 3.684, + ac: 1e3, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G970F/*' }, { ua: 'SM-G970F' }], + dpi: 438, + bw: 2.281, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G973F/*' }, { ua: 'SM-G973F' }], + dpi: 550, + bw: 2.002, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G975F/*' }, { ua: 'SM-G975F' }], + dpi: 522, + bw: 2.054, + ac: 500, + }, + { + type: 'android', + rules: [{ mdmh: 'samsung/*/SM-G977F/*' }, { ua: 'SM-G977F' }], + dpi: 505, + bw: 2.334, + ac: 500, + }, + { + type: 'ios', + rules: [{ res: [828, 1792] }], + dpi: 326, + bw: 5, + ac: 500, + }, + ], + } + function he(e, t) { + if (((this.dpdb = ue), this.recalculateDeviceParams_(), e)) { + this.onDeviceParamsUpdated = t + var n = new XMLHttpRequest(), + r = this + n.open('GET', e, !0), + n.addEventListener('load', function () { + ;(r.loading = !1), + n.status >= 200 && n.status <= 299 + ? ((r.dpdb = JSON.parse(n.response)), + r.recalculateDeviceParams_()) + : console.error('Error loading online DPDB!') + }), + n.send() + } + } + function de(e) { + ;(this.xdpi = e.xdpi), + (this.ydpi = e.ydpi), + (this.bevelMm = e.bevelMm) + } + function pe(e, t) { + this.set(e, t) + } + function fe(e, t) { + ;(this.kFilter = e), + (this.isDebug = t), + (this.currentAccelMeasurement = new pe()), + (this.currentGyroMeasurement = new pe()), + (this.previousGyroMeasurement = new pe()), + l() + ? (this.filterQ = new re(-1, 0, 0, 1)) + : (this.filterQ = new re(1, 0, 0, 1)), + (this.previousFilterQ = new re()), + this.previousFilterQ.copy(this.filterQ), + (this.accelQ = new re()), + (this.isOrientationInitialized = !1), + (this.estimatedGravity = new ne()), + (this.measuredGravity = new ne()), + (this.gyroIntegralQ = new re()) + } + function me(e, t) { + ;(this.predictionTimeS = e), + (this.isDebug = t), + (this.previousQ = new re()), + (this.previousTimestampS = null), + (this.deltaQ = new re()), + (this.outQ = new re()) + } + function ve(e, t, n, r) { + ;(this.yawOnly = n), + (this.accelerometer = new ne()), + (this.gyroscope = new ne()), + (this.filter = new fe(e, r)), + (this.posePredictor = new me(t, r)), + (this.isFirefoxAndroid = h()), + (this.isIOS = l()) + var i = d() + ;(this.isDeviceMotionInRadians = !this.isIOS && i && i < 66), + (this.isWithoutDeviceMotion = f() || p()), + (this.filterToWorldQ = new re()), + l() + ? this.filterToWorldQ.setFromAxisAngle( + new ne(1, 0, 0), + Math.PI / 2, + ) + : this.filterToWorldQ.setFromAxisAngle( + new ne(1, 0, 0), + -Math.PI / 2, + ), + (this.inverseWorldToScreenQ = new re()), + (this.worldToScreenQ = new re()), + (this.originalPoseAdjustQ = new re()), + this.originalPoseAdjustQ.setFromAxisAngle( + new ne(0, 0, 1), + (-window.orientation * Math.PI) / 180, + ), + this.setScreenTransform_(), + v() && this.filterToWorldQ.multiply(this.inverseWorldToScreenQ), + (this.resetQ = new re()), + (this.orientationOut_ = new Float32Array(4)), + this.start() + } + ;(he.prototype.getDeviceParams = function () { + return this.deviceParams + }), + (he.prototype.recalculateDeviceParams_ = function () { + var e = this.calcDeviceParams_() + e + ? ((this.deviceParams = e), + this.onDeviceParamsUpdated && + this.onDeviceParamsUpdated(this.deviceParams)) + : console.error('Failed to recalculate device parameters.') + }), + (he.prototype.calcDeviceParams_ = function () { + var e = this.dpdb + if (!e) return console.error('DPDB not available.'), null + if (1 != e.format) + return console.error('DPDB has unexpected format version.'), null + if (!e.devices || !e.devices.length) + return ( + console.error('DPDB does not have a devices section.'), null + ) + var t = navigator.userAgent || navigator.vendor || window.opera, + n = y(), + r = b() + if (!e.devices) + return console.error('DPDB has no devices section.'), null + for (var i = 0; i < e.devices.length; i++) { + var o = e.devices[i] + if (o.rules) + if ('ios' == o.type || 'android' == o.type) { + if (l() == ('ios' == o.type)) { + for (var a = !1, s = 0; s < o.rules.length; s++) { + var c = o.rules[s] + if (this.ruleMatches_(c, t, n, r)) { + a = !0 + break + } + } + if (a) + return new de({ + xdpi: o.dpi[0] || o.dpi, + ydpi: o.dpi[1] || o.dpi, + bevelMm: o.bw, + }) + } + } else console.warn('Device[' + i + '] has invalid type.') + else console.warn('Device[' + i + '] has no rules section.') + } + return console.warn('No DPDB device match.'), null + }), + (he.prototype.ruleMatches_ = function (e, t, n, r) { + if (!e.ua && !e.res) return !1 + if ( + (e.ua && + 'SM' === e.ua.substring(0, 2) && + (e.ua = e.ua.substring(0, 7)), + e.ua && t.indexOf(e.ua) < 0) + ) + return !1 + if (e.res) { + if (!e.res[0] || !e.res[1]) return !1 + var i = e.res[0], + o = e.res[1] + if ( + Math.min(n, r) != Math.min(i, o) || + Math.max(n, r) != Math.max(i, o) + ) + return !1 + } + return !0 + }), + (pe.prototype.set = function (e, t) { + ;(this.sample = e), (this.timestampS = t) + }), + (pe.prototype.copy = function (e) { + this.set(e.sample, e.timestampS) + }), + (fe.prototype.addAccelMeasurement = function (e, t) { + this.currentAccelMeasurement.set(e, t) + }), + (fe.prototype.addGyroMeasurement = function (e, t) { + this.currentGyroMeasurement.set(e, t) + var n = t - this.previousGyroMeasurement.timestampS + g(n) && this.run_(), + this.previousGyroMeasurement.copy(this.currentGyroMeasurement) + }), + (fe.prototype.run_ = function () { + if (!this.isOrientationInitialized) + return ( + (this.accelQ = this.accelToQuaternion_( + this.currentAccelMeasurement.sample, + )), + this.previousFilterQ.copy(this.accelQ), + void (this.isOrientationInitialized = !0) + ) + var e = + this.currentGyroMeasurement.timestampS - + this.previousGyroMeasurement.timestampS, + t = this.gyroToQuaternionDelta_( + this.currentGyroMeasurement.sample, + e, + ) + this.gyroIntegralQ.multiply(t), + this.filterQ.copy(this.previousFilterQ), + this.filterQ.multiply(t) + var n = new re() + n.copy(this.filterQ), + n.inverse(), + this.estimatedGravity.set(0, 0, -1), + this.estimatedGravity.applyQuaternion(n), + this.estimatedGravity.normalize(), + this.measuredGravity.copy(this.currentAccelMeasurement.sample), + this.measuredGravity.normalize() + var r = new re() + r.setFromUnitVectors(this.estimatedGravity, this.measuredGravity), + r.inverse(), + this.isDebug && + console.log( + 'Delta: %d deg, G_est: (%s, %s, %s), G_meas: (%s, %s, %s)', + te * D(r), + this.estimatedGravity.x.toFixed(1), + this.estimatedGravity.y.toFixed(1), + this.estimatedGravity.z.toFixed(1), + this.measuredGravity.x.toFixed(1), + this.measuredGravity.y.toFixed(1), + this.measuredGravity.z.toFixed(1), + ) + var i = new re() + i.copy(this.filterQ), + i.multiply(r), + this.filterQ.slerp(i, 1 - this.kFilter), + this.previousFilterQ.copy(this.filterQ) + }), + (fe.prototype.getOrientation = function () { + return this.filterQ + }), + (fe.prototype.accelToQuaternion_ = function (e) { + var t = new ne() + t.copy(e), t.normalize() + var n = new re() + return n.setFromUnitVectors(new ne(0, 0, -1), t), n.inverse(), n + }), + (fe.prototype.gyroToQuaternionDelta_ = function (e, t) { + var n = new re(), + r = new ne() + return ( + r.copy(e), r.normalize(), n.setFromAxisAngle(r, e.length() * t), n + ) + }), + (me.prototype.getPrediction = function (e, t, n) { + if (!this.previousTimestampS) + return this.previousQ.copy(e), (this.previousTimestampS = n), e + var r = new ne() + r.copy(t), r.normalize() + var i = t.length() + if (i < 20 * ee) + return ( + this.isDebug && + console.log( + 'Moving slowly, at %s deg/s: no prediction', + (te * i).toFixed(1), + ), + this.outQ.copy(e), + this.previousQ.copy(e), + this.outQ + ) + var o = i * this.predictionTimeS + return ( + this.deltaQ.setFromAxisAngle(r, o), + this.outQ.copy(this.previousQ), + this.outQ.multiply(this.deltaQ), + this.previousQ.copy(e), + (this.previousTimestampS = n), + this.outQ + ) + }), + (ve.prototype.getPosition = function () { + return null + }), + (ve.prototype.getOrientation = function () { + var e = void 0 + if (this.isWithoutDeviceMotion && this._deviceOrientationQ) + return ( + (this.deviceOrientationFixQ = + this.deviceOrientationFixQ || + (function () { + var e = new re().setFromAxisAngle(new ne(0, 0, -1), 0), + t = new re() + return ( + -90 === window.orientation + ? t.setFromAxisAngle(new ne(0, 1, 0), Math.PI / -2) + : t.setFromAxisAngle(new ne(0, 1, 0), Math.PI / 2), + e.multiply(t) + ) + })()), + (this.deviceOrientationFilterToWorldQ = + this.deviceOrientationFilterToWorldQ || + (function () { + var e = new re() + return e.setFromAxisAngle(new ne(1, 0, 0), -Math.PI / 2), e + })()), + (e = this._deviceOrientationQ), + (t = new re()).copy(e), + t.multiply(this.deviceOrientationFilterToWorldQ), + t.multiply(this.resetQ), + t.multiply(this.worldToScreenQ), + t.multiplyQuaternions(this.deviceOrientationFixQ, t), + this.yawOnly && ((t.x = 0), (t.z = 0), t.normalize()), + (this.orientationOut_[0] = t.x), + (this.orientationOut_[1] = t.y), + (this.orientationOut_[2] = t.z), + (this.orientationOut_[3] = t.w), + this.orientationOut_ + ) + var t, + n = this.filter.getOrientation() + return ( + (e = this.posePredictor.getPrediction( + n, + this.gyroscope, + this.previousTimestampS, + )), + (t = new re()).copy(this.filterToWorldQ), + t.multiply(this.resetQ), + t.multiply(e), + t.multiply(this.worldToScreenQ), + this.yawOnly && ((t.x = 0), (t.z = 0), t.normalize()), + (this.orientationOut_[0] = t.x), + (this.orientationOut_[1] = t.y), + (this.orientationOut_[2] = t.z), + (this.orientationOut_[3] = t.w), + this.orientationOut_ + ) + }), + (ve.prototype.resetPose = function () { + this.resetQ.copy(this.filter.getOrientation()), + (this.resetQ.x = 0), + (this.resetQ.y = 0), + (this.resetQ.z *= -1), + this.resetQ.normalize(), + v() && this.resetQ.multiply(this.inverseWorldToScreenQ), + this.resetQ.multiply(this.originalPoseAdjustQ) + }), + (ve.prototype.onDeviceOrientation_ = function (e) { + this._deviceOrientationQ = this._deviceOrientationQ || new re() + var t = e.alpha, + n = e.beta, + r = e.gamma + ;(t = ((t || 0) * Math.PI) / 180), + (n = ((n || 0) * Math.PI) / 180), + (r = ((r || 0) * Math.PI) / 180), + this._deviceOrientationQ.setFromEulerYXZ(n, t, -r) + }), + (ve.prototype.onDeviceMotion_ = function (e) { + this.updateDeviceMotion_(e) + }), + (ve.prototype.updateDeviceMotion_ = function (e) { + var t = e.accelerationIncludingGravity, + n = e.rotationRate, + r = e.timeStamp / 1e3, + a = r - this.previousTimestampS + return a < 0 + ? (O( + 'fusion-pose-sensor:invalid:non-monotonic', + 'Invalid timestamps detected: non-monotonic timestamp from devicemotion', + ), + void (this.previousTimestampS = r)) + : a <= i || a > o + ? (O( + 'fusion-pose-sensor:invalid:outside-threshold', + 'Invalid timestamps detected: Timestamp from devicemotion outside expected range.', + ), + void (this.previousTimestampS = r)) + : (this.accelerometer.set(-t.x, -t.y, -t.z), + n && + (m() + ? this.gyroscope.set(-n.beta, n.alpha, n.gamma) + : this.gyroscope.set(n.alpha, n.beta, n.gamma), + this.isDeviceMotionInRadians || + this.gyroscope.multiplyScalar(Math.PI / 180), + this.filter.addGyroMeasurement(this.gyroscope, r)), + this.filter.addAccelMeasurement(this.accelerometer, r), + void (this.previousTimestampS = r)) + }), + (ve.prototype.onOrientationChange_ = function (e) { + this.setScreenTransform_() + }), + (ve.prototype.onMessage_ = function (e) { + var t = e.data + t && + t.type && + 'devicemotion' === t.type.toLowerCase() && + this.updateDeviceMotion_(t.deviceMotionEvent) + }), + (ve.prototype.setScreenTransform_ = function () { + switch ((this.worldToScreenQ.set(0, 0, 0, 1), window.orientation)) { + case 0: + break + case 90: + this.worldToScreenQ.setFromAxisAngle( + new ne(0, 0, 1), + -Math.PI / 2, + ) + break + case -90: + this.worldToScreenQ.setFromAxisAngle( + new ne(0, 0, 1), + Math.PI / 2, + ) + } + this.inverseWorldToScreenQ.copy(this.worldToScreenQ), + this.inverseWorldToScreenQ.inverse() + }), + (ve.prototype.start = function () { + ;(this.onDeviceMotionCallback_ = this.onDeviceMotion_.bind(this)), + (this.onOrientationChangeCallback_ = + this.onOrientationChange_.bind(this)), + (this.onMessageCallback_ = this.onMessage_.bind(this)), + (this.onDeviceOrientationCallback_ = + this.onDeviceOrientation_.bind(this)), + l() && + R() && + window.addEventListener('message', this.onMessageCallback_), + window.addEventListener( + 'orientationchange', + this.onOrientationChangeCallback_, + ), + this.isWithoutDeviceMotion + ? window.addEventListener( + 'deviceorientation', + this.onDeviceOrientationCallback_, + ) + : window.addEventListener( + 'devicemotion', + this.onDeviceMotionCallback_, + ) + }), + (ve.prototype.stop = function () { + window.removeEventListener( + 'devicemotion', + this.onDeviceMotionCallback_, + ), + window.removeEventListener( + 'deviceorientation', + this.onDeviceOrientationCallback_, + ), + window.removeEventListener( + 'orientationchange', + this.onOrientationChangeCallback_, + ), + window.removeEventListener('message', this.onMessageCallback_) + }) + var ge = 60, + ye = new ne(1, 0, 0), + be = new ne(0, 0, 1), + Ae = new re() + Ae.setFromAxisAngle(ye, -Math.PI / 2), + Ae.multiply(new re().setFromAxisAngle(be, Math.PI / 2)) + var we = (function () { + function t(n) { + e(this, t), + (this.config = n), + (this.sensor = null), + (this.fusionSensor = null), + (this._out = new Float32Array(4)), + (this.api = null), + (this.errors = []), + (this._sensorQ = new re()), + (this._outQ = new re()), + (this._onSensorRead = this._onSensorRead.bind(this)), + (this._onSensorError = this._onSensorError.bind(this)), + this.init() + } + return ( + n(t, [ + { + key: 'init', + value: function () { + var e = null + try { + ;(e = new RelativeOrientationSensor({ + frequency: ge, + referenceFrame: 'screen', + })).addEventListener('error', this._onSensorError) + } catch (t) { + this.errors.push(t), + 'SecurityError' === t.name + ? (console.error( + 'Cannot construct sensors due to the Feature Policy', + ), + console.warn( + 'Attempting to fall back using "devicemotion"; however this will fail in the future without correct permissions.', + ), + this.useDeviceMotion()) + : 'ReferenceError' === t.name + ? this.useDeviceMotion() + : console.error(t) + } + e && + ((this.api = 'sensor'), + (this.sensor = e), + this.sensor.addEventListener( + 'reading', + this._onSensorRead, + ), + this.sensor.start()) + }, + }, + { + key: 'useDeviceMotion', + value: function () { + ;(this.api = 'devicemotion'), + (this.fusionSensor = new ve( + this.config.K_FILTER, + this.config.PREDICTION_TIME_S, + this.config.YAW_ONLY, + this.config.DEBUG, + )), + this.sensor && + (this.sensor.removeEventListener( + 'reading', + this._onSensorRead, + ), + this.sensor.removeEventListener( + 'error', + this._onSensorError, + ), + (this.sensor = null)) + }, + }, + { + key: 'getOrientation', + value: function () { + if (this.fusionSensor) + return this.fusionSensor.getOrientation() + if (!this.sensor || !this.sensor.quaternion) + return ( + (this._out[0] = this._out[1] = this._out[2] = 0), + (this._out[3] = 1), + this._out + ) + var e = this.sensor.quaternion + this._sensorQ.set(e[0], e[1], e[2], e[3]) + var t = this._outQ + return ( + t.copy(Ae), + t.multiply(this._sensorQ), + this.config.YAW_ONLY && ((t.x = t.z = 0), t.normalize()), + (this._out[0] = t.x), + (this._out[1] = t.y), + (this._out[2] = t.z), + (this._out[3] = t.w), + this._out + ) + }, + }, + { + key: '_onSensorError', + value: function (e) { + this.errors.push(e.error), + 'NotAllowedError' === e.error.name + ? console.error( + 'Permission to access sensor was denied', + ) + : 'NotReadableError' === e.error.name + ? console.error('Sensor could not be read') + : console.error(e.error), + this.useDeviceMotion() + }, + }, + { key: '_onSensorRead', value: function () {} }, + ]), + t + ) + })(), + xe = + "<svg width='198' height='240' viewBox='0 0 198 240' xmlns='http://www.w3.org/2000/svg'><g fill='none' fill-rule='evenodd'><path d='M149.625 109.527l6.737 3.891v.886c0 .177.013.36.038.549.01.081.02.162.027.242.14 1.415.974 2.998 2.105 3.999l5.72 5.062.081-.09s4.382-2.53 5.235-3.024l25.97 14.993v54.001c0 .771-.386 1.217-.948 1.217-.233 0-.495-.076-.772-.236l-23.967-13.838-.014.024-27.322 15.775-.85-1.323c-4.731-1.529-9.748-2.74-14.951-3.61a.27.27 0 0 0-.007.024l-5.067 16.961-7.891 4.556-.037-.063v27.59c0 .772-.386 1.217-.948 1.217-.232 0-.495-.076-.772-.236l-42.473-24.522c-.95-.549-1.72-1.877-1.72-2.967v-1.035l-.021.047a5.111 5.111 0 0 0-1.816-.399 5.682 5.682 0 0 0-.546.001 13.724 13.724 0 0 1-1.918-.041c-1.655-.153-3.2-.6-4.404-1.296l-46.576-26.89.005.012-10.278-18.75c-1.001-1.827-.241-4.216 1.698-5.336l56.011-32.345a4.194 4.194 0 0 1 2.099-.572c1.326 0 2.572.659 3.227 1.853l.005-.003.227.413-.006.004a9.63 9.63 0 0 0 1.477 2.018l.277.27c1.914 1.85 4.468 2.801 7.113 2.801 1.949 0 3.948-.517 5.775-1.572.013 0 7.319-4.219 7.319-4.219a4.194 4.194 0 0 1 2.099-.572c1.326 0 2.572.658 3.226 1.853l3.25 5.928.022-.018 6.785 3.917-.105-.182 46.881-26.965m0-1.635c-.282 0-.563.073-.815.218l-46.169 26.556-5.41-3.124-3.005-5.481c-.913-1.667-2.699-2.702-4.66-2.703-1.011 0-2.02.274-2.917.792a3825 3825 0 0 1-7.275 4.195l-.044.024a9.937 9.937 0 0 1-4.957 1.353c-2.292 0-4.414-.832-5.976-2.342l-.252-.245a7.992 7.992 0 0 1-1.139-1.534 1.379 1.379 0 0 0-.06-.122l-.227-.414a1.718 1.718 0 0 0-.095-.154c-.938-1.574-2.673-2.545-4.571-2.545-1.011 0-2.02.274-2.917.792L3.125 155.502c-2.699 1.559-3.738 4.94-2.314 7.538l10.278 18.75c.177.323.448.563.761.704l46.426 26.804c1.403.81 3.157 1.332 5.072 1.508a15.661 15.661 0 0 0 2.146.046 4.766 4.766 0 0 1 .396 0c.096.004.19.011.283.022.109 1.593 1.159 3.323 2.529 4.114l42.472 24.522c.524.302 1.058.455 1.59.455 1.497 0 2.583-1.2 2.583-2.852v-26.562l7.111-4.105a1.64 1.64 0 0 0 .749-.948l4.658-15.593c4.414.797 8.692 1.848 12.742 3.128l.533.829a1.634 1.634 0 0 0 2.193.531l26.532-15.317L193 192.433c.523.302 1.058.455 1.59.455 1.497 0 2.583-1.199 2.583-2.852v-54.001c0-.584-.312-1.124-.818-1.416l-25.97-14.993a1.633 1.633 0 0 0-1.636.001c-.606.351-2.993 1.73-4.325 2.498l-4.809-4.255c-.819-.725-1.461-1.933-1.561-2.936a7.776 7.776 0 0 0-.033-.294 2.487 2.487 0 0 1-.023-.336v-.886c0-.584-.312-1.123-.817-1.416l-6.739-3.891a1.633 1.633 0 0 0-.817-.219' fill='#455A64'/><path d='M96.027 132.636l46.576 26.891c1.204.695 1.979 1.587 2.242 2.541l-.01.007-81.374 46.982h-.001c-1.654-.152-3.199-.6-4.403-1.295l-46.576-26.891 83.546-48.235' fill='#FAFAFA'/><path d='M63.461 209.174c-.008 0-.015 0-.022-.002-1.693-.156-3.228-.609-4.441-1.309l-46.576-26.89a.118.118 0 0 1 0-.203l83.546-48.235a.117.117 0 0 1 .117 0l46.576 26.891c1.227.708 2.021 1.612 2.296 2.611a.116.116 0 0 1-.042.124l-.021.016-81.375 46.981a.11.11 0 0 1-.058.016zm-50.747-28.303l46.401 26.79c1.178.68 2.671 1.121 4.32 1.276l81.272-46.922c-.279-.907-1.025-1.73-2.163-2.387l-46.517-26.857-83.313 48.1z' fill='#607D8B'/><path d='M148.327 165.471a5.85 5.85 0 0 1-.546.001c-1.894-.083-3.302-1.038-3.145-2.132a2.693 2.693 0 0 0-.072-1.105l-81.103 46.822c.628.058 1.272.073 1.918.042.182-.009.364-.009.546-.001 1.894.083 3.302 1.038 3.145 2.132l79.257-45.759' fill='#FFF'/><path d='M69.07 211.347a.118.118 0 0 1-.115-.134c.045-.317-.057-.637-.297-.925-.505-.61-1.555-1.022-2.738-1.074a5.966 5.966 0 0 0-.535.001 14.03 14.03 0 0 1-1.935-.041.117.117 0 0 1-.103-.092.116.116 0 0 1 .055-.126l81.104-46.822a.117.117 0 0 1 .171.07c.104.381.129.768.074 1.153-.045.316.057.637.296.925.506.61 1.555 1.021 2.739 1.073.178.008.357.008.535-.001a.117.117 0 0 1 .064.218l-79.256 45.759a.114.114 0 0 1-.059.016zm-3.405-2.372c.089 0 .177.002.265.006 1.266.056 2.353.488 2.908 1.158.227.274.35.575.36.882l78.685-45.429c-.036 0-.072-.001-.107-.003-1.267-.056-2.354-.489-2.909-1.158-.282-.34-.402-.724-.347-1.107a2.604 2.604 0 0 0-.032-.91L63.846 208.97a13.91 13.91 0 0 0 1.528.012c.097-.005.194-.007.291-.007z' fill='#607D8B'/><path d='M2.208 162.134c-1.001-1.827-.241-4.217 1.698-5.337l56.011-32.344c1.939-1.12 4.324-.546 5.326 1.281l.232.41a9.344 9.344 0 0 0 1.47 2.021l.278.27c3.325 3.214 8.583 3.716 12.888 1.23l7.319-4.22c1.94-1.119 4.324-.546 5.325 1.282l3.25 5.928-83.519 48.229-10.278-18.75z' fill='#FAFAFA'/><path d='M12.486 181.001a.112.112 0 0 1-.031-.005.114.114 0 0 1-.071-.056L2.106 162.19c-1.031-1.88-.249-4.345 1.742-5.494l56.01-32.344a4.328 4.328 0 0 1 2.158-.588c1.415 0 2.65.702 3.311 1.882.01.008.018.017.024.028l.227.414a.122.122 0 0 1 .013.038 9.508 9.508 0 0 0 1.439 1.959l.275.266c1.846 1.786 4.344 2.769 7.031 2.769 1.977 0 3.954-.538 5.717-1.557a.148.148 0 0 1 .035-.013l7.284-4.206a4.321 4.321 0 0 1 2.157-.588c1.427 0 2.672.716 3.329 1.914l3.249 5.929a.116.116 0 0 1-.044.157l-83.518 48.229a.116.116 0 0 1-.059.016zm49.53-57.004c-.704 0-1.41.193-2.041.557l-56.01 32.345c-1.882 1.086-2.624 3.409-1.655 5.179l10.221 18.645 83.317-48.112-3.195-5.829c-.615-1.122-1.783-1.792-3.124-1.792a4.08 4.08 0 0 0-2.04.557l-7.317 4.225a.148.148 0 0 1-.035.013 11.7 11.7 0 0 1-5.801 1.569c-2.748 0-5.303-1.007-7.194-2.835l-.278-.27a9.716 9.716 0 0 1-1.497-2.046.096.096 0 0 1-.013-.037l-.191-.347a.11.11 0 0 1-.023-.029c-.615-1.123-1.783-1.793-3.124-1.793z' fill='#607D8B'/><path d='M42.434 155.808c-2.51-.001-4.697-1.258-5.852-3.365-1.811-3.304-.438-7.634 3.059-9.654l12.291-7.098a7.599 7.599 0 0 1 3.789-1.033c2.51 0 4.697 1.258 5.852 3.365 1.811 3.304.439 7.634-3.059 9.654l-12.291 7.098a7.606 7.606 0 0 1-3.789 1.033zm13.287-20.683a7.128 7.128 0 0 0-3.555.971l-12.291 7.098c-3.279 1.893-4.573 5.942-2.883 9.024 1.071 1.955 3.106 3.122 5.442 3.122a7.13 7.13 0 0 0 3.556-.97l12.291-7.098c3.279-1.893 4.572-5.942 2.883-9.024-1.072-1.955-3.106-3.123-5.443-3.123z' fill='#607D8B'/><path d='M149.588 109.407l6.737 3.89v.887c0 .176.013.36.037.549.011.081.02.161.028.242.14 1.415.973 2.998 2.105 3.999l7.396 6.545c.177.156.358.295.541.415 1.579 1.04 2.95.466 3.062-1.282.049-.784.057-1.595.023-2.429l-.003-.16v-1.151l25.987 15.003v54c0 1.09-.77 1.53-1.72.982l-42.473-24.523c-.95-.548-1.72-1.877-1.72-2.966v-34.033' fill='#FAFAFA'/><path d='M194.553 191.25c-.257 0-.54-.085-.831-.253l-42.472-24.521c-.981-.567-1.779-1.943-1.779-3.068v-34.033h.234v34.033c0 1.051.745 2.336 1.661 2.866l42.473 24.521c.424.245.816.288 1.103.122.285-.164.442-.52.442-1.002v-53.933l-25.753-14.868.003 1.106c.034.832.026 1.654-.024 2.439-.054.844-.396 1.464-.963 1.746-.619.309-1.45.173-2.28-.373a5.023 5.023 0 0 1-.553-.426l-7.397-6.544c-1.158-1.026-1.999-2.625-2.143-4.076a9.624 9.624 0 0 0-.027-.238 4.241 4.241 0 0 1-.038-.564v-.82l-6.68-3.856.117-.202 6.738 3.89.058.034v.954c0 .171.012.351.036.533.011.083.021.165.029.246.138 1.395.948 2.935 2.065 3.923l7.397 6.545c.173.153.35.289.527.406.758.499 1.504.63 2.047.359.49-.243.786-.795.834-1.551.05-.778.057-1.591.024-2.417l-.004-.163v-1.355l.175.1 25.987 15.004.059.033v54.068c0 .569-.198.996-.559 1.204a1.002 1.002 0 0 1-.506.131' fill='#607D8B'/><path d='M145.685 163.161l24.115 13.922-25.978 14.998-1.462-.307c-6.534-2.17-13.628-3.728-21.019-4.616-4.365-.524-8.663 1.096-9.598 3.62a2.746 2.746 0 0 0-.011 1.928c1.538 4.267 4.236 8.363 7.995 12.135l.532.845-25.977 14.997-24.115-13.922 75.518-43.6' fill='#FFF'/><path d='M94.282 220.818l-.059-.033-24.29-14.024.175-.101 75.577-43.634.058.033 24.29 14.024-26.191 15.122-.045-.01-1.461-.307c-6.549-2.174-13.613-3.725-21.009-4.614a13.744 13.744 0 0 0-1.638-.097c-3.758 0-7.054 1.531-7.837 3.642a2.62 2.62 0 0 0-.01 1.848c1.535 4.258 4.216 8.326 7.968 12.091l.016.021.526.835.006.01.064.102-.105.061-25.977 14.998-.058.033zm-23.881-14.057l23.881 13.788 24.802-14.32c.546-.315.846-.489 1.017-.575l-.466-.74c-3.771-3.787-6.467-7.881-8.013-12.168a2.851 2.851 0 0 1 .011-2.008c.815-2.199 4.203-3.795 8.056-3.795.557 0 1.117.033 1.666.099 7.412.891 14.491 2.445 21.041 4.621.836.175 1.215.254 1.39.304l25.78-14.884-23.881-13.788-75.284 43.466z' fill='#607D8B'/><path d='M167.23 125.979v50.871l-27.321 15.773-6.461-14.167c-.91-1.996-3.428-1.738-5.624.574a10.238 10.238 0 0 0-2.33 4.018l-6.46 21.628-27.322 15.774v-50.871l75.518-43.6' fill='#FFF'/><path d='M91.712 220.567a.127.127 0 0 1-.059-.016.118.118 0 0 1-.058-.101v-50.871c0-.042.023-.08.058-.101l75.519-43.6a.117.117 0 0 1 .175.101v50.871c0 .041-.023.08-.059.1l-27.321 15.775a.118.118 0 0 1-.094.01.12.12 0 0 1-.071-.063l-6.46-14.168c-.375-.822-1.062-1.275-1.934-1.275-1.089 0-2.364.686-3.5 1.881a10.206 10.206 0 0 0-2.302 3.972l-6.46 21.627a.118.118 0 0 1-.054.068L91.77 220.551a.12.12 0 0 1-.058.016zm.117-50.92v50.601l27.106-15.65 6.447-21.583a10.286 10.286 0 0 1 2.357-4.065c1.18-1.242 2.517-1.954 3.669-1.954.969 0 1.731.501 2.146 1.411l6.407 14.051 27.152-15.676v-50.601l-75.284 43.466z' fill='#607D8B'/><path d='M168.543 126.213v50.87l-27.322 15.774-6.46-14.168c-.91-1.995-3.428-1.738-5.624.574a10.248 10.248 0 0 0-2.33 4.019l-6.461 21.627-27.321 15.774v-50.87l75.518-43.6' fill='#FFF'/><path d='M93.025 220.8a.123.123 0 0 1-.059-.015.12.12 0 0 1-.058-.101v-50.871c0-.042.023-.08.058-.101l75.518-43.6a.112.112 0 0 1 .117 0c.036.02.059.059.059.1v50.871a.116.116 0 0 1-.059.101l-27.321 15.774a.111.111 0 0 1-.094.01.115.115 0 0 1-.071-.062l-6.46-14.168c-.375-.823-1.062-1.275-1.935-1.275-1.088 0-2.363.685-3.499 1.881a10.19 10.19 0 0 0-2.302 3.971l-6.461 21.628a.108.108 0 0 1-.053.067l-27.322 15.775a.12.12 0 0 1-.058.015zm.117-50.919v50.6l27.106-15.649 6.447-21.584a10.293 10.293 0 0 1 2.357-4.065c1.179-1.241 2.516-1.954 3.668-1.954.969 0 1.732.502 2.147 1.412l6.407 14.051 27.152-15.676v-50.601l-75.284 43.466z' fill='#607D8B'/><path d='M169.8 177.083l-27.322 15.774-6.46-14.168c-.91-1.995-3.428-1.738-5.625.574a10.246 10.246 0 0 0-2.329 4.019l-6.461 21.627-27.321 15.774v-50.87l75.518-43.6v50.87z' fill='#FAFAFA'/><path d='M94.282 220.917a.234.234 0 0 1-.234-.233v-50.871c0-.083.045-.161.117-.202l75.518-43.601a.234.234 0 1 1 .35.202v50.871a.233.233 0 0 1-.116.202l-27.322 15.775a.232.232 0 0 1-.329-.106l-6.461-14.168c-.36-.789-.992-1.206-1.828-1.206-1.056 0-2.301.672-3.415 1.844a10.099 10.099 0 0 0-2.275 3.924l-6.46 21.628a.235.235 0 0 1-.107.136l-27.322 15.774a.23.23 0 0 1-.116.031zm.233-50.969v50.331l26.891-15.525 6.434-21.539a10.41 10.41 0 0 1 2.384-4.112c1.201-1.265 2.569-1.991 3.753-1.991 1.018 0 1.818.526 2.253 1.48l6.354 13.934 26.982-15.578v-50.331l-75.051 43.331z' fill='#607D8B'/><path d='M109.894 199.943c-1.774 0-3.241-.725-4.244-2.12a.224.224 0 0 1 .023-.294.233.233 0 0 1 .301-.023c.78.547 1.705.827 2.75.827 1.323 0 2.754-.439 4.256-1.306 5.311-3.067 9.631-10.518 9.631-16.611 0-1.927-.442-3.56-1.278-4.724a.232.232 0 0 1 .323-.327c1.671 1.172 2.591 3.381 2.591 6.219 0 6.242-4.426 13.863-9.865 17.003-1.574.908-3.084 1.356-4.488 1.356zm-2.969-1.542c.813.651 1.82.877 2.968.877h.001c1.321 0 2.753-.327 4.254-1.194 5.311-3.067 9.632-10.463 9.632-16.556 0-1.979-.463-3.599-1.326-4.761.411 1.035.625 2.275.625 3.635 0 6.243-4.426 13.883-9.865 17.023-1.574.909-3.084 1.317-4.49 1.317-.641 0-1.243-.149-1.799-.341z' fill='#607D8B'/><path d='M113.097 197.23c5.384-3.108 9.748-10.636 9.748-16.814 0-2.051-.483-3.692-1.323-4.86-1.784-1.252-4.374-1.194-7.257.47-5.384 3.108-9.748 10.636-9.748 16.814 0 2.051.483 3.692 1.323 4.86 1.784 1.252 4.374 1.194 7.257-.47' fill='#FAFAFA'/><path d='M108.724 198.614c-1.142 0-2.158-.213-3.019-.817-.021-.014-.04.014-.055-.007-.894-1.244-1.367-2.948-1.367-4.973 0-6.242 4.426-13.864 9.865-17.005 1.574-.908 3.084-1.363 4.49-1.363 1.142 0 2.158.309 3.018.913a.23.23 0 0 1 .056.056c.894 1.244 1.367 2.972 1.367 4.997 0 6.243-4.426 13.783-9.865 16.923-1.574.909-3.084 1.276-4.49 1.276zm-2.718-1.109c.774.532 1.688.776 2.718.776 1.323 0 2.754-.413 4.256-1.28 5.311-3.066 9.631-10.505 9.631-16.598 0-1.909-.434-3.523-1.255-4.685-.774-.533-1.688-.799-2.718-.799-1.323 0-2.755.441-4.256 1.308-5.311 3.066-9.631 10.506-9.631 16.599 0 1.909.434 3.517 1.255 4.679z' fill='#607D8B'/><path d='M149.318 114.262l-9.984 8.878 15.893 11.031 5.589-6.112-11.498-13.797' fill='#FAFAFA'/><path d='M169.676 120.84l-9.748 5.627c-3.642 2.103-9.528 2.113-13.147.024-3.62-2.089-3.601-5.488.041-7.591l9.495-5.608-6.729-3.885-81.836 47.071 45.923 26.514 3.081-1.779c.631-.365.869-.898.618-1.39-2.357-4.632-2.593-9.546-.683-14.262 5.638-13.92 24.509-24.815 48.618-28.07 8.169-1.103 16.68-.967 24.704.394.852.145 1.776.008 2.407-.357l3.081-1.778-25.825-14.91' fill='#FAFAFA'/><path d='M113.675 183.459a.47.47 0 0 1-.233-.062l-45.924-26.515a.468.468 0 0 1 .001-.809l81.836-47.071a.467.467 0 0 1 .466 0l6.729 3.885a.467.467 0 0 1-.467.809l-6.496-3.75-80.9 46.533 44.988 25.973 2.848-1.644c.192-.111.62-.409.435-.773-2.416-4.748-2.658-9.814-.7-14.65 2.806-6.927 8.885-13.242 17.582-18.263 8.657-4.998 19.518-8.489 31.407-10.094 8.198-1.107 16.79-.97 24.844.397.739.125 1.561.007 2.095-.301l2.381-1.374-25.125-14.506a.467.467 0 0 1 .467-.809l25.825 14.91a.467.467 0 0 1 0 .809l-3.081 1.779c-.721.417-1.763.575-2.718.413-7.963-1.351-16.457-1.486-24.563-.392-11.77 1.589-22.512 5.039-31.065 9.977-8.514 4.916-14.456 11.073-17.183 17.805-1.854 4.578-1.623 9.376.666 13.875.37.725.055 1.513-.8 2.006l-3.081 1.78a.476.476 0 0 1-.234.062' fill='#455A64'/><path d='M153.316 128.279c-2.413 0-4.821-.528-6.652-1.586-1.818-1.049-2.82-2.461-2.82-3.975 0-1.527 1.016-2.955 2.861-4.02l9.493-5.607a.233.233 0 1 1 .238.402l-9.496 5.609c-1.696.979-2.628 2.263-2.628 3.616 0 1.34.918 2.608 2.585 3.571 3.549 2.049 9.343 2.038 12.914-.024l9.748-5.628a.234.234 0 0 1 .234.405l-9.748 5.628c-1.858 1.072-4.296 1.609-6.729 1.609' fill='#607D8B'/><path d='M113.675 182.992l-45.913-26.508M113.675 183.342a.346.346 0 0 1-.175-.047l-45.913-26.508a.35.35 0 1 1 .35-.607l45.913 26.508a.35.35 0 0 1-.175.654' fill='#455A64'/><path d='M67.762 156.484v54.001c0 1.09.77 2.418 1.72 2.967l42.473 24.521c.95.549 1.72.11 1.72-.98v-54.001' fill='#FAFAFA'/><path d='M112.727 238.561c-.297 0-.62-.095-.947-.285l-42.473-24.521c-1.063-.613-1.895-2.05-1.895-3.27v-54.001a.35.35 0 1 1 .701 0v54.001c0 .96.707 2.18 1.544 2.663l42.473 24.522c.344.198.661.243.87.122.206-.119.325-.411.325-.799v-54.001a.35.35 0 1 1 .7 0v54.001c0 .655-.239 1.154-.675 1.406a1.235 1.235 0 0 1-.623.162' fill='#455A64'/><path d='M112.86 147.512h-.001c-2.318 0-4.499-.522-6.142-1.471-1.705-.984-2.643-2.315-2.643-3.749 0-1.445.952-2.791 2.68-3.788l12.041-6.953c1.668-.962 3.874-1.493 6.212-1.493 2.318 0 4.499.523 6.143 1.472 1.704.984 2.643 2.315 2.643 3.748 0 1.446-.952 2.791-2.68 3.789l-12.042 6.952c-1.668.963-3.874 1.493-6.211 1.493zm12.147-16.753c-2.217 0-4.298.497-5.861 1.399l-12.042 6.952c-1.502.868-2.33 1.998-2.33 3.182 0 1.173.815 2.289 2.293 3.142 1.538.889 3.596 1.378 5.792 1.378h.001c2.216 0 4.298-.497 5.861-1.399l12.041-6.953c1.502-.867 2.33-1.997 2.33-3.182 0-1.172-.814-2.288-2.292-3.142-1.539-.888-3.596-1.377-5.793-1.377z' fill='#607D8B'/><path d='M165.63 123.219l-5.734 3.311c-3.167 1.828-8.286 1.837-11.433.02-3.147-1.817-3.131-4.772.036-6.601l5.734-3.31 11.397 6.58' fill='#FAFAFA'/><path d='M154.233 117.448l9.995 5.771-4.682 2.704c-1.434.827-3.352 1.283-5.399 1.283-2.029 0-3.923-.449-5.333-1.263-1.29-.744-2-1.694-2-2.674 0-.991.723-1.955 2.036-2.713l5.383-3.108m0-.809l-5.734 3.31c-3.167 1.829-3.183 4.784-.036 6.601 1.568.905 3.623 1.357 5.684 1.357 2.077 0 4.159-.46 5.749-1.377l5.734-3.311-11.397-6.58M145.445 179.667c-1.773 0-3.241-.85-4.243-2.245-.067-.092-.057-.275.023-.356.08-.081.207-.12.3-.055.781.548 1.706.812 2.751.811 1.322 0 2.754-.446 4.256-1.313 5.31-3.066 9.631-10.522 9.631-16.615 0-1.927-.442-3.562-1.279-4.726a.235.235 0 0 1 .024-.301.232.232 0 0 1 .3-.027c1.67 1.172 2.59 3.38 2.59 6.219 0 6.242-4.425 13.987-9.865 17.127-1.573.908-3.083 1.481-4.488 1.481zM142.476 178c.814.651 1.82 1.002 2.969 1.002 1.322 0 2.753-.452 4.255-1.32 5.31-3.065 9.631-10.523 9.631-16.617 0-1.98-.463-3.63-1.325-4.793.411 1.035.624 2.26.624 3.62 0 6.242-4.425 13.875-9.865 17.015-1.573.909-3.084 1.376-4.489 1.376a5.49 5.49 0 0 1-1.8-.283z' fill='#607D8B'/><path d='M148.648 176.704c5.384-3.108 9.748-10.636 9.748-16.813 0-2.052-.483-3.693-1.322-4.861-1.785-1.252-4.375-1.194-7.258.471-5.383 3.108-9.748 10.636-9.748 16.813 0 2.051.484 3.692 1.323 4.86 1.785 1.253 4.374 1.195 7.257-.47' fill='#FAFAFA'/><path d='M144.276 178.276c-1.143 0-2.158-.307-3.019-.911a.217.217 0 0 1-.055-.054c-.895-1.244-1.367-2.972-1.367-4.997 0-6.241 4.425-13.875 9.865-17.016 1.573-.908 3.084-1.369 4.489-1.369 1.143 0 2.158.307 3.019.91a.24.24 0 0 1 .055.055c.894 1.244 1.367 2.971 1.367 4.997 0 6.241-4.425 13.875-9.865 17.016-1.573.908-3.084 1.369-4.489 1.369zm-2.718-1.172c.773.533 1.687.901 2.718.901 1.322 0 2.754-.538 4.256-1.405 5.31-3.066 9.631-10.567 9.631-16.661 0-1.908-.434-3.554-1.256-4.716-.774-.532-1.688-.814-2.718-.814-1.322 0-2.754.433-4.256 1.3-5.31 3.066-9.631 10.564-9.631 16.657 0 1.91.434 3.576 1.256 4.738z' fill='#607D8B'/><path d='M150.72 172.361l-.363-.295a24.105 24.105 0 0 0 2.148-3.128 24.05 24.05 0 0 0 1.977-4.375l.443.149a24.54 24.54 0 0 1-2.015 4.46 24.61 24.61 0 0 1-2.19 3.189M115.917 191.514l-.363-.294a24.174 24.174 0 0 0 2.148-3.128 24.038 24.038 0 0 0 1.976-4.375l.443.148a24.48 24.48 0 0 1-2.015 4.461 24.662 24.662 0 0 1-2.189 3.188M114 237.476V182.584 237.476' fill='#607D8B'/><g><path d='M81.822 37.474c.017-.135-.075-.28-.267-.392-.327-.188-.826-.21-1.109-.045l-6.012 3.471c-.131.076-.194.178-.191.285.002.132.002.461.002.578v.043l-.007.128-6.591 3.779c-.001 0-2.077 1.046-2.787 5.192 0 0-.912 6.961-.898 19.745.015 12.57.606 17.07 1.167 21.351.22 1.684 3.001 2.125 3.001 2.125.331.04.698-.027 1.08-.248l75.273-43.551c1.808-1.069 2.667-3.719 3.056-6.284 1.213-7.99 1.675-32.978-.275-39.878-.196-.693-.51-1.083-.868-1.282l-2.086-.79c-.727.028-1.416.467-1.534.535L82.032 37.072l-.21.402' fill='#FFF'/><path d='M144.311 1.701l2.085.79c.358.199.672.589.868 1.282 1.949 6.9 1.487 31.887.275 39.878-.39 2.565-1.249 5.215-3.056 6.284L69.21 93.486a1.78 1.78 0 0 1-.896.258l-.183-.011c0 .001-2.782-.44-3.003-2.124-.56-4.282-1.151-8.781-1.165-21.351-.015-12.784.897-19.745.897-19.745.71-4.146 2.787-5.192 2.787-5.192l6.591-3.779.007-.128v-.043c0-.117 0-.446-.002-.578-.003-.107.059-.21.191-.285l6.012-3.472a.98.98 0 0 1 .481-.11c.218 0 .449.053.627.156.193.112.285.258.268.392l.211-.402 60.744-34.836c.117-.068.806-.507 1.534-.535m0-.997l-.039.001c-.618.023-1.283.244-1.974.656l-.021.012-60.519 34.706a2.358 2.358 0 0 0-.831-.15c-.365 0-.704.084-.98.244l-6.012 3.471c-.442.255-.699.69-.689 1.166l.001.15-6.08 3.487c-.373.199-2.542 1.531-3.29 5.898l-.006.039c-.009.07-.92 7.173-.906 19.875.014 12.62.603 17.116 1.172 21.465l.002.015c.308 2.355 3.475 2.923 3.836 2.98l.034.004c.101.013.204.019.305.019a2.77 2.77 0 0 0 1.396-.392l75.273-43.552c1.811-1.071 2.999-3.423 3.542-6.997 1.186-7.814 1.734-33.096-.301-40.299-.253-.893-.704-1.527-1.343-1.882l-.132-.062-2.085-.789a.973.973 0 0 0-.353-.065' fill='#455A64'/><path d='M128.267 11.565l1.495.434-56.339 32.326' fill='#FFF'/><path d='M74.202 90.545a.5.5 0 0 1-.25-.931l18.437-10.645a.499.499 0 1 1 .499.864L74.451 90.478l-.249.067M75.764 42.654l-.108-.062.046-.171 5.135-2.964.17.045-.045.171-5.135 2.964-.063.017M70.52 90.375V46.421l.063-.036L137.84 7.554v43.954l-.062.036L70.52 90.375zm.25-43.811v43.38l66.821-38.579V7.985L70.77 46.564z' fill='#607D8B'/><path d='M86.986 83.182c-.23.149-.612.384-.849.523l-11.505 6.701c-.237.139-.206.252.068.252h.565c.275 0 .693-.113.93-.252L87.7 83.705c.237-.139.428-.253.425-.256a11.29 11.29 0 0 1-.006-.503c0-.274-.188-.377-.418-.227l-.715.463' fill='#607D8B'/><path d='M75.266 90.782H74.7c-.2 0-.316-.056-.346-.166-.03-.11.043-.217.215-.317l11.505-6.702c.236-.138.615-.371.844-.519l.715-.464a.488.488 0 0 1 .266-.089c.172 0 .345.13.345.421 0 .214.001.363.003.437l.006.004-.004.069c-.003.075-.003.075-.486.356l-11.505 6.702a2.282 2.282 0 0 1-.992.268zm-.6-.25l.034.001h.566c.252 0 .649-.108.866-.234l11.505-6.702c.168-.098.294-.173.361-.214-.004-.084-.004-.218-.004-.437l-.095-.171-.131.049-.714.463c-.232.15-.616.386-.854.525l-11.505 6.702-.029.018z' fill='#607D8B'/><path d='M75.266 89.871H74.7c-.2 0-.316-.056-.346-.166-.03-.11.043-.217.215-.317l11.505-6.702c.258-.151.694-.268.993-.268h.565c.2 0 .316.056.346.166.03.11-.043.217-.215.317l-11.505 6.702a2.282 2.282 0 0 1-.992.268zm-.6-.25l.034.001h.566c.252 0 .649-.107.866-.234l11.505-6.702.03-.018-.035-.001h-.565c-.252 0-.649.108-.867.234l-11.505 6.702-.029.018zM74.37 90.801v-1.247 1.247' fill='#607D8B'/><path d='M68.13 93.901c-.751-.093-1.314-.737-1.439-1.376-.831-4.238-1.151-8.782-1.165-21.352-.015-12.784.897-19.745.897-19.745.711-4.146 2.787-5.192 2.787-5.192l74.859-43.219c.223-.129 2.487-1.584 3.195.923 1.95 6.9 1.488 31.887.275 39.878-.389 2.565-1.248 5.215-3.056 6.283L69.21 93.653c-.382.221-.749.288-1.08.248 0 0-2.781-.441-3.001-2.125-.561-4.281-1.152-8.781-1.167-21.351-.014-12.784.898-19.745.898-19.745.71-4.146 2.787-5.191 2.787-5.191l6.598-3.81.871-.119 6.599-3.83.046-.461L68.13 93.901' fill='#FAFAFA'/><path d='M68.317 94.161l-.215-.013h-.001l-.244-.047c-.719-.156-2.772-.736-2.976-2.292-.568-4.34-1.154-8.813-1.168-21.384-.014-12.654.891-19.707.9-19.777.725-4.231 2.832-5.338 2.922-5.382l6.628-3.827.87-.119 6.446-3.742.034-.334a.248.248 0 0 1 .273-.223.248.248 0 0 1 .223.272l-.059.589-6.752 3.919-.87.118-6.556 3.785c-.031.016-1.99 1.068-2.666 5.018-.007.06-.908 7.086-.894 19.702.014 12.539.597 16.996 1.161 21.305.091.691.689 1.154 1.309 1.452a1.95 1.95 0 0 1-.236-.609c-.781-3.984-1.155-8.202-1.17-21.399-.014-12.653.891-19.707.9-19.777.725-4.231 2.832-5.337 2.922-5.382-.004.001 74.444-42.98 74.846-43.212l.028-.017c.904-.538 1.72-.688 2.36-.433.555.221.949.733 1.172 1.52 2.014 7.128 1.46 32.219.281 39.983-.507 3.341-1.575 5.515-3.175 6.462L69.335 93.869a2.023 2.023 0 0 1-1.018.292zm-.147-.507c.293.036.604-.037.915-.217l75.273-43.551c1.823-1.078 2.602-3.915 2.934-6.106 1.174-7.731 1.731-32.695-.268-39.772-.178-.631-.473-1.032-.876-1.192-.484-.193-1.166-.052-1.921.397l-.034.021-74.858 43.218c-.031.017-1.989 1.069-2.666 5.019-.007.059-.908 7.085-.894 19.702.015 13.155.386 17.351 1.161 21.303.09.461.476.983 1.037 1.139.114.025.185.037.196.039h.001z' fill='#455A64'/><path d='M69.317 68.982c.489-.281.885-.056.885.505 0 .56-.396 1.243-.885 1.525-.488.282-.884.057-.884-.504 0-.56.396-1.243.884-1.526' fill='#FFF'/><path d='M68.92 71.133c-.289 0-.487-.228-.487-.625 0-.56.396-1.243.884-1.526a.812.812 0 0 1 .397-.121c.289 0 .488.229.488.626 0 .56-.396 1.243-.885 1.525a.812.812 0 0 1-.397.121m.794-2.459a.976.976 0 0 0-.49.147c-.548.317-.978 1.058-.978 1.687 0 .486.271.812.674.812a.985.985 0 0 0 .491-.146c.548-.317.978-1.057.978-1.687 0-.486-.272-.813-.675-.813' fill='#8097A2'/><path d='M68.92 70.947c-.271 0-.299-.307-.299-.439 0-.491.361-1.116.79-1.363a.632.632 0 0 1 .303-.096c.272 0 .301.306.301.438 0 .491-.363 1.116-.791 1.364a.629.629 0 0 1-.304.096m.794-2.086a.812.812 0 0 0-.397.121c-.488.283-.884.966-.884 1.526 0 .397.198.625.487.625a.812.812 0 0 0 .397-.121c.489-.282.885-.965.885-1.525 0-.397-.199-.626-.488-.626' fill='#8097A2'/><path d='M69.444 85.35c.264-.152.477-.031.477.272 0 .303-.213.67-.477.822-.263.153-.477.031-.477-.271 0-.302.214-.671.477-.823' fill='#FFF'/><path d='M69.23 86.51c-.156 0-.263-.123-.263-.337 0-.302.214-.671.477-.823a.431.431 0 0 1 .214-.066c.156 0 .263.124.263.338 0 .303-.213.67-.477.822a.431.431 0 0 1-.214.066m.428-1.412c-.1 0-.203.029-.307.09-.32.185-.57.618-.57.985 0 .309.185.524.449.524a.63.63 0 0 0 .308-.09c.32-.185.57-.618.57-.985 0-.309-.185-.524-.45-.524' fill='#8097A2'/><path d='M69.23 86.322l-.076-.149c0-.235.179-.544.384-.661l.12-.041.076.151c0 .234-.179.542-.383.66l-.121.04m.428-1.038a.431.431 0 0 0-.214.066c-.263.152-.477.521-.477.823 0 .214.107.337.263.337a.431.431 0 0 0 .214-.066c.264-.152.477-.519.477-.822 0-.214-.107-.338-.263-.338' fill='#8097A2'/><path d='M139.278 7.769v43.667L72.208 90.16V46.493l67.07-38.724' fill='#455A64'/><path d='M72.083 90.375V46.421l.063-.036 67.257-38.831v43.954l-.062.036-67.258 38.831zm.25-43.811v43.38l66.821-38.579V7.985L72.333 46.564z' fill='#607D8B'/></g><path d='M125.737 88.647l-7.639 3.334V84l-11.459 4.713v8.269L99 100.315l13.369 3.646 13.368-15.314' fill='#455A64'/></g></svg>" + function Ee() { + this.loadIcon_() + var e = document.createElement('div') + ;((o = e.style).position = 'fixed'), + (o.top = 0), + (o.right = 0), + (o.bottom = 0), + (o.left = 0), + (o.backgroundColor = 'gray'), + (o.fontFamily = 'sans-serif'), + (o.zIndex = 1e6) + var t = document.createElement('img') + ;(t.src = this.icon), + ((o = t.style).marginLeft = '25%'), + (o.marginTop = '25%'), + (o.width = '50%'), + e.appendChild(t) + var n = document.createElement('div') + ;((o = n.style).textAlign = 'center'), + (o.fontSize = '16px'), + (o.lineHeight = '24px'), + (o.margin = '24px 25%'), + (o.width = '50%'), + (n.innerHTML = 'Place your phone into your Cardboard viewer.'), + e.appendChild(n) + var r = document.createElement('div') + ;((o = r.style).backgroundColor = '#CFD8DC'), + (o.position = 'fixed'), + (o.bottom = 0), + (o.width = '100%'), + (o.height = '48px'), + (o.padding = '14px 24px'), + (o.boxSizing = 'border-box'), + (o.color = '#656A6B'), + e.appendChild(r) + var i = document.createElement('div') + ;(i.style.float = 'left'), (i.innerHTML = 'No Cardboard viewer?') + var o, + a = document.createElement('a') + ;(a.href = 'https://www.google.com/get/cardboard/get-cardboard/'), + (a.innerHTML = 'get one'), + (a.target = '_blank'), + ((o = a.style).float = 'right'), + (o.fontWeight = 600), + (o.textTransform = 'uppercase'), + (o.borderLeft = '1px solid gray'), + (o.paddingLeft = '24px'), + (o.textDecoration = 'none'), + (o.color = '#656A6B'), + r.appendChild(i), + r.appendChild(a), + (this.overlay = e), + (this.text = n), + this.hide() + } + ;(Ee.prototype.show = function (e) { + e || this.overlay.parentElement + ? e && + (this.overlay.parentElement && + this.overlay.parentElement != e && + this.overlay.parentElement.removeChild(this.overlay), + e.appendChild(this.overlay)) + : document.body.appendChild(this.overlay), + (this.overlay.style.display = 'block') + var t = this.overlay.querySelector('img').style + v() + ? ((t.width = '20%'), (t.marginLeft = '40%'), (t.marginTop = '3%')) + : ((t.width = '50%'), (t.marginLeft = '25%'), (t.marginTop = '25%')) + }), + (Ee.prototype.hide = function () { + this.overlay.style.display = 'none' + }), + (Ee.prototype.showTemporarily = function (e, t) { + this.show(t), (this.timer = setTimeout(this.hide.bind(this), e)) + }), + (Ee.prototype.disableShowTemporarily = function () { + clearTimeout(this.timer) + }), + (Ee.prototype.update = function () { + this.disableShowTemporarily(), + !v() && T() ? this.show() : this.hide() + }), + (Ee.prototype.loadIcon_ = function () { + this.icon = a('image/svg+xml', xe) + }) + var Me = 'CardboardV1', + _e = 'WEBVR_CARDBOARD_VIEWER', + Te = 'webvr-polyfill-viewer-selector' + function Se(e) { + try { + this.selectedKey = localStorage.getItem(_e) + } catch (t) { + console.error('Failed to load viewer profile: %s', t) + } + this.selectedKey || (this.selectedKey = e || Me), + (this.dialog = this.createDialog_(le.Viewers)), + (this.root = null), + (this.onChangeCallbacks_ = []) + } + function Ce(e) { + return e && + e.__esModule && + Object.prototype.hasOwnProperty.call(e, 'default') + ? e.default + : e + } + function Le(e, t) { + return e((t = { exports: {} }), t.exports), t.exports + } + ;(Se.prototype.show = function (e) { + ;(this.root = e), + e.appendChild(this.dialog), + (this.dialog.querySelector('#' + this.selectedKey).checked = !0), + (this.dialog.style.display = 'block') + }), + (Se.prototype.hide = function () { + this.root && + this.root.contains(this.dialog) && + this.root.removeChild(this.dialog), + (this.dialog.style.display = 'none') + }), + (Se.prototype.getCurrentViewer = function () { + return le.Viewers[this.selectedKey] + }), + (Se.prototype.getSelectedKey_ = function () { + var e = this.dialog.querySelector('input[name=field]:checked') + return e ? e.id : null + }), + (Se.prototype.onChange = function (e) { + this.onChangeCallbacks_.push(e) + }), + (Se.prototype.fireOnChange_ = function (e) { + for (var t = 0; t < this.onChangeCallbacks_.length; t++) + this.onChangeCallbacks_[t](e) + }), + (Se.prototype.onSave_ = function () { + if ( + ((this.selectedKey = this.getSelectedKey_()), + this.selectedKey && le.Viewers[this.selectedKey]) + ) { + this.fireOnChange_(le.Viewers[this.selectedKey]) + try { + localStorage.setItem(_e, this.selectedKey) + } catch (e) { + console.error('Failed to save viewer profile: %s', e) + } + this.hide() + } else + console.error('ViewerSelector.onSave_: this should never happen!') + }), + (Se.prototype.createDialog_ = function (e) { + var t = document.createElement('div') + t.classList.add(Te), (t.style.display = 'none') + var n = document.createElement('div') + ;((o = n.style).position = 'fixed'), + (o.left = 0), + (o.top = 0), + (o.width = '100%'), + (o.height = '100%'), + (o.background = 'rgba(0, 0, 0, 0.3)'), + n.addEventListener('click', this.hide.bind(this)) + var r = 280, + i = document.createElement('div'), + o = i.style + for (var a in ((o.boxSizing = 'border-box'), + (o.position = 'fixed'), + (o.top = '24px'), + (o.left = '50%'), + (o.marginLeft = -r / 2 + 'px'), + (o.width = r + 'px'), + (o.padding = '24px'), + (o.overflow = 'hidden'), + (o.background = '#fafafa'), + (o.fontFamily = "'Roboto', sans-serif"), + (o.boxShadow = '0px 5px 20px #666'), + i.appendChild(this.createH1_('Select your viewer')), + e)) + i.appendChild(this.createChoice_(a, e[a].label)) + return ( + i.appendChild( + this.createButton_('Save', this.onSave_.bind(this)), + ), + t.appendChild(n), + t.appendChild(i), + t + ) + }), + (Se.prototype.createH1_ = function (e) { + var t = document.createElement('h1'), + n = t.style + return ( + (n.color = 'black'), + (n.fontSize = '20px'), + (n.fontWeight = 'bold'), + (n.marginTop = 0), + (n.marginBottom = '24px'), + (t.innerHTML = e), + t + ) + }), + (Se.prototype.createChoice_ = function (e, t) { + var n = document.createElement('div') + ;(n.style.marginTop = '8px'), (n.style.color = 'black') + var r = document.createElement('input') + ;(r.style.fontSize = '30px'), + r.setAttribute('id', e), + r.setAttribute('type', 'radio'), + r.setAttribute('value', e), + r.setAttribute('name', 'field') + var i = document.createElement('label') + return ( + (i.style.marginLeft = '4px'), + i.setAttribute('for', e), + (i.innerHTML = t), + n.appendChild(r), + n.appendChild(i), + n + ) + }), + (Se.prototype.createButton_ = function (e, t) { + var n = document.createElement('button') + n.innerHTML = e + var r = n.style + return ( + (r.float = 'right'), + (r.textTransform = 'uppercase'), + (r.color = '#1094f7'), + (r.fontSize = '14px'), + (r.letterSpacing = 0), + (r.border = 0), + (r.background = 'none'), + (r.marginTop = '16px'), + n.addEventListener('click', t), + n + ) + }), + 'undefined' !== typeof window + ? window + : 'undefined' !== typeof t || ('undefined' !== typeof self && self) + var Re = Ce( + Le(function (e, t) { + var n + ;(n = function () { + return (function (e) { + var t = {} + function n(r) { + if (t[r]) return t[r].exports + var i = (t[r] = { i: r, l: !1, exports: {} }) + return ( + e[r].call(i.exports, i, i.exports, n), + (i.l = !0), + i.exports + ) + } + return ( + (n.m = e), + (n.c = t), + (n.d = function (e, t, r) { + n.o(e, t) || + Object.defineProperty(e, t, { + configurable: !1, + enumerable: !0, + get: r, + }) + }), + (n.n = function (e) { + var t = + e && e.__esModule + ? function () { + return e.default + } + : function () { + return e + } + return n.d(t, 'a', t), t + }), + (n.o = function (e, t) { + return Object.prototype.hasOwnProperty.call(e, t) + }), + (n.p = ''), + n((n.s = 0)) + ) + })([ + function (e, t, n) { + var r = (function () { + function e(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n] + ;(r.enumerable = r.enumerable || !1), + (r.configurable = !0), + 'value' in r && (r.writable = !0), + Object.defineProperty(e, r.key, r) + } + } + return function (t, n, r) { + return n && e(t.prototype, n), r && e(t, r), t + } + })() + function i(e, t) { + if (!(e instanceof t)) + throw new TypeError('Cannot call a class as a function') + } + var o = n(1), + a = + 'undefined' !== typeof navigator && + parseFloat( + ( + '' + + (/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec( + navigator.userAgent, + ) || [0, ''])[1] + ) + .replace('undefined', '3_2') + .replace('_', '.') + .replace('_', ''), + ) < 10 && + !window.MSStream, + s = (function () { + function e() { + i(this, e), + a + ? (this.noSleepTimer = null) + : ((this.noSleepVideo = + document.createElement('video')), + this.noSleepVideo.setAttribute( + 'playsinline', + '', + ), + this.noSleepVideo.setAttribute('src', o), + this.noSleepVideo.addEventListener( + 'timeupdate', + function (e) { + this.noSleepVideo.currentTime > 0.5 && + (this.noSleepVideo.currentTime = + Math.random()) + }.bind(this), + )) + } + return ( + r(e, [ + { + key: 'enable', + value: function () { + a + ? (this.disable(), + (this.noSleepTimer = window.setInterval( + function () { + ;(window.location.href = '/'), + window.setTimeout(window.stop, 0) + }, + 15e3, + ))) + : this.noSleepVideo.play() + }, + }, + { + key: 'disable', + value: function () { + a + ? this.noSleepTimer && + (window.clearInterval(this.noSleepTimer), + (this.noSleepTimer = null)) + : this.noSleepVideo.pause() + }, + }, + ]), + e + ) + })() + e.exports = s + }, + function (e, t, n) { + e.exports = + 'data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQADQGgcIQADQGgcAAAACQGeYUQn/wALKCEAA0BoHAAAAAkBnmNEJ/8ACykhAANAaBwhAANAaBwAAAANQZpoNExDP/6plgAMuSEAA0BoHAAAAAtBnoZFESwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBnqVEJ/8ACykhAANAaBwAAAAJAZ6nRCf/AAsoIQADQGgcIQADQGgcAAAADUGarDRMQz/+qZYADLghAANAaBwAAAALQZ7KRRUsK/8ACPkhAANAaBwAAAAJAZ7pRCf/AAsoIQADQGgcIQADQGgcAAAACQGe60Qn/wALKCEAA0BoHAAAAA1BmvA0TEM//qmWAAy5IQADQGgcIQADQGgcAAAAC0GfDkUVLCv/AAj5IQADQGgcAAAACQGfLUQn/wALKSEAA0BoHCEAA0BoHAAAAAkBny9EJ/8ACyghAANAaBwAAAANQZs0NExDP/6plgAMuCEAA0BoHAAAAAtBn1JFFSwr/wAI+SEAA0BoHCEAA0BoHAAAAAkBn3FEJ/8ACyghAANAaBwAAAAJAZ9zRCf/AAsoIQADQGgcIQADQGgcAAAADUGbeDRMQz/+qZYADLkhAANAaBwAAAALQZ+WRRUsK/8ACPghAANAaBwhAANAaBwAAAAJAZ+1RCf/AAspIQADQGgcAAAACQGft0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bm7w0TEM//qmWAAy4IQADQGgcAAAAC0Gf2kUVLCv/AAj5IQADQGgcAAAACQGf+UQn/wALKCEAA0BoHCEAA0BoHAAAAAkBn/tEJ/8ACykhAANAaBwAAAANQZvgNExDP/6plgAMuSEAA0BoHCEAA0BoHAAAAAtBnh5FFSwr/wAI+CEAA0BoHAAAAAkBnj1EJ/8ACyghAANAaBwhAANAaBwAAAAJAZ4/RCf/AAspIQADQGgcAAAADUGaJDRMQz/+qZYADLghAANAaBwAAAALQZ5CRRUsK/8ACPkhAANAaBwhAANAaBwAAAAJAZ5hRCf/AAsoIQADQGgcAAAACQGeY0Qn/wALKSEAA0BoHCEAA0BoHAAAAA1Bmmg0TEM//qmWAAy5IQADQGgcAAAAC0GehkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGepUQn/wALKSEAA0BoHAAAAAkBnqdEJ/8ACyghAANAaBwAAAANQZqsNExDP/6plgAMuCEAA0BoHCEAA0BoHAAAAAtBnspFFSwr/wAI+SEAA0BoHAAAAAkBnulEJ/8ACyghAANAaBwhAANAaBwAAAAJAZ7rRCf/AAsoIQADQGgcAAAADUGa8DRMQz/+qZYADLkhAANAaBwhAANAaBwAAAALQZ8ORRUsK/8ACPkhAANAaBwAAAAJAZ8tRCf/AAspIQADQGgcIQADQGgcAAAACQGfL0Qn/wALKCEAA0BoHAAAAA1BmzQ0TEM//qmWAAy4IQADQGgcAAAAC0GfUkUVLCv/AAj5IQADQGgcIQADQGgcAAAACQGfcUQn/wALKCEAA0BoHAAAAAkBn3NEJ/8ACyghAANAaBwhAANAaBwAAAANQZt4NExC//6plgAMuSEAA0BoHAAAAAtBn5ZFFSwr/wAI+CEAA0BoHCEAA0BoHAAAAAkBn7VEJ/8ACykhAANAaBwAAAAJAZ+3RCf/AAspIQADQGgcAAAADUGbuzRMQn/+nhAAYsAhAANAaBwhAANAaBwAAAAJQZ/aQhP/AAspIQADQGgcAAAACQGf+UQn/wALKCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHCEAA0BoHAAACiFtb292AAAAbG12aGQAAAAA1YCCX9WAgl8AAAPoAAAH/AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAGGlvZHMAAAAAEICAgAcAT////v7/AAAF+XRyYWsAAABcdGtoZAAAAAPVgIJf1YCCXwAAAAEAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAygAAAMoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAB9AAABdwAAEAAAAABXFtZGlhAAAAIG1kaGQAAAAA1YCCX9WAgl8AAV+QAAK/IFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAUcbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAE3HN0YmwAAACYc3RzZAAAAAAAAAABAAAAiGF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAygDKAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAyYXZjQwFNQCj/4QAbZ01AKOyho3ySTUBAQFAAAAMAEAAr8gDxgxlgAQAEaO+G8gAAABhzdHRzAAAAAAAAAAEAAAA8AAALuAAAABRzdHNzAAAAAAAAAAEAAAABAAAB8GN0dHMAAAAAAAAAPAAAAAEAABdwAAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAADqYAAAAAQAAF3AAAAABAAAAAAAAAAEAAAu4AAAAAQAAOpgAAAABAAAXcAAAAAEAAAAAAAAAAQAAC7gAAAABAAA6mAAAAAEAABdwAAAAAQAAAAAAAAABAAALuAAAAAEAAC7gAAAAAQAAF3AAAAABAAAAAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAEEc3RzegAAAAAAAAAAAAAAPAAAAzQAAAAQAAAADQAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAAPAAAADQAAAA0AAAARAAAADwAAAA0AAAANAAAAEQAAAA8AAAANAAAADQAAABEAAAANAAAADQAAAQBzdGNvAAAAAAAAADwAAAAwAAADZAAAA3QAAAONAAADoAAAA7kAAAPQAAAD6wAAA/4AAAQXAAAELgAABEMAAARcAAAEbwAABIwAAAShAAAEugAABM0AAATkAAAE/wAABRIAAAUrAAAFQgAABV0AAAVwAAAFiQAABaAAAAW1AAAFzgAABeEAAAX+AAAGEwAABiwAAAY/AAAGVgAABnEAAAaEAAAGnQAABrQAAAbPAAAG4gAABvUAAAcSAAAHJwAAB0AAAAdTAAAHcAAAB4UAAAeeAAAHsQAAB8gAAAfjAAAH9gAACA8AAAgmAAAIQQAACFQAAAhnAAAIhAAACJcAAAMsdHJhawAAAFx0a2hkAAAAA9WAgl/VgIJfAAAAAgAAAAAAAAf8AAAAAAAAAAAAAAABAQAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAACsm1kaWEAAAAgbWRoZAAAAADVgIJf1YCCXwAArEQAAWAAVcQAAAAAACdoZGxyAAAAAAAAAABzb3VuAAAAAAAAAAAAAAAAU3RlcmVvAAAAAmNtaW5mAAAAEHNtaGQAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAidzdGJsAAAAZ3N0c2QAAAAAAAAAAQAAAFdtcDRhAAAAAAAAAAEAAAAAAAAAAAACABAAAAAArEQAAAAAADNlc2RzAAAAAAOAgIAiAAIABICAgBRAFQAAAAADDUAAAAAABYCAgAISEAaAgIABAgAAABhzdHRzAAAAAAAAAAEAAABYAAAEAAAAABxzdHNjAAAAAAAAAAEAAAABAAAAAQAAAAEAAAAUc3RzegAAAAAAAAAGAAAAWAAAAXBzdGNvAAAAAAAAAFgAAAOBAAADhwAAA5oAAAOtAAADswAAA8oAAAPfAAAD5QAAA/gAAAQLAAAEEQAABCgAAAQ9AAAEUAAABFYAAARpAAAEgAAABIYAAASbAAAErgAABLQAAATHAAAE3gAABPMAAAT5AAAFDAAABR8AAAUlAAAFPAAABVEAAAVXAAAFagAABX0AAAWDAAAFmgAABa8AAAXCAAAFyAAABdsAAAXyAAAF+AAABg0AAAYgAAAGJgAABjkAAAZQAAAGZQAABmsAAAZ+AAAGkQAABpcAAAauAAAGwwAABskAAAbcAAAG7wAABwYAAAcMAAAHIQAABzQAAAc6AAAHTQAAB2QAAAdqAAAHfwAAB5IAAAeYAAAHqwAAB8IAAAfXAAAH3QAAB/AAAAgDAAAICQAACCAAAAg1AAAIOwAACE4AAAhhAAAIeAAACH4AAAiRAAAIpAAACKoAAAiwAAAItgAACLwAAAjCAAAAFnVkdGEAAAAObmFtZVN0ZXJlbwAAAHB1ZHRhAAAAaG1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAO2lsc3QAAAAzqXRvbwAAACtkYXRhAAAAAQAAAABIYW5kQnJha2UgMC4xMC4yIDIwMTUwNjExMDA=' + }, + ]) + }), + (e.exports = n()) + }), + ), + Pe = 1e3, + De = [0, 0, 0.5, 1], + Oe = [0.5, 0, 0.5, 1], + Ie = window.requestAnimationFrame, + Be = window.cancelAnimationFrame + function Fe() { + ;(this.leftProjectionMatrix = new Float32Array(16)), + (this.leftViewMatrix = new Float32Array(16)), + (this.rightProjectionMatrix = new Float32Array(16)), + (this.rightViewMatrix = new Float32Array(16)), + (this.pose = null) + } + function ke(e) { + Object.defineProperties(this, { + hasPosition: { writable: !1, enumerable: !0, value: e.hasPosition }, + hasExternalDisplay: { + writable: !1, + enumerable: !0, + value: e.hasExternalDisplay, + }, + canPresent: { writable: !1, enumerable: !0, value: e.canPresent }, + maxLayers: { writable: !1, enumerable: !0, value: e.maxLayers }, + hasOrientation: { + enumerable: !0, + get: function () { + return ( + I( + 'VRDisplayCapabilities.prototype.hasOrientation', + 'VRDisplay.prototype.getFrameData', + ), + e.hasOrientation + ) + }, + }, + }) + } + function Ne(e) { + var t = !('wakelock' in (e = e || {})) || e.wakelock + ;(this.isPolyfilled = !0), + (this.displayId = Pe++), + (this.displayName = ''), + (this.depthNear = 0.01), + (this.depthFar = 1e4), + (this.isPresenting = !1), + Object.defineProperty(this, 'isConnected', { + get: function () { + return ( + I( + 'VRDisplay.prototype.isConnected', + 'VRDisplayCapabilities.prototype.hasExternalDisplay', + ), + !1 + ) + }, + }), + (this.capabilities = new ke({ + hasPosition: !1, + hasOrientation: !1, + hasExternalDisplay: !1, + canPresent: !1, + maxLayers: 1, + })), + (this.stageParameters = null), + (this.waitingForPresent_ = !1), + (this.layer_ = null), + (this.originalParent_ = null), + (this.fullscreenElement_ = null), + (this.fullscreenWrapper_ = null), + (this.fullscreenElementCachedStyle_ = null), + (this.fullscreenEventTarget_ = null), + (this.fullscreenChangeHandler_ = null), + (this.fullscreenErrorHandler_ = null), + t && T() && (this.wakelock_ = new Re()) + } + ;(Ne.prototype.getFrameData = function (e) { + return L(e, this._getPose(), this) + }), + (Ne.prototype.getPose = function () { + return ( + I( + 'VRDisplay.prototype.getPose', + 'VRDisplay.prototype.getFrameData', + ), + this._getPose() + ) + }), + (Ne.prototype.resetPose = function () { + return I('VRDisplay.prototype.resetPose'), this._resetPose() + }), + (Ne.prototype.getImmediatePose = function () { + return ( + I( + 'VRDisplay.prototype.getImmediatePose', + 'VRDisplay.prototype.getFrameData', + ), + this._getPose() + ) + }), + (Ne.prototype.requestAnimationFrame = function (e) { + return Ie(e) + }), + (Ne.prototype.cancelAnimationFrame = function (e) { + return Be(e) + }), + (Ne.prototype.wrapForFullscreen = function (e) { + if (l()) return e + if (!this.fullscreenWrapper_) { + this.fullscreenWrapper_ = document.createElement('div') + var t = [ + 'height: ' + + Math.min(screen.height, screen.width) + + 'px !important', + 'top: 0 !important', + 'left: 0 !important', + 'right: 0 !important', + 'border: 0', + 'margin: 0', + 'padding: 0', + 'z-index: 999999 !important', + 'position: fixed', + ] + this.fullscreenWrapper_.setAttribute('style', t.join('; ') + ';'), + this.fullscreenWrapper_.classList.add( + 'webvr-polyfill-fullscreen-wrapper', + ) + } + if (this.fullscreenElement_ == e) return this.fullscreenWrapper_ + if ( + (this.fullscreenElement_ && + (this.originalParent_ + ? this.originalParent_.appendChild(this.fullscreenElement_) + : this.fullscreenElement_.parentElement.removeChild( + this.fullscreenElement_, + )), + (this.fullscreenElement_ = e), + (this.originalParent_ = e.parentElement), + this.originalParent_ || document.body.appendChild(e), + !this.fullscreenWrapper_.parentElement) + ) { + var n = this.fullscreenElement_.parentElement + n.insertBefore(this.fullscreenWrapper_, this.fullscreenElement_), + n.removeChild(this.fullscreenElement_) + } + this.fullscreenWrapper_.insertBefore( + this.fullscreenElement_, + this.fullscreenWrapper_.firstChild, + ), + (this.fullscreenElementCachedStyle_ = + this.fullscreenElement_.getAttribute('style')) + var r = this + function i() { + if (r.fullscreenElement_) { + var e = [ + 'position: absolute', + 'top: 0', + 'left: 0', + 'width: ' + Math.max(screen.width, screen.height) + 'px', + 'height: ' + Math.min(screen.height, screen.width) + 'px', + 'border: 0', + 'margin: 0', + 'padding: 0', + ] + r.fullscreenElement_.setAttribute('style', e.join('; ') + ';') + } + } + return i(), this.fullscreenWrapper_ + }), + (Ne.prototype.removeFullscreenWrapper = function () { + if (this.fullscreenElement_) { + var e = this.fullscreenElement_ + this.fullscreenElementCachedStyle_ + ? e.setAttribute('style', this.fullscreenElementCachedStyle_) + : e.removeAttribute('style'), + (this.fullscreenElement_ = null), + (this.fullscreenElementCachedStyle_ = null) + var t = this.fullscreenWrapper_.parentElement + return ( + this.fullscreenWrapper_.removeChild(e), + this.originalParent_ === t + ? t.insertBefore(e, this.fullscreenWrapper_) + : this.originalParent_ && this.originalParent_.appendChild(e), + t.removeChild(this.fullscreenWrapper_), + e + ) + } + }), + (Ne.prototype.requestPresent = function (e) { + var t = this.isPresenting, + n = this + return ( + e instanceof Array || + (I( + 'VRDisplay.prototype.requestPresent with non-array argument', + 'an array of VRLayers as the first argument', + ), + (e = [e])), + new Promise(function (r, i) { + if (n.capabilities.canPresent) + if (0 == e.length || e.length > n.capabilities.maxLayers) + i(new Error('Invalid number of layers.')) + else { + var o = e[0] + if (o.source) { + var a = o.leftBounds || De, + s = o.rightBounds || Oe + if (t) { + var u = n.layer_ + u.source !== o.source && (u.source = o.source) + for (var h = 0; h < 4; h++) + (u.leftBounds[h] = a[h]), (u.rightBounds[h] = s[h]) + return ( + n.wrapForFullscreen(n.layer_.source), + n.updatePresent_(), + void r() + ) + } + if ( + ((n.layer_ = { + predistorted: o.predistorted, + source: o.source, + leftBounds: a.slice(0), + rightBounds: s.slice(0), + }), + (n.waitingForPresent_ = !1), + n.layer_ && n.layer_.source) + ) { + var d = n.wrapForFullscreen(n.layer_.source), + p = function () { + var e = x() + ;(n.isPresenting = d === e), + n.isPresenting + ? (screen.orientation && + screen.orientation.lock && + screen.orientation + .lock('landscape-primary') + .catch(function (e) { + console.error( + 'screen.orientation.lock() failed due to', + e.message, + ) + }), + (n.waitingForPresent_ = !1), + n.beginPresent_(), + r()) + : (screen.orientation && + screen.orientation.unlock && + screen.orientation.unlock(), + n.removeFullscreenWrapper(), + n.disableWakeLock(), + n.endPresent_(), + n.removeFullscreenListeners_()), + n.fireVRDisplayPresentChange_() + }, + f = function () { + n.waitingForPresent_ && + (n.removeFullscreenWrapper(), + n.removeFullscreenListeners_(), + n.disableWakeLock(), + (n.waitingForPresent_ = !1), + (n.isPresenting = !1), + i(new Error('Unable to present.'))) + } + n.addFullscreenListeners_(d, p, f), + A(d) + ? (n.enableWakeLock(), (n.waitingForPresent_ = !0)) + : (l() || c()) && + (n.enableWakeLock(), + (n.isPresenting = !0), + n.beginPresent_(), + n.fireVRDisplayPresentChange_(), + r()) + } + n.waitingForPresent_ || + l() || + (w(), i(new Error('Unable to present.'))) + } else r() + } + else i(new Error('VRDisplay is not capable of presenting.')) + }) + ) + }), + (Ne.prototype.exitPresent = function () { + var e = this.isPresenting, + t = this + return ( + (this.isPresenting = !1), + (this.layer_ = null), + this.disableWakeLock(), + new Promise(function (n, r) { + e + ? (!w() && + l() && + (t.endPresent_(), t.fireVRDisplayPresentChange_()), + c() && + (t.removeFullscreenWrapper(), + t.removeFullscreenListeners_(), + t.endPresent_(), + t.fireVRDisplayPresentChange_()), + n()) + : r(new Error('Was not presenting to VRDisplay.')) + }) + ) + }), + (Ne.prototype.getLayers = function () { + return this.layer_ ? [this.layer_] : [] + }), + (Ne.prototype.fireVRDisplayPresentChange_ = function () { + var e = new CustomEvent('vrdisplaypresentchange', { + detail: { display: this }, + }) + window.dispatchEvent(e) + }), + (Ne.prototype.fireVRDisplayConnect_ = function () { + var e = new CustomEvent('vrdisplayconnect', { + detail: { display: this }, + }) + window.dispatchEvent(e) + }), + (Ne.prototype.addFullscreenListeners_ = function (e, t, n) { + this.removeFullscreenListeners_(), + (this.fullscreenEventTarget_ = e), + (this.fullscreenChangeHandler_ = t), + (this.fullscreenErrorHandler_ = n), + t && + (document.fullscreenEnabled + ? e.addEventListener('fullscreenchange', t, !1) + : document.webkitFullscreenEnabled + ? e.addEventListener('webkitfullscreenchange', t, !1) + : document.mozFullScreenEnabled + ? document.addEventListener('mozfullscreenchange', t, !1) + : document.msFullscreenEnabled && + e.addEventListener('msfullscreenchange', t, !1)), + n && + (document.fullscreenEnabled + ? e.addEventListener('fullscreenerror', n, !1) + : document.webkitFullscreenEnabled + ? e.addEventListener('webkitfullscreenerror', n, !1) + : document.mozFullScreenEnabled + ? document.addEventListener('mozfullscreenerror', n, !1) + : document.msFullscreenEnabled && + e.addEventListener('msfullscreenerror', n, !1)) + }), + (Ne.prototype.removeFullscreenListeners_ = function () { + if (this.fullscreenEventTarget_) { + var e = this.fullscreenEventTarget_ + if (this.fullscreenChangeHandler_) { + var t = this.fullscreenChangeHandler_ + e.removeEventListener('fullscreenchange', t, !1), + e.removeEventListener('webkitfullscreenchange', t, !1), + document.removeEventListener('mozfullscreenchange', t, !1), + e.removeEventListener('msfullscreenchange', t, !1) + } + if (this.fullscreenErrorHandler_) { + var n = this.fullscreenErrorHandler_ + e.removeEventListener('fullscreenerror', n, !1), + e.removeEventListener('webkitfullscreenerror', n, !1), + document.removeEventListener('mozfullscreenerror', n, !1), + e.removeEventListener('msfullscreenerror', n, !1) + } + ;(this.fullscreenEventTarget_ = null), + (this.fullscreenChangeHandler_ = null), + (this.fullscreenErrorHandler_ = null) + } + }), + (Ne.prototype.enableWakeLock = function () { + this.wakelock_ && this.wakelock_.enable() + }), + (Ne.prototype.disableWakeLock = function () { + this.wakelock_ && this.wakelock_.disable() + }), + (Ne.prototype.beginPresent_ = function () {}), + (Ne.prototype.endPresent_ = function () {}), + (Ne.prototype.submitFrame = function (e) {}), + (Ne.prototype.getEyeParameters = function (e) { + return null + }) + var Ue = { + ADDITIONAL_VIEWERS: [], + DEFAULT_VIEWER: '', + MOBILE_WAKE_LOCK: !0, + DEBUG: !1, + DPDB_URL: 'https://dpdb.webvr.rocks/dpdb.json', + K_FILTER: 0.98, + PREDICTION_TIME_S: 0.04, + CARDBOARD_UI_DISABLED: !1, + ROTATE_INSTRUCTIONS_DISABLED: !1, + YAW_ONLY: !1, + BUFFER_SCALE: 0.5, + DIRTY_SUBMIT_FRAME_BINDINGS: !1, + }, + He = { LEFT: 'left', RIGHT: 'right' } + function Ge(e) { + var t = S({}, Ue) + ;(e = S(t, e || {})), + Ne.call(this, { wakelock: e.MOBILE_WAKE_LOCK }), + (this.config = e), + (this.displayName = 'Cardboard VRDisplay'), + (this.capabilities = new ke({ + hasPosition: !1, + hasOrientation: !0, + hasExternalDisplay: !1, + canPresent: !0, + maxLayers: 1, + })), + (this.stageParameters = null), + (this.bufferScale_ = this.config.BUFFER_SCALE), + (this.poseSensor_ = new we(this.config)), + (this.distorter_ = null), + (this.cardboardUI_ = null), + (this.dpdb_ = new he( + this.config.DPDB_URL, + this.onDeviceParamsUpdated_.bind(this), + )), + (this.deviceInfo_ = new le( + this.dpdb_.getDeviceParams(), + e.ADDITIONAL_VIEWERS, + )), + (this.viewerSelector_ = new Se(e.DEFAULT_VIEWER)), + this.viewerSelector_.onChange(this.onViewerChanged_.bind(this)), + this.deviceInfo_.setViewer(this.viewerSelector_.getCurrentViewer()), + this.config.ROTATE_INSTRUCTIONS_DISABLED || + (this.rotateInstructions_ = new Ee()), + l() && window.addEventListener('resize', this.onResize_.bind(this)) + } + return ( + (Ge.prototype = Object.create(Ne.prototype)), + (Ge.prototype._getPose = function () { + return { + position: null, + orientation: this.poseSensor_.getOrientation(), + linearVelocity: null, + linearAcceleration: null, + angularVelocity: null, + angularAcceleration: null, + } + }), + (Ge.prototype._resetPose = function () { + this.poseSensor_.resetPose && this.poseSensor_.resetPose() + }), + (Ge.prototype._getFieldOfView = function (e) { + var t + if (e == He.LEFT) t = this.deviceInfo_.getFieldOfViewLeftEye() + else { + if (e != He.RIGHT) + return console.error('Invalid eye provided: %s', e), null + t = this.deviceInfo_.getFieldOfViewRightEye() + } + return t + }), + (Ge.prototype._getEyeOffset = function (e) { + var t + if (e == He.LEFT) + t = [0.5 * -this.deviceInfo_.viewer.interLensDistance, 0, 0] + else { + if (e != He.RIGHT) + return console.error('Invalid eye provided: %s', e), null + t = [0.5 * this.deviceInfo_.viewer.interLensDistance, 0, 0] + } + return t + }), + (Ge.prototype.getEyeParameters = function (e) { + var t = this._getEyeOffset(e), + n = this._getFieldOfView(e), + r = { + offset: t, + renderWidth: + 0.5 * this.deviceInfo_.device.width * this.bufferScale_, + renderHeight: + this.deviceInfo_.device.height * this.bufferScale_, + } + return ( + Object.defineProperty(r, 'fieldOfView', { + enumerable: !0, + get: function () { + return ( + I('VRFieldOfView', "VRFrameData's projection matrices"), n + ) + }, + }), + r + ) + }), + (Ge.prototype.onDeviceParamsUpdated_ = function (e) { + this.config.DEBUG && + console.log('DPDB reported that device params were updated.'), + this.deviceInfo_.updateDeviceParams(e), + this.distorter_ && + this.distorter_.updateDeviceInfo(this.deviceInfo_) + }), + (Ge.prototype.updateBounds_ = function () { + this.layer_ && + this.distorter_ && + (this.layer_.leftBounds || this.layer_.rightBounds) && + this.distorter_.setTextureBounds( + this.layer_.leftBounds, + this.layer_.rightBounds, + ) + }), + (Ge.prototype.beginPresent_ = function () { + var e = this.layer_.source.getContext('webgl') + e || (e = this.layer_.source.getContext('experimental-webgl')), + e || (e = this.layer_.source.getContext('webgl2')), + e && + (this.layer_.predistorted + ? this.config.CARDBOARD_UI_DISABLED || + ((e.canvas.width = y() * this.bufferScale_), + (e.canvas.height = b() * this.bufferScale_), + (this.cardboardUI_ = new J(e))) + : (this.config.CARDBOARD_UI_DISABLED || + (this.cardboardUI_ = new J(e)), + (this.distorter_ = new U( + e, + this.cardboardUI_, + this.config.BUFFER_SCALE, + this.config.DIRTY_SUBMIT_FRAME_BINDINGS, + )), + this.distorter_.updateDeviceInfo(this.deviceInfo_)), + this.cardboardUI_ && + this.cardboardUI_.listen( + function (e) { + this.viewerSelector_.show( + this.layer_.source.parentElement, + ), + e.stopPropagation(), + e.preventDefault() + }.bind(this), + function (e) { + this.exitPresent(), + e.stopPropagation(), + e.preventDefault() + }.bind(this), + ), + this.rotateInstructions_ && + (v() && T() + ? this.rotateInstructions_.showTemporarily( + 3e3, + this.layer_.source.parentElement, + ) + : this.rotateInstructions_.update()), + (this.orientationHandler = + this.onOrientationChange_.bind(this)), + window.addEventListener( + 'orientationchange', + this.orientationHandler, + ), + (this.vrdisplaypresentchangeHandler = + this.updateBounds_.bind(this)), + window.addEventListener( + 'vrdisplaypresentchange', + this.vrdisplaypresentchangeHandler, + ), + this.fireVRDisplayDeviceParamsChange_()) + }), + (Ge.prototype.endPresent_ = function () { + this.distorter_ && + (this.distorter_.destroy(), (this.distorter_ = null)), + this.cardboardUI_ && + (this.cardboardUI_.destroy(), (this.cardboardUI_ = null)), + this.rotateInstructions_ && this.rotateInstructions_.hide(), + this.viewerSelector_.hide(), + window.removeEventListener( + 'orientationchange', + this.orientationHandler, + ), + window.removeEventListener( + 'vrdisplaypresentchange', + this.vrdisplaypresentchangeHandler, + ) + }), + (Ge.prototype.updatePresent_ = function () { + this.endPresent_(), this.beginPresent_() + }), + (Ge.prototype.submitFrame = function (e) { + if (this.distorter_) + this.updateBounds_(), this.distorter_.submitFrame() + else if (this.cardboardUI_ && this.layer_) { + var t = this.layer_.source.getContext('webgl') + t || (t = this.layer_.source.getContext('experimental-webgl')), + t || (t = this.layer_.source.getContext('webgl2')) + var n = t.canvas + ;(n.width == this.lastWidth && n.height == this.lastHeight) || + this.cardboardUI_.onResize(), + (this.lastWidth = n.width), + (this.lastHeight = n.height), + this.cardboardUI_.render() + } + }), + (Ge.prototype.onOrientationChange_ = function (e) { + this.viewerSelector_.hide(), + this.rotateInstructions_ && this.rotateInstructions_.update(), + this.onResize_() + }), + (Ge.prototype.onResize_ = function (e) { + if (this.layer_) { + var t = this.layer_.source.getContext('webgl') + t || (t = this.layer_.source.getContext('experimental-webgl')), + t || (t = this.layer_.source.getContext('webgl2')) + var n = [ + 'position: absolute', + 'top: 0', + 'left: 0', + 'width: 100vw', + 'height: 100vh', + 'border: 0', + 'margin: 0', + 'padding: 0px', + 'box-sizing: content-box', + ] + t.canvas.setAttribute('style', n.join('; ') + ';'), C(t.canvas) + } + }), + (Ge.prototype.onViewerChanged_ = function (e) { + this.deviceInfo_.setViewer(e), + this.distorter_ && + this.distorter_.updateDeviceInfo(this.deviceInfo_), + this.fireVRDisplayDeviceParamsChange_() + }), + (Ge.prototype.fireVRDisplayDeviceParamsChange_ = function () { + var e = new CustomEvent('vrdisplaydeviceparamschange', { + detail: { vrdisplay: this, deviceInfo: this.deviceInfo_ }, + }) + window.dispatchEvent(e) + }), + (Ge.VRFrameData = Fe), + (Ge.VRDisplay = Ne), + Ge + ) + }), + (e.exports = r()) + }), + ), + l = '0.10.12', + c = { + ADDITIONAL_VIEWERS: [], + DEFAULT_VIEWER: '', + PROVIDE_MOBILE_VRDISPLAY: !0, + MOBILE_WAKE_LOCK: !0, + DEBUG: !1, + DPDB_URL: 'https://dpdb.webvr.rocks/dpdb.json', + K_FILTER: 0.98, + PREDICTION_TIME_S: 0.04, + CARDBOARD_UI_DISABLED: !1, + ROTATE_INSTRUCTIONS_DISABLED: !1, + YAW_ONLY: !1, + BUFFER_SCALE: 0.5, + DIRTY_SUBMIT_FRAME_BINDINGS: !1, + } + function u(e) { + ;(this.config = a(a({}, c), e)), + (this.polyfillDisplays = []), + (this.enabled = !1), + (this.hasNative = 'getVRDisplays' in navigator), + (this.native = {}), + (this.native.getVRDisplays = navigator.getVRDisplays), + (this.native.VRFrameData = window.VRFrameData), + (this.native.VRDisplay = window.VRDisplay), + (!this.hasNative || (this.config.PROVIDE_MOBILE_VRDISPLAY && i())) && + (this.enable(), + this.getVRDisplays().then(function (e) { + e && e[0] && e[0].fireVRDisplayConnect_ && e[0].fireVRDisplayConnect_() + })) + } + ;(u.prototype.getPolyfillDisplays = function () { + if (this._polyfillDisplaysPopulated) return this.polyfillDisplays + if (i()) { + var e = new s({ + ADDITIONAL_VIEWERS: this.config.ADDITIONAL_VIEWERS, + DEFAULT_VIEWER: this.config.DEFAULT_VIEWER, + MOBILE_WAKE_LOCK: this.config.MOBILE_WAKE_LOCK, + DEBUG: this.config.DEBUG, + DPDB_URL: this.config.DPDB_URL, + CARDBOARD_UI_DISABLED: this.config.CARDBOARD_UI_DISABLED, + K_FILTER: this.config.K_FILTER, + PREDICTION_TIME_S: this.config.PREDICTION_TIME_S, + ROTATE_INSTRUCTIONS_DISABLED: this.config.ROTATE_INSTRUCTIONS_DISABLED, + YAW_ONLY: this.config.YAW_ONLY, + BUFFER_SCALE: this.config.BUFFER_SCALE, + DIRTY_SUBMIT_FRAME_BINDINGS: this.config.DIRTY_SUBMIT_FRAME_BINDINGS, + }) + this.polyfillDisplays.push(e) + } + return (this._polyfillDisplaysPopulated = !0), this.polyfillDisplays + }), + (u.prototype.enable = function () { + if (((this.enabled = !0), this.hasNative && this.native.VRFrameData)) { + var e = this.native.VRFrameData, + t = new this.native.VRFrameData(), + n = this.native.VRDisplay.prototype.getFrameData + window.VRDisplay.prototype.getFrameData = function (r) { + r instanceof e + ? n.call(this, r) + : (n.call(this, t), + (r.pose = t.pose), + o(t.leftProjectionMatrix, r.leftProjectionMatrix), + o(t.rightProjectionMatrix, r.rightProjectionMatrix), + o(t.leftViewMatrix, r.leftViewMatrix), + o(t.rightViewMatrix, r.rightViewMatrix)) + } + } + ;(navigator.getVRDisplays = this.getVRDisplays.bind(this)), + (window.VRDisplay = s.VRDisplay), + (window.VRFrameData = s.VRFrameData) + }), + (u.prototype.getVRDisplays = function () { + var e = this + return ( + this.config, + this.hasNative + ? this.native.getVRDisplays.call(navigator).then(function (t) { + return t.length > 0 ? t : e.getPolyfillDisplays() + }) + : Promise.resolve(this.getPolyfillDisplays()) + ) + }), + (u.version = l), + (u.VRFrameData = s.VRFrameData), + (u.VRDisplay = s.VRDisplay) + var h = Object.freeze({ default: u }), + d = (h && u) || h + return ( + 'undefined' !== typeof t && + t.window && + (t.document || (t.document = t.window.document), + t.navigator || (t.navigator = t.window.navigator)), + d + ) + }) + }.call( + this, + 'undefined' !== typeof r.g + ? r.g + : 'undefined' !== typeof self + ? self + : 'undefined' !== typeof window + ? window + : {}, + )) + }, + {}, + ], + 69: [ + function (e, t, n) { + var r = /\n/, + i = '\n', + o = /\s/ + function a(e, t, n, r) { + var i = e.indexOf(t, n) + return -1 === i || i > r ? r : i + } + function s(e) { + return o.test(e) + } + function l(e, t, n, i, o) { + for (var a = [], s = n, l = n; l < i && l < t.length; l++) { + var c = t.charAt(l), + u = r.test(c) + if (u || l === i - 1) { + var h = e(t, s, u ? l : l + 1, o) + a.push(h), (s = l + 1) + } + } + return a + } + function c(e, t, n, r, o, l) { + var c = [], + u = o + for ('nowrap' === l && (u = Number.MAX_VALUE); n < r && n < t.length; ) { + for (var h = a(t, i, n, r); n < h && s(t.charAt(n)); ) n++ + var d = e(t, n, h, u), + p = n + (d.end - d.start), + f = p + i.length + if (p < h) { + for (; p > n && !s(t.charAt(p)); ) p-- + if (p === n) f > n + i.length && f--, (p = f) + else for (f = p; p > n && s(t.charAt(p - i.length)); ) p-- + } + if (p >= n) { + var m = e(t, n, p, u) + c.push(m) + } + n = f + } + return c + } + function u(e, t, n, r) { + return { start: t, end: t + Math.min(r, n - t) } + } + ;(t.exports = function (e, n) { + return t.exports + .lines(e, n) + .map(function (t) { + return e.substring(t.start, t.end) + }) + .join('\n') + }), + (t.exports.lines = function (e, t) { + if (0 === (t = t || {}).width && 'nowrap' !== t.mode) return [] + e = e || '' + var n = 'number' === typeof t.width ? t.width : Number.MAX_VALUE, + r = Math.max(0, t.start || 0), + i = 'number' === typeof t.end ? t.end : e.length, + o = t.mode, + a = t.measure || u + return 'pre' === o ? l(a, e, r, i, n) : c(a, e, r, i, n, o) + }) + }, + {}, + ], + 70: [ + function (t, n, r) { + 'use strict' + var i = t('global/window'), + o = t('is-function'), + a = t('parse-headers'), + s = t('xtend') + function l(e, t) { + for (var n = 0; n < e.length; n++) t(e[n]) + } + function c(e) { + for (var t in e) if (e.hasOwnProperty(t)) return !1 + return !0 + } + function u(e, t, n) { + var r = e + return ( + o(t) + ? ((n = t), 'string' === typeof e && (r = { uri: e })) + : (r = s(t, { uri: e })), + (r.callback = n), + r + ) + } + function h(e, t, n) { + return d((t = u(e, t, n))) + } + function d(t) { + if ('undefined' === typeof t.callback) + throw new Error('callback argument missing') + var n = !1, + r = function (e, r, i) { + n || ((n = !0), t.callback(e, r, i)) + } + function i() { + 4 === f.readyState && setTimeout(l, 0) + } + function o() { + var t = void 0 + if (((t = f.response ? f.response : f.responseText || p(f)), w)) + try { + t = JSON.parse(t) + } catch (e) {} + return t + } + function s(e) { + return ( + clearTimeout(m), + e instanceof Error || + (e = new Error('' + (e || 'Unknown XMLHttpRequest Error'))), + (e.statusCode = 0), + r(e, x) + ) + } + function l() { + if (!d) { + var e + clearTimeout(m), + (e = + t.useXDR && void 0 === f.status + ? 200 + : 1223 === f.status + ? 204 + : f.status) + var n = x, + i = null + return ( + 0 !== e + ? ((n = { + body: o(), + statusCode: e, + method: g, + headers: {}, + url: v, + rawRequest: f, + }), + f.getAllResponseHeaders && (n.headers = a(f.getAllResponseHeaders()))) + : (i = new Error('Internal XMLHttpRequest Error')), + r(i, n, n.body) + ) + } + } + var u, + d, + f = t.xhr || null + f || (f = t.cors || t.useXDR ? new h.XDomainRequest() : new h.XMLHttpRequest()) + var m, + v = (f.url = t.uri || t.url), + g = (f.method = t.method || 'GET'), + y = t.body || t.data, + b = (f.headers = t.headers || {}), + A = !!t.sync, + w = !1, + x = { + body: void 0, + headers: {}, + statusCode: 0, + method: g, + url: v, + rawRequest: f, + } + if ( + ('json' in t && + !1 !== t.json && + ((w = !0), + b.accept || b.Accept || (b.Accept = 'application/json'), + 'GET' !== g && + 'HEAD' !== g && + (b['content-type'] || + b['Content-Type'] || + (b['Content-Type'] = 'application/json'), + (y = JSON.stringify(!0 === t.json ? y : t.json)))), + (f.onreadystatechange = i), + (f.onload = l), + (f.onerror = s), + (f.onprogress = function () {}), + (f.onabort = function () { + d = !0 + }), + (f.ontimeout = s), + f.open(g, v, !A, t.username, t.password), + A || (f.withCredentials = !!t.withCredentials), + !A && + t.timeout > 0 && + (m = setTimeout(function () { + if (!d) { + ;(d = !0), f.abort('timeout') + var e = new Error('XMLHttpRequest timeout') + ;(e.code = 'ETIMEDOUT'), s(e) + } + }, t.timeout)), + f.setRequestHeader) + ) + for (u in b) b.hasOwnProperty(u) && f.setRequestHeader(u, b[u]) + else if (t.headers && !c(t.headers)) + throw new Error('Headers cannot be set on an XDomainRequest object') + return ( + 'responseType' in t && (f.responseType = t.responseType), + 'beforeSend' in t && 'function' === typeof t.beforeSend && t.beforeSend(f), + f.send(y || null), + f + ) + } + function p(t) { + try { + if ('document' === t.responseType) return t.responseXML + var n = + t.responseXML && 'parsererror' === t.responseXML.documentElement.nodeName + if ('' === t.responseType && !n) return t.responseXML + } catch (e) {} + return null + } + function f() {} + ;(n.exports = h), + (n.exports.default = h), + (h.XMLHttpRequest = i.XMLHttpRequest || f), + (h.XDomainRequest = + 'withCredentials' in new h.XMLHttpRequest() + ? h.XMLHttpRequest + : i.XDomainRequest), + l(['get', 'put', 'post', 'patch', 'head', 'delete'], function (e) { + h['delete' === e ? 'del' : e] = function (t, n, r) { + return ((n = u(t, n, r)).method = e.toUpperCase()), d(n) + } + }) + }, + { 'global/window': 27, 'is-function': 33, 'parse-headers': 47, xtend: 72 }, + ], + 71: [ + function (e, t, n) { + t.exports = + 'undefined' !== typeof self.DOMParser + ? function (e) { + return new self.DOMParser().parseFromString(e, 'application/xml') + } + : 'undefined' !== typeof self.ActiveXObject && + new self.ActiveXObject('Microsoft.XMLDOM') + ? function (e) { + var t = new self.ActiveXObject('Microsoft.XMLDOM') + return (t.async = 'false'), t.loadXML(e), t + } + : function (e) { + var t = document.createElement('div') + return (t.innerHTML = e), t + } + }, + {}, + ], + 72: [ + function (e, t, n) { + t.exports = i + var r = Object.prototype.hasOwnProperty + function i() { + for (var e = {}, t = 0; t < arguments.length; t++) { + var n = arguments[t] + for (var i in n) r.call(n, i) && (e[i] = n[i]) + } + return e + } + }, + {}, + ], + 73: [ + function (e, t, n) { + t.exports = { + name: 'aframe', + version: '1.2.0', + description: 'A web framework for building virtual reality experiences.', + homepage: 'https://aframe.io/', + main: 'dist/aframe-master.js', + scripts: { + browserify: "browserify src/index.js -s 'AFRAME' -p browserify-derequire", + build: + 'shx mkdir -p build/ && npm run browserify -- --debug -t [ envify --INSPECTOR_VERSION dev ] -o build/aframe.js', + codecov: 'codecov', + dev: 'npm run build && cross-env INSPECTOR_VERSION=dev node ./scripts/budo -t envify', + dist: 'node scripts/updateVersionLog.js && npm run dist:min && npm run dist:max', + 'dist:max': + 'npm run browserify -s -- --debug | exorcist dist/aframe-master.js.map > dist/aframe-master.js', + 'dist:min': + 'npm run browserify -s -- --debug -p [ minifyify --map aframe-master.min.js.map --output dist/aframe-master.min.js.map ] -o dist/aframe-master.min.js', + docs: 'markserv --dir docs --port 9001', + preghpages: 'node ./scripts/preghpages.js', + ghpages: 'ghpages -p gh-pages/', + lint: 'semistandard -v | snazzy', + 'lint:fix': 'semistandard --fix', + precommit: 'npm run lint', + prepush: 'node scripts/testOnlyCheck.js', + prerelease: 'node scripts/release.js 1.0.4 1.1.0', + start: 'npm run dev', + 'start:https': 'cross-env SSL=true npm run dev', + test: 'karma start ./tests/karma.conf.js', + 'test:docs': 'node scripts/docsLint.js', + 'test:firefox': 'npm test -- --browsers Firefox', + 'test:chrome': 'npm test -- --browsers Chrome', + 'test:nobrowser': 'NO_BROWSER=true npm test', + 'test:node': 'mocha --ui tdd tests/node', + }, + repository: 'aframevr/aframe', + license: 'MIT', + files: ['dist/*', 'docs/**/*', 'src/**/*', 'vendor/**/*'], + dependencies: { + 'custom-event-polyfill': '^1.0.6', + debug: 'ngokevin/debug#noTimestamp', + 'deep-assign': '^2.0.0', + 'document-register-element': + 'dmarcos/document-register-element#8ccc532b7f3744be954574caf3072a5fd260ca90', + 'load-bmfont': '^1.2.3', + 'object-assign': '^4.0.1', + present: '0.0.6', + 'promise-polyfill': '^3.1.0', + 'super-animejs': '^3.1.0', + 'super-three': '^0.125.1', + 'three-bmfont-text': + 'dmarcos/three-bmfont-text#1babdf8507c731a18f8af3b807292e2b9740955e', + 'webvr-polyfill': '^0.10.12', + }, + devDependencies: { + browserify: '^13.1.0', + 'browserify-css': '^0.8.4', + 'browserify-derequire': '^0.9.4', + 'browserify-istanbul': '^2.0.0', + budo: '^9.2.0', + chai: '^3.5.0', + 'chai-shallow-deep-equal': '^1.4.0', + chalk: '^1.1.3', + codecov: '^1.0.1', + 'cross-env': '^5.0.1', + envify: '^3.4.1', + exorcist: '^0.4.0', + ghpages: '0.0.8', + 'git-rev': '^0.2.1', + glob: '^7.1.1', + husky: '^0.11.7', + istanbul: '^0.4.5', + jsdom: '^9.11.0', + karma: '1.4.1', + 'karma-browserify': '^5.1.0', + 'karma-chai-shallow-deep-equal': '0.0.4', + 'karma-chrome-launcher': '^2.0.0', + 'karma-coverage': '^1.1.1', + 'karma-env-preprocessor': '^0.1.1', + 'karma-firefox-launcher': '^1.2.0', + 'karma-mocha': '^1.1.1', + 'karma-mocha-reporter': '^2.1.0', + 'karma-sinon-chai': '1.2.4', + lolex: '^1.5.1', + markserv: 'github:sukima/markserv#feature/fix-broken-websoketio-link', + minifyify: '^7.3.3', + mocha: '^3.0.2', + 'mozilla-download': '^1.1.1', + 'replace-in-file': '^2.5.3', + semistandard: '^9.0.0', + shelljs: '^0.7.7', + shx: '^0.2.2', + sinon: '^1.17.5', + 'sinon-chai': '2.8.0', + snazzy: '^5.0.0', + 'too-wordy': 'ngokevin/too-wordy', + uglifyjs: '^2.4.10', + 'write-good': '^0.9.1', + }, + link: !0, + browserify: { transform: ['browserify-css', 'envify'] }, + semistandard: { + ignore: ['build/**', 'dist/**', 'examples/**/shaders/*.js', '**/vendor/**'], + }, + keywords: [ + '3d', + 'aframe', + 'cardboard', + 'components', + 'oculus', + 'three', + 'three.js', + 'rift', + 'vive', + 'vr', + 'web-components', + 'webvr', + ], + 'browserify-css': { minify: !0 }, + engines: { node: '>= 4.6.0', npm: '^2.15.9' }, + } + }, + {}, + ], + 74: [ + function (e, t, n) { + var r = e('super-animejs'), + i = e('../core/component').components, + o = e('../core/component').registerComponent, + a = e('../lib/three'), + s = e('../utils'), + l = new a.Color(), + c = new a.Color(), + u = s.entity.getComponentProperty, + h = s.entity.setComponentProperty, + d = {}, + p = 'color', + f = 'position', + m = 'rotation', + v = 'scale', + g = 'components', + y = 'object3D' + function b(e, t) { + var n, r, o, a + return ( + (r = (o = t.split('.'))[0]), + (a = o[1]), + (n = e.components[r] || i[r]) + ? a && !n.schema[a] + ? null + : a + ? n.schema[a].type + : n.schema.type + : null + ) + } + function A(e) { + ;(e.x = a.Math.degToRad(e.x)), + (e.y = a.Math.degToRad(e.y)), + (e.z = a.Math.degToRad(e.z)) + } + function w(e, t, n) { + var r + for (r = 0; r < t.length; r++) e.addEventListener(t[r], n) + } + function x(e, t, n) { + var r + for (r = 0; r < t.length; r++) e.removeEventListener(t[r], n) + } + function E(e, t) { + var n, r, i + for (r = _(t), i = e, n = 0; n < r.length; n++) i = i[r[n]] + if (void 0 === i) + throw ( + (console.log(e), + new Error('[animation] property (' + t + ') could not be found')) + ) + return i + } + function M(e, t, n, r) { + var i, o, s, l + for ( + t.startsWith('object3D.rotation') && (n = a.Math.degToRad(n)), + o = _(t), + l = e, + i = 0; + i < o.length - 1; + i++ + ) + l = l[o[i]] + ;(s = o[o.length - 1]), + r !== p + ? (l[s] = n) + : 'r' in l[s] + ? ((l[s].r = n.r), (l[s].g = n.g), (l[s].b = n.b)) + : ((l[s].x = n.r), (l[s].y = n.g), (l[s].z = n.b)) + } + function _(e) { + return e in d || (d[e] = e.split('.')), d[e] + } + function T(e) { + return e.isRawProperty || e.property.startsWith(g) || e.property.startsWith(y) + } + t.exports.Component = o('animation', { + schema: { + autoplay: { default: !0 }, + delay: { default: 0 }, + dir: { default: '' }, + dur: { default: 1e3 }, + easing: { default: 'easeInQuad' }, + elasticity: { default: 400 }, + enabled: { default: !0 }, + from: { default: '' }, + loop: { + default: 0, + parse: function (e) { + return ( + !0 === e || 'true' === e || (!1 !== e && 'false' !== e && parseInt(e, 10)) + ) + }, + }, + property: { default: '' }, + startEvents: { type: 'array' }, + pauseEvents: { type: 'array' }, + resumeEvents: { type: 'array' }, + round: { default: !1 }, + to: { default: '' }, + type: { default: '' }, + isRawProperty: { default: !1 }, + }, + multiple: !0, + init: function () { + var e = this + ;(this.eventDetail = { name: this.attrName }), + (this.time = 0), + (this.animation = null), + (this.animationIsPlaying = !1), + (this.onStartEvent = this.onStartEvent.bind(this)), + (this.beginAnimation = this.beginAnimation.bind(this)), + (this.pauseAnimation = this.pauseAnimation.bind(this)), + (this.resumeAnimation = this.resumeAnimation.bind(this)), + (this.fromColor = {}), + (this.toColor = {}), + (this.targets = {}), + (this.targetsArray = []), + (this.updateConfigForDefault = this.updateConfigForDefault.bind(this)), + (this.updateConfigForRawColor = this.updateConfigForRawColor.bind(this)), + (this.config = { + complete: function () { + ;(e.animationIsPlaying = !1), + e.el.emit('animationcomplete', e.eventDetail, !1), + e.id && e.el.emit('animationcomplete__' + e.id, e.eventDetail, !1) + }, + }) + }, + update: function (e) { + var t = this.config, + n = this.data + ;(this.animationIsPlaying = !1), + this.data.enabled && + n.property && + ((t.autoplay = !1), + (t.direction = n.dir), + (t.duration = n.dur), + (t.easing = n.easing), + (t.elasticity = n.elasticity), + (t.loop = n.loop), + (t.round = n.round), + this.createAndStartAnimation()) + }, + tick: function (e, t) { + this.animationIsPlaying && ((this.time += t), this.animation.tick(this.time)) + }, + remove: function () { + this.pauseAnimation(), this.removeEventListeners() + }, + pause: function () { + ;(this.paused = !0), + (this.pausedWasPlaying = this.animationIsPlaying), + this.pauseAnimation(), + this.removeEventListeners() + }, + play: function () { + this.paused && + ((this.paused = !1), + this.addEventListeners(), + this.pausedWasPlaying && + (this.resumeAnimation(), (this.pausedWasPlaying = !1))) + }, + createAndStartAnimation: function () { + var e = this.data + this.updateConfig(), + (this.animationIsPlaying = !1), + (this.animation = r(this.config)), + (this.animation.began = !0), + this.removeEventListeners(), + this.addEventListeners(), + !e.autoplay || + (e.startEvents && e.startEvents.length) || + (e.delay ? setTimeout(this.beginAnimation, e.delay) : this.beginAnimation()) + }, + beginAnimation: function () { + this.updateConfig(), + (this.animation.began = !0), + (this.time = 0), + (this.animationIsPlaying = !0), + this.stopRelatedAnimations(), + this.el.emit('animationbegin', this.eventDetail, !1) + }, + pauseAnimation: function () { + this.animationIsPlaying = !1 + }, + resumeAnimation: function () { + this.animationIsPlaying = !0 + }, + onStartEvent: function () { + this.data.enabled && + (this.updateConfig(), + this.animation && this.animation.pause(), + (this.animation = r(this.config)), + this.data.delay + ? setTimeout(this.beginAnimation, this.data.delay) + : this.beginAnimation()) + }, + updateConfigForRawColor: function () { + var e, + t, + n, + r = this.config, + i = this.data, + o = this.el + if (!this.waitComponentInitRawProperty(this.updateConfigForRawColor)) { + for (t in ((e = '' === i.from ? E(o, i.property) : i.from), + (n = i.to), + this.setColorConfig(e, n), + (e = this.fromColor), + (n = this.toColor), + (this.targetsArray.length = 0), + this.targetsArray.push(e), + (r.targets = this.targetsArray), + n)) + r[t] = n[t] + r.update = (function () { + var e = {} + return function (t) { + var n + ;((n = t.animatables[0].target).r === e.r && + n.g === e.g && + n.b === e.b) || + M(o, i.property, n, i.type) + } + })() + } + }, + updateConfigForDefault: function () { + var e, + t, + n, + r = this.config, + i = this.data, + o = this.el + this.waitComponentInitRawProperty(this.updateConfigForDefault) || + ((e = '' === i.from ? (T(i) ? E(o, i.property) : u(o, i.property)) : i.from), + (n = i.to), + isNaN(e || n) + ? ((e = e ? e.toString() : e), (n = n ? n.toString() : n)) + : ((e = parseFloat(e)), (n = parseFloat(n))), + (t = 'true' === i.to || 'false' === i.to || !0 === i.to || !1 === i.to) && + ((e = 'true' === i.from || !0 === i.from ? 1 : 0), + (n = 'true' === i.to || !0 === i.to ? 1 : 0)), + (this.targets.aframeProperty = e), + (r.targets = this.targets), + (r.aframeProperty = n), + (r.update = (function () { + var e + return function (n) { + var r + ;(r = n.animatables[0].target.aframeProperty) !== e && + ((e = r), + t && (r = r >= 1), + T(i) ? M(o, i.property, r, i.type) : h(o, i.property, r)) + } + })())) + }, + updateConfigForVector: function () { + var e, + t, + n, + r = this.config, + i = this.data, + o = this.el + for (e in ((t = '' !== i.from ? s.coordinates.parse(i.from) : u(o, i.property)), + (n = s.coordinates.parse(i.to)), + i.property === m && (A(t), A(n)), + (this.targetsArray.length = 0), + this.targetsArray.push(t), + (r.targets = this.targetsArray), + n)) + r[e] = n[e] + i.property !== f && i.property !== m && i.property !== v + ? (r.update = (function () { + var e = {} + return function (t) { + var n = t.animatables[0].target + ;(n.x === e.x && n.y === e.y && n.z === e.z) || + ((e.x = n.x), (e.y = n.y), (e.z = n.z), h(o, i.property, n)) + } + })()) + : (r.update = (function () { + var e = {} + return function (t) { + var n = t.animatables[0].target + i.property === v && + ((n.x = Math.max(1e-4, n.x)), + (n.y = Math.max(1e-4, n.y)), + (n.z = Math.max(1e-4, n.z))), + (n.x === e.x && n.y === e.y && n.z === e.z) || + ((e.x = n.x), + (e.y = n.y), + (e.z = n.z), + o.object3D[i.property].set(n.x, n.y, n.z)) + } + })()) + }, + updateConfig: function () { + var e + ;(e = b(this.el, this.data.property)), + T(this.data) && this.data.type === p + ? this.updateConfigForRawColor() + : 'vec2' === e || 'vec3' === e || 'vec4' === e + ? this.updateConfigForVector() + : this.updateConfigForDefault() + }, + waitComponentInitRawProperty: function (e) { + var t, + n = this.data, + i = this.el, + o = this + return ( + '' === n.from && + !!n.property.startsWith(g) && + ((t = _(n.property)[1]), + !i.components[t] && + (i.addEventListener('componentinitialized', function n(a) { + a.detail.name === t && + (e(), + (o.animation = r(o.config)), + i.removeEventListener('componentinitialized', n)) + }), + !0)) + ) + }, + stopRelatedAnimations: function () { + var e, t + for (t in this.el.components) + (e = this.el.components[t]), + t !== this.attrName && + 'animation' === e.name && + e.animationIsPlaying && + e.data.property === this.data.property && + (e.animationIsPlaying = !1) + }, + addEventListeners: function () { + var e = this.data, + t = this.el + w(t, e.startEvents, this.onStartEvent), + w(t, e.pauseEvents, this.pauseAnimation), + w(t, e.resumeEvents, this.resumeAnimation) + }, + removeEventListeners: function () { + var e = this.data, + t = this.el + x(t, e.startEvents, this.onStartEvent), + x(t, e.pauseEvents, this.pauseAnimation), + x(t, e.resumeEvents, this.resumeAnimation) + }, + setColorConfig: function (e, t) { + l.set(e), + c.set(t), + (e = this.fromColor), + (t = this.toColor), + (e.r = l.r), + (e.g = l.g), + (e.b = l.b), + (t.r = c.r), + (t.g = c.g), + (t.b = c.b) + }, + }) + }, + { + '../core/component': 131, + '../lib/three': 179, + '../utils': 205, + 'super-animejs': 56, + }, + ], + 75: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../lib/three') + t.exports.Component = r('camera', { + schema: { + active: { default: !0 }, + far: { default: 1e4 }, + fov: { default: 80, min: 0 }, + near: { default: 0.005, min: 0 }, + spectator: { default: !1 }, + zoom: { default: 1, min: 0 }, + }, + init: function () { + var e, + t = this.el + ;(e = this.camera = new i.PerspectiveCamera()), t.setObject3D('camera', e) + }, + update: function (e) { + var t = this.data, + n = this.camera + ;(n.aspect = t.aspect || window.innerWidth / window.innerHeight), + (n.far = t.far), + (n.fov = t.fov), + (n.near = t.near), + (n.zoom = t.zoom), + n.updateProjectionMatrix(), + this.updateActiveCamera(e), + this.updateSpectatorCamera(e) + }, + updateActiveCamera: function (e) { + var t = this.data, + n = this.el, + r = this.system + ;(e && e.active === t.active) || + t.spectator || + (t.active && r.activeCameraEl !== n + ? r.setActiveCamera(n) + : t.active || r.activeCameraEl !== n || r.disableActiveCamera()) + }, + updateSpectatorCamera: function (e) { + var t = this.data, + n = this.el, + r = this.system + ;(e && e.spectator === t.spectator) || + (t.spectator && r.spectatorCameraEl !== n + ? r.setSpectatorCamera(n) + : t.spectator || r.spectatorCameraEl !== n || r.disableSpectatorCamera()) + }, + remove: function () { + this.el.removeObject3D('camera') + }, + }) + }, + { '../core/component': 131, '../lib/three': 179 }, + ], + 76: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/'), + o = i.bind, + a = { + CLICK: 'click', + FUSING: 'fusing', + MOUSEENTER: 'mouseenter', + MOUSEDOWN: 'mousedown', + MOUSELEAVE: 'mouseleave', + MOUSEUP: 'mouseup', + }, + s = { + FUSING: 'cursor-fusing', + HOVERING: 'cursor-hovering', + HOVERED: 'cursor-hovered', + }, + l = { DOWN: ['mousedown', 'touchstart'], UP: ['mouseup', 'touchend'] }, + c = { DOWN: ['selectstart'], UP: ['selectend'] }, + u = 'a-mouse-cursor-hover' + t.exports.Component = r('cursor', { + dependencies: ['raycaster'], + schema: { + downEvents: { default: [] }, + fuse: { default: i.device.isMobile() }, + fuseTimeout: { default: 1500, min: 0 }, + mouseCursorStylesEnabled: { default: !0 }, + upEvents: { default: [] }, + rayOrigin: { default: 'entity', oneOf: ['mouse', 'entity'] }, + }, + init: function () { + var e = this + ;(this.fuseTimeout = void 0), + (this.cursorDownEl = null), + (this.intersectedEl = null), + (this.canvasBounds = document.body.getBoundingClientRect()), + (this.isCursorDown = !1), + (this.updateCanvasBounds = i.debounce(function () { + e.canvasBounds = e.el.sceneEl.canvas.getBoundingClientRect() + }, 500)), + (this.eventDetail = {}), + (this.intersectedEventDetail = { cursorEl: this.el }), + (this.onCursorDown = o(this.onCursorDown, this)), + (this.onCursorUp = o(this.onCursorUp, this)), + (this.onIntersection = o(this.onIntersection, this)), + (this.onIntersectionCleared = o(this.onIntersectionCleared, this)), + (this.onMouseMove = o(this.onMouseMove, this)), + (this.onEnterVR = o(this.onEnterVR, this)) + }, + update: function (e) { + this.data.rayOrigin !== e.rayOrigin && this.updateMouseEventListeners() + }, + play: function () { + this.addEventListeners() + }, + pause: function () { + this.removeEventListeners() + }, + remove: function () { + var e = this.el + e.removeState(s.HOVERING), + e.removeState(s.FUSING), + clearTimeout(this.fuseTimeout), + this.intersectedEl && this.intersectedEl.removeState(s.HOVERED), + this.removeEventListeners() + }, + addEventListeners: function () { + var e, + t = this.data, + n = this.el, + r = this + function i() { + ;(e = n.sceneEl.canvas), + t.downEvents.length || + t.upEvents.length || + (l.DOWN.forEach(function (t) { + e.addEventListener(t, r.onCursorDown) + }), + l.UP.forEach(function (t) { + e.addEventListener(t, r.onCursorUp) + })) + } + ;(e = n.sceneEl.canvas) + ? i() + : n.sceneEl.addEventListener('render-target-loaded', i), + t.downEvents.forEach(function (e) { + n.addEventListener(e, r.onCursorDown) + }), + t.upEvents.forEach(function (e) { + n.addEventListener(e, r.onCursorUp) + }), + n.addEventListener('raycaster-intersection', this.onIntersection), + n.addEventListener( + 'raycaster-intersection-cleared', + this.onIntersectionCleared, + ), + n.sceneEl.addEventListener('rendererresize', this.updateCanvasBounds), + n.sceneEl.addEventListener('enter-vr', this.onEnterVR), + window.addEventListener('resize', this.updateCanvasBounds), + window.addEventListener('scroll', this.updateCanvasBounds), + this.updateMouseEventListeners() + }, + removeEventListeners: function () { + var e, + t = this.data, + n = this.el, + r = this + !(e = n.sceneEl.canvas) || + t.downEvents.length || + t.upEvents.length || + (l.DOWN.forEach(function (t) { + e.removeEventListener(t, r.onCursorDown) + }), + l.UP.forEach(function (t) { + e.removeEventListener(t, r.onCursorUp) + })), + t.downEvents.forEach(function (e) { + n.removeEventListener(e, r.onCursorDown) + }), + t.upEvents.forEach(function (e) { + n.removeEventListener(e, r.onCursorUp) + }), + n.removeEventListener('raycaster-intersection', this.onIntersection), + n.removeEventListener( + 'raycaster-intersection-cleared', + this.onIntersectionCleared, + ), + e.removeEventListener('mousemove', this.onMouseMove), + e.removeEventListener('touchstart', this.onMouseMove), + e.removeEventListener('touchmove', this.onMouseMove), + n.sceneEl.removeEventListener('rendererresize', this.updateCanvasBounds), + n.sceneEl.removeEventListener('enter-vr', this.onEnterVR), + window.removeEventListener('resize', this.updateCanvasBounds), + window.removeEventListener('scroll', this.updateCanvasBounds) + }, + updateMouseEventListeners: function () { + var e, + t = this.el + ;(e = t.sceneEl.canvas).removeEventListener('mousemove', this.onMouseMove), + e.removeEventListener('touchmove', this.onMouseMove), + t.setAttribute('raycaster', 'useWorldCoordinates', !1), + 'mouse' === this.data.rayOrigin && + (e.addEventListener('mousemove', this.onMouseMove, !1), + e.addEventListener('touchmove', this.onMouseMove, !1), + t.setAttribute('raycaster', 'useWorldCoordinates', !0), + this.updateCanvasBounds()) + }, + onMouseMove: (function () { + var e = new THREE.Vector3(), + t = new THREE.Vector2(), + n = new THREE.Vector3(), + r = { origin: n, direction: e } + return function (i) { + var o, + a, + s, + l = this.canvasBounds, + c = this.el.sceneEl.camera + c.parent.updateMatrixWorld(), + (o = + (a = + 'touchmove' === i.type || 'touchstart' === i.type + ? i.touches.item(0) + : i).clientX - l.left), + (s = a.clientY - l.top), + (t.x = (o / l.width) * 2 - 1), + (t.y = (-s / l.height) * 2 + 1), + n.setFromMatrixPosition(c.matrixWorld), + e.set(t.x, t.y, 0.5).unproject(c).sub(n).normalize(), + this.el.setAttribute('raycaster', r), + 'touchmove' === i.type && i.preventDefault() + } + })(), + onCursorDown: function (e) { + ;(this.isCursorDown = !0), + 'mouse' === this.data.rayOrigin && + 'touchstart' === e.type && + (this.onMouseMove(e), + this.el.components.raycaster.checkIntersections(), + e.preventDefault()), + this.twoWayEmit(a.MOUSEDOWN), + (this.cursorDownEl = this.intersectedEl) + }, + onCursorUp: function (e) { + if (this.isCursorDown) { + this.isCursorDown = !1 + var t = this.data + this.twoWayEmit(a.MOUSEUP), + this.cursorDownEl && + this.cursorDownEl !== this.intersectedEl && + ((this.intersectedEventDetail.intersection = null), + this.cursorDownEl.emit(a.MOUSEUP, this.intersectedEventDetail)), + (t.fuse && 'mouse' !== t.rayOrigin) || + !this.intersectedEl || + this.cursorDownEl !== this.intersectedEl || + this.twoWayEmit(a.CLICK), + (this.cursorDownEl = null), + 'touchend' === e.type && e.preventDefault() + } + }, + onIntersection: function (e) { + var t, + n, + r, + i, + o = this.el + ;(n = e.detail.els[0] === o ? 1 : 0), + (i = e.detail.intersections[n]), + (r = e.detail.els[n]) && + this.intersectedEl !== r && + ((this.intersectedEl && + (t = this.el.components.raycaster.getIntersection(this.intersectedEl)) && + t.distance <= i.distance) || + (this.clearCurrentIntersection(!0), this.setIntersection(r, i))) + }, + onIntersectionCleared: function (e) { + ;-1 !== e.detail.clearedEls.indexOf(this.intersectedEl) && + this.clearCurrentIntersection() + }, + onEnterVR: function () { + this.clearCurrentIntersection(!0) + var e = this.el.sceneEl.xrSession, + t = this + e && + 'mouse' !== this.data.rayOrigin && + (c.DOWN.forEach(function (n) { + e.addEventListener(n, t.onCursorDown) + }), + c.UP.forEach(function (n) { + e.addEventListener(n, t.onCursorUp) + })) + }, + setIntersection: function (e, t) { + var n = this.el, + r = this.data, + i = this + this.intersectedEl !== e && + ((this.intersectedEl = e), + n.addState(s.HOVERING), + e.addState(s.HOVERED), + this.twoWayEmit(a.MOUSEENTER), + this.data.mouseCursorStylesEnabled && + 'mouse' === this.data.rayOrigin && + this.el.sceneEl.canvas.classList.add(u), + 0 !== r.fuseTimeout && + r.fuse && + (n.addState(s.FUSING), + this.twoWayEmit(a.FUSING), + (this.fuseTimeout = setTimeout(function () { + n.removeState(s.FUSING), i.twoWayEmit(a.CLICK) + }, r.fuseTimeout)))) + }, + clearCurrentIntersection: function (e) { + var t, + n, + r = this.el + this.intersectedEl && + (this.intersectedEl.removeState(s.HOVERED), + r.removeState(s.HOVERING), + r.removeState(s.FUSING), + this.twoWayEmit(a.MOUSELEAVE), + this.data.mouseCursorStylesEnabled && + 'mouse' === this.data.rayOrigin && + this.el.sceneEl.canvas.classList.remove(u), + (this.intersectedEl = null), + clearTimeout(this.fuseTimeout), + !0 !== e && + 0 !== (n = this.el.components.raycaster.intersections).length && + (t = n[n[0].object.el === r ? 1 : 0]) && + this.setIntersection(t.object.el, t)) + }, + twoWayEmit: function (e) { + var t, + n = this.el, + r = this.intersectedEl + ;(t = this.el.components.raycaster.getIntersection(r)), + (this.eventDetail.intersectedEl = r), + (this.eventDetail.intersection = t), + n.emit(e, this.eventDetail), + r && + ((this.intersectedEventDetail.intersection = t), + r.emit(e, this.intersectedEventDetail)) + }, + }) + }, + { '../core/component': 131, '../utils/': 205 }, + ], + 77: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = 'https://cdn.aframe.io/controllers/google/', + u = c + 'vr_controller_daydream.obj', + h = c + 'vr_controller_daydream.mtl', + d = e('../utils/').device.isWebXRAvailable, + p = d ? 'google-daydream' : 'Daydream Controller', + f = d + ? { + axes: { touchpad: [0, 1] }, + buttons: ['none', 'none', 'touchpad', 'menu', 'system'], + } + : { axes: { trackpad: [0, 1] }, buttons: ['trackpad', 'menu', 'system'] } + t.exports.Component = r('daydream-controls', { + schema: { + hand: { default: '' }, + buttonColor: { type: 'color', default: '#000000' }, + buttonTouchedColor: { type: 'color', default: '#777777' }, + buttonHighlightColor: { type: 'color', default: '#FFFFFF' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !0 }, + }, + mapping: f, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + this.bindMethods() + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + a(this, p, this.data.hand ? { hand: this.data.hand } : {}) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + armModel: t.armModel, + hand: t.hand, + idPrefix: p, + id: p, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('obj-model', { obj: u, mtl: h }) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model + this.data.model && + (((t = this.buttonMeshes = {}).menu = n.getObjectByName( + 'AppButton_AppButton_Cylinder.004', + )), + (t.system = n.getObjectByName('HomeButton_HomeButton_Cylinder.005')), + (t.trackpad = n.getObjectByName('TouchPad_TouchPad_Cylinder.003')), + (t.touchpad = n.getObjectByName('TouchPad_TouchPad_Cylinder.003')), + n.position.set(0, 0, -0.04)) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && this.el.emit(t + 'changed', e.detail.state) + }, + updateModel: function (e, t) { + this.data.model && this.updateButtonModel(e, t) + }, + updateButtonModel: function (e, t) { + var n = this.buttonMeshes + if (n && n[e]) { + var r + switch (t) { + case 'down': + r = this.data.buttonHighlightColor + break + case 'touchstart': + r = this.data.buttonTouchedColor + break + default: + r = this.data.buttonColor + } + n[e].material.color.set(r) + } + }, + }) + }, + { + '../core/component': 131, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 78: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = e('../utils/').device.isWebXRAvailable, + u = 'https://cdn.aframe.io/controllers/samsung/', + h = u + 'gear_vr_controller.obj', + d = u + 'gear_vr_controller.mtl', + p = c ? 'samsung-gearvr' : 'Gear VR', + f = c + ? { + axes: { touchpad: [0, 1] }, + buttons: ['trigger', 'none', 'touchpad', 'none', 'menu'], + } + : { axes: { trackpad: [0, 1] }, buttons: ['trackpad', 'trigger'] } + t.exports.Component = r('gearvr-controls', { + schema: { + hand: { default: '' }, + buttonColor: { type: 'color', default: '#000000' }, + buttonTouchedColor: { type: 'color', default: '#777777' }, + buttonHighlightColor: { type: 'color', default: '#FFFFFF' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !0 }, + }, + mapping: f, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + this.bindMethods() + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + a(this, p, this.data.hand ? { hand: this.data.hand } : {}) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + armModel: t.armModel, + hand: t.hand, + idPrefix: p, + id: p, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('obj-model', { obj: h, mtl: d }) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model + this.data.model && + (((t = this.buttonMeshes = {}).trigger = n.children[2]), + (t.trackpad = n.children[1]), + (t.touchpad = n.children[1])) + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && this.el.emit(t + 'changed', e.detail.state) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + updateModel: function (e, t) { + this.data.model && this.updateButtonModel(e, t) + }, + updateButtonModel: function (e, t) { + var n = this.buttonMeshes + if (n && n[e]) { + var r + switch (t) { + case 'down': + r = this.data.buttonHighlightColor + break + case 'touchstart': + r = this.data.buttonTouchedColor + break + default: + r = this.data.buttonColor + } + n[e].material.color.set(r) + } + }, + }) + }, + { + '../core/component': 131, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 79: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = 'generic', + u = { + axes: { touchpad: [0, 1], thumbstick: [2, 3] }, + buttons: ['trigger', 'squeeze', 'touchpad', 'thumbstick'], + } + t.exports.Component = r('generic-tracked-controller-controls', { + schema: { + hand: { default: '' }, + defaultModel: { default: !0 }, + defaultModelColor: { default: 'gray' }, + orientationOffset: { type: 'vec3' }, + disabled: { default: !1 }, + }, + mapping: u, + bindMethods: function () { + ;(this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.controllerPresent = !1), + (this.wasControllerConnected = !1), + (this.lastControllerCheck = 0), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods(), + this.el.addEventListener('controllerconnected', function (t) { + t.detail.name !== e.name && + ((e.wasControllerConnected = !0), + e.removeEventListeners(), + e.removeControllersUpdateListener()) + }) + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + var e = this.data, + t = e.hand ? e.hand : void 0 + a(this, c, { hand: t, iterateControllerProfiles: !0 }) + }, + play: function () { + this.wasControllerConnected || + (this.checkIfControllerPresent(), this.addControllersUpdateListener()) + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + this.el.components['tracked-controls'] + ? this.removeEventListeners() + : (e.setAttribute('tracked-controls', { + hand: t.hand, + idPrefix: c, + orientationOffset: t.orientationOffset, + iterateControllerProfiles: !0, + }), + this.data.defaultModel && this.initDefaultModel()) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && this.el.emit(t + 'changed', e.detail.state) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + initDefaultModel: function () { + var e = (this.modelEl = document.createElement('a-entity')) + e.setAttribute('geometry', { primitive: 'sphere', radius: 0.03 }), + e.setAttribute('material', { color: this.data.color }), + this.el.appendChild(e) + }, + }) + }, + { '../core/component': 131, '../utils/bind': 199, '../utils/tracked-controls': 214 }, + ], + 80: [ + function (e, t, n) { + var r = e('../core/geometry').geometries, + i = e('../core/geometry').geometryNames, + o = e('../core/component').registerComponent, + a = e('../lib/three'), + s = new a.BufferGeometry() + t.exports.Component = o('geometry', { + schema: { + buffer: { default: !0 }, + primitive: { default: 'box', oneOf: i, schemaChange: !0 }, + skipCache: { default: !1 }, + }, + init: function () { + this.geometry = null + }, + update: function (e) { + var t, + n = this.data, + r = this.el, + i = this.system + this.geometry && (i.unuseGeometry(e), (this.geometry = null)), + (this.geometry = i.getOrCreateGeometry(n)), + (t = r.getObject3D('mesh')) + ? (t.geometry = this.geometry) + : (((t = new a.Mesh()).geometry = this.geometry), + this.el.getAttribute('material') || + (t.material = new a.MeshStandardMaterial({ + color: 16777215 * Math.random(), + metalness: 0, + roughness: 0.5, + })), + r.setObject3D('mesh', t)) + }, + remove: function () { + this.system.unuseGeometry(this.data), + (this.el.getObject3D('mesh').geometry = s), + (this.geometry = null) + }, + updateSchema: function (e) { + var t = this.oldData && this.oldData.primitive, + n = e.primitive, + i = r[n] && r[n].schema + if (!i) throw new Error('Unknown geometry schema `' + n + '`') + ;(t && t === n) || this.extendSchema(i) + }, + }) + }, + { '../core/component': 131, '../core/geometry': 132, '../lib/three': 179 }, + ], + 81: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../lib/three'), + o = e('../utils/').debug('components:gltf-model:warn') + t.exports.Component = r('gltf-model', { + schema: { type: 'model' }, + init: function () { + var e = this.system.getDRACOLoader() + ;(this.model = null), + (this.loader = new i.GLTFLoader()), + e && this.loader.setDRACOLoader(e) + }, + update: function () { + var e = this, + t = this.el, + n = this.data + n && + (this.remove(), + this.loader.load( + n, + function (n) { + ;(e.model = n.scene || n.scenes[0]), + (e.model.animations = n.animations), + t.setObject3D('mesh', e.model), + t.emit('model-loaded', { format: 'gltf', model: e.model }) + }, + void 0, + function (e) { + var r = e && e.message ? e.message : 'Failed to load glTF model' + o(r), t.emit('model-error', { format: 'gltf', src: n }) + }, + )) + }, + remove: function () { + this.model && this.el.removeObject3D('mesh') + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/': 205 }, + ], + 82: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = { + toonLeft: 'https://cdn.aframe.io/controllers/hands/leftHand.glb', + toonRight: 'https://cdn.aframe.io/controllers/hands/rightHand.glb', + lowPolyLeft: 'https://cdn.aframe.io/controllers/hands/leftHandLow.glb', + lowPolyRight: 'https://cdn.aframe.io/controllers/hands/rightHandLow.glb', + highPolyLeft: 'https://cdn.aframe.io/controllers/hands/leftHandHigh.glb', + highPolyRight: 'https://cdn.aframe.io/controllers/hands/rightHandHigh.glb', + }, + o = { + open: 'Open', + point: 'Point', + pointThumb: 'Point + Thumb', + fist: 'Fist', + hold: 'Hold', + thumbUp: 'Thumb Up', + }, + a = {} + function s(e, t) { + var n + if (e) + return 'grip' === (n = a[e]) + ? n + (t ? 'close' : 'open') + : 'point' === n + ? n + (t ? 'up' : 'down') + : 'pointing' === n || 'pistol' === n + ? n + (t ? 'start' : 'end') + : void 0 + } + function l(e) { + var t = e && e.controller + return ( + t && + ((t.id && 0 === t.id.indexOf('OpenVR ')) || + (t.profiles && t.profiles[0] && 'htc-vive-controller-mv' === t.profiles[0])) + ) + } + ;(a[o.fist] = 'grip'), + (a[o.thumbUp] = 'pistol'), + (a[o.point] = 'pointing'), + (t.exports.Component = r('hand-controls', { + schema: { + color: { default: 'white', type: 'color' }, + hand: { default: 'left' }, + handModelStyle: { + default: 'lowPoly', + oneOf: ['lowPoly', 'highPoly', 'toon'], + }, + }, + init: function () { + var e = this, + t = this.el + ;(this.gesture = o.open), + (this.pressedButtons = {}), + (this.touchedButtons = {}), + (this.loader = new THREE.GLTFLoader()), + this.loader.setCrossOrigin('anonymous'), + (this.onGripDown = function () { + e.handleButton('grip', 'down') + }), + (this.onGripUp = function () { + e.handleButton('grip', 'up') + }), + (this.onTrackpadDown = function () { + e.handleButton('trackpad', 'down') + }), + (this.onTrackpadUp = function () { + e.handleButton('trackpad', 'up') + }), + (this.onTrackpadTouchStart = function () { + e.handleButton('trackpad', 'touchstart') + }), + (this.onTrackpadTouchEnd = function () { + e.handleButton('trackpad', 'touchend') + }), + (this.onTriggerDown = function () { + e.handleButton('trigger', 'down') + }), + (this.onTriggerUp = function () { + e.handleButton('trigger', 'up') + }), + (this.onTriggerTouchStart = function () { + e.handleButton('trigger', 'touchstart') + }), + (this.onTriggerTouchEnd = function () { + e.handleButton('trigger', 'touchend') + }), + (this.onGripTouchStart = function () { + e.handleButton('grip', 'touchstart') + }), + (this.onGripTouchEnd = function () { + e.handleButton('grip', 'touchend') + }), + (this.onThumbstickDown = function () { + e.handleButton('thumbstick', 'down') + }), + (this.onThumbstickUp = function () { + e.handleButton('thumbstick', 'up') + }), + (this.onAorXTouchStart = function () { + e.handleButton('AorX', 'touchstart') + }), + (this.onAorXTouchEnd = function () { + e.handleButton('AorX', 'touchend') + }), + (this.onBorYTouchStart = function () { + e.handleButton('BorY', 'touchstart') + }), + (this.onBorYTouchEnd = function () { + e.handleButton('BorY', 'touchend') + }), + (this.onSurfaceTouchStart = function () { + e.handleButton('surface', 'touchstart') + }), + (this.onSurfaceTouchEnd = function () { + e.handleButton('surface', 'touchend') + }), + (this.onControllerConnected = this.onControllerConnected.bind(this)), + (this.onControllerDisconnected = this.onControllerDisconnected.bind(this)), + t.addEventListener('controllerconnected', this.onControllerConnected), + t.addEventListener('controllerdisconnected', this.onControllerDisconnected), + (t.object3D.visible = !1) + }, + play: function () { + this.addEventListeners() + }, + pause: function () { + this.removeEventListeners() + }, + tick: function (e, t) { + var n = this.el.getObject3D('mesh') + n && n.mixer && n.mixer.update(t / 1e3) + }, + onControllerConnected: function () { + this.el.object3D.visible = !0 + }, + onControllerDisconnected: function () { + this.el.object3D.visible = !1 + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('gripdown', this.onGripDown), + e.addEventListener('gripup', this.onGripUp), + e.addEventListener('trackpaddown', this.onTrackpadDown), + e.addEventListener('trackpadup', this.onTrackpadUp), + e.addEventListener('trackpadtouchstart', this.onTrackpadTouchStart), + e.addEventListener('trackpadtouchend', this.onTrackpadTouchEnd), + e.addEventListener('triggerdown', this.onTriggerDown), + e.addEventListener('triggerup', this.onTriggerUp), + e.addEventListener('triggertouchstart', this.onTriggerTouchStart), + e.addEventListener('triggertouchend', this.onTriggerTouchEnd), + e.addEventListener('griptouchstart', this.onGripTouchStart), + e.addEventListener('griptouchend', this.onGripTouchEnd), + e.addEventListener('thumbstickdown', this.onThumbstickDown), + e.addEventListener('thumbstickup', this.onThumbstickUp), + e.addEventListener('abuttontouchstart', this.onAorXTouchStart), + e.addEventListener('abuttontouchend', this.onAorXTouchEnd), + e.addEventListener('bbuttontouchstart', this.onBorYTouchStart), + e.addEventListener('bbuttontouchend', this.onBorYTouchEnd), + e.addEventListener('xbuttontouchstart', this.onAorXTouchStart), + e.addEventListener('xbuttontouchend', this.onAorXTouchEnd), + e.addEventListener('ybuttontouchstart', this.onBorYTouchStart), + e.addEventListener('ybuttontouchend', this.onBorYTouchEnd), + e.addEventListener('surfacetouchstart', this.onSurfaceTouchStart), + e.addEventListener('surfacetouchend', this.onSurfaceTouchEnd) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('gripdown', this.onGripDown), + e.removeEventListener('gripup', this.onGripUp), + e.removeEventListener('trackpaddown', this.onTrackpadDown), + e.removeEventListener('trackpadup', this.onTrackpadUp), + e.removeEventListener('trackpadtouchstart', this.onTrackpadTouchStart), + e.removeEventListener('trackpadtouchend', this.onTrackpadTouchEnd), + e.removeEventListener('triggerdown', this.onTriggerDown), + e.removeEventListener('triggerup', this.onTriggerUp), + e.removeEventListener('triggertouchstart', this.onTriggerTouchStart), + e.removeEventListener('triggertouchend', this.onTriggerTouchEnd), + e.removeEventListener('griptouchstart', this.onGripTouchStart), + e.removeEventListener('griptouchend', this.onGripTouchEnd), + e.removeEventListener('thumbstickdown', this.onThumbstickDown), + e.removeEventListener('thumbstickup', this.onThumbstickUp), + e.removeEventListener('abuttontouchstart', this.onAorXTouchStart), + e.removeEventListener('abuttontouchend', this.onAorXTouchEnd), + e.removeEventListener('bbuttontouchstart', this.onBorYTouchStart), + e.removeEventListener('bbuttontouchend', this.onBorYTouchEnd), + e.removeEventListener('xbuttontouchstart', this.onAorXTouchStart), + e.removeEventListener('xbuttontouchend', this.onAorXTouchEnd), + e.removeEventListener('ybuttontouchstart', this.onBorYTouchStart), + e.removeEventListener('ybuttontouchend', this.onBorYTouchEnd), + e.removeEventListener('surfacetouchstart', this.onSurfaceTouchStart), + e.removeEventListener('surfacetouchend', this.onSurfaceTouchEnd) + }, + update: function (e) { + var t, + n = this.el, + r = this.data.hand, + o = this.data.handModelStyle, + a = this.data.color, + s = this + if (((t = { hand: r, model: !1 }), r !== e)) { + var l = i[o + r.charAt(0).toUpperCase() + r.slice(1)] + this.loader.load(l, function (e) { + var i = e.scene.children[0], + o = 'left' === r ? Math.PI / 2 : -Math.PI / 2 + ;(i.mixer = new THREE.AnimationMixer(i)), + (s.clips = e.animations), + n.setObject3D('mesh', i), + (i.children[1].material.color = new THREE.Color(a)), + i.position.set(0, 0, 0), + i.rotation.set(0, 0, o), + n.setAttribute('magicleap-controls', t), + n.setAttribute('vive-controls', t), + n.setAttribute('oculus-touch-controls', t), + n.setAttribute('windows-motion-controls', t) + }) + } + }, + remove: function () { + this.el.removeObject3D('mesh') + }, + handleButton: function (e, t) { + var n, + r = 'down' === t, + i = 'touchstart' === t + if (0 === t.indexOf('touch')) { + if (i === this.touchedButtons[e]) return + this.touchedButtons[e] = i + } else { + if (r === this.pressedButtons[e]) return + this.pressedButtons[e] = r + } + ;(n = this.gesture), + (this.gesture = this.determineGesture()), + this.gesture !== n && + (this.animateGesture(this.gesture, n), + this.emitGestureEvents(this.gesture, n)) + }, + determineGesture: function () { + var e, + t = this.pressedButtons.grip, + n = this.pressedButtons.surface || this.touchedButtons.surface, + r = this.pressedButtons.trackpad || this.touchedButtons.trackpad, + i = this.pressedButtons.trigger || this.touchedButtons.trigger, + a = this.touchedButtons.AorX || this.touchedButtons.BorY + return ( + l(this.el.components['tracked-controls']) + ? t || i + ? (e = o.fist) + : r && (e = o.point) + : t + ? (e = + n || a || r ? (i ? o.fist : o.point) : i ? o.thumbUp : o.pointThumb) + : i && (e = o.hold), + e + ) + }, + getClip: function (e) { + var t, n + for (n = 0; n < this.clips.length; n++) + if ((t = this.clips[n]).name === e) return t + }, + animateGesture: function (e, t) { + e ? this.playAnimation(e || o.open, t, !1) : this.playAnimation(t, t, !0) + }, + emitGestureEvents: function (e, t) { + var n, + r = this.el + t !== e && ((n = s(t, !1)) && r.emit(n), (n = s(e, !0)) && r.emit(n)) + }, + playAnimation: function (e, t, n) { + var r, + i, + o, + a = this.el.getObject3D('mesh') + if (a) { + if ( + (a.mixer.stopAllAction(), + (r = this.getClip(e)), + ((o = a.mixer.clipAction(r)).clampWhenFinished = !0), + (o.loop = THREE.LoopRepeat), + (o.repetitions = 0), + (o.timeScale = n ? -1 : 1), + (o.time = n ? r.duration : 0), + (o.weight = 1), + !t || e === t) + ) + return a.mixer.stopAllAction(), void o.play() + ;(r = this.getClip(t)), + ((i = a.mixer.clipAction(r)).weight = 0.15), + i.play(), + o.play(), + i.crossFadeTo(o, 0.15, !0) + } + }, + })) + }, + { '../core/component': 131 }, + ], + 83: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls').checkControllerPresentAndSetup, + a = 'https://cdn.aframe.io/controllers/oculus-hands/unity/left.glb', + s = 'https://cdn.aframe.io/controllers/oculus-hands/unity/right.glb', + l = { left: 'b_l_', right: 'b_r_' }, + c = [ + 'wrist', + 'thumb-metacarpal', + 'thumb-phalanx-proximal', + 'thumb-phalanx-distal', + 'thumb-tip', + 'index-finger-metacarpal', + 'index-finger-phalanx-proximal', + 'index-finger-phalanx-intermediate', + 'index-finger-phalanx-distal', + 'index-finger-tip', + 'middle-finger-metacarpal', + 'middle-finger-phalanx-proximal', + 'middle-finger-phalanx-intermediate', + 'middle-finger-phalanx-distal', + 'middle-finger-tip', + 'ring-finger-metacarpal', + 'ring-finger-phalanx-proximal', + 'ring-finger-phalanx-intermediate', + 'ring-finger-phalanx-distal', + 'ring-finger-tip', + 'pinky-finger-metacarpal', + 'pinky-finger-phalanx-proximal', + 'pinky-finger-phalanx-intermediate', + 'pinky-finger-phalanx-distal', + 'pinky-finger-tip', + ], + u = { + wrist: 'wrist', + 'thumb-metacarpal': 'thumb1', + 'thumb-phalanx-proximal': 'thumb2', + 'thumb-phalanx-distal': 'thumb3', + 'thumb-tip': 'thumb_null', + 'index-finger-phalanx-proximal': 'index1', + 'index-finger-phalanx-intermediate': 'index2', + 'index-finger-phalanx-distal': 'index3', + 'index-finger-tip': 'index_null', + 'middle-finger-phalanx-proximal': 'middle1', + 'middle-finger-phalanx-intermediate': 'middle2', + 'middle-finger-phalanx-distal': 'middle3', + 'middle-finger-tip': 'middle_null', + 'ring-finger-phalanx-proximal': 'ring1', + 'ring-finger-phalanx-intermediate': 'ring2', + 'ring-finger-phalanx-distal': 'ring3', + 'ring-finger-tip': 'ring_null', + 'pinky-finger-metacarpal': 'pinky0', + 'pinky-finger-phalanx-proximal': 'pinky1', + 'pinky-finger-phalanx-intermediate': 'pinky2', + 'pinky-finger-phalanx-distal': 'pinky3', + 'pinky-finger-tip': 'pinky_null', + }, + h = 0.015, + d = 0.03, + p = 0.5 + t.exports.Component = r('hand-tracking-controls', { + schema: { + hand: { default: 'right', oneOf: ['left', 'right'] }, + modelStyle: { default: 'mesh', oneOf: ['dots', 'mesh'] }, + modelColor: { default: 'white' }, + }, + bindMethods: function () { + ;(this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )) + }, + addEventListeners: function () { + this.el.addEventListener('model-loaded', this.onModelLoaded) + for (var e = 0; e < this.jointEls.length; ++e) + this.jointEls[e].object3D.visible = !0 + }, + removeEventListeners: function () { + this.el.removeEventListener('model-loaded', this.onModelLoaded) + for (var e = 0; e < this.jointEls.length; ++e) + this.jointEls[e].object3D.visible = !1 + }, + init: function () { + var e = this.el.sceneEl, + t = e.getAttribute('webxr').optionalFeatures + t.push('hand-tracking'), + e.setAttribute('webxr', { optionalFeatures: t }), + (this.onModelLoaded = this.onModelLoaded.bind(this)), + (this.jointEls = []), + (this.controllerPresent = !1), + (this.isPinched = !1), + (this.pinchEventDetail = { position: new THREE.Vector3() }), + (this.indexTipPosition = new THREE.Vector3()), + this.bindMethods(), + (this.updateReferenceSpace = this.updateReferenceSpace.bind(this)), + this.el.sceneEl.addEventListener('enter-vr', this.updateReferenceSpace), + this.el.sceneEl.addEventListener('exit-vr', this.updateReferenceSpace) + }, + updateReferenceSpace: function () { + var e = this, + t = this.el.sceneEl.xrSession + if (((this.referenceSpace = void 0), t)) { + var n = e.el.sceneEl.systems.webxr.sessionReferenceSpaceType + t.requestReferenceSpace(n) + .then(function (t) { + e.referenceSpace = t.getOffsetReferenceSpace( + new XRRigidTransform({ x: 0, y: 1.5, z: 0 }), + ) + }) + .catch(function (t) { + throw ( + (e.el.sceneEl.systems.webxr.warnIfFeatureNotRequested( + n, + 'tracked-controls-webxr uses reference space ' + n, + ), + t) + ) + }) + } + }, + checkIfControllerPresent: function () { + var e = this.data, + t = e.hand ? e.hand : void 0 + o(this, '', { hand: t, iterateControllerProfiles: !0, handTracking: !0 }) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + tick: function () { + var e = this.el.sceneEl, + t = + this.el.components['tracked-controls'] && + this.el.components['tracked-controls'].controller, + n = e.frame, + r = this.el.components['tracked-controls-webxr'] + t && + n && + r && + t.hand && + (this.el.object3D.position.set(0, 0, 0), + this.el.object3D.rotation.set(0, 0, 0), + n.getJointPose && this.updateHandModel(), + this.detectGesture()) + }, + updateHandModel: function () { + 'dots' === this.data.modelStyle && this.updateHandDotsModel(), + 'mesh' === this.data.modelStyle && this.updateHandMeshModel() + }, + getBone: function (e) { + for (var t = this.bones, n = 0; n < t.length; n++) + if (t[n].name === e) return t[n] + return null + }, + updateHandMeshModel: function () { + var e = this.el.sceneEl.frame, + t = + this.el.components['tracked-controls'] && + this.el.components['tracked-controls'].controller, + n = this.referenceSpace + if (t && this.mesh && n) + for (var r of ((this.mesh.visible = !1), t.hand.values())) { + var i, o, a + ;(o = e.getJointPose(r, n)), + u[r.jointName] && + null != (i = this.getBone(l[this.data.hand] + u[r.jointName])) && + o && + ((a = o.transform), + (this.mesh.visible = !0), + i.position.copy(a.position).multiplyScalar(100), + i.quaternion.set( + a.orientation.x, + a.orientation.y, + a.orientation.z, + a.orientation.w, + )) + } + }, + updateHandDotsModel: function () { + var e, + t, + n, + r = this.el.sceneEl.frame, + i = + this.el.components['tracked-controls'] && + this.el.components['tracked-controls'].controller, + o = this.el.components['tracked-controls-webxr'].system.referenceSpace, + a = 0 + for (var s of i.hand.values()) + (t = (e = this.jointEls[a++]).object3D), + (n = r.getJointPose(s, o)), + (e.object3D.visible = !!n), + n && + ((t.matrix.elements = n.transform.matrix), + t.matrix.decompose(t.position, t.rotation, t.scale), + e.setAttribute('scale', { x: n.radius, y: n.radius, z: n.radius })) + }, + detectGesture: function () { + this.detectPinch() + }, + detectPinch: (function () { + var e = new THREE.Vector3() + return function () { + var t = this.el.sceneEl.frame, + n = this.indexTipPosition, + r = + this.el.components['tracked-controls'] && + this.el.components['tracked-controls'].controller, + i = this.el.components['tracked-controls-webxr'], + o = this.referenceSpace || i.system.referenceSpace, + a = r.hand.get('index-finger-tip'), + s = r.hand.get('thumb-tip') + if (a && s) { + var l = t.getJointPose(a, o), + c = t.getJointPose(s, o) + if (l && c) { + e.copy(c.transform.position), n.copy(l.transform.position) + var u = n.distanceTo(e) + u < h && + !1 === this.isPinched && + ((this.isPinched = !0), + this.pinchEventDetail.position.copy(n).lerp(e, p), + (this.pinchEventDetail.position.y += 1.5), + this.el.emit('pinchstarted', this.pinchEventDetail)), + u > d && + !0 === this.isPinched && + ((this.isPinched = !1), + this.pinchEventDetail.position.copy(n).lerp(e, p), + (this.pinchEventDetail.position.y += 1.5), + this.el.emit('pinchended', this.pinchEventDetail)), + this.isPinched && + (this.pinchEventDetail.position.copy(n).lerp(e, p), + (this.pinchEventDetail.position.y += 1.5), + this.el.emit('pinchmoved', this.pinchEventDetail)), + (n.y += 1.5) + } + } + } + })(), + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + hand: t.hand, + iterateControllerProfiles: !0, + handTrackingEnabled: !0, + }), + this.initDefaultModel() + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + var e + this.checkIfControllerPresent(), + (e = + this.el.components['tracked-controls'] && + this.el.components['tracked-controls'].controller), + this.el.getObject3D('mesh') && + ((e && e.hand && e.hand[0]) || (this.el.getObject3D('mesh').visible = !1)) + }, + initDefaultModel: function () { + this.el.getObject3D('mesh') || + ('dots' === this.data.modelStyle && this.initDotsModel(), + 'mesh' === this.data.modelStyle && this.initMeshHandModel()) + }, + initDotsModel: function () { + if (0 === this.jointEls.length) + for (var e = 0; e < c.length; ++e) { + var t = (this.jointEl = document.createElement('a-entity')) + t.setAttribute('geometry', { primitive: 'sphere', radius: 1 }), + t.setAttribute('material', { color: this.data.modelColor }), + (t.object3D.visible = !1), + this.el.appendChild(t), + this.jointEls.push(t) + } + }, + initMeshHandModel: function () { + var e = 'left' === this.data.hand ? a : s + this.el.setAttribute('gltf-model', e) + }, + onModelLoaded: function () { + var e = (this.mesh = this.el.getObject3D('mesh').children[0]), + t = (this.skinnedMesh = e.children[24]) + this.skinnedMesh && + ((this.bones = t.skeleton.bones), + this.el.removeObject3D('mesh'), + e.position.set(0, 1.5, 0), + e.rotation.set(0, 0, 0), + (t.frustumCulled = !1), + (t.material = new THREE.MeshStandardMaterial({ + skinning: !0, + color: this.data.modelColor, + })), + this.el.setObject3D('mesh', e)) + }, + }) + }, + { '../core/component': 131, '../utils/bind': 199, '../utils/tracked-controls': 214 }, + ], + 84: [ + function (e, t, n) { + e('./animation'), + e('./camera'), + e('./cursor'), + e('./daydream-controls'), + e('./gearvr-controls'), + e('./geometry'), + e('./generic-tracked-controller-controls'), + e('./gltf-model'), + e('./hand-tracking-controls'), + e('./hand-controls'), + e('./layer'), + e('./laser-controls'), + e('./light'), + e('./line'), + e('./link'), + e('./look-controls'), + e('./magicleap-controls'), + e('./material'), + e('./obj-model'), + e('./oculus-go-controls'), + e('./oculus-touch-controls'), + e('./position'), + e('./raycaster'), + e('./rotation'), + e('./scale'), + e('./shadow'), + e('./sound'), + e('./text'), + e('./tracked-controls'), + e('./tracked-controls-webvr'), + e('./tracked-controls-webxr'), + e('./visible'), + e('./valve-index-controls'), + e('./vive-controls'), + e('./vive-focus-controls'), + e('./wasd-controls'), + e('./windows-motion-controls'), + e('./scene/background'), + e('./scene/debug'), + e('./scene/device-orientation-permission-ui'), + e('./scene/embedded'), + e('./scene/inspector'), + e('./scene/fog'), + e('./scene/keyboard-shortcuts'), + e('./scene/pool'), + e('./scene/screenshot'), + e('./scene/stats'), + e('./scene/vr-mode-ui') + }, + { + './animation': 74, + './camera': 75, + './cursor': 76, + './daydream-controls': 77, + './gearvr-controls': 78, + './generic-tracked-controller-controls': 79, + './geometry': 80, + './gltf-model': 81, + './hand-controls': 82, + './hand-tracking-controls': 83, + './laser-controls': 85, + './layer': 86, + './light': 87, + './line': 88, + './link': 89, + './look-controls': 90, + './magicleap-controls': 91, + './material': 92, + './obj-model': 93, + './oculus-go-controls': 94, + './oculus-touch-controls': 95, + './position': 96, + './raycaster': 97, + './rotation': 98, + './scale': 99, + './scene/background': 100, + './scene/debug': 101, + './scene/device-orientation-permission-ui': 102, + './scene/embedded': 103, + './scene/fog': 104, + './scene/inspector': 105, + './scene/keyboard-shortcuts': 106, + './scene/pool': 107, + './scene/screenshot': 108, + './scene/stats': 109, + './scene/vr-mode-ui': 110, + './shadow': 111, + './sound': 112, + './text': 113, + './tracked-controls': 116, + './tracked-controls-webvr': 114, + './tracked-controls-webxr': 115, + './valve-index-controls': 117, + './visible': 118, + './vive-controls': 119, + './vive-focus-controls': 120, + './wasd-controls': 121, + './windows-motion-controls': 122, + }, + ], + 85: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/') + r('laser-controls', { + schema: { + hand: { default: 'right' }, + model: { default: !0 }, + defaultModelColor: { type: 'color', default: 'grey' }, + }, + init: function () { + var e = this.config, + t = this.data, + n = this.el, + r = this, + o = { hand: t.hand, model: t.model } + function a(t) { + var o = e[t.detail.name] + if (o) { + var a = i.extend({ showLine: !0 }, o.raycaster || {}) + t.detail.rayOrigin && + ((a.origin = t.detail.rayOrigin.origin), + (a.direction = t.detail.rayOrigin.direction), + (a.showLine = !0)), + t.detail.rayOrigin || !r.modelReady + ? n.setAttribute('raycaster', a) + : n.setAttribute('raycaster', 'showLine', !0), + n.setAttribute('cursor', i.extend({ fuse: !1 }, o.cursor)) + } + } + function s() { + n.setAttribute('raycaster', 'showLine', !1) + } + n.setAttribute('daydream-controls', o), + n.setAttribute('gearvr-controls', o), + n.setAttribute('magicleap-controls', o), + n.setAttribute('oculus-go-controls', o), + n.setAttribute('oculus-touch-controls', o), + n.setAttribute('valve-index-controls', o), + n.setAttribute('vive-controls', o), + n.setAttribute('vive-focus-controls', o), + n.setAttribute('windows-motion-controls', o), + n.setAttribute('generic-tracked-controller-controls', o), + n.addEventListener('controllerconnected', a), + n.addEventListener('controllerdisconnected', s), + n.addEventListener('controllermodelready', function (e) { + a(e), (r.modelReady = !0) + }) + }, + config: { + 'daydream-controls': { + cursor: { + downEvents: ['trackpaddown', 'triggerdown'], + upEvents: ['trackpadup', 'triggerup'], + }, + }, + 'gearvr-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + raycaster: { origin: { x: 0, y: 0.001, z: 0 } }, + }, + 'generic-tracked-controller-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + }, + 'magicleap-controls': { + cursor: { + downEvents: ['trackpaddown', 'triggerdown'], + upEvents: ['trackpadup', 'triggerup'], + }, + }, + 'oculus-go-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + raycaster: { origin: { x: 0, y: 5e-4, z: 0 } }, + }, + 'oculus-touch-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + raycaster: { origin: { x: 0, y: 0, z: 0 } }, + }, + 'valve-index-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + }, + 'vive-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + }, + 'vive-focus-controls': { + cursor: { + downEvents: ['trackpaddown', 'triggerdown'], + upEvents: ['trackpadup', 'triggerup'], + }, + }, + 'windows-motion-controls': { + cursor: { downEvents: ['triggerdown'], upEvents: ['triggerup'] }, + raycaster: { showLine: !1 }, + }, + }, + }) + }, + { '../core/component': 131, '../utils/': 205 }, + ], + 86: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/').debug('components:layer:warn') + function o(e, t, n, r) { + var i = e.createFramebuffer() + let o = n.viewport.x, + a = n.viewport.y, + s = n.viewport.x + n.viewport.width, + l = n.viewport.y + n.viewport.height + 'VIDEO' === r.tagName && + (e.bindTexture(e.TEXTURE_2D, t), + e.texSubImage2D( + e.TEXTURE_2D, + 0, + 0, + 0, + r.width, + r.height, + e.RGB, + e.UNSIGNED_BYTE, + r, + )), + e.bindFramebuffer(e.READ_FRAMEBUFFER, i), + e.framebufferTexture2D( + e.READ_FRAMEBUFFER, + e.COLOR_ATTACHMENT0, + e.TEXTURE_2D, + t, + 0, + ), + e.readBuffer(e.COLOR_ATTACHMENT0), + e.blitFramebuffer( + 0, + 0, + r.width, + r.height, + o, + a, + s, + l, + e.COLOR_BUFFER_BIT, + e.NEAREST, + ), + e.bindFramebuffer(e.READ_FRAMEBUFFER, null), + e.deleteFramebuffer(i) + } + t.exports.Component = r('layer', { + schema: { + type: { default: 'quad', oneOf: ['quad', 'monocubemap', 'stereocubemap'] }, + src: { type: 'map' }, + rotateCubemap: { default: !1 }, + width: { default: 0 }, + height: { default: 0 }, + }, + init: function () { + var e = this.el.sceneEl.renderer.getContext() + ;(this.quaternion = new THREE.Quaternion()), + (this.position = new THREE.Vector3()), + this.bindMethods(), + (this.needsRedraw = !1), + (this.frameBuffer = e.createFramebuffer()) + var t = this.el.sceneEl.getAttribute('webxr').requiredFeatures + t.push('layers'), + this.el.sceneEl.getAttribute('webxr', 'requiredFeatures', t), + this.el.sceneEl.addEventListener('enter-vr', this.onEnterVR), + this.el.sceneEl.addEventListener('exit-vr', this.onExitVR) + }, + bindMethods: function () { + ;(this.onRequestedReferenceSpace = this.onRequestedReferenceSpace.bind(this)), + (this.onEnterVR = this.onEnterVR.bind(this)), + (this.onExitVR = this.onExitVR.bind(this)) + }, + update: function (e) { + this.data.src !== e.src && this.updateSrc() + }, + updateSrc: function () { + var e = this.data.type + ;(this.texture = void 0), + 'quad' !== e + ? ('monocubemap' !== e && 'stereocubemap' !== e) || this.loadCubeMapImages() + : this.loadQuadImage() + }, + loadCubeMapImages: function () { + var e, + t = this.data.type, + n = this.xrGLFactory, + r = this.el.sceneEl.frame, + i = this.data.src + ;(this.visibilityChanged = !1), + this.layer && + (i.complete + ? (this.pendingCubeMapUpdate = !1) + : (this.pendingCubeMapUpdate = !0), + this.loadingScreen ? (this.loadingScreen = !1) : (this.loadingScreen = !0), + 'monocubemap' === t + ? ((e = n.getSubImage(this.layer, r)), + this.loadCubeMapImage(e.colorTexture, i, 0)) + : ((e = n.getSubImage(this.layer, r, 'left')), + this.loadCubeMapImage(e.colorTexture, i, 0), + (e = n.getSubImage(this.layer, r, 'right')), + this.loadCubeMapImage(e.colorTexture, i, 6))) + }, + loadQuadImage: function () { + var e = this.data.src, + t = this + this.el.sceneEl.systems.material.loadTexture(e, { src: e }, function (n) { + t.el.sceneEl.renderer.initTexture(n), + (t.texture = n), + 'VIDEO' === e.tagName && + setTimeout(function () { + t.textureIsVideo = !0 + }, 1e3), + t.layer && + ((t.layer.height = t.data.height / 2 || t.texture.image.height / 1e3), + (t.layer.width = t.data.width / 2 || t.texture.image.width / 1e3), + (t.needsRedraw = !0)), + t.updateQuadPanel() + }) + }, + preGenerateCubeMapTextures: function (e, t) { + 'monocubemap' === this.data.type + ? this.generateCubeMapTextures(e, 0, t) + : (this.generateCubeMapTextures(e, 0, t), + this.generateCubeMapTextures(e, 6, t)) + }, + generateCubeMapTextures: function (e, t, n) { + for ( + var r, + i, + o = this.data, + a = this.cubeFaceSize, + s = Math.min(e.width, e.height), + l = [], + c = 0; + c < 6; + c++ + ) { + var u = document.createElement('CANVAS') + u.width = u.height = a + var h = u.getContext('2d') + o.rotateCubemap && + ((2 !== c && 3 !== c) || (h.save(), h.translate(a, a), h.rotate(Math.PI))), + h.drawImage(e, (c + t) * s, 0, s, s, 0, 0, a, a), + h.restore(), + n && n(), + l.push(u) + } + return ( + o.rotateCubemap && + ((r = l[0]), + (i = l[1]), + (l[0] = i), + (l[1] = r), + (r = l[4]), + (i = l[5]), + (l[4] = i), + (l[5] = r)), + n && n(), + l + ) + }, + loadCubeMapImage: function (e, t, n) { + var r, + i = this.el.sceneEl.renderer.getContext() + i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !1), + i.bindTexture(i.TEXTURE_CUBE_MAP, e), + (r = + !t.complete || this.loadingScreen + ? this.loadingScreenImages + : this.generateCubeMapTextures(t, n)) + var o = 0 + r.forEach(function (e, t) { + i.texSubImage2D( + i.TEXTURE_CUBE_MAP_POSITIVE_X + t, + 0, + 0, + 0, + i.RGBA, + i.UNSIGNED_BYTE, + e, + ), + (o = i.getError()) + }), + 0 !== o && console.log('renderingError, WebGL Error Code: ' + o), + i.bindTexture(i.TEXTURE_CUBE_MAP, null) + }, + tick: function () { + this.el.sceneEl.xrSession && + (!this.layer && this.el.sceneEl.is('vr-mode') && this.initLayer(), + this.updateTransform(), + this.data.src.complete && + (this.pendingCubeMapUpdate || + this.loadingScreen || + this.visibilityChanged) && + this.loadCubeMapImages(), + (this.needsRedraw || this.layer.needsRedraw || this.textureIsVideo) && + ('quad' === this.data.type && this.draw(), (this.needsRedraw = !1))) + }, + initLayer: function () { + var e = this, + t = this.data.type + ;(this.el.sceneEl.xrSession.onvisibilitychange = function (t) { + e.visibilityChanged = 'hidden' !== t.session.visibilityState + }), + 'quad' !== t + ? ('monocubemap' !== t && 'stereocubemap' !== t) || this.initCubeMapLayer() + : this.initQuadLayer() + }, + initQuadLayer: function () { + var e = this.el.sceneEl, + t = e.renderer.getContext(), + n = (this.xrGLFactory = new XRWebGLBinding(e.xrSession, t)) + this.texture && + ((this.layer = n.createQuadLayer({ + space: this.referenceSpace, + viewPixelHeight: 2048, + viewPixelWidth: 2048, + height: this.data.height / 2 || this.texture.image.height / 1e3, + width: this.data.width / 2 || this.texture.image.width / 1e3, + })), + e.renderer.xr.addLayer(this.layer)) + }, + initCubeMapLayer: function () { + var e = this.data.src, + t = this.el.sceneEl, + n = t.renderer.getContext(), + r = n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE), + i = (this.cubeFaceSize = Math.min(r, Math.min(e.width, e.height))), + o = (this.xrGLFactory = new XRWebGLBinding(t.xrSession, n)) + ;(this.layer = o.createCubeLayer({ + space: this.referenceSpace, + viewPixelWidth: i, + viewPixelHeight: i, + layout: 'monocubemap' === this.data.type ? 'mono' : 'stereo', + isStatic: !1, + })), + this.initLoadingScreenImages(), + this.loadCubeMapImages(), + t.renderer.xr.addLayer(this.layer) + }, + initLoadingScreenImages: function () { + for ( + var e = this.cubeFaceSize, t = (this.loadingScreenImages = []), n = 0; + n < 6; + n++ + ) { + var r = document.createElement('CANVAS') + r.width = r.height = e + var i = r.getContext('2d') + ;(r.width = r.height = e), + (i.fillStyle = 'black'), + i.fillRect(0, 0, e, e), + 2 !== n && + 3 !== n && + (i.translate(e, 0), + i.scale(-1, 1), + (i.fillStyle = 'white'), + (i.font = '30px Arial'), + i.fillText('Loading', e / 2, e / 2)), + t.push(r) + } + }, + destroyLayer: function () { + this.layer && + (this.el.sceneEl.renderer.xr.removeLayer(this.layer), + this.layer.destroy(), + (this.layer = void 0)) + }, + toggleCompositorLayer: function () { + this.enableCompositorLayer(!this.layerEnabled) + }, + enableCompositorLayer: function (e) { + ;(this.layerEnabled = e), + (this.quadPanelEl.object3D.visible = !this.layerEnabled) + }, + updateQuadPanel: function () { + var e = this.quadPanelEl + this.quadPanelEl || + ((e = this.quadPanelEl = document.createElement('a-entity')), + this.el.appendChild(e)), + e.setAttribute('material', { + shader: 'flat', + src: this.data.src, + transparent: !0, + }), + e.setAttribute('geometry', { + primitive: 'plane', + height: this.data.height || this.texture.image.height / 1e3, + width: this.data.width || this.texture.image.height / 1e3, + }) + }, + draw: function () { + var e = this.el.sceneEl, + t = this.el.sceneEl.renderer.getContext(), + n = this.xrGLFactory.getSubImage(this.layer, e.frame), + r = e.renderer.properties.get(this.texture).__webglTexture, + i = t.getParameter(t.FRAMEBUFFER_BINDING) + t.viewport(n.viewport.x, n.viewport.y, n.viewport.width, n.viewport.height), + t.bindFramebuffer(t.FRAMEBUFFER, this.frameBuffer), + t.framebufferTexture2D( + t.FRAMEBUFFER, + t.COLOR_ATTACHMENT0, + t.TEXTURE_2D, + n.colorTexture, + 0, + ), + o(t, r, n, this.data.src), + t.bindFramebuffer(t.FRAMEBUFFER, i) + }, + updateTransform: function () { + var e = this.el, + t = this.position, + n = this.quaternion + e.object3D.updateMatrixWorld(), + t.setFromMatrixPosition(e.object3D.matrixWorld), + n.setFromRotationMatrix(e.object3D.matrixWorld), + this.layerEnabled || t.set(0, 0, 1e8), + (this.layer.transform = new XRRigidTransform(t, n)) + }, + onEnterVR: function () { + var e = this.el.sceneEl, + t = e.xrSession + e.hasWebXR && XRWebGLBinding && t + ? (t.requestReferenceSpace('local').then(this.onRequestedReferenceSpace), + (this.needsRedraw = !0), + (this.layerEnabled = !0), + this.quadPanelEl && (this.quadPanelEl.object3D.visible = !1), + this.data.src.play && this.data.src.play()) + : i('The layer component requires WebXR and the layers API enabled') + }, + onExitVR: function () { + this.quadPanelEl && (this.quadPanelEl.object3D.visible = !0), + this.destroyLayer() + }, + onRequestedReferenceSpace: function (e) { + this.referenceSpace = e + }, + }) + }, + { '../core/component': 131, '../utils/': 205 }, + ], + 87: [ + function (e, t, n) { + var r = e('../utils/bind'), + i = e('../utils').diff, + o = e('../utils/debug'), + a = e('../core/component').registerComponent, + s = e('../lib/three'), + l = s.Math.degToRad, + c = o('components:light:warn') + t.exports.Component = a('light', { + schema: { + angle: { default: 60, if: { type: ['spot'] } }, + color: { type: 'color' }, + groundColor: { type: 'color', if: { type: ['hemisphere'] } }, + decay: { default: 1, if: { type: ['point', 'spot'] } }, + distance: { default: 0, min: 0, if: { type: ['point', 'spot'] } }, + intensity: { + default: 1, + min: 0, + if: { type: ['ambient', 'directional', 'hemisphere', 'point', 'spot'] }, + }, + penumbra: { default: 0, min: 0, max: 1, if: { type: ['spot'] } }, + type: { + default: 'directional', + oneOf: ['ambient', 'directional', 'hemisphere', 'point', 'spot'], + schemaChange: !0, + }, + target: { type: 'selector', if: { type: ['spot', 'directional'] } }, + castShadow: { default: !1, if: { type: ['point', 'spot', 'directional'] } }, + shadowBias: { default: 0, if: { castShadow: !0 } }, + shadowCameraFar: { default: 500, if: { castShadow: !0 } }, + shadowCameraFov: { default: 90, if: { castShadow: !0 } }, + shadowCameraNear: { default: 0.5, if: { castShadow: !0 } }, + shadowCameraTop: { default: 5, if: { castShadow: !0 } }, + shadowCameraRight: { default: 5, if: { castShadow: !0 } }, + shadowCameraBottom: { default: -5, if: { castShadow: !0 } }, + shadowCameraLeft: { default: -5, if: { castShadow: !0 } }, + shadowCameraVisible: { default: !1, if: { castShadow: !0 } }, + shadowMapHeight: { default: 512, if: { castShadow: !0 } }, + shadowMapWidth: { default: 512, if: { castShadow: !0 } }, + shadowRadius: { default: 1, if: { castShadow: !0 } }, + }, + init: function () { + var e = this.el + ;(this.light = null), + (this.defaultTarget = null), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.system.registerLight(e) + }, + update: function (e) { + var t = this.data, + n = i(t, e), + o = this.light, + a = this.rendererSystem, + s = this + if (!o || 'type' in n) this.setLight(this.data), this.updateShadow() + else { + var c = !1 + Object.keys(n).forEach(function (e) { + var n = t[e] + switch (e) { + case 'color': + o.color.set(n), a.applyColorCorrection(o.color) + break + case 'groundColor': + o.groundColor.set(n), a.applyColorCorrection(o.groundColor) + break + case 'angle': + o.angle = l(n) + break + case 'target': + null === n + ? ('spot' !== t.type && 'directional' !== t.type) || + (o.target = s.defaultTarget) + : n.hasLoaded + ? s.onSetTarget(n, o) + : n.addEventListener('loaded', r(s.onSetTarget, s, n, o)) + break + case 'castShadow': + case 'shadowBias': + case 'shadowCameraFar': + case 'shadowCameraFov': + case 'shadowCameraNear': + case 'shadowCameraTop': + case 'shadowCameraRight': + case 'shadowCameraBottom': + case 'shadowCameraLeft': + case 'shadowCameraVisible': + case 'shadowMapHeight': + case 'shadowMapWidth': + case 'shadowRadius': + c || (s.updateShadow(), (c = !0)) + break + default: + o[e] = n + } + }) + } + }, + setLight: function (e) { + var t = this.el, + n = this.getLight(e) + n && + (this.light && t.removeObject3D('light'), + (this.light = n), + (this.light.el = t), + t.setObject3D('light', this.light), + ('spot' !== e.type && 'directional' !== e.type && 'hemisphere' !== e.type) || + t.getObject3D('light').translateY(-1), + 'spot' === e.type && + (t.setObject3D('light-target', this.defaultTarget), + t.getObject3D('light-target').position.set(0, 0, -1))) + }, + updateShadow: function () { + var e = this.el, + t = this.data, + n = this.light + n.castShadow = t.castShadow + var r = e.getObject3D('cameraHelper') + if ( + (t.shadowCameraVisible && !r + ? e.setObject3D('cameraHelper', new s.CameraHelper(n.shadow.camera)) + : !t.shadowCameraVisible && r && e.removeObject3D('cameraHelper'), + !t.castShadow) + ) + return n + ;(n.shadow.bias = t.shadowBias), + (n.shadow.radius = t.shadowRadius), + (n.shadow.mapSize.height = t.shadowMapHeight), + (n.shadow.mapSize.width = t.shadowMapWidth), + (n.shadow.camera.near = t.shadowCameraNear), + (n.shadow.camera.far = t.shadowCameraFar), + n.shadow.camera instanceof s.OrthographicCamera + ? ((n.shadow.camera.top = t.shadowCameraTop), + (n.shadow.camera.right = t.shadowCameraRight), + (n.shadow.camera.bottom = t.shadowCameraBottom), + (n.shadow.camera.left = t.shadowCameraLeft)) + : (n.shadow.camera.fov = t.shadowCameraFov), + n.shadow.camera.updateProjectionMatrix(), + r && r.update() + }, + getLight: function (e) { + var t = e.angle, + n = new s.Color(e.color) + this.rendererSystem.applyColorCorrection(n), (n = n.getHex()) + var i = e.decay, + o = e.distance, + a = new s.Color(e.groundColor) + this.rendererSystem.applyColorCorrection(a), (a = a.getHex()) + var u = e.intensity, + h = e.type, + d = e.target, + p = null + switch (h.toLowerCase()) { + case 'ambient': + return new s.AmbientLight(n, u) + case 'directional': + return ( + (p = new s.DirectionalLight(n, u)), + (this.defaultTarget = p.target), + d && + (d.hasLoaded + ? this.onSetTarget(d, p) + : d.addEventListener('loaded', r(this.onSetTarget, this, d, p))), + p + ) + case 'hemisphere': + return new s.HemisphereLight(n, a, u) + case 'point': + return new s.PointLight(n, u, o, i) + case 'spot': + return ( + (p = new s.SpotLight(n, u, o, l(t), e.penumbra, i)), + (this.defaultTarget = p.target), + d && + (d.hasLoaded + ? this.onSetTarget(d, p) + : d.addEventListener('loaded', r(this.onSetTarget, this, d, p))), + p + ) + default: + c( + '%s is not a valid light type. Choose from ambient, directional, hemisphere, point, spot.', + h, + ) + } + }, + onSetTarget: function (e, t) { + t.target = e.object3D + }, + remove: function () { + var e = this.el + e.removeObject3D('light'), + e.getObject3D('cameraHelper') && e.removeObject3D('cameraHelper') + }, + }) + }, + { + '../core/component': 131, + '../lib/three': 179, + '../utils': 205, + '../utils/bind': 199, + '../utils/debug': 201, + }, + ], + 88: [ + function (e, t, n) { + var r = e('../core/component').registerComponent + function i(e, t) { + return !(!e || !t) && e.x === t.x && e.y === t.y && e.z === t.z + } + t.exports.Component = r('line', { + schema: { + start: { type: 'vec3', default: { x: 0, y: 0, z: 0 } }, + end: { type: 'vec3', default: { x: 0, y: 0, z: 0 } }, + color: { type: 'color', default: '#74BEC1' }, + opacity: { type: 'number', default: 1 }, + visible: { default: !0 }, + }, + multiple: !0, + init: function () { + var e, + t, + n = this.data + ;(this.rendererSystem = this.el.sceneEl.systems.renderer), + (t = this.material = + new THREE.LineBasicMaterial({ + color: n.color, + opacity: n.opacity, + transparent: n.opacity < 1, + visible: n.visible, + })), + (e = this.geometry = new THREE.BufferGeometry()).setAttribute( + 'position', + new THREE.BufferAttribute(new Float32Array(6), 3), + ), + this.rendererSystem.applyColorCorrection(t.color), + (this.line = new THREE.Line(e, t)), + this.el.setObject3D(this.attrName, this.line) + }, + update: function (e) { + var t = this.data, + n = this.geometry, + r = !1, + o = this.material, + a = n.attributes.position.array + i(t.start, e.start) || + ((a[0] = t.start.x), (a[1] = t.start.y), (a[2] = t.start.z), (r = !0)), + i(t.end, e.end) || + ((a[3] = t.end.x), (a[4] = t.end.y), (a[5] = t.end.z), (r = !0)), + r && ((n.attributes.position.needsUpdate = !0), n.computeBoundingSphere()), + o.color.setStyle(t.color), + this.rendererSystem.applyColorCorrection(o.color), + (o.opacity = t.opacity), + (o.transparent = t.opacity < 1), + (o.visible = t.visible) + }, + remove: function () { + this.el.removeObject3D('line', this.line) + }, + }) + }, + { '../core/component': 131 }, + ], + 89: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../core/shader').registerShader, + o = e('../lib/three') + ;(t.exports.Component = r('link', { + schema: { + backgroundColor: { default: 'red', type: 'color' }, + borderColor: { default: 'white', type: 'color' }, + highlighted: { default: !1 }, + highlightedColor: { default: '#24CAFF', type: 'color' }, + href: { default: '' }, + image: { type: 'asset' }, + on: { default: 'click' }, + peekMode: { default: !1 }, + title: { default: '' }, + titleColor: { default: 'white', type: 'color' }, + visualAspectEnabled: { default: !1 }, + }, + init: function () { + ;(this.navigate = this.navigate.bind(this)), + (this.previousQuaternion = void 0), + (this.quaternionClone = new o.Quaternion()), + (this.hiddenEls = []) + }, + update: function (e) { + var t, + n, + r = this.data, + i = this.el + r.visualAspectEnabled && + (this.initVisualAspect(), + (t = r.highlighted ? r.highlightedColor : r.backgroundColor), + (n = r.highlighted ? r.highlightedColor : r.borderColor), + i.setAttribute('material', 'backgroundColor', t), + i.setAttribute('material', 'strokeColor', n), + r.on !== e.on && this.updateEventListener(), + void 0 !== e.peekMode && r.peekMode !== e.peekMode && this.updatePeekMode(), + r.image && + e.image !== r.image && + i.setAttribute( + 'material', + 'pano', + 'string' === typeof r.image ? r.image : r.image.src, + )) + }, + updatePeekMode: function () { + var e = this.el, + t = this.sphereEl + this.data.peekMode + ? (this.hideAll(), + (e.getObject3D('mesh').visible = !1), + t.setAttribute('visible', !0)) + : (this.showAll(), + (e.getObject3D('mesh').visible = !0), + t.setAttribute('visible', !1)) + }, + play: function () { + this.updateEventListener() + }, + pause: function () { + this.removeEventListener() + }, + updateEventListener: function () { + var e = this.el + e.isPlaying && + (this.removeEventListener(), e.addEventListener(this.data.on, this.navigate)) + }, + removeEventListener: function () { + var e = this.data.on + e && this.el.removeEventListener(e, this.navigate) + }, + initVisualAspect: function () { + var e, + t, + n, + r = this.el + this.data.visualAspectEnabled && + !this.visualAspectInitialized && + ((n = this.textEl = this.textEl || document.createElement('a-entity')), + (t = this.sphereEl = this.sphereEl || document.createElement('a-entity')), + (e = this.semiSphereEl = + this.semiSphereEl || document.createElement('a-entity')), + r.setAttribute('geometry', { primitive: 'circle', radius: 1, segments: 64 }), + r.setAttribute('material', { + shader: 'portal', + pano: this.data.image, + side: 'double', + }), + n.setAttribute('text', { + color: this.data.titleColor, + align: 'center', + font: 'kelsonsans', + value: this.data.title || this.data.href, + width: 4, + }), + n.setAttribute('position', '0 1.5 0'), + r.appendChild(n), + e.setAttribute('geometry', { + primitive: 'sphere', + radius: 1, + phiStart: 0, + segmentsWidth: 64, + segmentsHeight: 64, + phiLength: 180, + thetaStart: 0, + thetaLength: 360, + }), + e.setAttribute('material', { + shader: 'portal', + borderEnabled: 0, + pano: this.data.image, + side: 'back', + }), + e.setAttribute('rotation', '0 180 0'), + e.setAttribute('position', '0 0 0'), + e.setAttribute('visible', !1), + r.appendChild(e), + t.setAttribute('geometry', { + primitive: 'sphere', + radius: 10, + segmentsWidth: 64, + segmentsHeight: 64, + }), + t.setAttribute('material', { + shader: 'portal', + borderEnabled: 0, + pano: this.data.image, + side: 'back', + }), + t.setAttribute('visible', !1), + r.appendChild(t), + (this.visualAspectInitialized = !0)) + }, + navigate: function () { + window.location = this.data.href + }, + tick: (function () { + var e = new o.Vector3(), + t = new o.Vector3(), + n = new o.Quaternion(), + r = new o.Vector3() + return function () { + var i, + o, + a = this.el, + s = a.object3D, + l = a.sceneEl.camera, + c = this.textEl + if (this.data.visualAspectEnabled) + if ( + (s.updateMatrixWorld(), + l.parent.updateMatrixWorld(), + l.updateMatrixWorld(), + s.matrix.decompose(t, n, r), + t.setFromMatrixPosition(s.matrixWorld), + e.setFromMatrixPosition(l.matrixWorld), + (o = t.distanceTo(e)) > 20) + ) + this.previousQuaternion || + (this.quaternionClone.copy(n), + (this.previousQuaternion = this.quaternionClone)), + s.lookAt(e) + else { + if (((i = this.calculateCameraPortalOrientation()), o < 0.5)) { + if (!0 === this.semiSphereEl.getAttribute('visible')) return + c.setAttribute('text', 'width', 1.5), + i <= 0 + ? (c.setAttribute('position', '0 0 0.75'), + c.setAttribute('rotation', '0 180 0'), + this.semiSphereEl.setAttribute('rotation', '0 0 0')) + : (c.setAttribute('position', '0 0 -0.75'), + c.setAttribute('rotation', '0 0 0'), + this.semiSphereEl.setAttribute('rotation', '0 180 0')), + (a.getObject3D('mesh').visible = !1), + this.semiSphereEl.setAttribute('visible', !0), + (this.peekCameraPortalOrientation = i) + } else + i <= 0 + ? c.setAttribute('rotation', '0 180 0') + : c.setAttribute('rotation', '0 0 0'), + c.setAttribute('text', 'width', 5), + c.setAttribute('position', '0 1.5 0'), + (a.getObject3D('mesh').visible = !0), + this.semiSphereEl.setAttribute('visible', !1), + (this.peekCameraPortalOrientation = void 0) + this.previousQuaternion && + (s.quaternion.copy(this.previousQuaternion), + (this.previousQuaternion = void 0)) + } + } + })(), + hideAll: function () { + var e = this.el, + t = this.hiddenEls, + n = this + t.length > 0 || + e.sceneEl.object3D.traverse(function (r) { + ;(r && r.el && r.el.hasAttribute('link-controls')) || + (r.el && + r !== e.sceneEl.object3D && + r.el !== e && + r.el !== n.sphereEl && + r.el !== e.sceneEl.cameraEl && + !1 !== r.el.getAttribute('visible') && + r.el !== n.textEl && + r.el !== n.semiSphereEl && + (r.el.setAttribute('visible', !1), t.push(r.el))) + }) + }, + showAll: function () { + this.hiddenEls.forEach(function (e) { + e.setAttribute('visible', !0) + }), + (this.hiddenEls = []) + }, + calculateCameraPortalOrientation: (function () { + var e = new o.Matrix4(), + t = new o.Vector3(), + n = new o.Vector3(0, 0, 1), + r = new o.Vector3(0, 0, 0) + return function () { + var i = this.el, + o = i.sceneEl.camera + return ( + t.set(0, 0, 0), + n.set(0, 0, 1), + r.set(0, 0, 0), + i.object3D.matrixWorld.extractRotation(e), + n.applyMatrix4(e), + i.object3D.updateMatrixWorld(), + i.object3D.localToWorld(r), + o.parent.parent.updateMatrixWorld(), + o.parent.updateMatrixWorld(), + o.updateMatrixWorld(), + o.localToWorld(t), + t.sub(r).normalize(), + n.normalize(), + Math.sign(n.dot(t)) + ) + } + })(), + remove: function () { + this.removeEventListener() + }, + })), + i('portal', { + schema: { + borderEnabled: { default: 1, type: 'int', is: 'uniform' }, + backgroundColor: { default: 'red', type: 'color', is: 'uniform' }, + pano: { type: 'map', is: 'uniform' }, + strokeColor: { default: 'white', type: 'color', is: 'uniform' }, + }, + vertexShader: [ + 'vec3 portalPosition;', + 'varying vec3 vWorldPosition;', + 'varying float vDistanceToCenter;', + 'varying float vDistance;', + 'void main() {', + 'vDistanceToCenter = clamp(length(position - vec3(0.0, 0.0, 0.0)), 0.0, 1.0);', + 'portalPosition = (modelMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;', + 'vDistance = length(portalPosition - cameraPosition);', + 'vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;', + 'gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', + '}', + ].join('\n'), + fragmentShader: [ + '#define RECIPROCAL_PI2 0.15915494', + 'uniform sampler2D pano;', + 'uniform vec3 strokeColor;', + 'uniform vec3 backgroundColor;', + 'uniform float borderEnabled;', + 'varying float vDistanceToCenter;', + 'varying float vDistance;', + 'varying vec3 vWorldPosition;', + 'void main() {', + 'vec3 direction = normalize(vWorldPosition - cameraPosition);', + 'vec2 sampleUV;', + 'float borderThickness = clamp(exp(-vDistance / 50.0), 0.6, 0.95);', + 'sampleUV.y = clamp(direction.y * 0.5 + 0.5, 0.0, 1.0);', + 'sampleUV.x = atan(direction.z, -direction.x) * -RECIPROCAL_PI2 + 0.5;', + 'if (vDistanceToCenter > borderThickness && borderEnabled == 1.0) {', + 'gl_FragColor = vec4(strokeColor, 1.0);', + '} else {', + 'gl_FragColor = mix(texture2D(pano, sampleUV), vec4(backgroundColor, 1.0), clamp(pow((vDistance / 15.0), 2.0), 0.0, 1.0));', + '}', + '}', + ].join('\n'), + }) + }, + { '../core/component': 131, '../core/shader': 141, '../lib/three': 179 }, + ], + 90: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../lib/three'), + o = e('../utils/'), + a = o.bind, + s = Math.PI / 2 + t.exports.Component = r('look-controls', { + dependencies: ['position', 'rotation'], + schema: { + enabled: { default: !0 }, + magicWindowTrackingEnabled: { default: !0 }, + pointerLockEnabled: { default: !1 }, + reverseMouseDrag: { default: !1 }, + reverseTouchDrag: { default: !1 }, + touchEnabled: { default: !0 }, + mouseEnabled: { default: !0 }, + }, + init: function () { + ;(this.deltaYaw = 0), + (this.previousHMDPosition = new i.Vector3()), + (this.hmdQuaternion = new i.Quaternion()), + (this.magicWindowAbsoluteEuler = new i.Euler()), + (this.magicWindowDeltaEuler = new i.Euler()), + (this.position = new i.Vector3()), + (this.magicWindowObject = new i.Object3D()), + (this.rotation = {}), + (this.deltaRotation = {}), + (this.savedPose = null), + (this.pointerLocked = !1), + this.setupMouseControls(), + this.bindMethods(), + (this.previousMouseEvent = {}), + this.setupMagicWindowControls(), + (this.savedPose = { position: new i.Vector3(), rotation: new i.Euler() }), + this.el.sceneEl.is('vr-mode') && this.onEnterVR() + }, + setupMagicWindowControls: function () { + var e, + t = this.data + o.device.isMobile() && + ((e = this.magicWindowControls = + new i.DeviceOrientationControls(this.magicWindowObject)), + 'undefined' !== typeof DeviceOrientationEvent && + DeviceOrientationEvent.requestPermission && + ((e.enabled = !1), + this.el.sceneEl.components['device-orientation-permission-ui'] + .permissionGranted + ? (e.enabled = t.magicWindowTrackingEnabled) + : this.el.sceneEl.addEventListener( + 'deviceorientationpermissiongranted', + function () { + e.enabled = t.magicWindowTrackingEnabled + }, + ))) + }, + update: function (e) { + var t = this.data + t.enabled !== e.enabled && this.updateGrabCursor(t.enabled), + e && + !t.magicWindowTrackingEnabled && + e.magicWindowTrackingEnabled && + (this.magicWindowAbsoluteEuler.set(0, 0, 0), + this.magicWindowDeltaEuler.set(0, 0, 0)), + this.magicWindowControls && + (this.magicWindowControls.enabled = t.magicWindowTrackingEnabled), + e && + !t.pointerLockEnabled !== e.pointerLockEnabled && + (this.removeEventListeners(), + this.addEventListeners(), + this.pointerLocked && this.exitPointerLock()) + }, + tick: function (e) { + this.data.enabled && this.updateOrientation() + }, + play: function () { + this.addEventListeners() + }, + pause: function () { + this.removeEventListeners(), this.pointerLocked && this.exitPointerLock() + }, + remove: function () { + this.removeEventListeners(), this.pointerLocked && this.exitPointerLock() + }, + bindMethods: function () { + ;(this.onMouseDown = a(this.onMouseDown, this)), + (this.onMouseMove = a(this.onMouseMove, this)), + (this.onMouseUp = a(this.onMouseUp, this)), + (this.onTouchStart = a(this.onTouchStart, this)), + (this.onTouchMove = a(this.onTouchMove, this)), + (this.onTouchEnd = a(this.onTouchEnd, this)), + (this.onEnterVR = a(this.onEnterVR, this)), + (this.onExitVR = a(this.onExitVR, this)), + (this.onPointerLockChange = a(this.onPointerLockChange, this)), + (this.onPointerLockError = a(this.onPointerLockError, this)) + }, + setupMouseControls: function () { + ;(this.mouseDown = !1), + (this.pitchObject = new i.Object3D()), + (this.yawObject = new i.Object3D()), + (this.yawObject.position.y = 10), + this.yawObject.add(this.pitchObject) + }, + addEventListeners: function () { + var e = this.el.sceneEl, + t = e.canvas + t + ? (t.addEventListener('mousedown', this.onMouseDown, !1), + window.addEventListener('mousemove', this.onMouseMove, !1), + window.addEventListener('mouseup', this.onMouseUp, !1), + t.addEventListener('touchstart', this.onTouchStart), + window.addEventListener('touchmove', this.onTouchMove), + window.addEventListener('touchend', this.onTouchEnd), + e.addEventListener('enter-vr', this.onEnterVR), + e.addEventListener('exit-vr', this.onExitVR), + this.data.pointerLockEnabled && + (document.addEventListener( + 'pointerlockchange', + this.onPointerLockChange, + !1, + ), + document.addEventListener( + 'mozpointerlockchange', + this.onPointerLockChange, + !1, + ), + document.addEventListener( + 'pointerlockerror', + this.onPointerLockError, + !1, + ))) + : e.addEventListener('render-target-loaded', a(this.addEventListeners, this)) + }, + removeEventListeners: function () { + var e = this.el.sceneEl, + t = e && e.canvas + t && + (t.removeEventListener('mousedown', this.onMouseDown), + window.removeEventListener('mousemove', this.onMouseMove), + window.removeEventListener('mouseup', this.onMouseUp), + t.removeEventListener('touchstart', this.onTouchStart), + window.removeEventListener('touchmove', this.onTouchMove), + window.removeEventListener('touchend', this.onTouchEnd), + e.removeEventListener('enter-vr', this.onEnterVR), + e.removeEventListener('exit-vr', this.onExitVR), + document.removeEventListener( + 'pointerlockchange', + this.onPointerLockChange, + !1, + ), + document.removeEventListener( + 'mozpointerlockchange', + this.onPointerLockChange, + !1, + ), + document.removeEventListener('pointerlockerror', this.onPointerLockError, !1)) + }, + updateOrientation: (function () { + var e = new i.Matrix4() + return function () { + var t, + n = this.el.object3D, + r = this.pitchObject, + i = this.yawObject, + o = this.el.sceneEl + o.is('vr-mode') && o.checkHeadsetConnected() + ? o.hasWebXR && + (t = o.renderer.xr.getCameraPose()) && + ((e.elements = t.transform.matrix), + e.decompose(n.position, n.rotation, n.scale)) + : (this.updateMagicWindowOrientation(), + (n.rotation.x = this.magicWindowDeltaEuler.x + r.rotation.x), + (n.rotation.y = this.magicWindowDeltaEuler.y + i.rotation.y), + (n.rotation.z = this.magicWindowDeltaEuler.z)) + } + })(), + updateMagicWindowOrientation: function () { + var e = this.magicWindowAbsoluteEuler, + t = this.magicWindowDeltaEuler + this.magicWindowControls && + this.magicWindowControls.enabled && + (this.magicWindowControls.update(), + e.setFromQuaternion(this.magicWindowObject.quaternion, 'YXZ'), + this.previousMagicWindowYaw || + 0 === e.y || + (this.previousMagicWindowYaw = e.y), + this.previousMagicWindowYaw && + ((t.x = e.x), + (t.y += e.y - this.previousMagicWindowYaw), + (t.z = e.z), + (this.previousMagicWindowYaw = e.y))) + }, + onMouseMove: function (e) { + var t, + n, + r, + i = this.pitchObject, + o = this.previousMouseEvent, + a = this.yawObject + this.data.enabled && + (this.mouseDown || this.pointerLocked) && + (this.pointerLocked + ? ((n = e.movementX || e.mozMovementX || 0), + (r = e.movementY || e.mozMovementY || 0)) + : ((n = e.screenX - o.screenX), (r = e.screenY - o.screenY)), + (this.previousMouseEvent.screenX = e.screenX), + (this.previousMouseEvent.screenY = e.screenY), + (t = this.data.reverseMouseDrag ? 1 : -1), + (a.rotation.y += 0.002 * n * t), + (i.rotation.x += 0.002 * r * t), + (i.rotation.x = Math.max(-s, Math.min(s, i.rotation.x)))) + }, + onMouseDown: function (e) { + var t = this.el.sceneEl + if ( + this.data.enabled && + this.data.mouseEnabled && + (!t.is('vr-mode') || !t.checkHeadsetConnected()) && + 0 === e.button + ) { + var n = t && t.canvas + ;(this.mouseDown = !0), + (this.previousMouseEvent.screenX = e.screenX), + (this.previousMouseEvent.screenY = e.screenY), + this.showGrabbingCursor(), + this.data.pointerLockEnabled && + !this.pointerLocked && + (n.requestPointerLock + ? n.requestPointerLock() + : n.mozRequestPointerLock && n.mozRequestPointerLock()) + } + }, + showGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = 'grabbing' + }, + hideGrabbingCursor: function () { + this.el.sceneEl.canvas.style.cursor = '' + }, + onMouseUp: function () { + ;(this.mouseDown = !1), this.hideGrabbingCursor() + }, + onTouchStart: function (e) { + 1 === e.touches.length && + this.data.touchEnabled && + !this.el.sceneEl.is('vr-mode') && + ((this.touchStart = { x: e.touches[0].pageX, y: e.touches[0].pageY }), + (this.touchStarted = !0)) + }, + onTouchMove: function (e) { + var t, + n, + r = this.el.sceneEl.canvas, + i = this.yawObject + this.touchStarted && + this.data.touchEnabled && + ((n = + (2 * Math.PI * (e.touches[0].pageX - this.touchStart.x)) / r.clientWidth), + (t = this.data.reverseTouchDrag ? 1 : -1), + (i.rotation.y -= 0.5 * n * t), + (this.touchStart = { x: e.touches[0].pageX, y: e.touches[0].pageY })) + }, + onTouchEnd: function () { + this.touchStarted = !1 + }, + onEnterVR: function () { + var e = this.el.sceneEl + e.checkHeadsetConnected() && + (this.saveCameraPose(), + this.el.object3D.position.set(0, 0, 0), + this.el.object3D.rotation.set(0, 0, 0), + e.hasWebXR && + ((this.el.object3D.matrixAutoUpdate = !1), this.el.object3D.updateMatrix())) + }, + onExitVR: function () { + this.el.sceneEl.checkHeadsetConnected() && + (this.restoreCameraPose(), + this.previousHMDPosition.set(0, 0, 0), + (this.el.object3D.matrixAutoUpdate = !0)) + }, + onPointerLockChange: function () { + this.pointerLocked = !( + !document.pointerLockElement && !document.mozPointerLockElement + ) + }, + onPointerLockError: function () { + this.pointerLocked = !1 + }, + exitPointerLock: function () { + document.exitPointerLock(), (this.pointerLocked = !1) + }, + updateGrabCursor: function (e) { + var t = this.el.sceneEl + function n() { + t.canvas.classList.add('a-grab-cursor') + } + function r() { + t.canvas.classList.remove('a-grab-cursor') + } + t.canvas + ? e + ? n() + : r() + : e + ? t.addEventListener('render-target-loaded', n) + : t.addEventListener('render-target-loaded', r) + }, + saveCameraPose: function () { + var e = this.el + this.savedPose.position.copy(e.object3D.position), + this.savedPose.rotation.copy(e.object3D.rotation), + (this.hasSavedPose = !0) + }, + restoreCameraPose: function () { + var e = this.el, + t = this.savedPose + this.hasSavedPose && + (e.object3D.position.copy(t.position), + e.object3D.rotation.copy(t.rotation), + (this.hasSavedPose = !1)) + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/': 205 }, + ], + 91: [ + function (e, t, n) { + var r = e('../utils/bind'), + i = e('../core/component').registerComponent, + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = 'magicleap-one', + u = 'https://cdn.aframe.io/controllers/magicleap/magicleap-one-controller.glb', + h = { + axes: { touchpad: [0, 1] }, + buttons: ['trigger', 'grip', 'touchpad', 'menu'], + } + t.exports.Component = i('magicleap-controls', { + schema: { + hand: { default: 'none' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + }, + mapping: h, + init: function () { + var e = this + ;(this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.onButtonChanged = r(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.previousButtonValues = {}), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods() + }, + update: function () { + var e = this.data + this.controllerIndex = 'right' === e.hand ? 0 : 'left' === e.hand ? 1 : 2 + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + bindMethods: function () { + ;(this.onModelLoaded = r(this.onModelLoaded, this)), + (this.onControllersUpdate = r(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = r(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = r( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = r(this.onAxisMoved, this)) + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('axismove', this.onAxisMoved), + e.addEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('axismove', this.onAxisMoved), + e.removeEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + var e = this.data + a(this, c, { index: this.controllerIndex, hand: e.hand }) + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + idPrefix: c, + hand: t.hand, + controller: this.controllerIndex, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('gltf-model', u) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onButtonChanged: function (e) { + var t, + n = this.mapping.buttons[e.detail.id] + n && + ('trigger' === n && + ((t = e.detail.state.value), + console.log('analog value of trigger press: ' + t)), + this.el.emit(n + 'changed', e.detail.state)) + }, + onModelLoaded: function (e) { + e.detail.model.scale.set(0.01, 0.01, 0.01) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + updateModel: function (e, t) {}, + setButtonColor: function (e, t) {}, + }) + }, + { '../core/component': 131, '../utils/bind': 199, '../utils/tracked-controls': 214 }, + ], + 92: [ + function (e, t, n) { + var r = e('../utils/'), + i = e('../core/component'), + o = e('../lib/three'), + a = e('../core/shader'), + s = r.debug('components:material:error'), + l = i.registerComponent, + c = a.shaders, + u = a.shaderNames + function h(e) { + switch (e) { + case 'back': + return o.BackSide + case 'double': + return o.DoubleSide + default: + return o.FrontSide + } + } + function d(e) { + switch (e) { + case 'face': + return o.FaceColors + case 'vertex': + return o.VertexColors + default: + return o.NoColors + } + } + function p(e) { + switch (e) { + case 'none': + return o.NoBlending + case 'additive': + return o.AdditiveBlending + case 'subtractive': + return o.SubtractiveBlending + case 'multiply': + return o.MultiplyBlending + default: + return o.NormalBlending + } + } + function f(e, t) { + e.dispose(), t.unregisterMaterial(e) + } + t.exports.Component = l('material', { + schema: { + alphaTest: { default: 0, min: 0, max: 1 }, + depthTest: { default: !0 }, + depthWrite: { default: !0 }, + flatShading: { default: !1 }, + npot: { default: !1 }, + offset: { type: 'vec2', default: { x: 0, y: 0 } }, + opacity: { default: 1, min: 0, max: 1 }, + repeat: { type: 'vec2', default: { x: 1, y: 1 } }, + shader: { default: 'standard', oneOf: u, schemaChange: !0 }, + side: { default: 'front', oneOf: ['front', 'back', 'double'] }, + transparent: { default: !1 }, + vertexColors: { type: 'string', default: 'none', oneOf: ['face', 'vertex'] }, + visible: { default: !0 }, + blending: { + default: 'normal', + oneOf: ['none', 'normal', 'additive', 'subtractive', 'multiply'], + }, + dithering: { default: !0 }, + }, + init: function () { + this.material = null + }, + update: function (e) { + var t = this.data + ;(this.shader && t.shader === e.shader) || this.updateShader(t.shader), + this.shader.update(this.data), + this.updateMaterial(e) + }, + updateSchema: function (e) { + var t, n, r, i + ;(n = e && e.shader), + (t = this.oldData && this.oldData.shader), + (r = c[(i = n || t)] && c[i].schema) || s('Unknown shader schema ' + i), + (t && n === t) || (this.extendSchema(r), this.updateBehavior()) + }, + updateBehavior: function () { + var e, + t, + n = this.el.sceneEl, + r = this.schema, + i = this + function o(e, n) { + var r + for (r in t) t[r] = e + i.shader.update(t) + } + for (e in ((this.tick = void 0), (t = {}), r)) + 'time' === r[e].type && ((this.tick = o), (t[e] = !0)) + n && (this.tick ? n.addBehavior(this) : n.removeBehavior(this)) + }, + updateShader: function (e) { + var t, + n = this.data, + r = c[e] && c[e].Shader + if (!r) throw new Error('Unknown shader ' + e) + ;((t = this.shader = new r()).el = this.el), + t.init(n), + this.setMaterial(t.material), + this.updateSchema(n) + }, + updateMaterial: function (e) { + var t, + n = this.data, + r = this.material + for (t in ((r.alphaTest = n.alphaTest), + (r.depthTest = !1 !== n.depthTest), + (r.depthWrite = !1 !== n.depthWrite), + (r.opacity = n.opacity), + (r.flatShading = n.flatShading), + (r.side = h(n.side)), + (r.transparent = !1 !== n.transparent || n.opacity < 1), + (r.vertexColors = d(n.vertexColors)), + (r.visible = n.visible), + (r.blending = p(n.blending)), + (r.dithering = n.dithering), + e)) + break + !t || + (e.alphaTest === n.alphaTest && + e.side === n.side && + e.vertexColors === n.vertexColors) || + (r.needsUpdate = !0) + }, + remove: function () { + var e = new o.MeshBasicMaterial(), + t = this.material, + n = this.el.getObject3D('mesh') + n && (n.material = e), f(t, this.system) + }, + setMaterial: function (e) { + var t, + n = this.el, + r = this.system + this.material && f(this.material, r), + (this.material = e), + r.registerMaterial(e), + (t = n.getObject3D('mesh')) + ? (t.material = e) + : n.addEventListener('object3dset', function t(r) { + 'mesh' === r.detail.type && + r.target === n && + ((n.getObject3D('mesh').material = e), + n.removeEventListener('object3dset', t)) + }) + }, + }) + }, + { + '../core/component': 131, + '../core/shader': 141, + '../lib/three': 179, + '../utils/': 205, + }, + ], + 93: [ + function (e, t, n) { + var r = e('../utils/debug'), + i = e('../core/component').registerComponent, + o = e('../lib/three'), + a = r('components:obj-model:warn') + t.exports.Component = i('obj-model', { + schema: { mtl: { type: 'model' }, obj: { type: 'model' } }, + init: function () { + var e = this + ;(this.model = null), + (this.objLoader = new o.OBJLoader()), + (this.mtlLoader = new o.MTLLoader(this.objLoader.manager)), + (this.mtlLoader.crossOrigin = ''), + this.el.addEventListener('componentinitialized', function (t) { + e.model && 'material' === t.detail.name && e.applyMaterial() + }) + }, + update: function () { + var e = this.data + e.obj && (this.resetMesh(), this.loadObj(e.obj, e.mtl)) + }, + remove: function () { + this.model && this.resetMesh() + }, + resetMesh: function () { + this.el.removeObject3D('mesh') + }, + loadObj: function (e, t) { + var n = this, + r = this.el, + i = this.mtlLoader, + o = this.objLoader, + s = this.el.sceneEl.systems.renderer, + l = t.substr(0, t.lastIndexOf('/') + 1) + if (t) + return ( + r.hasAttribute('material') && + a('Material component properties are ignored when a .MTL is provided'), + i.setResourcePath(l), + void i.load(t, function (t) { + t.preload(), + o.setMaterials(t), + o.load(e, function (e) { + ;(n.model = e), + n.model.traverse(function (e) { + if (e.isMesh) { + var t = e.material + t.color && s.applyColorCorrection(t.color), + t.map && s.applyColorCorrection(t.map), + t.emissive && s.applyColorCorrection(t.emissive), + t.emissiveMap && s.applyColorCorrection(t.emissiveMap) + } + }), + r.setObject3D('mesh', e), + r.emit('model-loaded', { format: 'obj', model: e }) + }) + }) + ) + o.load(e, function (e) { + ;(n.model = e), + n.applyMaterial(), + r.setObject3D('mesh', e), + r.emit('model-loaded', { format: 'obj', model: e }) + }) + }, + applyMaterial: function () { + var e = this.el.components.material + e && + this.model.traverse(function (t) { + t instanceof o.Mesh && (t.material = e.material) + }) + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/debug': 201 }, + ], + 94: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = e('../utils/').device.isWebXRAvailable, + u = 'https://cdn.aframe.io/controllers/oculus/go/oculus-go-controller.gltf', + h = c ? 'oculus-go' : 'Oculus Go', + d = c + ? { axes: { touchpad: [0, 1] }, buttons: ['trigger', 'none', 'touchpad'] } + : { axes: { trackpad: [0, 1] }, buttons: ['trackpad', 'trigger'] } + t.exports.Component = r('oculus-go-controls', { + schema: { + hand: { default: '' }, + buttonColor: { type: 'color', default: '#FFFFFF' }, + buttonTouchedColor: { type: 'color', default: '#BBBBBB' }, + buttonHighlightColor: { type: 'color', default: '#7A7A7A' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !0 }, + }, + mapping: d, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods() + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + a(this, h, this.data.hand ? { hand: this.data.hand } : {}) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + armModel: t.armModel, + hand: t.hand, + idPrefix: h, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('gltf-model', u) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model + this.data.model && + (((t = this.buttonMeshes = {}).trigger = n.getObjectByName( + 'oculus_go_button_trigger', + )), + (t.trackpad = n.getObjectByName('oculus_go_touchpad')), + (t.touchpad = n.getObjectByName('oculus_go_touchpad'))) + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && this.el.emit(t + 'changed', e.detail.state) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + updateModel: function (e, t) { + this.data.model && this.updateButtonModel(e, t) + }, + updateButtonModel: function (e, t) { + var n = this.buttonMeshes + if (n && n[e]) { + var r, i + switch (t) { + case 'down': + r = this.data.buttonHighlightColor + break + case 'touchstart': + r = this.data.buttonTouchedColor + break + default: + r = this.data.buttonColor + } + ;(i = n[e]).material.color.set(r), + this.rendererSystem.applyColorCorrection(i.material.color) + } + }, + }) + }, + { + '../core/component': 131, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 95: [ + function (e, t, n) { + var r = e('../utils/bind'), + i = e('../core/component').registerComponent, + o = e('../lib/three'), + a = e('../utils/tracked-controls'), + s = a.checkControllerPresentAndSetup, + l = a.emitIfAxesChanged, + c = a.onButtonEvent, + u = e('../utils/').device.isWebXRAvailable, + h = 'oculus-touch', + d = u ? h : 'Oculus Touch', + p = 'https://cdn.aframe.io/controllers/oculus/oculus-touch-controller-', + f = { + left: { + modelUrl: p + 'left.gltf', + rayOrigin: { + origin: { x: 0.008, y: -0.01, z: 0 }, + direction: { x: 0, y: -0.8, z: -1 }, + }, + modelPivotOffset: new o.Vector3(-0.005, 0.003, -0.055), + modelPivotRotation: new o.Euler(0, 0, 0), + }, + right: { + modelUrl: p + 'right.gltf', + rayOrigin: { + origin: { x: -0.008, y: -0.01, z: 0 }, + direction: { x: 0, y: -0.8, z: -1 }, + }, + modelPivotOffset: new o.Vector3(0.005, 0.003, -0.055), + modelPivotRotation: new o.Euler(0, 0, 0), + }, + }, + m = { + left: { + modelUrl: p + 'left.gltf', + rayOrigin: { + origin: { x: 0.002, y: -0.005, z: -0.03 }, + direction: { x: 0, y: -0.8, z: -1 }, + }, + modelPivotOffset: new o.Vector3(-0.005, 0.036, -0.037), + modelPivotRotation: new o.Euler(Math.PI / 4.5, 0, 0), + }, + right: { + modelUrl: p + 'right.gltf', + rayOrigin: { + origin: { x: -0.002, y: -0.005, z: -0.03 }, + direction: { x: 0, y: -0.8, z: -1 }, + }, + modelPivotOffset: new o.Vector3(0.005, 0.036, -0.037), + modelPivotRotation: new o.Euler(Math.PI / 4.5, 0, 0), + }, + }, + v = 'oculus-touch', + g = { + 'oculus-touch': u ? m : f, + 'oculus-touch-v2': { + left: { + modelUrl: p + 'gen2-left.gltf', + rayOrigin: { + origin: { x: -0.01, y: 0, z: -0.02 }, + direction: { x: 0, y: -0.5, z: -1 }, + }, + modelPivotOffset: new o.Vector3(0, 0, 0), + modelPivotRotation: new o.Euler(0, 0, 0), + }, + right: { + modelUrl: p + 'gen2-right.gltf', + rayOrigin: { + origin: { x: 0.01, y: 0, z: -0.02 }, + direction: { x: 0, y: -0.5, z: -1 }, + }, + modelPivotOffset: new o.Vector3(0, 0, 0), + modelPivotRotation: new o.Euler(0, 0, 0), + }, + }, + 'oculus-touch-v3': { + left: { + modelUrl: p + 'v3-left.glb', + rayOrigin: { + origin: { x: 0.015, y: 0.005, z: 0 }, + direction: { x: 0, y: 0, z: -1 }, + }, + modelPivotOffset: new o.Vector3(0.01, -0.01, 0.05), + modelPivotRotation: new o.Euler(Math.PI / 4, 0, 0), + }, + right: { + modelUrl: p + 'v3-right.glb', + rayOrigin: { + origin: { x: -0.015, y: 0.005, z: 0 }, + direction: { x: 0, y: 0, z: -1 }, + }, + modelPivotOffset: new o.Vector3(-0.01, -0.01, 0.05), + modelPivotRotation: new o.Euler(Math.PI / 4, 0, 0), + }, + }, + }, + y = u + ? { + left: { + axes: { thumbstick: [2, 3] }, + buttons: [ + 'trigger', + 'grip', + 'none', + 'thumbstick', + 'xbutton', + 'ybutton', + 'surface', + ], + }, + right: { + axes: { thumbstick: [2, 3] }, + buttons: [ + 'trigger', + 'grip', + 'none', + 'thumbstick', + 'abutton', + 'bbutton', + 'surface', + ], + }, + } + : { + left: { + axes: { thumbstick: [0, 1] }, + buttons: [ + 'thumbstick', + 'trigger', + 'grip', + 'xbutton', + 'ybutton', + 'surface', + ], + }, + right: { + axes: { thumbstick: [0, 1] }, + buttons: [ + 'thumbstick', + 'trigger', + 'grip', + 'abutton', + 'bbutton', + 'surface', + ], + }, + } + t.exports.Component = i('oculus-touch-controls', { + schema: { + hand: { default: 'left' }, + buttonColor: { type: 'color', default: '#999' }, + buttonTouchColor: { type: 'color', default: '#8AB' }, + buttonHighlightColor: { type: 'color', default: '#2DF' }, + model: { default: !0 }, + controllerType: { + default: 'auto', + oneOf: ['auto', 'oculus-touch', 'oculus-touch-v2', 'oculus-touch-v3'], + }, + orientationOffset: { type: 'vec3', default: { x: 43, y: 0, z: 0 } }, + }, + mapping: y, + bindMethods: function () { + ;(this.onModelLoaded = r(this.onModelLoaded, this)), + (this.onControllersUpdate = r(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = r(this.checkIfControllerPresent, this)), + (this.onAxisMoved = r(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = r(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + c(t.detail.id, 'down', e, e.data.hand) + }), + (this.onButtonUp = function (t) { + c(t.detail.id, 'up', e, e.data.hand) + }), + (this.onButtonTouchStart = function (t) { + c(t.detail.id, 'touchstart', e, e.data.hand) + }), + (this.onButtonTouchEnd = function (t) { + c(t.detail.id, 'touchend', e, e.data.hand) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.previousButtonValues = {}), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods() + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('axismove', this.onAxisMoved), + e.addEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('axismove', this.onAxisMoved), + e.removeEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + s(this, d, { hand: this.data.hand }) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + loadModel: function (e) { + var t, + n = this.data + if (n.model) { + if ( + ((this.displayModel = g[n.controllerType] || g[v]), + 'auto' === n.controllerType) + ) { + var r = this.el.sceneEl.systems['tracked-controls-webvr'] + if (r && r.vrDisplay) { + var i = r.vrDisplay.displayName + ;/^Oculus Quest$/.test(i) && (this.displayModel = g['oculus-touch-v2']) + } else + (t = v), + (t = + -1 !== e.profiles.indexOf('oculus-touch-v2') ? 'oculus-touch-v2' : t), + (t = + -1 !== e.profiles.indexOf('oculus-touch-v3') ? 'oculus-touch-v3' : t), + (this.displayModel = g[t]) + } + var o = this.displayModel[n.hand].modelUrl + this.el.setAttribute('gltf-model', o) + } + }, + injectTrackedControls: function (e) { + var t = this.data, + n = h, + r = 'right' === t.hand ? 'Oculus Touch (Right)' : 'Oculus Touch (Left)', + i = u ? n : r + this.el.setAttribute('tracked-controls', { + id: i, + hand: t.hand, + orientationOffset: t.orientationOffset, + handTrackingEnabled: !1, + }), + this.loadModel(e) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onButtonChanged: function (e) { + var t, + n = this.mapping[this.data.hand].buttons[e.detail.id], + r = this.buttonMeshes + n && + (('trigger' !== n && 'grip' !== n) || (t = e.detail.state.value), + r && + ('trigger' === n && + r.trigger && + (r.trigger.rotation.x = + this.originalXRotationTrigger - t * (Math.PI / 26)), + 'grip' === n && + r.grip && + (r.grip.position.x = + this.originalXPositionGrip + + ('left' === this.data.hand ? -1 : 1) * t * 0.004)), + this.el.emit(n + 'changed', e.detail.state)) + }, + onModelLoaded: function (e) { + var t, + n = (this.controllerObject3D = e.detail.model) + this.data.model && + (((t = this.buttonMeshes = {}).grip = n.getObjectByName('buttonHand')), + (this.originalXPositionGrip = t.grip && t.grip.position.x), + (t.thumbstick = n.getObjectByName('stick')), + (t.trigger = n.getObjectByName('buttonTrigger')), + (this.originalXRotationTrigger = t.trigger && t.trigger.rotation.x), + (t.xbutton = n.getObjectByName('buttonX')), + (t.abutton = n.getObjectByName('buttonA')), + (t.ybutton = n.getObjectByName('buttonY')), + (t.bbutton = n.getObjectByName('buttonB')), + n.position.copy(this.displayModel[this.data.hand].modelPivotOffset), + n.rotation.copy(this.displayModel[this.data.hand].modelPivotRotation), + this.el.emit('controllermodelready', { + name: 'oculus-touch-controls', + model: this.data.model, + rayOrigin: this.displayModel[this.data.hand].rayOrigin, + })) + }, + onAxisMoved: function (e) { + l(this, this.mapping[this.data.hand].axes, e) + }, + updateModel: function (e, t) { + this.data.model && this.updateButtonModel(e, t) + }, + updateButtonModel: function (e, t) { + var n, + r = + 'up' === t || 'touchend' === t + ? this.data.buttonColor + : 'touchstart' === t + ? this.data.buttonTouchColor + : this.data.buttonHighlightColor, + i = this.buttonMeshes + this.data.model && + i && + i[e] && + ((n = i[e]).material.color.set(r), + this.rendererSystem.applyColorCorrection(n.material.color)) + }, + }) + }, + { + '../core/component': 131, + '../lib/three': 179, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 96: [ + function (e, t, n) { + var r = e('../core/component').registerComponent + t.exports.Component = r('position', { + schema: { type: 'vec3' }, + update: function () { + var e = this.el.object3D, + t = this.data + e.position.set(t.x, t.y, t.z) + }, + remove: function () { + this.el.object3D.position.set(0, 0, 0) + }, + }) + }, + { '../core/component': 131 }, + ], + 97: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../lib/three'), + o = e('../utils/').debug('components:raycaster:warn'), + a = /^[\w\s-.,[\]#]*$/, + s = { childList: !0, attributes: !0, subtree: !0 }, + l = { + INTERSECT: 'raycaster-intersected', + INTERSECTION: 'raycaster-intersection', + INTERSECT_CLEAR: 'raycaster-intersected-cleared', + INTERSECTION_CLEAR: 'raycaster-intersection-cleared', + } + function c(e, t) { + var n + for (e.length = t.length, n = 0; n < t.length; n++) e[n] = t[n] + } + t.exports.Component = r('raycaster', { + schema: { + autoRefresh: { default: !0 }, + direction: { type: 'vec3', default: { x: 0, y: 0, z: -1 } }, + enabled: { default: !0 }, + far: { default: 1e3 }, + interval: { default: 0 }, + near: { default: 0 }, + objects: { default: '' }, + origin: { type: 'vec3' }, + showLine: { default: !1 }, + lineColor: { default: 'white' }, + lineOpacity: { default: 1 }, + useWorldCoordinates: { default: !1 }, + }, + multiple: !0, + init: function () { + ;(this.clearedIntersectedEls = []), + (this.unitLineEndVec3 = new i.Vector3()), + (this.intersectedEls = []), + (this.intersections = []), + (this.newIntersectedEls = []), + (this.newIntersections = []), + (this.objects = []), + (this.prevCheckTime = void 0), + (this.prevIntersectedEls = []), + (this.rawIntersections = []), + (this.raycaster = new i.Raycaster()), + this.updateOriginDirection(), + (this.setDirty = this.setDirty.bind(this)), + (this.updateLine = this.updateLine.bind(this)), + (this.observer = new MutationObserver(this.setDirty)), + (this.dirty = !0), + (this.lineEndVec3 = new i.Vector3()), + (this.otherLineEndVec3 = new i.Vector3()), + (this.lineData = { end: this.lineEndVec3 }), + (this.getIntersection = this.getIntersection.bind(this)), + (this.intersectedDetail = { + el: this.el, + getIntersection: this.getIntersection, + }), + (this.intersectedClearedDetail = { el: this.el }), + (this.intersectionClearedDetail = { clearedEls: this.clearedIntersectedEls }), + (this.intersectionDetail = {}) + }, + update: function (e) { + var t = this.data, + n = this.el, + r = this.raycaster + ;(r.far = t.far), + (r.near = t.near), + !t.showLine || + (t.far === e.far && + t.origin === e.origin && + t.direction === e.direction && + e.showLine) || + (this.unitLineEndVec3.copy(t.origin).add(t.direction).normalize(), + this.drawLine()), + !t.showLine && e.showLine && n.removeAttribute('line'), + t.objects === e.objects || + a.test(t.objects) || + o( + '[raycaster] Selector "' + + t.objects + + '" may not update automatically with DOM changes.', + ), + t.objects || + o( + '[raycaster] For performance, please define raycaster.objects when using raycaster or cursor components to whitelist which entities to intersect with. e.g., raycaster="objects: [data-raycastable]".', + ), + t.autoRefresh !== e.autoRefresh && + n.isPlaying && + (t.autoRefresh ? this.addEventListeners() : this.removeEventListeners()), + e.enabled && !t.enabled && this.clearAllIntersections(), + this.setDirty() + }, + play: function () { + this.addEventListeners() + }, + pause: function () { + this.removeEventListeners() + }, + remove: function () { + this.data.showLine && this.el.removeAttribute('line'), + this.clearAllIntersections() + }, + addEventListeners: function () { + this.data.autoRefresh && + (this.observer.observe(this.el.sceneEl, s), + this.el.sceneEl.addEventListener('object3dset', this.setDirty), + this.el.sceneEl.addEventListener('object3dremove', this.setDirty)) + }, + removeEventListeners: function () { + this.observer.disconnect(), + this.el.sceneEl.removeEventListener('object3dset', this.setDirty), + this.el.sceneEl.removeEventListener('object3dremove', this.setDirty) + }, + setDirty: function () { + this.dirty = !0 + }, + refreshObjects: function () { + var e, + t = this.data + ;(e = t.objects + ? this.el.sceneEl.querySelectorAll(t.objects) + : this.el.sceneEl.querySelectorAll('*')), + (this.objects = this.flattenObject3DMaps(e)), + (this.dirty = !1) + }, + tock: function (e) { + var t = this.data, + n = this.prevCheckTime + t.enabled && + ((n && e - n < t.interval) || + ((this.prevCheckTime = e), this.checkIntersections())) + }, + checkIntersections: function () { + var e, + t, + n = this.clearedIntersectedEls, + r = this.el, + i = this.data, + o = this.intersectedEls, + a = this.intersections, + s = this.newIntersectedEls, + u = this.newIntersections, + h = this.prevIntersectedEls, + d = this.rawIntersections + for ( + this.dirty && this.refreshObjects(), + c(this.prevIntersectedEls, this.intersectedEls), + this.updateOriginDirection(), + d.length = 0, + this.raycaster.intersectObjects(this.objects, !0, d), + a.length = 0, + o.length = 0, + e = 0; + e < d.length; + e++ + ) + (t = d[e]), + (i.showLine && t.object === r.getObject3D('line')) || + (t.object.el && (a.push(t), o.push(t.object.el))) + for (u.length = 0, s.length = 0, e = 0; e < a.length; e++) + -1 === h.indexOf(a[e].object.el) && (u.push(a[e]), s.push(a[e].object.el)) + for (n.length = 0, e = 0; e < h.length; e++) + -1 === o.indexOf(h[e]) && + (h[e].emit(l.INTERSECT_CLEAR, this.intersectedClearedDetail), n.push(h[e])) + for ( + n.length && r.emit(l.INTERSECTION_CLEAR, this.intersectionClearedDetail), + e = 0; + e < s.length; + e++ + ) + s[e].emit(l.INTERSECT, this.intersectedDetail) + u.length && + ((this.intersectionDetail.els = s), + (this.intersectionDetail.intersections = u), + r.emit(l.INTERSECTION, this.intersectionDetail)), + i.showLine && setTimeout(this.updateLine) + }, + updateLine: function () { + var e, + t = this.el, + n = this.intersections + n.length && (e = n[0].object.el === t && n[1] ? n[1].distance : n[0].distance), + this.drawLine(e) + }, + getIntersection: function (e) { + var t, n + for (t = 0; t < this.intersections.length; t++) + if ((n = this.intersections[t]).object.el === e) return n + return null + }, + updateOriginDirection: (function () { + var e = new i.Vector3(), + t = new i.Vector3() + return function () { + var n = this.el, + r = this.data + r.useWorldCoordinates + ? this.raycaster.set(r.origin, r.direction) + : (n.object3D.updateMatrixWorld(), + t.setFromMatrixPosition(n.object3D.matrixWorld), + (0 === r.origin.x && 0 === r.origin.y && 0 === r.origin.z) || + (t = n.object3D.localToWorld(t.copy(r.origin))), + e + .copy(r.direction) + .transformDirection(n.object3D.matrixWorld) + .normalize(), + this.raycaster.set(t, e)) + } + })(), + drawLine: function (e) { + var t, + n = this.data, + r = this.el + ;(t = + this.lineData.end === this.lineEndVec3 + ? this.otherLineEndVec3 + : this.lineEndVec3), + void 0 === e && (e = n.far === 1 / 0 ? 1e3 : n.far), + (this.lineData.start = n.origin), + (this.lineData.end = t.copy(this.unitLineEndVec3).multiplyScalar(e)), + (this.lineData.color = n.lineColor), + (this.lineData.opacity = n.lineOpacity), + r.setAttribute('line', this.lineData) + }, + flattenObject3DMaps: function (e) { + var t, + n, + r = this.objects + for (r.length = 0, n = 0; n < e.length; n++) + if (e[n].isEntity && e[n].object3D) + for (t in e[n].object3DMap) r.push(e[n].getObject3D(t)) + return r + }, + clearAllIntersections: function () { + var e + for (e = 0; e < this.intersectedEls.length; e++) + this.intersectedEls[e].emit(l.INTERSECT_CLEAR, this.intersectedClearedDetail) + c(this.clearedIntersectedEls, this.intersectedEls), + (this.intersectedEls.length = 0), + (this.intersections.length = 0), + this.el.emit(l.INTERSECTION_CLEAR, this.intersectionClearedDetail) + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/': 205 }, + ], + 98: [ + function (e, t, n) { + var r = e('../lib/three').Math.degToRad, + i = e('../core/component').registerComponent + t.exports.Component = i('rotation', { + schema: { type: 'vec3' }, + update: function () { + var e = this.data, + t = this.el.object3D + t.rotation.set(r(e.x), r(e.y), r(e.z)), (t.rotation.order = 'YXZ') + }, + remove: function () { + this.el.object3D.rotation.set(0, 0, 0) + }, + }) + }, + { '../core/component': 131, '../lib/three': 179 }, + ], + 99: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = 1e-5 + t.exports.Component = r('scale', { + schema: { type: 'vec3', default: { x: 1, y: 1, z: 1 } }, + update: function () { + var e = this.data, + t = this.el.object3D, + n = 0 === e.x ? i : e.x, + r = 0 === e.y ? i : e.y, + o = 0 === e.z ? i : e.z + t.scale.set(n, r, o) + }, + remove: function () { + this.el.object3D.scale.set(1, 1, 1) + }, + }) + }, + { '../core/component': 131 }, + ], + 100: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../core/component').components + t.exports.Component = r('background', { + schema: { + color: { type: 'color', default: 'black' }, + transparent: { default: !1 }, + }, + update: function () { + var e = this.data, + t = this.el.object3D + e.transparent + ? (t.background = null) + : (t.background = new THREE.Color(e.color)) + }, + remove: function () { + var e = this.data, + t = this.el.object3D + e.transparent + ? (t.background = null) + : (t.background = i[this.name].schema.color.default) + }, + }) + }, + { '../../core/component': 131 }, + ], + 101: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent + t.exports.Component = r('debug', { schema: { default: !0 } }) + }, + { '../../core/component': 131 }, + ], + 102: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../utils/'), + o = i.bind, + a = e('../../constants/'), + s = 'a-modal', + l = 'a-dialog', + c = 'a-dialog-text', + u = 'a-dialog-text-container', + h = 'a-dialog-buttons-container', + d = 'a-dialog-button', + p = 'a-dialog-allow-button', + f = 'a-dialog-deny-button', + m = 'a-dialog-ok-button' + function v(e, t, n, r, i) { + var o, s, l + return ( + (o = document.createElement('div')).classList.add(h), + (s = document.createElement('button')).classList.add(d, f), + s.setAttribute(a.AFRAME_INJECTED, ''), + (s.innerHTML = e), + o.appendChild(s), + (l = document.createElement('button')).classList.add(d, p), + l.setAttribute(a.AFRAME_INJECTED, ''), + (l.innerHTML = t), + o.appendChild(l), + l.addEventListener('click', function (e) { + e.stopPropagation(), r() + }), + s.addEventListener('click', function (e) { + e.stopPropagation(), i() + }), + y(n, o) + ) + } + function g(e, t, n) { + var r, i + return ( + (r = document.createElement('div')).classList.add(h), + (i = document.createElement('button')).classList.add(d, m), + i.setAttribute(a.AFRAME_INJECTED, ''), + (i.innerHTML = e), + r.appendChild(i), + i.addEventListener('click', function (e) { + e.stopPropagation(), n() + }), + y(t, r) + ) + } + function y(e, t) { + var n, r, i, o + return ( + (n = document.createElement('div')).classList.add(s), + n.setAttribute(a.AFRAME_INJECTED, ''), + ((r = document.createElement('div')).className = l), + r.setAttribute(a.AFRAME_INJECTED, ''), + n.appendChild(r), + (i = document.createElement('div')).classList.add(u), + r.appendChild(i), + (o = document.createElement('div')).classList.add(c), + (o.innerHTML = e), + i.appendChild(o), + r.appendChild(t), + n + ) + } + t.exports.Component = r('device-orientation-permission-ui', { + schema: { + enabled: { default: !0 }, + deviceMotionMessage: { + default: + 'This immersive website requires access to your device motion sensors.', + }, + mobileDesktopMessage: { + default: + 'Set your browser to request the mobile version of the site and reload the page to enjoy immersive mode.', + }, + httpsMessage: { + default: + 'Access this site over HTTPS to enter VR mode and grant access to the device sensors.', + }, + denyButtonText: { default: 'Deny' }, + allowButtonText: { default: 'Allow' }, + cancelButtonText: { default: 'Cancel' }, + }, + init: function () { + var e = this + this.data.enabled && + ('localhost' !== location.hostname && + '127.0.0.1' !== location.hostname && + 'http:' === location.protocol && + this.showHTTPAlert(), + i.device.isMobileDeviceRequestingDesktopSite() + ? this.showMobileDesktopModeAlert() + : 'undefined' !== typeof DeviceOrientationEvent && + DeviceOrientationEvent.requestPermission + ? ((this.onDeviceMotionDialogAllowClicked = o( + this.onDeviceMotionDialogAllowClicked, + this, + )), + (this.onDeviceMotionDialogDenyClicked = o( + this.onDeviceMotionDialogDenyClicked, + this, + )), + DeviceOrientationEvent.requestPermission() + .catch(function () { + ;(e.devicePermissionDialogEl = v( + e.data.denyButtonText, + e.data.allowButtonText, + e.data.deviceMotionMessage, + e.onDeviceMotionDialogAllowClicked, + e.onDeviceMotionDialogDenyClicked, + )), + e.el.appendChild(e.devicePermissionDialogEl) + }) + .then(function () { + e.el.emit('deviceorientationpermissiongranted'), + (e.permissionGranted = !0) + })) + : (this.permissionGranted = !0)) + }, + remove: function () { + this.devicePermissionDialogEl && + this.el.removeChild(this.devicePermissionDialogEl) + }, + onDeviceMotionDialogDenyClicked: function () { + this.remove() + }, + showMobileDesktopModeAlert: function () { + var e = this, + t = g(e.data.cancelButtonText, e.data.mobileDesktopMessage, function () { + e.el.removeChild(t) + }) + this.el.appendChild(t) + }, + showHTTPAlert: function () { + var e = this, + t = g(e.data.cancelButtonText, e.data.httpsMessage, function () { + e.el.removeChild(t) + }) + this.el.appendChild(t) + }, + onDeviceMotionDialogAllowClicked: function () { + var e = this + this.el.emit('deviceorientationpermissionrequested'), + DeviceOrientationEvent.requestPermission() + .then(function (t) { + 'granted' === t + ? (e.el.emit('deviceorientationpermissiongranted'), + (e.permissionGranted = !0)) + : e.el.emit('deviceorientationpermissionrejected'), + e.remove() + }) + .catch(console.error) + }, + }) + }, + { '../../constants/': 123, '../../core/component': 131, '../../utils/': 205 }, + ], + 103: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent + t.exports.Component = r('embedded', { + dependencies: ['vr-mode-ui'], + schema: { default: !0 }, + update: function () { + var e = this.el, + t = e.querySelector('.a-enter-vr') + !0 === this.data + ? (t && t.classList.add('embedded'), e.removeFullScreenStyles()) + : (t && t.classList.remove('embedded'), e.addFullScreenStyles()) + }, + }) + }, + { '../../core/component': 131 }, + ], + 104: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../lib/three'), + o = e('../../utils/debug')('components:fog:warn') + function a(e) { + var t + return ( + ((t = + 'exponential' === e.type + ? new i.FogExp2(e.color, e.density) + : new i.Fog(e.color, e.near, e.far)).name = e.type), + t + ) + } + t.exports.Component = r('fog', { + schema: { + color: { type: 'color', default: '#000' }, + density: { default: 25e-5 }, + far: { default: 1e3, min: 0 }, + near: { default: 1, min: 0 }, + type: { default: 'linear', oneOf: ['linear', 'exponential'] }, + }, + update: function () { + var e = this.data, + t = this.el, + n = this.el.object3D.fog + if (t.isScene) + return n && e.type === n.name + ? void Object.keys(this.schema).forEach(function (t) { + var r = e[t] + 'color' === t && (r = new i.Color(r)), (n[t] = r) + }) + : ((t.object3D.fog = a(e)), void t.systems.material.updateMaterials()) + o('Fog component can only be applied to <a-scene>') + }, + remove: function () { + var e = this.el.object3D.fog + e && ((e.far = 0), (e.near = 0.1)) + }, + }) + }, + { '../../core/component': 131, '../../lib/three': 179, '../../utils/debug': 201 }, + ], + 105: [ + function (e, t, n) { + ;(function (n) { + var r = e('../../constants').AFRAME_INJECTED, + i = e('../../../package'), + o = e('../../core/component').registerComponent, + a = e('../../utils/') + function s(e) { + var t = e.split('.') + return (t[2] = 'x'), t.join('.') + } + var l = 'https://aframe.io/aframe-inspector/dist/aframe-inspector.js', + c = + 'https://unpkg.com/aframe-inspector@' + + s(i.version) + + '/dist/aframe-inspector.min.js', + u = 'dev' === n.env.INSPECTOR_VERSION ? l : c, + h = 'Loading Inspector', + d = 'Error loading Inspector' + t.exports.Component = o('inspector', { + schema: { url: { default: u } }, + init: function () { + ;(this.firstPlay = !0), + (this.onKeydown = this.onKeydown.bind(this)), + (this.onMessage = this.onMessage.bind(this)), + this.initOverlay(), + window.addEventListener('keydown', this.onKeydown), + window.addEventListener('message', this.onMessage) + }, + play: function () { + var e + this.firstPlay && + 'false' !== (e = a.getUrlParameter('inspector')) && + e && + (this.openInspector(), (this.firstPlay = !1)) + }, + initOverlay: function () { + var e = '<span class="dots"><span>.</span><span>.</span><span>.</span></span>' + ;(this.loadingMessageEl = document.createElement('div')), + this.loadingMessageEl.classList.add('a-inspector-loader'), + (this.loadingMessageEl.innerHTML = h + e) + }, + remove: function () { + this.removeEventListeners() + }, + onKeydown: function (e) { + 73 === e.keyCode && + ((e.ctrlKey && e.altKey) || e.getModifierState('AltGraph')) && + this.openInspector() + }, + showLoader: function () { + document.body.appendChild(this.loadingMessageEl) + }, + hideLoader: function () { + document.body.removeChild(this.loadingMessageEl) + }, + onMessage: function (e) { + 'INJECT_AFRAME_INSPECTOR' === e.data && this.openInspector() + }, + openInspector: function (e) { + var t, + n = this + AFRAME.INSPECTOR || AFRAME.inspectorInjected + ? AFRAME.INSPECTOR.open(e) + : (this.showLoader(), + ((t = document.createElement('script')).src = this.data.url), + t.setAttribute('data-name', 'aframe-inspector'), + t.setAttribute(r, ''), + (t.onload = function () { + AFRAME.INSPECTOR.open(e), n.hideLoader(), n.removeEventListeners() + }), + (t.onerror = function () { + n.loadingMessageEl.innerHTML = d + }), + document.head.appendChild(t), + (AFRAME.inspectorInjected = !0)) + }, + removeEventListeners: function () { + window.removeEventListener('keydown', this.onKeydown), + window.removeEventListener('message', this.onMessage) + }, + }) + }.call(this, e('_process'))) + }, + { + '../../../package': 73, + '../../constants': 123, + '../../core/component': 131, + '../../utils/': 205, + _process: 49, + }, + ], + 106: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../utils/').shouldCaptureKeyEvent + t.exports.Component = r('keyboard-shortcuts', { + schema: { enterVR: { default: !0 }, exitVR: { default: !0 } }, + init: function () { + this.onKeyup = this.onKeyup.bind(this) + }, + update: function (e) { + var t = this.data + this.enterVREnabled = t.enterVR + }, + play: function () { + window.addEventListener('keyup', this.onKeyup, !1) + }, + pause: function () { + window.removeEventListener('keyup', this.onKeyup) + }, + onKeyup: function (e) { + var t = this.el + i(e) && + (this.enterVREnabled && 70 === e.keyCode && t.enterVR(), + this.enterVREnabled && 27 === e.keyCode && t.exitVR()) + }, + }) + }, + { '../../core/component': 131, '../../utils/': 205 }, + ], + 107: [ + function (e, t, n) { + var r = e('../../utils/debug'), + i = e('../../core/component').registerComponent, + o = r('components:pool:warn') + t.exports.Component = i('pool', { + schema: { + container: { default: '' }, + mixin: { default: '' }, + size: { default: 0 }, + dynamic: { default: !1 }, + }, + multiple: !0, + initPool: function () { + var e + for ( + this.availableEls = [], + this.usedEls = [], + this.data.mixin || o('No mixin provided for pool component.'), + this.data.container && + ((this.container = document.querySelector(this.data.container)), + this.container || o('Container ' + this.data.container + ' not found.')), + this.container = this.container || this.el, + e = 0; + e < this.data.size; + ++e + ) + this.createEntity() + }, + update: function (e) { + var t = this.data + ;(e.mixin === t.mixin && e.size === t.size) || this.initPool() + }, + createEntity: function () { + var e + ;((e = document.createElement('a-entity')).play = this.wrapPlay(e.play)), + e.setAttribute('mixin', this.data.mixin), + (e.object3D.visible = !1), + e.pause(), + this.container.appendChild(e), + this.availableEls.push(e) + }, + wrapPlay: function (e) { + var t = this.usedEls + return function () { + ;-1 !== t.indexOf(this) && e.call(this) + } + }, + requestEntity: function () { + var e + if (0 === this.availableEls.length) { + if (!1 === this.data.dynamic) + return void o('Requested entity from empty pool: ' + this.attrName) + o( + 'Requested entity from empty pool. This pool is dynamic and will resize automatically. You might want to increase its initial size: ' + + this.attrName, + ), + this.createEntity() + } + return ( + (e = this.availableEls.shift()), + this.usedEls.push(e), + (e.object3D.visible = !0), + e + ) + }, + returnEntity: function (e) { + var t = this.usedEls.indexOf(e) + if (-1 !== t) + return ( + this.usedEls.splice(t, 1), + this.availableEls.push(e), + (e.object3D.visible = !1), + e.pause(), + e + ) + o('The returned entity was not previously pooled from ' + this.attrName) + }, + }) + }, + { '../../core/component': 131, '../../utils/debug': 201 }, + ], + 108: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../lib/three'), + o = [ + 'attribute vec3 position;', + 'attribute vec2 uv;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 modelViewMatrix;', + 'varying vec2 vUv;', + 'void main() {', + ' vUv = vec2( 1.- uv.x, uv.y );', + ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', + '}', + ].join('\n'), + a = [ + 'precision mediump float;', + 'uniform samplerCube map;', + 'varying vec2 vUv;', + '#define M_PI 3.141592653589793238462643383279', + 'void main() {', + ' vec2 uv = vUv;', + ' float longitude = uv.x * 2. * M_PI - M_PI + M_PI / 2.;', + ' float latitude = uv.y * M_PI;', + ' vec3 dir = vec3(', + ' - sin( longitude ) * sin( latitude ),', + ' cos( latitude ),', + ' - cos( longitude ) * sin( latitude )', + ' );', + ' normalize( dir );', + ' gl_FragColor = vec4( textureCube( map, dir ).rgb, 1.0 );', + '}', + ].join('\n') + t.exports.Component = r('screenshot', { + schema: { + width: { default: 4096 }, + height: { default: 2048 }, + camera: { type: 'selector' }, + }, + init: function () { + var e = this.el, + t = this + function n() { + var n = e.renderer.getContext() + n && + ((t.cubeMapSize = n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE)), + (t.material = new i.RawShaderMaterial({ + uniforms: { map: { type: 't', value: null } }, + vertexShader: o, + fragmentShader: a, + side: i.DoubleSide, + })), + (t.quad = new i.Mesh(new i.PlaneBufferGeometry(1, 1), t.material)), + (t.quad.visible = !1), + (t.camera = new i.OrthographicCamera(-0.5, 0.5, 0.5, -0.5, -1e4, 1e4)), + (t.canvas = document.createElement('canvas')), + (t.ctx = t.canvas.getContext('2d')), + e.object3D.add(t.quad), + (t.onKeyDown = t.onKeyDown.bind(t))) + } + e.renderer ? n() : e.addEventListener('render-target-loaded', n) + }, + getRenderTarget: function (e, t) { + return new i.WebGLRenderTarget(e, t, { + minFilter: i.LinearFilter, + magFilter: i.LinearFilter, + wrapS: i.ClampToEdgeWrapping, + wrapT: i.ClampToEdgeWrapping, + format: i.RGBAFormat, + type: i.UnsignedByteType, + }) + }, + resize: function (e, t) { + this.quad.scale.set(e, t, 1), + (this.camera.left = (-1 * e) / 2), + (this.camera.right = e / 2), + (this.camera.top = t / 2), + (this.camera.bottom = (-1 * t) / 2), + this.camera.updateProjectionMatrix(), + (this.canvas.width = e), + (this.canvas.height = t) + }, + play: function () { + window.addEventListener('keydown', this.onKeyDown) + }, + onKeyDown: function (e) { + var t = 83 === e.keyCode && e.ctrlKey && e.altKey + if (this.data && t) { + var n = e.shiftKey ? 'equirectangular' : 'perspective' + this.capture(n) + } + }, + setCapture: function (e) { + var t, + n, + r, + o, + a = this.el + return ( + 'perspective' === e + ? ((this.quad.visible = !1), + (n = + (this.data.camera && this.data.camera.components.camera.camera) || + a.camera), + (t = { width: this.data.width, height: this.data.height })) + : ((n = this.camera), + (o = new i.WebGLCubeRenderTarget(Math.min(this.cubeMapSize, 2048), { + format: i.RGBFormat, + generateMipmaps: !0, + minFilter: i.LinearMipmapLinearFilter, + encoding: i.sRGBEncoding, + })), + (r = new i.CubeCamera(a.camera.near, a.camera.far, o)), + a.camera.getWorldPosition(r.position), + a.camera.getWorldQuaternion(r.quaternion), + r.update(a.renderer, a.object3D), + (this.quad.material.uniforms.map.value = r.renderTarget.texture), + (t = { width: this.data.width, height: this.data.height }), + (this.quad.visible = !0)), + { camera: n, size: t, projection: e } + ) + }, + capture: function (e) { + var t, + n = this.el.renderer.xr.enabled, + r = this.el.renderer + ;(r.xr.enabled = !1), + (t = this.setCapture(e)), + this.renderCapture(t.camera, t.size, t.projection), + this.saveCapture(), + (r.xr.enabled = n) + }, + getCanvas: function (e) { + var t = this.el.renderer.xr.enabled, + n = this.el.renderer, + r = this.setCapture(e) + return ( + (n.xr.enabled = !1), + this.renderCapture(r.camera, r.size, r.projection), + (n.xr.enabled = t), + this.canvas + ) + }, + renderCapture: function (e, t, n) { + var r, + i, + o, + a = this.el.renderer.autoClear, + s = this.el, + l = s.renderer + ;(i = this.getRenderTarget(t.width, t.height)), + (o = new Uint8Array(4 * t.width * t.height)), + this.resize(t.width, t.height), + (l.autoClear = !0), + l.clear(), + l.setRenderTarget(i), + l.render(s.object3D, e), + (l.autoClear = a), + l.readRenderTargetPixels(i, 0, 0, t.width, t.height, o), + l.setRenderTarget(null), + 'perspective' === n && (o = this.flipPixelsVertically(o, t.width, t.height)), + (r = new ImageData(new Uint8ClampedArray(o), t.width, t.height)), + (this.quad.visible = !1), + this.ctx.putImageData(r, 0, 0) + }, + flipPixelsVertically: function (e, t, n) { + for (var r = e.slice(0), i = 0; i < t; ++i) + for (var o = 0; o < n; ++o) + (r[4 * i + o * t * 4] = e[4 * i + (n - o) * t * 4]), + (r[4 * i + 1 + o * t * 4] = e[4 * i + 1 + (n - o) * t * 4]), + (r[4 * i + 2 + o * t * 4] = e[4 * i + 2 + (n - o) * t * 4]), + (r[4 * i + 3 + o * t * 4] = e[4 * i + 3 + (n - o) * t * 4]) + return r + }, + saveCapture: function () { + this.canvas.toBlob(function (e) { + var t = + 'screenshot-' + document.title.toLowerCase() + '-' + Date.now() + '.png', + n = document.createElement('a'), + r = URL.createObjectURL(e) + ;(n.href = r), + n.setAttribute('download', t), + (n.innerHTML = 'downloading...'), + (n.style.display = 'none'), + document.body.appendChild(n), + setTimeout(function () { + n.click(), document.body.removeChild(n) + }, 1) + }, 'image/png') + }, + }) + }, + { '../../core/component': 131, '../../lib/three': 179 }, + ], + 109: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../../vendor/rStats'), + o = e('../../utils') + e('../../../vendor/rStats.extras'), e('../../lib/rStatsAframe') + var a = window.aframeStats, + s = o.bind, + l = 'a-hidden', + c = window.threeStats + function u(e) { + var t = new c(e.renderer), + n = new a(e), + r = e.isMobile ? [] : [t, n] + return new i({ + css: [], + values: { fps: { caption: 'fps', below: 30 } }, + groups: [{ caption: 'Framerate', values: ['fps', 'raf'] }], + plugins: r, + }) + } + t.exports.Component = r('stats', { + schema: { default: !0 }, + init: function () { + var e = this.el + 'false' !== o.getUrlParameter('stats') && + ((this.stats = u(e)), + (this.statsEl = document.querySelector('.rs-base')), + (this.hideBound = s(this.hide, this)), + (this.showBound = s(this.show, this)), + e.addEventListener('enter-vr', this.hideBound), + e.addEventListener('exit-vr', this.showBound)) + }, + update: function () { + if (this.stats) return this.data ? this.show() : this.hide() + }, + remove: function () { + this.el.removeEventListener('enter-vr', this.hideBound), + this.el.removeEventListener('exit-vr', this.showBound), + this.statsEl && this.statsEl.parentNode.removeChild(this.statsEl) + }, + tick: function () { + var e = this.stats + e && (e('rAF').tick(), e('FPS').frame(), e().update()) + }, + hide: function () { + this.statsEl.classList.add(l) + }, + show: function () { + this.statsEl.classList.remove(l) + }, + }) + }, + { + '../../../vendor/rStats': 217, + '../../../vendor/rStats.extras': 216, + '../../core/component': 131, + '../../lib/rStatsAframe': 178, + '../../utils': 205, + }, + ], + 110: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../constants/'), + o = e('../../utils/'), + a = o.bind, + s = 'a-enter-vr', + l = 'a-enter-ar', + c = 'a-enter-vr-button', + u = 'a-enter-ar-button', + h = 'a-hidden', + d = 'a-orientation-modal' + function p(e) { + var t, n + return ( + (n = document.createElement('div')).classList.add(s), + n.setAttribute(i.AFRAME_INJECTED, ''), + ((t = document.createElement('button')).className = c), + t.setAttribute( + 'title', + 'Enter VR mode with a headset or fullscreen mode on a desktop. Visit https://webvr.rocks or https://webvr.info for more information.', + ), + t.setAttribute(i.AFRAME_INJECTED, ''), + o.device.isMobile() && v(t), + n.appendChild(t), + t.addEventListener('click', function (t) { + e(), t.stopPropagation() + }), + n + ) + } + function f(e) { + var t, n + return ( + (n = document.createElement('div')).classList.add(l), + n.setAttribute(i.AFRAME_INJECTED, ''), + ((t = document.createElement('button')).className = u), + t.setAttribute( + 'title', + 'Enter AR mode with a headset or handheld device. Visit https://webvr.rocks or https://webvr.info for more information.', + ), + t.setAttribute(i.AFRAME_INJECTED, ''), + o.device.isMobile() && v(t), + n.appendChild(t), + t.addEventListener('click', function (t) { + e(), t.stopPropagation() + }), + n + ) + } + function m(e) { + var t = document.createElement('div') + ;(t.className = d), t.classList.add(h), t.setAttribute(i.AFRAME_INJECTED, '') + var n = document.createElement('button') + return ( + n.setAttribute(i.AFRAME_INJECTED, ''), + (n.innerHTML = 'Exit VR'), + n.addEventListener('click', e), + t.appendChild(n), + t + ) + } + function v(e) { + e.addEventListener('touchstart', function () { + e.classList.remove('resethover') + }), + e.addEventListener('touchend', function () { + e.classList.add('resethover') + }) + } + t.exports.Component = r('vr-mode-ui', { + dependencies: ['canvas'], + schema: { + enabled: { default: !0 }, + enterVRButton: { default: '' }, + enterARButton: { default: '' }, + }, + init: function () { + var e = this, + t = this.el + 'false' !== o.getUrlParameter('ui') && + ((this.insideLoader = !1), + (this.enterVREl = null), + (this.enterAREl = null), + (this.orientationModalEl = null), + this.bindMethods(), + t.addEventListener('enter-vr', this.updateEnterInterfaces), + t.addEventListener('exit-vr', this.updateEnterInterfaces), + t.addEventListener('update-vr-devices', this.updateEnterInterfaces), + window.addEventListener('message', function (t) { + 'loaderReady' === t.data.type && ((e.insideLoader = !0), e.remove()) + }), + window.addEventListener( + 'orientationchange', + this.toggleOrientationModalIfNeeded, + )) + }, + bindMethods: function () { + ;(this.onEnterVRButtonClick = a(this.onEnterVRButtonClick, this)), + (this.onEnterARButtonClick = a(this.onEnterARButtonClick, this)), + (this.onModalClick = a(this.onModalClick, this)), + (this.toggleOrientationModalIfNeeded = a( + this.toggleOrientationModalIfNeeded, + this, + )), + (this.updateEnterInterfaces = a(this.updateEnterInterfaces, this)) + }, + onModalClick: function () { + this.el.exitVR() + }, + onEnterVRButtonClick: function () { + this.el.enterVR() + }, + onEnterARButtonClick: function () { + this.el.enterAR() + }, + update: function () { + var e = this.data, + t = this.el + if (!e.enabled || this.insideLoader || 'false' === o.getUrlParameter('ui')) + return this.remove() + this.enterVREl || + this.enterAREl || + this.orientationModalEl || + (e.enterVRButton + ? ((this.enterVREl = document.querySelector(e.enterVRButton)), + this.enterVREl.addEventListener('click', this.onEnterVRButtonClick)) + : ((this.enterVREl = p(this.onEnterVRButtonClick)), + t.appendChild(this.enterVREl)), + e.enterARButton + ? ((this.enterAREl = document.querySelector(e.enterARButton)), + this.enterAREl.addEventListener('click', this.onEnterARButtonClick)) + : ((this.enterAREl = f(this.onEnterARButtonClick)), + t.appendChild(this.enterAREl)), + (this.orientationModalEl = m(this.onModalClick)), + t.appendChild(this.orientationModalEl), + this.updateEnterInterfaces()) + }, + remove: function () { + ;[this.enterVREl, this.enterAREl, this.orientationModalEl].forEach(function ( + e, + ) { + e && e.parentNode && e.parentNode.removeChild(e) + }), + (this.enterVREl = void 0), + (this.enterAREl = void 0), + (this.orientationModalEl = void 0) + }, + updateEnterInterfaces: function () { + this.toggleEnterVRButtonIfNeeded(), + this.toggleEnterARButtonIfNeeded(), + this.toggleOrientationModalIfNeeded() + }, + toggleEnterVRButtonIfNeeded: function () { + var e = this.el + this.enterVREl && + (e.is('vr-mode') + ? this.enterVREl.classList.add(h) + : this.enterVREl.classList.remove(h)) + }, + toggleEnterARButtonIfNeeded: function () { + var e = this.el + this.enterAREl && + (e.is('vr-mode') || !o.device.checkARSupport() + ? this.enterAREl.classList.add(h) + : this.enterAREl.classList.remove(h)) + }, + toggleOrientationModalIfNeeded: function () { + var e = this.el, + t = this.orientationModalEl + t && + e.isMobile && + (!o.device.isLandscape() && e.is('vr-mode') + ? t.classList.remove(h) + : t.classList.add(h)) + }, + }) + }, + { '../../constants/': 123, '../../core/component': 131, '../../utils/': 205 }, + ], + 111: [ + function (e, t, n) { + var r = e('../core/component'), + i = e('../lib/three'), + o = e('../utils/bind'), + a = r.registerComponent + t.exports.Component = a('shadow', { + schema: { cast: { default: !0 }, receive: { default: !0 } }, + init: function () { + ;(this.onMeshChanged = o(this.update, this)), + this.el.addEventListener('object3dset', this.onMeshChanged), + this.system.setShadowMapEnabled(!0) + }, + update: function () { + var e = this.data + this.updateDescendants(e.cast, e.receive) + }, + remove: function () { + this.el.removeEventListener('object3dset', this.onMeshChanged), + this.updateDescendants(!1, !1) + }, + updateDescendants: function (e, t) { + var n = this.el.sceneEl + this.el.object3D.traverse(function (r) { + if ( + r instanceof i.Mesh && + ((r.castShadow = e), (r.receiveShadow = t), n.hasLoaded && r.material) + ) + for ( + var o = Array.isArray(r.material) ? r.material : [r.material], a = 0; + a < o.length; + a++ + ) + o[a].needsUpdate = !0 + }) + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/bind': 199 }, + ], + 112: [ + function (t, n, r) { + var i = t('../core/component').registerComponent, + o = t('../utils/debug'), + a = t('../lib/three'), + s = o('components:sound:warn') + n.exports.Component = i('sound', { + schema: { + autoplay: { default: !1 }, + distanceModel: { + default: 'inverse', + oneOf: ['linear', 'inverse', 'exponential'], + }, + loop: { default: !1 }, + maxDistance: { default: 1e4 }, + on: { default: '' }, + poolSize: { default: 1 }, + positional: { default: !0 }, + refDistance: { default: 1 }, + rolloffFactor: { default: 1 }, + src: { type: 'audio' }, + volume: { default: 1 }, + }, + multiple: !0, + init: function () { + var e = this + ;(this.listener = null), + (this.audioLoader = new a.AudioLoader()), + (this.pool = new a.Group()), + (this.loaded = !1), + (this.mustPlay = !1), + (this.playSoundBound = function () { + e.playSound() + }) + }, + update: function (e) { + var t, + n, + r = this.data, + i = r.src !== e.src + if (i) { + if (!r.src) return + this.setupSound() + } + for (t = 0; t < this.pool.children.length; t++) + (n = this.pool.children[t]), + r.positional && + (n.setDistanceModel(r.distanceModel), + n.setMaxDistance(r.maxDistance), + n.setRefDistance(r.refDistance), + n.setRolloffFactor(r.rolloffFactor)), + n.setLoop(r.loop), + n.setVolume(r.volume), + (n.isPaused = !1) + if ((r.on !== e.on && this.updateEventListener(e.on), i)) { + var o = this + ;(this.loaded = !1), + this.audioLoader.load(r.src, function (e) { + for (t = 0; t < o.pool.children.length; t++) + (n = o.pool.children[t]).setBuffer(e) + ;(o.loaded = !0), + a.Cache.remove(r.src), + (o.data.autoplay || o.mustPlay) && o.playSound(), + o.el.emit('sound-loaded', o.evtDetail, !1) + }) + } + }, + pause: function () { + this.stopSound(), this.removeEventListener() + }, + play: function () { + this.data.autoplay && this.playSound(), this.updateEventListener() + }, + remove: function () { + var t + this.removeEventListener(), + this.el.getObject3D(this.attrName) && this.el.removeObject3D(this.attrName) + try { + for (t = 0; t < this.pool.children.length; t++) + this.pool.children[t].disconnect() + } catch (e) { + s('Audio source not properly disconnected') + } + }, + updateEventListener: function (e) { + var t = this.el + e && t.removeEventListener(e, this.playSoundBound), + t.addEventListener(this.data.on, this.playSoundBound) + }, + removeEventListener: function () { + this.el.removeEventListener(this.data.on, this.playSoundBound) + }, + setupSound: function () { + var e, + t, + n = this.el, + r = n.sceneEl, + i = this + this.pool.children.length > 0 && (this.stopSound(), n.removeObject3D('sound')) + var o = (this.listener = r.audioListener || new a.AudioListener()) + for ( + r.audioListener = o, + r.camera && r.camera.add(o), + r.addEventListener('camera-set-active', function (e) { + e.detail.cameraEl.getObject3D('camera').add(o) + }), + this.pool = new a.Group(), + e = 0; + e < this.data.poolSize; + e++ + ) + (t = this.data.positional ? new a.PositionalAudio(o) : new a.Audio(o)), + this.pool.add(t) + for ( + n.setObject3D(this.attrName, this.pool), e = 0; + e < this.pool.children.length; + e++ + ) + (t = this.pool.children[e]).onEnded = function () { + ;(this.isPlaying = !1), i.el.emit('sound-ended', i.evtDetail, !1) + } + }, + pauseSound: function () { + var e, t + for (this.isPlaying = !1, e = 0; e < this.pool.children.length; e++) + (t = this.pool.children[e]).source && + t.source.buffer && + t.isPlaying && + !t.isPaused && + ((t.isPaused = !0), t.pause()) + }, + playSound: function (e) { + var t, n, r + if (!this.loaded) + return ( + s('Sound not loaded yet. It will be played once it finished loading'), + void (this.mustPlay = !0) + ) + for (t = !1, this.isPlaying = !0, n = 0; n < this.pool.children.length; n++) + (r = this.pool.children[n]).isPlaying || + !r.buffer || + t || + (e && e(r), r.play(), (r.isPaused = !1), (t = !0)) + t + ? (this.mustPlay = !1) + : s( + 'All the sounds are playing. If you need to play more sounds simultaneously consider increasing the size of pool with the `poolSize` attribute.', + this.el, + ) + }, + stopSound: function () { + var e, t + for (this.isPlaying = !1, e = 0; e < this.pool.children.length; e++) { + if (!(t = this.pool.children[e]).source || !t.source.buffer) return + t.stop() + } + }, + }) + }, + { '../core/component': 131, '../lib/three': 179, '../utils/debug': 201 }, + ], + 113: [ + function (e, t, n) { + var r = e('three-bmfont-text'), + i = e('load-bmfont'), + o = e('../core/component').registerComponent, + a = e('../core/shader'), + s = e('../lib/three'), + l = e('../utils/'), + c = l.debug('components:text:error'), + u = a.shaders, + h = l.debug('components:text:warn'), + d = 1, + p = 16, + f = 'https://cdn.aframe.io/fonts/', + m = { + aileronsemibold: f + 'Aileron-Semibold.fnt', + dejavu: f + 'DejaVu-sdf.fnt', + exo2bold: f + 'Exo2Bold.fnt', + exo2semibold: f + 'Exo2SemiBold.fnt', + kelsonsans: f + 'KelsonSans.fnt', + monoid: f + 'Monoid.fnt', + mozillavr: f + 'mozillavr.fnt', + roboto: f + 'Roboto-msdf.json', + sourcecodepro: f + 'SourceCodePro.fnt', + }, + v = ['roboto'], + g = 'roboto' + t.exports.FONTS = m + var y = new C(), + b = {}, + A = {}, + w = /^\w+:/ + function x(e) { + switch (e) { + case 'back': + return s.FrontSide + case 'double': + return s.DoubleSide + default: + return s.BackSide + } + } + function E(e, t) { + return new Promise(function (n, r) { + i(e, function (i, o) { + if (i) return c('Error loading font', e), void r(i) + e.indexOf('/Roboto-msdf.json') >= 0 && (t = 30), + t && + o.chars.map(function (e) { + e.yoffset += t + }), + n(o) + }) + }) + } + function M(e) { + return new Promise(function (t, n) { + new s.ImageLoader().load( + e, + function (e) { + t(e) + }, + void 0, + function () { + c('Error loading font image', e), n(null) + }, + ) + }) + } + function _(e, t, n) { + var r, i + return ( + ((i = new u[t].Shader()).el = e), + i.init(n), + i.update(n), + ((r = i.material).transparent = n.transparent), + { material: r, shader: i } + ) + } + function T(e, t, n) { + return e || (0.5 + t) * n + } + function S(e) { + var t = 0, + n = 0, + r = 0 + return ( + e.chars.map(function (e) { + ;(t += e.xadvance), e.id >= 48 && e.id <= 57 && (r++, (n += e.xadvance)) + }), + r ? n / r : t / e.chars.length + ) + } + function C() { + var e = (this.cache = {}) + this.get = function (t, n) { + return t in e || (e[t] = n()), e[t] + } + } + t.exports.Component = o('text', { + multiple: !0, + schema: { + align: { type: 'string', default: 'left', oneOf: ['left', 'right', 'center'] }, + alphaTest: { default: 0.5 }, + anchor: { default: 'center', oneOf: ['left', 'right', 'center', 'align'] }, + baseline: { default: 'center', oneOf: ['top', 'center', 'bottom'] }, + color: { type: 'color', default: '#FFF' }, + font: { type: 'string', default: g }, + fontImage: { type: 'string' }, + height: { type: 'number' }, + letterSpacing: { type: 'number', default: 0 }, + lineHeight: { type: 'number' }, + negate: { type: 'boolean', default: !0 }, + opacity: { type: 'number', default: 1 }, + shader: { default: 'sdf', oneOf: u }, + side: { default: 'front', oneOf: ['front', 'back', 'double'] }, + tabSize: { default: 4 }, + transparent: { default: !0 }, + value: { type: 'string' }, + whiteSpace: { default: 'normal', oneOf: ['normal', 'pre', 'nowrap'] }, + width: { type: 'number' }, + wrapCount: { type: 'number', default: 40 }, + wrapPixels: { type: 'number' }, + xOffset: { type: 'number', default: 0 }, + yOffset: { type: 'number', default: 0 }, + zOffset: { type: 'number', default: 0.001 }, + }, + init: function () { + ;(this.shaderData = {}), (this.geometry = r()), this.createOrUpdateMaterial() + }, + update: function (e) { + var t = this.data, + n = this.currentFont + A[t.font] + ? (this.texture = A[t.font]) + : ((this.texture = A[t.font] = new s.Texture()), + (this.texture.anisotropy = p)), + this.createOrUpdateMaterial(), + e.font === t.font + ? n && (this.updateGeometry(this.geometry, n), this.updateLayout()) + : this.updateFont() + }, + remove: function () { + this.geometry.dispose(), + (this.geometry = null), + this.el.removeObject3D(this.attrName), + this.material.dispose(), + (this.material = null), + this.texture.dispose(), + (this.texture = null), + this.shaderObject && delete this.shaderObject + }, + createOrUpdateMaterial: function () { + var e, + t, + n, + r = this.data, + i = this.material, + o = this.shaderData + if ( + ((n = r.shader), + -1 !== v.indexOf(r.font) || r.font.indexOf('-msdf.') >= 0 + ? (n = 'msdf') + : r.font in m && -1 === v.indexOf(r.font) && (n = 'sdf'), + (e = (this.shaderObject && this.shaderObject.name) !== n), + (o.alphaTest = r.alphaTest), + (o.color = r.color), + (o.map = this.texture), + (o.opacity = r.opacity), + (o.side = x(r.side)), + (o.transparent = r.transparent), + (o.negate = r.negate), + !e) + ) + return ( + this.shaderObject.update(o), + (i.transparent = o.transparent), + void (i.side = o.side) + ) + ;(t = _(this.el, n, o)), + (this.material = t.material), + (this.shaderObject = t.shader), + (this.material.side = o.side), + this.mesh && (this.mesh.material = this.material) + }, + updateFont: function () { + var e, + t = this.data, + n = this.el, + r = this.geometry, + i = this + t.font || h('No font specified. Using the default font.'), + this.mesh && (this.mesh.visible = !1), + (e = this.lookupFont(t.font || g) || t.font), + y + .get(e, function () { + return E(e, t.yOffset) + }) + .then(function (o) { + var a + if (1 !== o.pages.length) + throw new Error( + 'Currently only single-page bitmap fonts are supported.', + ) + b[e] || (o.widthFactor = b[o] = S(o)), + (i.currentFont = o), + (a = i.getFontImageSrc()), + y + .get(a, function () { + return M(a) + }) + .then(function (e) { + var a = i.texture + ;(a.image = e), + (a.needsUpdate = !0), + (A[t.font] = a), + (i.texture = a), + i.initMesh(), + (i.currentFont = o), + i.updateGeometry(r, o), + i.updateLayout(), + (i.mesh.visible = !0), + n.emit('textfontset', { font: t.font, fontObj: o }) + }) + .catch(function (e) { + c(e.message), c(e.stack) + }) + }) + .catch(function (e) { + c(e.message), c(e.stack) + }) + }, + initMesh: function () { + this.mesh || + ((this.mesh = new s.Mesh(this.geometry, this.material)), + this.el.setObject3D(this.attrName, this.mesh)) + }, + getFontImageSrc: function () { + if (this.data.fontImage) return this.data.fontImage + var e = this.lookupFont(this.data.font || g) || this.data.font, + t = this.currentFont.pages[0] + return t.match(w) && 0 !== t.indexOf('http') + ? e.replace(/(\.fnt)|(\.json)/, '.png') + : s.LoaderUtils.extractUrlBase(e) + t + }, + updateLayout: function () { + var e, + t, + n, + r, + i, + o, + a, + s, + l, + c = this.el, + u = this.data, + h = this.geometry, + p = this.mesh + if (p && h.layout) { + if ( + ((n = c.getAttribute('geometry')), + (r = + (o = + (a = u.width || (n && n.width) || d) / + T(u.wrapPixels, u.wrapCount, this.currentFont.widthFactor)) * + ((i = h.layout).height + i.descender)), + n && + 'plane' === n.primitive && + (n.width || c.setAttribute('geometry', 'width', a), + n.height || c.setAttribute('geometry', 'height', r)), + 'left' === (e = 'align' === u.anchor ? u.align : u.anchor)) + ) + s = 0 + else if ('right' === e) s = -1 * i.width + else { + if ('center' !== e) + throw new TypeError('Invalid text.anchor property value', e) + s = (-1 * i.width) / 2 + } + if ('bottom' === (t = u.baseline)) l = 0 + else if ('top' === t) l = -1 * i.height + i.ascender + else { + if ('center' !== t) + throw new TypeError('Invalid text.baseline property value', t) + l = (-1 * i.height) / 2 + } + ;(p.position.x = s * o + u.xOffset), + (p.position.y = l * o), + (p.position.z = u.zOffset), + p.scale.set(o, -1 * o, o) + } + }, + lookupFont: function (e) { + return m[e] + }, + updateGeometry: (function () { + var e = {}, + t = {}, + n = /\\n/g, + r = /\\t/g + return function (i, o) { + var a = this.data + ;(t.font = o), + (t.lineHeight = + a.lineHeight && isFinite(a.lineHeight) + ? a.lineHeight + : o.common.lineHeight), + (t.text = a.value.toString().replace(n, '\n').replace(r, '\t')), + (t.width = T(a.wrapPixels, a.wrapCount, o.widthFactor)), + i.update(l.extend(e, a, t)) + } + })(), + }) + }, + { + '../core/component': 131, + '../core/shader': 141, + '../lib/three': 179, + '../utils/': 205, + 'load-bmfont': 37, + 'three-bmfont-text': 63, + }, + ], + 114: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/tracked-controls'), + o = e('../constants').DEFAULT_CAMERA_HEIGHT, + a = e('../lib/three'), + s = e('../constants').DEFAULT_HANDEDNESS, + l = { x: 0.175, y: -0.3, z: -0.03 }, + c = { x: 0, y: 0, z: -0.175 }, + u = { touches: [] }, + h = { + AXISMOVE: 'axismove', + BUTTONCHANGED: 'buttonchanged', + BUTTONDOWN: 'buttondown', + BUTTONUP: 'buttonup', + TOUCHSTART: 'touchstart', + TOUCHEND: 'touchend', + } + t.exports.Component = r('tracked-controls-webvr', { + schema: { + autoHide: { default: !0 }, + controller: { default: 0 }, + id: { type: 'string', default: '' }, + hand: { type: 'string', default: '' }, + idPrefix: { type: 'string', default: '' }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !1 }, + headElement: { type: 'selector' }, + }, + init: function () { + ;(this.axis = this.el.components['tracked-controls'].axis = [0, 0, 0]), + (this.buttonStates = this.el.components['tracked-controls'].buttonStates = + {}), + (this.changedAxes = []), + (this.targetControllerNumber = this.data.controller), + (this.axisMoveEventDetail = { axis: this.axis, changed: this.changedAxes }), + (this.deltaControllerPosition = new a.Vector3()), + (this.controllerQuaternion = new a.Quaternion()), + (this.controllerEuler = new a.Euler()), + this.updateGamepad(), + (this.buttonEventDetails = {}) + }, + tick: function (e, t) { + var n = this.el.getObject3D('mesh') + n && n.update && n.update(t / 1e3), + this.updateGamepad(), + this.updatePose(), + this.updateButtons() + }, + defaultUserHeight: function () { + return o + }, + getHeadElement: function () { + return this.data.headElement || this.el.sceneEl.camera.el + }, + updateGamepad: function () { + var e = this.data, + t = i.findMatchingControllerWebVR( + this.system.controllers, + e.id, + e.idPrefix, + e.hand, + e.controller, + ) + ;(this.controller = t), + (this.el.components['tracked-controls'].controller = t), + this.data.autoHide && (this.el.object3D.visible = !!this.controller) + }, + applyArmModel: function (e) { + var t, + n, + r, + i, + o = this.controller, + a = this.controllerEuler, + u = this.controllerQuaternion, + h = this.deltaControllerPosition + ;(n = this.getHeadElement().object3D), + (i = this.defaultUserHeight()), + (r = o.pose), + (t = (o ? o.hand : void 0) || s), + e.copy(n.position), + h.set(l.x * ('left' === t ? -1 : 'right' === t ? 1 : 0), l.y, l.z), + h.multiplyScalar(i), + h.applyAxisAngle(n.up, n.rotation.y), + e.add(h), + h.set(c.x, c.y, c.z), + h.multiplyScalar(i), + r.orientation ? u.fromArray(r.orientation) : u.copy(n.quaternion), + a.setFromQuaternion(u), + a.set(a.x, a.y, 0), + h.applyEuler(a), + e.add(h) + }, + updatePose: function () { + var e, + t, + n = this.controller, + r = this.data, + i = this.el.object3D, + o = this.system.vrDisplay + n && + ((e = n.pose).position + ? i.position.fromArray(e.position) + : r.armModel && this.applyArmModel(i.position), + e.orientation && i.quaternion.fromArray(e.orientation), + o && + e.position && + ((t = this.el.sceneEl.renderer.xr.getStandingMatrix()), + i.matrix.compose(i.position, i.quaternion, i.scale), + i.matrix.multiplyMatrices(t, i.matrix), + i.matrix.decompose(i.position, i.quaternion, i.scale)), + i.rotateX(this.data.orientationOffset.x * a.Math.DEG2RAD), + i.rotateY(this.data.orientationOffset.y * a.Math.DEG2RAD), + i.rotateZ(this.data.orientationOffset.z * a.Math.DEG2RAD)) + }, + updateButtons: function () { + var e, + t, + n = this.controller + if (n) { + for (t = 0; t < n.buttons.length; ++t) + this.buttonStates[t] || + (this.buttonStates[t] = { pressed: !1, touched: !1, value: 0 }), + this.buttonEventDetails[t] || + (this.buttonEventDetails[t] = { id: t, state: this.buttonStates[t] }), + (e = n.buttons[t]), + this.handleButton(t, e) + this.handleAxes() + } + }, + handleButton: function (e, t) { + return ( + !!( + this.handlePress(e, t) | + this.handleTouch(e, t) | + this.handleValue(e, t) + ) && (this.el.emit(h.BUTTONCHANGED, this.buttonEventDetails[e], !1), !0) + ) + }, + handleAxes: function () { + var e, + t = !1, + n = this.controller.axes, + r = this.axis, + i = this.changedAxes + for ( + this.changedAxes.splice(0, this.changedAxes.length), e = 0; + e < n.length; + ++e + ) + i.push(r[e] !== n[e]), i[e] && (t = !0) + if (!t) return !1 + for (this.axis.splice(0, this.axis.length), e = 0; e < n.length; e++) + this.axis.push(n[e]) + return this.el.emit(h.AXISMOVE, this.axisMoveEventDetail, !1), !0 + }, + handlePress: function (e, t) { + var n, + r = this.buttonStates[e] + return ( + t.pressed !== r.pressed && + ((n = t.pressed ? h.BUTTONDOWN : h.BUTTONUP), + this.el.emit(n, this.buttonEventDetails[e], !1), + (r.pressed = t.pressed), + !0) + ) + }, + handleTouch: function (e, t) { + var n, + r = this.buttonStates[e] + return ( + t.touched !== r.touched && + ((n = t.touched ? h.TOUCHSTART : h.TOUCHEND), + this.el.emit(n, this.buttonEventDetails[e], !1, u), + (r.touched = t.touched), + !0) + ) + }, + handleValue: function (e, t) { + var n = this.buttonStates[e] + return t.value !== n.value && ((n.value = t.value), !0) + }, + }) + }, + { + '../constants': 123, + '../core/component': 131, + '../lib/three': 179, + '../utils/tracked-controls': 214, + }, + ], + 115: [ + function (e, t, n) { + var r = e('../utils/tracked-controls'), + i = e('../core/component').registerComponent, + o = { + AXISMOVE: 'axismove', + BUTTONCHANGED: 'buttonchanged', + BUTTONDOWN: 'buttondown', + BUTTONUP: 'buttonup', + TOUCHSTART: 'touchstart', + TOUCHEND: 'touchend', + } + t.exports.Component = i('tracked-controls-webxr', { + schema: { + id: { type: 'string', default: '' }, + hand: { type: 'string', default: '' }, + handTrackingEnabled: { default: !1 }, + index: { type: 'int', default: -1 }, + iterateControllerProfiles: { default: !1 }, + }, + init: function () { + ;(this.updateController = this.updateController.bind(this)), + (this.buttonEventDetails = {}), + (this.buttonStates = this.el.components['tracked-controls'].buttonStates = + {}), + (this.axis = this.el.components['tracked-controls'].axis = [0, 0, 0]), + (this.changedAxes = []), + (this.axisMoveEventDetail = { axis: this.axis, changed: this.changedAxes }) + }, + update: function () { + this.updateController() + }, + play: function () { + var e = this.el.sceneEl + this.updateController(), + e.addEventListener('controllersupdated', this.updateController) + }, + pause: function () { + this.el.sceneEl.removeEventListener('controllersupdated', this.updateController) + }, + isControllerPresent: function (e) { + return ( + !(!this.controller || this.controller.gamepad) && + ('none' === e.inputSource.handedness || + e.inputSource.handedness === this.data.hand) + ) + }, + updateController: function () { + ;(this.controller = r.findMatchingControllerWebXR( + this.system.controllers, + this.data.id, + this.data.hand, + this.data.index, + this.data.iterateControllerProfiles, + this.data.handTrackingEnabled, + )), + (this.el.components['tracked-controls'].controller = this.controller), + this.data.autoHide && (this.el.object3D.visible = !!this.controller) + }, + tick: function () { + var e = this.el.sceneEl, + t = this.controller, + n = e.frame + t && + e.frame && + this.system.referenceSpace && + (t.hand || + ((this.pose = n.getPose(t.targetRaySpace, this.system.referenceSpace)), + this.updatePose(), + this.updateButtons())) + }, + updatePose: function () { + var e = this.el.object3D, + t = this.pose + t && + ((e.matrix.elements = t.transform.matrix), + e.matrix.decompose(e.position, e.rotation, e.scale)) + }, + updateButtons: function () { + var e, + t, + n, + r = this.controller + if (r && r.gamepad) { + for (n = r.gamepad, t = 0; t < n.buttons.length; ++t) + this.buttonStates[t] || + (this.buttonStates[t] = { pressed: !1, touched: !1, value: 0 }), + this.buttonEventDetails[t] || + (this.buttonEventDetails[t] = { id: t, state: this.buttonStates[t] }), + (e = n.buttons[t]), + this.handleButton(t, e) + this.handleAxes() + } + }, + handleButton: function (e, t) { + return ( + !!( + this.handlePress(e, t) | + this.handleTouch(e, t) | + this.handleValue(e, t) + ) && (this.el.emit(o.BUTTONCHANGED, this.buttonEventDetails[e], !1), !0) + ) + }, + handleAxes: function () { + var e, + t = !1, + n = this.controller.gamepad.axes, + r = this.axis, + i = this.changedAxes + for ( + this.changedAxes.splice(0, this.changedAxes.length), e = 0; + e < n.length; + ++e + ) + i.push(r[e] !== n[e]), i[e] && (t = !0) + if (!t) return !1 + for (this.axis.splice(0, this.axis.length), e = 0; e < n.length; e++) + this.axis.push(n[e]) + return this.el.emit(o.AXISMOVE, this.axisMoveEventDetail, !1), !0 + }, + handlePress: function (e, t) { + var n, + r = this.buttonStates[e] + return ( + t.pressed !== r.pressed && + ((n = t.pressed ? o.BUTTONDOWN : o.BUTTONUP), + this.el.emit(n, this.buttonEventDetails[e], !1), + (r.pressed = t.pressed), + !0) + ) + }, + handleTouch: function (e, t) { + var n, + r = this.buttonStates[e] + return ( + t.touched !== r.touched && + ((n = t.touched ? o.TOUCHSTART : o.TOUCHEND), + this.el.emit(n, this.buttonEventDetails[e], !1), + (r.touched = t.touched), + !0) + ) + }, + handleValue: function (e, t) { + var n = this.buttonStates[e] + return t.value !== n.value && ((n.value = t.value), !0) + }, + }) + }, + { '../core/component': 131, '../utils/tracked-controls': 214 }, + ], + 116: [ + function (e, t, n) { + var r = e('../core/component').registerComponent + t.exports.Component = r('tracked-controls', { + schema: { + autoHide: { default: !0 }, + controller: { default: -1 }, + id: { type: 'string', default: '' }, + hand: { type: 'string', default: '' }, + idPrefix: { type: 'string', default: '' }, + handTrackingEnabled: { default: !1 }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !1 }, + headElement: { type: 'selector' }, + iterateControllerProfiles: { default: !1 }, + }, + update: function () { + var e = this.data, + t = this.el + t.sceneEl.hasWebXR + ? t.setAttribute('tracked-controls-webxr', { + id: e.id, + hand: e.hand, + index: e.controller, + iterateControllerProfiles: e.iterateControllerProfiles, + handTrackingEnabled: e.handTrackingEnabled, + }) + : t.setAttribute('tracked-controls-webvr', e) + }, + }) + }, + { '../core/component': 131 }, + ], + 117: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../lib/three'), + a = e('../utils/tracked-controls'), + s = a.checkControllerPresentAndSetup, + l = a.emitIfAxesChanged, + c = a.onButtonEvent, + u = 'https://cdn.aframe.io/controllers/valve/index/valve-index-', + h = { left: u + 'left.glb', right: u + 'right.glb' }, + d = 'valve', + p = e('../utils/').device.isWebXRAvailable, + f = { + left: { + x: -0.00023692678902063457, + y: 0.04724540367838371, + z: -0.061959880395271096, + }, + right: { + x: 0.002471558599671131, + y: 0.055765208987076195, + z: -0.061068168708348844, + }, + }, + m = { left: { x: 0, y: -0.05, z: 0.06 }, right: { x: 0, y: -0.05, z: 0.06 } }, + v = { + left: { + _x: 0.692295102620542, + _y: -0.0627618864318427, + _z: -0.06265893149611756, + _order: 'XYZ', + }, + right: { + _x: 0.6484021229942998, + _y: -0.032563619881892894, + _z: -0.1327973171917482, + _order: 'XYZ', + }, + }, + g = { + left: { _x: Math.PI / 3, _y: 0, _z: 0, _order: 'XYZ' }, + right: { _x: Math.PI / 3, _y: 0, _z: 0, _order: 'XYZ' }, + }, + y = p ? g : v, + b = p ? m : f + t.exports.Component = r('valve-index-controls', { + schema: { + hand: { default: 'left' }, + buttonColor: { type: 'color', default: '#FAFAFA' }, + buttonHighlightColor: { type: 'color', default: '#22D1EE' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + }, + mapping: { + axes: { trackpad: [0, 1], thumbstick: [2, 3] }, + buttons: ['trigger', 'grip', 'trackpad', 'thumbstick', 'abutton'], + }, + init: function () { + var e = this + ;(this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + c(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + c(t.detail.id, 'up', e) + }), + (this.onButtonTouchEnd = function (t) { + c(t.detail.id, 'touchend', e) + }), + (this.onButtonTouchStart = function (t) { + c(t.detail.id, 'touchstart', e) + }), + (this.previousButtonValues = {}), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods() + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + var e = this.data, + t = 'right' === e.hand ? 0 : 'left' === e.hand ? 1 : 2 + s(this, d, { index: t, iterateControllerProfiles: !0, hand: e.hand }) + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + idPrefix: d, + controller: 'right' === t.hand ? 1 : 'left' === t.hand ? 0 : 2, + hand: t.hand, + orientationOffset: t.orientationOffset, + }), + this.loadModel() + }, + loadModel: function () { + var e = this.data + e.model && this.el.setAttribute('gltf-model', '' + h[e.hand]) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onButtonChanged: function (e) { + var t, + n = this.mapping.buttons[e.detail.id], + r = this.buttonMeshes + n && + ('trigger' === n && + ((t = e.detail.state.value), + r && + r.trigger && + (r.trigger.rotation.x = + this.triggerOriginalRotationX - t * (Math.PI / 40))), + this.el.emit(n + 'changed', e.detail.state)) + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model, + r = this + this.data.model && + (((t = this.buttonMeshes = {}).grip = { + left: n.getObjectByName('leftgrip'), + right: n.getObjectByName('rightgrip'), + }), + (t.menu = n.getObjectByName('menubutton')), + (t.system = n.getObjectByName('systembutton')), + (t.trackpad = n.getObjectByName('touchpad')), + (t.trigger = n.getObjectByName('trigger')), + (this.triggerOriginalRotationX = t.trigger.rotation.x), + Object.keys(t).forEach(function (e) { + r.setButtonColor(e, r.data.buttonColor) + }), + n.position.copy(b[this.data.hand]), + n.rotation.copy(y[this.data.hand]), + this.el.emit('controllermodelready', { + name: 'valve-index-controlls', + model: this.data.model, + rayOrigin: new o.Vector3(0, 0, 0), + })) + }, + onAxisMoved: function (e) { + l(this, this.mapping.axes, e) + }, + updateModel: function (e, t) { + var n + this.data.model && + (-1 !== t.indexOf('touch') || + ((n = 'up' === t ? this.data.buttonColor : this.data.buttonHighlightColor), + this.setButtonColor(e, n))) + }, + setButtonColor: function (e, t) {}, + }) + }, + { + '../core/component': 131, + '../lib/three': 179, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 118: [ + function (e, t, n) { + var r = e('../core/component').registerComponent + t.exports.Component = r('visible', { + schema: { default: !0 }, + update: function () { + this.el.object3D.visible = this.data + }, + }) + }, + { '../core/component': 131 }, + ], + 119: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = 'https://cdn.aframe.io/controllers/vive/vr_controller_vive.obj', + u = 'https://cdn.aframe.io/controllers/vive/vr_controller_vive.mtl', + h = e('../utils/').device.isWebXRAvailable, + d = h ? 'htc-vive-controller-mv' : 'OpenVR ', + p = h + ? { + axes: { thumbstick: [0, 1] }, + buttons: ['trigger', 'grip', 'trackpad', 'none', 'menu'], + } + : { + axes: { trackpad: [0, 1] }, + buttons: ['trackpad', 'trigger', 'grip', 'menu', 'system'], + } + t.exports.Component = r('vive-controls', { + schema: { + hand: { default: 'left' }, + buttonColor: { type: 'color', default: '#FAFAFA' }, + buttonHighlightColor: { type: 'color', default: '#22D1EE' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + }, + mapping: p, + init: function () { + var e = this + ;(this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.previousButtonValues = {}), + (this.rendererSystem = this.el.sceneEl.systems.renderer), + this.bindMethods() + }, + update: function () { + var e = this.data + this.controllerIndex = 'right' === e.hand ? 0 : 'left' === e.hand ? 1 : 2 + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + var e = this.data + a(this, d, { index: this.controllerIndex, hand: e.hand }) + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + idPrefix: d, + hand: t.hand, + controller: this.controllerIndex, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('obj-model', { obj: c, mtl: u }) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onButtonChanged: function (e) { + var t, + n = this.mapping.buttons[e.detail.id], + r = this.buttonMeshes + n && + ('trigger' === n && + ((t = e.detail.state.value), + r && r.trigger && (r.trigger.rotation.x = -t * (Math.PI / 12))), + this.el.emit(n + 'changed', e.detail.state)) + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model, + r = this + this.data.model && + (((t = this.buttonMeshes = {}).grip = { + left: n.getObjectByName('leftgrip'), + right: n.getObjectByName('rightgrip'), + }), + (t.menu = n.getObjectByName('menubutton')), + (t.system = n.getObjectByName('systembutton')), + (t.trackpad = n.getObjectByName('touchpad')), + (t.trigger = n.getObjectByName('trigger')), + Object.keys(t).forEach(function (e) { + r.setButtonColor(e, r.data.buttonColor) + }), + n.position.set(0, -0.015, 0.04)) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + updateModel: function (e, t) { + var n + this.data.model && + (-1 !== t.indexOf('touch') || + ((n = 'up' === t ? this.data.buttonColor : this.data.buttonHighlightColor), + this.setButtonColor(e, n))) + }, + setButtonColor: function (e, t) { + var n = this.buttonMeshes, + r = this.rendererSystem + if (n) { + if ('grip' === e) + return ( + n.grip.left.material.color.set(t), + n.grip.right.material.color.set(t), + r.applyColorCorrection(n.grip.left.material.color), + void r.applyColorCorrection(n.grip.right.material.color) + ) + n[e].material.color.set(t), r.applyColorCorrection(n[e].material.color) + } + }, + }) + }, + { + '../core/component': 131, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 120: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = 'HTC Vive Focus', + u = + 'https://cdn.aframe.io/controllers/vive/focus-controller/focus-controller.gltf' + t.exports.Component = r('vive-focus-controls', { + schema: { + hand: { default: '' }, + buttonTouchedColor: { type: 'color', default: '#BBBBBB' }, + buttonHighlightColor: { type: 'color', default: '#7A7A7A' }, + model: { default: !0 }, + orientationOffset: { type: 'vec3' }, + armModel: { default: !0 }, + }, + mapping: { axes: { trackpad: [0, 1] }, buttons: ['trackpad', 'trigger'] }, + bindMethods: function () { + ;(this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.removeControllersUpdateListener = i( + this.removeControllersUpdateListener, + this, + )), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + this.bindMethods() + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('model-loaded', this.onModelLoaded), + e.addEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !0), + this.addControllersUpdateListener() + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('model-loaded', this.onModelLoaded), + e.removeEventListener('axismove', this.onAxisMoved), + (this.controllerEventsActive = !1), + this.removeControllersUpdateListener() + }, + checkIfControllerPresent: function () { + a(this, c, this.data.hand ? { hand: this.data.hand } : {}) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + injectTrackedControls: function () { + var e = this.el, + t = this.data + e.setAttribute('tracked-controls', { + armModel: t.armModel, + idPrefix: c, + orientationOffset: t.orientationOffset, + }), + this.data.model && this.el.setAttribute('gltf-model', u) + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onModelLoaded: function (e) { + var t, + n = e.detail.model + this.data.model && + (((t = this.buttonMeshes = {}).trigger = n.getObjectByName('BumperKey')), + (t.triggerPressed = n.getObjectByName('BumperKey_Press')), + t.triggerPressed && (t.triggerPressed.visible = !1), + (t.trackpad = n.getObjectByName('TouchPad')), + (t.trackpadPressed = n.getObjectByName('TouchPad_Press')), + t.trackpadPressed && (t.trackpadPressed.visible = !1)) + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && this.el.emit(t + 'changed', e.detail.state) + }, + onAxisMoved: function (e) { + s(this, this.mapping.axes, e) + }, + updateModel: function (e, t) { + this.data.model && this.updateButtonModel(e, t) + }, + updateButtonModel: function (e, t) { + var n = this.buttonMeshes, + r = e + 'Pressed' + if (n && n[e] && n[r]) { + var i + switch (t) { + case 'down': + i = this.data.buttonHighlightColor + break + case 'touchstart': + i = this.data.buttonTouchedColor + } + i && n[r].material.color.set(i), (n[r].visible = !!i), (n[e].visible = !i) + } + }, + }) + }, + { '../core/component': 131, '../utils/bind': 199, '../utils/tracked-controls': 214 }, + ], + 121: [ + function (e, t, n) { + var r = e('../constants').keyboardevent.KEYCODE_TO_CODE, + i = e('../core/component').registerComponent, + o = e('../lib/three'), + a = e('../utils/'), + s = a.bind, + l = a.shouldCaptureKeyEvent, + c = 1e-5, + u = 0.2, + h = [ + 'KeyW', + 'KeyA', + 'KeyS', + 'KeyD', + 'ArrowUp', + 'ArrowLeft', + 'ArrowRight', + 'ArrowDown', + ] + function d(e) { + var t + for (t in e) return !1 + return !0 + } + t.exports.Component = i('wasd-controls', { + schema: { + acceleration: { default: 65 }, + adAxis: { default: 'x', oneOf: ['x', 'y', 'z'] }, + adEnabled: { default: !0 }, + adInverted: { default: !1 }, + enabled: { default: !0 }, + fly: { default: !1 }, + wsAxis: { default: 'z', oneOf: ['x', 'y', 'z'] }, + wsEnabled: { default: !0 }, + wsInverted: { default: !1 }, + }, + init: function () { + ;(this.keys = {}), + (this.easing = 1.1), + (this.velocity = new o.Vector3()), + (this.onBlur = s(this.onBlur, this)), + (this.onContextMenu = s(this.onContextMenu, this)), + (this.onFocus = s(this.onFocus, this)), + (this.onKeyDown = s(this.onKeyDown, this)), + (this.onKeyUp = s(this.onKeyUp, this)), + (this.onVisibilityChange = s(this.onVisibilityChange, this)), + this.attachVisibilityEventListeners() + }, + tick: function (e, t) { + var n = this.data, + r = this.el, + i = this.velocity + ;(i[n.adAxis] || i[n.wsAxis] || !d(this.keys)) && + ((t /= 1e3), + this.updateVelocity(t), + (i[n.adAxis] || i[n.wsAxis]) && + r.object3D.position.add(this.getMovementVector(t))) + }, + remove: function () { + this.removeKeyEventListeners(), this.removeVisibilityEventListeners() + }, + play: function () { + this.attachKeyEventListeners() + }, + pause: function () { + ;(this.keys = {}), this.removeKeyEventListeners() + }, + updateVelocity: function (e) { + var t, + n, + r, + i, + o, + a = this.data, + s = this.keys, + l = this.velocity + if (((n = a.adAxis), (i = a.wsAxis), e > u)) return (l[n] = 0), void (l[i] = 0) + var h = Math.pow(1 / this.easing, 60 * e) + 0 !== l[n] && (l[n] = l[n] * h), + 0 !== l[i] && (l[i] = l[i] * h), + Math.abs(l[n]) < c && (l[n] = 0), + Math.abs(l[i]) < c && (l[i] = 0), + a.enabled && + ((t = a.acceleration), + a.adEnabled && + ((r = a.adInverted ? -1 : 1), + (s.KeyA || s.ArrowLeft) && (l[n] -= r * t * e), + (s.KeyD || s.ArrowRight) && (l[n] += r * t * e)), + a.wsEnabled && + ((o = a.wsInverted ? -1 : 1), + (s.KeyW || s.ArrowUp) && (l[i] -= o * t * e), + (s.KeyS || s.ArrowDown) && (l[i] += o * t * e))) + }, + getMovementVector: (function () { + var e = new o.Vector3(0, 0, 0), + t = new o.Euler(0, 0, 0, 'YXZ') + return function (n) { + var r, + i = this.el.getAttribute('rotation'), + a = this.velocity + return ( + e.copy(a), + e.multiplyScalar(n), + i + ? ((r = this.data.fly ? i.x : 0), + t.set(o.Math.degToRad(r), o.Math.degToRad(i.y), 0), + e.applyEuler(t), + e) + : e + ) + } + })(), + attachVisibilityEventListeners: function () { + ;(window.oncontextmenu = this.onContextMenu), + window.addEventListener('blur', this.onBlur), + window.addEventListener('focus', this.onFocus), + document.addEventListener('visibilitychange', this.onVisibilityChange) + }, + removeVisibilityEventListeners: function () { + window.removeEventListener('blur', this.onBlur), + window.removeEventListener('focus', this.onFocus), + document.removeEventListener('visibilitychange', this.onVisibilityChange) + }, + attachKeyEventListeners: function () { + window.addEventListener('keydown', this.onKeyDown), + window.addEventListener('keyup', this.onKeyUp) + }, + removeKeyEventListeners: function () { + window.removeEventListener('keydown', this.onKeyDown), + window.removeEventListener('keyup', this.onKeyUp) + }, + onContextMenu: function () { + for (var e = Object.keys(this.keys), t = 0; t < e.length; t++) + delete this.keys[e[t]] + }, + onBlur: function () { + this.pause() + }, + onFocus: function () { + this.play() + }, + onVisibilityChange: function () { + document.hidden ? this.onBlur() : this.onFocus() + }, + onKeyDown: function (e) { + var t + l(e) && + ((t = e.code || r[e.keyCode]), -1 !== h.indexOf(t) && (this.keys[t] = !0)) + }, + onKeyUp: function (e) { + var t + ;(t = e.code || r[e.keyCode]), delete this.keys[t] + }, + }) + }, + { + '../constants': 123, + '../core/component': 131, + '../lib/three': 179, + '../utils/': 205, + }, + ], + 122: [ + function (e, t, n) { + var r = e('../core/component').registerComponent, + i = e('../utils/bind'), + o = e('../utils/tracked-controls'), + a = o.checkControllerPresentAndSetup, + s = o.emitIfAxesChanged, + l = o.onButtonEvent, + c = e('../utils/'), + u = c.debug('components:windows-motion-controls:debug'), + h = c.debug('components:windows-motion-controls:warn'), + d = e('../constants').DEFAULT_HANDEDNESS, + p = 'https://cdn.aframe.io/controllers/microsoft/', + f = { left: 'left.glb', right: 'right.glb', default: 'universal.glb' }, + m = e('../utils/').device.isWebXRAvailable, + v = /([0-9a-zA-Z]+-[0-9a-zA-Z]+)$/, + g = m + ? 'windows-mixed-reality' + : 'Spatial Controller (Spatial Interaction Source) ', + y = m + ? { + axes: { touchpad: [0, 1], thumbstick: [2, 3] }, + buttons: ['trigger', 'squeeze', 'touchpad', 'thumbstick', 'menu'], + axisMeshNames: [ + 'TOUCHPAD_TOUCH_X', + 'TOUCHPAD_TOUCH_X', + 'THUMBSTICK_X', + 'THUMBSTICK_Y', + ], + buttonMeshNames: { + trigger: 'SELECT', + menu: 'MENU', + squeeze: 'GRASP', + thumbstick: 'THUMBSTICK_PRESS', + touchpad: 'TOUCHPAD_PRESS', + }, + pointingPoseMeshName: 'POINTING_POSE', + } + : { + axes: { thumbstick: [0, 1], trackpad: [2, 3] }, + buttons: ['thumbstick', 'trigger', 'grip', 'menu', 'trackpad'], + axisMeshNames: [ + 'THUMBSTICK_X', + 'THUMBSTICK_Y', + 'TOUCHPAD_TOUCH_X', + 'TOUCHPAD_TOUCH_Y', + ], + buttonMeshNames: { + trigger: 'SELECT', + menu: 'MENU', + grip: 'GRASP', + thumbstick: 'THUMBSTICK_PRESS', + trackpad: 'TOUCHPAD_PRESS', + }, + pointingPoseMeshName: 'POINTING_POSE', + } + t.exports.Component = r('windows-motion-controls', { + schema: { + hand: { default: d }, + pair: { default: 0 }, + model: { default: !0 }, + hideDisconnected: { default: !0 }, + }, + mapping: y, + bindMethods: function () { + ;(this.onModelError = i(this.onModelError, this)), + (this.onModelLoaded = i(this.onModelLoaded, this)), + (this.onControllersUpdate = i(this.onControllersUpdate, this)), + (this.checkIfControllerPresent = i(this.checkIfControllerPresent, this)), + (this.onAxisMoved = i(this.onAxisMoved, this)) + }, + init: function () { + var e = this, + t = this.el + ;(this.onButtonChanged = i(this.onButtonChanged, this)), + (this.onButtonDown = function (t) { + l(t.detail.id, 'down', e) + }), + (this.onButtonUp = function (t) { + l(t.detail.id, 'up', e) + }), + (this.onButtonTouchStart = function (t) { + l(t.detail.id, 'touchstart', e) + }), + (this.onButtonTouchEnd = function (t) { + l(t.detail.id, 'touchend', e) + }), + (this.onControllerConnected = function () { + e.setModelVisibility(!0) + }), + (this.onControllerDisconnected = function () { + e.setModelVisibility(!1) + }), + (this.controllerPresent = !1), + (this.lastControllerCheck = 0), + (this.previousButtonValues = {}), + this.bindMethods(), + (this.loadedMeshInfo = { buttonMeshes: null, axisMeshes: null }), + (this.rayOrigin = { + origin: new THREE.Vector3(), + direction: new THREE.Vector3(0, 0, -1), + createdFromMesh: !1, + }), + t.addEventListener('controllerconnected', this.onControllerConnected), + t.addEventListener('controllerdisconnected', this.onControllerDisconnected) + }, + addEventListeners: function () { + var e = this.el + e.addEventListener('buttonchanged', this.onButtonChanged), + e.addEventListener('buttondown', this.onButtonDown), + e.addEventListener('buttonup', this.onButtonUp), + e.addEventListener('touchstart', this.onButtonTouchStart), + e.addEventListener('touchend', this.onButtonTouchEnd), + e.addEventListener('axismove', this.onAxisMoved), + e.addEventListener('model-error', this.onModelError), + e.addEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !0) + }, + removeEventListeners: function () { + var e = this.el + e.removeEventListener('buttonchanged', this.onButtonChanged), + e.removeEventListener('buttondown', this.onButtonDown), + e.removeEventListener('buttonup', this.onButtonUp), + e.removeEventListener('touchstart', this.onButtonTouchStart), + e.removeEventListener('touchend', this.onButtonTouchEnd), + e.removeEventListener('axismove', this.onAxisMoved), + e.removeEventListener('model-error', this.onModelError), + e.removeEventListener('model-loaded', this.onModelLoaded), + (this.controllerEventsActive = !1) + }, + checkIfControllerPresent: function () { + a(this, g, { + hand: this.data.hand, + index: this.data.pair, + iterateControllerProfiles: !0, + }) + }, + play: function () { + this.checkIfControllerPresent(), this.addControllersUpdateListener() + }, + pause: function () { + this.removeEventListeners(), this.removeControllersUpdateListener() + }, + updateControllerModel: function () { + if (this.data.model && !this.rayOrigin.createdFromMesh) { + var e = this.createControllerModelUrl() + this.loadModel(e) + } else this.modelReady() + }, + createControllerModelUrl: function (e) { + var t, + n = this.el.components['tracked-controls'], + r = n ? n.controller : null, + i = 'default', + o = this.data.hand + if (r && !window.hasNativeWebXRImplementation && ((o = r.hand), !e)) { + var a = r.id.match(v) + i = (a && a[0]) || i + } + return (t = f[o] || f.default), p + i + '/' + t + }, + injectTrackedControls: function () { + var e = this.data + this.el.setAttribute('tracked-controls', { + idPrefix: g, + controller: e.pair, + hand: e.hand, + armModel: !1, + }), + this.updateControllerModel() + }, + addControllersUpdateListener: function () { + this.el.sceneEl.addEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + removeControllersUpdateListener: function () { + this.el.sceneEl.removeEventListener( + 'controllersupdated', + this.onControllersUpdate, + !1, + ) + }, + onControllersUpdate: function () { + this.checkIfControllerPresent() + }, + onModelError: function (e) { + var t = this.createControllerModelUrl(!0) + e.detail.src !== t + ? (h( + 'Failed to load controller model for device, attempting to load default.', + ), + this.loadModel(t)) + : h('Failed to load default controller model.') + }, + loadModel: function (e) { + this.el.setAttribute('gltf-model', 'url(' + e + ')') + }, + onModelLoaded: function (e) { + var t, + n, + r, + i, + o = (this.controllerModel = e.detail.model), + a = this.loadedMeshInfo + if ((u('Processing model'), (a.buttonMeshes = {}), (a.axisMeshes = {}), o)) { + for (t = 0; t < this.mapping.buttons.length; t++) + (n = this.mapping.buttonMeshNames[this.mapping.buttons[t]]) + ? (r = o.getObjectByName(n)) + ? (i = { + index: t, + value: s(r, 'VALUE'), + pressed: s(r, 'PRESSED'), + unpressed: s(r, 'UNPRESSED'), + }).value && + i.pressed && + i.unpressed + ? (a.buttonMeshes[this.mapping.buttons[t]] = i) + : h( + 'Missing button submesh under mesh with name: ' + + n + + '(VALUE: ' + + !!i.value + + ', PRESSED: ' + + !!i.pressed + + ', UNPRESSED:' + + !!i.unpressed + + ')', + ) + : h('Missing button mesh with name: ' + n) + : u( + 'Skipping unknown button at index: ' + + t + + ' with mapped name: ' + + this.mapping.buttons[t], + ) + for (t = 0; t < this.mapping.axisMeshNames.length; t++) + (n = this.mapping.axisMeshNames[t]) + ? (r = o.getObjectByName(n)) + ? (i = { + index: t, + value: s(r, 'VALUE'), + min: s(r, 'MIN'), + max: s(r, 'MAX'), + }).value && + i.min && + i.max + ? (a.axisMeshes[t] = i) + : h( + 'Missing axis submesh under mesh with name: ' + + n + + '(VALUE: ' + + !!i.value + + ', MIN: ' + + !!i.min + + ', MAX:' + + !!i.max + + ')', + ) + : h('Missing axis mesh with name: ' + n) + : u('Skipping unknown axis at index: ' + t) + this.calculateRayOriginFromMesh(o), this.setModelVisibility() + } + function s(e, t) { + for (var n = 0, r = e.children.length; n < r; n++) { + var i = e.children[n] + if (i && i.name === t) return i + } + } + u('Model load complete.') + }, + calculateRayOriginFromMesh: (function () { + var e = new THREE.Quaternion() + return function (t) { + var n + if ( + (this.rayOrigin.origin.set(0, 0, 0), + this.rayOrigin.direction.set(0, 0, -1), + (this.rayOrigin.createdFromMesh = !0), + (n = t.getObjectByName(this.mapping.pointingPoseMeshName))) + ) { + var r = t.parent + r && ((t.parent = null), t.updateMatrixWorld(!0), (t.parent = r)), + n.getWorldPosition(this.rayOrigin.origin), + n.getWorldQuaternion(e), + this.rayOrigin.direction.applyQuaternion(e), + r && t.updateMatrixWorld(!0) + } else u('Mesh does not contain pointing origin data, defaulting to none.') + this.modelReady() + } + })(), + lerpAxisTransform: (function () { + var e = new THREE.Quaternion() + return function (t, n) { + var r = this.loadedMeshInfo.axisMeshes[t] + if (r) { + var i = r.min, + o = r.max, + a = r.value, + s = 0.5 * n + 0.5 + a.setRotationFromQuaternion(e.copy(i.quaternion).slerp(o.quaternion, s)), + a.position.lerpVectors(i.position, o.position, s) + } + } + })(), + lerpButtonTransform: (function () { + var e = new THREE.Quaternion() + return function (t, n) { + var r = this.loadedMeshInfo.buttonMeshes[t] + if (r) { + var i = r.unpressed, + o = r.pressed, + a = r.value + a.setRotationFromQuaternion(e.copy(i.quaternion).slerp(o.quaternion, n)), + a.position.lerpVectors(i.position, o.position, n) + } + } + })(), + modelReady: function () { + this.el.emit('controllermodelready', { + name: 'windows-motion-controls', + model: this.data.model, + rayOrigin: this.rayOrigin, + }) + }, + onButtonChanged: function (e) { + var t = this.mapping.buttons[e.detail.id] + t && + (this.loadedMeshInfo && + this.loadedMeshInfo.buttonMeshes && + this.lerpButtonTransform(t, e.detail.state.value), + this.el.emit(t + 'changed', e.detail.state)) + }, + onAxisMoved: function (e) { + var t = this.mapping.axisMeshNames.length + if (this.loadedMeshInfo && this.loadedMeshInfo.axisMeshes) + for (var n = 0; n < t; n++) this.lerpAxisTransform(n, e.detail.axis[n] || 0) + s(this, this.mapping.axes, e) + }, + setModelVisibility: function (e) { + var t = this.el.getObject3D('mesh') + ;(e = void 0 !== e ? e : this.modelVisible), + (this.modelVisible = e), + t && (t.visible = e) + }, + }) + }, + { + '../constants': 123, + '../core/component': 131, + '../utils/': 205, + '../utils/bind': 199, + '../utils/tracked-controls': 214, + }, + ], + 123: [ + function (e, t, n) { + t.exports = { + AFRAME_INJECTED: 'aframe-injected', + DEFAULT_CAMERA_HEIGHT: 1.6, + DEFAULT_HANDEDNESS: 'right', + keyboardevent: e('./keyboardevent'), + } + }, + { './keyboardevent': 124 }, + ], + 124: [ + function (e, t, n) { + t.exports = { + KEYCODE_TO_CODE: { + 38: 'ArrowUp', + 37: 'ArrowLeft', + 40: 'ArrowDown', + 39: 'ArrowRight', + 87: 'KeyW', + 65: 'KeyA', + 83: 'KeyS', + 68: 'KeyD', + }, + } + }, + {}, + ], + 125: [ + function (e, t, n) { + var r = e('./a-node'), + i = e('../utils/bind'), + o = e('../utils/debug'), + a = e('./a-register-element').registerElement, + s = e('../lib/three'), + l = new s.FileLoader(), + c = o('core:a-assets:warn') + function u(e) { + if (e.hasAttribute('autoplay') || 'auto' === e.getAttribute('preload')) + return new Promise(function (t, n) { + if (4 === e.readyState) return t() + if (e.error) return n() + function r() { + for (var n = 0, r = 0; r < e.buffered.length; r++) + n += e.buffered.end(r) - e.buffered.start(r) + n >= e.duration && + ('VIDEO' === e.tagName && (s.Cache.files[e.getAttribute('src')] = e), t()) + } + e.addEventListener('loadeddata', r, !1), + e.addEventListener('progress', r, !1), + e.addEventListener('error', n, !1) + }) + } + function h(e) { + var t = d(e) + return ( + t.tagName && + 'video' === t.tagName.toLowerCase() && + (t.setAttribute('playsinline', ''), t.setAttribute('webkit-playsinline', '')), + t !== e && (e.parentNode.appendChild(t), e.parentNode.removeChild(e)), + t + ) + } + function d(e) { + var t + if (e.hasAttribute('crossorigin')) return e + if (null !== (t = e.getAttribute('src'))) { + if (-1 === t.indexOf('://')) return e + if (p(t) === window.location.host) return e + } + return ( + c( + 'Cross-origin element (e.g., <img>) was requested without `crossorigin` set. A-Frame will re-request the asset with `crossorigin` attribute set. Please set `crossorigin` on the element (e.g., <img crossorigin="anonymous">)', + t, + ), + (e.crossOrigin = 'anonymous'), + e.cloneNode(!0) + ) + } + function p(e) { + var t = e.indexOf('://') > -1 ? e.split('/')[2] : e.split('/')[0] + return t.substring(0, t.indexOf(':')) + } + function f(e) { + var t = m(e), + n = t.lastIndexOf('.') + return n >= 0 && '.glb' === t.slice(n, e.search(/\?|#|$/)) + ? 'arraybuffer' + : 'text' + } + function m(e) { + var t = document.createElement('a') + t.href = e + var n = t.search.replace(/^\?/, ''), + r = e.replace(n, '').replace('?', '') + return r.substring(r.lastIndexOf('/') + 1) + } + ;(t.exports = a('a-assets', { + prototype: Object.create(r.prototype, { + createdCallback: { + value: function () { + ;(this.isAssets = !0), (this.fileLoader = l), (this.timeout = null) + }, + }, + attachedCallback: { + value: function () { + var e, + t, + n, + r, + o, + a, + l = this, + d = [] + if (!this.parentNode.isScene) + throw new Error('<a-assets> must be a child of a <a-scene>.') + for (o = this.querySelectorAll('img'), e = 0; e < o.length; e++) + (r = h(o[e])), + d.push( + new Promise(function (t, n) { + ;(s.Cache.files[o[e].getAttribute('src')] = r), + (r.onload = t), + (r.onerror = n) + }), + ) + for (n = this.querySelectorAll('audio, video'), e = 0; e < n.length; e++) + (t = h(n[e])).src || + t.srcObject || + c('Audio/video asset has neither `src` nor `srcObject` attributes.'), + d.push(u(t)) + Promise.all(d).then(i(this.load, this)), + (a = parseInt(this.getAttribute('timeout'), 10) || 3e3), + (this.timeout = setTimeout(function () { + l.hasLoaded || + (c('Asset loading timed out in ', a, 'ms'), + l.emit('timeout'), + l.load()) + }, a)) + }, + }, + detachedCallback: { + value: function () { + this.timeout && clearTimeout(this.timeout) + }, + }, + load: { + value: function () { + r.prototype.load.call(this, null, function (e) { + return e.isAssetItem && e.hasAttribute('src') + }) + }, + }, + }), + })), + a('a-asset-item', { + prototype: Object.create(r.prototype, { + createdCallback: { + value: function () { + ;(this.data = null), (this.isAssetItem = !0) + }, + }, + attachedCallback: { + value: function () { + var e = this, + t = this.getAttribute('src') + l.setResponseType(this.getAttribute('response-type') || f(t)), + l.load( + t, + function (t) { + ;(e.data = t), + setTimeout(function () { + r.prototype.load.call(e) + }) + }, + function (t) { + e.emit('progress', { + loadedBytes: t.loaded, + totalBytes: t.total, + xhr: t, + }) + }, + function (t) { + e.emit('error', { xhr: t }) + }, + ) + }, + }, + }), + }), + (t.exports.inferResponseType = f), + (t.exports.getFileNameFromURL = m) + }, + { + '../lib/three': 179, + '../utils/bind': 199, + '../utils/debug': 201, + './a-node': 129, + './a-register-element': 130, + }, + ], + 126: [ + function (e, t, n) { + var r = e('../utils/debug'), + i = e('./a-register-element').registerElement, + o = r('core:cubemap:warn') + t.exports = i('a-cubemap', { + prototype: Object.create(window.HTMLElement.prototype, { + attachedCallback: { + value: function () { + this.srcs = this.validate() + }, + writable: window.debug, + }, + validate: { + value: function () { + var e, + t = this.querySelectorAll('[src]'), + n = [] + if (6 === t.length) { + for (e = 0; e < t.length; e++) n.push(t[e].getAttribute('src')) + return n + } + o( + '<a-cubemap> did not contain exactly six elements each with a `src` attribute.', + ) + }, + writable: window.debug, + }, + }), + }) + }, + { '../utils/debug': 201, './a-register-element': 130 }, + ], + 127: [ + function (e, t, n) { + var r, + i = e('./a-node'), + o = e('./component').components, + a = e('./a-register-element').registerElement, + s = e('../lib/three'), + l = e('../utils/'), + c = l.debug('core:a-entity:debug'), + u = l.debug('core:a-entity:warn'), + h = '__', + d = ['position', 'rotation', 'scale', 'visible'], + p = { once: !0 }, + f = Object.create(i.prototype, { + createdCallback: { + value: function () { + ;(this.components = {}), + (this.initializingComponents = {}), + (this.componentsToUpdate = {}), + (this.isEntity = !0), + (this.isPlaying = !1), + (this.object3D = new s.Group()), + (this.object3D.el = this), + (this.object3DMap = {}), + (this.parentEl = null), + (this.rotationObj = {}), + (this.states = []) + }, + }, + attributeChangedCallback: { + value: function (e, t, n) { + var r = this.components[e] + r && r.justInitialized && '' === n + ? delete r.justInitialized + : (r || null !== n) && this.setEntityAttribute(e, t, n) + }, + }, + attachedCallback: { + value: function () { + var e, + t = this.sceneEl, + n = this + this.addToParent(), + this.isScene || + (t + ? !(e = t.querySelector('a-assets')) || e.hasLoaded + ? this.load() + : e.addEventListener('loaded', function () { + n.load() + }) + : this.load()) + }, + }, + detachedCallback: { + value: function () { + var e + if (this.parentEl) { + for (e in this.components) this.removeComponent(e, !1) + this.isScene || + (this.removeFromParent(), + i.prototype.detachedCallback.call(this), + (this.object3D.el = null)) + } + }, + }, + getObject3D: { + value: function (e) { + return this.object3DMap[e] + }, + }, + setObject3D: { + value: function (e, t) { + var n, + r = this + if (!(t instanceof s.Object3D)) + throw new Error( + '`Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.', + ) + ;(n = this.getObject3D(e)) && this.object3D.remove(n), + (t.el = this), + t.children.length && + t.traverse(function (e) { + e.el = r + }), + this.object3D.add(t), + (this.object3DMap[e] = t), + this.emit('object3dset', { object: t, type: e }) + }, + }, + removeObject3D: { + value: function (e) { + var t = this.getObject3D(e) + t + ? (this.object3D.remove(t), + delete this.object3DMap[e], + this.emit('object3dremove', { type: e })) + : u('Tried to remove `Object3D` of type:', e, 'which was not defined.') + }, + }, + getOrCreateObject3D: { + value: function (e, t) { + var n = this.getObject3D(e) + return ( + !n && t && ((n = new t()), this.setObject3D(e, n)), + u( + '`getOrCreateObject3D` has been deprecated. Use `setObject3D()` and `object3dset` event instead.', + ), + n + ) + }, + }, + add: { + value: function (e) { + if (!e.object3D) + throw new Error( + "Trying to add an element that doesn't have an `object3D`", + ) + this.object3D.add(e.object3D), this.emit('child-attached', { el: e }) + }, + }, + addToParent: { + value: function () { + var e = (this.parentEl = this.parentNode) + e && + e.add && + !this.attachedToParent && + (e.add(this), (this.attachedToParent = !0)) + }, + }, + removeFromParent: { + value: function () { + var e = this.parentEl + this.parentEl.remove(this), + (this.attachedToParent = !1), + (this.parentEl = null), + e.emit('child-detached', { el: this }) + }, + }, + load: { + value: function () { + var e = this + !this.hasLoaded && + this.parentEl && + i.prototype.load.call(this, function () { + e.parentEl && + (e.updateComponents(), + (e.isScene || e.parentEl.isPlaying) && e.play()) + }) + }, + writable: window.debug, + }, + remove: { + value: function (e) { + e ? this.object3D.remove(e.object3D) : this.parentNode.removeChild(this) + }, + }, + getChildEntities: { + value: function () { + for (var e = this.children, t = [], n = 0; n < e.length; n++) { + var i = e[n] + i instanceof r && t.push(i) + } + return t + }, + }, + initComponent: { + value: function (e, t, n) { + var r, i, a, s + if ( + ((s = (a = l.split(e, h))[0]), + (i = a.length > 2 ? a.slice(1).join('__') : a[1]), + o[s] && (m(this, e) || void 0 !== t || n) && !(e in this.components)) + ) { + if ((this.initComponentDependencies(s), i && !o[s].multiple)) + throw new Error( + 'Trying to initialize multiple components of type `' + + s + + '`. There can only be one component of this type per entity.', + ) + ;(r = new o[s].Component(this, t, i)), + this.isPlaying && r.play(), + this.hasAttribute(e) || + ((r.justInitialized = !0), + window.HTMLElement.prototype.setAttribute.call(this, e, '')), + c('Component initialized: %s', e) + } + }, + writable: window.debug, + }, + initComponentDependencies: { + value: function (e) { + var t, + n, + r = this + if (o[e] && (t = o[e].dependencies)) + for (n = 0; n < t.length; n++) + r.initComponent( + t[n], + window.HTMLElement.prototype.getAttribute.call(r, t[n]) || void 0, + !0, + ) + }, + }, + removeComponent: { + value: function (e, t) { + var n + ;(n = this.components[e]) && + (n.initialized + ? (n.pause(), + n.remove(), + t && (n.destroy(), delete this.components[e]), + this.emit('componentremoved', n.evtDetail, !1)) + : this.addEventListener('componentinitialized', function n(r) { + r.detail.name === e && + (this.removeComponent(e, t), + this.removeEventListener('componentinitialized', n)) + })) + }, + writable: window.debug, + }, + updateComponents: { + value: function () { + var e, + t, + n, + r, + i = this.componentsToUpdate + if (this.hasLoaded) { + for (n = 0; n < this.mixinEls.length; n++) + for (r in this.mixinEls[n].componentCache) y(r) && (i[r] = !0) + if (this.getExtraComponents) + for (r in (t = this.getExtraComponents())) y(r) && (i[r] = !0) + for (n = 0; n < this.attributes.length; ++n) + (r = this.attributes[n].name), + -1 === d.indexOf(r) && y(r) && (i[r] = !0) + for (n = 0; n < d.length; n++) + (r = d[n]), + this.hasAttribute(r) && + this.updateComponent(r, this.getDOMAttribute(r)) + for (r in i) + (e = g(this.getDOMAttribute(r), t && t[r])), + this.updateComponent(r, e), + delete i[r] + } + }, + writable: window.debug, + }, + updateComponent: { + value: function (e, t, n) { + var r = this.components[e] + if (r) + return null !== t || m(this, e) + ? void r.updateProperties(t, n) + : void this.removeComponent(e, !0) + this.initComponent(e, t, !1) + }, + }, + removeAttribute: { + value: function (e, t) { + var n = this.components[e] + n && void 0 === t && this.removeComponent(e, !0), + n && void 0 !== t + ? n.resetProperty(t) + : ('mixin' === e && this.mixinUpdate(''), + window.HTMLElement.prototype.removeAttribute.call(this, e)) + }, + }, + play: { + value: function () { + var e, t, n + if (!this.isPlaying && this.hasLoaded) { + for (n in ((this.isPlaying = !0), this.components)) + this.components[n].play() + for (e = this.getChildEntities(), t = 0; t < e.length; t++) e[t].play() + this.emit('play') + } + }, + writable: !0, + }, + pause: { + value: function () { + var e, t, n + if (this.isPlaying) { + for (n in ((this.isPlaying = !1), this.components)) + this.components[n].pause() + for (e = this.getChildEntities(), t = 0; t < e.length; t++) e[t].pause() + this.emit('pause') + } + }, + writable: !0, + }, + setEntityAttribute: { + value: function (e, t, n) { + if (o[e] || this.components[e]) this.updateComponent(e, n) + else if ('mixin' === e) { + if (n === this.computedMixinStr) return + this.mixinUpdate(n, t) + } + }, + }, + mixinUpdate: { + value: (function () { + var e = [] + return function (t, n) { + var r, + i, + o, + a, + s = this + if (this.hasLoaded) { + for ( + n = n || this.getAttribute('mixin'), + o = this.updateMixins(t, n), + e.length = 0, + a = 0; + a < this.mixinEls.length; + a++ + ) + for (r in this.mixinEls[a].componentCache) + -1 === e.indexOf(r) && + (this.components[r] + ? this.components[r].handleMixinUpdate() + : this.initComponent(r, null), + e.push(r)) + for (a = 0; a < o.oldMixinIds.length; a++) + if ((i = document.getElementById(o.oldMixinIds[a]))) + for (r in i.componentCache) + -1 === e.indexOf(r) && + this.components[r] && + (this.getDOMAttribute(r) + ? this.components[r].handleMixinUpdate() + : this.removeComponent(r, !0)) + } else + this.addEventListener( + 'loaded', + function () { + s.mixinUpdate(t, n) + }, + p, + ) + } + })(), + }, + setAttribute: { + value: (function () { + var e = {} + return function (t, n, r) { + var a, s, c, u, d + if (((c = (u = t.indexOf(h)) > 0 ? t.substring(0, u) : t), !o[c])) + return ( + 'mixin' === t && this.mixinUpdate(n), + void i.prototype.setAttribute.call(this, t, n) + ) + if ( + (!this.components[t] && + this.hasAttribute(t) && + this.updateComponent( + t, + window.HTMLElement.prototype.getAttribute.call(this, t), + ), + 'undefined' !== typeof r && + 'string' === typeof n && + n.length > 0 && + 'string' === typeof l.styleParser.parse(n)) + ) { + for (d in e) delete e[d] + ;((a = e)[n] = r), (s = !1) + } else (a = n), (s = !0 === r) + this.updateComponent(t, a, s), + this.sceneEl && + this.sceneEl.getAttribute('debug') && + this.components[t].flushToDOM() + } + })(), + writable: window.debug, + }, + flushToDOM: { + value: function (e) { + var t, + n, + r, + i = this.components, + o = this.children + for (r in i) i[r].flushToDOM() + if (e) + for (n = 0; n < o.length; ++n) (t = o[n]).flushToDOM && t.flushToDOM(e) + }, + }, + getAttribute: { + value: function (e) { + var t + return 'position' === e + ? this.object3D.position + : 'rotation' === e + ? b(this) + : 'scale' === e + ? this.object3D.scale + : 'visible' === e + ? this.object3D.visible + : (t = this.components[e]) + ? t.data + : window.HTMLElement.prototype.getAttribute.call(this, e) + }, + writable: window.debug, + }, + getDOMAttribute: { + value: function (e) { + var t = this.components[e] + return t + ? t.attrValue + : window.HTMLElement.prototype.getAttribute.call(this, e) + }, + writable: window.debug, + }, + addState: { + value: function (e) { + this.is(e) || (this.states.push(e), this.emit('stateadded', e)) + }, + }, + removeState: { + value: function (e) { + var t = this.states.indexOf(e) + ;-1 !== t && (this.states.splice(t, 1), this.emit('stateremoved', e)) + }, + }, + is: { + value: function (e) { + return -1 !== this.states.indexOf(e) + }, + }, + inspect: { + value: function () { + this.sceneEl.components.inspector.openInspector(this) + }, + }, + destroy: { + value: function () { + var e + if (this.parentNode) + u('Entity can only be destroyed if detached from scenegraph.') + else for (e in this.components) this.components[e].destroy() + }, + }, + }) + function m(e, t) { + return !(!e.components[t] || !e.components[t].attrValue) || v(t, e.mixinEls) + } + function v(e, t) { + var n, + r = !1 + for (n = 0; n < t.length && !(r = t[n].hasAttribute(e)); ++n); + return r + } + function g(e, t) { + return t + ? t.constructor === Object + ? l.extend(t, l.styleParser.parse(e || {})) + : e || t + : e + } + function y(e) { + return -1 !== e.indexOf(h) && (e = l.split(e, h)[0]), !!o[e] + } + function b(e) { + var t = s.Math.radToDeg, + n = e.object3D.rotation, + r = e.rotationObj + return (r.x = t(n.x)), (r.y = t(n.y)), (r.z = t(n.z)), r + } + ;(r = a('a-entity', { prototype: f })), (t.exports = r) + }, + { + '../lib/three': 179, + '../utils/': 205, + './a-node': 129, + './a-register-element': 130, + './component': 131, + }, + ], + 128: [ + function (e, t, n) { + var r = e('./a-node'), + i = e('./a-register-element').registerElement, + o = e('./component').components, + a = e('../utils'), + s = '__' + t.exports = i('a-mixin', { + prototype: Object.create(r.prototype, { + createdCallback: { + value: function () { + ;(this.componentCache = {}), + (this.id = this.getAttribute('id')), + (this.isMixin = !0) + }, + }, + attributeChangedCallback: { + value: function (e, t, n) { + this.cacheAttribute(e, n), this.updateEntities() + }, + }, + attachedCallback: { + value: function () { + ;(this.sceneEl = this.closestScene()), + this.cacheAttributes(), + this.updateEntities(), + this.load() + }, + }, + setAttribute: { + value: function (e, t) { + window.HTMLElement.prototype.setAttribute.call(this, e, t), + this.cacheAttribute(e, t) + }, + }, + cacheAttribute: { + value: function (e, t) { + var n, r + ;(r = a.split(e, s)[0]), + (n = o[r]) && + (void 0 === t && + (t = window.HTMLElement.prototype.getAttribute.call(this, e)), + (this.componentCache[e] = n.parseAttrValueForCache(t))) + }, + }, + getAttribute: { + value: function (e) { + return ( + this.componentCache[e] || + window.HTMLElement.prototype.getAttribute.call(this, e) + ) + }, + }, + cacheAttributes: { + value: function () { + var e, + t, + n = this.attributes + for (t = 0; t < n.length; t++) (e = n[t].name), this.cacheAttribute(e) + }, + }, + updateEntities: { + value: function () { + var e, t, n + if (this.sceneEl) + for ( + t = this.sceneEl.querySelectorAll('[mixin~=' + this.id + ']'), n = 0; + n < t.length; + n++ + ) + (e = t[n]).hasLoaded && !e.isMixin && e.mixinUpdate(this.id) + }, + }, + }), + }) + }, + { '../utils': 205, './a-node': 129, './a-register-element': 130, './component': 131 }, + ], + 129: [ + function (e, t, n) { + var r = e('./a-register-element').registerElement, + i = e('./a-register-element').isNode, + o = e('../utils/'), + a = o.debug('core:a-node:warn'), + s = o.debug('core:a-node:error') + t.exports = r('a-node', { + prototype: Object.create(window.HTMLElement.prototype, { + createdCallback: { + value: function () { + ;(this.computedMixinStr = ''), + (this.hasLoaded = !1), + (this.isNode = !0), + (this.mixinEls = []) + }, + writable: window.debug, + }, + attachedCallback: { + value: function () { + var e + ;(this.sceneEl = this.closestScene()), + this.sceneEl || + a( + 'You are attempting to attach <' + + this.tagName + + '> outside of an A-Frame scene. Append this element to `<a-scene>` instead.', + ), + (this.hasLoaded = !1), + this.emit('nodeready', void 0, !1), + this.isMixin || ((e = this.getAttribute('mixin')) && this.updateMixins(e)) + }, + writable: window.debug, + }, + attributeChangedCallback: { + value: function (e, t, n) { + n !== this.computedMixinStr && + ('mixin' !== e || this.isMixin || this.updateMixins(n, t)) + }, + }, + closestScene: { + value: function () { + for (var e = this; e && !e.isScene; ) e = e.parentElement + return e + }, + }, + closest: { + value: function (e) { + for ( + var t = + this.matches || + this.mozMatchesSelector || + this.msMatchesSelector || + this.oMatchesSelector || + this.webkitMatchesSelector, + n = this; + n && !t.call(n, e); + + ) + n = n.parentElement + return n + }, + }, + detachedCallback: { + value: function () { + this.hasLoaded = !1 + }, + }, + load: { + value: function (e, t) { + var n, + r = this + this.hasLoaded || + ((t = t || i), + (n = this.getChildren() + .filter(t) + .map(function (e) { + return new Promise(function (t) { + if (e.hasLoaded) return t() + e.addEventListener('loaded', t) + }) + })), + Promise.all(n) + .then(function () { + ;(r.hasLoaded = !0), e && e(), r.emit('loaded', void 0, !1) + }) + .catch(function (e) { + s('Failure loading node: ', e) + })) + }, + writable: !0, + }, + getChildren: { + value: function () { + return Array.prototype.slice.call(this.children, 0) + }, + }, + updateMixins: { + value: (function () { + var e = [], + t = [], + n = {} + return function (r, i) { + var a, s, l + for ( + e.length = 0, + t.length = 0, + s = r ? o.split(r.trim(), /\s+/) : e, + l = i ? o.split(i.trim(), /\s+/) : t, + n.newMixinIds = s, + n.oldMixinIds = l, + a = 0; + a < l.length; + a++ + ) + -1 === s.indexOf(l[a]) && this.unregisterMixin(l[a]) + for ( + this.computedMixinStr = '', this.mixinEls.length = 0, a = 0; + a < s.length; + a++ + ) + this.registerMixin(document.getElementById(s[a])) + return ( + this.computedMixinStr && + ((this.computedMixinStr = this.computedMixinStr.trim()), + window.HTMLElement.prototype.setAttribute.call( + this, + 'mixin', + this.computedMixinStr, + )), + n + ) + } + })(), + }, + registerMixin: { + value: function (e) { + var t, n, r + if (e) { + if ((r = e.getAttribute('mixin'))) + for (t = o.split(r.trim(), /\s+/), n = 0; n < t.length; n++) + this.registerMixin(document.getElementById(t[n])) + ;(this.computedMixinStr = this.computedMixinStr + ' ' + e.id), + this.mixinEls.push(e) + } + }, + }, + setAttribute: { + value: function (e, t) { + 'mixin' === e && this.updateMixins(t), + window.HTMLElement.prototype.setAttribute.call(this, e, t) + }, + }, + unregisterMixin: { + value: function (e) { + var t, + n = this.mixinEls + for (t = 0; t < n.length; ++t) + if (e === n[t].id) { + n.splice(t, 1) + break + } + }, + }, + emit: { + value: (function () { + var e = {} + return function (t, n, r, i) { + void 0 === r && (r = !0), + (e.bubbles = !!r), + (e.detail = n), + i && (e = o.extend({}, i, e)), + this.dispatchEvent(new CustomEvent(t, e)) + } + })(), + writable: window.debug, + }, + }), + }) + }, + { '../utils/': 205, './a-register-element': 130 }, + ], + 130: [ + function (e, t, n) { + var r, i + e('document-register-element') + var o = (t.exports.knownTags = {}) + function a(e) { + o[e.toLowerCase()] = !0 + } + function s(e) { + var t = {} + return ( + c( + t, + [ + 'attachedCallback', + 'attributeChangedCallback', + 'createdCallback', + 'detachedCallback', + ], + e, + r.prototype, + ), + h(e, t), + t + ) + } + function l(e) { + var t = {}, + n = [ + 'attachedCallback', + 'attributeChangedCallback', + 'createdCallback', + 'detachedCallback', + ] + return ( + c( + t, + [ + 'attachedCallback', + 'attributeChangedCallback', + 'createdCallback', + 'detachedCallback', + ], + e, + r.prototype, + ), + c(t, n, e, i.prototype), + h(e, t), + t + ) + } + function c(e, t, n, r) { + t.forEach(function (t) { + u(e, t, n, r) + }) + } + function u(e, t, n, r) { + var i = n[t], + o = r[t] + i && + o && + i !== o && + (e[t] = { + value: function () { + return o.apply(this, arguments), i.apply(this, arguments) + }, + writable: window.debug, + }) + } + function h(e, t) { + Object.getOwnPropertyNames(e).forEach(function (n) { + var r + t[n] || + ((r = Object.getOwnPropertyDescriptor(e, n)), + (t[n] = { value: e[n], writable: r.writable })) + }) + } + ;(t.exports.isNode = function (e) { + return e.tagName.toLowerCase() in o || e.isNode + }), + (t.exports.registerElement = function (e, t) { + var n = Object.getPrototypeOf(t.prototype), + o = t, + c = r && n === r.prototype, + u = i && n === i.prototype + return ( + (c || u) && a(e), + c && ((o = s(t.prototype)), (o = { prototype: Object.create(n, o) })), + u && ((o = l(t.prototype)), (o = { prototype: Object.create(n, o) })), + Object.getOwnPropertyNames(o.prototype).forEach(function (e) { + var t = o.prototype[e] + 'function' === typeof t && (t.displayName = e) + }), + document.registerElement(e, o) + ) + }), + (t.exports.wrapMethods = c), + (r = e('./a-node')), + (i = e('./a-entity')) + }, + { './a-entity': 127, './a-node': 129, 'document-register-element': 12 }, + ], + 131: [ + function (e, t, n) { + var r = e('./schema'), + i = e('./scene/scenes'), + o = e('./system'), + a = e('../utils/'), + s = (t.exports.components = {}), + l = r.parseProperties, + c = r.parseProperty, + u = r.process, + h = r.isSingleProperty, + d = r.stringifyProperties, + p = r.stringifyProperty, + f = a.styleParser, + m = a.debug('core:component:warn'), + v = document.currentScript, + g = new RegExp('[A-Z]+'), + y = {}, + b = (t.exports.Component = function (e, t, n) { + var r = this + ;(this.el = e), + (this.id = n), + (this.attrName = this.name + (n ? '__' + n : '')), + (this.evtDetail = { id: this.id, name: this.name }), + (this.initialized = !1), + (this.isSingleProperty = h(this.schema)), + (this.isSinglePropertyObject = + this.isSingleProperty && + S(c(void 0, this.schema)) && + !(this.schema.default instanceof window.HTMLElement)), + (this.isObjectBased = !this.isSingleProperty || this.isSinglePropertyObject), + (this.el.components[this.attrName] = this), + (this.objectPool = y[this.name]) + const i = this.events + ;(this.events = {}), + A(this, i), + (this.attrValue = void 0), + this.isObjectBased + ? ((this.nextData = this.objectPool.use()), + a.objectPool.removeUnusedKeys(this.nextData, this.schema), + (this.oldData = this.objectPool.use()), + a.objectPool.removeUnusedKeys(this.oldData, this.schema), + (this.previousOldData = this.objectPool.use()), + a.objectPool.removeUnusedKeys(this.previousOldData, this.schema), + (this.parsingAttrValue = this.objectPool.use()), + a.objectPool.removeUnusedKeys(this.parsingAttrValue, this.schema)) + : ((this.nextData = void 0), + (this.oldData = void 0), + (this.previousOldData = void 0), + (this.parsingAttrValue = void 0)), + (this.throttledEmitComponentChanged = a.throttle(function () { + e.emit('componentchanged', r.evtDetail, !1) + }, 200)), + this.updateProperties(t) + }) + function A(e, t) { + var n + for (n in t) e.events[n] = t[n].bind(e) + } + if ( + ((b.prototype = { + schema: {}, + init: function () {}, + events: {}, + update: function (e) {}, + updateSchema: void 0, + tick: void 0, + tock: void 0, + play: function () {}, + pause: function () {}, + remove: function () {}, + parse: function (e, t) { + var n = this.schema + return this.isSingleProperty ? c(e, n) : l(f.parse(e), n, !0, this.name, t) + }, + stringify: function (e) { + var t = this.schema + return 'string' === typeof e + ? e + : this.isSingleProperty + ? p(e, t) + : ((e = d(e, t)), f.stringify(e)) + }, + updateCachedAttrValue: function (e, t) { + var n, r, i + if (void 0 !== e) { + if (null === e) + return ( + this.isObjectBased && + this.attrValue && + this.objectPool.recycle(this.attrValue), + void (this.attrValue = void 0) + ) + if ( + (e instanceof Object && !(e instanceof window.HTMLElement) + ? ((r = this.objectPool.use()), (n = a.extend(r, e))) + : (n = this.parseAttrValueForCache(e)), + this.isObjectBased && !t && this.attrValue) + ) + for (i in this.attrValue) void 0 === n[i] && (n[i] = this.attrValue[i]) + this.isObjectBased && + !this.attrValue && + (this.attrValue = this.objectPool.use()), + a.objectPool.clearObject(this.attrValue), + (this.attrValue = E(this.attrValue, n, this.isObjectBased)), + a.objectPool.clearObject(r) + } + }, + parseAttrValueForCache: function (e) { + var t + return 'string' !== typeof e + ? e + : (this.isSingleProperty + ? 'string' === typeof (t = this.schema.parse(e)) && (t = e) + : (a.objectPool.clearObject(this.parsingAttrValue), + (t = f.parse(e, this.parsingAttrValue))), + t) + }, + flushToDOM: function (e) { + var t = e ? this.data : this.attrValue + null !== t && + void 0 !== t && + window.HTMLElement.prototype.setAttribute.call( + this.el, + this.attrName, + this.stringify(t), + ) + }, + updateProperties: function (e, t) { + this.el.hasLoaded + ? (null !== e && (e = this.parseAttrValueForCache(e)), + this.updateCachedAttrValue(e, t), + this.initialized + ? (this.updateComponent(e, t), this.callUpdateHandler()) + : this.initComponent()) + : this.updateCachedAttrValue(e) + }, + initComponent: function () { + var e, + t = this.el + this.updateSchema && + this.updateSchema(this.buildData(this.attrValue, !1, !0)), + (this.data = this.buildData(this.attrValue)), + t.initializingComponents[this.name] || + ((t.initializingComponents[this.name] = !0), + this.init(), + (this.initialized = !0), + delete t.initializingComponents[this.name], + (this.oldData = E(this.oldData, this.data, this.isObjectBased)), + (e = this.isObjectBased ? this.objectPool.use() : void 0), + this.update(e), + this.isObjectBased && this.objectPool.recycle(e), + t.isPlaying && this.play(), + t.emit('componentinitialized', this.evtDetail, !1)) + }, + updateComponent: function (e, t) { + var n, r + if (t) + return ( + this.updateSchema && + this.updateSchema(this.buildData(this.attrValue, !0, !0)), + void (this.data = this.buildData(this.attrValue, !0, !1)) + ) + if (this.isSingleProperty) + return this.isObjectBased && c(e, this.schema), void (this.data = e) + if ((l(e, this.schema, !0, this.name), this.schemaChangeKeys.length)) + for (n in e) + if (this.schema[n].schemaChange) { + r = !0 + break + } + if (r) + return ( + this.updateSchema && + this.updateSchema(this.buildData(this.attrValue, !0, !0)), + void (this.data = this.buildData(this.attrValue, !0, !1)) + ) + for (n in e) void 0 !== e[n] && (this.data[n] = e[n]) + }, + callUpdateHandler: function () { + var e + this.previousOldData instanceof Object && + a.objectPool.clearObject(this.previousOldData), + this.isObjectBased + ? x(this.previousOldData, this.oldData) + : (this.previousOldData = this.oldData), + (e = !a.deepEqual(this.oldData, this.data)), + (this.isPositionRotationScale || e) && + (this.oldData instanceof Object && a.objectPool.clearObject(this.oldData), + (this.oldData = E(this.oldData, this.data, this.isObjectBased)), + this.update(this.previousOldData), + this.throttledEmitComponentChanged()) + }, + handleMixinUpdate: function () { + ;(this.data = this.buildData(this.attrValue)), this.callUpdateHandler() + }, + resetProperty: function (e) { + if (this.isObjectBased) { + if (!(e in this.attrValue)) return + delete this.attrValue[e], (this.data[e] = this.schema[e].default) + } else + (this.attrValue = this.schema.default), (this.data = this.schema.default) + this.updateProperties(this.attrValue) + }, + extendSchema: function (e) { + var t + ;(t = a.extend({}, s[this.name].schema)), + a.extend(t, e), + (this.schema = u(t)), + this.el.emit('schemachanged', this.evtDetail) + }, + buildData: function (e, t, n) { + var r, + i, + o, + s, + u, + h, + d, + p = this.nextData, + f = this.schema, + m = this.el.mixinEls + if ( + ((r = e && e.constructor === Array ? e.length : void 0 !== e && null !== e), + this.isObjectBased && a.objectPool.clearObject(p), + this.isSingleProperty) + ) + i = this.isObjectBased + ? x(p, f.default) + : C(f.default) + ? a.clone(f.default) + : f.default + else + for (s in ((i = (d = !t && this.attrValue) instanceof Object ? x(p, d) : p), + f)) + (o = f[s].default), void 0 === i[s] && (i[s] = C(o) ? a.clone(o) : o) + for (h = 0; h < m.length; h++) + (u = m[h].getAttribute(this.attrName)) && (i = E(i, u, this.isObjectBased)) + if (r) { + if (this.isSingleProperty) + return S(e) + ? (x(this.parsingAttrValue, e), c(this.parsingAttrValue, f)) + : c(e, f) + i = E(i, e, this.isObjectBased) + } else if (this.isSingleProperty) return c(i, f) + return l(i, f, void 0, this.name, n) + }, + eventsAttach: function () { + var e + for (e in (this.eventsDetach(), this.events)) + this.el.addEventListener(e, this.events[e]) + }, + eventsDetach: function () { + var e + for (e in this.events) this.el.removeEventListener(e, this.events[e]) + }, + destroy: function () { + this.objectPool.recycle(this.attrValue), + this.objectPool.recycle(this.oldData), + this.objectPool.recycle(this.parsingAttrValue), + (this.attrValue = this.oldData = this.parsingAttrValue = void 0) + }, + }), + window.debug) + ) + var w = (t.exports.registrationOrderWarnings = {}) + function x(e, t) { + var n, r + for (r in t) void 0 !== t[r] && ((n = t[r]), (e[r] = C(n) ? a.clone(n) : n)) + return e + } + function E(e, t, n) { + var r + if (n && t.constructor === Object) { + for (r in t) + void 0 !== t[r] && + (t[r] && t[r].constructor === Object + ? (e[r] = a.clone(t[r])) + : (e[r] = t[r])) + return e + } + return t + } + function M(e) { + return e.tick || e.tock + } + function _(e) { + return function () { + var t = this.el.sceneEl + this.isPlaying && + (e.call(this), + (this.isPlaying = !1), + this.eventsDetach(), + M(this) && t.removeBehavior(this)) + } + } + function T(e) { + return function () { + var t = this.el.sceneEl, + n = this.el.isPlaying && !this.isPlaying + this.initialized && + n && + (e.call(this), + (this.isPlaying = !0), + this.eventsAttach(), + M(this) && t.addBehavior(this)) + } + } + function S(e) { + return e && e.constructor === Object && !(e instanceof window.HTMLElement) + } + function C(e) { + return ( + e && + (e.constructor === Object || e.constructor === Array) && + !(e instanceof window.HTMLElement) + ) + } + t.exports.registerComponent = function (e, t) { + var n, + r, + l, + c, + d = {} + if ( + (document.currentScript && + document.currentScript !== v && + i.forEach(function (t) { + t.hasLoaded || + (document.currentScript.compareDocumentPosition(t) !== + Node.DOCUMENT_POSITION_FOLLOWING && + (m( + 'The component `' + + e + + '` was registered in a <script> tag after the scene. Component <script> tags in an HTML file should be declared *before* the scene such that the component is available to entities during scene initialization.', + ), + window.debug && (w[e] = !0))) + }), + !0 === g.test(e) && + m( + 'The component name `' + + e + + '` contains uppercase characters, but HTML will ignore the capitalization of attribute names. Change the name to be lowercase: `' + + e.toLowerCase() + + '`', + ), + -1 !== e.indexOf('__')) + ) + throw new Error( + 'The component name `' + + e + + '` is not allowed. The sequence __ (double underscore) is reserved to specify an id for multiple components of the same type', + ) + if ( + (Object.keys(t).forEach(function (e) { + d[e] = { value: t[e], writable: !0 } + }), + s[e]) + ) + throw new Error( + 'The component `' + + e + + '` has been already registered. Check that you are not loading two versions of the same component or two different components of the same name.', + ) + if ( + (((n = function (e, t, n) { + b.call(this, e, t, n) + }).prototype = Object.create(b.prototype, d)), + (n.prototype.name = e), + (n.prototype.isPositionRotationScale = + 'position' === e || 'rotation' === e || 'scale' === e), + (n.prototype.constructor = n), + (n.prototype.system = o && o.systems[e]), + (n.prototype.play = T(n.prototype.play)), + (n.prototype.pause = _(n.prototype.pause)), + (l = a.extend(u(n.prototype.schema, n.prototype.name))), + !(c = h(n.prototype.schema))) + ) + for (r in ((n.prototype.schemaChangeKeys = []), l)) + l[r].schemaChange && n.prototype.schemaChangeKeys.push(r) + return ( + (y[e] = a.objectPool.createPool()), + (s[e] = { + Component: n, + dependencies: n.prototype.dependencies, + isSingleProp: c, + multiple: n.prototype.multiple, + name: e, + parse: n.prototype.parse, + parseAttrValueForCache: n.prototype.parseAttrValueForCache, + schema: l, + stringify: n.prototype.stringify, + type: n.prototype.type, + }), + n + ) + } + }, + { '../utils/': 205, './scene/scenes': 138, './schema': 140, './system': 142 }, + ], + 132: [ + function (e, t, n) { + var r = e('./schema').process, + i = (t.exports.geometries = {}), + o = (t.exports.geometryNames = []), + a = e('../lib/three'), + s = (t.exports.Geometry = function () {}) + ;(s.prototype = { + schema: {}, + init: function (e) { + return (this.geometry = new a.BufferGeometry()), this.geometry + }, + update: function (e) {}, + }), + (t.exports.registerGeometry = function (e, t) { + var n, + a = {} + if ( + (Object.keys(t).forEach(function (e) { + a[e] = { value: t[e], writable: !0 } + }), + i[e]) + ) + throw new Error('The geometry `' + e + '` has been already registered') + return ( + ((n = function () { + s.call(this) + }).prototype = Object.create(s.prototype, a)), + (n.prototype.name = e), + (n.prototype.constructor = n), + (i[e] = { Geometry: n, schema: r(n.prototype.schema) }), + o.push(e), + n + ) + }) + }, + { '../lib/three': 179, './schema': 140 }, + ], + 133: [ + function (e, t, n) { + var r = e('../utils/coordinates'), + i = e('debug'), + o = i('core:propertyTypes:warn'), + a = i('core:propertyTypes:warn'), + s = (t.exports.propertyTypes = {}), + l = /[,> .[\]:]/, + c = /\url\((.+)\)/ + function u(e, t, n, r) { + 'type' in s + ? o('Property type ' + e + ' is already registered.') + : (s[e] = { default: t, parse: n || f, stringify: r || m }) + } + function h(e) { + return Array.isArray(e) + ? e + : e && 'string' === typeof e + ? e.split(',').map(t) + : [] + function t(e) { + return e.trim() + } + } + function d(e) { + return e.join(', ') + } + function p(e) { + var t, n + return 'string' !== typeof e + ? e + : (n = e.match(c)) + ? n[1] + : '#' === e.charAt(0) + ? (t = document.getElementById(e.substring(1))) + ? 'CANVAS' === t.tagName || 'VIDEO' === t.tagName || 'IMG' === t.tagName + ? t + : t.getAttribute('src') + : void a('"' + e + '" asset not found.') + : e + } + function f(e) { + return e + } + function m(e) { + return null === e ? 'null' : e.toString() + } + function v(e) { + return 'false' !== e && !1 !== e + } + function g(e) { + return parseInt(e, 10) + } + function y(e) { + return parseFloat(e, 10) + } + function b(e) { + return e + ? 'string' !== typeof e + ? e + : '#' !== e[0] || l.test(e) + ? document.querySelector(e) + : document.getElementById(e.substring(1)) + : null + } + function A(e) { + return e + ? 'string' !== typeof e + ? e + : Array.prototype.slice.call(document.querySelectorAll(e), 0) + : null + } + function w(e) { + return e.getAttribute ? '#' + e.getAttribute('id') : m(e) + } + function x(e) { + return e instanceof Array + ? e + .map(function (e) { + return '#' + e.getAttribute('id') + }) + .join(', ') + : m(e) + } + function E(e) { + return a('`src` property type is deprecated. Use `asset` instead.'), p(e) + } + function M(e) { + return r.parse(e, this.default) + } + function _(e, t) { + return ( + ('audio' !== e || 'string' === typeof t) && + !('array' === e && !Array.isArray(t)) && + ('asset' !== e || 'string' === typeof t) && + ('boolean' !== e || 'boolean' === typeof t) && + ('color' !== e || 'string' === typeof t) && + ('int' !== e || 'number' === typeof t) && + ('number' !== e || 'number' === typeof t) && + ('map' !== e || 'string' === typeof t) && + ('model' !== e || 'string' === typeof t) && + ('selector' !== e || 'string' === typeof t || null === t) && + ('selectorAll' !== e || 'string' === typeof t || null === t) && + ('src' !== e || 'string' === typeof t) && + ('string' !== e || 'string' === typeof t) && + ('time' !== e || 'number' === typeof t) && + ('vec2' === e ? T(t, 2) : 'vec3' === e ? T(t, 3) : 'vec4' !== e || T(t, 4)) + ) + } + function T(e, t) { + if (null === e) return !0 + if ('object' !== typeof e) return !1 + if (Object.keys(e).length !== t) return !1 + var n = e.x, + r = e.y, + i = e.z, + o = e.w + return ( + 'number' === typeof n && + 'number' === typeof r && + !(t > 2 && 'number' !== typeof i) && + !(t > 3 && 'number' !== typeof o) + ) + } + u('audio', '', p), + u('array', [], h, d), + u('asset', '', p), + u('boolean', !1, v), + u('color', '#FFF', f, m), + u('int', 0, g), + u('number', 0, y), + u('map', '', p), + u('model', '', p), + u('selector', null, b, w), + u('selectorAll', null, A, x), + u('src', '', E), + u('string', '', f, m), + u('time', 0, g), + u('vec2', { x: 0, y: 0 }, M, r.stringify), + u('vec3', { x: 0, y: 0, z: 0 }, M, r.stringify), + u('vec4', { x: 0, y: 0, z: 0, w: 1 }, M, r.stringify), + (t.exports.registerPropertyType = u), + (t.exports.isValidDefaultValue = _), + (t.exports.isValidDefaultCoordinate = T) + }, + { '../utils/coordinates': 200, debug: 8 }, + ], + 134: [ + function (e, t, n) { + var r = e('./metaTags').inject, + i = e('./wakelock'), + o = e('./loadingScreen'), + a = e('../a-register-element'), + s = e('./scenes'), + l = e('../system').systems, + c = e('../../lib/three'), + u = e('../../utils/'), + h = e('../a-entity'), + d = e('../a-node'), + p = e('./postMessage'), + f = u.bind, + m = u.device.isIOS(), + v = u.device.isMobile(), + g = u.device.isWebXRAvailable, + y = a.registerElement, + b = u.debug('core:a-scene:warn') + function A(e, t, n, r) { + return e.parentElement + ? t + ? { height: e.parentElement.offsetHeight, width: e.parentElement.offsetWidth } + : w(n, r) + : { height: 0, width: 0 } + } + function w(e, t) { + var n, + r, + i = window.devicePixelRatio + return ( + (r = { height: document.body.offsetHeight, width: document.body.offsetWidth }), + !e || + t || + (-1 === e.width && -1 === e.height) || + (r.width * i < e.width && r.height * i < e.height) || + ((n = r.width / r.height), + r.width * i > e.width && + -1 !== e.width && + ((r.width = Math.round(e.width / i)), + (r.height = Math.round(e.width / n / i))), + r.height * i > e.height && + -1 !== e.height && + ((r.height = Math.round(e.height / i)), + (r.width = Math.round((e.height * n) / i)))), + r + ) + } + function x(e) { + ;( + e.requestFullscreen || + e.webkitRequestFullscreen || + e.mozRequestFullScreen || + e.msRequestFullscreen + ).apply(e, [{ navigationUI: 'hide' }]) + } + function E() { + ;(document.fullscreenElement || + document.webkitFullscreenElement || + document.mozFullScreenElement) && + (document.exitFullscreen + ? document.exitFullscreen() + : document.mozCancelFullScreen + ? document.mozCancelFullScreen() + : document.webkitExitFullscreen && document.webkitExitFullscreen()) + } + function M(e) { + var t + function n() { + document.fullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || + e.exitVR(), + document.activeElement.blur(), + document.body.focus() + } + ;(t = document.createElement('canvas')).classList.add('a-canvas'), + (t.dataset.aframeCanvas = !0), + e.appendChild(t), + document.addEventListener('fullscreenchange', n), + document.addEventListener('mozfullscreenchange', n), + document.addEventListener('webkitfullscreenchange', n), + document.addEventListener('MSFullscreenChange', n), + t.addEventListener('touchmove', function (e) { + e.preventDefault() + }), + (e.canvas = t), + e.emit('render-target-loaded', { target: t }), + setTimeout(f(e.resize, e), 0) + } + m && e('../../utils/ios-orientationchange-blank-bug'), + (t.exports.AScene = y('a-scene', { + prototype: Object.create(h.prototype, { + createdCallback: { + value: function () { + ;(this.clock = new c.Clock()), + (this.isIOS = m), + (this.isMobile = v), + (this.hasWebXR = g), + (this.isAR = !1), + (this.isScene = !0), + (this.object3D = new c.Scene()) + var e = this + ;(this.object3D.onAfterRender = function (t, n, r) { + e.isPlaying && e.tock(e.time, e.delta, r) + }), + (this.resize = f(this.resize, this)), + (this.render = f(this.render, this)), + (this.systems = {}), + (this.systemNames = []), + (this.time = this.delta = 0), + (this.behaviors = { tick: [], tock: [] }), + (this.hasLoaded = !1), + (this.isPlaying = !1), + (this.originalHTML = this.innerHTML), + this.setAttribute('inspector', ''), + this.setAttribute('keyboard-shortcuts', ''), + this.setAttribute('screenshot', ''), + this.setAttribute('vr-mode-ui', ''), + this.setAttribute('device-orientation-permission-ui', '') + }, + }, + addFullScreenStyles: { + value: function () { + document.documentElement.classList.add('a-fullscreen') + }, + }, + removeFullScreenStyles: { + value: function () { + document.documentElement.classList.remove('a-fullscreen') + }, + }, + attachedCallback: { + value: function () { + var e = this, + t = this.hasAttribute('embedded') + M(this), + this.setupRenderer(), + o.setup(this, A), + this.resize(), + t || this.addFullScreenStyles(), + p(this), + r(this), + i(this), + (this.onVRPresentChangeBound = f(this.onVRPresentChange, this)), + window.addEventListener( + 'vrdisplaypresentchange', + this.onVRPresentChangeBound, + ), + (this.enterVRBound = function () { + e.enterVR() + }), + (this.exitVRBound = function () { + e.exitVR() + }), + (this.exitVRTrueBound = function () { + e.exitVR(!0) + }), + (this.pointerRestrictedBound = function () { + e.pointerRestricted() + }), + (this.pointerUnrestrictedBound = function () { + e.pointerUnrestricted() + }), + g || + (window.addEventListener('vrdisplaydeactivate', this.exitVRBound), + window.addEventListener('vrdisplaydisconnect', this.exitVRTrueBound), + window.addEventListener( + 'vrdisplaypointerrestricted', + this.pointerRestrictedBound, + ), + window.addEventListener( + 'vrdisplaypointerunrestricted', + this.pointerUnrestrictedBound, + )), + window.addEventListener('sessionend', this.resize), + this.addEventListener('cameraready', function () { + e.attachedCallbackPostCamera() + }), + this.initSystems(), + this.hasWebXR && + navigator.xr && + navigator.xr.addEventListener && + navigator.xr.addEventListener('sessiongranted', function () { + e.enterVR() + }) + }, + }, + attachedCallbackPostCamera: { + value: function () { + var e, + t = this + window.addEventListener('load', e), + window.addEventListener('resize', function () { + t.isIOS ? setTimeout(t.resize, 100) : t.resize() + }), + this.play(), + s.push(this) + }, + writable: window.debug, + }, + initSystems: { + value: function () { + var e + for (e in (this.initSystem('camera'), l)) + 'camera' !== e && this.initSystem(e) + }, + }, + initSystem: { + value: function (e) { + this.systems[e] || + ((this.systems[e] = new l[e](this)), this.systemNames.push(e)) + }, + }, + detachedCallback: { + value: function () { + var e = s.indexOf(this) + s.splice(e, 1), + window.removeEventListener( + 'vrdisplaypresentchange', + this.onVRPresentChangeBound, + ), + window.removeEventListener('vrdisplayactivate', this.enterVRBound), + window.removeEventListener('vrdisplaydeactivate', this.exitVRBound), + window.removeEventListener('vrdisplayconnect', this.enterVRBound), + window.removeEventListener('vrdisplaydisconnect', this.exitVRTrueBound), + window.removeEventListener( + 'vrdisplaypointerrestricted', + this.pointerRestrictedBound, + ), + window.removeEventListener( + 'vrdisplaypointerunrestricted', + this.pointerUnrestrictedBound, + ), + window.removeEventListener('sessionend', this.resize), + this.renderer.xr.dispose() + }, + }, + addBehavior: { + value: function (e) { + var t, + n, + r = this.behaviors + for (n in r) + e[n] && -1 === (t = this.behaviors[n]).indexOf(e) && t.push(e) + }, + }, + getPointerLockElement: { + value: function () { + return document.pointerLockElement + }, + writable: window.debug, + }, + checkHeadsetConnected: { + value: u.device.checkHeadsetConnected, + writable: window.debug, + }, + enterAR: { + value: function () { + var e + if (!this.hasWebXR) + throw ( + ((e = 'Failed to enter AR mode, WebXR not supported.'), new Error(e)) + ) + if (!u.device.checkARSupport()) + throw ( + ((e = + 'Failed to enter AR, WebXR immersive-ar mode not supported in your browser or device.'), + new Error(e)) + ) + return this.enterVR(!0) + }, + }, + enterVR: { + value: function (e) { + var t, + n, + r = this, + i = r.renderer.xr + if (this.is('vr-mode')) return Promise.resolve('Already in VR.') + if (this.checkHeadsetConnected() || this.isMobile) { + if (((i.enabled = !0), this.hasWebXR)) { + this.xrSession && + this.xrSession.removeEventListener('end', this.exitVRBound) + var o = this.sceneEl.systems.webxr.sessionReferenceSpaceType + i.setReferenceSpaceType(o) + var a = e ? 'immersive-ar' : 'immersive-vr' + return ( + (n = this.sceneEl.systems.webxr.sessionConfiguration), + new Promise(function (e, t) { + navigator.xr.requestSession(a, n).then( + function (t) { + ;(r.xrSession = t), + (i.layersEnabled = + -1 !== n.requiredFeatures.indexOf('layers')), + i.setSession(t), + t.addEventListener('end', r.exitVRBound), + c(e) + }, + function (e) { + throw new Error( + 'Failed to enter ' + + ('immersive-ar' === a ? 'AR' : 'VR') + + ' mode (`requestSession`) ' + + e, + ) + }, + ) + }) + ) + } + if ( + ((t = u.device.getVRDisplay()), + i.setDevice(t), + t.isPresenting && !window.hasNativeWebVRImplementation) + ) + return c(), Promise.resolve() + var s = this.getAttribute('renderer'), + l = { + highRefreshRate: s.highRefreshRate, + foveationLevel: s.foveationLevel, + } + return t + .requestPresent([{ source: this.canvas, attributes: l }]) + .then(c, h) + } + return c(), Promise.resolve() + function c(t) { + var n + window.hasNativeWebVRImplementation && + !window.hasNativeWebXRImplementation && + ((n = new CustomEvent('vrdisplaypresentchange', { + detail: { display: u.device.getVRDisplay() }, + })), + window.dispatchEvent(n)), + e ? r.addState('ar-mode') : r.addState('vr-mode'), + r.emit('enter-vr', { target: r }), + !g && + r.isMobile && + screen.orientation && + screen.orientation.lock && + screen.orientation.lock('landscape'), + r.addFullScreenStyles(), + r.isMobile || r.checkHeadsetConnected() || x(r.canvas), + r.renderer.setAnimationLoop(r.render), + r.resize(), + t && t() + } + function h(e) { + throw ( + (r.removeState('vr-mode'), + e && e.message + ? new Error( + 'Failed to enter VR mode (`requestPresent`): ' + e.message, + ) + : new Error('Failed to enter VR mode (`requestPresent`).')) + ) + } + }, + writable: !0, + }, + exitVR: { + value: function () { + var e, + t = this, + n = this.renderer.xr + if (!this.is('vr-mode') && !this.is('ar-mode')) + return Promise.resolve('Not in immersive mode.') + if (this.checkHeadsetConnected() || this.isMobile) { + if (((n.enabled = !1), (e = u.device.getVRDisplay()), this.hasWebXR)) + this.xrSession.removeEventListener('end', this.exitVRBound), + this.xrSession.end().then( + function () {}, + function () {}, + ), + (this.xrSession = void 0), + n.setSession(null) + else if (e.isPresenting) return e.exitPresent().then(r, i) + } else E() + return r(), Promise.resolve() + function r() { + t.removeState('vr-mode'), + t.removeState('ar-mode'), + t.isMobile && + screen.orientation && + screen.orientation.unlock && + screen.orientation.unlock(), + t.hasAttribute('embedded') && t.removeFullScreenStyles(), + t.resize(), + t.isIOS && u.forceCanvasResizeSafariMobile(t.canvas), + t.renderer.setPixelRatio(window.devicePixelRatio), + t.emit('exit-vr', { target: t }) + } + function i(e) { + throw e && e.message + ? new Error('Failed to exit VR mode (`exitPresent`): ' + e.message) + : new Error('Failed to exit VR mode (`exitPresent`).') + } + }, + writable: !0, + }, + pointerRestricted: { + value: function () { + if (this.canvas) { + var e = this.getPointerLockElement() + e && + e !== this.canvas && + document.exitPointerLock && + document.exitPointerLock(), + this.canvas.requestPointerLock && this.canvas.requestPointerLock() + } + }, + }, + pointerUnrestricted: { + value: function () { + var e = this.getPointerLockElement() + e && + e === this.canvas && + document.exitPointerLock && + document.exitPointerLock() + }, + }, + onVRPresentChange: { + value: function (e) { + var t = e.display || e.detail.display + t && t.isPresenting ? this.enterVR() : this.exitVR() + }, + }, + getAttribute: { + value: function (e) { + var t = this.systems[e] + return t ? t.data : h.prototype.getAttribute.call(this, e) + }, + }, + getComputedAttribute: { + value: function (e) { + b('`getComputedAttribute` is deprecated. Use `getAttribute` instead.'), + this.getAttribute(e) + }, + }, + getDOMAttribute: { + value: function (e) { + var t = this.systems[e] + return t ? t.data : h.prototype.getDOMAttribute.call(this, e) + }, + }, + setAttribute: { + value: function (e, t, n) { + var r = this.systems[e] + if (r) + return ( + d.prototype.setAttribute.call(this, e, t), void r.updateProperties(t) + ) + h.prototype.setAttribute.call(this, e, t, n) + }, + }, + removeBehavior: { + value: function (e) { + var t, + n, + r, + i = this.behaviors + for (n in i) + e[n] && + -1 !== (r = (t = this.behaviors[n]).indexOf(e)) && + t.splice(r, 1) + }, + }, + resize: { + value: function () { + var e, + t, + n = this.camera, + r = this.canvas, + i = this.renderer.xr.isPresenting + ;(e = this.renderer.xr.enabled && i), + !n || + !r || + (this.is('vr-mode') && (this.isMobile || e)) || + ((t = A( + r, + this.getAttribute('embedded') && !this.is('vr-mode'), + this.maxCanvasSize, + this.is('vr-mode'), + )), + (n.aspect = t.width / t.height), + n.updateProjectionMatrix(), + this.renderer.setSize(t.width, t.height, !1), + this.emit('rendererresize', null, !1)) + }, + writable: !0, + }, + setupRenderer: { + value: function () { + var e, + t, + n, + r, + i = this + ;(r = { + alpha: !0, + antialias: !v, + canvas: this.canvas, + logarithmicDepthBuffer: !1, + powerPreference: 'high-performance', + }), + (this.maxCanvasSize = { height: 1920, width: 1920 }), + this.hasAttribute('renderer') && + ((n = this.getAttribute('renderer')), + (t = u.styleParser.parse(n)).precision && + (r.precision = t.precision + 'p'), + t.antialias && + 'auto' !== t.antialias && + (r.antialias = 'true' === t.antialias), + t.logarithmicDepthBuffer && + 'auto' !== t.logarithmicDepthBuffer && + (r.logarithmicDepthBuffer = 'true' === t.logarithmicDepthBuffer), + t.alpha && (r.alpha = 'true' === t.alpha), + (this.maxCanvasSize = { + width: t.maxCanvasWidth + ? parseInt(t.maxCanvasWidth) + : this.maxCanvasSize.width, + height: t.maxCanvasHeight + ? parseInt(t.maxCanvasHeight) + : this.maxCanvasSize.height, + })), + (e = this.renderer = new c.WebGLRenderer(r)).setPixelRatio( + window.devicePixelRatio, + ), + (e.sortObjects = !1), + this.camera && e.xr.setPoseTarget(this.camera.el.object3D), + this.addEventListener('camera-set-active', function () { + e.xr.setPoseTarget(i.camera.el.object3D) + }) + }, + writable: window.debug, + }, + play: { + value: function () { + var e = this, + t = this + this.renderStarted + ? h.prototype.play.call(this) + : (this.addEventListener('loaded', function () { + var e, + n = this.renderer, + r = this.renderer.xr + h.prototype.play.call(this), + t.renderStarted || + (t.resize(), + t.renderer && + (window.performance && + window.performance.mark('render-started'), + o.remove(), + (e = u.device.getVRDisplay()) && + e.isPresenting && + (r.setDevice(e), (r.enabled = !0), t.enterVR()), + n.setAnimationLoop(this.render), + (t.renderStarted = !0), + t.emit('renderstart'))) + }), + setTimeout(function () { + h.prototype.load.call(e) + })) + }, + }, + updateComponent: { + value: function (e) { + e in l || h.prototype.updateComponent.apply(this, arguments) + }, + }, + tick: { + value: function (e, t) { + var n, + r = this.systems + for (n = 0; n < this.behaviors.tick.length; n++) + this.behaviors.tick[n].el.isPlaying && this.behaviors.tick[n].tick(e, t) + for (n = 0; n < this.systemNames.length; n++) + r[this.systemNames[n]].tick && r[this.systemNames[n]].tick(e, t) + }, + }, + tock: { + value: function (e, t, n) { + var r, + i = this.systems + for (r = 0; r < this.behaviors.tock.length; r++) + this.behaviors.tock[r].el.isPlaying && + this.behaviors.tock[r].tock(e, t, n) + for (r = 0; r < this.systemNames.length; r++) + i[this.systemNames[r]].tock && i[this.systemNames[r]].tock(e, t, n) + }, + }, + render: { + value: function (e, t) { + var n = this.renderer + ;(this.frame = t), + (this.delta = 1e3 * this.clock.getDelta()), + (this.time = 1e3 * this.clock.elapsedTime), + this.isPlaying && this.tick(this.time, this.delta) + var r = null + this.is('ar-mode') && + ((r = this.object3D.background), (this.object3D.background = null)), + n.render(this.object3D, this.camera), + r && (this.object3D.background = r) + }, + writable: !0, + }, + }), + })), + (t.exports.setupCanvas = M) + }, + { + '../../lib/three': 179, + '../../utils/': 205, + '../../utils/ios-orientationchange-blank-bug': 206, + '../a-entity': 127, + '../a-node': 129, + '../a-register-element': 130, + '../system': 142, + './loadingScreen': 135, + './metaTags': 136, + './postMessage': 137, + './scenes': 138, + './wakelock': 139, + }, + ], + 135: [ + function (e, t, n) { + var r, + i, + o, + a = e('../../utils/').styleParser, + s = 'loading-screen', + l = 'a-loader-title' + function c(e) { + var t = r.hasAttribute('embedded'), + n = o(r.canvas, t, r.maxCanvasSize, r.is('vr-mode')) + ;(e.aspect = n.width / n.height), + e.updateProjectionMatrix(), + r.renderer.setSize(n.width, n.height, !1) + } + function u() { + ;((i = document.createElement('div')).className = l), + (i.innerHTML = document.title), + (i.style.display = 'none'), + r.appendChild(i) + } + ;(t.exports.setup = function (e, t) { + o = t + var n, + l, + h, + d, + p, + f, + m, + v, + g, + y, + b = (r = e).hasAttribute(s) ? a.parse(r.getAttribute(s)) : void 0, + A = (b && b.dotsColor) || 'white', + w = (b && b.backgroundColor) || '#24CAFF' + ;(void 0 === b || 'true' === b.enabled || void 0 === b.enabled) && + ((n = new THREE.Scene()), + (l = new THREE.SphereGeometry(0.2, 36, 18, 0, 2 * Math.PI, 0, Math.PI)), + (h = new THREE.MeshBasicMaterial({ color: A })), + (d = new THREE.Mesh(l, h)), + (p = d.clone()), + (f = d.clone()), + (m = new THREE.PerspectiveCamera( + 80, + window.innerWidth / window.innerHeight, + 5e-4, + 1e4, + )), + (v = new THREE.Clock()), + (g = 0), + (y = function () { + r.renderer.render(n, m), + (g = v.getElapsedTime() % 4), + (d.visible = g >= 1), + (p.visible = g >= 2), + (f.visible = g >= 3) + }), + (n.background = new THREE.Color(w)), + n.add(m), + d.position.set(-1, 0, -15), + p.position.set(0, 0, -15), + f.position.set(1, 0, -15), + m.add(d), + m.add(p), + m.add(f), + u(), + setTimeout(function () { + r.hasLoaded || + (c(m), + (i.style.display = 'block'), + window.addEventListener('resize', function () { + c(m) + }), + r.renderer.setAnimationLoop(y)) + }, 200)) + }), + (t.exports.remove = function () { + window.removeEventListener('resize', c), i && (i.style.display = 'none') + }) + }, + { '../../utils/': 205 }, + ], + 136: [ + function (e, t, n) { + var r = e('../../constants/'), + i = e('../../utils').extend, + o = (t.exports.MOBILE_HEAD_TAGS = [ + s({ + name: 'viewport', + content: + 'width=device-width,initial-scale=1,maximum-scale=1,shrink-to-fit=no,user-scalable=no,minimal-ui,viewport-fit=cover', + }), + s({ name: 'mobile-web-app-capable', content: 'yes' }), + s({ name: 'theme-color', content: 'black' }), + ]), + a = [ + s({ name: 'apple-mobile-web-app-capable', content: 'yes' }), + s({ name: 'apple-mobile-web-app-status-bar-style', content: 'black' }), + l({ + rel: 'apple-touch-icon', + href: 'https://aframe.io/images/aframe-logo-152.png', + }), + ] + function s(e) { + return { + tagName: 'meta', + attributes: e, + exists: function () { + return document.querySelector('meta[name="' + e.name + '"]') + }, + } + } + function l(e) { + return { + tagName: 'link', + attributes: e, + exists: function () { + return document.querySelector('link[rel="' + e.rel + '"]') + }, + } + } + function c(e) { + if (e && e.tagName) { + var t = document.createElement(e.tagName) + return t.setAttribute(r.AFRAME_INJECTED, ''), i(t, e.attributes) + } + } + t.exports.inject = function (e) { + var t, + n = document.head, + r = n.querySelector('script'), + i = [] + return o.forEach(s), e.isIOS && a.forEach(s), i + function s(e) { + e && + !e.exists() && + (t = c(e)) && + (r ? r.parentNode.insertBefore(t, r) : n.appendChild(t), i.push(t)) + } + } + }, + { '../../constants/': 123, '../../utils': 205 }, + ], + 137: [ + function (e, t, n) { + var r = e('../../utils/bind'), + i = e('../../utils/').isIframed + function o(e) { + var t = this + if (e.data) + switch (e.data.type) { + case 'vr': + switch (e.data.data) { + case 'enter': + t.enterVR() + break + case 'exit': + t.exitVR() + } + } + } + t.exports = function (e) { + i() && window.addEventListener('message', r(o, e)) + } + }, + { '../../utils/': 205, '../../utils/bind': 199 }, + ], + 138: [ + function (e, t, n) { + t.exports = [] + }, + {}, + ], + 139: [ + function (e, t, n) { + var r = e('../../../vendor/wakelock/wakelock') + t.exports = function (e) { + if (e.isMobile) { + var t = (e.wakelock = new r()) + e.addEventListener('enter-vr', function () { + t.request() + }), + e.addEventListener('exit-vr', function () { + t.release() + }) + } + } + }, + { '../../../vendor/wakelock/wakelock': 220 }, + ], + 140: [ + function (e, t, n) { + var r = e('../utils/'), + i = e('./propertyTypes'), + o = r.debug, + a = i.isValidDefaultValue, + s = i.propertyTypes, + l = o('core:schema:warn') + function c(e) { + return 'type' in e ? 'string' === typeof e.type : 'default' in e + } + function u(e, t) { + var n, + r, + i = e.default, + o = e.type + return ( + e.type + ? 'bool' === e.type + ? (o = 'boolean') + : 'float' === e.type && (o = 'number') + : (o = + void 0 === i || ('boolean' !== typeof i && 'number' !== typeof i) + ? Array.isArray(i) + ? 'array' + : 'string' + : typeof i), + (r = s[o]) || l('Unknown property type for component `' + t + '`: ' + o), + (n = !!e.parse), + (e.parse = e.parse || r.parse), + (e.stringify = e.stringify || r.stringify), + (e.type = o), + 'default' in e + ? n || + a(o, i) || + l( + 'Default value `' + + i + + '` does not match type `' + + o + + '` in component `' + + t + + '`', + ) + : (e.default = r.default), + e + ) + } + function h(e, t) { + return ( + (void 0 !== e && null !== e && '' !== e) || + ((e = t.default), Array.isArray(e) && (e = e.slice())), + t.parse(e, t.default) + ) + } + function d(e, t) { + return 'object' !== typeof e + ? e + : t && null !== e + ? t.stringify(e) + : JSON.stringify(e) + } + ;(t.exports.isSingleProperty = c), + (t.exports.process = function (e, t) { + var n + if (c(e)) return u(e, t) + for (n in e) e[n] = u(e[n], t) + return e + }), + (t.exports.processPropertyDefinition = u), + (t.exports.parseProperties = (function () { + var e = [] + return function (t, n, r, i, o) { + var a, s, c, u + for (s in ((e.length = 0), r ? t : n)) (r && void 0 === t[s]) || e.push(s) + if (null === t || 'object' !== typeof t) return t + for (s in t) + void 0 === t[s] || + n[s] || + o || + l('Unknown property `' + s + '` for component/system `' + i + '`.') + for (a = 0; a < e.length; a++) { + if (((c = n[(s = e[a])]), (u = t[s]), !n[s])) return + t[s] = h(u, c) + } + return t + } + })()), + (t.exports.parseProperty = h), + (t.exports.stringifyProperties = function (e, t) { + var n, + r, + i, + o, + a = {} + for (n in e) + (r = t[n]), + 'object' === typeof (o = i = e[n]) && + ((o = d(i, r)), r || l('Unknown component property: ' + n)), + (a[n] = o) + return a + }), + (t.exports.stringifyProperty = d) + }, + { '../utils/': 205, './propertyTypes': 133 }, + ], + 141: [ + function (e, t, n) { + var r = e('./schema').process, + i = (t.exports.shaders = {}), + o = (t.exports.shaderNames = []), + a = e('../lib/three'), + s = e('../utils'), + l = { + array: 'v3', + color: 'v3', + int: 'i', + number: 'f', + map: 't', + time: 'f', + vec2: 'v2', + vec3: 'v3', + vec4: 'v4', + }, + c = (t.exports.Shader = function () {}) + ;(c.prototype = { + schema: {}, + vertexShader: + 'void main() {gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}', + fragmentShader: 'void main() {gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);}', + init: function (e) { + return ( + (this.attributes = this.initVariables(e, 'attribute')), + (this.uniforms = this.initVariables(e, 'uniform')), + (this.material = new (this.raw ? a.RawShaderMaterial : a.ShaderMaterial)({ + uniforms: this.uniforms, + vertexShader: this.vertexShader, + fragmentShader: this.fragmentShader, + })), + this.material + ) + }, + initVariables: function (e, t) { + var n, + r, + i = this.schema, + o = {} + for (n in i) + i[n].is === t && ((r = l[i[n].type]), (o[n] = { type: r, value: void 0 })) + return o + }, + update: function (e) { + this.updateVariables(e, 'attribute'), this.updateVariables(e, 'uniform') + }, + updateVariables: function (e, t) { + var n, + r, + i, + o = this.schema + for (n in ((i = 'uniform' === t ? this.uniforms : this.attributes), e)) + if (o[n] && o[n].is === t) + if ('map' !== o[n].type) + (i[n].value = this.parseValue(o[n].type, e[n])), (i[n].needsUpdate = !0) + else { + if (!i[n] || i[n].value === e[n]) continue + ;(r = '_texture_' + n), + this.setMapOnTextureLoad(i, n, r), + s.material.updateMapMaterialFromData(r, n, this, e) + } + }, + parseValue: function (e, t) { + var n + switch (e) { + case 'vec2': + return new a.Vector2(t.x, t.y) + case 'vec3': + return new a.Vector3(t.x, t.y, t.z) + case 'vec4': + return new a.Vector4(t.x, t.y, t.z, t.w) + case 'color': + return (n = new a.Color(t)), new a.Vector3(n.r, n.g, n.b) + case 'map': + return a.ImageUtils.loadTexture(t) + default: + return t + } + }, + setMapOnTextureLoad: function (e, t, n) { + var r = this + this.el.addEventListener('materialtextureloaded', function () { + ;(e[t].value = r.material[n]), (e[t].needsUpdate = !0) + }) + }, + }), + (t.exports.registerShader = function (e, t) { + var n, + a = {} + if ( + (Object.keys(t).forEach(function (e) { + a[e] = { value: t[e], writable: !0 } + }), + i[e]) + ) + throw new Error('The shader ' + e + ' has been already registered') + return ( + ((n = function () { + c.call(this) + }).prototype = Object.create(c.prototype, a)), + (n.prototype.name = e), + (n.prototype.constructor = n), + (i[e] = { Shader: n, schema: r(n.prototype.schema) }), + o.push(e), + n + ) + }) + }, + { '../lib/three': 179, '../utils': 205, './schema': 140 }, + ], + 142: [ + function (e, t, n) { + var r = e('./component'), + i = e('./schema'), + o = e('../utils/'), + a = i.parseProperties, + s = i.parseProperty, + l = i.process, + c = i.isSingleProperty, + u = o.styleParser, + h = (t.exports.systems = {}), + d = (t.exports.System = function (e) { + var t = r && r.components[this.name] + ;(this.el = e), + (this.sceneEl = e), + t && (t.Component.prototype.system = this), + this.buildData(), + this.init(), + this.update({}) + }) + ;(d.prototype = { + schema: {}, + init: function () {}, + update: function (e) {}, + updateProperties: function (e) { + var t = this.data + Object.keys(i).length && (this.buildData(e), this.update(t)) + }, + buildData: function (e) { + var t = this.schema + Object.keys(t).length && + ((e = + e || + window.HTMLElement.prototype.getAttribute.call(this.sceneEl, this.name)), + c(t) ? (this.data = s(e, t)) : (this.data = a(u.parse(e) || {}, t))) + }, + tick: void 0, + tock: void 0, + play: function () {}, + pause: function () {}, + }), + (t.exports.registerSystem = function (e, t) { + var n, + r, + i = {}, + a = o.findAllScenes(document) + if ( + (Object.keys(t).forEach(function (e) { + i[e] = { value: t[e], writable: !0 } + }), + h[e]) + ) + throw new Error( + 'The system `' + + e + + '` has been already registered. Check that you are not loading two versions of the same system or two different systems of the same name.', + ) + for ( + (r = function (e) { + d.call(this, e) + }).prototype = Object.create(d.prototype, i), + r.prototype.name = e, + r.prototype.constructor = r, + r.prototype.schema = o.extend(l(r.prototype.schema)), + h[e] = r, + n = 0; + n < a.length; + n++ + ) + a[n].initSystem(e) + }) + }, + { '../utils/': 205, './component': 131, './schema': 140 }, + ], + 143: [ + function (e, t, n) { + e('./pivot') + }, + { './pivot': 144 }, + ], + 144: [ + function (e, t, n) { + var r = e('../../core/component').registerComponent, + i = e('../../lib/three'), + o = new i.Vector3(), + a = new i.Vector3() + r('pivot', { + dependencies: ['position'], + schema: { type: 'vec3' }, + init: function () { + var e = this.data, + t = this.el, + n = t.object3D.parent, + r = t.object3D, + s = new i.Group() + o.copy(r.position), + a.copy(r.rotation), + n.remove(r), + s.add(r), + n.add(s), + (t.object3D = s), + r.position.set(-1 * e.x, -1 * e.y, -1 * e.z), + s.position.set(e.x + o.x, e.y + o.y, e.z + o.z), + s.rotation.copy(r.rotation), + r.rotation.set(0, 0, 0) + }, + }) + }, + { '../../core/component': 131, '../../lib/three': 179 }, + ], + 145: [ + function (e, t, n) { + var r = e('../../core/component').components, + i = e('../../core/shader').shaders, + o = e('../../utils/'), + a = {} + function s(e) { + var t = e.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() + 'fog' === e && (t = 'material-fog'), + 'visible' === e && (t = 'material-visible'), + (a[t] = 'material.' + e) + } + Object.keys(r.material.schema).forEach(s), + Object.keys(i.standard.schema).forEach(s), + (t.exports = function () { + return { defaultComponents: { material: {} }, mappings: o.extend({}, a) } + }) + }, + { '../../core/component': 131, '../../core/shader': 141, '../../utils/': 205 }, + ], + 146: [ + function (e, t, n) { + e('./primitives/a-camera'), + e('./primitives/a-cursor'), + e('./primitives/a-curvedimage'), + e('./primitives/a-gltf-model'), + e('./primitives/a-image'), + e('./primitives/a-light'), + e('./primitives/a-link'), + e('./primitives/a-obj-model'), + e('./primitives/a-sky'), + e('./primitives/a-sound'), + e('./primitives/a-text'), + e('./primitives/a-video'), + e('./primitives/a-videosphere'), + e('./primitives/meshPrimitives') + }, + { + './primitives/a-camera': 148, + './primitives/a-cursor': 149, + './primitives/a-curvedimage': 150, + './primitives/a-gltf-model': 151, + './primitives/a-image': 152, + './primitives/a-light': 153, + './primitives/a-link': 154, + './primitives/a-obj-model': 155, + './primitives/a-sky': 156, + './primitives/a-sound': 157, + './primitives/a-text': 158, + './primitives/a-video': 159, + './primitives/a-videosphere': 160, + './primitives/meshPrimitives': 161, + }, + ], + 147: [ + function (e, t, n) { + var r = e('../../core/a-entity'), + i = e('../../core/component').components, + o = e('../../core/a-register-element').registerElement, + a = e('../../utils/'), + s = a.debug, + l = a.entity.setComponentProperty, + c = s('extras:primitives:debug'), + u = s('extras:primitives:warn'), + h = (t.exports.primitives = {}) + function d(e, t) { + var n = i[e].schema + Object.keys(n).map(function (n) { + var r = n.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() + void 0 !== t[r] && (r = e + '-' + n), (t[r] = e + '.' + n) + }) + } + function p(e, n, r) { + ;(r = r || {}), + Object.keys(n).map(function (e) { + d(e, r) + }), + t.exports.registerPrimitive( + e, + a.extendDeep({}, null, { defaultComponents: n, mappings: r }), + ) + } + ;(t.exports.registerPrimitive = function (e, t) { + ;(e = e.toLowerCase()), + c('Registering <%s>', e), + t.defaultAttributes && + u( + "The 'defaultAttributes' object is deprecated. Use 'defaultComponents' instead.", + ) + var n = o(e, { + prototype: Object.create(r.prototype, { + defaultComponentsFromPrimitive: { + value: t.defaultComponents || t.defaultAttributes || {}, + }, + deprecated: { value: t.deprecated || null }, + deprecatedMappings: { value: t.deprecatedMappings || {} }, + mappings: { value: t.mappings || {} }, + createdCallback: { + value: function () { + t.deprecated && console.warn(t.deprecated), + this.resolveMappingCollisions() + }, + }, + resolveMappingCollisions: { + value: function () { + var e = this.mappings, + t = this + Object.keys(e).forEach(function (n) { + var r + n !== n.toLowerCase() && + u( + 'Mapping keys should be specified in lower case. The mapping key ' + + n + + ' may not be recognized', + ), + i[n] && + ((r = e[n].replace('.', '-')), + (e[r] = e[n]), + delete e[n], + console.warn( + 'The primitive ' + + t.tagName.toLowerCase() + + ' has a mapping collision. The attribute ' + + n + + ' has the same name as a registered component and has been renamed to ' + + r, + )) + }) + }, + }, + getExtraComponents: { + value: function () { + var e, + t, + n, + r, + i, + o, + s = this + for ( + t = a.clone(this.defaultComponentsFromPrimitive), + (i = this.getAttribute('mixin')) && + (i = i.trim().split(' ')).forEach(function (e) { + var n = s.sceneEl.querySelector('#' + e).componentCache + Object.keys(n).forEach(function (e) { + t[e] = l(t[e], n[e]) + }) + }), + n = 0; + n < this.attributes.length; + n++ + ) + (e = this.attributes[n]), + (r = this.mappings[e.name]) && + ((o = a.entity.getComponentPropertyPath(r)).constructor === Array + ? ((t[o[0]] = t[o[0]] || {}), (t[o[0]][o[1]] = e.value.trim())) + : (t[o] = e.value.trim())) + return t + function l(e, t) { + return c(e) + ? u(t) + : c(t) + ? u(e) + : h(e) && h(t) + ? a.extendDeep(e, t) + : u(t) + } + function c(e) { + return 'undefined' === typeof e + } + function u(e) { + return h(e) ? a.extendDeep({}, e) : e + } + function h(e) { + return null !== e && e.constructor === Object + } + }, + }, + attributeChangedCallback: { + value: function (e, t, n) { + var r = this.mappings[e] + e in this.deprecatedMappings && console.warn(this.deprecatedMappings[e]), + e && r && l(this, r, n) + }, + }, + }), + }) + return (h[e] = n), n + }), + (t.exports.definePrimitive = p) + }, + { + '../../core/a-entity': 127, + '../../core/a-register-element': 130, + '../../core/component': 131, + '../../utils/': 205, + }, + ], + 148: [ + function (e, t, n) { + ;(0, e('../primitives').registerPrimitive)('a-camera', { + defaultComponents: { + camera: {}, + 'look-controls': {}, + 'wasd-controls': {}, + position: { x: 0, y: 1.6, z: 0 }, + }, + mappings: { + active: 'camera.active', + far: 'camera.far', + fov: 'camera.fov', + 'look-controls-enabled': 'look-controls.enabled', + near: 'camera.near', + 'pointer-lock-enabled': 'look-controls.pointerLockEnabled', + 'wasd-controls-enabled': 'wasd-controls.enabled', + 'reverse-mouse-drag': 'look-controls.reverseMouseDrag', + zoom: 'camera.zoom', + }, + }) + }, + { '../primitives': 147 }, + ], + 149: [ + function (e, t, n) { + var r = e('../getMeshMixin') + ;(0, e('../primitives').registerPrimitive)( + 'a-cursor', + e('../../../utils/').extendDeep({}, r(), { + defaultComponents: { + cursor: {}, + geometry: { + primitive: 'ring', + radiusOuter: 0.016, + radiusInner: 0.01, + segmentsTheta: 32, + }, + material: { color: '#000', shader: 'flat', opacity: 0.8 }, + position: { x: 0, y: 0, z: -1 }, + }, + mappings: { + far: 'raycaster.far', + fuse: 'cursor.fuse', + 'fuse-timeout': 'cursor.fuseTimeout', + interval: 'raycaster.interval', + objects: 'raycaster.objects', + }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 150: [ + function (e, t, n) { + var r = e('../getMeshMixin') + ;(0, e('../primitives').registerPrimitive)( + 'a-curvedimage', + e('../../../utils/').extendDeep({}, r(), { + defaultComponents: { + geometry: { + height: 1, + primitive: 'cylinder', + radius: 2, + segmentsRadial: 48, + thetaLength: 270, + openEnded: !0, + thetaStart: 0, + }, + material: { + color: '#FFF', + shader: 'flat', + side: 'double', + transparent: !0, + repeat: '-1 1', + }, + }, + mappings: { + height: 'geometry.height', + 'open-ended': 'geometry.openEnded', + radius: 'geometry.radius', + segments: 'geometry.segmentsRadial', + start: 'geometry.thetaStart', + 'theta-length': 'geometry.thetaLength', + 'theta-start': 'geometry.thetaStart', + width: 'geometry.thetaLength', + }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 151: [ + function (e, t, n) { + ;(0, e('../primitives').registerPrimitive)('a-gltf-model', { + mappings: { src: 'gltf-model' }, + }) + }, + { '../primitives': 147 }, + ], + 152: [ + function (e, t, n) { + var r = e('../getMeshMixin') + ;(0, e('../primitives').registerPrimitive)( + 'a-image', + e('../../../utils/').extendDeep({}, r(), { + defaultComponents: { + geometry: { primitive: 'plane' }, + material: { color: '#FFF', shader: 'flat', side: 'double', transparent: !0 }, + }, + mappings: { height: 'geometry.height', width: 'geometry.width' }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 153: [ + function (e, t, n) { + ;(0, e('../primitives').registerPrimitive)('a-light', { + defaultComponents: { light: {} }, + mappings: { + angle: 'light.angle', + color: 'light.color', + 'ground-color': 'light.groundColor', + decay: 'light.decay', + distance: 'light.distance', + intensity: 'light.intensity', + penumbra: 'light.penumbra', + type: 'light.type', + target: 'light.target', + }, + }) + }, + { '../primitives': 147 }, + ], + 154: [ + function (e, t, n) { + ;(0, e('../primitives').registerPrimitive)('a-link', { + defaultComponents: { link: { visualAspectEnabled: !0 } }, + mappings: { href: 'link.href', image: 'link.image', title: 'link.title' }, + }) + }, + { '../primitives': 147 }, + ], + 155: [ + function (e, t, n) { + var r = e('../getMeshMixin')() + ;(0, e('../primitives').registerPrimitive)( + 'a-obj-model', + e('../../../utils/').extendDeep({}, r, { + defaultComponents: { 'obj-model': {} }, + mappings: { src: 'obj-model.obj', mtl: 'obj-model.mtl' }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 156: [ + function (e, t, n) { + var r = e('../getMeshMixin'), + i = e('../primitives').registerPrimitive, + o = e('../../../utils/'), + a = e('./meshPrimitives') + i( + 'a-sky', + o.extendDeep({}, r(), { + defaultComponents: { + geometry: { + primitive: 'sphere', + radius: 500, + segmentsWidth: 64, + segmentsHeight: 32, + }, + material: { color: '#FFF', side: 'back', shader: 'flat', npot: !0 }, + scale: '-1 1 1', + }, + mappings: o.extendDeep({}, a['a-sphere'].prototype.mappings), + }), + ) + }, + { + '../../../utils/': 205, + '../getMeshMixin': 145, + '../primitives': 147, + './meshPrimitives': 161, + }, + ], + 157: [ + function (e, t, n) { + ;(0, e('../primitives').registerPrimitive)('a-sound', { + defaultComponents: { sound: {} }, + mappings: { + src: 'sound.src', + on: 'sound.on', + autoplay: 'sound.autoplay', + loop: 'sound.loop', + volume: 'sound.volume', + }, + }) + }, + { '../primitives': 147 }, + ], + 158: [ + function (e, t, n) { + ;(0, e('../primitives').definePrimitive)('a-text', { + text: { anchor: 'align', width: 5 }, + }) + }, + { '../primitives': 147 }, + ], + 159: [ + function (e, t, n) { + var r = e('../getMeshMixin') + ;(0, e('../primitives').registerPrimitive)( + 'a-video', + e('../../../utils/').extendDeep({}, r(), { + defaultComponents: { + geometry: { primitive: 'plane' }, + material: { color: '#FFF', shader: 'flat', side: 'double', transparent: !0 }, + }, + mappings: { height: 'geometry.height', width: 'geometry.width' }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 160: [ + function (e, t, n) { + var r = e('../getMeshMixin') + ;(0, e('../primitives').registerPrimitive)( + 'a-videosphere', + e('../../../utils/').extendDeep({}, r(), { + defaultComponents: { + geometry: { + primitive: 'sphere', + radius: 500, + segmentsWidth: 64, + segmentsHeight: 32, + }, + material: { color: '#FFF', shader: 'flat', side: 'back', npot: !0 }, + scale: '-1 1 1', + }, + mappings: { + radius: 'geometry.radius', + 'segments-height': 'geometry.segmentsHeight', + 'segments-width': 'geometry.segmentsWidth', + }, + }), + ) + }, + { '../../../utils/': 205, '../getMeshMixin': 145, '../primitives': 147 }, + ], + 161: [ + function (e, t, n) { + var r = e('../getMeshMixin'), + i = e('../../../core/geometry').geometries, + o = e('../../../core/geometry').geometryNames, + a = e('../primitives').registerPrimitive, + s = e('../../../utils/'), + l = (t.exports = {}) + function c(e) { + return e.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() + } + o.forEach(function (e) { + var t = i[e], + n = c(e), + o = {} + Object.keys(t.schema).forEach(function (e) { + o[c(e)] = 'geometry.' + e + }) + var u = 'a-' + n, + h = a( + u, + s.extendDeep({}, r(), { + defaultComponents: { geometry: { primitive: e } }, + mappings: o, + }), + ) + l[u] = h + }) + }, + { + '../../../core/geometry': 132, + '../../../utils/': 205, + '../getMeshMixin': 145, + '../primitives': 147, + }, + ], + 162: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('box', { + schema: { + depth: { default: 1, min: 0 }, + height: { default: 1, min: 0 }, + width: { default: 1, min: 0 }, + segmentsHeight: { default: 1, min: 1, max: 20, type: 'int' }, + segmentsWidth: { default: 1, min: 1, max: 20, type: 'int' }, + segmentsDepth: { default: 1, min: 1, max: 20, type: 'int' }, + }, + init: function (e) { + this.geometry = new i.BoxGeometry( + e.width, + e.height, + e.depth, + e.segmentsWidth, + e.segmentsHeight, + e.segmentsDepth, + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 163: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('circle', { + schema: { + radius: { default: 1, min: 0 }, + segments: { default: 32, min: 3, type: 'int' }, + thetaLength: { default: 360, min: 0 }, + thetaStart: { default: 0 }, + }, + init: function (e) { + this.geometry = new i.CircleGeometry( + e.radius, + e.segments, + o(e.thetaStart), + o(e.thetaLength), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 164: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('cone', { + schema: { + height: { default: 1, min: 0 }, + openEnded: { default: !1 }, + radiusBottom: { default: 1, min: 0 }, + radiusTop: { default: 0.01, min: 0 }, + segmentsHeight: { default: 18, min: 1, type: 'int' }, + segmentsRadial: { default: 36, min: 3, type: 'int' }, + thetaLength: { default: 360, min: 0 }, + thetaStart: { default: 0 }, + }, + init: function (e) { + this.geometry = new i.CylinderGeometry( + e.radiusTop, + e.radiusBottom, + e.height, + e.segmentsRadial, + e.segmentsHeight, + e.openEnded, + o(e.thetaStart), + o(e.thetaLength), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 165: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('cylinder', { + schema: { + height: { default: 1, min: 0 }, + openEnded: { default: !1 }, + radius: { default: 1, min: 0 }, + segmentsHeight: { default: 18, min: 1, type: 'int' }, + segmentsRadial: { default: 36, min: 3, type: 'int' }, + thetaLength: { default: 360, min: 0 }, + thetaStart: { default: 0 }, + }, + init: function (e) { + this.geometry = new i.CylinderGeometry( + e.radius, + e.radius, + e.height, + e.segmentsRadial, + e.segmentsHeight, + e.openEnded, + o(e.thetaStart), + o(e.thetaLength), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 166: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('dodecahedron', { + schema: { + detail: { default: 0, min: 0, max: 5, type: 'int' }, + radius: { default: 1, min: 0 }, + }, + init: function (e) { + this.geometry = new i.DodecahedronGeometry(e.radius, e.detail) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 167: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('icosahedron', { + schema: { + detail: { default: 0, min: 0, max: 5, type: 'int' }, + radius: { default: 1, min: 0 }, + }, + init: function (e) { + this.geometry = new i.IcosahedronGeometry(e.radius, e.detail) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 168: [ + function (e, t, n) { + e('./box.js'), + e('./circle.js'), + e('./cone.js'), + e('./cylinder.js'), + e('./dodecahedron.js'), + e('./icosahedron.js'), + e('./octahedron.js'), + e('./plane.js'), + e('./ring.js'), + e('./sphere.js'), + e('./tetrahedron.js'), + e('./torus.js'), + e('./torusKnot.js'), + e('./triangle.js') + }, + { + './box.js': 162, + './circle.js': 163, + './cone.js': 164, + './cylinder.js': 165, + './dodecahedron.js': 166, + './icosahedron.js': 167, + './octahedron.js': 169, + './plane.js': 170, + './ring.js': 171, + './sphere.js': 172, + './tetrahedron.js': 173, + './torus.js': 174, + './torusKnot.js': 175, + './triangle.js': 176, + }, + ], + 169: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('octahedron', { + schema: { + detail: { default: 0, min: 0, max: 5, type: 'int' }, + radius: { default: 1, min: 0 }, + }, + init: function (e) { + this.geometry = new i.OctahedronGeometry(e.radius, e.detail) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 170: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('plane', { + schema: { + height: { default: 1, min: 0 }, + width: { default: 1, min: 0 }, + segmentsHeight: { default: 1, min: 1, max: 20, type: 'int' }, + segmentsWidth: { default: 1, min: 1, max: 20, type: 'int' }, + }, + init: function (e) { + this.geometry = new i.PlaneGeometry( + e.width, + e.height, + e.segmentsWidth, + e.segmentsHeight, + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 171: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('ring', { + schema: { + radiusInner: { default: 0.8, min: 0 }, + radiusOuter: { default: 1.2, min: 0 }, + segmentsPhi: { default: 10, min: 1, type: 'int' }, + segmentsTheta: { default: 32, min: 3, type: 'int' }, + thetaLength: { default: 360, min: 0 }, + thetaStart: { default: 0 }, + }, + init: function (e) { + this.geometry = new i.RingGeometry( + e.radiusInner, + e.radiusOuter, + e.segmentsTheta, + e.segmentsPhi, + o(e.thetaStart), + o(e.thetaLength), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 172: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('sphere', { + schema: { + radius: { default: 1, min: 0 }, + phiLength: { default: 360 }, + phiStart: { default: 0, min: 0 }, + thetaLength: { default: 180, min: 0 }, + thetaStart: { default: 0 }, + segmentsHeight: { default: 18, min: 2, type: 'int' }, + segmentsWidth: { default: 36, min: 3, type: 'int' }, + }, + init: function (e) { + this.geometry = new i.SphereGeometry( + e.radius, + e.segmentsWidth, + e.segmentsHeight, + o(e.phiStart), + o(e.phiLength), + o(e.thetaStart), + o(e.thetaLength), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 173: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('tetrahedron', { + schema: { + detail: { default: 0, min: 0, max: 5, type: 'int' }, + radius: { default: 1, min: 0 }, + }, + init: function (e) { + this.geometry = new i.TetrahedronGeometry(e.radius, e.detail) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 174: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = i.Math.degToRad + r('torus', { + schema: { + arc: { default: 360 }, + radius: { default: 1, min: 0 }, + radiusTubular: { default: 0.2, min: 0 }, + segmentsRadial: { default: 36, min: 2, type: 'int' }, + segmentsTubular: { default: 32, min: 3, type: 'int' }, + }, + init: function (e) { + this.geometry = new i.TorusGeometry( + e.radius, + 2 * e.radiusTubular, + e.segmentsRadial, + e.segmentsTubular, + o(e.arc), + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 175: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three') + r('torusKnot', { + schema: { + p: { default: 2, min: 1 }, + q: { default: 3, min: 1 }, + radius: { default: 1, min: 0 }, + radiusTubular: { default: 0.2, min: 0 }, + segmentsRadial: { default: 8, min: 3, type: 'int' }, + segmentsTubular: { default: 100, min: 3, type: 'int' }, + }, + init: function (e) { + this.geometry = new i.TorusKnotGeometry( + e.radius, + 2 * e.radiusTubular, + e.segmentsTubular, + e.segmentsRadial, + e.p, + e.q, + ) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 176: [ + function (e, t, n) { + var r = e('../core/geometry').registerGeometry, + i = e('../lib/three'), + o = new i.Quaternion(), + a = new i.Vector3(0, 0, 1), + s = new i.Vector2(), + l = new i.Vector2(), + c = new i.Vector2() + r('triangle', { + schema: { + vertexA: { type: 'vec3', default: { x: 0, y: 0.5, z: 0 } }, + vertexB: { type: 'vec3', default: { x: -0.5, y: -0.5, z: 0 } }, + vertexC: { type: 'vec3', default: { x: 0.5, y: -0.5, z: 0 } }, + }, + init: function (e) { + var t, n, r, u, h, d, p, f, m + ;(r = new i.Triangle()).a.set(e.vertexA.x, e.vertexA.y, e.vertexA.z), + r.b.set(e.vertexB.x, e.vertexB.y, e.vertexB.z), + r.c.set(e.vertexC.x, e.vertexC.y, e.vertexC.z), + (n = r.getNormal(new i.Vector3())), + o.setFromUnitVectors(n, a), + (u = r.a.clone().applyQuaternion(o)), + (h = r.b.clone().applyQuaternion(o)), + (d = r.c.clone().applyQuaternion(o)), + s.set(Math.min(u.x, h.x, d.x), Math.min(u.y, h.y, d.y)), + l.set(Math.max(u.x, h.x, d.x), Math.max(u.y, h.y, d.y)), + c.set(0, 0).subVectors(l, s), + (u = new i.Vector2().subVectors(u, s).divide(c)), + (h = new i.Vector2().subVectors(h, s).divide(c)), + (d = new i.Vector2().subVectors(d, s).divide(c)), + (t = this.geometry = new i.BufferGeometry()), + (p = [r.a.x, r.a.y, r.a.z, r.b.x, r.b.y, r.b.z, r.c.x, r.c.y, r.c.z]), + (f = [n.x, n.y, n.z, n.x, n.y, n.z, n.x, n.y, n.z]), + (m = [u.x, u.y, h.x, h.y, d.x, d.y]), + t.setAttribute('position', new i.Float32BufferAttribute(p, 3)), + t.setAttribute('normal', new i.Float32BufferAttribute(f, 3)), + t.setAttribute('uv', new i.Float32BufferAttribute(m, 2)) + }, + }) + }, + { '../core/geometry': 132, '../lib/three': 179 }, + ], + 177: [ + function (e, t, n) { + if ( + ((window.Promise = window.Promise || e('promise-polyfill')), + (window.hasNativeWebVRImplementation = + !!window.navigator.getVRDisplays || !!window.navigator.getVRDevices), + (window.hasNativeWebXRImplementation = void 0 !== navigator.xr), + !window.hasNativeWebXRImplementation && !window.hasNativeWebVRImplementation) + ) { + var r = e('./utils/isIOSOlderThan10')(window.navigator.userAgent) + ? 1 / window.devicePixelRatio + : 1, + i = e('webvr-polyfill'), + o = { + BUFFER_SCALE: r, + CARDBOARD_UI_DISABLED: !0, + ROTATE_INSTRUCTIONS_DISABLED: !0, + MOBILE_WAKE_LOCK: !!window.cordova, + } + window.webvrpolyfill = new i(o) + } + var a = e('./utils/'), + s = a.debug + a.isIE11 && (e('custom-event-polyfill'), e('../vendor/starts-with-polyfill')) + var l = s('A-Frame:error'), + c = s('A-Frame:warn') + window.document.currentScript && + window.document.currentScript.parentNode !== window.document.head && + !window.debug && + c( + 'Put the A-Frame <script> tag in the <head> of the HTML *before* the scene to ensure everything for A-Frame is properly registered before they are used from HTML.', + ), + window.cordova || + 'file:' !== window.location.protocol || + l( + 'This HTML file is currently being served via the file:// protocol. Assets, textures, and models WILL NOT WORK due to cross-origin policy! Please use a local or hosted server: https://aframe.io/docs/0.5.0/introduction/getting-started.html#using-a-local-server.', + ), + e('present'), + a.device.isBrowserEnvironment && + (e('./style/aframe.css'), e('./style/rStats.css')) + var u = e('./core/scene/a-scene').AScene, + h = e('./core/component').components, + d = e('./core/component').registerComponent, + p = e('./core/geometry').registerGeometry, + f = e('./extras/primitives/primitives').registerPrimitive, + m = e('./core/shader').registerShader, + v = e('./core/system').registerSystem, + g = e('./core/shader').shaders, + y = e('./core/system').systems, + b = (window.THREE = e('./lib/three')), + A = e('../package') + e('./components/index'), + e('./geometries/index'), + e('./shaders/index'), + e('./systems/index') + var w = e('./core/a-node'), + x = e('./core/a-entity') + e('./core/a-assets'), + e('./core/a-cubemap'), + e('./core/a-mixin'), + e('./extras/components/'), + e('./extras/primitives/'), + console.log('A-Frame Version: 1.2.0 (Date 2021-02-05, Commit #b220fa00)'), + console.log( + 'THREE Version (https://github.com/supermedium/three.js):', + A.dependencies['super-three'], + ), + console.log('WebVR Polyfill Version:', A.dependencies['webvr-polyfill']), + (t.exports = window.AFRAME = + { + AComponent: e('./core/component').Component, + AEntity: x, + ANode: w, + ANIME: e('super-animejs'), + AScene: u, + components: h, + coreComponents: Object.keys(h), + geometries: e('./core/geometry').geometries, + registerComponent: d, + registerElement: e('./core/a-register-element').registerElement, + registerGeometry: p, + registerPrimitive: f, + registerShader: m, + registerSystem: v, + primitives: { + getMeshMixin: e('./extras/primitives/getMeshMixin'), + primitives: e('./extras/primitives/primitives').primitives, + }, + scenes: e('./core/scene/scenes'), + schema: e('./core/schema'), + shaders: g, + systems: y, + THREE: b, + utils: a, + version: A.version, + }) + }, + { + '../package': 73, + '../vendor/starts-with-polyfill': 218, + './components/index': 84, + './core/a-assets': 125, + './core/a-cubemap': 126, + './core/a-entity': 127, + './core/a-mixin': 128, + './core/a-node': 129, + './core/a-register-element': 130, + './core/component': 131, + './core/geometry': 132, + './core/scene/a-scene': 134, + './core/scene/scenes': 138, + './core/schema': 140, + './core/shader': 141, + './core/system': 142, + './extras/components/': 143, + './extras/primitives/': 146, + './extras/primitives/getMeshMixin': 145, + './extras/primitives/primitives': 147, + './geometries/index': 168, + './lib/three': 179, + './shaders/index': 181, + './style/aframe.css': 186, + './style/rStats.css': 187, + './systems/index': 191, + './utils/': 205, + './utils/isIOSOlderThan10': 208, + 'custom-event-polyfill': 7, + present: 48, + 'promise-polyfill': 50, + 'super-animejs': 56, + 'webvr-polyfill': 68, + }, + ], + 178: [ + function (e, t, n) { + ;(window.aframeStats = function (e) { + var t = null, + n = e + function r() { + t('te').set(i()), + window.performance.getEntriesByName && + t('lt').set( + window.performance + .getEntriesByName('render-started')[0] + .startTime.toFixed(0), + ) + } + function i() { + var e = n.querySelectorAll('*') + return ( + Array.prototype.slice.call(e).filter(function (e) { + return e.isEntity + }), + e.length + ) + } + function o() {} + function a() {} + function s(e) { + t = e + } + return { + update: r, + start: o, + end: a, + attach: s, + values: { te: { caption: 'Entities' }, lt: { caption: 'Load Time' } }, + groups: [{ caption: 'A-Frame', values: ['te', 'lt'] }], + fractions: [], + } + }), + 'object' === typeof t && (t.exports = { aframeStats: window.aframeStats }) + }, + {}, + ], + 179: [ + function (e, t, n) { + ;(function (n) { + var r = (n.THREE = e('super-three')) + r.TextureLoader && (r.TextureLoader.prototype.crossOrigin = 'anonymous'), + r.ImageLoader && (r.ImageLoader.prototype.crossOrigin = 'anonymous'), + r.Cache && (r.Cache.enabled = !0), + e('../../vendor/DeviceOrientationControls'), + e('super-three/examples/js/loaders/DRACOLoader'), + e('super-three/examples/js/loaders/GLTFLoader'), + e('super-three/examples/js/loaders/OBJLoader'), + e('super-three/examples/js/loaders/MTLLoader'), + e('super-three/examples/js/utils/BufferGeometryUtils'), + (r.DRACOLoader.prototype.crossOrigin = 'anonymous'), + (r.GLTFLoader.prototype.crossOrigin = 'anonymous'), + (r.MTLLoader.prototype.crossOrigin = 'anonymous'), + (r.OBJLoader.prototype.crossOrigin = 'anonymous'), + (t.exports = r) + }.call( + this, + 'undefined' !== typeof r.g + ? r.g + : 'undefined' !== typeof self + ? self + : 'undefined' !== typeof window + ? window + : {}, + )) + }, + { + '../../vendor/DeviceOrientationControls': 215, + 'super-three': 57, + 'super-three/examples/js/loaders/DRACOLoader': 58, + 'super-three/examples/js/loaders/GLTFLoader': 59, + 'super-three/examples/js/loaders/MTLLoader': 60, + 'super-three/examples/js/loaders/OBJLoader': 61, + 'super-three/examples/js/utils/BufferGeometryUtils': 62, + }, + ], + 180: [ + function (e, t, n) { + var r = e('../core/shader').registerShader, + i = e('../lib/three'), + o = e('../utils/') + function a(e, t) { + return ( + t.color.set(e.color), + (t.fog = e.fog), + (t.wireframe = e.wireframe), + (t.wireframeLinewidth = e.wireframeLinewidth), + t + ) + } + t.exports.Shader = r('flat', { + schema: { + color: { type: 'color' }, + fog: { default: !0 }, + height: { default: 256 }, + offset: { type: 'vec2', default: { x: 0, y: 0 } }, + repeat: { type: 'vec2', default: { x: 1, y: 1 } }, + src: { type: 'map' }, + width: { default: 512 }, + wireframe: { default: !1 }, + wireframeLinewidth: { default: 2 }, + }, + init: function (e) { + ;(this.rendererSystem = this.el.sceneEl.systems.renderer), + (this.materialData = { color: new i.Color() }), + (this.textureSrc = null), + a(e, this.materialData), + this.rendererSystem.applyColorCorrection(this.materialData.color), + (this.material = new i.MeshBasicMaterial(this.materialData)), + o.material.updateMap(this, e) + }, + update: function (e) { + this.updateMaterial(e), o.material.updateMap(this, e) + }, + updateMaterial: function (e) { + var t + for (t in (a(e, this.materialData), + this.rendererSystem.applyColorCorrection(this.materialData.color), + this.materialData)) + this.material[t] = this.materialData[t] + }, + }) + }, + { '../core/shader': 141, '../lib/three': 179, '../utils/': 205 }, + ], + 181: [ + function (e, t, n) { + e('./flat'), e('./standard'), e('./sdf'), e('./msdf'), e('./ios10hls') + }, + { './flat': 180, './ios10hls': 182, './msdf': 183, './sdf': 184, './standard': 185 }, + ], + 182: [ + function (e, t, n) { + var r = e('../core/shader').registerShader + t.exports.Shader = r('ios10hls', { + schema: { + src: { type: 'map', is: 'uniform' }, + opacity: { type: 'number', is: 'uniform', default: 1 }, + }, + vertexShader: [ + 'varying vec2 vUV;', + 'void main(void) {', + ' gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', + ' vUV = uv;', + '}', + ].join('\n'), + fragmentShader: [ + 'uniform sampler2D src;', + 'uniform float opacity;', + 'varying vec2 vUV;', + 'void main() {', + ' vec2 offset = vec2(0, 0);', + ' vec2 repeat = vec2(1, 1);', + ' vec4 color = texture2D(src, vec2(vUV.x / repeat.x + offset.x, (1.0 - vUV.y) / repeat.y + offset.y)).bgra;', + ' gl_FragColor = vec4(color.rgb, opacity);', + '}', + ].join('\n'), + }) + }, + { '../core/shader': 141 }, + ], + 183: [ + function (e, t, n) { + var r = e('../core/shader').registerShader, + i = !!document.createElement('canvas').getContext('webgl2'), + o = [ + 'attribute vec2 uv;', + 'attribute vec3 position;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 modelViewMatrix;', + 'varying vec2 vUV;', + 'void main(void) {', + ' gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', + ' vUV = uv;', + '}', + ].join('\n'), + a = [ + '#version 300 es', + 'in vec2 uv;', + 'in vec3 position;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 modelViewMatrix;', + 'out vec2 vUV;', + 'void main(void) {', + ' gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', + ' vUV = uv;', + '}', + ].join('\n'), + s = i ? a : o, + l = [ + '#ifdef GL_OES_standard_derivatives', + '#extension GL_OES_standard_derivatives: enable', + '#endif', + 'precision highp float;', + 'uniform bool negate;', + 'uniform float alphaTest;', + 'uniform float opacity;', + 'uniform sampler2D map;', + 'uniform vec3 color;', + 'varying vec2 vUV;', + 'float median(float r, float g, float b) {', + ' return max(min(r, g), min(max(r, g), b));', + '}', + '#define BIG_ENOUGH 0.001', + '#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)', + 'void main() {', + ' vec3 sampleColor = texture2D(map, vUV).rgb;', + ' if (negate) { sampleColor = 1.0 - sampleColor; }', + ' float sigDist = median(sampleColor.r, sampleColor.g, sampleColor.b) - 0.5;', + ' float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);', + ' float dscale = 0.353505;', + ' vec2 duv = dscale * (dFdx(vUV) + dFdy(vUV));', + ' float isBigEnough = max(abs(duv.x), abs(duv.y));', + ' // Do modified alpha test.', + ' if (isBigEnough > BIG_ENOUGH) {', + ' float ratio = BIG_ENOUGH / isBigEnough;', + ' alpha = ratio * alpha + (1.0 - ratio) * (sigDist + 0.5);', + ' }', + ' // Do modified alpha test.', + ' if (alpha < alphaTest * MODIFIED_ALPHATEST) { discard; return; }', + ' gl_FragColor = vec4(color.xyz, alpha * opacity);', + '}', + ].join('\n'), + c = [ + '#version 300 es', + 'precision highp float;', + 'uniform bool negate;', + 'uniform float alphaTest;', + 'uniform float opacity;', + 'uniform sampler2D map;', + 'uniform vec3 color;', + 'in vec2 vUV;', + 'out vec4 fragColor;', + 'float median(float r, float g, float b) {', + ' return max(min(r, g), min(max(r, g), b));', + '}', + '#define BIG_ENOUGH 0.001', + '#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)', + 'void main() {', + ' vec3 sampleColor = texture(map, vUV).rgb;', + ' if (negate) { sampleColor = 1.0 - sampleColor; }', + ' float sigDist = median(sampleColor.r, sampleColor.g, sampleColor.b) - 0.5;', + ' float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);', + ' float dscale = 0.353505;', + ' vec2 duv = dscale * (dFdx(vUV) + dFdy(vUV));', + ' float isBigEnough = max(abs(duv.x), abs(duv.y));', + ' // Do modified alpha test.', + ' if (isBigEnough > BIG_ENOUGH) {', + ' float ratio = BIG_ENOUGH / isBigEnough;', + ' alpha = ratio * alpha + (1.0 - ratio) * (sigDist + 0.5);', + ' }', + ' // Do modified alpha test.', + ' if (alpha < alphaTest * MODIFIED_ALPHATEST) { discard; return; }', + ' fragColor = vec4(color.xyz, alpha * opacity);', + '}', + ].join('\n'), + u = i ? c : l + t.exports.Shader = r('msdf', { + schema: { + alphaTest: { type: 'number', is: 'uniform', default: 0.5 }, + color: { type: 'color', is: 'uniform', default: 'white' }, + map: { type: 'map', is: 'uniform' }, + negate: { type: 'boolean', is: 'uniform', default: !0 }, + opacity: { type: 'number', is: 'uniform', default: 1 }, + }, + raw: !0, + vertexShader: s, + fragmentShader: u, + }) + }, + { '../core/shader': 141 }, + ], + 184: [ + function (e, t, n) { + var r = e('../core/shader').registerShader + t.exports.Shader = r('sdf', { + schema: { + alphaTest: { type: 'number', is: 'uniform', default: 0.5 }, + color: { type: 'color', is: 'uniform', default: 'white' }, + map: { type: 'map', is: 'uniform' }, + opacity: { type: 'number', is: 'uniform', default: 1 }, + }, + raw: !0, + vertexShader: [ + '#version 300 es', + 'in vec2 uv;', + 'in vec3 position;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 modelViewMatrix;', + 'out vec2 vUV;', + 'void main(void) {', + ' gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);', + ' vUV = uv;', + '}', + ].join('\n'), + fragmentShader: [ + '#version 300 es', + 'precision highp float;', + 'uniform float alphaTest;', + 'uniform float opacity;', + 'uniform sampler2D map;', + 'uniform vec3 color;', + 'in vec2 vUV;', + 'out vec4 fragColor;', + '#ifdef GL_OES_standard_derivatives', + ' float contour(float width, float value) {', + ' return smoothstep(0.5 - value, 0.5 + value, width);', + ' }', + '#else', + ' float aastep(float value, float afwidth) {', + ' return smoothstep(0.5 - afwidth, 0.5 + afwidth, value);', + ' }', + '#endif', + '#define BIG_ENOUGH 0.001', + '#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)', + '#define ALL_SMOOTH 0.4', + '#define ALL_ROUGH 0.02', + '#define DISCARD_ALPHA (alphaTest / (2.2 - 1.2 * ratio))', + 'void main() {', + ' #ifdef GL_OES_standard_derivatives', + ' vec2 uv = vUV;', + ' vec4 texColor = texture(map, uv);', + ' float dist = texColor.a;', + ' float width = fwidth(dist);', + ' float alpha = contour(dist, width);', + ' float dscale = 0.353505;', + ' vec2 duv = dscale * (dFdx(uv) + dFdy(uv));', + ' float isBigEnough = max(abs(duv.x), abs(duv.y));', + ' if (isBigEnough > BIG_ENOUGH) {', + ' float ratio = BIG_ENOUGH / isBigEnough;', + ' alpha = ratio * alpha + (1.0 - ratio) * dist;', + ' }', + ' if (isBigEnough <= BIG_ENOUGH) {', + ' vec4 box = vec4 (uv - duv, uv + duv);', + ' alpha = (alpha + 0.5 * (', + ' contour(texture(map, box.xy).a, width)', + ' + contour(texture(map, box.zw).a, width)', + ' + contour(texture(map, box.xw).a, width)', + ' + contour(texture(map, box.zy).a, width)', + ' )) / 3.0;', + ' }', + ' if (alpha < alphaTest * MODIFIED_ALPHATEST) { discard; return; }', + ' #else', + ' vec4 texColor = texture(map, vUV);', + ' float value = texColor.a;', + ' float afwidth = (1.0 / 32.0) * (1.4142135623730951 / (2.0 * gl_FragCoord.w));', + ' float alpha = aastep(value, afwidth);', + ' float ratio = (gl_FragCoord.w >= ALL_SMOOTH) ? 1.0 : (gl_FragCoord.w < ALL_ROUGH) ? 0.0 : (gl_FragCoord.w - ALL_ROUGH) / (ALL_SMOOTH - ALL_ROUGH);', + ' if (alpha < alphaTest) { if (ratio >= 1.0) { discard; return; } alpha = 0.0; }', + ' alpha = alpha * ratio + (1.0 - ratio) * value;', + ' if (ratio < 1.0 && alpha <= DISCARD_ALPHA) { discard; return; }', + ' #endif', + ' fragColor = vec4(color, opacity * alpha);', + '}', + ].join('\n'), + }) + }, + { '../core/shader': 141 }, + ], + 185: [ + function (e, t, n) { + var r = e('../core/shader').registerShader, + i = e('../lib/three'), + o = e('../utils/'), + a = new i.CubeTextureLoader(), + s = {} + function l(e, t) { + return ( + t.color.set(e.color), + t.emissive.set(e.emissive), + (t.emissiveIntensity = e.emissiveIntensity), + (t.fog = e.fog), + (t.metalness = e.metalness), + (t.roughness = e.roughness), + (t.wireframe = e.wireframe), + (t.wireframeLinewidth = e.wireframeLinewidth), + e.normalMap && (t.normalScale = e.normalScale), + e.ambientOcclusionMap && (t.aoMapIntensity = e.ambientOcclusionMapIntensity), + e.displacementMap && + ((t.displacementScale = e.displacementScale), + (t.displacementBias = e.displacementBias)), + t + ) + } + t.exports.Shader = r('standard', { + schema: { + ambientOcclusionMap: { type: 'map' }, + ambientOcclusionMapIntensity: { default: 1 }, + ambientOcclusionTextureOffset: { type: 'vec2' }, + ambientOcclusionTextureRepeat: { type: 'vec2', default: { x: 1, y: 1 } }, + color: { type: 'color' }, + displacementMap: { type: 'map' }, + displacementScale: { default: 1 }, + displacementBias: { default: 0.5 }, + displacementTextureOffset: { type: 'vec2' }, + displacementTextureRepeat: { type: 'vec2', default: { x: 1, y: 1 } }, + emissive: { type: 'color', default: '#000' }, + emissiveIntensity: { default: 1 }, + envMap: { default: '' }, + fog: { default: !0 }, + height: { default: 256 }, + metalness: { default: 0, min: 0, max: 1 }, + metalnessMap: { type: 'map' }, + metalnessTextureOffset: { type: 'vec2' }, + metalnessTextureRepeat: { type: 'vec2', default: { x: 1, y: 1 } }, + normalMap: { type: 'map' }, + normalScale: { type: 'vec2', default: { x: 1, y: 1 } }, + normalTextureOffset: { type: 'vec2' }, + normalTextureRepeat: { type: 'vec2', default: { x: 1, y: 1 } }, + offset: { type: 'vec2', default: { x: 0, y: 0 } }, + repeat: { type: 'vec2', default: { x: 1, y: 1 } }, + roughness: { default: 0.5, min: 0, max: 1 }, + roughnessMap: { type: 'map' }, + roughnessTextureOffset: { type: 'vec2' }, + roughnessTextureRepeat: { type: 'vec2', default: { x: 1, y: 1 } }, + sphericalEnvMap: { type: 'map' }, + src: { type: 'map' }, + width: { default: 512 }, + wireframe: { default: !1 }, + wireframeLinewidth: { default: 2 }, + }, + init: function (e) { + ;(this.rendererSystem = this.el.sceneEl.systems.renderer), + (this.materialData = { color: new i.Color(), emissive: new i.Color() }), + l(e, this.materialData), + this.rendererSystem.applyColorCorrection(this.materialData.color), + this.rendererSystem.applyColorCorrection(this.materialData.emissive), + (this.material = new i.MeshStandardMaterial(this.materialData)), + o.material.updateMap(this, e), + e.normalMap && o.material.updateDistortionMap('normal', this, e), + e.displacementMap && o.material.updateDistortionMap('displacement', this, e), + e.ambientOcclusionMap && + o.material.updateDistortionMap('ambientOcclusion', this, e), + e.metalnessMap && o.material.updateDistortionMap('metalness', this, e), + e.roughnessMap && o.material.updateDistortionMap('roughness', this, e), + this.updateEnvMap(e) + }, + update: function (e) { + this.updateMaterial(e), + o.material.updateMap(this, e), + e.normalMap && o.material.updateDistortionMap('normal', this, e), + e.displacementMap && o.material.updateDistortionMap('displacement', this, e), + e.ambientOcclusionMap && + o.material.updateDistortionMap('ambientOcclusion', this, e), + e.metalnessMap && o.material.updateDistortionMap('metalness', this, e), + e.roughnessMap && o.material.updateDistortionMap('roughness', this, e), + this.updateEnvMap(e) + }, + updateMaterial: function (e) { + var t, + n = this.material + for (t in (l(e, this.materialData), + this.rendererSystem.applyColorCorrection(this.materialData.color), + this.rendererSystem.applyColorCorrection(this.materialData.emissive), + this.materialData)) + n[t] = this.materialData[t] + }, + updateEnvMap: function (e) { + var t = this, + n = this.material, + r = e.envMap, + l = e.sphericalEnvMap + if ((!r && !l) || this.isLoadingEnvMap) + return (n.envMap = null), void (n.needsUpdate = !0) + ;(this.isLoadingEnvMap = !0), + l + ? this.el.sceneEl.systems.material.loadTexture(l, { src: l }, function (e) { + ;(t.isLoadingEnvMap = !1), + (e.mapping = i.SphericalReflectionMapping), + (n.envMap = e), + o.material.handleTextureEvents(t.el, e), + (n.needsUpdate = !0) + }) + : s[r] + ? s[r].then(function (e) { + ;(t.isLoadingEnvMap = !1), + (n.envMap = e), + o.material.handleTextureEvents(t.el, e), + (n.needsUpdate = !0) + }) + : (s[r] = new Promise(function (e) { + o.srcLoader.validateCubemapSrc(r, function (r) { + a.load(r, function (r) { + ;(t.isLoadingEnvMap = !1), + (n.envMap = r), + o.material.handleTextureEvents(t.el, r), + e(r) + }) + }) + })) + }, + }) + }, + { '../core/shader': 141, '../lib/three': 179, '../utils/': 205 }, + ], + 186: [ + function (e, t, n) { + var r = + "html.a-fullscreen{bottom:0;left:0;position:fixed;right:0;top:0}html.a-fullscreen body{height:100%;margin:0;overflow:hidden;padding:0;width:100%}html.a-fullscreen .a-canvas{width:100%!important;height:100%!important;top:0!important;left:0!important;right:0!important;bottom:0!important;position:fixed!important}html:not(.a-fullscreen) .a-enter-ar,html:not(.a-fullscreen) .a-enter-vr{right:5px;bottom:5px}:-webkit-full-screen{background-color:transparent}.a-hidden{display:none!important}.a-canvas{height:100%;left:0;position:absolute;top:0;width:100%}.a-canvas.a-grab-cursor:hover{cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}canvas.a-canvas.a-mouse-cursor-hover:hover{cursor:pointer}.a-inspector-loader{background-color:#ed3160;position:fixed;left:3px;top:3px;padding:6px 10px;color:#fff;text-decoration:none;font-size:12px;font-family:Roboto,sans-serif;text-align:center;z-index:99999;width:204px}@keyframes dots-1{from{opacity:0}25%{opacity:1}}@keyframes dots-2{from{opacity:0}50%{opacity:1}}@keyframes dots-3{from{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{from{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{from{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{from{opacity:0}75%{opacity:1}}.a-inspector-loader .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.a-inspector-loader .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.a-inspector-loader .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}a-scene{display:block;position:relative;height:100%;width:100%}a-assets,a-scene audio,a-scene img,a-scene video{display:none}.a-enter-vr-modal,.a-orientation-modal{font-family:Consolas,Andale Mono,Courier New,monospace}.a-enter-vr-modal a{border-bottom:1px solid #fff;padding:2px 0;text-decoration:none;transition:.1s color ease-in}.a-enter-vr-modal a:hover{background-color:#fff;color:#111;padding:2px 4px;position:relative;left:-4px}.a-enter-ar,.a-enter-vr{font-family:sans-serif,monospace;font-size:13px;width:100%;font-weight:200;line-height:16px;position:absolute;right:20px;bottom:20px}.a-enter-ar{right:80px}.a-enter-vr-button,.a-enter-vr-modal,.a-enter-vr-modal a{color:#fff;user-select:none;outline:0}.a-enter-vr-button{background:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z' fill='%23fff'/%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z' fill='%23fff'/%3E%3C/svg%3E\") 50% 50% no-repeat rgba(0,0,0,.35)}.a-enter-ar-button{background:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z' fill='%23fff'/%3E%3Cpath d='M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z' fill='%23fff'/%3E%3Cpath d='M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z' fill='%23fff'/%3E%3C/svg%3E\") 50% 50% no-repeat rgba(0,0,0,.2)}.a-enter-ar-button,.a-enter-vr-button{background-size:90% 90%;border:0;bottom:0;cursor:pointer;min-width:58px;min-height:34px;padding-right:0;padding-top:0;position:absolute;right:0;transition:background-color .05s ease;-webkit-transition:background-color .05s ease;z-index:9999;border-radius:8px;touch-action:manipulation}.a-enter-ar-button{background-size:100% 90%;margin-right:10px;border-radius:7px}.a-enter-ar-button:active,.a-enter-ar-button:hover,.a-enter-vr-button:active,.a-enter-vr-button:hover{background-color:#ef2d5e}.a-enter-vr-button.resethover{background-color:rgba(0,0,0,.35)}[data-a-enter-vr-no-webvr] .a-enter-vr-button{border-color:#666;opacity:.65}[data-a-enter-vr-no-webvr] .a-enter-vr-button:active,[data-a-enter-vr-no-webvr] .a-enter-vr-button:hover{background-color:rgba(0,0,0,.35);cursor:not-allowed}.a-enter-vr-modal{background-color:#666;border-radius:0;display:none;min-height:32px;margin-right:70px;padding:9px;width:280px;right:2%;position:absolute}.a-enter-vr-modal:after{border-bottom:10px solid transparent;border-left:10px solid #666;border-top:10px solid transparent;display:inline-block;content:'';position:absolute;right:-5px;top:5px;width:0;height:0}.a-enter-vr-modal a,.a-enter-vr-modal p{display:inline}.a-enter-vr-modal p{margin:0}.a-enter-vr-modal p:after{content:' '}[data-a-enter-vr-no-headset].a-enter-vr:hover .a-enter-vr-modal,[data-a-enter-vr-no-webvr].a-enter-vr:hover .a-enter-vr-modal{display:block}.a-orientation-modal{background:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E) center/50% 50% no-repeat rgba(244,244,244,1);bottom:0;font-size:14px;font-weight:600;left:0;line-height:20px;right:0;position:fixed;top:0;z-index:9999999}.a-orientation-modal:after{color:#666;content:\"Insert phone into Cardboard holder.\";display:block;position:absolute;text-align:center;top:70%;transform:translateY(-70%);width:100%}.a-orientation-modal button{background:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E) no-repeat;border:none;height:50px;text-indent:-9999px;width:50px}.a-loader-title{background-color:rgba(0,0,0,.6);font-family:sans-serif,monospace;text-align:center;font-size:20px;height:50px;font-weight:300;line-height:50px;position:absolute;right:0;left:0;top:0;color:#fff}.a-modal{background:0 0/50% 50% rgba(0,0,0,.6);bottom:0;font-size:14px;font-weight:600;left:0;line-height:20px;right:0;position:fixed;top:0;z-index:9999999}.a-dialog{position:relative;left:50%;top:50%;transform:translate(-50%,-50%);z-index:199995;width:300px;height:200px;background-size:contain;background-color:#fff;font-family:sans-serif,monospace;font-size:20px;border-radius:3px;padding:6px}.a-dialog-text-container{width:100%;height:70%;align-self:flex-start;display:flex;justify-content:center;align-content:center;flex-direction:column}.a-dialog-text{display:inline-block;font-weight:400;font-size:14pt;margin:8px}.a-dialog-buttons-container{display:inline-flex;align-self:flex-end;width:100%;height:30%}.a-dialog-button{cursor:pointer;align-self:center;opacity:.9;height:80%;width:50%;font-size:12pt;margin:4px;border-radius:2px;text-align:center;border:none;display:inline-block;-webkit-transition:all .25s ease-in-out;transition:all .25s ease-in-out;box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.2);user-select:none}.a-dialog-permission-button:hover{box-shadow:0 7px 14px rgba(0,0,0,.2),0 2px 2px rgba(0,0,0,.2)}.a-dialog-allow-button{background-color:#00ceff}.a-dialog-deny-button{background-color:#ff005b}.a-dialog-ok-button{background-color:#00ceff;width:100%}" + e('browserify-css').createStyle(r, { href: 'src/style/aframe.css' }), + (t.exports = r) + }, + { 'browserify-css': 4 }, + ], + 187: [ + function (e, t, n) { + var r = + '.rs-base{background-color:#333;color:#fafafa;border-radius:0;font:10px monospace;left:5px;line-height:1em;opacity:.85;overflow:hidden;padding:10px;position:fixed;top:5px;width:300px;z-index:10000}.rs-base div.hidden{display:none}.rs-base h1{color:#fff;cursor:pointer;font-size:1.4em;font-weight:300;margin:0 0 5px;padding:0}.rs-group{display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-direction:column-reverse;flex-direction:column-reverse;margin-bottom:5px}.rs-group:last-child{margin-bottom:0}.rs-counter-base{align-items:center;display:-webkit-box;display:-webkit-flex;display:flex;height:10px;-webkit-justify-content:space-between;justify-content:space-between;margin:2px 0}.rs-counter-base.alarm{color:#b70000;text-shadow:0 0 0 #b70000,0 0 1px #fff,0 0 1px #fff,0 0 2px #fff,0 0 2px #fff,0 0 3px #fff,0 0 3px #fff,0 0 4px #fff,0 0 4px #fff}.rs-counter-id{font-weight:300;-webkit-box-ordinal-group:0;-webkit-order:0;order:0;width:54px}.rs-counter-value{font-weight:300;-webkit-box-ordinal-group:1;-webkit-order:1;order:1;text-align:right;width:35px}.rs-canvas{-webkit-box-ordinal-group:2;-webkit-order:2;order:2}@media (min-width:480px){.rs-base{left:20px;top:20px}}' + e('browserify-css').createStyle(r, { href: 'src/style/rStats.css' }), + (t.exports = r) + }, + { 'browserify-css': 4 }, + ], + 188: [ + function (e, t, n) { + var r = e('../constants/'), + i = e('../core/system').registerSystem, + o = 'data-aframe-default-camera' + function a(e) { + var t + e.camera && (t = e.querySelector('[' + o + ']')) && e.removeChild(t) + } + t.exports.System = i('camera', { + init: function () { + ;(this.activeCameraEl = null), + (this.render = this.render.bind(this)), + (this.unwrapRender = this.unwrapRender.bind(this)), + (this.wrapRender = this.wrapRender.bind(this)), + (this.initialCameraFound = !1), + (this.numUserCameras = 0), + (this.numUserCamerasChecked = 0), + this.setupInitialCamera() + }, + setupInitialCamera: function () { + var e, + t, + n = this.sceneEl, + r = this + if (!n.camera || n.camera.el.getAttribute('camera').spectator) + if ((e = n.querySelectorAll('a-camera, [camera]')).length) + for (this.numUserCameras = e.length, t = 0; t < e.length; t++) + e[t].addEventListener('object3dset', function (e) { + 'camera' === e.detail.type && r.checkUserCamera(this) + }), + e[t].isNode + ? e[t].load() + : e[t].addEventListener('nodeready', function () { + this.load() + }) + else this.createDefaultCamera() + else n.emit('cameraready', { cameraEl: n.camera.el }) + }, + checkUserCamera: function (e) { + var t, + n = this.el.sceneEl + this.numUserCamerasChecked++, + this.initialCameraFound || + ((t = e.getAttribute('camera')).active && !t.spectator + ? ((this.initialCameraFound = !0), + (n.camera = e.getObject3D('camera')), + n.emit('cameraready', { cameraEl: e })) + : this.numUserCamerasChecked === this.numUserCameras && + this.createDefaultCamera()) + }, + createDefaultCamera: function () { + var e, + t = this.sceneEl + ;(e = document.createElement('a-entity')).setAttribute('camera', { + active: !0, + }), + e.setAttribute('position', { x: 0, y: r.DEFAULT_CAMERA_HEIGHT, z: 0 }), + e.setAttribute('wasd-controls', ''), + e.setAttribute('look-controls', ''), + e.setAttribute(r.AFRAME_INJECTED, ''), + e.addEventListener('object3dset', function (n) { + 'camera' === n.detail.type && + ((t.camera = n.detail.object), t.emit('cameraready', { cameraEl: e })) + }), + t.appendChild(e) + }, + disableActiveCamera: function () { + var e + ;(e = this.sceneEl.querySelectorAll('[camera]'))[e.length - 1].setAttribute( + 'camera', + 'active', + !0, + ) + }, + setActiveCamera: function (e) { + var t, + n, + r, + i, + s = this.activeCameraEl, + l = this.sceneEl + if ((i = e.getObject3D('camera')) && e !== this.activeCameraEl) { + var c = l.querySelector('[' + o + ']') + for ( + e !== (c && c.querySelector('[camera]')) && a(l), + this.activeCameraEl = e, + this.activeCameraEl.play(), + l.camera = i, + s && s.setAttribute('camera', 'active', !1), + n = l.querySelectorAll('[camera]'), + r = 0; + r < n.length; + r++ + ) + (t = n[r]).isEntity && + e !== t && + (t.setAttribute('camera', 'active', !1), t.pause()) + l.emit('camera-set-active', { cameraEl: e }) + } + }, + setSpectatorCamera: function (e) { + var t, + n = this.spectatorCameraEl, + r = this.sceneEl + e.getObject3D('camera') && + e !== this.spectatorCameraEl && + (n && n.setAttribute('camera', 'spectator', !1), + (t = this.spectatorCameraEl = e), + r.addEventListener('enter-vr', this.wrapRender), + r.addEventListener('exit-vr', this.unwrapRender), + t.setAttribute('camera', 'active', !1), + t.play(), + r.emit('camera-set-spectator', { cameraEl: e })) + }, + disableSpectatorCamera: function () { + this.spectatorCameraEl = void 0 + }, + wrapRender: function () { + this.spectatorCameraEl && + !this.originalRender && + ((this.originalRender = this.sceneEl.renderer.render), + (this.sceneEl.renderer.render = this.render)) + }, + unwrapRender: function () { + this.originalRender && + ((this.sceneEl.renderer.render = this.originalRender), + (this.originalRender = void 0)) + }, + render: function (e, t) { + var n, + r, + i = this.sceneEl + ;(n = i.renderer.xr.enabled), + this.originalRender.call(i.renderer, e, t), + this.spectatorCameraEl && + !i.isMobile && + n && + ((r = this.spectatorCameraEl.components.camera.camera), + (i.renderer.xr.enabled = !1), + this.originalRender.call(i.renderer, e, r), + (i.renderer.xr.enabled = n)) + }, + }) + }, + { '../constants/': 123, '../core/system': 142 }, + ], + 189: [ + function (e, t, n) { + var r = e('../core/geometry').geometries, + i = e('../core/system').registerSystem + function o(e) { + var t = e.primitive, + n = r[t] && r[t].Geometry, + i = new n() + if (!n) throw new Error('Unknown geometry `' + t + '`') + return i.init(e), i.geometry + } + function a(e, t) { + e[t]-- + } + function s(e, t) { + e[t] = void 0 === e[t] ? 1 : e[t] + 1 + } + t.exports.System = i('geometry', { + init: function () { + ;(this.cache = {}), (this.cacheCount = {}) + }, + clearCache: function () { + ;(this.cache = {}), (this.cacheCount = {}) + }, + getOrCreateGeometry: function (e) { + var t, + n, + r = this.cache + return e.skipCache + ? o(e) + : ((t = r[(n = this.hash(e))]), + s(this.cacheCount, n), + t || ((t = o(e)), (r[n] = t), t)) + }, + unuseGeometry: function (e) { + var t, + n = this.cache, + r = this.cacheCount + e.skipCache || + (n[(t = this.hash(e))] && + (a(r, t), r[t] > 0 || (n[t].dispose(), delete n[t], delete r[t]))) + }, + hash: function (e) { + return JSON.stringify(e) + }, + }) + }, + { '../core/geometry': 132, '../core/system': 142 }, + ], + 190: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../lib/three') + t.exports.System = r('gltf-model', { + schema: { dracoDecoderPath: { default: '' } }, + init: function () { + var e = this.data.dracoDecoderPath + ;(this.dracoLoader = new i.DRACOLoader()), this.dracoLoader.setDecoderPath(e) + }, + update: function () { + var e + this.dracoLoader || + ((e = this.data.dracoDecoderPath), + (this.dracoLoader = new i.DRACOLoader()), + this.dracoLoader.setDecoderPath(e)) + }, + getDRACOLoader: function () { + return this.dracoLoader + }, + }) + }, + { '../core/system': 142, '../lib/three': 179 }, + ], + 191: [ + function (e, t, n) { + e('./camera'), + e('./geometry'), + e('./gltf-model'), + e('./light'), + e('./material'), + e('./renderer'), + e('./shadow'), + e('./tracked-controls-webvr'), + e('./tracked-controls-webxr'), + e('./webxr') + }, + { + './camera': 188, + './geometry': 189, + './gltf-model': 190, + './light': 192, + './material': 193, + './renderer': 194, + './shadow': 195, + './tracked-controls-webvr': 196, + './tracked-controls-webxr': 197, + './webxr': 198, + }, + ], + 192: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../utils/bind'), + o = e('../constants/'), + a = 'data-aframe-default-light' + t.exports.System = r('light', { + schema: { defaultLightsEnabled: { default: !0 } }, + init: function () { + ;(this.defaultLights = !1), + (this.userDefinedLights = !1), + this.sceneEl.addEventListener('loaded', i(this.setupDefaultLights, this)) + }, + registerLight: function (e) { + e.hasAttribute(a) || (this.removeDefaultLights(), (this.userDefinedLights = !0)) + }, + removeDefaultLights: function () { + var e, + t = this.sceneEl + if (this.defaultLights) { + e = document.querySelectorAll('[' + a + ']') + for (var n = 0; n < e.length; n++) t.removeChild(e[n]) + this.defaultLights = !1 + } + }, + setupDefaultLights: function () { + var e, + t, + n = this.sceneEl + this.userDefinedLights || + this.defaultLights || + !this.data.defaultLightsEnabled || + ((e = document.createElement('a-entity')).setAttribute('light', { + color: '#BBB', + type: 'ambient', + }), + e.setAttribute(a, ''), + e.setAttribute(o.AFRAME_INJECTED, ''), + n.appendChild(e), + (t = document.createElement('a-entity')).setAttribute('light', { + color: '#FFF', + intensity: 0.6, + castShadow: !0, + }), + t.setAttribute('position', { x: -0.5, y: 1, z: 1 }), + t.setAttribute(a, ''), + t.setAttribute(o.AFRAME_INJECTED, ''), + n.appendChild(t), + (this.defaultLights = !0)) + }, + }) + }, + { '../constants/': 123, '../core/system': 142, '../utils/bind': 199 }, + ], + 193: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../lib/three'), + o = e('../utils/'), + a = e('../utils/material').isHLS, + s = o.bind, + l = o.debug, + c = l('components:texture:error'), + u = new i.TextureLoader(), + h = l('components:texture:warn') + function d(e, t) { + var n, + r, + i, + o = t.getAttribute('id') + if (o) return o + for (r = '', i = e || {}, n = 0; n < t.attributes.length; n++) + i[t.attributes[n].name] = t.attributes[n].value + return ( + Object.keys(i) + .sort() + .forEach(function (e) { + r += e + ':' + i[e] + ';' + }), + r + ) + } + function p(e, t) { + return new Promise(n) + function n(n, r) { + function o(e) { + f(e, t), (e.needsUpdate = !0), n(e) + } + 'string' !== typeof e + ? o(new i.Texture(e)) + : u.load( + e, + o, + function () {}, + function (e) { + c( + '`$s` could not be fetched (Error code: %s; Response: %s)', + e.status, + e.statusText, + ) + }, + ) + } + } + function f(e, t) { + var n = t.offset || { x: 0, y: 0 }, + r = t.repeat || { x: 1, y: 1 } + !!t.npot && + ((e.wrapS = i.ClampToEdgeWrapping), + (e.wrapT = i.ClampToEdgeWrapping), + (e.magFilter = i.LinearFilter), + (e.minFilter = i.LinearFilter)), + (1 === r.x && 1 === r.y) || + ((e.wrapS = i.RepeatWrapping), + (e.wrapT = i.RepeatWrapping), + e.repeat.set(r.x, r.y)), + (0 === n.x && 0 === n.y) || e.offset.set(n.x, n.y) + } + function m(e, t, n) { + var r = document.createElement('video') + return ( + (r.width = t), + (r.height = n), + r.setAttribute('playsinline', ''), + r.setAttribute('webkit-playsinline', ''), + (r.autoplay = !0), + (r.loop = !0), + (r.crossOrigin = 'anonymous'), + r.addEventListener( + 'error', + function () { + h('`$s` is not a valid video', e) + }, + !0, + ), + (r.src = e), + r + ) + } + function v(e) { + return ( + (e.autoplay = + e.hasAttribute('autoplay') && 'false' !== e.getAttribute('autoplay')), + (e.controls = + e.hasAttribute('controls') && 'false' !== e.getAttribute('controls')), + 'false' === e.getAttribute('loop') && e.removeAttribute('loop'), + 'false' === e.getAttribute('preload') && (e.preload = 'none'), + (e.crossOrigin = e.crossOrigin || 'anonymous'), + e.setAttribute('playsinline', ''), + e.setAttribute('webkit-playsinline', ''), + e + ) + } + u.setCrossOrigin('anonymous'), + (t.exports.System = r('material', { + init: function () { + ;(this.materials = {}), + (this.textureCounts = {}), + (this.textureCache = {}), + this.sceneEl.addEventListener( + 'materialtextureloaded', + s(this.onMaterialTextureLoaded, this), + ) + }, + clearTextureCache: function () { + this.textureCache = {} + }, + loadTexture: function (e, t, n) { + var r = this + if ('CANVAS' !== e.tagName) { + if ('VIDEO' === e.tagName) + return ( + e.src || + e.srcObject || + e.childElementCount || + h( + 'Video element was defined with neither `source` elements nor `src` / `srcObject` attributes.', + ), + void this.loadVideo(e, t, n) + ) + o.srcLoader.validateSrc(e, i, a) + } else this.loadCanvas(e, t, n) + function i(e) { + r.loadImage(e, t, n) + } + function a(e) { + r.loadVideo(e, t, n) + } + }, + loadImage: function (e, t, n) { + var r = this.hash(t), + i = this.textureCache + i[r] || (i[r] = p(e, t)), i[r].then(n) + }, + loadCanvas: function (e, t, n) { + var r + f((r = new i.CanvasTexture(e)), t), n(r) + }, + loadVideo: function (e, t, n) { + var r, + o, + s, + l, + c = this.textureCache + function u(e) { + ;(e.texture.needsUpdate = !0), n(e.texture, e.videoEl) + } + if ('string' !== typeof e) { + if (((s = e), c[(r = this.hashVideo(t, s))])) return void c[r].then(u) + v(s) + } + ;(s = s || m(e, t.width, t.height)), + c[(r = this.hashVideo(t, s))] + ? c[r].then(u) + : (((o = new i.VideoTexture(s)).minFilter = i.LinearFilter), + f(o, t), + this.sceneEl.isIOS && + a(s.src || s.getAttribute('src'), s.type || s.getAttribute('type')) && + ((o.format = i.RGBAFormat), + (o.needsCorrectionBGRA = !0), + (o.flipY = !1), + (o.needsCorrectionFlipY = !0)), + (l = { texture: o, videoEl: s }), + (c[r] = Promise.resolve(l)), + u(l)) + }, + hash: function (e) { + return ( + e.src.tagName && ((e = o.extendDeep({}, e)).src = e.src.src), + JSON.stringify(e) + ) + }, + hashVideo: function (e, t) { + return d(e, t) + }, + registerMaterial: function (e) { + this.materials[e.uuid] = e + }, + unregisterMaterial: function (e) { + delete this.materials[e.uuid] + var t = this.textureCounts + Object.keys(e) + .filter(function (t) { + return e[t] && e[t].isTexture + }) + .forEach(function (n) { + t[e[n].uuid]--, t[e[n].uuid] <= 0 && e[n].dispose() + }) + }, + updateMaterials: function (e) { + var t = this.materials + Object.keys(t).forEach(function (e) { + t[e].needsUpdate = !0 + }) + }, + onMaterialTextureLoaded: function (e) { + this.textureCounts[e.detail.texture.uuid] || + (this.textureCounts[e.detail.texture.uuid] = 0), + this.textureCounts[e.detail.texture.uuid]++ + }, + })) + }, + { + '../core/system': 142, + '../lib/three': 179, + '../utils/': 205, + '../utils/material': 209, + }, + ], + 194: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../utils/'), + o = e('../lib/three'), + a = (0, i.debug)('components:renderer:warn') + t.exports.System = r('renderer', { + schema: { + antialias: { default: 'auto', oneOf: ['true', 'false', 'auto'] }, + highRefreshRate: { default: i.device.isOculusBrowser() }, + logarithmicDepthBuffer: { default: 'auto', oneOf: ['true', 'false', 'auto'] }, + maxCanvasWidth: { default: 1920 }, + maxCanvasHeight: { default: 1920 }, + physicallyCorrectLights: { default: !1 }, + precision: { default: 'high', oneOf: ['high', 'medium', 'low'] }, + sortObjects: { default: !1 }, + colorManagement: { default: !1 }, + gammaOutput: { default: !1 }, + alpha: { default: !0 }, + foveationLevel: { default: 0 }, + }, + init: function () { + var e = this.data, + t = this.el, + n = t.renderer + ;(n.sortObjects = e.sortObjects), + (n.physicallyCorrectLights = e.physicallyCorrectLights), + (e.colorManagement || e.gammaOutput) && + ((n.outputEncoding = o.sRGBEncoding), + e.gammaOutput && + a( + 'Property `gammaOutput` is deprecated. Use `renderer="colorManagement: true;"` instead.', + )), + t.hasAttribute('antialias') && + a( + 'Component `antialias` is deprecated. Use `renderer="antialias: true"` instead.', + ), + t.hasAttribute('logarithmicDepthBuffer') && + a( + 'Component `logarithmicDepthBuffer` is deprecated. Use `renderer="logarithmicDepthBuffer: true"` instead.', + ) + }, + applyColorCorrection: function (e) { + this.data.colorManagement && + e && + (e.isColor + ? e.convertSRGBToLinear() + : e.isTexture && (e.encoding = o.sRGBEncoding)) + }, + }) + }, + { '../core/system': 142, '../lib/three': 179, '../utils/': 205 }, + ], + 195: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../lib/three'), + o = { basic: i.BasicShadowMap, pcf: i.PCFShadowMap, pcfsoft: i.PCFSoftShadowMap } + t.exports.System = r('shadow', { + schema: { + enabled: { default: !0 }, + autoUpdate: { default: !0 }, + type: { default: 'pcf', oneOf: ['basic', 'pcf', 'pcfsoft'] }, + }, + init: function () { + var e = this.sceneEl, + t = this.data + ;(this.shadowMapEnabled = !1), + e.renderer && + ((e.renderer.shadowMap.type = o[t.type]), + (e.renderer.shadowMap.autoUpdate = t.autoUpdate), + this.setShadowMapEnabled(this.shadowMapEnabled)) + }, + update: function (e) { + e.enabled !== this.data.enabled && this.setShadowMapEnabled(this.data.enabled) + }, + setShadowMapEnabled: function (e) { + var t = this.sceneEl.renderer + ;(this.shadowMapEnabled = this.data.enabled && e), + t && (t.shadowMap.enabled = this.shadowMapEnabled) + }, + }) + }, + { '../core/system': 142, '../lib/three': 179 }, + ], + 196: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../utils'), + o = i.device.isWebXRAvailable + t.exports.System = r('tracked-controls-webvr', { + init: function () { + var e = this + ;(this.controllers = []), + (this.isChrome = -1 !== navigator.userAgent.indexOf('Chrome')), + this.updateControllerList(), + (this.throttledUpdateControllerList = i.throttle( + this.updateControllerList, + 500, + this, + )), + o || + (navigator.getVRDisplays && + this.sceneEl.addEventListener('enter-vr', function () { + navigator.getVRDisplays().then(function (t) { + t.length && (e.vrDisplay = t[0]) + }) + })) + }, + tick: function () { + this.isChrome + ? this.updateControllerList() + : this.throttledUpdateControllerList() + }, + updateControllerList: function () { + var e, + t, + n, + r, + i = this.controllers + if ((t = navigator.getGamepads && navigator.getGamepads())) { + for (r = i.length, i.length = 0, n = 0; n < t.length; ++n) + (e = t[n]) && e.pose && i.push(e) + i.length !== r && this.el.emit('controllersupdated', void 0, !1) + } + }, + }) + }, + { '../core/system': 142, '../utils': 205 }, + ], + 197: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../utils') + t.exports.System = r('tracked-controls-webxr', { + init: function () { + ;(this.controllers = []), + (this.oldControllers = []), + (this.oldControllersLength = 0), + (this.throttledUpdateControllerList = i.throttle( + this.updateControllerList, + 500, + this, + )), + (this.updateReferenceSpace = this.updateReferenceSpace.bind(this)), + this.el.addEventListener('enter-vr', this.updateReferenceSpace), + this.el.addEventListener('exit-vr', this.updateReferenceSpace) + }, + tick: function () { + this.throttledUpdateControllerList() + }, + updateReferenceSpace: function () { + var e = this, + t = this.el.xrSession + if (!t) + return ( + (this.referenceSpace = void 0), + (this.controllers = []), + void ( + this.oldControllersLength > 0 && + ((this.oldControllersLength = 0), + this.el.emit('controllersupdated', void 0, !1)) + ) + ) + var n = e.el.sceneEl.systems.webxr.sessionReferenceSpaceType + t.requestReferenceSpace(n) + .then(function (t) { + e.referenceSpace = t + }) + .catch(function (t) { + throw ( + (e.el.sceneEl.systems.webxr.warnIfFeatureNotRequested( + n, + 'tracked-controls-webxr uses reference space "' + n + '".', + ), + t) + ) + }) + }, + updateControllerList: function () { + var e, + t = this.el.xrSession, + n = this.oldControllers + if (!t) { + if (0 === this.oldControllersLength) return + return ( + (this.oldControllersLength = 0), + (this.controllers = []), + void this.el.emit('controllersupdated', void 0, !1) + ) + } + if (t.inputSources) { + if ( + ((this.controllers = t.inputSources), + this.oldControllersLength === this.controllers.length) + ) { + var r = !0 + for (e = 0; e < this.controllers.length; ++e) + if ( + this.controllers[e] !== n[e] || + this.controllers[e].gamepad !== n[e].gamepad + ) { + r = !1 + break + } + if (r) return + } + for (n.length = 0, e = 0; e < this.controllers.length; e++) + n.push(this.controllers[e]) + ;(this.oldControllersLength = this.controllers.length), + this.el.emit('controllersupdated', void 0, !1) + } + }, + }) + }, + { '../core/system': 142, '../utils': 205 }, + ], + 198: [ + function (e, t, n) { + var r = e('../core/system').registerSystem, + i = e('../utils/').debug('systems:webxr:warn') + t.exports.System = r('webxr', { + schema: { + referenceSpaceType: { type: 'string', default: 'local-floor' }, + requiredFeatures: { type: 'array', default: ['local-floor'] }, + optionalFeatures: { type: 'array', default: ['bounded-floor'] }, + overlayElement: { type: 'selector' }, + }, + update: function () { + var e = this.data + ;(this.sessionConfiguration = { + requiredFeatures: e.requiredFeatures, + optionalFeatures: e.optionalFeatures, + }), + (this.sessionReferenceSpaceType = e.referenceSpaceType), + e.overlayElement && + (this.warnIfFeatureNotRequested('dom-overlay'), + (this.sessionConfiguration.domOverlay = { root: e.overlayElement })) + }, + wasFeatureRequested: function (e) { + return ( + 'viewer' === e || + 'local' === e || + !( + !this.sessionConfiguration.requiredFeatures.includes(e) && + !this.sessionConfiguration.optionalFeatures.includes(e) + ) + ) + }, + warnIfFeatureNotRequested: function (e, t) { + this.wasFeatureRequested(e) || + i( + (t ? t + ' ' : '') + + 'Please add the feature "' + + e + + '" to a-scene\'s webxr system options in requiredFeatures/optionalFeatures.', + ) + }, + }) + }, + { '../core/system': 142, '../utils/': 205 }, + ], + 199: [ + function (e, t, n) { + t.exports = function (e, t) { + return ( + (n = Array.prototype.slice.call(arguments, 2)), + function () { + var r = n.concat(Array.prototype.slice.call(arguments, 0)) + return e.apply(t, r) + } + ) + var n + } + }, + {}, + ], + 200: [ + function (e, t, n) { + var r = e('./debug'), + i = e('object-assign'), + o = r('utils:coordinates:warn'), + a = ['x', 'y', 'z', 'w'], + s = /^\s*((-?\d*\.{0,1}\d+(e-?\d+)?)\s+){2,3}(-?\d*\.{0,1}\d+(e-?\d+)?)\s*$/ + t.exports.regex = s + var l = 'object', + c = /\s+/g + function u(e, t) { + var n, r, o, s, u, h, d, f, m + if (e && e instanceof Object) + return ( + (h = void 0 === e.x ? t && t.x : e.x), + (d = void 0 === e.y ? t && t.y : e.y), + (f = void 0 === e.z ? t && t.z : e.z), + (m = void 0 === e.w ? t && t.w : e.w), + void 0 !== h && null !== h && (e.x = p(h)), + void 0 !== d && null !== d && (e.y = p(d)), + void 0 !== f && null !== f && (e.z = p(f)), + void 0 !== m && null !== m && (e.w = p(m)), + e + ) + if (null === e || void 0 === e) return typeof t === l ? i({}, t) : t + for (n = e.trim().split(c), u = {}, s = 0; s < a.length; s++) + if (((o = a[s]), n[s])) u[o] = parseFloat(n[s], 10) + else { + if (void 0 === (r = t && t[o])) continue + u[o] = p(r) + } + return u + } + function h(e) { + var t + return typeof e !== l + ? e + : ((t = e.x + ' ' + e.y), + null != e.z && (t += ' ' + e.z), + null != e.w && (t += ' ' + e.w), + t) + } + function d(e) { + return s.test(e) + } + function p(e) { + return null !== e && void 0 !== e && e.constructor === String + ? parseFloat(e, 10) + : e + } + ;(t.exports.parse = u), + (t.exports.stringify = h), + (t.exports.isCoordinates = d), + (t.exports.isCoordinate = function (e) { + return ( + o( + '`AFRAME.utils.isCoordinate` has been renamed to `AFRAME.utils.isCoordinates`', + ), + d(e) + ) + }), + (t.exports.toVector3 = function (e) { + return new THREE.Vector3(e.x, e.y, e.z) + }) + }, + { './debug': 201, 'object-assign': 39 }, + ], + 201: [ + function (t, n, r) { + ;(function (r) { + var i = t('debug'), + o = t('object-assign'), + a = { colors: { debug: 'gray', error: 'red', info: 'gray', warn: 'orange' } }, + s = function (e) { + var t = i(e) + return (t.color = c(e)), t + } + function l(e) { + var t = e.split(':') + return t[t.length - 1] + } + function c(e) { + var t = l(e) + return (a.colors && a.colors[t]) || null + } + function u() { + try { + return window.localStorage + } catch (e) {} + } + o(s, i) + var h = u() + h && (parseInt(h.logs, 10) || 'true' === h.logs) + ? s.enable('*') + : s.enable('*:error,*:info,*:warn'), + r.browser && (window.logs = s), + (n.exports = s) + }.call(this, t('_process'))) + }, + { _process: 49, debug: 8, 'object-assign': 39 }, + ], + 202: [ + function (e, t, n) { + ;(function (n) { + var r, + i = e('debug')('device:error'), + o = !1, + a = !1, + s = (t.exports.isWebXRAvailable = !window.debug && void 0 !== navigator.xr) + if ( + (window.addEventListener('vrdisplayactivate', function (e) { + var t + s || + ((t = document.createElement('canvas')), + (r = e.display), + t.getContext('webgl', {}), + r.requestPresent([{ source: t }]).then( + function () {}, + function () {}, + )) + }), + s) + ) { + var l = function () { + var e = document.querySelector('a-scene') + e + ? e.hasLoaded + ? e.components['vr-mode-ui'].updateEnterInterfaces() + : e.addEventListener('loaded', l) + : window.addEventListener('DOMContentLoaded', l) + }, + c = function (e) { + i('WebXR session support error: ' + e.message) + } + navigator.xr.isSessionSupported + ? (navigator.xr + .isSessionSupported('immersive-vr') + .then(function (e) { + ;(o = e), l() + }) + .catch(c), + navigator.xr + .isSessionSupported('immersive-ar') + .then(function (e) { + ;(a = e), l() + }) + .catch(function () {})) + : navigator.xr.supportsSession + ? (navigator.xr + .supportsSession('immersive-vr') + .then(function () { + ;(o = !0), l() + }) + .catch(c), + navigator.xr + .supportsSession('immersive-ar') + .then(function () { + ;(a = !0), l() + }) + .catch(function () {})) + : i('WebXR has neither isSessionSupported or supportsSession?!') + } else + navigator.getVRDisplays && + navigator.getVRDisplays().then(function (e) { + var t = document.querySelector('a-scene') + ;(r = e.length && e[0]), t && t.emit('displayconnected', { vrDisplay: r }) + }) + function u() { + return r + } + function h() { + return o || a || !!u() + } + function d() { + return a + } + ;(t.exports.getVRDisplay = u), + (t.exports.checkHeadsetConnected = h), + (t.exports.checkARSupport = d) + var p = (function () { + var e, + t = !1 + return ( + (e = window.navigator.userAgent || window.navigator.vendor || window.opera), + (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test( + e, + ) || + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( + e.substr(0, 4), + )) && + (t = !0), + (m() || f() || A()) && (t = !0), + b() && (t = !1), + function () { + return t + } + ) + })() + function f(e) { + var t = e || window.navigator.userAgent + return /ipad|Nexus (7|9)|xoom|sch-i800|playbook|tablet|kindle/i.test(t) + } + function m() { + return /iPad|iPhone|iPod/.test(window.navigator.platform) + } + function v() { + return !p() && !b() && void 0 !== window.orientation + } + function g() { + return /(OculusBrowser)/i.test(window.navigator.userAgent) + } + function y() { + return /(Mobile VR)/i.test(window.navigator.userAgent) + } + function b() { + return g() || y() + } + function A() { + return /R7 Build/.test(window.navigator.userAgent) + } + ;(t.exports.isMobile = p), + (t.exports.isTablet = f), + (t.exports.isIOS = m), + (t.exports.isMobileDeviceRequestingDesktopSite = v), + (t.exports.isOculusBrowser = g), + (t.exports.isFirefoxReality = y), + (t.exports.isMobileVR = b), + (t.exports.isR7 = A), + (t.exports.isLandscape = function () { + var e = window.orientation + return A() && (e += 90), 90 === e || -90 === e + }), + (t.exports.isBrowserEnvironment = !(n && !n.browser)), + (t.exports.isNodeEnvironment = !t.exports.isBrowserEnvironment) + }.call(this, e('_process'))) + }, + { _process: 49, debug: 8 }, + ], + 203: [ + function (e, t, n) { + var r = {} + function i(e, t) { + return ( + r[(t = t || '.')] || (r[t] = {}), + -1 !== e.indexOf(t) ? (r[t][e] = e.split(t)) : (r[t][e] = e), + r[t][e] + ) + } + ;(t.exports.getComponentPropertyPath = i), + (t.exports.propertyPathCache = r), + (t.exports.getComponentProperty = function (e, t, n) { + var r + return ( + (n = n || '.'), + -1 !== t.indexOf(n) + ? (r = i(t, n)).constructor === String + ? e.getAttribute(r) + : e.getAttribute(r[0])[r[1]] + : e.getAttribute(t) + ) + }), + (t.exports.setComponentProperty = function (e, t, n, r) { + var o + ;(r = r || '.'), + -1 === t.indexOf(r) + ? e.setAttribute(t, n) + : (o = i(t, r)).constructor === String + ? e.setAttribute(o, n) + : e.setAttribute(o[0], o[1], n) + }) + }, + {}, + ], + 204: [ + function (e, t, n) { + t.exports = function (e) { + var t = e.style.width, + n = e.style.height + ;(e.style.width = parseInt(t, 10) + 1 + 'px'), + (e.style.height = parseInt(n, 10) + 1 + 'px'), + setTimeout(function () { + ;(e.style.width = t), (e.style.height = n) + }, 200) + } + }, + {}, + ], + 205: [ + function (e, t, n) { + var r = e('./debug'), + i = e('deep-assign'), + o = e('./device'), + a = e('object-assign'), + s = e('./object-pool'), + l = r('utils:warn') + ;(t.exports.bind = e('./bind')), + (t.exports.coordinates = e('./coordinates')), + (t.exports.debug = r), + (t.exports.device = o), + (t.exports.entity = e('./entity')), + (t.exports.forceCanvasResizeSafariMobile = e('./forceCanvasResizeSafariMobile')), + (t.exports.isIE11 = e('./is-ie11')), + (t.exports.material = e('./material')), + (t.exports.objectPool = s), + (t.exports.split = e('./split').split), + (t.exports.styleParser = e('./styleParser')), + (t.exports.trackedControls = e('./tracked-controls')), + (t.exports.checkHeadsetConnected = function () { + return ( + l( + '`utils.checkHeadsetConnected` has moved to `utils.device.checkHeadsetConnected`', + ), + o.checkHeadsetConnected(arguments) + ) + }), + (t.exports.isGearVR = t.exports.device.isGearVR = + function () { + l('`utils.isGearVR` has been deprecated, use `utils.device.isMobileVR`') + }), + (t.exports.isIOS = function () { + return l('`utils.isIOS` has moved to `utils.device.isIOS`'), o.isIOS(arguments) + }), + (t.exports.isOculusGo = t.exports.device.isOculusGo = + function () { + l('`utils.isOculusGo` has been deprecated, use `utils.device.isMobileVR`') + }), + (t.exports.isMobile = function () { + return ( + l('`utils.isMobile has moved to `utils.device.isMobile`'), + o.isMobile(arguments) + ) + }), + (t.exports.throttle = function (e, n, r) { + var i + return ( + r && (e = t.exports.bind(e, r)), + function () { + var t = Date.now() + ;('undefined' === typeof i || + ('undefined' === typeof i ? n : t - i) >= n) && + ((i = t), e.apply(null, arguments)) + } + ) + }), + (t.exports.throttleTick = function (e, n, r) { + var i + return ( + r && (e = t.exports.bind(e, r)), + function (t, r) { + var o = 'undefined' === typeof i ? r : t - i + ;('undefined' === typeof i || o >= n) && ((i = t), e(t, o)) + } + ) + }), + (t.exports.debounce = function (e, t, n) { + var r + return function () { + var i = this, + o = arguments, + a = function () { + ;(r = null), n || e.apply(i, o) + }, + s = n && !r + clearTimeout(r), (r = setTimeout(a, t)), s && e.apply(i, o) + } + }), + (t.exports.extend = a), + (t.exports.extendDeep = i), + (t.exports.clone = function (e) { + return JSON.parse(JSON.stringify(e)) + }) + var c = (function () { + var e = s.createPool(function () { + return [] + }) + return function (t, n) { + var r, i, o, a, s, l + if ( + void 0 === t || + void 0 === n || + null === t || + null === n || + !( + (t && n && t.constructor === Object && n.constructor === Object) || + (t.constructor === Array && n.constructor === Array) + ) + ) + return t === n + for (r in ((i = e.use()), (o = e.use()), (i.length = 0), (o.length = 0), t)) + i.push(r) + for (r in n) o.push(r) + if (i.length !== o.length) return e.recycle(i), e.recycle(o), !1 + for (a = 0; a < i.length; ++a) + if ( + ((s = t[i[a]]), + (l = n[i[a]]), + 'object' === typeof s || + 'object' === typeof l || + (Array.isArray(s) && Array.isArray(l))) + ) { + if (s === l) continue + if (!c(s, l)) return e.recycle(i), e.recycle(o), !1 + } else if (s !== l) return e.recycle(i), e.recycle(o), !1 + return e.recycle(i), e.recycle(o), !0 + } + })() + ;(t.exports.deepEqual = c), + (t.exports.diff = (function () { + var e = [] + return function (t, n, r) { + var i, o, a, s, l, u, h + for (l in ((s = r || {}), (e.length = 0), t)) e.push(l) + if (!n) return s + for (a in n) -1 === e.indexOf(a) && e.push(a) + for (u = 0; u < e.length; u++) + (i = t[(l = e[u])]), + (o = n[l]), + (((h = i && o && i.constructor === Object && o.constructor === Object) && + !c(i, o)) || + (!h && i !== o)) && + (s[l] = o) + return s + } + })()), + (t.exports.shouldCaptureKeyEvent = function (e) { + return !e.metaKey && document.activeElement === document.body + }), + (t.exports.splitString = function (e, t) { + 'undefined' === typeof t && (t = ' ') + var n = new RegExp(t, 'g') + return (e = (e || '').replace(n, t)).split(t) + }), + (t.exports.getElData = function (e, t) { + t = t || {} + var n = {} + function r(t) { + e.hasAttribute(t) && (n[t] = e.getAttribute(t)) + } + return Object.keys(t).forEach(r), n + }), + (t.exports.getUrlParameter = function (e) { + e = e.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]') + var t = new RegExp('[\\?&]' + e + '=([^&#]*)').exec(location.search) + return null === t ? '' : decodeURIComponent(t[1].replace(/\+/g, ' ')) + }), + (t.exports.isIframed = function () { + return window.top !== window.self + }), + (t.exports.findAllScenes = function (e) { + for ( + var t = [], n = e.getElementsByTagName('*'), r = 0, i = n.length; + r < i; + r++ + ) + n[r].isScene && t.push(n[r]) + return t + }), + (t.exports.srcLoader = e('./src-loader')) + }, + { + './bind': 199, + './coordinates': 200, + './debug': 201, + './device': 202, + './entity': 203, + './forceCanvasResizeSafariMobile': 204, + './is-ie11': 207, + './material': 209, + './object-pool': 210, + './split': 211, + './src-loader': 212, + './styleParser': 213, + './tracked-controls': 214, + 'deep-assign': 10, + 'object-assign': 39, + }, + ], + 206: [ + function (e, t, n) { + window.addEventListener('orientationchange', function () { + ;(document.documentElement.style.height = 'initial'), + setTimeout(function () { + ;(document.documentElement.style.height = '100%'), + setTimeout(function () { + window.scrollTo(0, 1) + }, 500) + }, 500) + }) + }, + {}, + ], + 207: [ + function (e, t, n) { + function r() { + var e = -1, + t = navigator.userAgent + return ( + 'Microsoft Internet Explorer' === navigator.appName + ? null != new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})').exec(t) && + (e = parseFloat(RegExp.$1)) + : 'Netscape' === navigator.appName && + null != new RegExp('Trident/.*rv:([0-9]{1,}[\\.0-9]{0,})').exec(t) && + (e = parseFloat(RegExp.$1)), + e + ) + } + t.exports = 11 === r() + }, + {}, + ], + 208: [ + function (e, t, n) { + t.exports = function (e) { + return /(iphone|ipod|ipad).*os.(7_|8_|9_)/i.test(e) + } + }, + {}, + ], + 209: [ + function (e, t, n) { + var r = e('../lib/three'), + i = ['application/x-mpegurl', 'application/vnd.apple.mpegurl'], + o = new Set(['emissiveMap', 'envMap', 'map', 'specularMap']) + function a(e, t) { + t && + (e.emit('materialtextureloaded', { src: t.image, texture: t }), + t.image && + 'VIDEO' === t.image.tagName && + (t.image.addEventListener('loadeddata', function () { + e.components && + e.components.material && + (t.needsCorrectionBGRA && + t.needsCorrectionFlipY && + -1 !== + ['standard', 'flat'].indexOf(e.components.material.data.shader) && + e.setAttribute('material', 'shader', 'ios10hls'), + e.emit('materialvideoloadeddata', { src: t.image, texture: t })) + }), + t.image.addEventListener('ended', function () { + e.emit('materialvideoended', { src: t.image, texture: t }) + }))) + } + ;(t.exports.updateMapMaterialFromData = function (e, t, n, i) { + var s = n.el, + l = n.material, + c = s.sceneEl.systems.renderer, + u = i[t] + if ((n.materialSrcs || (n.materialSrcs = {}), !u)) + return delete n.materialSrcs[e], void d(null) + function h(t) { + n.materialSrcs[e] === u && d(t) + } + function d(t) { + ;(l[e] = t), + t && o.has(e) && c.applyColorCorrection(t), + (l.needsUpdate = !0), + a(s, t) + } + u !== n.materialSrcs[e] && + ((n.materialSrcs[e] = u), + u instanceof r.Texture + ? d(u) + : s.sceneEl.systems.material.loadTexture( + u, + { src: u, repeat: i.repeat, offset: i.offset, npot: i.npot }, + h, + )) + }), + (t.exports.updateMap = function (e, n) { + return t.exports.updateMapMaterialFromData('map', 'src', e, n) + }), + (t.exports.updateDistortionMap = function (e, t, n) { + var r = e + 'ambientOcclusion' === e && (r = 'ao') + var i = t.el, + s = t.material, + l = i.sceneEl.systems.renderer, + c = n[e + 'Map'], + u = {} + if ( + ((u.src = c), + (u.offset = n[e + 'TextureOffset']), + (u.repeat = n[e + 'TextureRepeat']), + (u.wrap = n[e + 'TextureWrap']), + c) + ) { + if (c === t[e + 'TextureSrc']) return + return ( + (t[e + 'TextureSrc'] = c), + void i.sceneEl.systems.material.loadTexture(c, u, h) + ) + } + function h(e) { + var t = r + 'Map' + ;(s[t] = e), + e && o.has(t) && l.applyColorCorrection(e), + (s.needsUpdate = !0), + a(i, e) + } + s.map && h(null) + }), + (t.exports.handleTextureEvents = a), + (t.exports.isHLS = function (e, t) { + return ( + !(!t || !i.includes(t.toLowerCase())) || + !!(e && e.toLowerCase().indexOf('.m3u8') > 0) + ) + }) + }, + { '../lib/three': 179 }, + ], + 210: [ + function (e, t, n) { + var r = Object.freeze(Object.create(null)) + function i() { + return {} + } + function o(e) { + var t + if (e && e.constructor === Object) for (t in e) e[t] = void 0 + } + function a(e, t) { + var n + if (e && e.constructor === Object) for (n in e) n in t || delete e[n] + } + ;(t.exports.createPool = function (e) { + var t = [], + n = null + function a() { + var e + return ( + (null !== n && n !== t.length) || l(t.length || 5), + (e = t[n]), + (t[n++] = r), + o(e), + e + ) + } + function s(e) { + e instanceof Object && + (null !== n && -1 !== n ? (t[--n] = e) : (t[t.length] = e)) + } + function l(r) { + var i, o + if (((r = void 0 === r ? t.length : r) > 0 && null == n && (n = 0), r > 0)) + for (i = t.length, t.length += Number(r), o = i; o < t.length; o++) t[o] = e() + return t.length + } + function c() { + return t.length + } + return (e = e || i), { grow: l, pool: t, recycle: s, size: c, use: a } + }), + (t.exports.clearObject = o), + (t.exports.removeUnusedKeys = a) + }, + {}, + ], + 211: [ + function (e, t, n) { + t.exports.split = (function () { + var e = {} + return function (t, n) { + return n in e || (e[n] = {}), t in e[n] || (e[n][t] = t.split(n)), e[n][t] + } + })() + }, + {}, + ], + 212: [ + function (t, n, r) { + var i = t('./debug')('utils:src-loader:warn') + function o(e, t, n) { + l(e, function (r) { + r ? t(e) : n(e) + }) + } + function a(e, t) { + var n, + r, + a, + l = '', + c = [] + for (r = 0; r < 5; r++) l += '(url\\((?:[^\\)]+)\\),\\s*)' + function h(e) { + c.push(e), 6 === c.length && t(c) + } + if (((l += '(url\\((?:[^\\)]+)\\)\\s*)'), (a = e.match(new RegExp(l))))) + for (r = 1; r < 7; r++) o(s(a[r]), h) + else if ((n = u(e))) + return 'A-CUBEMAP' === n.tagName && n.srcs + ? t(n.srcs) + : void i('Selector "%s" does not point to <a-cubemap>', e) + } + function s(e) { + var t = e.match(/\url\((.+)\)/) + if (t) return t[1] + } + function l(e, t) { + var n + e.tagName + ? t('IMG' === e.tagName) + : ((n = new XMLHttpRequest()).open('HEAD', e), + n.addEventListener('load', function (r) { + var i + n.status >= 200 && n.status < 300 + ? null == (i = n.getResponseHeader('Content-Type')) + ? c(e, t) + : i.startsWith('image') + ? t(!0) + : t(!1) + : c(e, t), + n.abort() + }), + n.send()) + } + function c(e, t) { + var n = new Image() + function r() { + t(!0) + } + function i() { + t(!1) + } + n.addEventListener('load', r), n.addEventListener('error', i), (n.src = e) + } + function u(t) { + try { + var n = document.querySelector(t) + return n || i('No element was found matching the selector: "%s"', t), n + } catch (e) { + return void i('"%s" is not a valid selector', t) + } + } + n.exports = { parseUrl: s, validateSrc: o, validateCubemapSrc: a } + }, + { './debug': 201 }, + ], + 213: [ + function (e, t, n) { + var r = /-([a-z])/g + function i(e) { + return e.replace(r, c) + } + function o(e) { + var t, n + for (n in e) n !== (t = i(n)) && ((e[t] = e[n]), delete e[n]) + return e + } + ;(t.exports.parse = function (e, t) { + var n + return 'string' !== typeof e || (n = s(e, t))[''] ? e : o(n) + }), + (t.exports.stringify = function (e) { + return 'string' === typeof e ? e : l(e) + }), + (t.exports.toCamelCase = i), + (t.exports.transformKeysToCamelCase = o) + var a = (function () { + var e = [], + t = /url\([^)]+$/ + return function (n) { + var r, + i = '', + o = 0, + a = ';' + for (e.length = 0; o < n.length; ) + -1 === (r = n.indexOf(a, o)) && (r = n.length), + (i += n.substring(o, r)), + t.test(i) + ? ((i += ';'), (o = r + 1)) + : (e.push(i.trim()), (i = ''), (o = r + 1)) + return e + } + })() + function s(e, t) { + var n, r, i, o, s, l + for (t = t || {}, n = a(e), r = 0; r < n.length; r++) + (i = n[r]) && + ((o = i.indexOf(':')), + (s = i.substr(0, o).trim()), + (l = i.substr(o + 1).trim()), + (t[s] = l)) + return t + } + function l(e) { + var t, + n = 0, + r = 0, + i = '' + for (t in e) n++ + for (t in e) (i += t + ': ' + e[t]), r < n - 1 && (i += '; '), r++ + return i + } + function c(e) { + return e[1].toUpperCase() + } + }, + {}, + ], + 214: [ + function (e, t, n) { + var r = e('../constants').DEFAULT_HANDEDNESS, + i = ['x', 'y', 'z', 'w'], + o = 2 + function a(e, t, n) { + var r, + i, + o = e.el.sceneEl, + a = n.index || 0 + return ( + !!t && + !!(i = o && o.systems['tracked-controls-webvr']) && + !!(r = i.controllers).length && + !!l(r, null, t, n.hand, a) + ) + } + function s(e, t, n) { + var r, + i = e.el.sceneEl, + o = i && i.systems['tracked-controls-webxr'] + return ( + !!o && + !(!(r = o.controllers) || !r.length) && + c(r, t, n.hand, n.index, n.iterateControllerProfiles, n.handTracking) + ) + } + function l(e, t, n, i, a) { + var s, + l, + c = 0 + for (l = 0; l < e.length; l++) + if ( + ((s = e[l]), + (!n || s.id.startsWith(n)) && + (n || s.id === t) && + (!i || !s.hand || i === s.hand)) + ) { + if (!i || s.hand) return s + if (c === o * a + (i === r ? 0 : 1)) return s + ++c + } + } + function c(e, t, n, r, i, o) { + var a, + s, + l, + c, + u = !1 + for (a = 0; a < e.length; a++) { + if (((c = (l = e[a]).profiles), o)) u = l.hand + else if (i) for (s = 0; s < c.length && !(u = c[s].startsWith(t)); s++); + else u = c.length > 0 && c[0].startsWith(t) + if (u) + if ('right' === l.handedness || 'left' === l.handedness) { + if (l.handedness === n) return e[a] + } else if (a === r) return e[a] + } + } + ;(t.exports.checkControllerPresentAndSetup = function (e, t, n) { + var r, + i, + o = e.el, + l = o.sceneEl.hasWebXR + if ( + ((i = !!(r = (l ? s : a)(e, t, n))), + !e.controllerPresent || e.controllerEventsActive || l || e.addEventListeners(), + i === e.controllerPresent) + ) + return i + ;(e.controllerPresent = i), + i + ? (e.addEventListeners(), + e.injectTrackedControls(r), + o.emit('controllerconnected', { name: e.name, component: e })) + : (e.removeEventListeners(), + o.emit('controllerdisconnected', { name: e.name, component: e })) + }), + (t.exports.isControllerPresentWebVR = a), + (t.exports.isControllerPresentWebXR = s), + (t.exports.findMatchingControllerWebVR = l), + (t.exports.findMatchingControllerWebXR = c), + (t.exports.emitIfAxesChanged = function (e, t, n) { + var r, o, a, s, l + for (o in t) { + for (r = t[o], a = !1, l = 0; l < r.length; l++) + n.detail.changed[r[l]] && (a = !0) + if (a) { + for (s = {}, l = 0; l < r.length; l++) s[i[l]] = n.detail.axis[r[l]] + e.el.emit(o + 'moved', s) + } + } + }), + (t.exports.onButtonEvent = function (e, t, n, r) { + var i = (r ? n.mapping[r] : n.mapping).buttons[e] + n.el.emit(i + t), n.updateModel && n.updateModel(i, t) + }) + }, + { '../constants': 123 }, + ], + 215: [ + function (e, t, n) { + THREE.DeviceOrientationControls = function (e) { + var t = this + ;(this.object = e), + this.object.rotation.reorder('YXZ'), + (this.enabled = !0), + (this.deviceOrientation = {}), + (this.screenOrientation = 0), + (this.alphaOffset = 0) + var n = function (e) { + t.deviceOrientation = e + }, + r = function () { + t.screenOrientation = window.orientation || 0 + }, + i = (function () { + var e = new THREE.Vector3(0, 0, 1), + t = new THREE.Euler(), + n = new THREE.Quaternion(), + r = new THREE.Quaternion(-Math.sqrt(0.5), 0, 0, Math.sqrt(0.5)) + return function (i, o, a, s, l) { + t.set(a, o, -s, 'YXZ'), + i.setFromEuler(t), + i.multiply(r), + i.multiply(n.setFromAxisAngle(e, -l)) + } + })() + ;(this.connect = function () { + r(), + window.addEventListener('orientationchange', r, !1), + window.addEventListener('deviceorientation', n, !1), + (t.enabled = !0) + }), + (this.disconnect = function () { + window.removeEventListener('orientationchange', r, !1), + window.removeEventListener('deviceorientation', n, !1), + (t.enabled = !1) + }), + (this.update = function () { + if (!1 !== t.enabled) { + var e = t.deviceOrientation + if (e) { + var n = e.alpha ? THREE.Math.degToRad(e.alpha) + t.alphaOffset : 0, + r = e.beta ? THREE.Math.degToRad(e.beta) : 0, + o = e.gamma ? THREE.Math.degToRad(e.gamma) : 0, + a = t.screenOrientation ? THREE.Math.degToRad(t.screenOrientation) : 0 + i(t.object.quaternion, n, r, o, a) + } + } + }), + (this.dispose = function () { + t.disconnect() + }), + this.connect() + } + }, + {}, + ], + 216: [ + function (e, t, n) { + ;(window.glStats = function () { + var e = null, + t = 0, + n = 0, + r = 0, + i = 0, + o = 0, + a = 0, + s = 0 + function l(e, t) { + return function () { + t.apply(this, arguments), e.apply(this, arguments) + } + } + function c() { + e('allcalls').set(t + n), + e('drawElements').set(n), + e('drawArrays').set(t), + e('bindTexture').set(s), + e('useProgram').set(r), + e('glfaces').set(i), + e('glvertices').set(o), + e('glpoints').set(a) + } + function u() { + ;(t = 0), (n = 0), (r = 0), (i = 0), (o = 0), (a = 0), (s = 0) + } + function h() {} + function d(t) { + e = t + } + return ( + (WebGLRenderingContext.prototype.drawArrays = l( + WebGLRenderingContext.prototype.drawArrays, + function () { + t++, arguments[0] == this.POINTS ? (a += arguments[2]) : (o += arguments[2]) + }, + )), + (WebGLRenderingContext.prototype.drawElements = l( + WebGLRenderingContext.prototype.drawElements, + function () { + n++, (i += arguments[1] / 3), (o += arguments[1]) + }, + )), + (WebGLRenderingContext.prototype.useProgram = l( + WebGLRenderingContext.prototype.useProgram, + function () { + r++ + }, + )), + (WebGLRenderingContext.prototype.bindTexture = l( + WebGLRenderingContext.prototype.bindTexture, + function () { + s++ + }, + )), + { + update: c, + start: u, + end: h, + attach: d, + values: { + allcalls: { over: 3e3, caption: 'Calls (hook)' }, + drawelements: { caption: 'drawElements (hook)' }, + drawarrays: { caption: 'drawArrays (hook)' }, + }, + groups: [ + { + caption: 'WebGL', + values: [ + 'allcalls', + 'drawelements', + 'drawarrays', + 'useprogram', + 'bindtexture', + 'glfaces', + 'glvertices', + 'glpoints', + ], + }, + ], + fractions: [{ base: 'allcalls', steps: ['drawelements', 'drawarrays'] }], + } + ) + }), + (window.threeStats = function (e) { + var t = null + function n() { + t('renderer.info.memory.geometries').set(e.info.memory.geometries), + t('renderer.info.programs').set(e.info.programs.length), + t('renderer.info.memory.textures').set(e.info.memory.textures), + t('renderer.info.render.calls').set(e.info.render.calls), + t('renderer.info.render.triangles').set(e.info.render.triangles), + t('renderer.info.render.points').set(e.info.render.points) + } + function r() {} + function i() {} + function o(e) { + t = e + } + return { + update: n, + start: r, + end: i, + attach: o, + values: { + 'renderer.info.memory.geometries': { caption: 'Geometries' }, + 'renderer.info.memory.textures': { caption: 'Textures' }, + 'renderer.info.programs': { caption: 'Programs' }, + 'renderer.info.render.calls': { caption: 'Calls' }, + 'renderer.info.render.triangles': { caption: 'Triangles', over: 1e3 }, + 'renderer.info.render.points': { caption: 'Points' }, + }, + groups: [ + { + caption: 'Three.js - Memory', + values: [ + 'renderer.info.memory.geometries', + 'renderer.info.programs', + 'renderer.info.memory.textures', + ], + }, + { + caption: 'Three.js - Render', + values: [ + 'renderer.info.render.calls', + 'renderer.info.render.triangles', + 'renderer.info.render.points', + ], + }, + ], + fractions: [], + } + }), + (window.BrowserStats = function () { + var e = null, + t = 0, + n = 0 + window.performance && + !performance.memory && + (performance.memory = { usedJSHeapSize: 0, totalJSHeapSize: 0 }), + 0 === performance.memory.totalJSHeapSize && + console.warn( + 'totalJSHeapSize === 0... performance.memory is only available in Chrome .', + ) + var r = { + memory: { caption: 'Used Memory', average: !0, avgMs: 1e3, over: 22 }, + total: { caption: 'Total Memory' }, + }, + i = [{ caption: 'Browser', values: ['memory', 'total'] }], + o = [{ base: 'total', steps: ['memory'] }], + a = Math.log(1024) + function s(e) { + var t = 100, + n = Math.floor(Math.log(e) / a) + return Math.round((e * t) / Math.pow(1024, n)) / t + } + function l() { + ;(t = s(performance.memory.usedJSHeapSize)), + (n = s(performance.memory.totalJSHeapSize)), + e('memory').set(t), + e('total').set(n) + } + function c() { + t = 0 + } + function u() {} + function h(t) { + e = t + } + return { + update: l, + start: c, + end: u, + attach: h, + values: r, + groups: i, + fractions: o, + } + }), + 'object' === typeof t && + (t.exports = { + glStats: window.glStats, + threeStats: window.threeStats, + BrowserStats: window.BrowserStats, + }) + }, + {}, + ], + 217: [ + function (e, t, n) { + 'use strict' + !(function () { + 'performance' in window == 0 && (window.performance = {}) + var e = window.performance + if ('now' in e == 0) { + var t = Date.now() + e.timing && e.timing.navigationStart && (t = e.timing.navigationStart), + (e.now = function () { + return Date.now() - t + }) + } + e.mark || (e.mark = function () {}), e.measure || (e.measure = function () {}) + })(), + (window.rStats = function (e) { + function t(e, t) { + for (var n = Object.keys(e), r = 0, i = n.length; r < i; r++) t(n[r]) + } + function n(e) { + var t = document.createElement('link') + ;(t.href = e), + (t.rel = 'stylesheet'), + (t.type = 'text/css'), + document.getElementsByTagName('head')[0].appendChild(t) + } + var r = e || {}, + i = r.colours || ['#850700', '#c74900', '#fcb300', '#284280', '#4c7c0c'], + o = 'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700,300', + a = (r.CSSPath ? r.CSSPath : '') + 'rStats.css' + ;(r.css || [o, a]).forEach(function (e) { + n(e) + }), + r.values || (r.values = {}) + var s, + l, + c = 10, + u = 200, + h = {} + function d(e, t, n) { + var r = n || {}, + i = document.createElement('canvas'), + o = i.getContext('2d'), + a = 0, + s = 0, + l = r.color ? r.color : '#666666', + h = document.createElement('canvas'), + d = h.getContext('2d') + ;(h.width = 1), + (h.height = 2 * c), + (d.fillStyle = '#444444'), + d.fillRect(0, 0, 1, 2 * c), + (d.fillStyle = l), + d.fillRect(0, c, 1, c), + (d.fillStyle = '#ffffff'), + (d.globalAlpha = 0.5), + d.fillRect(0, c, 1, 1), + (d.globalAlpha = 1) + var p = document.createElement('canvas'), + f = p.getContext('2d') + function m() { + ;(i.width = u), + (i.height = c), + (i.style.width = i.width + 'px'), + (i.style.height = i.height + 'px'), + (i.className = 'rs-canvas'), + e.appendChild(i), + (o.fillStyle = '#444444'), + o.fillRect(0, 0, i.width, i.height) + } + function v(e, t) { + ;(s += 0.1 * (e - s)) > (a *= 0.99) && (a = s), + o.drawImage(i, 1, 0, i.width - 1, i.height, 0, 0, i.width - 1, i.height), + t + ? o.drawImage(p, i.width - 1, i.height - (s * i.height) / a - c) + : o.drawImage(h, i.width - 1, i.height - (s * i.height) / a - c) + } + return ( + (p.width = 1), + (p.height = 2 * c), + (f.fillStyle = '#444444'), + f.fillRect(0, 0, 1, 2 * c), + (f.fillStyle = '#b70000'), + f.fillRect(0, c, 1, c), + (f.globalAlpha = 0.5), + (f.fillStyle = '#ffffff'), + f.fillRect(0, c, 1, 1), + (f.globalAlpha = 1), + m(), + { draw: v } + ) + } + function p(e, n) { + var r = document.createElement('canvas'), + o = r.getContext('2d') + function a() { + ;(r.width = u), + (r.height = c * n), + (r.style.width = r.width + 'px'), + (r.style.height = r.height + 'px'), + (r.className = 'rs-canvas'), + e.appendChild(r), + (o.fillStyle = '#444444'), + o.fillRect(0, 0, r.width, r.height) + } + function s(e) { + o.drawImage(r, 1, 0, r.width - 1, r.height, 0, 0, r.width - 1, r.height) + var n = 0 + t(e, function (t) { + var a = e[t] * r.height + ;(o.fillStyle = i[t]), o.fillRect(r.width - 1, n, 1, a), (n += a) + }) + } + return a(), { draw: s } + } + function f(e, t) { + var n, + i = e, + o = 0, + a = 0, + s = 0, + c = 0, + u = performance.now(), + h = 0, + p = document.createElement('div'), + f = document.createElement('span'), + m = document.createElement('div'), + v = document.createTextNode(''), + g = r ? r.values[i.toLowerCase()] : null, + y = new d(p, i, g), + b = !1 + function A(e) { + if (g && g.average) { + ;(c += e), h++ + var t = performance.now() + t - u >= (g.avgMs || 1e3) && ((s = c / h), (c = 0), (u = t), (h = 0)) + } + } + function w() { + ;(n = performance.now()), + r.userTimingAPI && performance.mark(i + '-start'), + (b = !0) + } + function x() { + ;(o = performance.now() - n), + r.userTimingAPI && + (performance.mark(i + '-end'), + b && performance.measure(i, i + '-start', i + '-end')), + A(o) + } + function E() { + x(), w() + } + function M() { + var e = g && g.average ? s : o + v.nodeValue = Math.round(100 * e) / 100 + var t = g && ((g.below && o < g.below) || (g.over && o > g.over)) + y.draw(o, t), + (p.className = t ? 'rs-counter-base alarm' : 'rs-counter-base') + } + function _() { + var e = performance.now(), + t = e - n + a++, + t > 1e3 && + ((o = g && !1 === g.interpolate ? a : (1e3 * a) / t), + (a = 0), + (n = e), + A(o)) + } + function T(e) { + A((o = e)) + } + return ( + (f.className = 'rs-counter-id'), + (f.textContent = g && g.caption ? g.caption : i), + (m.className = 'rs-counter-value'), + m.appendChild(v), + p.appendChild(f), + p.appendChild(m), + t ? t.div.appendChild(p) : l.appendChild(p), + (n = performance.now()), + { + set: T, + start: w, + tick: E, + end: x, + frame: _, + value: function () { + return o + }, + draw: M, + } + ) + } + function m(e) { + var n = e.toLowerCase() + if ((void 0 === n && (n = 'default'), h[n])) return h[n] + var i = null + r && + r.groups && + t(r.groups, function (e) { + var t = r.groups[parseInt(e, 10)] + i || -1 === t.values.indexOf(n.toLowerCase()) || (i = t) + }) + var o = new f(n, i) + return (h[n] = o), o + } + function v() { + if (r.plugins) { + r.values || (r.values = {}), + r.groups || (r.groups = []), + r.fractions || (r.fractions = []) + for (var e = 0; e < r.plugins.length; e++) + r.plugins[e].attach(m), + t(r.plugins[e].values, function (t) { + r.values[t] = r.plugins[e].values[t] + }), + (r.groups = r.groups.concat(r.plugins[e].groups)), + (r.fractions = r.fractions.concat(r.plugins[e].fractions)) + } else r.plugins = {} + ;((s = document.createElement('div')).className = 'rs-base'), + ((l = document.createElement('div')).className = 'rs-container'), + (l.style.height = 'auto'), + s.appendChild(l), + document.body.appendChild(s), + r && + (r.groups && + t(r.groups, function (e) { + var t = r.groups[parseInt(e, 10)], + n = document.createElement('div') + ;(n.className = 'rs-group'), (t.div = n) + var i = document.createElement('h1') + ;(i.textContent = t.caption), + i.addEventListener( + 'click', + function (e) { + this.classList.toggle('hidden'), e.preventDefault() + }.bind(n), + ), + l.appendChild(i), + l.appendChild(n) + }), + r.fractions && + t(r.fractions, function (e) { + var n = r.fractions[parseInt(e, 10)], + o = document.createElement('div') + o.className = 'rs-fraction' + var a = document.createElement('div') + a.className = 'rs-legend' + var s = 0 + t(r.fractions[e].steps, function (t) { + var n = document.createElement('p') + ;(n.textContent = r.fractions[e].steps[t]), + (n.style.color = i[s]), + a.appendChild(n), + s++ + }), + o.appendChild(a), + (o.style.height = s * c + 'px'), + (n.div = o) + var u = new p(o, s) + ;(n.graph = u), l.appendChild(o) + })) + } + function g() { + t(r.plugins, function (e) { + r.plugins[e].update() + }), + t(h, function (e) { + h[e].draw() + }), + r && + r.fractions && + t(r.fractions, function (e) { + var n = r.fractions[parseInt(e, 10)], + i = [], + o = h[n.base.toLowerCase()] + o && + ((o = o.value()), + t(r.fractions[e].steps, function (t) { + var n = r.fractions[e].steps[parseInt(t, 10)].toLowerCase(), + a = h[n] + a && i.push(a.value() / o) + })), + n.graph.draw(i) + }) + } + return ( + v(), + function (e) { + return e ? m(e) : { element: s, update: g } + } + ) + }), + 'object' === typeof t && (t.exports = window.rStats) + }, + {}, + ], + 218: [ + function (e, t, n) { + String.prototype.startsWith || + (String.prototype.startsWith = function (e, t) { + return (t = t || 0), this.substr(t, e.length) === e + }) + }, + {}, + ], + 219: [ + function (t, n, r) { + var i = { + base64: function (e, t) { + return 'data:' + e + ';base64,' + t + }, + isMobile: function () { + var e, + t = !1 + return ( + (e = navigator.userAgent || navigator.vendor || window.opera), + (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test( + e, + ) || + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test( + e.substr(0, 4), + )) && + (t = !0), + t + ) + }, + isIOS: function () { + return /(iPad|iPhone|iPod)/g.test(navigator.userAgent) + }, + isIFrame: function () { + try { + return window.self !== window.top + } catch (e) { + return !0 + } + }, + appendQueryParameter: function (e, t, n) { + var r = e.indexOf('?') < 0 ? '?' : '&' + return (e += r + t + '=' + n) + }, + getQueryParameter: function (e) { + e = e.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]') + var t = new RegExp('[\\?&]' + e + '=([^&#]*)').exec(location.search) + return null === t ? '' : decodeURIComponent(t[1].replace(/\+/g, ' ')) + }, + isLandscapeMode: function () { + return 90 == window.orientation || -90 == window.orientation + }, + } + n.exports = i + }, + {}, + ], + 220: [ + function (e, t, n) { + var r = e('./util.js') + function i() { + var e = document.createElement('video') + e.addEventListener('ended', function () { + e.play() + }), + (this.request = function () { + e.paused && + ((e.src = r.base64( + 'video/webm', + 'GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAAH4xFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsggfG7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU2LjQwLjEwMVdBjUxhdmY1Ni40MC4xMDFzpJAGSJTMbsLpDt/ySkipgX1fRImIQO1MAAAAAAAWVK5rAQAAAAAAADuuAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDmDgQEj44OEO5rKAOABAAAAAAAABrCBsLqBkB9DtnUBAAAAAAAAo+eBAKOmgQAAgKJJg0IAAV4BHsAHBIODCoAACmH2MAAAZxgz4dPSTFi5JACjloED6ACmAECSnABMQAADYAAAWi0quoCjloEH0ACmAECSnABNwAADYAAAWi0quoCjloELuACmAECSnABNgAADYAAAWi0quoCjloEPoACmAECSnABNYAADYAAAWi0quoCjloETiACmAECSnABNIAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTnghdwo5aBAAAApgBAkpwATOAAA2AAAFotKrqAo5aBA+gApgBAkpwATMAAA2AAAFotKrqAo5aBB9AApgBAkpwATIAAA2AAAFotKrqAo5aBC7gApgBAkpwATEAAA2AAAFotKrqAo5aBD6AApgDAkpwAQ2AAA2AAAFotKrqAo5aBE4gApgBAkpwATCAAA2AAAFotKrqAH0O2dQEAAAAAAACU54Iu4KOWgQAAAKYAQJKcAEvAAANgAABaLSq6gKOWgQPoAKYAQJKcAEtgAANgAABaLSq6gKOWgQfQAKYAQJKcAEsAAANgAABaLSq6gKOWgQu4AKYAQJKcAEqAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEogAANgAABaLSq6gKOWgROIAKYAQJKcAEnAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCRlCjloEAAACmAECSnABJgAADYAAAWi0quoCjloED6ACmAECSnABJIAADYAAAWi0quoCjloEH0ACmAMCSnABDYAADYAAAWi0quoCjloELuACmAECSnABI4AADYAAAWi0quoCjloEPoACmAECSnABIoAADYAAAWi0quoCjloETiACmAECSnABIYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngl3Ao5aBAAAApgBAkpwASCAAA2AAAFotKrqAo5aBA+gApgBAkpwASAAAA2AAAFotKrqAo5aBB9AApgBAkpwAR8AAA2AAAFotKrqAo5aBC7gApgBAkpwAR4AAA2AAAFotKrqAo5aBD6AApgBAkpwAR2AAA2AAAFotKrqAo5aBE4gApgBAkpwARyAAA2AAAFotKrqAH0O2dQEAAAAAAACU54J1MKOWgQAAAKYAwJKcAENgAANgAABaLSq6gKOWgQPoAKYAQJKcAEbgAANgAABaLSq6gKOWgQfQAKYAQJKcAEagAANgAABaLSq6gKOWgQu4AKYAQJKcAEaAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEZAAANgAABaLSq6gKOWgROIAKYAQJKcAEYAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCjKCjloEAAACmAECSnABF4AADYAAAWi0quoCjloED6ACmAECSnABFwAADYAAAWi0quoCjloEH0ACmAECSnABFoAADYAAAWi0quoCjloELuACmAECSnABFgAADYAAAWi0quoCjloEPoACmAMCSnABDYAADYAAAWi0quoCjloETiACmAECSnABFYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngqQQo5aBAAAApgBAkpwARUAAA2AAAFotKrqAo5aBA+gApgBAkpwARSAAA2AAAFotKrqAo5aBB9AApgBAkpwARQAAA2AAAFotKrqAo5aBC7gApgBAkpwARQAAA2AAAFotKrqAo5aBD6AApgBAkpwAROAAA2AAAFotKrqAo5aBE4gApgBAkpwARMAAA2AAAFotKrqAH0O2dQEAAAAAAACU54K7gKOWgQAAAKYAQJKcAESgAANgAABaLSq6gKOWgQPoAKYAQJKcAESAAANgAABaLSq6gKOWgQfQAKYAwJKcAENgAANgAABaLSq6gKOWgQu4AKYAQJKcAERgAANgAABaLSq6gKOWgQ+gAKYAQJKcAERAAANgAABaLSq6gKOWgROIAKYAQJKcAEQgAANgAABaLSq6gB9DtnUBAAAAAAAAlOeC0vCjloEAAACmAECSnABEIAADYAAAWi0quoCjloED6ACmAECSnABEAAADYAAAWi0quoCjloEH0ACmAECSnABD4AADYAAAWi0quoCjloELuACmAECSnABDwAADYAAAWi0quoCjloEPoACmAECSnABDoAADYAAAWi0quoCjloETiACmAECSnABDgAADYAAAWi0quoAcU7trAQAAAAAAABG7j7OBALeK94EB8YIBd/CBAw==', + )), + e.play()) + }), + (this.release = function () { + e.pause(), (e.src = '') + }) + } + function o() { + var e = null + ;(this.request = function () { + e || + (e = setInterval(function () { + ;(window.location.href = '/'), setTimeout(window.stop, 0) + }, 15e3)) + }), + (this.release = function () { + e && (clearInterval(e), (e = null)) + }) + } + function a() { + var e = navigator.userAgent || navigator.vendor || window.opera + return e.match(/iPhone/i) || e.match(/iPod/i) ? o : i + } + t.exports = a() + }, + { './util.js': 219 }, + ], + }, + {}, + [177], + )(177) + })() + }, + }, +]) |