/*! For license information please see index.9a834d52ce032a75.js.LICENSE.txt */
(() => {
    var r = [(e, t, r) => {
            r = r(4);
            r && r.__esModule && (r = r.default), e.exports = "string" == typeof r ? r : r.toString()
        }, (t, r, o) => {
            var n;
            n = function() {
                return function o(n, s, i) {
                    function a(t, e) {
                        if (!s[t]) {
                            if (!n[t]) {
                                var r = void 0;
                                if (!e && r) return require(t, !0);
                                if (l) return l(t, !0);
                                throw (e = new Error("Cannot find module '" + t + "'")).code = "MODULE_NOT_FOUND", e
                            }
                            r = s[t] = {
                                exports: {}
                            }, n[t][0].call(r.exports, function(e) {
                                return a(n[t][1][e] || e)
                            }, r, r.exports, o, n, s, i)
                        }
                        return s[t].exports
                    }
                    for (var l = void 0, e = 0; e < i.length; e++) a(i[e]);
                    return a
                }({
                    1: [function(e, t, r) {
                        r.byteLength = function(e) {
                            return 3 * ((e = u(e))[0] + (e = e[1])) / 4 - e
                        }, r.toByteArray = function(e) {
                            for (var t, r = u(e), o = r[0], n = new c(3 * (o + (r = r[1])) / 4 - r), s = 0, i = 0 < r ? o - 4 : o, a = 0; a < i; a += 4) t = l[e.charCodeAt(a)] << 18 | l[e.charCodeAt(a + 1)] << 12 | l[e.charCodeAt(a + 2)] << 6 | l[e.charCodeAt(a + 3)], n[s++] = t >> 16 & 255, n[s++] = t >> 8 & 255, n[s++] = 255 & t;
                            return 2 === r && (t = l[e.charCodeAt(a)] << 2 | l[e.charCodeAt(a + 1)] >> 4, n[s++] = 255 & t), 1 === r && (t = l[e.charCodeAt(a)] << 10 | l[e.charCodeAt(a + 1)] << 4 | l[e.charCodeAt(a + 2)] >> 2, n[s++] = t >> 8 & 255, n[s++] = 255 & t), n
                        }, r.fromByteArray = function(e) {
                            for (var t, r = e.length, o = r % 3, n = [], s = 0, i = r - o; s < i; s += 16383) n.push(((e, t) => {
                                for (var r, o = [], n = s; n < t; n += 3) r = (e[n] << 16 & 16711680) + (e[n + 1] << 8 & 65280) + (255 & e[n + 2]), o.push(a[r >> 18 & 63] + a[r >> 12 & 63] + a[r >> 6 & 63] + a[63 & r]);
                                return o.join("")
                            })(e, i < s + 16383 ? i : s + 16383));
                            return 1 == o ? (t = e[r - 1], n.push(a[t >> 2] + a[t << 4 & 63] + "==")) : 2 == o && (t = (e[r - 2] << 8) + e[r - 1], n.push(a[t >> 10] + a[t >> 4 & 63] + a[t << 2 & 63] + "=")), n.join("")
                        };
                        for (var a = [], l = [], c = "undefined" != typeof Uint8Array ? Uint8Array : Array, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", n = 0, s = o.length; n < s; ++n) a[n] = o[n], l[o.charCodeAt(n)] = n;

                        function u(e) {
                            var t = e.length;
                            if (0 < t % 4) throw new Error("Invalid string. Length must be a multiple of 4");
                            return t = (e = -1 === (e = e.indexOf("=")) ? t : e) === t ? 0 : 4 - e % 4, [e, t]
                        }
                        l["-".charCodeAt(0)] = 62, l["_".charCodeAt(0)] = 63
                    }, {}],
                    2: [function(e, t, r) {}, {}],
                    3: [function(e, t, r) {}, {}],
                    4: [function(A, e, L) {
                        ! function(d) {
                            var x = A("base64-js"),
                                s = A("ieee754"),
                                e = "function" == typeof Symbol && "function" == typeof Symbol.for ? Symbol.for("nodejs.util.inspect.custom") : null,
                                t = (L.Buffer = d, L.SlowBuffer = function(e) {
                                    return d.alloc(+(e = +e != e ? 0 : e))
                                }, L.INSPECT_MAX_BYTES = 50, 2147483647);

                            function a(e) {
                                if (t < e) throw new RangeError('The value "' + e + '" is invalid for option "size"');
                                return e = new Uint8Array(e), Object.setPrototypeOf(e, d.prototype), e
                            }

                            function d(e, t, r) {
                                if ("number" != typeof e) return o(e, t, r);
                                if ("string" == typeof t) throw new TypeError('The "string" argument must be of type string. Received type number');
                                return i(e)
                            }

                            function o(e, t, r) {
                                if ("string" == typeof e) {
                                    var o = e,
                                        n = t;
                                    if (d.isEncoding(n = "string" == typeof n && "" !== n ? n : "utf8")) return (o = (i = a(s = 0 | u(o, n))).write(o, n)) !== s ? i.slice(0, o) : i;
                                    throw new TypeError("Unknown encoding: " + n)
                                }
                                if (ArrayBuffer.isView(e)) return l(e);
                                if (null != e) {
                                    if (M(e, ArrayBuffer) || e && M(e.buffer, ArrayBuffer)) {
                                        var s = e,
                                            i = r;
                                        if ((o = t) < 0 || s.byteLength < o) throw new RangeError('"offset" is outside of buffer bounds');
                                        if (s.byteLength < o + (i || 0)) throw new RangeError('"length" is outside of buffer bounds');
                                        return s = void 0 === o && void 0 === i ? new Uint8Array(s) : void 0 === i ? new Uint8Array(s, o) : new Uint8Array(s, o, i), Object.setPrototypeOf(s, d.prototype), s
                                    }
                                    if ("number" == typeof e) throw new TypeError('The "value" argument must not be of type number. Received type number');
                                    if (null != (n = e.valueOf && e.valueOf()) && n !== e) return d.from(n, t, r);
                                    n = d.isBuffer(o = e) ? (0 !== (s = a(i = 0 | c(o.length))).length && o.copy(s, 0, 0, i), s) : void 0 !== o.length ? "number" != typeof o.length || O(o.length) ? a(0) : l(o) : "Buffer" === o.type && Array.isArray(o.data) ? l(o.data) : void 0;
                                    if (n) return n;
                                    if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof e[Symbol.toPrimitive]) return d.from(e[Symbol.toPrimitive]("string"), t, r)
                                }
                                throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e)
                            }

                            function n(e) {
                                if ("number" != typeof e) throw new TypeError('"size" argument must be of type number');
                                if (e < 0) throw new RangeError('The value "' + e + '" is invalid for option "size"')
                            }

                            function i(e) {
                                return n(e), a(e < 0 ? 0 : 0 | c(e))
                            }

                            function l(e) {
                                for (var t = e.length < 0 ? 0 : 0 | c(e.length), r = a(t), o = 0; o < t; o += 1) r[o] = 255 & e[o];
                                return r
                            }

                            function c(e) {
                                if (t <= e) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + t.toString(16) + " bytes");
                                return 0 | e
                            }

                            function u(e, t) {
                                if (d.isBuffer(e)) return e.length;
                                if (ArrayBuffer.isView(e) || M(e, ArrayBuffer)) return e.byteLength;
                                if ("string" != typeof e) throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof e);
                                var r = e.length,
                                    o = 2 < arguments.length && !0 === arguments[2];
                                if (!o && 0 === r) return 0;
                                for (var n = !1;;) switch (t) {
                                    case "ascii":
                                    case "latin1":
                                    case "binary":
                                        return r;
                                    case "utf8":
                                    case "utf-8":
                                        return T(e).length;
                                    case "ucs2":
                                    case "ucs-2":
                                    case "utf16le":
                                    case "utf-16le":
                                        return 2 * r;
                                    case "hex":
                                        return r >>> 1;
                                    case "base64":
                                        return E(e).length;
                                    default:
                                        if (n) return o ? -1 : T(e).length;
                                        t = ("" + t).toLowerCase(), n = !0
                                }
                            }

                            function r(e, t, r) {
                                var o = e[t];
                                e[t] = e[r], e[r] = o
                            }

                            function h(e, t, r, o, n) {
                                if (0 === e.length) return -1;
                                if ("string" == typeof r ? (o = r, r = 0) : 2147483647 < r ? r = 2147483647 : r < -2147483648 && (r = -2147483648), (r = (r = O(r = +r) ? n ? 0 : e.length - 1 : r) < 0 ? e.length + r : r) >= e.length) {
                                    if (n) return -1;
                                    r = e.length - 1
                                } else if (r < 0) {
                                    if (!n) return -1;
                                    r = 0
                                }
                                if ("string" == typeof t && (t = d.from(t, o)), d.isBuffer(t)) return 0 === t.length ? -1 : f(e, t, r, o, n);
                                if ("number" == typeof t) return t &= 255, "function" == typeof Uint8Array.prototype.indexOf ? (n ? Uint8Array.prototype.indexOf : Uint8Array.prototype.lastIndexOf).call(e, t, r) : f(e, [t], r, o, n);
                                throw new TypeError("val must be string, number or Buffer")
                            }

                            function f(e, t, r, o, n) {
                                var s = 1,
                                    i = e.length,
                                    a = t.length;
                                if (void 0 !== o && ("ucs2" === (o = String(o).toLowerCase()) || "ucs-2" === o || "utf16le" === o || "utf-16le" === o)) {
                                    if (e.length < 2 || t.length < 2) return -1;
                                    i /= s = 2, a /= 2, r /= 2
                                }

                                function l(e, t) {
                                    return 1 === s ? e[t] : e.readUInt16BE(t * s)
                                }
                                if (n)
                                    for (var c = -1, u = r; u < i; u++)
                                        if (l(e, u) === l(t, -1 === c ? 0 : u - c)) {
                                            if (u - (c = -1 === c ? u : c) + 1 === a) return c * s
                                        } else - 1 !== c && (u -= u - c), c = -1;
                                else
                                    for (u = r = i < r + a ? i - a : r; 0 <= u; u--) {
                                        for (var d = !0, h = 0; h < a; h++)
                                            if (l(e, u + h) !== l(t, h)) {
                                                d = !1;
                                                break
                                            } if (d) return u
                                    }
                                return -1
                            }

                            function m(e, t, r, o) {
                                return k((e => {
                                    for (var t = [], r = 0; r < e.length; ++r) t.push(255 & e.charCodeAt(r));
                                    return t
                                })(t), e, r, o)
                            }

                            function y(e, t, r, o) {
                                return k(((e, t) => {
                                    for (var r, o, n = [], s = 0; s < e.length && !((t -= 2) < 0); ++s) r = (o = e.charCodeAt(s)) >> 8, n.push(o %= 256), n.push(r);
                                    return n
                                })(t, e.length - r), e, r, o)
                            }

                            function w(e, t, r) {
                                r = Math.min(e.length, r);
                                for (var o = [], n = t; n < r;) {
                                    var s, i, a, l, c = e[n],
                                        u = null,
                                        d = 239 < c ? 4 : 223 < c ? 3 : 191 < c ? 2 : 1;
                                    if (n + d <= r) switch (d) {
                                        case 1:
                                            c < 128 && (u = c);
                                            break;
                                        case 2:
                                            128 == (192 & (s = e[n + 1])) && 127 < (l = (31 & c) << 6 | 63 & s) && (u = l);
                                            break;
                                        case 3:
                                            s = e[n + 1], i = e[n + 2], 128 == (192 & s) && 128 == (192 & i) && 2047 < (l = (15 & c) << 12 | (63 & s) << 6 | 63 & i) && (l < 55296 || 57343 < l) && (u = l);
                                            break;
                                        case 4:
                                            s = e[n + 1], i = e[n + 2], a = e[n + 3], 128 == (192 & s) && 128 == (192 & i) && 128 == (192 & a) && 65535 < (l = (15 & c) << 18 | (63 & s) << 12 | (63 & i) << 6 | 63 & a) && l < 1114112 && (u = l)
                                    }
                                    null === u ? (u = 65533, d = 1) : 65535 < u && (o.push((u -= 65536) >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), o.push(u), n += d
                                }
                                var h = o,
                                    f = h.length;
                                if (f <= g) return String.fromCharCode.apply(String, h);
                                for (var p = "", m = 0; m < f;) p += String.fromCharCode.apply(String, h.slice(m, m += g));
                                return p
                            }
                            L.kMaxLength = t, (d.TYPED_ARRAY_SUPPORT = (() => {
                                try {
                                    var e = new Uint8Array(1),
                                        t = {
                                            foo: function() {
                                                return 42
                                            }
                                        };
                                    return Object.setPrototypeOf(t, Uint8Array.prototype), Object.setPrototypeOf(e, t), 42 === e.foo()
                                } catch (e) {
                                    return !1
                                }
                            })()) || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(d.prototype, "parent", {
                                enumerable: !0,
                                get: function() {
                                    if (d.isBuffer(this)) return this.buffer
                                }
                            }), Object.defineProperty(d.prototype, "offset", {
                                enumerable: !0,
                                get: function() {
                                    if (d.isBuffer(this)) return this.byteOffset
                                }
                            }), "undefined" != typeof Symbol && null != Symbol.species && d[Symbol.species] === d && Object.defineProperty(d, Symbol.species, {
                                value: null,
                                configurable: !0,
                                enumerable: !1,
                                writable: !1
                            }), d.poolSize = 8192, d.from = o, Object.setPrototypeOf(d.prototype, Uint8Array.prototype), Object.setPrototypeOf(d, Uint8Array), d.alloc = function(e, t, r) {
                                return n(e), e <= 0 || void 0 === t ? a(e) : "string" == typeof r ? a(e).fill(t, r) : a(e).fill(t)
                            }, d.allocUnsafe = i, d.allocUnsafeSlow = i, d.isBuffer = function(e) {
                                return null != e && !0 === e._isBuffer && e !== d.prototype
                            }, d.compare = function(e, t) {
                                if (M(e, Uint8Array) && (e = d.from(e, e.offset, e.byteLength)), M(t, Uint8Array) && (t = d.from(t, t.offset, t.byteLength)), !d.isBuffer(e) || !d.isBuffer(t)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
                                if (e === t) return 0;
                                for (var r = e.length, o = t.length, n = 0, s = Math.min(r, o); n < s; ++n)
                                    if (e[n] !== t[n]) {
                                        r = e[n], o = t[n];
                                        break
                                    } return r < o ? -1 : o < r ? 1 : 0
                            }, d.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
                                }
                            }, d.concat = function(e, t) {
                                if (!Array.isArray(e)) throw new TypeError('"list" argument must be an Array of Buffers');
                                if (0 === e.length) return d.alloc(0);
                                if (void 0 === t)
                                    for (n = t = 0; n < e.length; ++n) t += e[n].length;
                                for (var r = d.allocUnsafe(t), o = 0, n = 0; n < e.length; ++n) {
                                    var s = e[n];
                                    if (M(s, Uint8Array) && (s = d.from(s)), !d.isBuffer(s)) throw new TypeError('"list" argument must be an Array of Buffers');
                                    s.copy(r, o), o += s.length
                                }
                                return r
                            }, d.byteLength = u, d.prototype._isBuffer = !0, d.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) r(this, t, t + 1);
                                return this
                            }, d.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) r(this, t, t + 3), r(this, t + 1, t + 2);
                                return this
                            }, d.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) r(this, t, t + 7), r(this, t + 1, t + 6), r(this, t + 2, t + 5), r(this, t + 3, t + 4);
                                return this
                            }, d.prototype.toLocaleString = d.prototype.toString = function() {
                                var e = this.length;
                                return 0 === e ? "" : 0 === arguments.length ? w(this, 0, e) : function(e, t, r) {
                                    var o, n = !1;
                                    if ((t = void 0 === t || t < 0 ? 0 : t) > this.length) return "";
                                    if ((r = void 0 === r || r > this.length ? this.length : r) <= 0) return "";
                                    if ((r >>>= 0) <= (t >>>= 0)) return "";
                                    for (e = e || "utf8";;) switch (e) {
                                        case "hex":
                                            var s = t,
                                                i = r,
                                                a = this.length;
                                            (!i || i < 0 || a < i) && (i = a);
                                            for (var l = "", c = s = !s || s < 0 ? 0 : s; c < i; ++c) l += C[this[c]];
                                            return l;
                                        case "utf8":
                                        case "utf-8":
                                            return w(this, t, r);
                                        case "ascii":
                                            for (var a = t, u = r, d = "", u = Math.min(this.length, u), h = a; h < u; ++h) d += String.fromCharCode(127 & this[h]);
                                            return d;
                                        case "latin1":
                                        case "binary":
                                            for (var s = t, f = r, p = "", f = Math.min(this.length, f), m = s; m < f; ++m) p += String.fromCharCode(this[m]);
                                            return p;
                                        case "base64":
                                            return y = this, o = r, 0 === (g = t) && o === y.length ? x.fromByteArray(y) : x.fromByteArray(y.slice(g, o));
                                        case "ucs2":
                                        case "ucs-2":
                                        case "utf16le":
                                        case "utf-16le":
                                            for (var y = t, g = r, v = this.slice(y, g), b = "", _ = 0; _ < v.length; _ += 2) b += String.fromCharCode(v[_] + 256 * v[_ + 1]);
                                            return b;
                                        default:
                                            if (n) throw new TypeError("Unknown encoding: " + e);
                                            e = (e + "").toLowerCase(), n = !0
                                    }
                                }.apply(this, arguments)
                            }, d.prototype.equals = function(e) {
                                if (d.isBuffer(e)) return this === e || 0 === d.compare(this, e);
                                throw new TypeError("Argument must be a Buffer")
                            }, d.prototype.inspect = function() {
                                var e = "",
                                    t = L.INSPECT_MAX_BYTES,
                                    e = this.toString("hex", 0, t).replace(/(.{2})/g, "$1 ").trim();
                                return this.length > t && (e += " ... "), "<Buffer " + e + ">"
                            }, e && (d.prototype[e] = d.prototype.inspect), d.prototype.compare = function(e, t, r, o, n) {
                                if (M(e, Uint8Array) && (e = d.from(e, e.offset, e.byteLength)), !d.isBuffer(e)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof e);
                                if (void 0 === r && (r = e ? e.length : 0), void 0 === o && (o = 0), void 0 === n && (n = this.length), (t = void 0 === t ? 0 : t) < 0 || r > e.length || o < 0 || n > this.length) throw new RangeError("out of range index");
                                if (n <= o && r <= t) return 0;
                                if (n <= o) return -1;
                                if (r <= t) return 1;
                                if (this === e) return 0;
                                for (var s = (n >>>= 0) - (o >>>= 0), i = (r >>>= 0) - (t >>>= 0), a = Math.min(s, i), l = this.slice(o, n), c = e.slice(t, r), u = 0; u < a; ++u)
                                    if (l[u] !== c[u]) {
                                        s = l[u], i = c[u];
                                        break
                                    } return s < i ? -1 : i < s ? 1 : 0
                            }, d.prototype.includes = function(e, t, r) {
                                return -1 !== this.indexOf(e, t, r)
                            }, d.prototype.indexOf = function(e, t, r) {
                                return h(this, e, t, r, !0)
                            }, d.prototype.lastIndexOf = function(e, t, r) {
                                return h(this, e, t, r, !1)
                            }, d.prototype.write = function(e, t, r, o) {
                                if (void 0 === t) o = "utf8", r = this.length, t = 0;
                                else if (void 0 === r && "string" == typeof t) o = t, r = this.length, t = 0;
                                else {
                                    if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                                    t >>>= 0, isFinite(r) ? (r >>>= 0, void 0 === o && (o = "utf8")) : (o = r, r = void 0)
                                }
                                var n = this.length - t;
                                if ((void 0 === r || n < r) && (r = n), 0 < e.length && (r < 0 || t < 0) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds");
                                o = o || "utf8";
                                for (var s, i, a, l = !1;;) switch (o) {
                                    case "hex":
                                        var c, u = e,
                                            d = r,
                                            h = (c = Number(t) || 0, this.length - c);
                                        (!d || h < (d = Number(d))) && (d = h), (h = u.length) / 2 < d && (d = h / 2);
                                        for (var f = 0; f < d; ++f) {
                                            var p = parseInt(u.substr(2 * f, 2), 16);
                                            if (O(p)) return f;
                                            this[c + f] = p
                                        }
                                        return f;
                                    case "utf8":
                                    case "utf-8":
                                        return h = t, a = r, k(T(e, (i = this).length - h), i, h, a);
                                    case "ascii":
                                        return m(this, e, t, r);
                                    case "latin1":
                                    case "binary":
                                        return m(this, e, t, r);
                                    case "base64":
                                        return i = this, a = t, s = r, k(E(e), i, a, s);
                                    case "ucs2":
                                    case "ucs-2":
                                    case "utf16le":
                                    case "utf-16le":
                                        return y(this, e, t, r);
                                    default:
                                        if (l) throw new TypeError("Unknown encoding: " + o);
                                        o = ("" + o).toLowerCase(), l = !0
                                }
                            }, d.prototype.toJSON = function() {
                                return {
                                    type: "Buffer",
                                    data: Array.prototype.slice.call(this._arr || this, 0)
                                }
                            };
                            var g = 4096;

                            function p(e, t, r) {
                                if (e % 1 != 0 || e < 0) throw new RangeError("offset is not uint");
                                if (r < e + t) throw new RangeError("Trying to access beyond buffer length")
                            }

                            function v(e, t, r, o, n, s) {
                                if (!d.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance');
                                if (n < t || t < s) throw new RangeError('"value" argument is out of bounds');
                                if (r + o > e.length) throw new RangeError("Index out of range")
                            }

                            function b(e, t, r, o) {
                                if (r + o > e.length) throw new RangeError("Index out of range");
                                if (r < 0) throw new RangeError("Index out of range")
                            }

                            function _(e, t, r, o, n) {
                                return t = +t, r >>>= 0, n || b(e, 0, r, 4), s.write(e, t, r, o, 23, 4), r + 4
                            }

                            function j(e, t, r, o, n) {
                                return t = +t, r >>>= 0, n || b(e, 0, r, 8), s.write(e, t, r, o, 52, 8), r + 8
                            }
                            d.prototype.slice = function(e, t) {
                                var r = this.length,
                                    r = ((e = ~~e) < 0 ? (e += r) < 0 && (e = 0) : r < e && (e = r), (t = void 0 === t ? r : ~~t) < 0 ? (t += r) < 0 && (t = 0) : r < t && (t = r), t < e && (t = e), this.subarray(e, t));
                                return Object.setPrototypeOf(r, d.prototype), r
                            }, d.prototype.readUIntLE = function(e, t, r) {
                                e >>>= 0, t >>>= 0, r || p(e, t, this.length);
                                for (var o = this[e], n = 1, s = 0; ++s < t && (n *= 256);) o += this[e + s] * n;
                                return o
                            }, d.prototype.readUIntBE = function(e, t, r) {
                                e >>>= 0, t >>>= 0, r || p(e, t, this.length);
                                for (var o = this[e + --t], n = 1; 0 < t && (n *= 256);) o += this[e + --t] * n;
                                return o
                            }, d.prototype.readUInt8 = function(e, t) {
                                return e >>>= 0, t || p(e, 1, this.length), this[e]
                            }, d.prototype.readUInt16LE = function(e, t) {
                                return e >>>= 0, t || p(e, 2, this.length), this[e] | this[e + 1] << 8
                            }, d.prototype.readUInt16BE = function(e, t) {
                                return e >>>= 0, t || p(e, 2, this.length), this[e] << 8 | this[e + 1]
                            }, d.prototype.readUInt32LE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3]
                            }, d.prototype.readUInt32BE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3])
                            }, d.prototype.readIntLE = function(e, t, r) {
                                e >>>= 0, t >>>= 0, r || p(e, t, this.length);
                                for (var o = this[e], n = 1, s = 0; ++s < t && (n *= 256);) o += this[e + s] * n;
                                return (n *= 128) <= o && (o -= Math.pow(2, 8 * t)), o
                            }, d.prototype.readIntBE = function(e, t, r) {
                                e >>>= 0, t >>>= 0, r || p(e, t, this.length);
                                for (var o = t, n = 1, s = this[e + --o]; 0 < o && (n *= 256);) s += this[e + --o] * n;
                                return (n *= 128) <= s && (s -= Math.pow(2, 8 * t)), s
                            }, d.prototype.readInt8 = function(e, t) {
                                return e >>>= 0, t || p(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
                            }, d.prototype.readInt16LE = function(e, t) {
                                return e >>>= 0, t || p(e, 2, this.length), 32768 & (t = this[e] | this[e + 1] << 8) ? 4294901760 | t : t
                            }, d.prototype.readInt16BE = function(e, t) {
                                return e >>>= 0, t || p(e, 2, this.length), 32768 & (t = this[e + 1] | this[e] << 8) ? 4294901760 | t : t
                            }, d.prototype.readInt32LE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24
                            }, d.prototype.readInt32BE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]
                            }, d.prototype.readFloatLE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), s.read(this, e, !0, 23, 4)
                            }, d.prototype.readFloatBE = function(e, t) {
                                return e >>>= 0, t || p(e, 4, this.length), s.read(this, e, !1, 23, 4)
                            }, d.prototype.readDoubleLE = function(e, t) {
                                return e >>>= 0, t || p(e, 8, this.length), s.read(this, e, !0, 52, 8)
                            }, d.prototype.readDoubleBE = function(e, t) {
                                return e >>>= 0, t || p(e, 8, this.length), s.read(this, e, !1, 52, 8)
                            }, d.prototype.writeUIntLE = function(e, t, r, o) {
                                e = +e, t >>>= 0, r >>>= 0, o || v(this, e, t, r, Math.pow(2, 8 * r) - 1, 0);
                                var n = 1,
                                    s = 0;
                                for (this[t] = 255 & e; ++s < r && (n *= 256);) this[t + s] = e / n & 255;
                                return t + r
                            }, d.prototype.writeUIntBE = function(e, t, r, o) {
                                e = +e, t >>>= 0, r >>>= 0, o || v(this, e, t, r, Math.pow(2, 8 * r) - 1, 0);
                                var n = r - 1,
                                    s = 1;
                                for (this[t + n] = 255 & e; 0 <= --n && (s *= 256);) this[t + n] = e / s & 255;
                                return t + r
                            }, d.prototype.writeUInt8 = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 1, 255, 0), this[t] = 255 & e, t + 1
                            }, d.prototype.writeUInt16LE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 2, 65535, 0), this[t] = 255 & e, this[t + 1] = e >>> 8, t + 2
                            }, d.prototype.writeUInt16BE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 2, 65535, 0), this[t] = e >>> 8, this[t + 1] = 255 & e, t + 2
                            }, d.prototype.writeUInt32LE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 4, 4294967295, 0), this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e, t + 4
                            }, d.prototype.writeUInt32BE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 4, 4294967295, 0), this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e, t + 4
                            }, d.prototype.writeIntLE = function(e, t, r, o) {
                                e = +e, t >>>= 0, o || v(this, e, t, r, (o = Math.pow(2, 8 * r - 1)) - 1, -o);
                                var n = 0,
                                    s = 1,
                                    i = 0;
                                for (this[t] = 255 & e; ++n < r && (s *= 256);) e < 0 && 0 === i && 0 !== this[t + n - 1] && (i = 1), this[t + n] = (e / s >> 0) - i & 255;
                                return t + r
                            }, d.prototype.writeIntBE = function(e, t, r, o) {
                                e = +e, t >>>= 0, o || v(this, e, t, r, (o = Math.pow(2, 8 * r - 1)) - 1, -o);
                                var n = r - 1,
                                    s = 1,
                                    i = 0;
                                for (this[t + n] = 255 & e; 0 <= --n && (s *= 256);) e < 0 && 0 === i && 0 !== this[t + n + 1] && (i = 1), this[t + n] = (e / s >> 0) - i & 255;
                                return t + r
                            }, d.prototype.writeInt8 = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 1, 127, -128), this[t] = 255 & (e = e < 0 ? 255 + e + 1 : e), t + 1
                            }, d.prototype.writeInt16LE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 2, 32767, -32768), this[t] = 255 & e, this[t + 1] = e >>> 8, t + 2
                            }, d.prototype.writeInt16BE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 2, 32767, -32768), this[t] = e >>> 8, this[t + 1] = 255 & e, t + 2
                            }, d.prototype.writeInt32LE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 4, 2147483647, -2147483648), this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24, t + 4
                            }, d.prototype.writeInt32BE = function(e, t, r) {
                                return e = +e, t >>>= 0, r || v(this, e, t, 4, 2147483647, -2147483648), this[t] = (e = e < 0 ? 4294967295 + e + 1 : e) >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e, t + 4
                            }, d.prototype.writeFloatLE = function(e, t, r) {
                                return _(this, e, t, !0, r)
                            }, d.prototype.writeFloatBE = function(e, t, r) {
                                return _(this, e, t, !1, r)
                            }, d.prototype.writeDoubleLE = function(e, t, r) {
                                return j(this, e, t, !0, r)
                            }, d.prototype.writeDoubleBE = function(e, t, r) {
                                return j(this, e, t, !1, r)
                            }, d.prototype.copy = function(e, t, r, o) {
                                if (!d.isBuffer(e)) throw new TypeError("argument should be a Buffer");
                                if (r = r || 0, o || 0 === o || (o = this.length), t >= e.length && (t = e.length), (o = 0 < o && o < r ? r : o) === r) return 0;
                                if (0 === e.length || 0 === this.length) return 0;
                                if ((t = t || 0) < 0) throw new RangeError("targetStart out of bounds");
                                if (r < 0 || r >= this.length) throw new RangeError("Index out of range");
                                if (o < 0) throw new RangeError("sourceEnd out of bounds");
                                o > this.length && (o = this.length);
                                var n = (o = e.length - t < o - r ? e.length - t + r : o) - r;
                                if (this === e && "function" == typeof Uint8Array.prototype.copyWithin) this.copyWithin(t, r, o);
                                else if (this === e && r < t && t < o)
                                    for (var s = n - 1; 0 <= s; --s) e[s + t] = this[s + r];
                                else Uint8Array.prototype.set.call(e, this.subarray(r, o), t);
                                return n
                            }, d.prototype.fill = function(e, t, r, o) {
                                if ("string" == typeof e) {
                                    if ("string" == typeof t ? (o = t, t = 0, r = this.length) : "string" == typeof r && (o = r, r = this.length), void 0 !== o && "string" != typeof o) throw new TypeError("encoding must be a string");
                                    if ("string" == typeof o && !d.isEncoding(o)) throw new TypeError("Unknown encoding: " + o);
                                    var n;
                                    1 === e.length && (n = e.charCodeAt(0), "utf8" === o && n < 128 || "latin1" === o) && (e = n)
                                } else "number" == typeof e ? e &= 255 : "boolean" == typeof e && (e = Number(e));
                                if (t < 0 || this.length < t || this.length < r) throw new RangeError("Out of range index");
                                var s;
                                if (!(r <= t))
                                    if (t >>>= 0, r = void 0 === r ? this.length : r >>> 0, "number" == typeof(e = e || 0))
                                        for (s = t; s < r; ++s) this[s] = e;
                                    else {
                                        var i = d.isBuffer(e) ? e : d.from(e, o),
                                            a = i.length;
                                        if (0 === a) throw new TypeError('The value "' + e + '" is invalid for argument "value"');
                                        for (s = 0; s < r - t; ++s) this[s + t] = i[s % a]
                                    } return this
                            };
                            var S = /[^+/0-9A-Za-z-_]/g;

                            function T(e, t) {
                                t = t || 1 / 0;
                                for (var r, o = e.length, n = null, s = [], i = 0; i < o; ++i) {
                                    if (55295 < (r = e.charCodeAt(i)) && r < 57344) {
                                        if (!n) {
                                            if (56319 < r) {
                                                -1 < (t -= 3) && s.push(239, 191, 189);
                                                continue
                                            }
                                            if (i + 1 === o) {
                                                -1 < (t -= 3) && s.push(239, 191, 189);
                                                continue
                                            }
                                            n = r;
                                            continue
                                        }
                                        if (r < 56320) {
                                            -1 < (t -= 3) && s.push(239, 191, 189), n = r;
                                            continue
                                        }
                                        r = 65536 + (n - 55296 << 10 | r - 56320)
                                    } else n && -1 < (t -= 3) && s.push(239, 191, 189);
                                    if (n = null, r < 128) {
                                        if (--t < 0) break;
                                        s.push(r)
                                    } else if (r < 2048) {
                                        if ((t -= 2) < 0) break;
                                        s.push(r >> 6 | 192, 63 & r | 128)
                                    } else if (r < 65536) {
                                        if ((t -= 3) < 0) break;
                                        s.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128)
                                    } else {
                                        if (!(r < 1114112)) throw new Error("Invalid code point");
                                        if ((t -= 4) < 0) break;
                                        s.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128)
                                    }
                                }
                                return s
                            }

                            function E(e) {
                                return x.toByteArray((e => {
                                    if ((e = (e = e.split("=")[0]).trim().replace(S, "")).length < 2) return "";
                                    for (; e.length % 4 != 0;) e += "=";
                                    return e
                                })(e))
                            }

                            function k(e, t, r, o) {
                                for (var n = 0; n < o && !(n + r >= t.length || n >= e.length); ++n) t[n + r] = e[n];
                                return n
                            }

                            function M(e, t) {
                                return e instanceof t || null != e && null != e.constructor && null != e.constructor.name && e.constructor.name === t.name
                            }

                            function O(e) {
                                return e != e
                            }
                            var C = (() => {
                                for (var e = "0123456789abcdef", t = new Array(256), r = 0; r < 16; ++r)
                                    for (var o = 16 * r, n = 0; n < 16; ++n) t[o + n] = e[r] + e[n];
                                return t
                            })()
                        }.call(this, A("buffer").Buffer)
                    }, {
                        "base64-js": 1,
                        buffer: 4,
                        ieee754: 254
                    }],
                    5: [function(e, t, r) {
                        t.exports = function(e) {
                            if ("function" != typeof e) throw TypeError(String(e) + " is not a function");
                            return e
                        }
                    }, {}],
                    6: [function(e, t, r) {
                        var o = e("../internals/is-object");
                        t.exports = function(e) {
                            if (o(e) || null === e) return e;
                            throw TypeError("Can't set " + String(e) + " as a prototype")
                        }
                    }, {
                        "../internals/is-object": 75
                    }],
                    7: [function(e, t, r) {
                        var o = e("../internals/well-known-symbol"),
                            n = e("../internals/object-create"),
                            e = e("../internals/object-define-property"),
                            s = o("unscopables"),
                            i = Array.prototype;
                        null == i[s] && e.f(i, s, {
                            configurable: !0,
                            value: n(null)
                        }), t.exports = function(e) {
                            i[s][e] = !0
                        }
                    }, {
                        "../internals/object-create": 91,
                        "../internals/object-define-property": 93,
                        "../internals/well-known-symbol": 150
                    }],
                    8: [function(e, t, r) {
                        var o = e("../internals/string-multibyte").charAt;
                        t.exports = function(e, t, r) {
                            return t + (r ? o(e, t).length : 1)
                        }
                    }, {
                        "../internals/string-multibyte": 125
                    }],
                    9: [function(e, t, r) {
                        t.exports = function(e, t, r) {
                            if (e instanceof t) return e;
                            throw TypeError("Incorrect " + (r ? r + " " : "") + "invocation")
                        }
                    }, {}],
                    10: [function(e, t, r) {
                        var o = e("../internals/is-object");
                        t.exports = function(e) {
                            if (o(e)) return e;
                            throw TypeError(String(e) + " is not an object")
                        }
                    }, {
                        "../internals/is-object": 75
                    }],
                    11: [function(e, t, r) {
                        t.exports = "undefined" != typeof ArrayBuffer && "undefined" != typeof DataView
                    }, {}],
                    12: [function(e, t, r) {
                        function o(e) {
                            return l(e) && c(E, u(e))
                        }
                        var n, s = e("../internals/array-buffer-native"),
                            i = e("../internals/descriptors"),
                            a = e("../internals/global"),
                            l = e("../internals/is-object"),
                            c = e("../internals/has"),
                            u = e("../internals/classof"),
                            d = e("../internals/create-non-enumerable-property"),
                            h = e("../internals/redefine"),
                            f = e("../internals/object-define-property").f,
                            p = e("../internals/object-get-prototype-of"),
                            m = e("../internals/object-set-prototype-of"),
                            y = e("../internals/well-known-symbol"),
                            e = e("../internals/uid"),
                            g = a.Int8Array,
                            v = g && g.prototype,
                            b = (b = a.Uint8ClampedArray) && b.prototype,
                            _ = g && p(g),
                            x = v && p(v),
                            w = Object.prototype,
                            j = w.isPrototypeOf,
                            y = y("toStringTag"),
                            S = e("TYPED_ARRAY_TAG"),
                            T = s && !!m && "Opera" !== u(a.opera),
                            e = !1,
                            E = {
                                Int8Array: 1,
                                Uint8Array: 1,
                                Uint8ClampedArray: 1,
                                Int16Array: 2,
                                Uint16Array: 2,
                                Int32Array: 4,
                                Uint32Array: 4,
                                Float32Array: 4,
                                Float64Array: 8
                            };
                        for (n in E) a[n] || (T = !1);
                        if ((!T || "function" != typeof _ || _ === Function.prototype) && (_ = function() {
                                throw TypeError("Incorrect invocation")
                            }, T))
                            for (n in E) a[n] && m(a[n], _);
                        if ((!T || !x || x === w) && (x = _.prototype, T))
                            for (n in E) a[n] && m(a[n].prototype, x);
                        if (T && p(b) !== x && m(b, x), i && !c(x, y))
                            for (n in e = !0, f(x, y, {
                                    get: function() {
                                        return l(this) ? this[S] : void 0
                                    }
                                }), E) a[n] && d(a[n], S, n);
                        t.exports = {
                            NATIVE_ARRAY_BUFFER_VIEWS: T,
                            TYPED_ARRAY_TAG: e && S,
                            aTypedArray: function(e) {
                                if (o(e)) return e;
                                throw TypeError("Target is not a typed array")
                            },
                            aTypedArrayConstructor: function(e) {
                                if (m) {
                                    if (j.call(_, e)) return e
                                } else
                                    for (var t in E)
                                        if (c(E, n) && (t = a[t]) && (e === t || j.call(t, e))) return e;
                                throw TypeError("Target is not a typed array constructor")
                            },
                            exportTypedArrayMethod: function(e, t, r) {
                                if (i) {
                                    if (r)
                                        for (var o in E)(o = a[o]) && c(o.prototype, e) && delete o.prototype[e];
                                    x[e] && !r || h(x, e, !r && T && v[e] || t)
                                }
                            },
                            exportTypedArrayStaticMethod: function(e, t, r) {
                                var o, n;
                                if (i) {
                                    if (m) {
                                        if (r)
                                            for (o in E)(n = a[o]) && c(n, e) && delete n[e];
                                        if (_[e] && !r) return;
                                        try {
                                            return h(_, e, !r && T && g[e] || t)
                                        } catch (e) {}
                                    }
                                    for (o in E) !(n = a[o]) || n[e] && !r || h(n, e, t)
                                }
                            },
                            isView: function(e) {
                                return "DataView" === (e = u(e)) || c(E, e)
                            },
                            isTypedArray: o,
                            TypedArray: _,
                            TypedArrayPrototype: x
                        }
                    }, {
                        "../internals/array-buffer-native": 11,
                        "../internals/classof": 29,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/descriptors": 43,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/is-object": 75,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-prototype-of": 98,
                        "../internals/object-set-prototype-of": 102,
                        "../internals/redefine": 110,
                        "../internals/uid": 147,
                        "../internals/well-known-symbol": 150
                    }],
                    13: [function(e, t, D) {
                        function r(e) {
                            return [255 & e]
                        }

                        function o(e) {
                            return [255 & e, e >> 8 & 255]
                        }

                        function n(e) {
                            return [255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255]
                        }

                        function s(e) {
                            return e[3] << 24 | e[2] << 16 | e[1] << 8 | e[0]
                        }

                        function i(e) {
                            return C(e, 23, 4)
                        }

                        function F(e) {
                            return C(e, 52, 8)
                        }

                        function a(e, t) {
                            H(e[j], t, {
                                get: function() {
                                    return b(this)[t]
                                }
                            })
                        }

                        function l(e, t, r, o) {
                            if ((r = m(r)) + t > (e = b(e)).byteLength) throw O(S);
                            var n = b(e.buffer).bytes,
                                r = r + e.byteOffset,
                                e = n.slice(r, r + t);
                            return o ? e : e.reverse()
                        }

                        function c(e, t, r, o, n, s) {
                            if ((r = m(r)) + t > (e = b(e)).byteLength) throw O(S);
                            for (var i = b(e.buffer).bytes, a = r + e.byteOffset, l = o(+n), c = 0; c < t; c++) i[a + c] = l[s ? c : t - c - 1]
                        }
                        var u = e("../internals/global"),
                            d = e("../internals/descriptors"),
                            N = e("../internals/array-buffer-native"),
                            U = e("../internals/create-non-enumerable-property"),
                            h = e("../internals/redefine-all"),
                            f = e("../internals/fails"),
                            p = e("../internals/an-instance"),
                            B = e("../internals/to-integer"),
                            G = e("../internals/to-length"),
                            m = e("../internals/to-index"),
                            y = e("../internals/ieee754"),
                            V = e("../internals/object-get-prototype-of"),
                            g = e("../internals/object-set-prototype-of"),
                            z = e("../internals/object-get-own-property-names").f,
                            H = e("../internals/object-define-property").f,
                            W = e("../internals/array-fill"),
                            v = e("../internals/set-to-string-tag"),
                            b = (e = e("../internals/internal-state")).get,
                            _ = e.set,
                            x = "ArrayBuffer",
                            w = "DataView",
                            j = "prototype",
                            S = "Wrong index",
                            T = u[x],
                            E = T,
                            k = u[w],
                            e = k && k[j],
                            M = Object.prototype,
                            O = u.RangeError,
                            C = y.pack,
                            A = y.unpack;
                        if (N) {
                            if (!f(function() {
                                    T(1)
                                }) || !f(function() {
                                    new T(-1)
                                }) || f(function() {
                                    return new T, new T(1.5), new T(NaN), T.name != x
                                })) {
                                for (var L, u = (E = function(e) {
                                        return p(this, E), new T(m(e))
                                    })[j] = T[j], P = z(T), I = 0; P.length > I;)(L = P[I++]) in E || U(E, L, T[L]);
                                u.constructor = E
                            }
                            g && V(e) !== M && g(e, M);
                            var y = new k(new E(2)),
                                R = e.setInt8;
                            y.setInt8(0, 2147483648), y.setInt8(1, 2147483649), !y.getInt8(0) && y.getInt8(1) || h(e, {
                                setInt8: function(e, t) {
                                    R.call(this, e, t << 24 >> 24)
                                },
                                setUint8: function(e, t) {
                                    R.call(this, e, t << 24 >> 24)
                                }
                            }, {
                                unsafe: !0
                            })
                        } else E = function(e) {
                            p(this, E, x), e = m(e), _(this, {
                                bytes: W.call(new Array(e), 0),
                                byteLength: e
                            }), d || (this.byteLength = e)
                        }, k = function(e, t, r) {
                            p(this, k, w), p(e, E, w);
                            var o = b(e).byteLength;
                            if ((t = B(t)) < 0 || o < t) throw O("Wrong offset");
                            if (o < t + (r = void 0 === r ? o - t : G(r))) throw O("Wrong length");
                            _(this, {
                                buffer: e,
                                byteLength: r,
                                byteOffset: t
                            }), d || (this.buffer = e, this.byteLength = r, this.byteOffset = t)
                        }, d && (a(E, "byteLength"), a(k, "buffer"), a(k, "byteLength"), a(k, "byteOffset")), h(k[j], {
                            getInt8: function(e) {
                                return l(this, 1, e)[0] << 24 >> 24
                            },
                            getUint8: function(e) {
                                return l(this, 1, e)[0]
                            },
                            getInt16: function(e) {
                                return ((e = l(this, 2, e, 1 < arguments.length ? arguments[1] : void 0))[1] << 8 | e[0]) << 16 >> 16
                            },
                            getUint16: function(e) {
                                return (e = l(this, 2, e, 1 < arguments.length ? arguments[1] : void 0))[1] << 8 | e[0]
                            },
                            getInt32: function(e) {
                                return s(l(this, 4, e, 1 < arguments.length ? arguments[1] : void 0))
                            },
                            getUint32: function(e) {
                                return s(l(this, 4, e, 1 < arguments.length ? arguments[1] : void 0)) >>> 0
                            },
                            getFloat32: function(e) {
                                return A(l(this, 4, e, 1 < arguments.length ? arguments[1] : void 0), 23)
                            },
                            getFloat64: function(e) {
                                return A(l(this, 8, e, 1 < arguments.length ? arguments[1] : void 0), 52)
                            },
                            setInt8: function(e, t) {
                                c(this, 1, e, r, t)
                            },
                            setUint8: function(e, t) {
                                c(this, 1, e, r, t)
                            },
                            setInt16: function(e, t) {
                                c(this, 2, e, o, t, 2 < arguments.length ? arguments[2] : void 0)
                            },
                            setUint16: function(e, t) {
                                c(this, 2, e, o, t, 2 < arguments.length ? arguments[2] : void 0)
                            },
                            setInt32: function(e, t) {
                                c(this, 4, e, n, t, 2 < arguments.length ? arguments[2] : void 0)
                            },
                            setUint32: function(e, t) {
                                c(this, 4, e, n, t, 2 < arguments.length ? arguments[2] : void 0)
                            },
                            setFloat32: function(e, t) {
                                c(this, 4, e, i, t, 2 < arguments.length ? arguments[2] : void 0)
                            },
                            setFloat64: function(e, t) {
                                c(this, 8, e, F, t, 2 < arguments.length ? arguments[2] : void 0)
                            }
                        });
                        v(E, x), v(k, w), t.exports = {
                            ArrayBuffer: E,
                            DataView: k
                        }
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/array-buffer-native": 11,
                        "../internals/array-fill": 15,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/descriptors": 43,
                        "../internals/fails": 51,
                        "../internals/global": 60,
                        "../internals/ieee754": 66,
                        "../internals/internal-state": 71,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/object-get-prototype-of": 98,
                        "../internals/object-set-prototype-of": 102,
                        "../internals/redefine-all": 109,
                        "../internals/set-to-string-tag": 119,
                        "../internals/to-index": 135,
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138
                    }],
                    14: [function(e, t, r) {
                        var l = e("../internals/to-object"),
                            c = e("../internals/to-absolute-index"),
                            u = e("../internals/to-length"),
                            d = Math.min;
                        t.exports = [].copyWithin || function(e, t) {
                            var r = l(this),
                                o = u(r.length),
                                n = c(e, o),
                                s = c(t, o),
                                e = 2 < arguments.length ? arguments[2] : void 0,
                                i = d((void 0 === e ? o : c(e, o)) - s, o - n),
                                a = 1;
                            for (s < n && n < s + i && (a = -1, s += i - 1, n += i - 1); 0 < i--;) s in r ? r[n] = r[s] : delete r[n], n += a, s += a;
                            return r
                        }
                    }, {
                        "../internals/to-absolute-index": 134,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    15: [function(e, t, r) {
                        var i = e("../internals/to-object"),
                            a = e("../internals/to-absolute-index"),
                            l = e("../internals/to-length");
                        t.exports = function(e) {
                            for (var t = i(this), r = l(t.length), o = arguments.length, n = a(1 < o ? arguments[1] : void 0, r), s = void 0 === (o = 2 < o ? arguments[2] : void 0) ? r : a(o, r); n < s;) t[n++] = e;
                            return t
                        }
                    }, {
                        "../internals/to-absolute-index": 134,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    16: [function(e, t, r) {
                        var o = e("../internals/array-iteration").forEach,
                            n = e("../internals/array-method-is-strict"),
                            e = e("../internals/array-method-uses-to-length"),
                            n = n("forEach"),
                            e = e("forEach");
                        t.exports = n && e ? [].forEach : function(e) {
                            return o(this, e, 1 < arguments.length ? arguments[1] : void 0)
                        }
                    }, {
                        "../internals/array-iteration": 19,
                        "../internals/array-method-is-strict": 22,
                        "../internals/array-method-uses-to-length": 23
                    }],
                    17: [function(e, t, r) {
                        var f = e("../internals/function-bind-context"),
                            p = e("../internals/to-object"),
                            m = e("../internals/call-with-safe-iteration-closing"),
                            y = e("../internals/is-array-iterator-method"),
                            g = e("../internals/to-length"),
                            v = e("../internals/create-property"),
                            b = e("../internals/get-iterator-method");
                        t.exports = function(e) {
                            var t, r, o, n, s, i, a = p(e),
                                e = "function" == typeof this ? this : Array,
                                l = arguments.length,
                                c = 1 < l ? arguments[1] : void 0,
                                u = void 0 !== c,
                                d = b(a),
                                h = 0;
                            if (u && (c = f(c, 2 < l ? arguments[2] : void 0, 2)), null == d || e == Array && y(d))
                                for (r = new e(t = g(a.length)); h < t; h++) i = u ? c(a[h], h) : a[h], v(r, h, i);
                            else
                                for (s = (n = d.call(a)).next, r = new e; !(o = s.call(n)).done; h++) i = u ? m(n, c, [o.value, h], !0) : o.value, v(r, h, i);
                            return r.length = h, r
                        }
                    }, {
                        "../internals/call-with-safe-iteration-closing": 26,
                        "../internals/create-property": 40,
                        "../internals/function-bind-context": 55,
                        "../internals/get-iterator-method": 58,
                        "../internals/is-array-iterator-method": 72,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    18: [function(e, t, r) {
                        function o(a) {
                            return function(e, t, r) {
                                var o, n = l(e),
                                    s = c(n.length),
                                    i = u(r, s);
                                if (a && t != t) {
                                    for (; i < s;)
                                        if ((o = n[i++]) != o) return !0
                                } else
                                    for (; i < s; i++)
                                        if ((a || i in n) && n[i] === t) return a || i || 0;
                                return !a && -1
                            }
                        }
                        var l = e("../internals/to-indexed-object"),
                            c = e("../internals/to-length"),
                            u = e("../internals/to-absolute-index");
                        t.exports = {
                            includes: o(!0),
                            indexOf: o(!1)
                        }
                    }, {
                        "../internals/to-absolute-index": 134,
                        "../internals/to-indexed-object": 136,
                        "../internals/to-length": 138
                    }],
                    19: [function(e, t, r) {
                        function o(h) {
                            var f = 1 == h,
                                p = 2 == h,
                                m = 3 == h,
                                y = 4 == h,
                                g = 6 == h,
                                v = 5 == h || g;
                            return function(e, t, r, o) {
                                for (var n, s, i = x(e), a = _(i), l = b(t, r, 3), c = w(a.length), u = 0, t = o || j, d = f ? t(e, c) : p ? t(e, 0) : void 0; u < c; u++)
                                    if ((v || u in a) && (s = l(n = a[u], u, i), h))
                                        if (f) d[u] = s;
                                        else if (s) switch (h) {
                                    case 3:
                                        return !0;
                                    case 5:
                                        return n;
                                    case 6:
                                        return u;
                                    case 2:
                                        S.call(d, n)
                                } else if (y) return !1;
                                return g ? -1 : m || y ? y : d
                            }
                        }
                        var b = e("../internals/function-bind-context"),
                            _ = e("../internals/indexed-object"),
                            x = e("../internals/to-object"),
                            w = e("../internals/to-length"),
                            j = e("../internals/array-species-create"),
                            S = [].push;
                        t.exports = {
                            forEach: o(0),
                            map: o(1),
                            filter: o(2),
                            some: o(3),
                            every: o(4),
                            find: o(5),
                            findIndex: o(6)
                        }
                    }, {
                        "../internals/array-species-create": 25,
                        "../internals/function-bind-context": 55,
                        "../internals/indexed-object": 67,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    20: [function(e, t, r) {
                        var n = e("../internals/to-indexed-object"),
                            s = e("../internals/to-integer"),
                            i = e("../internals/to-length"),
                            o = e("../internals/array-method-is-strict"),
                            e = e("../internals/array-method-uses-to-length"),
                            a = Math.min,
                            l = [].lastIndexOf,
                            c = !!l && 1 / [1].lastIndexOf(1, -0) < 0,
                            o = o("lastIndexOf"),
                            e = e("indexOf", {
                                ACCESSORS: !0,
                                1: 0
                            });
                        t.exports = !c && o && e ? l : function(e) {
                            if (c) return l.apply(this, arguments) || 0;
                            var t = n(this),
                                r = i(t.length),
                                o = r - 1;
                            for ((o = 1 < arguments.length ? a(o, s(arguments[1])) : o) < 0 && (o = r + o); 0 <= o; o--)
                                if (o in t && t[o] === e) return o || 0;
                            return -1
                        }
                    }, {
                        "../internals/array-method-is-strict": 22,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/to-indexed-object": 136,
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138
                    }],
                    21: [function(e, t, r) {
                        var o = e("../internals/fails"),
                            n = e("../internals/well-known-symbol"),
                            s = e("../internals/engine-v8-version"),
                            i = n("species");
                        t.exports = function(t) {
                            return 51 <= s || !o(function() {
                                var e = [];
                                return (e.constructor = {})[i] = function() {
                                    return {
                                        foo: 1
                                    }
                                }, 1 !== e[t](Boolean).foo
                            })
                        }
                    }, {
                        "../internals/engine-v8-version": 48,
                        "../internals/fails": 51,
                        "../internals/well-known-symbol": 150
                    }],
                    22: [function(e, t, r) {
                        var o = e("../internals/fails");
                        t.exports = function(e, t) {
                            var r = [][e];
                            return !!r && o(function() {
                                r.call(null, t || function() {
                                    throw 1
                                }, 1)
                            })
                        }
                    }, {
                        "../internals/fails": 51
                    }],
                    23: [function(e, t, r) {
                        function i(e) {
                            throw e
                        }
                        var a = e("../internals/descriptors"),
                            l = e("../internals/fails"),
                            c = e("../internals/has"),
                            u = Object.defineProperty,
                            d = {};
                        t.exports = function(e, t) {
                            var r, o, n, s;
                            return c(d, e) ? d[e] : (r = [][e], o = !!c(t = t || {}, "ACCESSORS") && t.ACCESSORS, n = c(t, 0) ? t[0] : i, s = c(t, 1) ? t[1] : void 0, d[e] = !!r && !l(function() {
                                if (o && !a) return !0;
                                var e = {
                                    length: -1
                                };
                                o ? u(e, 1, {
                                    enumerable: !0,
                                    get: i
                                }) : e[1] = 1, r.call(e, n, s)
                            }))
                        }
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/fails": 51,
                        "../internals/has": 61
                    }],
                    24: [function(e, t, r) {
                        function o(c) {
                            return function(e, t, r, o) {
                                u(t);
                                var n = d(e),
                                    s = h(n),
                                    i = f(n.length),
                                    a = c ? i - 1 : 0,
                                    l = c ? -1 : 1;
                                if (r < 2)
                                    for (;;) {
                                        if (a in s) {
                                            o = s[a], a += l;
                                            break
                                        }
                                        if (a += l, c ? a < 0 : i <= a) throw TypeError("Reduce of empty array with no initial value")
                                    }
                                for (; c ? 0 <= a : a < i; a += l) a in s && (o = t(o, s[a], a, n));
                                return o
                            }
                        }
                        var u = e("../internals/a-function"),
                            d = e("../internals/to-object"),
                            h = e("../internals/indexed-object"),
                            f = e("../internals/to-length");
                        t.exports = {
                            left: o(!1),
                            right: o(!0)
                        }
                    }, {
                        "../internals/a-function": 5,
                        "../internals/indexed-object": 67,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    25: [function(e, t, r) {
                        var o = e("../internals/is-object"),
                            n = e("../internals/is-array"),
                            s = e("../internals/well-known-symbol")("species");
                        t.exports = function(e, t) {
                            var r;
                            return new(void 0 === (r = n(e) && ("function" == typeof(r = e.constructor) && (r === Array || n(r.prototype)) || o(r) && null === (r = r[s])) ? void 0 : r) ? Array : r)(0 === t ? 0 : t)
                        }
                    }, {
                        "../internals/is-array": 73,
                        "../internals/is-object": 75,
                        "../internals/well-known-symbol": 150
                    }],
                    26: [function(e, t, r) {
                        var n = e("../internals/an-object");
                        t.exports = function(e, t, r, o) {
                            try {
                                return o ? t(n(r)[0], r[1]) : t(r)
                            } catch (t) {
                                throw void 0 !== (o = e.return) && n(o.call(e)), t
                            }
                        }
                    }, {
                        "../internals/an-object": 10
                    }],
                    27: [function(e, t, r) {
                        var n = e("../internals/well-known-symbol")("iterator"),
                            s = !1;
                        try {
                            var o = 0,
                                i = {
                                    next: function() {
                                        return {
                                            done: !!o++
                                        }
                                    },
                                    return: function() {
                                        s = !0
                                    }
                                };
                            i[n] = function() {
                                return this
                            }, Array.from(i, function() {
                                throw 2
                            })
                        } catch (e) {}
                        t.exports = function(e, t) {
                            if (!t && !s) return !1;
                            var r = !1;
                            try {
                                var o = {};
                                o[n] = function() {
                                    return {
                                        next: function() {
                                            return {
                                                done: r = !0
                                            }
                                        }
                                    }
                                }, e(o)
                            } catch (e) {}
                            return r
                        }
                    }, {
                        "../internals/well-known-symbol": 150
                    }],
                    28: [function(e, t, r) {
                        var o = {}.toString;
                        t.exports = function(e) {
                            return o.call(e).slice(8, -1)
                        }
                    }, {}],
                    29: [function(e, t, r) {
                        var o = e("../internals/to-string-tag-support"),
                            n = e("../internals/classof-raw"),
                            s = e("../internals/well-known-symbol")("toStringTag"),
                            i = "Arguments" == n(function() {
                                return arguments
                            }());
                        t.exports = o ? n : function(e) {
                            var t;
                            return void 0 === e ? "Undefined" : null === e ? "Null" : "string" == typeof(t = ((e, t) => {
                                try {
                                    return e[t]
                                } catch (e) {}
                            })(e = Object(e), s)) ? t : i ? n(e) : "Object" == (t = n(e)) && "function" == typeof e.callee ? "Arguments" : t
                        }
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/to-string-tag-support": 143,
                        "../internals/well-known-symbol": 150
                    }],
                    30: [function(e, t, r) {
                        var c = e("../internals/object-define-property").f,
                            u = e("../internals/object-create"),
                            d = e("../internals/redefine-all"),
                            h = e("../internals/function-bind-context"),
                            f = e("../internals/an-instance"),
                            p = e("../internals/iterate"),
                            i = e("../internals/define-iterator"),
                            a = e("../internals/set-species"),
                            m = e("../internals/descriptors"),
                            y = e("../internals/internal-metadata").fastKey,
                            g = (e = e("../internals/internal-state")).set,
                            v = e.getterFor;
                        t.exports = {
                            getConstructor: function(e, r, o, n) {
                                function s(e, t, r) {
                                    var o, n = l(e),
                                        s = i(e, t);
                                    return s ? s.value = r : (n.last = s = {
                                        index: o = y(t, !0),
                                        key: t,
                                        value: r,
                                        previous: t = n.last,
                                        next: void 0,
                                        removed: !1
                                    }, n.first || (n.first = s), t && (t.next = s), m ? n.size++ : e.size++, "F" !== o && (n.index[o] = s)), e
                                }

                                function i(e, t) {
                                    var r, e = l(e),
                                        o = y(t);
                                    if ("F" !== o) return e.index[o];
                                    for (r = e.first; r; r = r.next)
                                        if (r.key == t) return r
                                }
                                var a = e(function(e, t) {
                                        f(e, a, r), g(e, {
                                            type: r,
                                            index: u(null),
                                            first: void 0,
                                            last: void 0,
                                            size: 0
                                        }), m || (e.size = 0), null != t && p(t, e[n], e, o)
                                    }),
                                    l = v(r);
                                return d(a.prototype, {
                                    clear: function() {
                                        for (var e = l(this), t = e.index, r = e.first; r;) r.removed = !0, r.previous && (r.previous = r.previous.next = void 0), delete t[r.index], r = r.next;
                                        e.first = e.last = void 0, m ? e.size = 0 : this.size = 0
                                    },
                                    delete: function(e) {
                                        var t, r, o = l(this);
                                        return (e = i(this, e)) && (t = e.next, r = e.previous, delete o.index[e.index], e.removed = !0, r && (r.next = t), t && (t.previous = r), o.first == e && (o.first = t), o.last == e && (o.last = r), m ? o.size-- : this.size--), !!e
                                    },
                                    forEach: function(e) {
                                        for (var t, r = l(this), o = h(e, 1 < arguments.length ? arguments[1] : void 0, 3); t = t ? t.next : r.first;)
                                            for (o(t.value, t.key, this); t && t.removed;) t = t.previous
                                    },
                                    has: function(e) {
                                        return !!i(this, e)
                                    }
                                }), d(a.prototype, o ? {
                                    get: function(e) {
                                        return (e = i(this, e)) && e.value
                                    },
                                    set: function(e, t) {
                                        return s(this, 0 === e ? 0 : e, t)
                                    }
                                } : {
                                    add: function(e) {
                                        return s(this, e = 0 === e ? 0 : e, e)
                                    }
                                }), m && c(a.prototype, "size", {
                                    get: function() {
                                        return l(this).size
                                    }
                                }), a
                            },
                            setStrong: function(e, t, r) {
                                var o = t + " Iterator",
                                    n = v(t),
                                    s = v(o);
                                i(e, t, function(e, t) {
                                    g(this, {
                                        type: o,
                                        target: e,
                                        state: n(e),
                                        kind: t,
                                        last: void 0
                                    })
                                }, function() {
                                    for (var e = s(this), t = e.kind, r = e.last; r && r.removed;) r = r.previous;
                                    return e.target && (e.last = r = r ? r.next : e.state.first) ? "keys" == t ? {
                                        value: r.key,
                                        done: !1
                                    } : "values" == t ? {
                                        value: r.value,
                                        done: !1
                                    } : {
                                        value: [r.key, r.value],
                                        done: !1
                                    } : {
                                        value: e.target = void 0,
                                        done: !0
                                    }
                                }, r ? "entries" : "values", !r, !0), a(t)
                            }
                        }
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/define-iterator": 41,
                        "../internals/descriptors": 43,
                        "../internals/function-bind-context": 55,
                        "../internals/internal-metadata": 70,
                        "../internals/internal-state": 71,
                        "../internals/iterate": 78,
                        "../internals/object-create": 91,
                        "../internals/object-define-property": 93,
                        "../internals/redefine-all": 109,
                        "../internals/set-species": 118
                    }],
                    31: [function(e, t, r) {
                        function l(e) {
                            return e.frozen || (e.frozen = new o)
                        }

                        function o() {
                            this.entries = []
                        }

                        function n(e, t) {
                            return i(e.entries, function(e) {
                                return e[0] === t
                            })
                        }
                        var c = e("../internals/redefine-all"),
                            u = e("../internals/internal-metadata").getWeakData,
                            d = e("../internals/an-object"),
                            h = e("../internals/is-object"),
                            f = e("../internals/an-instance"),
                            p = e("../internals/iterate"),
                            s = e("../internals/array-iteration"),
                            m = e("../internals/has"),
                            y = (e = e("../internals/internal-state")).set,
                            g = e.getterFor,
                            i = s.find,
                            a = s.findIndex,
                            v = 0;
                        o.prototype = {
                            get: function(e) {
                                if (e = n(this, e)) return e[1]
                            },
                            has: function(e) {
                                return !!n(this, e)
                            },
                            set: function(e, t) {
                                var r = n(this, e);
                                r ? r[1] = t : this.entries.push([e, t])
                            },
                            delete: function(t) {
                                var e = a(this.entries, function(e) {
                                    return e[0] === t
                                });
                                return ~e && this.entries.splice(e, 1), !!~e
                            }
                        }, t.exports = {
                            getConstructor: function(e, r, o, n) {
                                function s(e, t, r) {
                                    var o = a(e),
                                        n = u(d(t), !0);
                                    return !0 === n ? l(o).set(t, r) : n[o.id] = r, e
                                }
                                var i = e(function(e, t) {
                                        f(e, i, r), y(e, {
                                            type: r,
                                            id: v++,
                                            frozen: void 0
                                        }), null != t && p(t, e[n], e, o)
                                    }),
                                    a = g(r);
                                return c(i.prototype, {
                                    delete: function(e) {
                                        var t, r = a(this);
                                        return !!h(e) && (!0 === (t = u(e)) ? l(r).delete(e) : t && m(t, r.id) && delete t[r.id])
                                    },
                                    has: function(e) {
                                        var t, r = a(this);
                                        return !!h(e) && (!0 === (t = u(e)) ? l(r).has(e) : t && m(t, r.id))
                                    }
                                }), c(i.prototype, o ? {
                                    get: function(e) {
                                        var t, r = a(this);
                                        if (h(e)) return !0 === (t = u(e)) ? l(r).get(e) : t ? t[r.id] : void 0
                                    },
                                    set: function(e, t) {
                                        return s(this, e, t)
                                    }
                                } : {
                                    add: function(e) {
                                        return s(this, e, !0)
                                    }
                                }), i
                            }
                        }
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/an-object": 10,
                        "../internals/array-iteration": 19,
                        "../internals/has": 61,
                        "../internals/internal-metadata": 70,
                        "../internals/internal-state": 71,
                        "../internals/is-object": 75,
                        "../internals/iterate": 78,
                        "../internals/redefine-all": 109
                    }],
                    32: [function(e, t, r) {
                        var y = e("../internals/export"),
                            g = e("../internals/global"),
                            v = e("../internals/is-forced"),
                            b = e("../internals/redefine"),
                            _ = e("../internals/internal-metadata"),
                            x = e("../internals/iterate"),
                            w = e("../internals/an-instance"),
                            j = e("../internals/is-object"),
                            S = e("../internals/fails"),
                            T = e("../internals/check-correctness-of-iteration"),
                            E = e("../internals/set-to-string-tag"),
                            k = e("../internals/inherit-if-required");
                        t.exports = function(r, e, t) {
                            function o(e) {
                                var r = f[e];
                                b(f, e, "add" == e ? function(e) {
                                    return r.call(this, 0 === e ? 0 : e), this
                                } : "delete" == e ? function(e) {
                                    return !(u && !j(e)) && r.call(this, 0 === e ? 0 : e)
                                } : "get" == e ? function(e) {
                                    return u && !j(e) ? void 0 : r.call(this, 0 === e ? 0 : e)
                                } : "has" == e ? function(e) {
                                    return !(u && !j(e)) && r.call(this, 0 === e ? 0 : e)
                                } : function(e, t) {
                                    return r.call(this, 0 === e ? 0 : e, t), this
                                })
                            }
                            var n, s, i, a, l, c = -1 !== r.indexOf("Map"),
                                u = -1 !== r.indexOf("Weak"),
                                d = c ? "set" : "add",
                                h = g[r],
                                f = h && h.prototype,
                                p = h,
                                m = {};
                            return v(r, "function" != typeof h || !(u || f.forEach && !S(function() {
                                (new h).entries().next()
                            }))) ? (p = t.getConstructor(e, r, c, d), _.REQUIRED = !0) : v(r, !0) && (s = (n = new p)[d](u ? {} : -0, 1) != n, i = S(function() {
                                n.has(1)
                            }), a = T(function(e) {
                                new h(e)
                            }), l = !u && S(function() {
                                for (var e = new h, t = 5; t--;) e[d](t, t);
                                return !e.has(-0)
                            }), a || (((p = e(function(e, t) {
                                return w(e, p, r), e = k(new h, e, p), null != t && x(t, e[d], e, c), e
                            })).prototype = f).constructor = p), (i || l) && (o("delete"), o("has"), c) && o("get"), (l || s) && o(d), u) && f.clear && delete f.clear, y({
                                global: !0,
                                forced: (m[r] = p) != h
                            }, m), E(p, r), u || t.setStrong(p, r, c), p
                        }
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/check-correctness-of-iteration": 27,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/global": 60,
                        "../internals/inherit-if-required": 68,
                        "../internals/internal-metadata": 70,
                        "../internals/is-forced": 74,
                        "../internals/is-object": 75,
                        "../internals/iterate": 78,
                        "../internals/redefine": 110,
                        "../internals/set-to-string-tag": 119
                    }],
                    33: [function(e, t, r) {
                        var a = e("../internals/has"),
                            l = e("../internals/own-keys"),
                            c = e("../internals/object-get-own-property-descriptor"),
                            u = e("../internals/object-define-property");
                        t.exports = function(e, t) {
                            for (var r = l(t), o = u.f, n = c.f, s = 0; s < r.length; s++) {
                                var i = r[s];
                                a(e, i) || o(e, i, n(t, i))
                            }
                        }
                    }, {
                        "../internals/has": 61,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/own-keys": 105
                    }],
                    34: [function(e, t, r) {
                        var o = e("../internals/well-known-symbol")("match");
                        t.exports = function(t) {
                            var r = /./;
                            try {
                                "/./" [t](r)
                            } catch (e) {
                                try {
                                    return r[o] = !1, "/./" [t](r)
                                } catch (e) {}
                            }
                            return !1
                        }
                    }, {
                        "../internals/well-known-symbol": 150
                    }],
                    35: [function(e, t, r) {
                        e = e("../internals/fails"), t.exports = !e(function() {
                            function e() {}
                            return e.prototype.constructor = null, Object.getPrototypeOf(new e) !== e.prototype
                        })
                    }, {
                        "../internals/fails": 51
                    }],
                    36: [function(e, t, r) {
                        var s = e("../internals/require-object-coercible"),
                            i = /"/g;
                        t.exports = function(e, t, r, o) {
                            var e = String(s(e)),
                                n = "<" + t;
                            return "" !== r && (n += " " + r + '="' + String(o).replace(i, "&quot;") + '"'), n + ">" + e + "</" + t + ">"
                        }
                    }, {
                        "../internals/require-object-coercible": 115
                    }],
                    37: [function(e, t, r) {
                        function o() {
                            return this
                        }
                        var n = e("../internals/iterators-core").IteratorPrototype,
                            s = e("../internals/object-create"),
                            i = e("../internals/create-property-descriptor"),
                            a = e("../internals/set-to-string-tag"),
                            l = e("../internals/iterators");
                        t.exports = function(e, t, r) {
                            return t += " Iterator", e.prototype = s(n, {
                                next: i(1, r)
                            }), a(e, t, !1, !0), l[t] = o, e
                        }
                    }, {
                        "../internals/create-property-descriptor": 39,
                        "../internals/iterators": 80,
                        "../internals/iterators-core": 79,
                        "../internals/object-create": 91,
                        "../internals/set-to-string-tag": 119
                    }],
                    38: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            n = e("../internals/object-define-property"),
                            s = e("../internals/create-property-descriptor");
                        t.exports = o ? function(e, t, r) {
                            return n.f(e, t, s(1, r))
                        } : function(e, t, r) {
                            return e[t] = r, e
                        }
                    }, {
                        "../internals/create-property-descriptor": 39,
                        "../internals/descriptors": 43,
                        "../internals/object-define-property": 93
                    }],
                    39: [function(e, t, r) {
                        t.exports = function(e, t) {
                            return {
                                enumerable: !(1 & e),
                                configurable: !(2 & e),
                                writable: !(4 & e),
                                value: t
                            }
                        }
                    }, {}],
                    40: [function(e, t, r) {
                        var o = e("../internals/to-primitive"),
                            n = e("../internals/object-define-property"),
                            s = e("../internals/create-property-descriptor");
                        t.exports = function(e, t, r) {
                            (t = o(t)) in e ? n.f(e, t, s(0, r)) : e[t] = r
                        }
                    }, {
                        "../internals/create-property-descriptor": 39,
                        "../internals/object-define-property": 93,
                        "../internals/to-primitive": 142
                    }],
                    41: [function(e, t, r) {
                        function m() {
                            return this
                        }
                        var y = e("../internals/export"),
                            g = e("../internals/create-iterator-constructor"),
                            v = e("../internals/object-get-prototype-of"),
                            b = e("../internals/object-set-prototype-of"),
                            _ = e("../internals/set-to-string-tag"),
                            x = e("../internals/create-non-enumerable-property"),
                            w = e("../internals/redefine"),
                            o = e("../internals/well-known-symbol"),
                            j = e("../internals/is-pure"),
                            S = e("../internals/iterators"),
                            T = (e = e("../internals/iterators-core")).IteratorPrototype,
                            E = e.BUGGY_SAFARI_ITERATORS,
                            k = o("iterator"),
                            M = "values",
                            O = "entries";
                        t.exports = function(e, t, r, o, n, s, i) {
                            function a(e) {
                                if (e === n && f) return f;
                                if (!E && e in d) return d[e];
                                switch (e) {
                                    case "keys":
                                    case M:
                                    case O:
                                        return function() {
                                            return new r(this, e)
                                        }
                                }
                                return function() {
                                    return new r(this)
                                }
                            }
                            g(r, t, o);
                            var l, c, o = t + " Iterator",
                                u = !1,
                                d = e.prototype,
                                h = d[k] || d["@@iterator"] || n && d[n],
                                f = !E && h || a(n),
                                p = "Array" == t && d.entries || h;
                            if (p && (p = v(p.call(new e)), T !== Object.prototype) && p.next && (j || v(p) === T || (b ? b(p, T) : "function" != typeof p[k] && x(p, k, m)), _(p, o, !0, !0), j) && (S[o] = m), n == M && h && h.name !== M && (u = !0, f = function() {
                                    return h.call(this)
                                }), j && !i || d[k] === f || x(d, k, f), S[t] = f, n)
                                if (l = {
                                        values: a(M),
                                        keys: s ? f : a("keys"),
                                        entries: a(O)
                                    }, i)
                                    for (c in l) !E && !u && c in d || w(d, c, l[c]);
                                else y({
                                    target: t,
                                    proto: !0,
                                    forced: E || u
                                }, l);
                            return l
                        }
                    }, {
                        "../internals/create-iterator-constructor": 37,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/export": 50,
                        "../internals/is-pure": 76,
                        "../internals/iterators": 80,
                        "../internals/iterators-core": 79,
                        "../internals/object-get-prototype-of": 98,
                        "../internals/object-set-prototype-of": 102,
                        "../internals/redefine": 110,
                        "../internals/set-to-string-tag": 119,
                        "../internals/well-known-symbol": 150
                    }],
                    42: [function(e, t, r) {
                        var o = e("../internals/path"),
                            n = e("../internals/has"),
                            s = e("../internals/well-known-symbol-wrapped"),
                            i = e("../internals/object-define-property").f;
                        t.exports = function(e) {
                            var t = o.Symbol || (o.Symbol = {});
                            n(t, e) || i(t, e, {
                                value: s.f(e)
                            })
                        }
                    }, {
                        "../internals/has": 61,
                        "../internals/object-define-property": 93,
                        "../internals/path": 106,
                        "../internals/well-known-symbol-wrapped": 149
                    }],
                    43: [function(e, t, r) {
                        e = e("../internals/fails"), t.exports = !e(function() {
                            return 7 != Object.defineProperty({}, 1, {
                                get: function() {
                                    return 7
                                }
                            })[1]
                        })
                    }, {
                        "../internals/fails": 51
                    }],
                    44: [function(e, t, r) {
                        var o = e("../internals/global"),
                            e = e("../internals/is-object"),
                            n = o.document,
                            s = e(n) && e(n.createElement);
                        t.exports = function(e) {
                            return s ? n.createElement(e) : {}
                        }
                    }, {
                        "../internals/global": 60,
                        "../internals/is-object": 75
                    }],
                    45: [function(e, t, r) {
                        t.exports = {
                            CSSRuleList: 0,
                            CSSStyleDeclaration: 0,
                            CSSValueList: 0,
                            ClientRectList: 0,
                            DOMRectList: 0,
                            DOMStringList: 0,
                            DOMTokenList: 1,
                            DataTransferItemList: 0,
                            FileList: 0,
                            HTMLAllCollection: 0,
                            HTMLCollection: 0,
                            HTMLFormElement: 0,
                            HTMLSelectElement: 0,
                            MediaList: 0,
                            MimeTypeArray: 0,
                            NamedNodeMap: 0,
                            NodeList: 1,
                            PaintRequestList: 0,
                            Plugin: 0,
                            PluginArray: 0,
                            SVGLengthList: 0,
                            SVGNumberList: 0,
                            SVGPathSegList: 0,
                            SVGPointList: 0,
                            SVGStringList: 0,
                            SVGTransformList: 0,
                            SourceBufferList: 0,
                            StyleSheetList: 0,
                            TextTrackCueList: 0,
                            TextTrackList: 0,
                            TouchList: 0
                        }
                    }, {}],
                    46: [function(e, t, r) {
                        e = e("../internals/engine-user-agent"), t.exports = /(iphone|ipod|ipad).*applewebkit/i.test(e)
                    }, {
                        "../internals/engine-user-agent": 47
                    }],
                    47: [function(e, t, r) {
                        e = e("../internals/get-built-in"), t.exports = e("navigator", "userAgent") || ""
                    }, {
                        "../internals/get-built-in": 57
                    }],
                    48: [function(e, t, r) {
                        var o, n, s = e("../internals/global"),
                            e = e("../internals/engine-user-agent");
                        (s = (s = (s = s.process) && s.versions) && s.v8) ? n = (o = s.split("."))[0] + o[1]: e && (!(o = e.match(/Edge\/(\d+)/)) || 74 <= o[1]) && (o = e.match(/Chrome\/(\d+)/)) && (n = o[1]), t.exports = n && +n
                    }, {
                        "../internals/engine-user-agent": 47,
                        "../internals/global": 60
                    }],
                    49: [function(e, t, r) {
                        t.exports = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]
                    }, {}],
                    50: [function(e, t, r) {
                        var c = e("../internals/global"),
                            u = e("../internals/object-get-own-property-descriptor").f,
                            d = e("../internals/create-non-enumerable-property"),
                            h = e("../internals/redefine"),
                            f = e("../internals/set-global"),
                            p = e("../internals/copy-constructor-properties"),
                            m = e("../internals/is-forced");
                        t.exports = function(e, t) {
                            var r, o, n, s = e.target,
                                i = e.global,
                                a = e.stat,
                                l = i ? c : a ? c[s] || f(s, {}) : (c[s] || {}).prototype;
                            if (l)
                                for (r in t) {
                                    if (o = t[r], n = e.noTargetGet ? (n = u(l, r)) && n.value : l[r], !m(i ? r : s + (a ? "." : "#") + r, e.forced) && void 0 !== n) {
                                        if (typeof o == typeof n) continue;
                                        p(o, n)
                                    }(e.sham || n && n.sham) && d(o, "sham", !0), h(l, r, o, e)
                                }
                        }
                    }, {
                        "../internals/copy-constructor-properties": 33,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/global": 60,
                        "../internals/is-forced": 74,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/redefine": 110,
                        "../internals/set-global": 117
                    }],
                    51: [function(e, t, r) {
                        t.exports = function(e) {
                            try {
                                return !!e()
                            } catch (e) {
                                return !0
                            }
                        }
                    }, {}],
                    52: [function(e, t, r) {
                        e("../modules/es.regexp.exec");
                        var c = e("../internals/redefine"),
                            u = e("../internals/fails"),
                            d = e("../internals/well-known-symbol"),
                            h = e("../internals/regexp-exec"),
                            f = e("../internals/create-non-enumerable-property"),
                            p = d("species"),
                            m = !u(function() {
                                var e = /./;
                                return e.exec = function() {
                                    var e = [];
                                    return e.groups = {
                                        a: "7"
                                    }, e
                                }, "7" !== "".replace(e, "$<a>")
                            }),
                            y = "$0" === "a".replace(/./, "$0"),
                            g = !!/./ [e = d("replace")] && "" === /./ [e]("a", "$0"),
                            v = !u(function() {
                                var e = /(?:)/,
                                    t = e.exec;
                                return e.exec = function() {
                                    return t.apply(this, arguments)
                                }, 2 !== (e = "ab".split(e)).length || "a" !== e[0] || "b" !== e[1]
                            });
                        t.exports = function(r, e, t, o) {
                            var s, n, i = d(r),
                                a = !u(function() {
                                    var e = {};
                                    return e[i] = function() {
                                        return 7
                                    }, 7 != "" [r](e)
                                }),
                                l = a && !u(function() {
                                    var e = !1,
                                        t = /a/;
                                    return "split" === r && ((t = {
                                        constructor: {}
                                    }).constructor[p] = function() {
                                        return t
                                    }, t.flags = "", t[i] = /./ [i]), t.exec = function() {
                                        return e = !0, null
                                    }, t[i](""), !e
                                });
                            a && l && ("replace" !== r || m && y && !g) && ("split" !== r || v) || (s = /./ [i], t = (l = t(i, "" [r], function(e, t, r, o, n) {
                                return t.exec === h ? a && !n ? {
                                    done: !0,
                                    value: s.call(t, r, o)
                                } : {
                                    done: !0,
                                    value: e.call(r, t, o)
                                } : {
                                    done: !1
                                }
                            }, {
                                REPLACE_KEEPS_$0: y,
                                REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: g
                            }))[0], n = l[1], c(String.prototype, r, t), c(RegExp.prototype, i, 2 == e ? function(e, t) {
                                return n.call(e, this, t)
                            } : function(e) {
                                return n.call(e, this)
                            })), o && f(RegExp.prototype[i], "sham", !0)
                        }
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/fails": 51,
                        "../internals/redefine": 110,
                        "../internals/regexp-exec": 112,
                        "../internals/well-known-symbol": 150,
                        "../modules/es.regexp.exec": 195
                    }],
                    53: [function(e, t, r) {
                        var f = e("../internals/is-array"),
                            p = e("../internals/to-length"),
                            m = e("../internals/function-bind-context");
                        t.exports = function e(t, r, o, n, s, i, a, l) {
                            for (var c, u = s, d = 0, h = !!a && m(a, l, 3); d < n;) {
                                if (d in o) {
                                    if (c = h ? h(o[d], d, r) : o[d], 0 < i && f(c)) u = e(t, r, c, p(c.length), u, i - 1) - 1;
                                    else {
                                        if (9007199254740991 <= u) throw TypeError("Exceed the acceptable array length");
                                        t[u] = c
                                    }
                                    u++
                                }
                                d++
                            }
                            return u
                        }
                    }, {
                        "../internals/function-bind-context": 55,
                        "../internals/is-array": 73,
                        "../internals/to-length": 138
                    }],
                    54: [function(e, t, r) {
                        e = e("../internals/fails"), t.exports = !e(function() {
                            return Object.isExtensible(Object.preventExtensions({}))
                        })
                    }, {
                        "../internals/fails": 51
                    }],
                    55: [function(e, t, r) {
                        var s = e("../internals/a-function");
                        t.exports = function(o, n, e) {
                            if (s(o), void 0 === n) return o;
                            switch (e) {
                                case 0:
                                    return function() {
                                        return o.call(n)
                                    };
                                case 1:
                                    return function(e) {
                                        return o.call(n, e)
                                    };
                                case 2:
                                    return function(e, t) {
                                        return o.call(n, e, t)
                                    };
                                case 3:
                                    return function(e, t, r) {
                                        return o.call(n, e, t, r)
                                    }
                            }
                            return function() {
                                return o.apply(n, arguments)
                            }
                        }
                    }, {
                        "../internals/a-function": 5
                    }],
                    56: [function(e, t, r) {
                        var o = e("../internals/a-function"),
                            n = e("../internals/is-object"),
                            u = [].slice,
                            d = {};
                        t.exports = Function.bind || function(i) {
                            var a = o(this),
                                l = u.call(arguments, 1),
                                c = function() {
                                    var e = l.concat(u.call(arguments));
                                    if (this instanceof c) {
                                        var t = a,
                                            r = e.length,
                                            o = e;
                                        if (!(r in d)) {
                                            for (var n = [], s = 0; s < r; s++) n[s] = "a[" + s + "]";
                                            d[r] = Function("C,a", "return new C(" + n.join(",") + ")")
                                        }
                                        return d[r](t, o)
                                    }
                                    return a.apply(i, e)
                                };
                            return n(a.prototype) && (c.prototype = a.prototype), c
                        }
                    }, {
                        "../internals/a-function": 5,
                        "../internals/is-object": 75
                    }],
                    57: [function(e, t, r) {
                        function o(e) {
                            return "function" == typeof e ? e : void 0
                        }
                        var n = e("../internals/path"),
                            s = e("../internals/global");
                        t.exports = function(e, t) {
                            return arguments.length < 2 ? o(n[e]) || o(s[e]) : n[e] && n[e][t] || s[e] && s[e][t]
                        }
                    }, {
                        "../internals/global": 60,
                        "../internals/path": 106
                    }],
                    58: [function(e, t, r) {
                        var o = e("../internals/classof"),
                            n = e("../internals/iterators"),
                            s = e("../internals/well-known-symbol")("iterator");
                        t.exports = function(e) {
                            if (null != e) return e[s] || e["@@iterator"] || n[o(e)]
                        }
                    }, {
                        "../internals/classof": 29,
                        "../internals/iterators": 80,
                        "../internals/well-known-symbol": 150
                    }],
                    59: [function(e, t, r) {
                        var o = e("../internals/an-object"),
                            n = e("../internals/get-iterator-method");
                        t.exports = function(e) {
                            var t = n(e);
                            if ("function" != typeof t) throw TypeError(String(e) + " is not iterable");
                            return o(t.call(e))
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/get-iterator-method": 58
                    }],
                    60: [function(e, r, t) {
                        ! function(e) {
                            function t(e) {
                                return e && e.Math == Math && e
                            }
                            r.exports = t("object" == typeof globalThis && globalThis) || t("object" == typeof window && window) || t("object" == typeof self && self) || t("object" == typeof e && e) || Function("return this")()
                        }.call(this, void 0 !== o.g ? o.g : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                    }, {}],
                    61: [function(e, t, r) {
                        var o = {}.hasOwnProperty;
                        t.exports = function(e, t) {
                            return o.call(e, t)
                        }
                    }, {}],
                    62: [function(e, t, r) {
                        t.exports = {}
                    }, {}],
                    63: [function(e, t, r) {
                        var o = e("../internals/global");
                        t.exports = function(e, t) {
                            var r = o.console;
                            r && r.error && (1 === arguments.length ? r.error(e) : r.error(e, t))
                        }
                    }, {
                        "../internals/global": 60
                    }],
                    64: [function(e, t, r) {
                        e = e("../internals/get-built-in"), t.exports = e("document", "documentElement")
                    }, {
                        "../internals/get-built-in": 57
                    }],
                    65: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            n = e("../internals/fails"),
                            s = e("../internals/document-create-element");
                        t.exports = !o && !n(function() {
                            return 7 != Object.defineProperty(s("div"), "a", {
                                get: function() {
                                    return 7
                                }
                            }).a
                        })
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/document-create-element": 44,
                        "../internals/fails": 51
                    }],
                    66: [function(e, t, r) {
                        var h = Math.abs,
                            f = Math.pow,
                            p = Math.floor,
                            m = Math.log,
                            y = Math.LN2;
                        t.exports = {
                            pack: function(e, t, r) {
                                var o, n, s, i = new Array(r),
                                    a = 8 * r - t - 1,
                                    l = (r = (1 << a) - 1) >> 1,
                                    c = 23 === t ? f(2, -24) - f(2, -77) : 0,
                                    u = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0,
                                    d = 0;
                                for ((e = h(e)) != e || e === 1 / 0 ? (n = e != e ? 1 : 0, o = r) : (o = p(m(e) / y), e * (s = f(2, -o)) < 1 && (o--, s *= 2), 2 <= (e += 1 <= o + l ? c / s : c * f(2, 1 - l)) * s && (o++, s /= 2), r <= o + l ? (n = 0, o = r) : 1 <= o + l ? (n = (e * s - 1) * f(2, t), o += l) : (n = e * f(2, l - 1) * f(2, t), o = 0)); 8 <= t; i[d++] = 255 & n, n /= 256, t -= 8);
                                for (o = o << t | n, a += t; 0 < a; i[d++] = 255 & o, o /= 256, a -= 8);
                                return i[--d] |= 128 * u, i
                            },
                            unpack: function(e, t) {
                                var r, o = e.length,
                                    n = 8 * o - t - 1,
                                    s = (1 << n) - 1,
                                    i = s >> 1,
                                    a = n - 7,
                                    l = o - 1,
                                    c = 127 & (n = e[l--]);
                                for (n >>= 7; 0 < a; c = 256 * c + e[l], l--, a -= 8);
                                for (r = c & (1 << -a) - 1, c >>= -a, a += t; 0 < a; r = 256 * r + e[l], l--, a -= 8);
                                if (0 === c) c = 1 - i;
                                else {
                                    if (c === s) return r ? NaN : n ? -1 / 0 : 1 / 0;
                                    r += f(2, t), c -= i
                                }
                                return (n ? -1 : 1) * r * f(2, c - t)
                            }
                        }
                    }, {}],
                    67: [function(e, t, r) {
                        var o = e("../internals/fails"),
                            n = e("../internals/classof-raw"),
                            s = "".split;
                        t.exports = o(function() {
                            return !Object("z").propertyIsEnumerable(0)
                        }) ? function(e) {
                            return "String" == n(e) ? s.call(e, "") : Object(e)
                        } : Object
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/fails": 51
                    }],
                    68: [function(e, t, r) {
                        var o = e("../internals/is-object"),
                            n = e("../internals/object-set-prototype-of");
                        t.exports = function(e, t, r) {
                            return n && "function" == typeof(t = t.constructor) && t !== r && o(t = t.prototype) && t !== r.prototype && n(e, t), e
                        }
                    }, {
                        "../internals/is-object": 75,
                        "../internals/object-set-prototype-of": 102
                    }],
                    69: [function(e, t, r) {
                        var e = e("../internals/shared-store"),
                            o = Function.toString;
                        "function" != typeof e.inspectSource && (e.inspectSource = function(e) {
                            return o.call(e)
                        }), t.exports = e.inspectSource
                    }, {
                        "../internals/shared-store": 121
                    }],
                    70: [function(e, t, r) {
                        function o(e) {
                            a(e, u, {
                                value: {
                                    objectID: "O" + ++d,
                                    weakData: {}
                                }
                            })
                        }
                        var n = e("../internals/hidden-keys"),
                            s = e("../internals/is-object"),
                            i = e("../internals/has"),
                            a = e("../internals/object-define-property").f,
                            l = e("../internals/uid"),
                            c = e("../internals/freezing"),
                            u = l("meta"),
                            d = 0,
                            h = Object.isExtensible || function() {
                                return !0
                            },
                            f = t.exports = {
                                REQUIRED: !1,
                                fastKey: function(e, t) {
                                    if (!s(e)) return "symbol" == typeof e ? e : ("string" == typeof e ? "S" : "P") + e;
                                    if (!i(e, u)) {
                                        if (!h(e)) return "F";
                                        if (!t) return "E";
                                        o(e)
                                    }
                                    return e[u].objectID
                                },
                                getWeakData: function(e, t) {
                                    if (!i(e, u)) {
                                        if (!h(e)) return !0;
                                        if (!t) return !1;
                                        o(e)
                                    }
                                    return e[u].weakData
                                },
                                onFreeze: function(e) {
                                    return c && f.REQUIRED && h(e) && !i(e, u) && o(e), e
                                }
                            };
                        n[u] = !0
                    }, {
                        "../internals/freezing": 54,
                        "../internals/has": 61,
                        "../internals/hidden-keys": 62,
                        "../internals/is-object": 75,
                        "../internals/object-define-property": 93,
                        "../internals/uid": 147
                    }],
                    71: [function(e, t, r) {
                        var o, n, s, i, a, l, c, u = e("../internals/native-weak-map"),
                            d = e("../internals/global"),
                            h = e("../internals/is-object"),
                            f = e("../internals/create-non-enumerable-property"),
                            p = e("../internals/has"),
                            m = e("../internals/shared-key"),
                            e = e("../internals/hidden-keys"),
                            d = d.WeakMap,
                            y = u ? (o = new d, n = o.get, s = o.has, i = o.set, a = function(e, t) {
                                return i.call(o, e, t), t
                            }, l = function(e) {
                                return n.call(o, e) || {}
                            }, function(e) {
                                return s.call(o, e)
                            }) : (e[c = m("state")] = !0, a = function(e, t) {
                                return f(e, c, t), t
                            }, l = function(e) {
                                return p(e, c) ? e[c] : {}
                            }, function(e) {
                                return p(e, c)
                            });
                        t.exports = {
                            set: a,
                            get: l,
                            has: y,
                            enforce: function(e) {
                                return y(e) ? l(e) : a(e, {})
                            },
                            getterFor: function(t) {
                                return function(e) {
                                    if (h(e) && (e = l(e)).type === t) return e;
                                    throw TypeError("Incompatible receiver, " + t + " required")
                                }
                            }
                        }
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/hidden-keys": 62,
                        "../internals/is-object": 75,
                        "../internals/native-weak-map": 86,
                        "../internals/shared-key": 120
                    }],
                    72: [function(e, t, r) {
                        var o = e("../internals/well-known-symbol"),
                            n = e("../internals/iterators"),
                            s = o("iterator"),
                            i = Array.prototype;
                        t.exports = function(e) {
                            return void 0 !== e && (n.Array === e || i[s] === e)
                        }
                    }, {
                        "../internals/iterators": 80,
                        "../internals/well-known-symbol": 150
                    }],
                    73: [function(e, t, r) {
                        var o = e("../internals/classof-raw");
                        t.exports = Array.isArray || function(e) {
                            return "Array" == o(e)
                        }
                    }, {
                        "../internals/classof-raw": 28
                    }],
                    74: [function(e, t, r) {
                        function o(e, t) {
                            return (e = a[i(e)]) == c || e != l && ("function" == typeof t ? n(t) : !!t)
                        }
                        var n = e("../internals/fails"),
                            s = /#|\.prototype\./,
                            i = o.normalize = function(e) {
                                return String(e).replace(s, ".").toLowerCase()
                            },
                            a = o.data = {},
                            l = o.NATIVE = "N",
                            c = o.POLYFILL = "P";
                        t.exports = o
                    }, {
                        "../internals/fails": 51
                    }],
                    75: [function(e, t, r) {
                        t.exports = function(e) {
                            return "object" == typeof e ? null !== e : "function" == typeof e
                        }
                    }, {}],
                    76: [function(e, t, r) {
                        t.exports = !1
                    }, {}],
                    77: [function(e, t, r) {
                        var o = e("../internals/is-object"),
                            n = e("../internals/classof-raw"),
                            s = e("../internals/well-known-symbol")("match");
                        t.exports = function(e) {
                            var t;
                            return o(e) && (void 0 !== (t = e[s]) ? !!t : "RegExp" == n(e))
                        }
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/is-object": 75,
                        "../internals/well-known-symbol": 150
                    }],
                    78: [function(e, t, r) {
                        function h(e, t) {
                            this.stopped = e, this.result = t
                        }
                        var f = e("../internals/an-object"),
                            p = e("../internals/is-array-iterator-method"),
                            m = e("../internals/to-length"),
                            y = e("../internals/function-bind-context"),
                            g = e("../internals/get-iterator-method"),
                            v = e("../internals/call-with-safe-iteration-closing");
                        (t.exports = function(e, t, r, o, n) {
                            var s, i, a, l, c, u, d = y(t, r, o ? 2 : 1);
                            if (n) s = e;
                            else {
                                if ("function" != typeof(t = g(e))) throw TypeError("Target is not iterable");
                                if (p(t)) {
                                    for (i = 0, a = m(e.length); i < a; i++)
                                        if ((l = o ? d(f(u = e[i])[0], u[1]) : d(e[i])) && l instanceof h) return l;
                                    return new h(!1)
                                }
                                s = t.call(e)
                            }
                            for (c = s.next; !(u = c.call(s)).done;)
                                if ("object" == typeof(l = v(s, d, u.value, o)) && l && l instanceof h) return l;
                            return new h(!1)
                        }).stop = function(e) {
                            return new h(!0, e)
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/call-with-safe-iteration-closing": 26,
                        "../internals/function-bind-context": 55,
                        "../internals/get-iterator-method": 58,
                        "../internals/is-array-iterator-method": 72,
                        "../internals/to-length": 138
                    }],
                    79: [function(e, t, r) {
                        var o, n, s = e("../internals/object-get-prototype-of"),
                            i = e("../internals/create-non-enumerable-property"),
                            a = e("../internals/has"),
                            l = e("../internals/well-known-symbol"),
                            e = e("../internals/is-pure"),
                            l = l("iterator"),
                            c = !1;
                        [].keys && ("next" in (n = [].keys()) ? (s = s(s(n))) !== Object.prototype && (o = s) : c = !0), null == o && (o = {}), e || a(o, l) || i(o, l, function() {
                            return this
                        }), t.exports = {
                            IteratorPrototype: o,
                            BUGGY_SAFARI_ITERATORS: c
                        }
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/has": 61,
                        "../internals/is-pure": 76,
                        "../internals/object-get-prototype-of": 98,
                        "../internals/well-known-symbol": 150
                    }],
                    80: [function(e, t, r) {
                        t.exports = {}
                    }, {}],
                    81: [function(e, t, r) {
                        t.exports = Math.sign || function(e) {
                            return 0 == (e = +e) || e != e ? e : e < 0 ? -1 : 1
                        }
                    }, {}],
                    82: [function(e, t, r) {
                        var o, n, s, i, a, l, c, u, d = e("../internals/global"),
                            h = e("../internals/object-get-own-property-descriptor").f,
                            f = e("../internals/classof-raw"),
                            p = e("../internals/task").set,
                            e = e("../internals/engine-is-ios"),
                            m = d.MutationObserver || d.WebKitMutationObserver,
                            y = d.process,
                            g = d.Promise,
                            v = "process" == f(y);
                        (h = (f = h(d, "queueMicrotask")) && f.value) || (o = function() {
                            var e, t;
                            for (v && (e = y.domain) && e.exit(); n;) {
                                t = n.fn, n = n.next;
                                try {
                                    t()
                                } catch (e) {
                                    throw n ? i() : s = void 0, e
                                }
                            }
                            s = void 0, e && e.enter()
                        }, i = v ? function() {
                            y.nextTick(o)
                        } : m && !e ? (a = !0, l = document.createTextNode(""), new m(o).observe(l, {
                            characterData: !0
                        }), function() {
                            l.data = a = !a
                        }) : g && g.resolve ? (c = g.resolve(void 0), u = c.then, function() {
                            u.call(c, o)
                        }) : function() {
                            p.call(d, o)
                        }), t.exports = h || function(e) {
                            e = {
                                fn: e,
                                next: void 0
                            }, s && (s.next = e), n || (n = e, i()), s = e
                        }
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/engine-is-ios": 46,
                        "../internals/global": 60,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/task": 132
                    }],
                    83: [function(e, t, r) {
                        e = e("../internals/global"), t.exports = e.Promise
                    }, {
                        "../internals/global": 60
                    }],
                    84: [function(e, t, r) {
                        e = e("../internals/fails"), t.exports = !!Object.getOwnPropertySymbols && !e(function() {
                            return !String(Symbol())
                        })
                    }, {
                        "../internals/fails": 51
                    }],
                    85: [function(e, t, r) {
                        var o = e("../internals/fails"),
                            n = e("../internals/well-known-symbol"),
                            s = e("../internals/is-pure"),
                            i = n("iterator");
                        t.exports = !o(function() {
                            var e = new URL("b?a=1&b=2&c=3", "http://a"),
                                r = e.searchParams,
                                o = "";
                            return e.pathname = "c%20d", r.forEach(function(e, t) {
                                r.delete("b"), o += t + e
                            }), s && !e.toJSON || !r.sort || "http://a/c%20d?a=1&c=3" !== e.href || "3" !== r.get("c") || "a=1" !== String(new URLSearchParams("?a=1")) || !r[i] || "a" !== new URL("https://a@b").username || "b" !== new URLSearchParams(new URLSearchParams("a=b")).get("a") || "xn--e1aybc" !== new URL("http://тест").host || "#%D0%B1" !== new URL("http://a#б").hash || "a1c3" !== o || "x" !== new URL("http://x", void 0).host
                        })
                    }, {
                        "../internals/fails": 51,
                        "../internals/is-pure": 76,
                        "../internals/well-known-symbol": 150
                    }],
                    86: [function(e, t, r) {
                        var o = e("../internals/global"),
                            e = e("../internals/inspect-source"),
                            o = o.WeakMap;
                        t.exports = "function" == typeof o && /native code/.test(e(o))
                    }, {
                        "../internals/global": 60,
                        "../internals/inspect-source": 69
                    }],
                    87: [function(e, t, r) {
                        function o(e) {
                            var r, o;
                            this.promise = new e(function(e, t) {
                                if (void 0 !== r || void 0 !== o) throw TypeError("Bad Promise constructor");
                                r = e, o = t
                            }), this.resolve = n(r), this.reject = n(o)
                        }
                        var n = e("../internals/a-function");
                        t.exports.f = function(e) {
                            return new o(e)
                        }
                    }, {
                        "../internals/a-function": 5
                    }],
                    88: [function(e, t, r) {
                        var o = e("../internals/is-regexp");
                        t.exports = function(e) {
                            if (o(e)) throw TypeError("The method doesn't accept regular expressions");
                            return e
                        }
                    }, {
                        "../internals/is-regexp": 77
                    }],
                    89: [function(e, t, r) {
                        var o = e("../internals/global").isFinite;
                        t.exports = Number.isFinite || function(e) {
                            return "number" == typeof e && o(e)
                        }
                    }, {
                        "../internals/global": 60
                    }],
                    90: [function(e, t, r) {
                        var h = e("../internals/descriptors"),
                            o = e("../internals/fails"),
                            f = e("../internals/object-keys"),
                            p = e("../internals/object-get-own-property-symbols"),
                            m = e("../internals/object-property-is-enumerable"),
                            y = e("../internals/to-object"),
                            g = e("../internals/indexed-object"),
                            n = Object.assign,
                            s = Object.defineProperty;
                        t.exports = !n || o(function() {
                            var e, t, r, o;
                            return !(!h || 1 === n({
                                b: 1
                            }, n(s({}, "a", {
                                enumerable: !0,
                                get: function() {
                                    s(this, "b", {
                                        value: 3,
                                        enumerable: !1
                                    })
                                }
                            }), {
                                b: 2
                            })).b) || (t = {}, o = "abcdefghijklmnopqrst", (e = {})[r = Symbol()] = 7, o.split("").forEach(function(e) {
                                t[e] = e
                            }), 7 != n({}, e)[r]) || f(n({}, t)).join("") != o
                        }) ? function(e, t) {
                            for (var r = y(e), o = arguments.length, n = 1, s = p.f, i = m.f; n < o;)
                                for (var a, l = g(arguments[n++]), c = s ? f(l).concat(s(l)) : f(l), u = c.length, d = 0; d < u;) a = c[d++], h && !i.call(l, a) || (r[a] = l[a]);
                            return r
                        } : n
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/fails": 51,
                        "../internals/indexed-object": 67,
                        "../internals/object-get-own-property-symbols": 97,
                        "../internals/object-keys": 100,
                        "../internals/object-property-is-enumerable": 101,
                        "../internals/to-object": 139
                    }],
                    91: [function(e, t, r) {
                        function o() {}

                        function n(e) {
                            return "<" + f + ">" + e + "</" + f + ">"
                        }
                        var s, i = e("../internals/an-object"),
                            a = e("../internals/object-define-properties"),
                            l = e("../internals/enum-bug-keys"),
                            c = e("../internals/hidden-keys"),
                            u = e("../internals/html"),
                            d = e("../internals/document-create-element"),
                            e = e("../internals/shared-key"),
                            h = "prototype",
                            f = "script",
                            p = e("IE_PROTO"),
                            m = function() {
                                try {
                                    s = document.domain && new ActiveXObject("htmlfile")
                                } catch (e) {}
                                m = s ? ((e = s).write(n("")), e.close(), t = e.parentWindow.Object, e = null, t) : (e = d("iframe"), t = "java" + f + ":", e.style.display = "none", u.appendChild(e), e.src = String(t), (t = e.contentWindow.document).open(), t.write(n("document.F=Object")), t.close(), t.F);
                                for (var e, t, r = l.length; r--;) delete m[h][l[r]];
                                return m()
                            };
                        c[p] = !0, t.exports = Object.create || function(e, t) {
                            var r;
                            return null !== e ? (o[h] = i(e), r = new o, o[h] = null, r[p] = e) : r = m(), void 0 === t ? r : a(r, t)
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/document-create-element": 44,
                        "../internals/enum-bug-keys": 49,
                        "../internals/hidden-keys": 62,
                        "../internals/html": 64,
                        "../internals/object-define-properties": 92,
                        "../internals/shared-key": 120
                    }],
                    92: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            i = e("../internals/object-define-property"),
                            a = e("../internals/an-object"),
                            l = e("../internals/object-keys");
                        t.exports = o ? Object.defineProperties : function(e, t) {
                            a(e);
                            for (var r, o = l(t), n = o.length, s = 0; s < n;) i.f(e, r = o[s++], t[r]);
                            return e
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/descriptors": 43,
                        "../internals/object-define-property": 93,
                        "../internals/object-keys": 100
                    }],
                    93: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            n = e("../internals/ie8-dom-define"),
                            s = e("../internals/an-object"),
                            i = e("../internals/to-primitive"),
                            a = Object.defineProperty;
                        r.f = o ? a : function(e, t, r) {
                            if (s(e), t = i(t, !0), s(r), n) try {
                                return a(e, t, r)
                            } catch (e) {}
                            if ("get" in r || "set" in r) throw TypeError("Accessors not supported");
                            return "value" in r && (e[t] = r.value), e
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/descriptors": 43,
                        "../internals/ie8-dom-define": 65,
                        "../internals/to-primitive": 142
                    }],
                    94: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            n = e("../internals/object-property-is-enumerable"),
                            s = e("../internals/create-property-descriptor"),
                            i = e("../internals/to-indexed-object"),
                            a = e("../internals/to-primitive"),
                            l = e("../internals/has"),
                            c = e("../internals/ie8-dom-define"),
                            u = Object.getOwnPropertyDescriptor;
                        r.f = o ? u : function(e, t) {
                            if (e = i(e), t = a(t, !0), c) try {
                                return u(e, t)
                            } catch (e) {}
                            if (l(e, t)) return s(!n.f.call(e, t), e[t])
                        }
                    }, {
                        "../internals/create-property-descriptor": 39,
                        "../internals/descriptors": 43,
                        "../internals/has": 61,
                        "../internals/ie8-dom-define": 65,
                        "../internals/object-property-is-enumerable": 101,
                        "../internals/to-indexed-object": 136,
                        "../internals/to-primitive": 142
                    }],
                    95: [function(e, t, r) {
                        var o = e("../internals/to-indexed-object"),
                            n = e("../internals/object-get-own-property-names").f,
                            s = {}.toString,
                            i = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [];
                        t.exports.f = function(e) {
                            if (!i || "[object Window]" != s.call(e)) return n(o(e));
                            try {
                                return n(e)
                            } catch (e) {
                                return i.slice()
                            }
                        }
                    }, {
                        "../internals/object-get-own-property-names": 96,
                        "../internals/to-indexed-object": 136
                    }],
                    96: [function(e, t, r) {
                        var o = e("../internals/object-keys-internal"),
                            n = e("../internals/enum-bug-keys").concat("length", "prototype");
                        r.f = Object.getOwnPropertyNames || function(e) {
                            return o(e, n)
                        }
                    }, {
                        "../internals/enum-bug-keys": 49,
                        "../internals/object-keys-internal": 99
                    }],
                    97: [function(e, t, r) {
                        r.f = Object.getOwnPropertySymbols
                    }, {}],
                    98: [function(e, t, r) {
                        var o = e("../internals/has"),
                            n = e("../internals/to-object"),
                            s = e("../internals/shared-key"),
                            e = e("../internals/correct-prototype-getter"),
                            i = s("IE_PROTO"),
                            a = Object.prototype;
                        t.exports = e ? Object.getPrototypeOf : function(e) {
                            return e = n(e), o(e, i) ? e[i] : "function" == typeof e.constructor && e instanceof e.constructor ? e.constructor.prototype : e instanceof Object ? a : null
                        }
                    }, {
                        "../internals/correct-prototype-getter": 35,
                        "../internals/has": 61,
                        "../internals/shared-key": 120,
                        "../internals/to-object": 139
                    }],
                    99: [function(e, t, r) {
                        var i = e("../internals/has"),
                            a = e("../internals/to-indexed-object"),
                            l = e("../internals/array-includes").indexOf,
                            c = e("../internals/hidden-keys");
                        t.exports = function(e, t) {
                            var r, o = a(e),
                                n = 0,
                                s = [];
                            for (r in o) !i(c, r) && i(o, r) && s.push(r);
                            for (; t.length > n;) i(o, r = t[n++]) && !~l(s, r) && s.push(r);
                            return s
                        }
                    }, {
                        "../internals/array-includes": 18,
                        "../internals/has": 61,
                        "../internals/hidden-keys": 62,
                        "../internals/to-indexed-object": 136
                    }],
                    100: [function(e, t, r) {
                        var o = e("../internals/object-keys-internal"),
                            n = e("../internals/enum-bug-keys");
                        t.exports = Object.keys || function(e) {
                            return o(e, n)
                        }
                    }, {
                        "../internals/enum-bug-keys": 49,
                        "../internals/object-keys-internal": 99
                    }],
                    101: [function(e, t, r) {
                        var o = {}.propertyIsEnumerable,
                            n = Object.getOwnPropertyDescriptor,
                            s = n && !o.call({
                                1: 2
                            }, 1);
                        r.f = s ? function(e) {
                            return !!(e = n(this, e)) && e.enumerable
                        } : o
                    }, {}],
                    102: [function(e, t, r) {
                        var n = e("../internals/an-object"),
                            s = e("../internals/a-possible-prototype");
                        t.exports = Object.setPrototypeOf || ("__proto__" in {} ? (() => {
                            var r, o = !1,
                                e = {};
                            try {
                                (r = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set).call(e, []), o = e instanceof Array
                            } catch (e) {}
                            return function(e, t) {
                                return n(e), s(t), o ? r.call(e, t) : e.__proto__ = t, e
                            }
                        })() : void 0)
                    }, {
                        "../internals/a-possible-prototype": 6,
                        "../internals/an-object": 10
                    }],
                    103: [function(e, t, r) {
                        function o(a) {
                            return function(e) {
                                for (var t, r = u(e), o = c(r), n = o.length, s = 0, i = []; s < n;) t = o[s++], l && !d.call(r, t) || i.push(a ? [t, r[t]] : r[t]);
                                return i
                            }
                        }
                        var l = e("../internals/descriptors"),
                            c = e("../internals/object-keys"),
                            u = e("../internals/to-indexed-object"),
                            d = e("../internals/object-property-is-enumerable").f;
                        t.exports = {
                            entries: o(!0),
                            values: o(!1)
                        }
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/object-keys": 100,
                        "../internals/object-property-is-enumerable": 101,
                        "../internals/to-indexed-object": 136
                    }],
                    104: [function(e, t, r) {
                        var o = e("../internals/to-string-tag-support"),
                            n = e("../internals/classof");
                        t.exports = o ? {}.toString : function() {
                            return "[object " + n(this) + "]"
                        }
                    }, {
                        "../internals/classof": 29,
                        "../internals/to-string-tag-support": 143
                    }],
                    105: [function(e, t, r) {
                        var o = e("../internals/get-built-in"),
                            n = e("../internals/object-get-own-property-names"),
                            s = e("../internals/object-get-own-property-symbols"),
                            i = e("../internals/an-object");
                        t.exports = o("Reflect", "ownKeys") || function(e) {
                            var t = n.f(i(e)),
                                r = s.f;
                            return r ? t.concat(r(e)) : t
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/get-built-in": 57,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/object-get-own-property-symbols": 97
                    }],
                    106: [function(e, t, r) {
                        e = e("../internals/global"), t.exports = e
                    }, {
                        "../internals/global": 60
                    }],
                    107: [function(e, t, r) {
                        t.exports = function(e) {
                            try {
                                return {
                                    error: !1,
                                    value: e()
                                }
                            } catch (e) {
                                return {
                                    error: !0,
                                    value: e
                                }
                            }
                        }
                    }, {}],
                    108: [function(e, t, r) {
                        var o = e("../internals/an-object"),
                            n = e("../internals/is-object"),
                            s = e("../internals/new-promise-capability");
                        t.exports = function(e, t) {
                            return o(e), n(t) && t.constructor === e ? t : ((0, (e = s.f(e)).resolve)(t), e.promise)
                        }
                    }, {
                        "../internals/an-object": 10,
                        "../internals/is-object": 75,
                        "../internals/new-promise-capability": 87
                    }],
                    109: [function(e, t, r) {
                        var n = e("../internals/redefine");
                        t.exports = function(e, t, r) {
                            for (var o in t) n(e, o, t[o], r);
                            return e
                        }
                    }, {
                        "../internals/redefine": 110
                    }],
                    110: [function(e, t, r) {
                        var i = e("../internals/global"),
                            a = e("../internals/create-non-enumerable-property"),
                            l = e("../internals/has"),
                            c = e("../internals/set-global"),
                            o = e("../internals/inspect-source"),
                            n = (e = e("../internals/internal-state")).get,
                            u = e.enforce,
                            d = String(String).split("String");
                        (t.exports = function(e, t, r, o) {
                            var n = !!o && !!o.unsafe,
                                s = !!o && !!o.enumerable,
                                o = !!o && !!o.noTargetGet;
                            "function" == typeof r && ("string" != typeof t || l(r, "name") || a(r, "name", t), u(r).source = d.join("string" == typeof t ? t : "")), e === i ? s ? e[t] = r : c(t, r) : (n ? !o && e[t] && (s = !0) : delete e[t], s ? e[t] = r : a(e, t, r))
                        })(Function.prototype, "toString", function() {
                            return "function" == typeof this && n(this).source || o(this)
                        })
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/inspect-source": 69,
                        "../internals/internal-state": 71,
                        "../internals/set-global": 117
                    }],
                    111: [function(e, t, r) {
                        var o = e("./classof-raw"),
                            n = e("./regexp-exec");
                        t.exports = function(e, t) {
                            var r = e.exec;
                            if ("function" == typeof r) {
                                if ("object" != typeof(r = r.call(e, t))) throw TypeError("RegExp exec method returned something other than an Object or null");
                                return r
                            }
                            if ("RegExp" !== o(e)) throw TypeError("RegExp#exec called on incompatible receiver");
                            return n.call(e, t)
                        }
                    }, {
                        "./classof-raw": 28,
                        "./regexp-exec": 112
                    }],
                    112: [function(e, t, r) {
                        var o, n, d = e("./regexp-flags"),
                            e = e("./regexp-sticky-helpers"),
                            h = RegExp.prototype.exec,
                            f = String.prototype.replace,
                            s = h,
                            p = (n = /b*/g, h.call(o = /a/, "a"), h.call(n, "a"), 0 !== o.lastIndex || 0 !== n.lastIndex),
                            m = e.UNSUPPORTED_Y || e.BROKEN_CARET,
                            y = void 0 !== /()??/.exec("")[1];
                        t.exports = p || y || m ? function(e) {
                            var t, r, o, n, s = this,
                                i = m && s.sticky,
                                a = d.call(s),
                                l = s.source,
                                c = 0,
                                u = e;
                            return i && (-1 === (a = a.replace("y", "")).indexOf("g") && (a += "g"), u = String(e).slice(s.lastIndex), 0 < s.lastIndex && (!s.multiline || (s.multiline, "\n" !== e[s.lastIndex - 1])) && (l = "(?: " + l + ")", u = " " + u, c++), r = new RegExp("^(?:" + l + ")", a)), y && (r = new RegExp("^" + l + "$(?!\\s)", a)), p && (t = s.lastIndex), o = h.call(i ? r : s, u), i ? o ? (o.input = o.input.slice(c), o[0] = o[0].slice(c), o.index = s.lastIndex, s.lastIndex += o[0].length) : s.lastIndex = 0 : p && o && (s.lastIndex = s.global ? o.index + o[0].length : t), y && o && 1 < o.length && f.call(o[0], r, function() {
                                for (n = 1; n < arguments.length - 2; n++) void 0 === arguments[n] && (o[n] = void 0)
                            }), o
                        } : s
                    }, {
                        "./regexp-flags": 113,
                        "./regexp-sticky-helpers": 114
                    }],
                    113: [function(e, t, r) {
                        var o = e("../internals/an-object");
                        t.exports = function() {
                            var e = o(this),
                                t = "";
                            return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), e.dotAll && (t += "s"), e.unicode && (t += "u"), e.sticky && (t += "y"), t
                        }
                    }, {
                        "../internals/an-object": 10
                    }],
                    114: [function(e, t, r) {
                        function o(e, t) {
                            return RegExp(e, t)
                        }
                        e = e("./fails"), r.UNSUPPORTED_Y = e(function() {
                            var e = o("a", "y");
                            return e.lastIndex = 2, null != e.exec("abcd")
                        }), r.BROKEN_CARET = e(function() {
                            var e = o("^r", "gy");
                            return e.lastIndex = 2, null != e.exec("str")
                        })
                    }, {
                        "./fails": 51
                    }],
                    115: [function(e, t, r) {
                        t.exports = function(e) {
                            if (null == e) throw TypeError("Can't call method on " + e);
                            return e
                        }
                    }, {}],
                    116: [function(e, t, r) {
                        t.exports = Object.is || function(e, t) {
                            return e === t ? 0 !== e || 1 / e == 1 / t : e != e && t != t
                        }
                    }, {}],
                    117: [function(e, t, r) {
                        var o = e("../internals/global"),
                            n = e("../internals/create-non-enumerable-property");
                        t.exports = function(t, r) {
                            try {
                                n(o, t, r)
                            } catch (e) {
                                o[t] = r
                            }
                            return r
                        }
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/global": 60
                    }],
                    118: [function(e, t, r) {
                        var o = e("../internals/get-built-in"),
                            n = e("../internals/object-define-property"),
                            s = e("../internals/well-known-symbol"),
                            i = e("../internals/descriptors"),
                            a = s("species");
                        t.exports = function(e) {
                            var e = o(e),
                                t = n.f;
                            i && e && !e[a] && t(e, a, {
                                configurable: !0,
                                get: function() {
                                    return this
                                }
                            })
                        }
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/get-built-in": 57,
                        "../internals/object-define-property": 93,
                        "../internals/well-known-symbol": 150
                    }],
                    119: [function(e, t, r) {
                        var o = e("../internals/object-define-property").f,
                            n = e("../internals/has"),
                            s = e("../internals/well-known-symbol")("toStringTag");
                        t.exports = function(e, t, r) {
                            e && !n(e = r ? e : e.prototype, s) && o(e, s, {
                                configurable: !0,
                                value: t
                            })
                        }
                    }, {
                        "../internals/has": 61,
                        "../internals/object-define-property": 93,
                        "../internals/well-known-symbol": 150
                    }],
                    120: [function(e, t, r) {
                        var o = e("../internals/shared"),
                            n = e("../internals/uid"),
                            s = o("keys");
                        t.exports = function(e) {
                            return s[e] || (s[e] = n(e))
                        }
                    }, {
                        "../internals/shared": 122,
                        "../internals/uid": 147
                    }],
                    121: [function(e, t, r) {
                        var o = e("../internals/global"),
                            e = e("../internals/set-global"),
                            n = "__core-js_shared__",
                            o = o[n] || e(n, {});
                        t.exports = o
                    }, {
                        "../internals/global": 60,
                        "../internals/set-global": 117
                    }],
                    122: [function(e, t, r) {
                        var o = e("../internals/is-pure"),
                            n = e("../internals/shared-store");
                        (t.exports = function(e, t) {
                            return n[e] || (n[e] = void 0 !== t ? t : {})
                        })("versions", []).push({
                            version: "3.6.5",
                            mode: o ? "pure" : "global",
                            copyright: "© 2020 Denis Pushkarev (zloirock.ru)"
                        })
                    }, {
                        "../internals/is-pure": 76,
                        "../internals/shared-store": 121
                    }],
                    123: [function(e, t, r) {
                        var o = e("../internals/an-object"),
                            n = e("../internals/a-function"),
                            s = e("../internals/well-known-symbol")("species");
                        t.exports = function(e, t) {
                            return void 0 === (e = o(e).constructor) || null == (e = o(e)[s]) ? t : n(e)
                        }
                    }, {
                        "../internals/a-function": 5,
                        "../internals/an-object": 10,
                        "../internals/well-known-symbol": 150
                    }],
                    124: [function(e, t, r) {
                        var o = e("../internals/fails");
                        t.exports = function(t) {
                            return o(function() {
                                var e = "" [t]('"');
                                return e !== e.toLowerCase() || 3 < e.split('"').length
                            })
                        }
                    }, {
                        "../internals/fails": 51
                    }],
                    125: [function(e, t, r) {
                        function o(n) {
                            return function(e, t) {
                                var r, e = String(i(e)),
                                    t = s(t),
                                    o = e.length;
                                return t < 0 || o <= t ? n ? "" : void 0 : (r = e.charCodeAt(t)) < 55296 || 56319 < r || t + 1 === o || (o = e.charCodeAt(t + 1)) < 56320 || 57343 < o ? n ? e.charAt(t) : r : n ? e.slice(t, t + 2) : o - 56320 + (r - 55296 << 10) + 65536
                            }
                        }
                        var s = e("../internals/to-integer"),
                            i = e("../internals/require-object-coercible");
                        t.exports = {
                            codeAt: o(!1),
                            charAt: o(!0)
                        }
                    }, {
                        "../internals/require-object-coercible": 115,
                        "../internals/to-integer": 137
                    }],
                    126: [function(e, t, r) {
                        e = e("../internals/engine-user-agent"), t.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(e)
                    }, {
                        "../internals/engine-user-agent": 47
                    }],
                    127: [function(e, t, r) {
                        function o(n) {
                            return function(e, t, r) {
                                var o = (e = String(a(e))).length,
                                    r = void 0 === r ? " " : String(r);
                                return (t = s(t)) <= o || "" == r ? e : ((o = i.call(r, l((t -= o) / r.length))).length > t && (o = o.slice(0, t)), n ? e + o : o + e)
                            }
                        }
                        var s = e("../internals/to-length"),
                            i = e("../internals/string-repeat"),
                            a = e("../internals/require-object-coercible"),
                            l = Math.ceil;
                        t.exports = {
                            start: o(!1),
                            end: o(!0)
                        }
                    }, {
                        "../internals/require-object-coercible": 115,
                        "../internals/string-repeat": 129,
                        "../internals/to-length": 138
                    }],
                    128: [function(e, t, r) {
                        function g(e) {
                            return e + 22 + 75 * (e < 26)
                        }

                        function s(e) {
                            for (var t, r = [], o = (e = (e => {
                                    for (var t = [], r = 0, o = e.length; r < o;) {
                                        var n, s = e.charCodeAt(r++);
                                        55296 <= s && s <= 56319 && r < o ? 56320 == (64512 & (n = e.charCodeAt(r++))) ? t.push(((1023 & s) << 10) + (1023 & n) + 65536) : (t.push(s), r--) : t.push(s)
                                    }
                                    return t
                                })(e)).length, n = 128, s = 0, i = 72, a = 0; a < e.length; a++)(t = e[a]) < 128 && r.push(x(t));
                            var l = r.length,
                                c = l;
                            for (l && r.push("-"); c < o;) {
                                for (var u = v, a = 0; a < e.length; a++) n <= (t = e[a]) && t < u && (u = t);
                                var d = c + 1;
                                if (u - n > _((v - s) / d)) throw RangeError(b);
                                for (s += (u - n) * d, n = u, a = 0; a < e.length; a++) {
                                    if ((t = e[a]) < n && ++s > v) throw RangeError(b);
                                    if (t == n) {
                                        for (var h = s, f = 36;; f += 36) {
                                            var p = f <= i ? 1 : i + 26 <= f ? 26 : f - i;
                                            if (h < p) break;
                                            var m = h - p,
                                                y = 36 - p;
                                            r.push(x(g(p + m % y))), h = _(m / y)
                                        }
                                        r.push(x(g(h))), i = ((e, t) => {
                                            var r = 0;
                                            for (e = c == l ? _(e / 700) : e >> 1, e += _(e / t); 455 < e; r += 36) e = _(e / 35);
                                            return _(r + 36 * e / (e + 38))
                                        })(s, d), s = 0, ++c
                                    }
                                }++s, ++n
                            }
                            return r.join("")
                        }
                        var v = 2147483647,
                            i = /[^\0-\u007E]/,
                            a = /[.\u3002\uFF0E\uFF61]/g,
                            b = "Overflow: input needs wider integers to process",
                            _ = Math.floor,
                            x = String.fromCharCode;
                        t.exports = function(e) {
                            for (var t, r = [], o = e.toLowerCase().replace(a, ".").split("."), n = 0; n < o.length; n++) t = o[n], r.push(i.test(t) ? "xn--" + s(t) : t);
                            return r.join(".")
                        }
                    }, {}],
                    129: [function(e, t, r) {
                        var n = e("../internals/to-integer"),
                            s = e("../internals/require-object-coercible");
                        t.exports = "".repeat || function(e) {
                            var t = String(s(this)),
                                r = "",
                                o = n(e);
                            if (o < 0 || o == 1 / 0) throw RangeError("Wrong number of repetitions");
                            for (; 0 < o;
                                (o >>>= 1) && (t += t)) 1 & o && (r += t);
                            return r
                        }
                    }, {
                        "../internals/require-object-coercible": 115,
                        "../internals/to-integer": 137
                    }],
                    130: [function(e, t, r) {
                        var o = e("../internals/fails"),
                            n = e("../internals/whitespaces");
                        t.exports = function(e) {
                            return o(function() {
                                return !!n[e]() || "​᠎" != "​᠎" [e]() || n[e].name !== e
                            })
                        }
                    }, {
                        "../internals/fails": 51,
                        "../internals/whitespaces": 151
                    }],
                    131: [function(e, t, r) {
                        function o(t) {
                            return function(e) {
                                return e = String(n(e)), 1 & t && (e = e.replace(s, "")), 2 & t ? e.replace(i, "") : e
                            }
                        }
                        var n = e("../internals/require-object-coercible"),
                            e = "[" + e("../internals/whitespaces") + "]",
                            s = RegExp("^" + e + e + "*"),
                            i = RegExp(e + e + "*$");
                        t.exports = {
                            start: o(1),
                            end: o(2),
                            trim: o(3)
                        }
                    }, {
                        "../internals/require-object-coercible": 115,
                        "../internals/whitespaces": 151
                    }],
                    132: [function(e, t, r) {
                        function o(e) {
                            return function() {
                                w(e)
                            }
                        }

                        function n(e) {
                            w(e.data)
                        }

                        function s(e) {
                            a.postMessage(e + "", f.protocol + "//" + f.host)
                        }
                        var i, a = e("../internals/global"),
                            l = e("../internals/fails"),
                            c = e("../internals/classof-raw"),
                            u = e("../internals/function-bind-context"),
                            d = e("../internals/html"),
                            h = e("../internals/document-create-element"),
                            e = e("../internals/engine-is-ios"),
                            f = a.location,
                            p = a.setImmediate,
                            m = a.clearImmediate,
                            y = a.process,
                            g = a.MessageChannel,
                            v = a.Dispatch,
                            b = 0,
                            _ = {},
                            x = "onreadystatechange",
                            w = function(e) {
                                var t;
                                _.hasOwnProperty(e) && (t = _[e], delete _[e], t())
                            };
                        p && m || (p = function(e) {
                            for (var t = [], r = 1; r < arguments.length;) t.push(arguments[r++]);
                            return _[++b] = function() {
                                ("function" == typeof e ? e : Function(e)).apply(void 0, t)
                            }, i(b), b
                        }, m = function(e) {
                            delete _[e]
                        }, "process" == c(y) ? i = function(e) {
                            y.nextTick(o(e))
                        } : v && v.now ? i = function(e) {
                            v.now(o(e))
                        } : g && !e ? (e = (c = new g).port2, c.port1.onmessage = n, i = u(e.postMessage, e, 1)) : !a.addEventListener || "function" != typeof postMessage || a.importScripts || l(s) || "file:" === f.protocol ? i = x in h("script") ? function(e) {
                            d.appendChild(h("script"))[x] = function() {
                                d.removeChild(this), w(e)
                            }
                        } : function(e) {
                            setTimeout(o(e), 0)
                        } : (i = s, a.addEventListener("message", n, !1))), t.exports = {
                            set: p,
                            clear: m
                        }
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/document-create-element": 44,
                        "../internals/engine-is-ios": 46,
                        "../internals/fails": 51,
                        "../internals/function-bind-context": 55,
                        "../internals/global": 60,
                        "../internals/html": 64
                    }],
                    133: [function(e, t, r) {
                        var o = e("../internals/classof-raw");
                        t.exports = function(e) {
                            if ("number" != typeof e && "Number" != o(e)) throw TypeError("Incorrect invocation");
                            return +e
                        }
                    }, {
                        "../internals/classof-raw": 28
                    }],
                    134: [function(e, t, r) {
                        var o = e("../internals/to-integer"),
                            n = Math.max,
                            s = Math.min;
                        t.exports = function(e, t) {
                            return (e = o(e)) < 0 ? n(e + t, 0) : s(e, t)
                        }
                    }, {
                        "../internals/to-integer": 137
                    }],
                    135: [function(e, t, r) {
                        var o = e("../internals/to-integer"),
                            n = e("../internals/to-length");
                        t.exports = function(e) {
                            if (void 0 === e) return 0;
                            var e = o(e),
                                t = n(e);
                            if (e !== t) throw RangeError("Wrong length or index");
                            return t
                        }
                    }, {
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138
                    }],
                    136: [function(e, t, r) {
                        var o = e("../internals/indexed-object"),
                            n = e("../internals/require-object-coercible");
                        t.exports = function(e) {
                            return o(n(e))
                        }
                    }, {
                        "../internals/indexed-object": 67,
                        "../internals/require-object-coercible": 115
                    }],
                    137: [function(e, t, r) {
                        var o = Math.ceil,
                            n = Math.floor;
                        t.exports = function(e) {
                            return isNaN(e = +e) ? 0 : (0 < e ? n : o)(e)
                        }
                    }, {}],
                    138: [function(e, t, r) {
                        var o = e("../internals/to-integer"),
                            n = Math.min;
                        t.exports = function(e) {
                            return 0 < e ? n(o(e), 9007199254740991) : 0
                        }
                    }, {
                        "../internals/to-integer": 137
                    }],
                    139: [function(e, t, r) {
                        var o = e("../internals/require-object-coercible");
                        t.exports = function(e) {
                            return Object(o(e))
                        }
                    }, {
                        "../internals/require-object-coercible": 115
                    }],
                    140: [function(e, t, r) {
                        var o = e("../internals/to-positive-integer");
                        t.exports = function(e, t) {
                            if ((e = o(e)) % t) throw RangeError("Wrong offset");
                            return e
                        }
                    }, {
                        "../internals/to-positive-integer": 141
                    }],
                    141: [function(e, t, r) {
                        var o = e("../internals/to-integer");
                        t.exports = function(e) {
                            if ((e = o(e)) < 0) throw RangeError("The argument can't be less than 0");
                            return e
                        }
                    }, {
                        "../internals/to-integer": 137
                    }],
                    142: [function(e, t, r) {
                        var n = e("../internals/is-object");
                        t.exports = function(e, t) {
                            if (!n(e)) return e;
                            var r, o;
                            if (t && "function" == typeof(r = e.toString) && !n(o = r.call(e)) || "function" == typeof(r = e.valueOf) && !n(o = r.call(e)) || !t && "function" == typeof(r = e.toString) && !n(o = r.call(e))) return o;
                            throw TypeError("Can't convert object to primitive value")
                        }
                    }, {
                        "../internals/is-object": 75
                    }],
                    143: [function(e, t, r) {
                        var o = {};
                        o[e("../internals/well-known-symbol")("toStringTag")] = "z", t.exports = "[object z]" === String(o)
                    }, {
                        "../internals/well-known-symbol": 150
                    }],
                    144: [function(e, t, D) {
                        function m(e, t) {
                            for (var r = 0, o = t.length, n = new(K(e))(o); r < o;) n[r] = t[r++];
                            return n
                        }

                        function r(e, t) {
                            E(e, t, {
                                get: function() {
                                    return T(this)[t]
                                }
                            })
                        }

                        function y(e) {
                            return e instanceof M || "ArrayBuffer" == (e = B(e)) || "SharedArrayBuffer" == e
                        }

                        function o(e, t) {
                            return P(e) && "symbol" != typeof t && t in e && String(+t) == String(t)
                        }

                        function n(e, t) {
                            return o(e, t = d(t, !0)) ? N(2, e[t]) : X(e, t)
                        }

                        function s(e, t, r) {
                            return !(o(e, t = d(t, !0)) && x(r) && h(r, "value")) || h(r, "get") || h(r, "set") || r.configurable || h(r, "writable") && !r.writable || h(r, "enumerable") && !r.enumerable ? E(e, t, r) : (e[t] = r.value, e)
                        }
                        var i = e("../internals/export"),
                            a = e("../internals/global"),
                            l = e("../internals/descriptors"),
                            F = e("../internals/typed-array-constructors-require-wrappers"),
                            c = e("../internals/array-buffer-view-core"),
                            u = e("../internals/array-buffer"),
                            g = e("../internals/an-instance"),
                            N = e("../internals/create-property-descriptor"),
                            v = e("../internals/create-non-enumerable-property"),
                            U = e("../internals/to-length"),
                            b = e("../internals/to-index"),
                            _ = e("../internals/to-offset"),
                            d = e("../internals/to-primitive"),
                            h = e("../internals/has"),
                            B = e("../internals/classof"),
                            x = e("../internals/is-object"),
                            G = e("../internals/object-create"),
                            w = e("../internals/object-set-prototype-of"),
                            V = e("../internals/object-get-own-property-names").f,
                            j = e("../internals/typed-array-from"),
                            z = e("../internals/array-iteration").forEach,
                            H = e("../internals/set-species"),
                            f = e("../internals/object-define-property"),
                            p = e("../internals/object-get-own-property-descriptor"),
                            S = e("../internals/internal-state"),
                            W = e("../internals/inherit-if-required"),
                            T = S.get,
                            q = S.set,
                            E = f.f,
                            X = p.f,
                            Y = Math.round,
                            k = a.RangeError,
                            M = u.ArrayBuffer,
                            Z = u.DataView,
                            O = c.NATIVE_ARRAY_BUFFER_VIEWS,
                            C = c.TYPED_ARRAY_TAG,
                            A = c.TypedArray,
                            L = c.TypedArrayPrototype,
                            K = c.aTypedArrayConstructor,
                            P = c.isTypedArray,
                            I = "BYTES_PER_ELEMENT",
                            R = "Wrong length";
                        l ? (O || (p.f = n, f.f = s, r(L, "buffer"), r(L, "byteOffset"), r(L, "byteLength"), r(L, "length")), i({
                            target: "Object",
                            stat: !0,
                            forced: !O
                        }, {
                            getOwnPropertyDescriptor: n,
                            defineProperty: s
                        }), t.exports = function(e, t, c) {
                            var u = e.match(/\d+$/)[0] / 8,
                                d = e + (c ? "Clamped" : "") + "Array",
                                h = "get" + e,
                                f = "set" + e,
                                n = a[d],
                                p = n,
                                e = p && p.prototype,
                                r = {};
                            O ? F && (p = t(function(e, t, r, o) {
                                return g(e, p, d), W(x(t) ? y(t) ? void 0 !== o ? new n(t, _(r, u), o) : void 0 !== r ? new n(t, _(r, u)) : new n(t) : P(t) ? m(p, t) : j.call(p, t) : new n(b(t)), e, p)
                            }), w && w(p, A), z(V(n), function(e) {
                                e in p || v(p, e, n[e])
                            }), p.prototype = e) : (p = t(function(e, t, r, o) {
                                g(e, p, d);
                                var n, s, i = 0,
                                    a = 0;
                                if (x(t)) {
                                    if (!y(t)) return P(t) ? m(p, t) : j.call(p, t);
                                    var l = t,
                                        a = _(r, u),
                                        r = t.byteLength;
                                    if (void 0 === o) {
                                        if (r % u) throw k(R);
                                        if ((n = r - a) < 0) throw k(R)
                                    } else if (r < (n = U(o) * u) + a) throw k(R);
                                    s = n / u
                                } else s = b(t), l = new M(n = s * u);
                                for (q(e, {
                                        buffer: l,
                                        byteOffset: a,
                                        byteLength: n,
                                        length: s,
                                        view: new Z(l)
                                    }); i < s;)((e, o) => {
                                    E(e, o, {
                                        get: function() {
                                            var e = this,
                                                t = o;
                                            return (e = T(e)).view[h](t * u + e.byteOffset, !0)
                                        },
                                        set: function(e) {
                                            var t = o,
                                                r = T(r = this);
                                            c && (e = (e = Y(e)) < 0 ? 0 : 255 < e ? 255 : 255 & e), r.view[f](t * u + r.byteOffset, e, !0)
                                        },
                                        enumerable: !0
                                    })
                                })(e, i++)
                            }), w && w(p, A), e = p.prototype = G(L)), e.constructor !== p && v(e, "constructor", p), C && v(e, C, d), i({
                                global: !0,
                                forced: (r[d] = p) != n,
                                sham: !O
                            }, r), I in p || v(p, I, u), I in e || v(e, I, u), H(d)
                        }) : t.exports = function() {}
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/array-buffer": 13,
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19,
                        "../internals/classof": 29,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/create-property-descriptor": 39,
                        "../internals/descriptors": 43,
                        "../internals/export": 50,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/inherit-if-required": 68,
                        "../internals/internal-state": 71,
                        "../internals/is-object": 75,
                        "../internals/object-create": 91,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/object-set-prototype-of": 102,
                        "../internals/set-species": 118,
                        "../internals/to-index": 135,
                        "../internals/to-length": 138,
                        "../internals/to-offset": 140,
                        "../internals/to-primitive": 142,
                        "../internals/typed-array-constructors-require-wrappers": 145,
                        "../internals/typed-array-from": 146
                    }],
                    145: [function(e, t, r) {
                        var o = e("../internals/global"),
                            n = e("../internals/fails"),
                            s = e("../internals/check-correctness-of-iteration"),
                            e = e("../internals/array-buffer-view-core").NATIVE_ARRAY_BUFFER_VIEWS,
                            i = o.ArrayBuffer,
                            a = o.Int8Array;
                        t.exports = !e || !n(function() {
                            a(1)
                        }) || !n(function() {
                            new a(-1)
                        }) || !s(function(e) {
                            new a, new a(null), new a(1.5), new a(e)
                        }, !0) || n(function() {
                            return 1 !== new a(new i(2), 1, void 0).length
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/check-correctness-of-iteration": 27,
                        "../internals/fails": 51,
                        "../internals/global": 60
                    }],
                    146: [function(e, t, r) {
                        var d = e("../internals/to-object"),
                            h = e("../internals/to-length"),
                            f = e("../internals/get-iterator-method"),
                            p = e("../internals/is-array-iterator-method"),
                            m = e("../internals/function-bind-context"),
                            y = e("../internals/array-buffer-view-core").aTypedArrayConstructor;
                        t.exports = function(e) {
                            var t, r, o, n, s, i, a = d(e),
                                e = arguments.length,
                                l = 1 < e ? arguments[1] : void 0,
                                c = void 0 !== l,
                                u = f(a);
                            if (null != u && !p(u))
                                for (i = (s = u.call(a)).next, a = []; !(n = i.call(s)).done;) a.push(n.value);
                            for (c && 2 < e && (l = m(l, arguments[2], 2)), r = h(a.length), o = new(y(this))(r), t = 0; t < r; t++) o[t] = c ? l(a[t], t) : a[t];
                            return o
                        }
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/function-bind-context": 55,
                        "../internals/get-iterator-method": 58,
                        "../internals/is-array-iterator-method": 72,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    147: [function(e, t, r) {
                        var o = 0,
                            n = Math.random();
                        t.exports = function(e) {
                            return "Symbol(" + String(void 0 === e ? "" : e) + ")_" + (++o + n).toString(36)
                        }
                    }, {}],
                    148: [function(e, t, r) {
                        e = e("../internals/native-symbol"), t.exports = e && !Symbol.sham && "symbol" == typeof Symbol.iterator
                    }, {
                        "../internals/native-symbol": 84
                    }],
                    149: [function(e, t, r) {
                        e = e("../internals/well-known-symbol"), r.f = e
                    }, {
                        "../internals/well-known-symbol": 150
                    }],
                    150: [function(e, t, r) {
                        var o = e("../internals/global"),
                            n = e("../internals/shared"),
                            s = e("../internals/has"),
                            i = e("../internals/uid"),
                            a = e("../internals/native-symbol"),
                            e = e("../internals/use-symbol-as-uid"),
                            l = n("wks"),
                            c = o.Symbol,
                            u = e ? c : c && c.withoutSetter || i;
                        t.exports = function(e) {
                            return s(l, e) || (a && s(c, e) ? l[e] = c[e] : l[e] = u("Symbol." + e)), l[e]
                        }
                    }, {
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/native-symbol": 84,
                        "../internals/shared": 122,
                        "../internals/uid": 147,
                        "../internals/use-symbol-as-uid": 148
                    }],
                    151: [function(e, t, r) {
                        t.exports = "\t\n\v\f\r                　\u2028\u2029\ufeff"
                    }, {}],
                    152: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/global"),
                            s = e("../internals/array-buffer"),
                            e = e("../internals/set-species"),
                            i = "ArrayBuffer",
                            s = s[i];
                        o({
                            global: !0,
                            forced: n[i] !== s
                        }, {
                            ArrayBuffer: s
                        }), e(i)
                    }, {
                        "../internals/array-buffer": 13,
                        "../internals/export": 50,
                        "../internals/global": 60,
                        "../internals/set-species": 118
                    }],
                    153: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/fails"),
                            d = e("../internals/is-array"),
                            h = e("../internals/is-object"),
                            f = e("../internals/to-object"),
                            p = e("../internals/to-length"),
                            m = e("../internals/create-property"),
                            y = e("../internals/array-species-create"),
                            s = e("../internals/array-method-has-species-support"),
                            i = e("../internals/well-known-symbol"),
                            e = e("../internals/engine-v8-version"),
                            g = i("isConcatSpreadable"),
                            v = 9007199254740991,
                            b = "Maximum allowed index exceeded",
                            i = 51 <= e || !n(function() {
                                var e = [];
                                return e[g] = !1, e.concat()[0] !== e
                            }),
                            e = s("concat");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !i || !e
                        }, {
                            concat: function(e) {
                                for (var t, r, o, n, s, i = f(this), a = y(i, 0), l = 0, c = -1, u = arguments.length; c < u; c++)
                                    if (h(n = o = -1 === c ? i : arguments[c]) && (void 0 !== (s = n[g]) ? s : d(n))) {
                                        if (r = p(o.length), v < l + r) throw TypeError(b);
                                        for (t = 0; t < r; t++, l++) t in o && m(a, l, o[t])
                                    } else {
                                        if (v <= l) throw TypeError(b);
                                        m(a, l++, o)
                                    } return a.length = l, a
                            }
                        })
                    }, {
                        "../internals/array-method-has-species-support": 21,
                        "../internals/array-species-create": 25,
                        "../internals/create-property": 40,
                        "../internals/engine-v8-version": 48,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/is-array": 73,
                        "../internals/is-object": 75,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139,
                        "../internals/well-known-symbol": 150
                    }],
                    154: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-copy-within"),
                            e = e("../internals/add-to-unscopables");
                        o({
                            target: "Array",
                            proto: !0
                        }, {
                            copyWithin: n
                        }), e("copyWithin")
                    }, {
                        "../internals/add-to-unscopables": 7,
                        "../internals/array-copy-within": 14,
                        "../internals/export": 50
                    }],
                    155: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-iteration").every,
                            s = e("../internals/array-method-is-strict"),
                            e = e("../internals/array-method-uses-to-length"),
                            s = s("every"),
                            e = e("every");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !s || !e
                        }, {
                            every: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/array-iteration": 19,
                        "../internals/array-method-is-strict": 22,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    156: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-fill"),
                            e = e("../internals/add-to-unscopables");
                        o({
                            target: "Array",
                            proto: !0
                        }, {
                            fill: n
                        }), e("fill")
                    }, {
                        "../internals/add-to-unscopables": 7,
                        "../internals/array-fill": 15,
                        "../internals/export": 50
                    }],
                    157: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-iteration").filter,
                            s = e("../internals/array-method-has-species-support"),
                            e = e("../internals/array-method-uses-to-length"),
                            s = s("filter"),
                            e = e("filter");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !s || !e
                        }, {
                            filter: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/array-iteration": 19,
                        "../internals/array-method-has-species-support": 21,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    158: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-iteration").findIndex,
                            s = e("../internals/add-to-unscopables"),
                            e = e("../internals/array-method-uses-to-length"),
                            i = "findIndex",
                            a = !0,
                            e = e(i);
                        i in [] && Array(1)[i](function() {
                            a = !1
                        }), o({
                            target: "Array",
                            proto: !0,
                            forced: a || !e
                        }, {
                            findIndex: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        }), s(i)
                    }, {
                        "../internals/add-to-unscopables": 7,
                        "../internals/array-iteration": 19,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    159: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/flatten-into-array"),
                            s = e("../internals/to-object"),
                            i = e("../internals/to-length"),
                            a = e("../internals/a-function"),
                            l = e("../internals/array-species-create");
                        o({
                            target: "Array",
                            proto: !0
                        }, {
                            flatMap: function(e) {
                                var t, r = s(this),
                                    o = i(r.length);
                                return a(e), (t = l(r, 0)).length = n(t, r, r, o, 0, 1, e, 1 < arguments.length ? arguments[1] : void 0), t
                            }
                        })
                    }, {
                        "../internals/a-function": 5,
                        "../internals/array-species-create": 25,
                        "../internals/export": 50,
                        "../internals/flatten-into-array": 53,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    160: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/flatten-into-array"),
                            s = e("../internals/to-object"),
                            i = e("../internals/to-length"),
                            a = e("../internals/to-integer"),
                            l = e("../internals/array-species-create");
                        o({
                            target: "Array",
                            proto: !0
                        }, {
                            flat: function() {
                                var e = arguments.length ? arguments[0] : void 0,
                                    t = s(this),
                                    r = i(t.length),
                                    o = l(t, 0);
                                return o.length = n(o, t, t, r, 0, void 0 === e ? 1 : a(e)), o
                            }
                        })
                    }, {
                        "../internals/array-species-create": 25,
                        "../internals/export": 50,
                        "../internals/flatten-into-array": 53,
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    161: [function(e, t, r) {
                        var o = e("../internals/export"),
                            e = e("../internals/array-for-each");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: [].forEach != e
                        }, {
                            forEach: e
                        })
                    }, {
                        "../internals/array-for-each": 16,
                        "../internals/export": 50
                    }],
                    162: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-from");
                        o({
                            target: "Array",
                            stat: !0,
                            forced: !e("../internals/check-correctness-of-iteration")(function(e) {
                                Array.from(e)
                            })
                        }, {
                            from: n
                        })
                    }, {
                        "../internals/array-from": 17,
                        "../internals/check-correctness-of-iteration": 27,
                        "../internals/export": 50
                    }],
                    163: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-includes").includes,
                            s = e("../internals/add-to-unscopables");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !e("../internals/array-method-uses-to-length")("indexOf", {
                                ACCESSORS: !0,
                                1: 0
                            })
                        }, {
                            includes: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        }), s("includes")
                    }, {
                        "../internals/add-to-unscopables": 7,
                        "../internals/array-includes": 18,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    164: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-includes").indexOf,
                            s = e("../internals/array-method-is-strict"),
                            e = e("../internals/array-method-uses-to-length"),
                            i = [].indexOf,
                            a = !!i && 1 / [1].indexOf(1, -0) < 0,
                            s = s("indexOf"),
                            e = e("indexOf", {
                                ACCESSORS: !0,
                                1: 0
                            });
                        o({
                            target: "Array",
                            proto: !0,
                            forced: a || !s || !e
                        }, {
                            indexOf: function(e) {
                                return a ? i.apply(this, arguments) || 0 : n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/array-includes": 18,
                        "../internals/array-method-is-strict": 22,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    165: [function(e, t, r) {
                        var o = e("../internals/to-indexed-object"),
                            n = e("../internals/add-to-unscopables"),
                            s = e("../internals/iterators"),
                            i = e("../internals/internal-state"),
                            e = e("../internals/define-iterator"),
                            a = "Array Iterator",
                            l = i.set,
                            c = i.getterFor(a);
                        t.exports = e(Array, "Array", function(e, t) {
                            l(this, {
                                type: a,
                                target: o(e),
                                index: 0,
                                kind: t
                            })
                        }, function() {
                            var e = c(this),
                                t = e.target,
                                r = e.kind,
                                o = e.index++;
                            return !t || o >= t.length ? {
                                value: e.target = void 0,
                                done: !0
                            } : "keys" == r ? {
                                value: o,
                                done: !1
                            } : "values" == r ? {
                                value: t[o],
                                done: !1
                            } : {
                                value: [o, t[o]],
                                done: !1
                            }
                        }, "values"), s.Arguments = s.Array, n("keys"), n("values"), n("entries")
                    }, {
                        "../internals/add-to-unscopables": 7,
                        "../internals/define-iterator": 41,
                        "../internals/internal-state": 71,
                        "../internals/iterators": 80,
                        "../internals/to-indexed-object": 136
                    }],
                    166: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/indexed-object"),
                            s = e("../internals/to-indexed-object"),
                            e = e("../internals/array-method-is-strict"),
                            i = [].join,
                            n = n != Object,
                            e = e("join", ",");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: n || !e
                        }, {
                            join: function(e) {
                                return i.call(s(this), void 0 === e ? "," : e)
                            }
                        })
                    }, {
                        "../internals/array-method-is-strict": 22,
                        "../internals/export": 50,
                        "../internals/indexed-object": 67,
                        "../internals/to-indexed-object": 136
                    }],
                    167: [function(e, t, r) {
                        e("../internals/export")({
                            target: "Array",
                            proto: !0,
                            forced: (e = e("../internals/array-last-index-of")) !== [].lastIndexOf
                        }, {
                            lastIndexOf: e
                        })
                    }, {
                        "../internals/array-last-index-of": 20,
                        "../internals/export": 50
                    }],
                    168: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-iteration").map,
                            s = e("../internals/array-method-has-species-support"),
                            e = e("../internals/array-method-uses-to-length"),
                            s = s("map"),
                            e = e("map");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !s || !e
                        }, {
                            map: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/array-iteration": 19,
                        "../internals/array-method-has-species-support": 21,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    169: [function(e, t, r) {
                        var o = e("../internals/export"),
                            c = e("../internals/is-object"),
                            u = e("../internals/is-array"),
                            d = e("../internals/to-absolute-index"),
                            h = e("../internals/to-length"),
                            f = e("../internals/to-indexed-object"),
                            p = e("../internals/create-property"),
                            n = e("../internals/well-known-symbol"),
                            s = e("../internals/array-method-has-species-support"),
                            e = e("../internals/array-method-uses-to-length"),
                            s = s("slice"),
                            e = e("slice", {
                                ACCESSORS: !0,
                                0: 0,
                                1: 2
                            }),
                            m = n("species"),
                            y = [].slice,
                            g = Math.max;
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !s || !e
                        }, {
                            slice: function(e, t) {
                                var r, o, n, s = f(this),
                                    i = h(s.length),
                                    a = d(e, i),
                                    l = d(void 0 === t ? i : t, i);
                                if (u(s) && ((r = "function" == typeof(r = s.constructor) && (r === Array || u(r.prototype)) || c(r) && null === (r = r[m]) ? void 0 : r) === Array || void 0 === r)) return y.call(s, a, l);
                                for (o = new(void 0 === r ? Array : r)(g(l - a, 0)), n = 0; a < l; a++, n++) a in s && p(o, n, s[a]);
                                return o.length = n, o
                            }
                        })
                    }, {
                        "../internals/array-method-has-species-support": 21,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/create-property": 40,
                        "../internals/export": 50,
                        "../internals/is-array": 73,
                        "../internals/is-object": 75,
                        "../internals/to-absolute-index": 134,
                        "../internals/to-indexed-object": 136,
                        "../internals/to-length": 138,
                        "../internals/well-known-symbol": 150
                    }],
                    170: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/array-iteration").some,
                            s = e("../internals/array-method-is-strict"),
                            e = e("../internals/array-method-uses-to-length"),
                            s = s("some"),
                            e = e("some");
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !s || !e
                        }, {
                            some: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/array-iteration": 19,
                        "../internals/array-method-is-strict": 22,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/export": 50
                    }],
                    171: [function(e, t, r) {
                        var o = e("../internals/export"),
                            d = e("../internals/to-absolute-index"),
                            h = e("../internals/to-integer"),
                            f = e("../internals/to-length"),
                            p = e("../internals/to-object"),
                            m = e("../internals/array-species-create"),
                            y = e("../internals/create-property"),
                            n = e("../internals/array-method-has-species-support"),
                            e = e("../internals/array-method-uses-to-length"),
                            n = n("splice"),
                            e = e("splice", {
                                ACCESSORS: !0,
                                0: 0,
                                1: 2
                            }),
                            g = Math.max,
                            v = Math.min;
                        o({
                            target: "Array",
                            proto: !0,
                            forced: !n || !e
                        }, {
                            splice: function(e, t) {
                                var r, o, n, s, i, a, l = p(this),
                                    c = f(l.length),
                                    u = d(e, c),
                                    e = arguments.length;
                                if (0 === e ? r = o = 0 : o = 1 === e ? (r = 0, c - u) : (r = e - 2, v(g(h(t), 0), c - u)), 9007199254740991 < c + r - o) throw TypeError("Maximum allowed length exceeded");
                                for (n = m(l, o), s = 0; s < o; s++)(i = u + s) in l && y(n, s, l[i]);
                                if (r < (n.length = o)) {
                                    for (s = u; s < c - o; s++) a = s + r, (i = s + o) in l ? l[a] = l[i] : delete l[a];
                                    for (s = c; c - o + r < s; s--) delete l[s - 1]
                                } else if (o < r)
                                    for (s = c - o; u < s; s--) a = s + r - 1, (i = s + o - 1) in l ? l[a] = l[i] : delete l[a];
                                for (s = 0; s < r; s++) l[s + u] = arguments[s + 2];
                                return l.length = c - o + r, n
                            }
                        })
                    }, {
                        "../internals/array-method-has-species-support": 21,
                        "../internals/array-method-uses-to-length": 23,
                        "../internals/array-species-create": 25,
                        "../internals/create-property": 40,
                        "../internals/export": 50,
                        "../internals/to-absolute-index": 134,
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    172: [function(e, t, r) {
                        e("../internals/add-to-unscopables")("flatMap")
                    }, {
                        "../internals/add-to-unscopables": 7
                    }],
                    173: [function(e, t, r) {
                        e("../internals/add-to-unscopables")("flat")
                    }, {
                        "../internals/add-to-unscopables": 7
                    }],
                    174: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            e = e("../internals/object-define-property").f,
                            n = Function.prototype,
                            s = n.toString,
                            i = /^\s*function ([^ (]*)/;
                        !o || "name" in n || e(n, "name", {
                            configurable: !0,
                            get: function() {
                                try {
                                    return s.call(this).match(i)[1]
                                } catch (e) {
                                    return ""
                                }
                            }
                        })
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/object-define-property": 93
                    }],
                    175: [function(e, t, r) {
                        var o = e("../internals/collection"),
                            e = e("../internals/collection-strong");
                        t.exports = o("Map", function(e) {
                            return function() {
                                return e(this, arguments.length ? arguments[0] : void 0)
                            }
                        }, e)
                    }, {
                        "../internals/collection": 32,
                        "../internals/collection-strong": 30
                    }],
                    176: [function(e, t, r) {
                        var e = e("../internals/export"),
                            o = Math.hypot,
                            l = Math.abs,
                            c = Math.sqrt;
                        e({
                            target: "Math",
                            stat: !0,
                            forced: !!o && o(1 / 0, NaN) !== 1 / 0
                        }, {
                            hypot: function(e, t) {
                                for (var r, o, n = 0, s = 0, i = arguments.length, a = 0; s < i;) a < (r = l(arguments[s++])) ? (n = n * (o = a / r) * o + 1, a = r) : n += 0 < r ? (o = r / a) * o : r;
                                return a === 1 / 0 ? 1 / 0 : a * c(n)
                            }
                        })
                    }, {
                        "../internals/export": 50
                    }],
                    177: [function(e, t, r) {
                        var e = e("../internals/export"),
                            o = Math.log,
                            n = Math.LN2;
                        e({
                            target: "Math",
                            stat: !0
                        }, {
                            log2: function(e) {
                                return o(e) / n
                            }
                        })
                    }, {
                        "../internals/export": 50
                    }],
                    178: [function(e, t, r) {
                        e("../internals/export")({
                            target: "Math",
                            stat: !0
                        }, {
                            sign: e("../internals/math-sign")
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/math-sign": 81
                    }],
                    179: [function(e, t, r) {
                        function o(e) {
                            var t, r, o, n, s, i, a, l = d(e, !1);
                            if ("string" == typeof l && 2 < l.length)
                                if (43 === (e = (l = g(l)).charCodeAt(0)) || 45 === e) {
                                    if (88 === (t = l.charCodeAt(2)) || 120 === t) return NaN
                                } else if (48 === e) {
                                switch (l.charCodeAt(1)) {
                                    case 66:
                                    case 98:
                                        r = 2, o = 49;
                                        break;
                                    case 79:
                                    case 111:
                                        r = 8, o = 55;
                                        break;
                                    default:
                                        return +l
                                }
                                for (s = (n = l.slice(2)).length, i = 0; i < s; i++)
                                    if ((a = n.charCodeAt(i)) < 48 || o < a) return NaN;
                                return parseInt(n, r)
                            }
                            return +l
                        }
                        var n = e("../internals/descriptors"),
                            s = e("../internals/global"),
                            i = e("../internals/is-forced"),
                            a = e("../internals/redefine"),
                            l = e("../internals/has"),
                            c = e("../internals/classof-raw"),
                            u = e("../internals/inherit-if-required"),
                            d = e("../internals/to-primitive"),
                            h = e("../internals/fails"),
                            f = e("../internals/object-create"),
                            p = e("../internals/object-get-own-property-names").f,
                            m = e("../internals/object-get-own-property-descriptor").f,
                            y = e("../internals/object-define-property").f,
                            g = e("../internals/string-trim").trim,
                            v = "Number",
                            b = s[v],
                            _ = b.prototype,
                            x = c(f(_)) == v;
                        if (i(v, !b(" 0o1") || !b("0b1") || b("+0x1"))) {
                            for (var w, j = function(e) {
                                    var e = arguments.length < 1 ? 0 : e,
                                        t = this;
                                    return t instanceof j && (x ? h(function() {
                                        _.valueOf.call(t)
                                    }) : c(t) != v) ? u(new b(o(e)), t, j) : o(e)
                                }, S = n ? p(b) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), T = 0; S.length > T; T++) l(b, w = S[T]) && !l(j, w) && y(j, w, m(b, w));
                            (j.prototype = _).constructor = j, a(s, v, j)
                        }
                    }, {
                        "../internals/classof-raw": 28,
                        "../internals/descriptors": 43,
                        "../internals/fails": 51,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/inherit-if-required": 68,
                        "../internals/is-forced": 74,
                        "../internals/object-create": 91,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/redefine": 110,
                        "../internals/string-trim": 131,
                        "../internals/to-primitive": 142
                    }],
                    180: [function(e, t, r) {
                        e("../internals/export")({
                            target: "Number",
                            stat: !0
                        }, {
                            EPSILON: Math.pow(2, -52)
                        })
                    }, {
                        "../internals/export": 50
                    }],
                    181: [function(e, t, r) {
                        e("../internals/export")({
                            target: "Number",
                            stat: !0
                        }, {
                            isFinite: e("../internals/number-is-finite")
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/number-is-finite": 89
                    }],
                    182: [function(e, t, r) {
                        function u(e, t, r) {
                            return 0 === t ? r : t % 2 == 1 ? u(e, t - 1, r * e) : u(e * e, t / 2, r)
                        }
                        var o = e("../internals/export"),
                            d = e("../internals/to-integer"),
                            h = e("../internals/this-number-value"),
                            f = e("../internals/string-repeat"),
                            e = e("../internals/fails"),
                            n = 1..toFixed,
                            p = Math.floor;
                        o({
                            target: "Number",
                            proto: !0,
                            forced: n && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== 0xde0b6b3a7640080.toFixed(0)) || !e(function() {
                                n.call({})
                            })
                        }, {
                            toFixed: function(e) {
                                function t(e, t) {
                                    for (var r = -1, o = t; ++r < 6;) o += e * a[r], a[r] = o % 1e7, o = p(o / 1e7)
                                }

                                function r(e) {
                                    for (var t = 6, r = 0; 0 <= --t;) r += a[t], a[t] = p(r / e), r = r % e * 1e7
                                }

                                function o() {
                                    for (var e, t = 6, r = ""; 0 <= --t;) "" === r && 0 !== t && 0 === a[t] || (e = String(a[t]), r = "" === r ? e : r + f.call("0", 7 - e.length) + e);
                                    return r
                                }
                                var n, s, i = h(this),
                                    e = d(e),
                                    a = [0, 0, 0, 0, 0, 0],
                                    l = "",
                                    c = "0";
                                if (e < 0 || 20 < e) throw RangeError("Incorrect fraction digits");
                                if (i != i) return "NaN";
                                if (i <= -1e21 || 1e21 <= i) return String(i);
                                if (i < 0 && (l = "-", i = -i), 1e-21 < i)
                                    if (i = (n = (() => {
                                            for (var e = 0, t = i * u(2, 69, 1); 4096 <= t;) e += 12, t /= 4096;
                                            for (; 2 <= t;) e += 1, t /= 2;
                                            return e
                                        })() - 69) < 0 ? i * u(2, -n, 1) : i / u(2, n, 1), i *= 4503599627370496, 0 < (n = 52 - n)) {
                                        for (t(0, i), s = e; 7 <= s;) t(1e7, 0), s -= 7;
                                        for (t(u(10, s, 1), 0), s = n - 1; 23 <= s;) r(1 << 23), s -= 23;
                                        r(1 << s), t(1, 1), r(2), c = o()
                                    } else t(0, i), t(1 << -n, 0), c = o() + f.call("0", e);
                                return 0 < e ? l + ((i = c.length) <= e ? "0." + f.call("0", e - i) + c : c.slice(0, i - e) + "." + c.slice(i - e)) : l + c
                            }
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/string-repeat": 129,
                        "../internals/this-number-value": 133,
                        "../internals/to-integer": 137
                    }],
                    183: [function(e, t, r) {
                        var o = e("../internals/export"),
                            e = e("../internals/object-assign");
                        o({
                            target: "Object",
                            stat: !0,
                            forced: Object.assign !== e
                        }, {
                            assign: e
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/object-assign": 90
                    }],
                    184: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/object-to-array").entries;
                        o({
                            target: "Object",
                            stat: !0
                        }, {
                            entries: function(e) {
                                return n(e)
                            }
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/object-to-array": 103
                    }],
                    185: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/iterate"),
                            s = e("../internals/create-property");
                        o({
                            target: "Object",
                            stat: !0
                        }, {
                            fromEntries: function(e) {
                                var r = {};
                                return n(e, function(e, t) {
                                    s(r, e, t)
                                }, void 0, !0), r
                            }
                        })
                    }, {
                        "../internals/create-property": 40,
                        "../internals/export": 50,
                        "../internals/iterate": 78
                    }],
                    186: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/fails"),
                            s = e("../internals/to-indexed-object"),
                            i = e("../internals/object-get-own-property-descriptor").f,
                            e = e("../internals/descriptors"),
                            n = n(function() {
                                i(1)
                            });
                        o({
                            target: "Object",
                            stat: !0,
                            forced: !e || n,
                            sham: !e
                        }, {
                            getOwnPropertyDescriptor: function(e, t) {
                                return i(s(e), t)
                            }
                        })
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/to-indexed-object": 136
                    }],
                    187: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/fails"),
                            e = e("../internals/object-get-own-property-names-external").f;
                        o({
                            target: "Object",
                            stat: !0,
                            forced: n(function() {
                                return !Object.getOwnPropertyNames(1)
                            })
                        }, {
                            getOwnPropertyNames: e
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/object-get-own-property-names-external": 95
                    }],
                    188: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/fails"),
                            s = e("../internals/to-object"),
                            i = e("../internals/object-get-prototype-of"),
                            e = e("../internals/correct-prototype-getter");
                        o({
                            target: "Object",
                            stat: !0,
                            forced: n(function() {
                                i(1)
                            }),
                            sham: !e
                        }, {
                            getPrototypeOf: function(e) {
                                return i(s(e))
                            }
                        })
                    }, {
                        "../internals/correct-prototype-getter": 35,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/object-get-prototype-of": 98,
                        "../internals/to-object": 139
                    }],
                    189: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/to-object"),
                            s = e("../internals/object-keys");
                        o({
                            target: "Object",
                            stat: !0,
                            forced: e("../internals/fails")(function() {
                                s(1)
                            })
                        }, {
                            keys: function(e) {
                                return s(n(e))
                            }
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/object-keys": 100,
                        "../internals/to-object": 139
                    }],
                    190: [function(e, t, r) {
                        var o = e("../internals/to-string-tag-support"),
                            n = e("../internals/redefine"),
                            e = e("../internals/object-to-string");
                        o || n(Object.prototype, "toString", e, {
                            unsafe: !0
                        })
                    }, {
                        "../internals/object-to-string": 104,
                        "../internals/redefine": 110,
                        "../internals/to-string-tag-support": 143
                    }],
                    191: [function(e, D, F) {
                        function g(e, t, r) {
                            var o;
                            ee ? ((o = E.createEvent("Event")).promise = t, o.reason = r, o.initEvent(e, !1, !0), b.dispatchEvent(o)) : o = {
                                promise: t,
                                reason: r
                            }, (t = b["on" + e]) ? t(o) : e === te && Y("Unhandled promise rejection", r)
                        }

                        function v(e) {
                            return e.rejection !== A && !e.parent
                        }
                        var r, t, o, n, s = e("../internals/export"),
                            i = e("../internals/is-pure"),
                            b = e("../internals/global"),
                            a = e("../internals/get-built-in"),
                            l = e("../internals/native-promise-constructor"),
                            N = e("../internals/redefine"),
                            U = e("../internals/redefine-all"),
                            B = e("../internals/set-to-string-tag"),
                            G = e("../internals/set-species"),
                            V = e("../internals/is-object"),
                            u = e("../internals/a-function"),
                            z = e("../internals/an-instance"),
                            H = e("../internals/classof-raw"),
                            W = e("../internals/inspect-source"),
                            d = e("../internals/iterate"),
                            q = e("../internals/check-correctness-of-iteration"),
                            X = e("../internals/species-constructor"),
                            _ = e("../internals/task").set,
                            c = e("../internals/microtask"),
                            h = e("../internals/promise-resolve"),
                            Y = e("../internals/host-report-errors"),
                            f = e("../internals/new-promise-capability"),
                            x = e("../internals/perform"),
                            p = e("../internals/internal-state"),
                            Z = e("../internals/is-forced"),
                            m = e("../internals/well-known-symbol"),
                            y = e("../internals/engine-v8-version"),
                            K = m("species"),
                            w = "Promise",
                            j = p.get,
                            Q = p.set,
                            J = p.getterFor(w),
                            S = l,
                            T = b.TypeError,
                            E = b.document,
                            k = b.process,
                            M = a("fetch"),
                            O = f.f,
                            $ = O,
                            C = "process" == H(k),
                            ee = !!(E && E.createEvent && b.dispatchEvent),
                            te = "unhandledrejection",
                            re = "rejectionhandled",
                            oe = 1,
                            ne = 2,
                            A = 1,
                            se = 2,
                            m = (e = Z(w, function() {
                                var e, t;
                                if (W(S) === String(S)) {
                                    if (66 === y) return !0;
                                    if (!C && "function" != typeof PromiseRejectionEvent) return !0
                                }
                                return !((!i || S.prototype.finally) && (51 <= y && /native code/.test(S) || (t = function(e) {
                                    e(function() {}, function() {})
                                }, ((e = S.resolve(1)).constructor = {})[K] = t, e.then(function() {}) instanceof t)))
                            })) || !q(function(e) {
                                S.all(e).catch(function() {})
                            }),
                            ie = function(e) {
                                var t;
                                return !(!V(e) || "function" != typeof(t = e.then)) && t
                            },
                            L = function(f, p, m) {
                                var y;
                                p.notified || (p.notified = !0, y = p.reactions, c(function() {
                                    for (var r, o, e = p.value, t = p.state == oe, n = 0; y.length > n;) {
                                        var s, i, a, l = y[n++],
                                            c = t ? l.ok : l.fail,
                                            u = l.resolve,
                                            d = l.reject,
                                            h = l.domain;
                                        try {
                                            c ? (t || (p.rejection === se && ((e, t) => {
                                                _.call(b, function() {
                                                    C ? k.emit("rejectionHandled", e) : g(re, e, t.value)
                                                })
                                            })(f, p), p.rejection = A), !0 === c ? s = e : (h && h.enter(), s = c(e), h && (h.exit(), a = !0)), s === l.promise ? d(T("Promise-chain cycle")) : (i = ie(s)) ? i.call(s, u, d) : u(s)) : d(e)
                                        } catch (e) {
                                            h && !a && h.exit(), d(e)
                                        }
                                    }
                                    p.reactions = [], p.notified = !1, m && !p.rejection && (r = f, o = p, _.call(b, function() {
                                        var e = o.value,
                                            t = v(o);
                                        if (t && (t = x(function() {
                                                C ? k.emit("unhandledRejection", e, r) : g(te, r, e)
                                            }), o.rejection = C || v(o) ? se : A, t.error)) throw t.value
                                    }))
                                }))
                            },
                            P = function(t, r, o, n) {
                                return function(e) {
                                    t(r, o, e, n)
                                }
                            },
                            I = function(e, t, r, o) {
                                t.done || (t.done = !0, (t = o || t).value = r, t.state = ne, L(e, t, !0))
                            },
                            R = function(r, o, e, t) {
                                if (!o.done) {
                                    o.done = !0, t && (o = t);
                                    try {
                                        if (r === e) throw T("Promise can't be resolved itself");
                                        var n = ie(e);
                                        n ? c(function() {
                                            var t = {
                                                done: !1
                                            };
                                            try {
                                                n.call(e, P(R, r, t, o), P(I, r, t, o))
                                            } catch (e) {
                                                I(r, t, e, o)
                                            }
                                        }) : (o.value = e, o.state = oe, L(r, o, !1))
                                    } catch (e) {
                                        I(r, {
                                            done: !1
                                        }, e, o)
                                    }
                                }
                            };
                        e && (S = function(e) {
                            z(this, S, w), u(e), r.call(this);
                            var t = j(this);
                            try {
                                e(P(R, this, t), P(I, this, t))
                            } catch (e) {
                                I(this, t, e)
                            }
                        }, (r = function(e) {
                            Q(this, {
                                type: w,
                                done: !1,
                                notified: !1,
                                parent: !1,
                                reactions: [],
                                rejection: !1,
                                state: 0,
                                value: void 0
                            })
                        }).prototype = U(S.prototype, {
                            then: function(e, t) {
                                var r = J(this),
                                    o = O(X(this, S));
                                return o.ok = "function" != typeof e || e, o.fail = "function" == typeof t && t, o.domain = C ? k.domain : void 0, r.parent = !0, r.reactions.push(o), 0 != r.state && L(this, r, !1), o.promise
                            },
                            catch: function(e) {
                                return this.then(void 0, e)
                            }
                        }), t = function() {
                            var e = new r,
                                t = j(e);
                            this.promise = e, this.resolve = P(R, e, t), this.reject = P(I, e, t)
                        }, f.f = O = function(e) {
                            return e === S || e === o ? new t : $(e)
                        }, i || "function" != typeof l || (n = l.prototype.then, N(l.prototype, "then", function(e, t) {
                            var r = this;
                            return new S(function(e, t) {
                                n.call(r, e, t)
                            }).then(e, t)
                        }, {
                            unsafe: !0
                        }), "function" == typeof M && s({
                            global: !0,
                            enumerable: !0,
                            forced: !0
                        }, {
                            fetch: function(e) {
                                return h(S, M.apply(b, arguments))
                            }
                        }))), s({
                            global: !0,
                            wrap: !0,
                            forced: e
                        }, {
                            Promise: S
                        }), B(S, w, !1, !0), G(w), o = a(w), s({
                            target: w,
                            stat: !0,
                            forced: e
                        }, {
                            reject: function(e) {
                                var t = O(this);
                                return t.reject.call(void 0, e), t.promise
                            }
                        }), s({
                            target: w,
                            stat: !0,
                            forced: i || e
                        }, {
                            resolve: function(e) {
                                return h(i && this === o ? S : this, e)
                            }
                        }), s({
                            target: w,
                            stat: !0,
                            forced: m
                        }, {
                            all: function(e) {
                                var a = this,
                                    t = O(a),
                                    l = t.resolve,
                                    c = t.reject,
                                    r = x(function() {
                                        var o = u(a.resolve),
                                            n = [],
                                            s = 0,
                                            i = 1;
                                        d(e, function(e) {
                                            var t = s++,
                                                r = !1;
                                            n.push(void 0), i++, o.call(a, e).then(function(e) {
                                                r || (r = !0, n[t] = e, --i) || l(n)
                                            }, c)
                                        }), --i || l(n)
                                    });
                                return r.error && c(r.value), t.promise
                            },
                            race: function(e) {
                                var r = this,
                                    o = O(r),
                                    n = o.reject,
                                    t = x(function() {
                                        var t = u(r.resolve);
                                        d(e, function(e) {
                                            t.call(r, e).then(o.resolve, n)
                                        })
                                    });
                                return t.error && n(t.value), o.promise
                            }
                        })
                    }, {
                        "../internals/a-function": 5,
                        "../internals/an-instance": 9,
                        "../internals/check-correctness-of-iteration": 27,
                        "../internals/classof-raw": 28,
                        "../internals/engine-v8-version": 48,
                        "../internals/export": 50,
                        "../internals/get-built-in": 57,
                        "../internals/global": 60,
                        "../internals/host-report-errors": 63,
                        "../internals/inspect-source": 69,
                        "../internals/internal-state": 71,
                        "../internals/is-forced": 74,
                        "../internals/is-object": 75,
                        "../internals/is-pure": 76,
                        "../internals/iterate": 78,
                        "../internals/microtask": 82,
                        "../internals/native-promise-constructor": 83,
                        "../internals/new-promise-capability": 87,
                        "../internals/perform": 107,
                        "../internals/promise-resolve": 108,
                        "../internals/redefine": 110,
                        "../internals/redefine-all": 109,
                        "../internals/set-species": 118,
                        "../internals/set-to-string-tag": 119,
                        "../internals/species-constructor": 123,
                        "../internals/task": 132,
                        "../internals/well-known-symbol": 150
                    }],
                    192: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/get-built-in"),
                            s = e("../internals/a-function"),
                            i = e("../internals/an-object"),
                            a = e("../internals/is-object"),
                            l = e("../internals/object-create"),
                            c = e("../internals/function-bind"),
                            e = e("../internals/fails"),
                            u = n("Reflect", "construct"),
                            d = e(function() {
                                function e() {}
                                return !(u(function() {}, [], e) instanceof e)
                            }),
                            h = !e(function() {
                                u(function() {})
                            });
                        o({
                            target: "Reflect",
                            stat: !0,
                            forced: n = d || h,
                            sham: n
                        }, {
                            construct: function(e, t) {
                                s(e), i(t);
                                var r = arguments.length < 3 ? e : s(arguments[2]);
                                if (h && !d) return u(e, t, r);
                                if (e != r) return o = r.prototype, r = l(a(o) ? o : Object.prototype), o = Function.apply.call(e, r, t), a(o) ? o : r;
                                switch (t.length) {
                                    case 0:
                                        return new e;
                                    case 1:
                                        return new e(t[0]);
                                    case 2:
                                        return new e(t[0], t[1]);
                                    case 3:
                                        return new e(t[0], t[1], t[2]);
                                    case 4:
                                        return new e(t[0], t[1], t[2], t[3])
                                }
                                var o = [null];
                                return o.push.apply(o, t), new(c.apply(e, o))
                            }
                        })
                    }, {
                        "../internals/a-function": 5,
                        "../internals/an-object": 10,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/function-bind": 56,
                        "../internals/get-built-in": 57,
                        "../internals/is-object": 75,
                        "../internals/object-create": 91
                    }],
                    193: [function(e, t, r) {
                        var o = e("../internals/export"),
                            s = e("../internals/is-object"),
                            i = e("../internals/an-object"),
                            a = e("../internals/has"),
                            l = e("../internals/object-get-own-property-descriptor"),
                            c = e("../internals/object-get-prototype-of");
                        o({
                            target: "Reflect",
                            stat: !0
                        }, {
                            get: function e(t, r) {
                                var o, n = arguments.length < 3 ? t : arguments[2];
                                return i(t) === n ? t[r] : (o = l.f(t, r)) ? a(o, "value") ? o.value : void 0 === o.get ? void 0 : o.get.call(n) : s(o = c(t)) ? e(o, r, n) : void 0
                            }
                        })
                    }, {
                        "../internals/an-object": 10,
                        "../internals/export": 50,
                        "../internals/has": 61,
                        "../internals/is-object": 75,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/object-get-prototype-of": 98
                    }],
                    194: [function(e, t, r) {
                        var o = e("../internals/descriptors"),
                            n = e("../internals/global"),
                            s = e("../internals/is-forced"),
                            i = e("../internals/inherit-if-required"),
                            a = e("../internals/object-define-property").f,
                            l = e("../internals/object-get-own-property-names").f,
                            c = e("../internals/is-regexp"),
                            u = e("../internals/regexp-flags"),
                            d = e("../internals/regexp-sticky-helpers"),
                            h = e("../internals/redefine"),
                            f = e("../internals/fails"),
                            p = e("../internals/internal-state").set,
                            m = e("../internals/set-species"),
                            y = e("../internals/well-known-symbol")("match"),
                            g = n.RegExp,
                            v = g.prototype,
                            b = /a/g,
                            _ = /a/g,
                            x = new g(b) !== b,
                            w = d.UNSUPPORTED_Y;
                        if (o && s("RegExp", !x || w || f(function() {
                                return _[y] = !1, g(b) != b || g(_) == _ || "/a/i" != g(b, "i")
                            }))) {
                            for (var j = function(e, t) {
                                    var r, o = this instanceof j,
                                        n = c(e),
                                        s = void 0 === t;
                                    return !o && n && e.constructor === j && s ? e : (x ? n && !s && (e = e.source) : e instanceof j && (s && (t = u.call(e)), e = e.source), w && (r = !!t && -1 < t.indexOf("y")) && (t = t.replace(/y/g, "")), n = i(x ? new g(e, t) : g(e, t), o ? this : v, j), w && r && p(n, {
                                        sticky: r
                                    }), n)
                                }, S = l(g), T = 0; S.length > T;)(t => {
                                t in j || a(j, t, {
                                    configurable: !0,
                                    get: function() {
                                        return g[t]
                                    },
                                    set: function(e) {
                                        g[t] = e
                                    }
                                })
                            })(S[T++]);
                            (v.constructor = j).prototype = v, h(n, "RegExp", j)
                        }
                        m("RegExp")
                    }, {
                        "../internals/descriptors": 43,
                        "../internals/fails": 51,
                        "../internals/global": 60,
                        "../internals/inherit-if-required": 68,
                        "../internals/internal-state": 71,
                        "../internals/is-forced": 74,
                        "../internals/is-regexp": 77,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/redefine": 110,
                        "../internals/regexp-flags": 113,
                        "../internals/regexp-sticky-helpers": 114,
                        "../internals/set-species": 118,
                        "../internals/well-known-symbol": 150
                    }],
                    195: [function(e, t, r) {
                        var o = e("../internals/export"),
                            e = e("../internals/regexp-exec");
                        o({
                            target: "RegExp",
                            proto: !0,
                            forced: /./.exec !== e
                        }, {
                            exec: e
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/regexp-exec": 112
                    }],
                    196: [function(e, t, r) {
                        var o = e("../internals/redefine"),
                            n = e("../internals/an-object"),
                            s = e("../internals/fails"),
                            i = e("../internals/regexp-flags"),
                            e = "toString",
                            a = RegExp.prototype,
                            l = a[e],
                            s = s(function() {
                                return "/a/b" != l.call({
                                    source: "a",
                                    flags: "b"
                                })
                            }),
                            c = l.name != e;
                        (s || c) && o(RegExp.prototype, e, function() {
                            var e = n(this),
                                t = String(e.source),
                                r = e.flags;
                            return "/" + t + "/" + String(void 0 === r && e instanceof RegExp && !("flags" in a) ? i.call(e) : r)
                        }, {
                            unsafe: !0
                        })
                    }, {
                        "../internals/an-object": 10,
                        "../internals/fails": 51,
                        "../internals/redefine": 110,
                        "../internals/regexp-flags": 113
                    }],
                    197: [function(e, t, r) {
                        var o = e("../internals/collection"),
                            e = e("../internals/collection-strong");
                        t.exports = o("Set", function(e) {
                            return function() {
                                return e(this, arguments.length ? arguments[0] : void 0)
                            }
                        }, e)
                    }, {
                        "../internals/collection": 32,
                        "../internals/collection-strong": 30
                    }],
                    198: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/object-get-own-property-descriptor").f,
                            s = e("../internals/to-length"),
                            i = e("../internals/not-a-regexp"),
                            a = e("../internals/require-object-coercible"),
                            l = e("../internals/correct-is-regexp-logic"),
                            e = e("../internals/is-pure"),
                            c = "".endsWith,
                            u = Math.min,
                            l = l("endsWith");
                        o({
                            target: "String",
                            proto: !0,
                            forced: !(!e && !l && (o = n(String.prototype, "endsWith")) && !o.writable || l)
                        }, {
                            endsWith: function(e) {
                                var t = String(a(this)),
                                    r = (i(e), 1 < arguments.length ? arguments[1] : void 0),
                                    o = s(t.length),
                                    r = void 0 === r ? o : u(s(r), o),
                                    o = String(e);
                                return c ? c.call(t, o, r) : t.slice(r - o.length, r) === o
                            }
                        })
                    }, {
                        "../internals/correct-is-regexp-logic": 34,
                        "../internals/export": 50,
                        "../internals/is-pure": 76,
                        "../internals/not-a-regexp": 88,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/require-object-coercible": 115,
                        "../internals/to-length": 138
                    }],
                    199: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/not-a-regexp"),
                            s = e("../internals/require-object-coercible");
                        o({
                            target: "String",
                            proto: !0,
                            forced: !e("../internals/correct-is-regexp-logic")("includes")
                        }, {
                            includes: function(e) {
                                return !!~String(s(this)).indexOf(n(e), 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/correct-is-regexp-logic": 34,
                        "../internals/export": 50,
                        "../internals/not-a-regexp": 88,
                        "../internals/require-object-coercible": 115
                    }],
                    200: [function(e, t, r) {
                        var o = e("../internals/string-multibyte").charAt,
                            n = e("../internals/internal-state"),
                            e = e("../internals/define-iterator"),
                            s = "String Iterator",
                            i = n.set,
                            a = n.getterFor(s);
                        e(String, "String", function(e) {
                            i(this, {
                                type: s,
                                string: String(e),
                                index: 0
                            })
                        }, function() {
                            var e = a(this),
                                t = e.string,
                                r = e.index;
                            return r >= t.length ? {
                                value: void 0,
                                done: !0
                            } : (t = o(t, r), e.index += t.length, {
                                value: t,
                                done: !1
                            })
                        })
                    }, {
                        "../internals/define-iterator": 41,
                        "../internals/internal-state": 71,
                        "../internals/string-multibyte": 125
                    }],
                    201: [function(e, t, r) {
                        var o = e("../internals/fix-regexp-well-known-symbol-logic"),
                            u = e("../internals/an-object"),
                            d = e("../internals/to-length"),
                            n = e("../internals/require-object-coercible"),
                            h = e("../internals/advance-string-index"),
                            f = e("../internals/regexp-exec-abstract");
                        o("match", 1, function(o, l, c) {
                            return [function(e) {
                                var t = n(this),
                                    r = null == e ? void 0 : e[o];
                                return void 0 !== r ? r.call(e, t) : new RegExp(e)[o](String(t))
                            }, function(e) {
                                var t = c(l, e, this);
                                if (t.done) return t.value;
                                var r = u(e),
                                    o = String(this);
                                if (!r.global) return f(r, o);
                                for (var n = r.unicode, s = [], i = r.lastIndex = 0; null !== (a = f(r, o));) {
                                    var a = String(a[0]);
                                    "" === (s[i] = a) && (r.lastIndex = h(o, d(r.lastIndex), n)), i++
                                }
                                return 0 === i ? null : s
                            }]
                        })
                    }, {
                        "../internals/advance-string-index": 8,
                        "../internals/an-object": 10,
                        "../internals/fix-regexp-well-known-symbol-logic": 52,
                        "../internals/regexp-exec-abstract": 111,
                        "../internals/require-object-coercible": 115,
                        "../internals/to-length": 138
                    }],
                    202: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/string-pad").start;
                        o({
                            target: "String",
                            proto: !0,
                            forced: e("../internals/string-pad-webkit-bug")
                        }, {
                            padStart: function(e) {
                                return n(this, e, 1 < arguments.length ? arguments[1] : void 0)
                            }
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/string-pad": 127,
                        "../internals/string-pad-webkit-bug": 126
                    }],
                    203: [function(e, t, r) {
                        e("../internals/export")({
                            target: "String",
                            proto: !0
                        }, {
                            repeat: e("../internals/string-repeat")
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/string-repeat": 129
                    }],
                    204: [function(e, t, r) {
                        var o = e("../internals/fix-regexp-well-known-symbol-logic"),
                            T = e("../internals/an-object"),
                            E = e("../internals/to-object"),
                            k = e("../internals/to-length"),
                            M = e("../internals/to-integer"),
                            s = e("../internals/require-object-coercible"),
                            O = e("../internals/advance-string-index"),
                            C = e("../internals/regexp-exec-abstract"),
                            A = Math.max,
                            L = Math.min,
                            P = Math.floor,
                            I = /\$([$&'`]|\d\d?|<[^>]*>)/g,
                            R = /\$([$&'`]|\d\d?)/g;
                        o("replace", 2, function(n, _, x, e) {
                            var w = e.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,
                                j = e.REPLACE_KEEPS_$0,
                                S = w ? "$" : "$0";
                            return [function(e, t) {
                                var r = s(this),
                                    o = null == e ? void 0 : e[n];
                                return void 0 !== o ? o.call(e, r, t) : _.call(String(r), e, t)
                            }, function(e, t) {
                                if (!w && j || "string" == typeof t && -1 === t.indexOf(S)) {
                                    var r = x(_, e, this, t);
                                    if (r.done) return r.value
                                }
                                for (var o, n = T(e), s = String(this), i = "function" == typeof t, a = (i || (t = String(t)), n.global), l = (a && (o = n.unicode, n.lastIndex = 0), []); null !== (f = C(n, s)) && (l.push(f), a);) "" === String(f[0]) && (n.lastIndex = O(s, k(n.lastIndex), o));
                                for (var c, u = "", d = 0, h = 0; h < l.length; h++) {
                                    for (var f = l[h], p = String(f[0]), m = A(L(M(f.index), s.length), 0), y = [], g = 1; g < f.length; g++) y.push(void 0 === (c = f[g]) ? c : String(c));
                                    var v = f.groups,
                                        b = i ? (b = [p].concat(y, m, s), void 0 !== v && b.push(v), String(t.apply(void 0, b))) : ((s, i, a, l, c, e) => {
                                            var u = a + s.length,
                                                d = l.length,
                                                t = R;
                                            return void 0 !== c && (c = E(c), t = I), _.call(e, t, function(e, t) {
                                                var r;
                                                switch (t.charAt(0)) {
                                                    case "$":
                                                        return "$";
                                                    case "&":
                                                        return s;
                                                    case "`":
                                                        return i.slice(0, a);
                                                    case "'":
                                                        return i.slice(u);
                                                    case "<":
                                                        r = c[t.slice(1, -1)];
                                                        break;
                                                    default:
                                                        var o, n = +t;
                                                        if (0 == n) return e;
                                                        if (d < n) return 0 !== (o = P(n / 10)) && o <= d ? void 0 === l[o - 1] ? t.charAt(1) : l[o - 1] + t.charAt(1) : e;
                                                        r = l[n - 1]
                                                }
                                                return void 0 === r ? "" : r
                                            })
                                        })(p, s, m, y, v, t);
                                    d <= m && (u += s.slice(d, m) + b, d = m + p.length)
                                }
                                return u + s.slice(d)
                            }]
                        })
                    }, {
                        "../internals/advance-string-index": 8,
                        "../internals/an-object": 10,
                        "../internals/fix-regexp-well-known-symbol-logic": 52,
                        "../internals/regexp-exec-abstract": 111,
                        "../internals/require-object-coercible": 115,
                        "../internals/to-integer": 137,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139
                    }],
                    205: [function(e, t, r) {
                        var o = e("../internals/fix-regexp-well-known-symbol-logic"),
                            i = e("../internals/an-object"),
                            a = e("../internals/require-object-coercible"),
                            l = e("../internals/same-value"),
                            c = e("../internals/regexp-exec-abstract");
                        o("search", 1, function(o, n, s) {
                            return [function(e) {
                                var t = a(this),
                                    r = null == e ? void 0 : e[o];
                                return void 0 !== r ? r.call(e, t) : new RegExp(e)[o](String(t))
                            }, function(e) {
                                var t, r = s(n, e, this);
                                return r.done ? r.value : (r = i(e), e = String(this), t = r.lastIndex, l(t, 0) || (r.lastIndex = 0), e = c(r, e), l(r.lastIndex, t) || (r.lastIndex = t), null === e ? -1 : e.index)
                            }]
                        })
                    }, {
                        "../internals/an-object": 10,
                        "../internals/fix-regexp-well-known-symbol-logic": 52,
                        "../internals/regexp-exec-abstract": 111,
                        "../internals/require-object-coercible": 115,
                        "../internals/same-value": 116
                    }],
                    206: [function(e, t, r) {
                        var o = e("../internals/fix-regexp-well-known-symbol-logic"),
                            u = e("../internals/is-regexp"),
                            g = e("../internals/an-object"),
                            d = e("../internals/require-object-coercible"),
                            v = e("../internals/species-constructor"),
                            b = e("../internals/advance-string-index"),
                            _ = e("../internals/to-length"),
                            x = e("../internals/regexp-exec-abstract"),
                            h = e("../internals/regexp-exec"),
                            e = e("../internals/fails"),
                            f = [].push,
                            w = Math.min,
                            j = 4294967295,
                            S = !e(function() {
                                return !RegExp(j, "y")
                            });
                        o("split", 2, function(n, p, m) {
                            var y = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || 1 < ".".split(/()()/).length || "".split(/.?/).length ? function(e, t) {
                                var r = String(d(this)),
                                    o = void 0 === t ? j : t >>> 0;
                                if (0 == o) return [];
                                if (void 0 === e) return [r];
                                if (!u(e)) return p.call(r, e, o);
                                for (var n, s, i, a = [], t = (e.ignoreCase ? "i" : "") + (e.multiline ? "m" : "") + (e.unicode ? "u" : "") + (e.sticky ? "y" : ""), l = 0, c = new RegExp(e.source, t + "g");
                                    (n = h.call(c, r)) && !(l < (s = c.lastIndex) && (a.push(r.slice(l, n.index)), 1 < n.length && n.index < r.length && f.apply(a, n.slice(1)), i = n[0].length, l = s, o <= a.length));) c.lastIndex === n.index && c.lastIndex++;
                                return l === r.length ? !i && c.test("") || a.push("") : a.push(r.slice(l)), o < a.length ? a.slice(0, o) : a
                            } : "0".split(void 0, 0).length ? function(e, t) {
                                return void 0 === e && 0 === t ? [] : p.call(this, e, t)
                            } : p;
                            return [function(e, t) {
                                var r = d(this),
                                    o = null == e ? void 0 : e[n];
                                return void 0 !== o ? o.call(e, r, t) : y.call(String(r), e, t)
                            }, function(e, t) {
                                if ((r = m(y, e, this, t, y !== p)).done) return r.value;
                                var r = g(e),
                                    o = String(this),
                                    e = v(r, RegExp),
                                    n = r.unicode,
                                    s = (r.ignoreCase ? "i" : "") + (r.multiline ? "m" : "") + (r.unicode ? "u" : "") + (S ? "y" : "g"),
                                    i = new e(S ? r : "^(?:" + r.source + ")", s),
                                    a = void 0 === t ? j : t >>> 0;
                                if (0 == a) return [];
                                if (0 === o.length) return null === x(i, o) ? [o] : [];
                                for (var l = 0, c = 0, u = []; c < o.length;) {
                                    i.lastIndex = S ? c : 0;
                                    var d, h = x(i, S ? o : o.slice(c));
                                    if (null === h || (d = w(_(i.lastIndex + (S ? 0 : c)), o.length)) === l) c = b(o, c, n);
                                    else {
                                        if (u.push(o.slice(l, c)), u.length === a) return u;
                                        for (var f = 1; f <= h.length - 1; f++)
                                            if (u.push(h[f]), u.length === a) return u;
                                        c = l = d
                                    }
                                }
                                return u.push(o.slice(l)), u
                            }]
                        }, !S)
                    }, {
                        "../internals/advance-string-index": 8,
                        "../internals/an-object": 10,
                        "../internals/fails": 51,
                        "../internals/fix-regexp-well-known-symbol-logic": 52,
                        "../internals/is-regexp": 77,
                        "../internals/regexp-exec": 112,
                        "../internals/regexp-exec-abstract": 111,
                        "../internals/require-object-coercible": 115,
                        "../internals/species-constructor": 123,
                        "../internals/to-length": 138
                    }],
                    207: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/object-get-own-property-descriptor").f,
                            s = e("../internals/to-length"),
                            i = e("../internals/not-a-regexp"),
                            a = e("../internals/require-object-coercible"),
                            l = e("../internals/correct-is-regexp-logic"),
                            e = e("../internals/is-pure"),
                            c = "".startsWith,
                            u = Math.min,
                            l = l("startsWith");
                        o({
                            target: "String",
                            proto: !0,
                            forced: !(!e && !l && (o = n(String.prototype, "startsWith")) && !o.writable || l)
                        }, {
                            startsWith: function(e) {
                                var t = String(a(this)),
                                    r = (i(e), s(u(1 < arguments.length ? arguments[1] : void 0, t.length))),
                                    e = String(e);
                                return c ? c.call(t, e, r) : t.slice(r, r + e.length) === e
                            }
                        })
                    }, {
                        "../internals/correct-is-regexp-logic": 34,
                        "../internals/export": 50,
                        "../internals/is-pure": 76,
                        "../internals/not-a-regexp": 88,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/require-object-coercible": 115,
                        "../internals/to-length": 138
                    }],
                    208: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/create-html");
                        o({
                            target: "String",
                            proto: !0,
                            forced: e("../internals/string-html-forced")("sub")
                        }, {
                            sub: function() {
                                return n(this, "sub", "", "")
                            }
                        })
                    }, {
                        "../internals/create-html": 36,
                        "../internals/export": 50,
                        "../internals/string-html-forced": 124
                    }],
                    209: [function(e, t, r) {
                        var o = e("../internals/export"),
                            n = e("../internals/string-trim").trim;
                        o({
                            target: "String",
                            proto: !0,
                            forced: e("../internals/string-trim-forced")("trim")
                        }, {
                            trim: function() {
                                return n(this)
                            }
                        })
                    }, {
                        "../internals/export": 50,
                        "../internals/string-trim": 131,
                        "../internals/string-trim-forced": 130
                    }],
                    210: [function(e, t, r) {
                        var o, n, s, i, a, l = e("../internals/export"),
                            c = e("../internals/descriptors"),
                            u = e("../internals/global"),
                            d = e("../internals/has"),
                            h = e("../internals/is-object"),
                            f = e("../internals/object-define-property").f,
                            e = e("../internals/copy-constructor-properties"),
                            p = u.Symbol;
                        !c || "function" != typeof p || "description" in p.prototype && void 0 === p().description || (o = {}, e(n = function() {
                            var e = arguments.length < 1 || void 0 === arguments[0] ? void 0 : String(arguments[0]),
                                t = this instanceof n ? new p(e) : void 0 === e ? p() : p(e);
                            return "" === e && (o[t] = !0), t
                        }, p), (u = n.prototype = p.prototype).constructor = n, s = u.toString, i = "Symbol(test)" == String(p("test")), a = /^Symbol\((.*)\)[^)]+$/, f(u, "description", {
                            configurable: !0,
                            get: function() {
                                var e = h(this) ? this.valueOf() : this,
                                    t = s.call(e);
                                return d(o, e) ? "" : "" === (e = i ? t.slice(7, -1) : t.replace(a, "$1")) ? void 0 : e
                            }
                        }), l({
                            global: !0,
                            forced: !0
                        }, {
                            Symbol: n
                        }))
                    }, {
                        "../internals/copy-constructor-properties": 33,
                        "../internals/descriptors": 43,
                        "../internals/export": 50,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/is-object": 75,
                        "../internals/object-define-property": 93
                    }],
                    211: [function(e, t, r) {
                        e("../internals/define-well-known-symbol")("iterator")
                    }, {
                        "../internals/define-well-known-symbol": 42
                    }],
                    212: [function(e, D, F) {
                        function o(e, t) {
                            var r = O[e] = y(E[S]);
                            return ie(r, {
                                type: j,
                                tag: e,
                                description: t
                            }), l || (r.description = t), r
                        }

                        function r(t, e) {
                            h(t);
                            var r = f(e),
                                e = q(r).concat(i(r));
                            return x(e, function(e) {
                                l && !s.call(r, e) || n(t, e, r[e])
                            }), t
                        }

                        function t(e, t) {
                            var r, e = f(e),
                                t = p(t, !0);
                            if (e !== T || !d(O, t) || d(C, t)) return !(r = le(e, t)) || !d(O, t) || d(e, w) && e[w][t] || (r.enumerable = !0), r
                        }

                        function N(e) {
                            var e = ce(f(e)),
                                t = [];
                            return x(e, function(e) {
                                d(O, e) || d(ee, e) || t.push(e)
                            }), t
                        }

                        function n(e, t, r) {
                            return e === T && n(C, t, r), h(e), t = p(t, !0), h(r), (d(O, t) ? (r.enumerable ? (d(e, w) && e[w][t] && (e[w][t] = !1), r = y(r, {
                                enumerable: m(0, !1)
                            })) : (d(e, w) || M(e, w, m(1, {})), e[w][t] = !0), I) : M)(e, t, r)
                        }

                        function s(e) {
                            var e = p(e, !0),
                                t = ue.call(this, e);
                            return !(this === T && d(O, e) && !d(C, e)) && (!(t || !d(this, e) || !d(O, e) || d(this, w) && this[w][e]) || t)
                        }

                        function i(e) {
                            var t = e === T,
                                e = ce(t ? C : f(e)),
                                r = [];
                            return x(e, function(e) {
                                !d(O, e) || t && !d(T, e) || r.push(O[e])
                            }), r
                        }
                        var a = e("../internals/export"),
                            U = e("../internals/global"),
                            B = e("../internals/get-built-in"),
                            G = e("../internals/is-pure"),
                            l = e("../internals/descriptors"),
                            c = e("../internals/native-symbol"),
                            V = e("../internals/use-symbol-as-uid"),
                            u = e("../internals/fails"),
                            d = e("../internals/has"),
                            z = e("../internals/is-array"),
                            H = e("../internals/is-object"),
                            h = e("../internals/an-object"),
                            W = e("../internals/to-object"),
                            f = e("../internals/to-indexed-object"),
                            p = e("../internals/to-primitive"),
                            m = e("../internals/create-property-descriptor"),
                            y = e("../internals/object-create"),
                            q = e("../internals/object-keys"),
                            X = e("../internals/object-get-own-property-names"),
                            Y = e("../internals/object-get-own-property-names-external"),
                            g = e("../internals/object-get-own-property-symbols"),
                            Z = e("../internals/object-get-own-property-descriptor"),
                            K = e("../internals/object-define-property"),
                            Q = e("../internals/object-property-is-enumerable"),
                            J = e("../internals/create-non-enumerable-property"),
                            v = e("../internals/redefine"),
                            b = e("../internals/shared"),
                            $ = e("../internals/shared-key"),
                            ee = e("../internals/hidden-keys"),
                            te = e("../internals/uid"),
                            re = e("../internals/well-known-symbol"),
                            oe = e("../internals/well-known-symbol-wrapped"),
                            ne = e("../internals/define-well-known-symbol"),
                            se = e("../internals/set-to-string-tag"),
                            _ = e("../internals/internal-state"),
                            x = e("../internals/array-iteration").forEach,
                            w = $("hidden"),
                            j = "Symbol",
                            S = "prototype",
                            e = re("toPrimitive"),
                            ie = _.set,
                            ae = _.getterFor(j),
                            T = Object[S],
                            E = U.Symbol,
                            k = B("JSON", "stringify"),
                            le = Z.f,
                            M = K.f,
                            ce = Y.f,
                            ue = Q.f,
                            O = b("symbols"),
                            C = b("op-symbols"),
                            A = b("string-to-symbol-registry"),
                            L = b("symbol-to-string-registry"),
                            $ = b("wks"),
                            P = !(_ = U.QObject) || !_[S] || !_[S].findChild,
                            I = l && u(function() {
                                return 7 != y(M({}, "a", {
                                    get: function() {
                                        return M(this, "a", {
                                            value: 7
                                        }).a
                                    }
                                })).a
                            }) ? function(e, t, r) {
                                var o = le(T, t);
                                o && delete T[t], M(e, t, r), o && e !== T && M(T, t, o)
                            } : M,
                            R = V ? function(e) {
                                return "symbol" == typeof e
                            } : function(e) {
                                return Object(e) instanceof E
                            };
                        c || (v((E = function() {
                            if (this instanceof E) throw TypeError("Symbol is not a constructor");
                            var e = arguments.length && void 0 !== arguments[0] ? String(arguments[0]) : void 0,
                                t = te(e),
                                r = function(e) {
                                    this === T && r.call(C, e), d(this, w) && d(this[w], t) && (this[w][t] = !1), I(this, t, m(1, e))
                                };
                            return l && P && I(T, t, {
                                configurable: !0,
                                set: r
                            }), o(t, e)
                        })[S], "toString", function() {
                            return ae(this).tag
                        }), v(E, "withoutSetter", function(e) {
                            return o(te(e), e)
                        }), Q.f = s, K.f = n, Z.f = t, X.f = Y.f = N, g.f = i, oe.f = function(e) {
                            return o(re(e), e)
                        }, l && (M(E[S], "description", {
                            configurable: !0,
                            get: function() {
                                return ae(this).description
                            }
                        }), G || v(T, "propertyIsEnumerable", s, {
                            unsafe: !0
                        }))), a({
                            global: !0,
                            wrap: !0,
                            forced: !c,
                            sham: !c
                        }, {
                            Symbol: E
                        }), x(q($), function(e) {
                            ne(e)
                        }), a({
                            target: j,
                            stat: !0,
                            forced: !c
                        }, {
                            for: function(e) {
                                var t, e = String(e);
                                return d(A, e) ? A[e] : (t = E(e), A[e] = t, L[t] = e, t)
                            },
                            keyFor: function(e) {
                                if (!R(e)) throw TypeError(e + " is not a symbol");
                                if (d(L, e)) return L[e]
                            },
                            useSetter: function() {
                                P = !0
                            },
                            useSimple: function() {
                                P = !1
                            }
                        }), a({
                            target: "Object",
                            stat: !0,
                            forced: !c,
                            sham: !l
                        }, {
                            create: function(e, t) {
                                return void 0 === t ? y(e) : r(y(e), t)
                            },
                            defineProperty: n,
                            defineProperties: r,
                            getOwnPropertyDescriptor: t
                        }), a({
                            target: "Object",
                            stat: !0,
                            forced: !c
                        }, {
                            getOwnPropertyNames: N,
                            getOwnPropertySymbols: i
                        }), a({
                            target: "Object",
                            stat: !0,
                            forced: u(function() {
                                g.f(1)
                            })
                        }, {
                            getOwnPropertySymbols: function(e) {
                                return g.f(W(e))
                            }
                        }), k && a({
                            target: "JSON",
                            stat: !0,
                            forced: !c || u(function() {
                                var e = E();
                                return "[null]" != k([e]) || "{}" != k({
                                    a: e
                                }) || "{}" != k(Object(e))
                            })
                        }, {
                            stringify: function(e, t, r) {
                                for (var o, n = [e], s = 1; s < arguments.length;) n.push(arguments[s++]);
                                if ((H(o = t) || void 0 !== e) && !R(e)) return z(t) || (t = function(e, t) {
                                    if ("function" == typeof o && (t = o.call(this, e, t)), !R(t)) return t
                                }), n[1] = t, k.apply(null, n)
                            }
                        }), E[S][e] || J(E[S], e, E[S].valueOf), se(E, j), ee[w] = !0
                    }, {
                        "../internals/an-object": 10,
                        "../internals/array-iteration": 19,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/create-property-descriptor": 39,
                        "../internals/define-well-known-symbol": 42,
                        "../internals/descriptors": 43,
                        "../internals/export": 50,
                        "../internals/fails": 51,
                        "../internals/get-built-in": 57,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/hidden-keys": 62,
                        "../internals/internal-state": 71,
                        "../internals/is-array": 73,
                        "../internals/is-object": 75,
                        "../internals/is-pure": 76,
                        "../internals/native-symbol": 84,
                        "../internals/object-create": 91,
                        "../internals/object-define-property": 93,
                        "../internals/object-get-own-property-descriptor": 94,
                        "../internals/object-get-own-property-names": 96,
                        "../internals/object-get-own-property-names-external": 95,
                        "../internals/object-get-own-property-symbols": 97,
                        "../internals/object-keys": 100,
                        "../internals/object-property-is-enumerable": 101,
                        "../internals/redefine": 110,
                        "../internals/set-to-string-tag": 119,
                        "../internals/shared": 122,
                        "../internals/shared-key": 120,
                        "../internals/to-indexed-object": 136,
                        "../internals/to-object": 139,
                        "../internals/to-primitive": 142,
                        "../internals/uid": 147,
                        "../internals/use-symbol-as-uid": 148,
                        "../internals/well-known-symbol": 150,
                        "../internals/well-known-symbol-wrapped": 149
                    }],
                    213: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-copy-within"),
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("copyWithin", function(e, t) {
                            return n.call(s(this), e, t, 2 < arguments.length ? arguments[2] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-copy-within": 14
                    }],
                    214: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").every,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("every", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19
                    }],
                    215: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-fill"),
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("fill", function(e) {
                            return n.apply(s(this), arguments)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-fill": 15
                    }],
                    216: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            s = e("../internals/array-iteration").filter,
                            i = e("../internals/species-constructor"),
                            a = o.aTypedArray,
                            l = o.aTypedArrayConstructor;
                        (0, o.exportTypedArrayMethod)("filter", function(e) {
                            for (var t = s(a(this), e, 1 < arguments.length ? arguments[1] : void 0), e = i(this, this.constructor), r = 0, o = t.length, n = new(l(e))(o); r < o;) n[r] = t[r++];
                            return n
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19,
                        "../internals/species-constructor": 123
                    }],
                    217: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").findIndex,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("findIndex", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19
                    }],
                    218: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").find,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("find", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19
                    }],
                    219: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Float32", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    220: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Float64", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    221: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").forEach,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("forEach", function(e) {
                            n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19
                    }],
                    222: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-includes").includes,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("includes", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-includes": 18
                    }],
                    223: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-includes").indexOf,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("indexOf", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-includes": 18
                    }],
                    224: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Int16", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    225: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Int32", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    226: [function(e, t, r) {
                        function o() {
                            return a.call(u(this))
                        }
                        var n = e("../internals/global"),
                            s = e("../internals/array-buffer-view-core"),
                            i = e("../modules/es.array.iterator"),
                            e = e("../internals/well-known-symbol")("iterator"),
                            n = n.Uint8Array,
                            a = i.values,
                            l = i.keys,
                            c = i.entries,
                            u = s.aTypedArray,
                            i = s.exportTypedArrayMethod,
                            n = !!(s = n && n.prototype[e]) && ("values" == s.name || null == s.name);
                        i("entries", function() {
                            return c.call(u(this))
                        }), i("keys", function() {
                            return l.call(u(this))
                        }), i("values", o, !n), i(e, o, !n)
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/global": 60,
                        "../internals/well-known-symbol": 150,
                        "../modules/es.array.iterator": 165
                    }],
                    227: [function(e, t, r) {
                        var o = (e = e("../internals/array-buffer-view-core")).aTypedArray,
                            e = e.exportTypedArrayMethod,
                            n = [].join;
                        e("join", function(e) {
                            return n.apply(o(this), arguments)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12
                    }],
                    228: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-last-index-of"),
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("lastIndexOf", function(e) {
                            return n.apply(s(this), arguments)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-last-index-of": 20
                    }],
                    229: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").map,
                            s = e("../internals/species-constructor"),
                            i = o.aTypedArray,
                            a = o.aTypedArrayConstructor;
                        (0, o.exportTypedArrayMethod)("map", function(e) {
                            return n(i(this), e, 1 < arguments.length ? arguments[1] : void 0, function(e, t) {
                                return new(a(s(e, e.constructor)))(t)
                            })
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19,
                        "../internals/species-constructor": 123
                    }],
                    230: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-reduce").right,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("reduceRight", function(e) {
                            return n(s(this), e, arguments.length, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-reduce": 24
                    }],
                    231: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-reduce").left,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("reduce", function(e) {
                            return n(s(this), e, arguments.length, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-reduce": 24
                    }],
                    232: [function(e, t, r) {
                        var n = (e = e("../internals/array-buffer-view-core")).aTypedArray,
                            e = e.exportTypedArrayMethod,
                            s = Math.floor;
                        e("reverse", function() {
                            for (var e, t = n(this).length, r = s(t / 2), o = 0; o < r;) e = this[o], this[o++] = this[--t], this[t] = e;
                            return this
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12
                    }],
                    233: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            i = e("../internals/to-length"),
                            a = e("../internals/to-offset"),
                            l = e("../internals/to-object"),
                            e = e("../internals/fails"),
                            c = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("set", function(e) {
                            c(this);
                            var t = a(1 < arguments.length ? arguments[1] : void 0, 1),
                                r = this.length,
                                o = l(e),
                                n = i(o.length),
                                s = 0;
                            if (r < n + t) throw RangeError("Wrong length");
                            for (; s < n;) this[t + s] = o[s++]
                        }, e(function() {
                            new Int8Array(1).set({})
                        }))
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/fails": 51,
                        "../internals/to-length": 138,
                        "../internals/to-object": 139,
                        "../internals/to-offset": 140
                    }],
                    234: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            i = e("../internals/species-constructor"),
                            e = e("../internals/fails"),
                            a = o.aTypedArray,
                            l = o.aTypedArrayConstructor,
                            o = o.exportTypedArrayMethod,
                            c = [].slice;
                        o("slice", function(e, t) {
                            for (var r = c.call(a(this), e, t), e = i(this, this.constructor), o = 0, n = r.length, s = new(l(e))(n); o < n;) s[o] = r[o++];
                            return s
                        }, e(function() {
                            new Int8Array(1).slice()
                        }))
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/fails": 51,
                        "../internals/species-constructor": 123
                    }],
                    235: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/array-iteration").some,
                            s = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("some", function(e) {
                            return n(s(this), e, 1 < arguments.length ? arguments[1] : void 0)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/array-iteration": 19
                    }],
                    236: [function(e, t, r) {
                        var o = (e = e("../internals/array-buffer-view-core")).aTypedArray,
                            e = e.exportTypedArrayMethod,
                            n = [].sort;
                        e("sort", function(e) {
                            return n.call(o(this), e)
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12
                    }],
                    237: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core"),
                            n = e("../internals/to-length"),
                            s = e("../internals/to-absolute-index"),
                            i = e("../internals/species-constructor"),
                            a = o.aTypedArray;
                        (0, o.exportTypedArrayMethod)("subarray", function(e, t) {
                            var r = a(this),
                                o = r.length,
                                e = s(e, o);
                            return new(i(r, r.constructor))(r.buffer, r.byteOffset + e * r.BYTES_PER_ELEMENT, n((void 0 === t ? o : s(t, o)) - e))
                        })
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/species-constructor": 123,
                        "../internals/to-absolute-index": 134,
                        "../internals/to-length": 138
                    }],
                    238: [function(e, t, r) {
                        var o = e("../internals/global"),
                            n = e("../internals/array-buffer-view-core"),
                            e = e("../internals/fails"),
                            s = o.Int8Array,
                            i = n.aTypedArray,
                            o = n.exportTypedArrayMethod,
                            a = [].toLocaleString,
                            l = [].slice,
                            c = !!s && e(function() {
                                a.call(new s(1))
                            });
                        o("toLocaleString", function() {
                            return a.apply(c ? l.call(i(this)) : i(this), arguments)
                        }, e(function() {
                            return [1, 2].toLocaleString() != new s([1, 2]).toLocaleString()
                        }) || !e(function() {
                            s.prototype.toLocaleString.call([1, 2])
                        }))
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/fails": 51,
                        "../internals/global": 60
                    }],
                    239: [function(e, t, r) {
                        var o = e("../internals/array-buffer-view-core").exportTypedArrayMethod,
                            n = e("../internals/fails"),
                            e = (e = e("../internals/global").Uint8Array) && e.prototype || {},
                            s = [].toString,
                            i = [].join,
                            n = (n(function() {
                                s.call({})
                            }) && (s = function() {
                                return i.call(this)
                            }), e.toString != s);
                        o("toString", s, n)
                    }, {
                        "../internals/array-buffer-view-core": 12,
                        "../internals/fails": 51,
                        "../internals/global": 60
                    }],
                    240: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Uint16", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    241: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Uint32", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    242: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Uint8", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        })
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    243: [function(e, t, r) {
                        e("../internals/typed-array-constructor")("Uint8", function(o) {
                            return function(e, t, r) {
                                return o(this, e, t, r)
                            }
                        }, !0)
                    }, {
                        "../internals/typed-array-constructor": 144
                    }],
                    244: [function(e, t, r) {
                        function o(e) {
                            return function() {
                                return e(this, arguments.length ? arguments[0] : void 0)
                            }
                        }
                        var n, s, i, a, l, c = e("../internals/global"),
                            u = e("../internals/redefine-all"),
                            d = e("../internals/internal-metadata"),
                            h = e("../internals/collection"),
                            f = e("../internals/collection-weak"),
                            p = e("../internals/is-object"),
                            m = e("../internals/internal-state").enforce,
                            e = e("../internals/native-weak-map"),
                            c = !c.ActiveXObject && "ActiveXObject" in c,
                            y = Object.isExtensible,
                            t = t.exports = h("WeakMap", o, f);
                        e && c && (n = f.getConstructor(o, "WeakMap", !0), d.REQUIRED = !0, h = t.prototype, s = h.delete, i = h.has, a = h.get, l = h.set, u(h, {
                            delete: function(e) {
                                var t;
                                return p(e) && !y(e) ? ((t = m(this)).frozen || (t.frozen = new n), s.call(this, e) || t.frozen.delete(e)) : s.call(this, e)
                            },
                            has: function(e) {
                                var t;
                                return p(e) && !y(e) ? ((t = m(this)).frozen || (t.frozen = new n), i.call(this, e) || t.frozen.has(e)) : i.call(this, e)
                            },
                            get: function(e) {
                                var t;
                                return !p(e) || y(e) || ((t = m(this)).frozen || (t.frozen = new n), i.call(this, e)) ? a.call(this, e) : t.frozen.get(e)
                            },
                            set: function(e, t) {
                                var r;
                                return !p(e) || y(e) || ((r = m(this)).frozen || (r.frozen = new n), i.call(this, e)) ? l.call(this, e, t) : r.frozen.set(e, t), this
                            }
                        }))
                    }, {
                        "../internals/collection": 32,
                        "../internals/collection-weak": 31,
                        "../internals/global": 60,
                        "../internals/internal-metadata": 70,
                        "../internals/internal-state": 71,
                        "../internals/is-object": 75,
                        "../internals/native-weak-map": 86,
                        "../internals/redefine-all": 109
                    }],
                    245: [function(e, t, r) {
                        var o, n = e("../internals/global"),
                            s = e("../internals/dom-iterables"),
                            i = e("../internals/array-for-each"),
                            a = e("../internals/create-non-enumerable-property");
                        for (o in s) {
                            var l = n[o];
                            if ((l = l && l.prototype) && l.forEach !== i) try {
                                a(l, "forEach", i)
                            } catch (e) {
                                l.forEach = i
                            }
                        }
                    }, {
                        "../internals/array-for-each": 16,
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/dom-iterables": 45,
                        "../internals/global": 60
                    }],
                    246: [function(e, t, r) {
                        var o, n = e("../internals/global"),
                            s = e("../internals/dom-iterables"),
                            i = e("../modules/es.array.iterator"),
                            a = e("../internals/create-non-enumerable-property"),
                            l = (e = e("../internals/well-known-symbol"))("iterator"),
                            c = e("toStringTag"),
                            u = i.values;
                        for (o in s) {
                            var d = n[o],
                                h = d && d.prototype;
                            if (h) {
                                if (h[l] !== u) try {
                                    a(h, l, u)
                                } catch (e) {
                                    h[l] = u
                                }
                                if (h[c] || a(h, c, o), s[o])
                                    for (var f in i)
                                        if (h[f] !== i[f]) try {
                                            a(h, f, i[f])
                                        } catch (e) {
                                            h[f] = i[f]
                                        }
                            }
                        }
                    }, {
                        "../internals/create-non-enumerable-property": 38,
                        "../internals/dom-iterables": 45,
                        "../internals/global": 60,
                        "../internals/well-known-symbol": 150,
                        "../modules/es.array.iterator": 165
                    }],
                    247: [function(e, t, D) {
                        function n(t) {
                            try {
                                return decodeURIComponent(t)
                            } catch (e) {
                                return t
                            }
                        }

                        function r(e) {
                            return B[e]
                        }

                        function s(e) {
                            return encodeURIComponent(e).replace(U, r)
                        }

                        function u(e) {
                            this.entries.length = 0, I(this.entries, e)
                        }

                        function c(e, t) {
                            if (e < t) throw TypeError("Not enough arguments")
                        }

                        function d() {
                            y(this, d, M);
                            var e, t, r, o, n, s, i, a, l = 0 < arguments.length ? arguments[0] : void 0,
                                c = [];
                            if (C(this, {
                                    type: M,
                                    entries: c,
                                    updateURL: function() {},
                                    updateSearchParams: u
                                }), void 0 !== l)
                                if (x(l))
                                    if ("function" == typeof(e = T(l)))
                                        for (r = (t = e.call(l)).next; !(o = r.call(t)).done;) {
                                            if ((s = (n = (o = S(_(o.value))).next).call(o)).done || (i = n.call(o)).done || !n.call(o).done) throw TypeError("Expected sequence with length 2");
                                            c.push({
                                                key: s.value + "",
                                                value: i.value + ""
                                            })
                                        } else
                                            for (a in l) g(l, a) && c.push({
                                                key: a,
                                                value: l[a] + ""
                                            });
                                    else I(c, "string" == typeof l ? "?" === l.charAt(0) ? l.slice(1) : l : l + "")
                        }
                        e("../modules/es.array.iterator");
                        var o = e("../internals/export"),
                            i = e("../internals/get-built-in"),
                            a = e("../internals/native-url"),
                            l = e("../internals/redefine"),
                            h = e("../internals/redefine-all"),
                            f = e("../internals/set-to-string-tag"),
                            p = e("../internals/create-iterator-constructor"),
                            m = e("../internals/internal-state"),
                            y = e("../internals/an-instance"),
                            g = e("../internals/has"),
                            v = e("../internals/function-bind-context"),
                            b = e("../internals/classof"),
                            _ = e("../internals/an-object"),
                            x = e("../internals/is-object"),
                            w = e("../internals/object-create"),
                            j = e("../internals/create-property-descriptor"),
                            S = e("../internals/get-iterator"),
                            T = e("../internals/get-iterator-method"),
                            e = e("../internals/well-known-symbol"),
                            E = i("fetch"),
                            k = i("Headers"),
                            i = e("iterator"),
                            M = "URLSearchParams",
                            O = M + "Iterator",
                            C = m.set,
                            A = m.getterFor(M),
                            F = m.getterFor(O),
                            N = /\+/g,
                            L = Array(4),
                            P = function(e) {
                                var t, r = e.replace(N, " "),
                                    o = 4;
                                try {
                                    return decodeURIComponent(r)
                                } catch (e) {
                                    for (; o;) r = r.replace((t = o--, L[t - 1] || (L[t - 1] = RegExp("((?:%[\\da-f]{2}){" + t + "})", "gi"))), n);
                                    return r
                                }
                            },
                            U = /[!'()~]|%20/g,
                            B = {
                                "!": "%21",
                                "'": "%27",
                                "(": "%28",
                                ")": "%29",
                                "~": "%7E",
                                "%20": "+"
                            },
                            I = function(e, t) {
                                if (t)
                                    for (var r, o = t.split("&"), n = 0; n < o.length;)(r = o[n++]).length && (r = r.split("="), e.push({
                                        key: P(r.shift()),
                                        value: P(r.join("="))
                                    }))
                            },
                            R = p(function(e, t) {
                                C(this, {
                                    type: O,
                                    iterator: S(A(e).entries),
                                    kind: t
                                })
                            }, "Iterator", function() {
                                var e = F(this),
                                    t = e.kind,
                                    r = (e = e.iterator.next()).value;
                                return e.done || (e.value = "keys" === t ? r.key : "values" === t ? r.value : [r.key, r.value]), e
                            });
                        h(e = d.prototype, {
                            append: function(e, t) {
                                c(arguments.length, 2);
                                var r = A(this);
                                r.entries.push({
                                    key: e + "",
                                    value: t + ""
                                }), r.updateURL()
                            },
                            delete: function(e) {
                                c(arguments.length, 1);
                                for (var t = A(this), r = t.entries, o = e + "", n = 0; n < r.length;) r[n].key === o ? r.splice(n, 1) : n++;
                                t.updateURL()
                            },
                            get: function(e) {
                                c(arguments.length, 1);
                                for (var t = A(this).entries, r = e + "", o = 0; o < t.length; o++)
                                    if (t[o].key === r) return t[o].value;
                                return null
                            },
                            getAll: function(e) {
                                c(arguments.length, 1);
                                for (var t = A(this).entries, r = e + "", o = [], n = 0; n < t.length; n++) t[n].key === r && o.push(t[n].value);
                                return o
                            },
                            has: function(e) {
                                c(arguments.length, 1);
                                for (var t = A(this).entries, r = e + "", o = 0; o < t.length;)
                                    if (t[o++].key === r) return !0;
                                return !1
                            },
                            set: function(e, t) {
                                c(arguments.length, 1);
                                for (var r, o = A(this), n = o.entries, s = !1, i = e + "", a = t + "", l = 0; l < n.length; l++)(r = n[l]).key === i && (s ? n.splice(l--, 1) : (s = !0, r.value = a));
                                s || n.push({
                                    key: i,
                                    value: a
                                }), o.updateURL()
                            },
                            sort: function() {
                                for (var e, t, r = A(this), o = r.entries, n = o.slice(), s = o.length = 0; s < n.length; s++) {
                                    for (e = n[s], t = 0; t < s; t++)
                                        if (o[t].key > e.key) {
                                            o.splice(t, 0, e);
                                            break
                                        } t === s && o.push(e)
                                }
                                r.updateURL()
                            },
                            forEach: function(e) {
                                for (var t, r = A(this).entries, o = v(e, 1 < arguments.length ? arguments[1] : void 0, 3), n = 0; n < r.length;) o((t = r[n++]).value, t.key, this)
                            },
                            keys: function() {
                                return new R(this, "keys")
                            },
                            values: function() {
                                return new R(this, "values")
                            },
                            entries: function() {
                                return new R(this, "entries")
                            }
                        }, {
                            enumerable: !0
                        }), l(e, i, e.entries), l(e, "toString", function() {
                            for (var e, t = A(this).entries, r = [], o = 0; o < t.length;) e = t[o++], r.push(s(e.key) + "=" + s(e.value));
                            return r.join("&")
                        }, {
                            enumerable: !0
                        }), f(d, M), o({
                            global: !0,
                            forced: !a
                        }, {
                            URLSearchParams: d
                        }), a || "function" != typeof E || "function" != typeof k || o({
                            global: !0,
                            enumerable: !0,
                            forced: !0
                        }, {
                            fetch: function(e) {
                                var t, r, o, e = [e];
                                return 1 < arguments.length && (x(t = arguments[1]) && (r = t.body, b(r) === M) && ((o = t.headers ? new k(t.headers) : new k).has("content-type") || o.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"), t = w(t, {
                                    body: j(0, String(r)),
                                    headers: j(0, o)
                                })), e.push(t)), E.apply(this, e)
                            }
                        }), t.exports = {
                            URLSearchParams: d,
                            getState: A
                        }
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/an-object": 10,
                        "../internals/classof": 29,
                        "../internals/create-iterator-constructor": 37,
                        "../internals/create-property-descriptor": 39,
                        "../internals/export": 50,
                        "../internals/function-bind-context": 55,
                        "../internals/get-built-in": 57,
                        "../internals/get-iterator": 59,
                        "../internals/get-iterator-method": 58,
                        "../internals/has": 61,
                        "../internals/internal-state": 71,
                        "../internals/is-object": 75,
                        "../internals/native-url": 85,
                        "../internals/object-create": 91,
                        "../internals/redefine": 110,
                        "../internals/redefine-all": 109,
                        "../internals/set-to-string-tag": 119,
                        "../internals/well-known-symbol": 150,
                        "../modules/es.array.iterator": 165
                    }],
                    248: [function(e, y, F) {
                        function u(e) {
                            var t, r, o, n;
                            if ("number" == typeof e) {
                                for (t = [], r = 0; r < 4; r++) t.unshift(e % 256), e = Y(e / 256);
                                return t.join(".")
                            }
                            if ("object" != typeof e) return e;
                            for (t = "", o = le(e), r = 0; r < 8; r++) n && 0 === e[r] || (n = n && !1, o === r ? (t += r ? ":" : "::", n = !0) : (t += e[r].toString(16), r < 7 && (t += ":")));
                            return "[" + t + "]"
                        }

                        function n(e) {
                            return !e.host || e.cannotBeABaseURL || "file" == e.scheme
                        }

                        function a(e, t, r, o) {
                            var n, s, i, a = r || me,
                                l = 0,
                                c = "",
                                u = !1,
                                d = !1,
                                h = !1;
                            for (r || (e.scheme = "", e.username = "", e.password = "", e.host = null, e.port = null, e.path = [], e.query = null, e.fragment = null, e.cannotBeABaseURL = !1, t = t.replace(ie, "")), t = t.replace(ae, ""), n = b(t); l <= n.length;) {
                                switch (s = n[l], a) {
                                    case me:
                                        if (!s || !J.test(s)) {
                                            if (r) return _;
                                            a = ge;
                                            continue
                                        }
                                        c += s.toLowerCase(), a = ye;
                                        break;
                                    case ye:
                                        if (s && ($.test(s) || "+" == s || "-" == s || "." == s)) c += s.toLowerCase();
                                        else {
                                            if (":" != s) {
                                                if (r) return _;
                                                c = "", a = ge, l = 0;
                                                continue
                                            }
                                            if (r && (M(e) != v(k, c) || "file" == c && (O(e) || null !== e.port) || "file" == e.scheme && !e.host)) return;
                                            if (e.scheme = c, r) return void(M(e) && k[e.scheme] == e.port && (e.port = null));
                                            c = "", "file" == e.scheme ? a = Ee : M(e) && o && o.scheme == e.scheme ? a = ve : M(e) ? a = we : "/" == n[l + 1] ? (a = be, l++) : (e.cannotBeABaseURL = !0, e.path.push(""), a = Oe)
                                        }
                                        break;
                                    case ge:
                                        if (!o || o.cannotBeABaseURL && "#" != s) return _;
                                        if (o.cannotBeABaseURL && "#" == s) {
                                            e.scheme = o.scheme, e.path = o.path.slice(), e.query = o.query, e.fragment = "", e.cannotBeABaseURL = !0, a = D;
                                            break
                                        }
                                        a = "file" == o.scheme ? Ee : _e;
                                        continue;
                                    case ve:
                                        if ("/" != s || "/" != n[l + 1]) {
                                            a = _e;
                                            continue
                                        }
                                        a = A, l++;
                                        break;
                                    case be:
                                        if ("/" == s) {
                                            a = L;
                                            break
                                        }
                                        a = I;
                                        continue;
                                    case _e:
                                        if (e.scheme = o.scheme, s == g) e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port, e.path = o.path.slice(), e.query = o.query;
                                        else if ("/" == s || "\\" == s && M(e)) a = xe;
                                        else if ("?" == s) e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port, e.path = o.path.slice(), e.query = "", a = R;
                                        else {
                                            if ("#" != s) {
                                                e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port, e.path = o.path.slice(), e.path.pop(), a = I;
                                                continue
                                            }
                                            e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port, e.path = o.path.slice(), e.query = o.query, e.fragment = "", a = D
                                        }
                                        break;
                                    case xe:
                                        if (!M(e) || "/" != s && "\\" != s) {
                                            if ("/" != s) {
                                                e.username = o.username, e.password = o.password, e.host = o.host, e.port = o.port, a = I;
                                                continue
                                            }
                                            a = L
                                        } else a = A;
                                        break;
                                    case we:
                                        if (a = A, "/" != s || "/" != c.charAt(l + 1)) continue;
                                        l++;
                                        break;
                                    case A:
                                        if ("/" == s || "\\" == s) break;
                                        a = L;
                                        continue;
                                    case L:
                                        if ("@" == s) {
                                            u && (c = "%40" + c);
                                            for (var u = !0, f = b(c), p = 0; p < f.length; p++) {
                                                var m = f[p];
                                                ":" != m || h ? (m = E(m, T), h ? e.password += m : e.username += m) : h = !0
                                            }
                                            c = ""
                                        } else if (s == g || "/" == s || "?" == s || "#" == s || "\\" == s && M(e)) {
                                            if (u && "" == c) return K;
                                            l -= b(c).length + 1, c = "", a = je
                                        } else c += s;
                                        break;
                                    case je:
                                    case Se:
                                        if (r && "file" == e.scheme) {
                                            a = Me;
                                            continue
                                        }
                                        if (":" != s || d) {
                                            if (s == g || "/" == s || "?" == s || "#" == s || "\\" == s && M(e)) {
                                                if (M(e) && "" == c) return x;
                                                if (r && "" == c && (O(e) || null !== e.port)) return;
                                                if (i = j(e, c)) return i;
                                                if (c = "", a = P, r) return;
                                                continue
                                            }
                                            "[" == s ? d = !0 : "]" == s && (d = !1), c += s
                                        } else {
                                            if ("" == c) return x;
                                            if (i = j(e, c)) return i;
                                            if (c = "", a = Te, r == Se) return
                                        }
                                        break;
                                    case Te:
                                        if (!w.test(s)) {
                                            if (s == g || "/" == s || "?" == s || "#" == s || "\\" == s && M(e) || r) {
                                                if ("" != c) {
                                                    var y = parseInt(c, 10);
                                                    if (65535 < y) return Q;
                                                    e.port = M(e) && y === k[e.scheme] ? null : y, c = ""
                                                }
                                                if (r) return;
                                                a = P;
                                                continue
                                            }
                                            return Q
                                        }
                                        c += s;
                                        break;
                                    case Ee:
                                        if (e.scheme = "file", "/" == s || "\\" == s) a = ke;
                                        else {
                                            if (!o || "file" != o.scheme) {
                                                a = I;
                                                continue
                                            }
                                            if (s == g) e.host = o.host, e.path = o.path.slice(), e.query = o.query;
                                            else if ("?" == s) e.host = o.host, e.path = o.path.slice(), e.query = "", a = R;
                                            else {
                                                if ("#" != s) {
                                                    de(n.slice(l).join("")) || (e.host = o.host, e.path = o.path.slice(), he(e)), a = I;
                                                    continue
                                                }
                                                e.host = o.host, e.path = o.path.slice(), e.query = o.query, e.fragment = "", a = D
                                            }
                                        }
                                        break;
                                    case ke:
                                        if ("/" == s || "\\" == s) {
                                            a = Me;
                                            break
                                        }
                                        o && "file" == o.scheme && !de(n.slice(l).join("")) && (C(o.path[0], !0) ? e.path.push(o.path[0]) : e.host = o.host), a = I;
                                        continue;
                                    case Me:
                                        if (s == g || "/" == s || "\\" == s || "?" == s || "#" == s) {
                                            if (!r && C(c)) a = I;
                                            else {
                                                if ("" == c) {
                                                    if (e.host = "", r) return
                                                } else {
                                                    if (i = j(e, c)) return i;
                                                    if ("localhost" == e.host && (e.host = ""), r) return;
                                                    c = ""
                                                }
                                                a = P
                                            }
                                            continue
                                        }
                                        c += s;
                                        break;
                                    case P:
                                        if (M(e)) {
                                            if (a = I, "/" != s && "\\" != s) continue
                                        } else if (r || "?" != s)
                                            if (r || "#" != s) {
                                                if (s != g && (a = I, "/" != s)) continue
                                            } else e.fragment = "", a = D;
                                        else e.query = "", a = R;
                                        break;
                                    case I:
                                        if (s == g || "/" == s || "\\" == s && M(e) || !r && ("?" == s || "#" == s)) {
                                            if (pe(c) ? (he(e), "/" == s || "\\" == s && M(e) || e.path.push("")) : fe(c) ? "/" == s || "\\" == s && M(e) || e.path.push("") : ("file" == e.scheme && !e.path.length && C(c) && (e.host && (e.host = ""), c = c.charAt(0) + ":"), e.path.push(c)), c = "", "file" == e.scheme && (s == g || "?" == s || "#" == s))
                                                for (; 1 < e.path.length && "" === e.path[0];) e.path.shift();
                                            "?" == s ? (e.query = "", a = R) : "#" == s && (e.fragment = "", a = D)
                                        } else c += E(s, ue);
                                        break;
                                    case Oe:
                                        "?" == s ? (e.query = "", a = R) : "#" == s ? (e.fragment = "", a = D) : s != g && (e.path[0] += E(s, S));
                                        break;
                                    case R:
                                        r || "#" != s ? s != g && ("'" == s && M(e) ? e.query += "%27" : e.query += "#" == s ? "%23" : E(s, S)) : (e.fragment = "", a = D);
                                        break;
                                    case D:
                                        s != g && (e.fragment += E(s, ce))
                                }
                                l++
                            }
                        }

                        function l(e) {
                            var t, r, o = G(this, l, "URL"),
                                n = 1 < arguments.length ? arguments[1] : void 0,
                                e = String(e),
                                s = X(o, {
                                    type: "URL"
                                });
                            if (void 0 !== n)
                                if (n instanceof l) t = p(n);
                                else if (r = a(t = {}, String(n))) throw TypeError(r);
                            if (r = a(s, e, null, t)) throw TypeError(r);
                            var i = s.searchParams = new q;
                            (n = f(i)).updateSearchParams(s.query), n.updateURL = function() {
                                s.query = String(i) || null
                            }, c || (o.href = m.call(o), o.origin = Ce.call(o), o.protocol = Ae.call(o), o.username = Le.call(o), o.password = Pe.call(o), o.host = Ie.call(o), o.hostname = Re.call(o), o.port = De.call(o), o.pathname = Fe.call(o), o.search = Ne.call(o), o.searchParams = Ue.call(o), o.hash = Be.call(o))
                        }

                        function t(e, t) {
                            return {
                                get: e,
                                set: t,
                                configurable: !0,
                                enumerable: !0
                            }
                        }
                        e("../modules/es.string.iterator");
                        var g, r, o, N = e("../internals/export"),
                            c = e("../internals/descriptors"),
                            U = e("../internals/native-url"),
                            s = e("../internals/global"),
                            B = e("../internals/object-define-properties"),
                            i = e("../internals/redefine"),
                            G = e("../internals/an-instance"),
                            v = e("../internals/has"),
                            d = e("../internals/object-assign"),
                            b = e("../internals/array-from"),
                            V = e("../internals/string-multibyte").codeAt,
                            z = e("../internals/string-punycode-to-ascii"),
                            H = e("../internals/set-to-string-tag"),
                            W = e("../modules/web.url-search-params"),
                            e = e("../internals/internal-state"),
                            h = s.URL,
                            q = W.URLSearchParams,
                            f = W.getState,
                            X = e.set,
                            p = e.getterFor("URL"),
                            Y = Math.floor,
                            Z = Math.pow,
                            K = "Invalid authority",
                            _ = "Invalid scheme",
                            x = "Invalid host",
                            Q = "Invalid port",
                            J = /[A-Za-z]/,
                            $ = /[\d+-.A-Za-z]/,
                            w = /\d/,
                            ee = /^(0x|0X)/,
                            te = /^[0-7]+$/,
                            re = /^\d+$/,
                            oe = /^[\dA-Fa-f]+$/,
                            ne = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/,
                            se = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/,
                            ie = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g,
                            ae = /[\u0009\u000A\u000D]/g,
                            j = function(e, t) {
                                var r, o, n;
                                if ("[" == t.charAt(0)) return "]" == t.charAt(t.length - 1) && (r = (e => {
                                    function t() {
                                        return e.charAt(h)
                                    }
                                    var r, o, n, s, i, a, l, c = [0, 0, 0, 0, 0, 0, 0, 0],
                                        u = 0,
                                        d = null,
                                        h = 0;
                                    if (":" == t()) {
                                        if (":" != e.charAt(1)) return;
                                        h += 2, d = ++u
                                    }
                                    for (; t();) {
                                        if (8 == u) return;
                                        if (":" == t()) {
                                            if (null !== d) return;
                                            h++, d = ++u
                                        } else {
                                            for (r = o = 0; o < 4 && oe.test(t());) r = 16 * r + parseInt(t(), 16), h++, o++;
                                            if ("." == t()) {
                                                if (0 == o) return;
                                                if (h -= o, 6 < u) return;
                                                for (n = 0; t();) {
                                                    if (s = null, 0 < n) {
                                                        if (!("." == t() && n < 4)) return;
                                                        h++
                                                    }
                                                    if (!w.test(t())) return;
                                                    for (; w.test(t());) {
                                                        if (i = parseInt(t(), 10), null === s) s = i;
                                                        else {
                                                            if (0 == s) return;
                                                            s = 10 * s + i
                                                        }
                                                        if (255 < s) return;
                                                        h++
                                                    }
                                                    c[u] = 256 * c[u] + s, 2 != ++n && 4 != n || u++
                                                }
                                                if (4 != n) return;
                                                break
                                            }
                                            if (":" == t()) {
                                                if (h++, !t()) return
                                            } else if (t()) return;
                                            c[u++] = r
                                        }
                                    }
                                    if (null !== d)
                                        for (a = u - d, u = 7; 0 != u && 0 < a;) l = c[u], c[u--] = c[d + a - 1], c[d + --a] = l;
                                    else if (8 != u) return;
                                    return c
                                })(t.slice(1, -1))) ? void(e.host = r) : x;
                                if (M(e)) return t = z(t), ne.test(t) || null === (r = (e => {
                                    var t, r, o, n, s, i, a, l = e.split(".");
                                    if (l.length && "" == l[l.length - 1] && l.pop(), 4 < (t = l.length)) return e;
                                    for (r = [], o = 0; o < t; o++) {
                                        if ("" == (n = l[o])) return e;
                                        if (s = 10, 1 < n.length && "0" == n.charAt(0) && (s = ee.test(n) ? 16 : 8, n = n.slice(8 == s ? 1 : 2)), "" === n) i = 0;
                                        else {
                                            if (!(10 == s ? re : 8 == s ? te : oe).test(n)) return e;
                                            i = parseInt(n, s)
                                        }
                                        r.push(i)
                                    }
                                    for (o = 0; o < t; o++)
                                        if (i = r[o], o == t - 1) {
                                            if (i >= Z(256, 5 - t)) return null
                                        } else if (255 < i) return null;
                                    for (a = r.pop(), o = 0; o < r.length; o++) a += r[o] * Z(256, 3 - o);
                                    return a
                                })(t)) ? x : void(e.host = r);
                                if (se.test(t)) return x;
                                for (r = "", o = b(t), n = 0; n < o.length; n++) r += E(o[n], S);
                                e.host = r
                            },
                            le = function(e) {
                                for (var t = null, r = 1, o = null, n = 0, s = 0; s < 8; s++) 0 !== e[s] ? (r < n && (t = o, r = n), o = null, n = 0) : (null === o && (o = s), ++n);
                                return r < n && (t = o, r = n), t
                            },
                            S = {},
                            ce = d({}, S, {
                                " ": 1,
                                '"': 1,
                                "<": 1,
                                ">": 1,
                                "`": 1
                            }),
                            ue = d({}, ce, {
                                "#": 1,
                                "?": 1,
                                "{": 1,
                                "}": 1
                            }),
                            T = d({}, ue, {
                                "/": 1,
                                ":": 1,
                                ";": 1,
                                "=": 1,
                                "@": 1,
                                "[": 1,
                                "\\": 1,
                                "]": 1,
                                "^": 1,
                                "|": 1
                            }),
                            E = function(e, t) {
                                var r = V(e, 0);
                                return 32 < r && r < 127 && !v(t, e) ? e : encodeURIComponent(e)
                            },
                            k = {
                                ftp: 21,
                                file: null,
                                http: 80,
                                https: 443,
                                ws: 80,
                                wss: 443
                            },
                            M = function(e) {
                                return v(k, e.scheme)
                            },
                            O = function(e) {
                                return "" != e.username || "" != e.password
                            },
                            C = function(e, t) {
                                return 2 == e.length && J.test(e.charAt(0)) && (":" == (e = e.charAt(1)) || !t && "|" == e)
                            },
                            de = function(e) {
                                return 1 < e.length && C(e.slice(0, 2)) && (2 == e.length || "/" === (e = e.charAt(2)) || "\\" === e || "?" === e || "#" === e)
                            },
                            he = function(e) {
                                var t = e.path,
                                    r = t.length;
                                !r || "file" == e.scheme && 1 == r && C(t[0], !0) || t.pop()
                            },
                            fe = function(e) {
                                return "." === e || "%2e" === e.toLowerCase()
                            },
                            pe = function(e) {
                                return ".." === (e = e.toLowerCase()) || "%2e." === e || ".%2e" === e || "%2e%2e" === e
                            },
                            me = {},
                            ye = {},
                            ge = {},
                            ve = {},
                            be = {},
                            _e = {},
                            xe = {},
                            we = {},
                            A = {},
                            L = {},
                            je = {},
                            Se = {},
                            Te = {},
                            Ee = {},
                            ke = {},
                            Me = {},
                            P = {},
                            I = {},
                            Oe = {},
                            R = {},
                            D = {},
                            s = l.prototype,
                            m = function() {
                                var e = p(this),
                                    t = e.scheme,
                                    r = e.username,
                                    o = e.password,
                                    n = e.host,
                                    s = e.port,
                                    i = e.path,
                                    a = e.query,
                                    l = e.fragment,
                                    c = t + ":";
                                return null !== n ? (c += "//", O(e) && (c += r + (o ? ":" + o : "") + "@"), c += u(n), null !== s && (c += ":" + s)) : "file" == t && (c += "//"), c += e.cannotBeABaseURL ? i[0] : i.length ? "/" + i.join("/") : "", null !== a && (c += "?" + a), null !== l && (c += "#" + l), c
                            },
                            Ce = function() {
                                var e = p(this),
                                    t = e.scheme,
                                    r = e.port;
                                if ("blob" == t) try {
                                    return new URL(t.path[0]).origin
                                } catch (e) {
                                    return "null"
                                }
                                return "file" != t && M(e) ? t + "://" + u(e.host) + (null !== r ? ":" + r : "") : "null"
                            },
                            Ae = function() {
                                return p(this).scheme + ":"
                            },
                            Le = function() {
                                return p(this).username
                            },
                            Pe = function() {
                                return p(this).password
                            },
                            Ie = function() {
                                var e = (t = p(this)).host,
                                    t = t.port;
                                return null === e ? "" : null === t ? u(e) : u(e) + ":" + t
                            },
                            Re = function() {
                                var e = p(this).host;
                                return null === e ? "" : u(e)
                            },
                            De = function() {
                                var e = p(this).port;
                                return null === e ? "" : String(e)
                            },
                            Fe = function() {
                                var e = p(this),
                                    t = e.path;
                                return e.cannotBeABaseURL ? t[0] : t.length ? "/" + t.join("/") : ""
                            },
                            Ne = function() {
                                var e = p(this).query;
                                return e ? "?" + e : ""
                            },
                            Ue = function() {
                                return p(this).searchParams
                            },
                            Be = function() {
                                var e = p(this).fragment;
                                return e ? "#" + e : ""
                            };
                        c && B(s, {
                            href: t(m, function(e) {
                                var t = p(this);
                                if (e = a(t, e = String(e))) throw TypeError(e);
                                f(t.searchParams).updateSearchParams(t.query)
                            }),
                            origin: t(Ce),
                            protocol: t(Ae, function(e) {
                                a(p(this), String(e) + ":", me)
                            }),
                            username: t(Le, function(e) {
                                var t = p(this),
                                    r = b(String(e));
                                if (!n(t)) {
                                    t.username = "";
                                    for (var o = 0; o < r.length; o++) t.username += E(r[o], T)
                                }
                            }),
                            password: t(Pe, function(e) {
                                var t = p(this),
                                    r = b(String(e));
                                if (!n(t)) {
                                    t.password = "";
                                    for (var o = 0; o < r.length; o++) t.password += E(r[o], T)
                                }
                            }),
                            host: t(Ie, function(e) {
                                var t = p(this);
                                t.cannotBeABaseURL || a(t, String(e), je)
                            }),
                            hostname: t(Re, function(e) {
                                var t = p(this);
                                t.cannotBeABaseURL || a(t, String(e), Se)
                            }),
                            port: t(De, function(e) {
                                var t = p(this);
                                n(t) || ("" == (e = String(e)) ? t.port = null : a(t, e, Te))
                            }),
                            pathname: t(Fe, function(e) {
                                var t = p(this);
                                t.cannotBeABaseURL || (t.path = [], a(t, e + "", P))
                            }),
                            search: t(Ne, function(e) {
                                var t = p(this);
                                "" == (e = String(e)) ? t.query = null: ("?" == e.charAt(0) && (e = e.slice(1)), t.query = "", a(t, e, R)), f(t.searchParams).updateSearchParams(t.query)
                            }),
                            searchParams: t(Ue),
                            hash: t(Be, function(e) {
                                var t = p(this);
                                "" == (e = String(e)) ? t.fragment = null: ("#" == e.charAt(0) && (e = e.slice(1)), t.fragment = "", a(t, e, D))
                            })
                        }), i(s, "toJSON", function() {
                            return m.call(this)
                        }, {
                            enumerable: !0
                        }), i(s, "toString", function() {
                            return m.call(this)
                        }, {
                            enumerable: !0
                        }), h && (r = h.createObjectURL, o = h.revokeObjectURL, r && i(l, "createObjectURL", function(e) {
                            return r.apply(h, arguments)
                        }), o) && i(l, "revokeObjectURL", function(e) {
                            return o.apply(h, arguments)
                        }), H(l, "URL"), N({
                            global: !0,
                            forced: !U,
                            sham: !c
                        }, {
                            URL: l
                        })
                    }, {
                        "../internals/an-instance": 9,
                        "../internals/array-from": 17,
                        "../internals/descriptors": 43,
                        "../internals/export": 50,
                        "../internals/global": 60,
                        "../internals/has": 61,
                        "../internals/internal-state": 71,
                        "../internals/native-url": 85,
                        "../internals/object-assign": 90,
                        "../internals/object-define-properties": 92,
                        "../internals/redefine": 110,
                        "../internals/set-to-string-tag": 119,
                        "../internals/string-multibyte": 125,
                        "../internals/string-punycode-to-ascii": 128,
                        "../modules/es.string.iterator": 200,
                        "../modules/web.url-search-params": 247
                    }],
                    249: [function(e, t, r) {
                        t.exports = e("./").polyfill()
                    }, {
                        "./": 250
                    }],
                    250: [function(G, t, r) {
                        ! function(U, B) {
                            var e = function() {
                                function l(e) {
                                    return "function" == typeof e
                                }
                                var r = Array.isArray || function(e) {
                                        return "[object Array]" === Object.prototype.toString.call(e)
                                    },
                                    o = 0,
                                    t = void 0,
                                    n = void 0,
                                    i = function(e, t) {
                                        d[o] = e, d[o + 1] = t, 2 === (o += 2) && (n ? n(h) : y())
                                    },
                                    e = "undefined" != typeof window ? window : void 0,
                                    s = (s = e || {}).MutationObserver || s.WebKitMutationObserver,
                                    a = "undefined" == typeof self && void 0 !== U && "[object process]" === {}.toString.call(U),
                                    c = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel;

                                function u() {
                                    var e = setTimeout;
                                    return function() {
                                        return e(h, 1)
                                    }
                                }
                                var d = new Array(1e3);

                                function h() {
                                    for (var e = 0; e < o; e += 2)(0, d[e])(d[e + 1]), d[e] = void 0, d[e + 1] = void 0;
                                    o = 0
                                }
                                var f, p, m, y = void 0;

                                function g(e, t) {
                                    var r, o = this,
                                        n = new this.constructor(_),
                                        s = (void 0 === n[b] && L(n), o._state);
                                    return s ? (r = arguments[s - 1], i(function() {
                                        return C(s, n, r, o._result)
                                    })) : M(o, n, e, t), n
                                }

                                function v(e) {
                                    var t;
                                    return e && "object" == typeof e && e.constructor === this ? e : (T(t = new this(_), e), t)
                                }
                                var y = a ? function() {
                                        return U.nextTick(h)
                                    } : s ? (p = 0, a = new s(h), m = document.createTextNode(""), a.observe(m, {
                                        characterData: !0
                                    }), function() {
                                        m.data = p = ++p % 2
                                    }) : c ? ((f = new MessageChannel).port1.onmessage = h, function() {
                                        return f.port2.postMessage(0)
                                    }) : (void 0 === e && "function" == typeof G ? function() {
                                        try {
                                            var e = Function("return this")().require("vertx");
                                            return void 0 !== (t = e.runOnLoop || e.runOnContext) ? function() {
                                                t(h)
                                            } : u()
                                        } catch (e) {
                                            return u()
                                        }
                                    } : u)(),
                                    b = Math.random().toString(36).substring(2);

                                function _() {}
                                var x = void 0,
                                    w = 1,
                                    j = 2;

                                function D(e, n, t) {
                                    i(function(r) {
                                        var o = !1,
                                            e = ((e, t) => {
                                                try {
                                                    e.call(t, function(e) {
                                                        o || (o = !0, (n !== e ? T : E)(r, e))
                                                    }, function(e) {
                                                        o || (o = !0, k(r, e))
                                                    })
                                                } catch (e) {
                                                    return e
                                                }
                                            })(t, n, r._label);
                                        !o && e && (o = !0, k(r, e))
                                    }, e)
                                }

                                function S(e, t, r) {
                                    var o, n;
                                    t.constructor === e.constructor && r === g && t.constructor.resolve === v ? (o = e, (n = t)._state === w ? E(o, n._result) : n._state === j ? k(o, n._result) : M(n, void 0, function(e) {
                                        return T(o, e)
                                    }, function(e) {
                                        return k(o, e)
                                    })) : void 0 !== r && l(r) ? D(e, t, r) : E(e, t)
                                }

                                function T(e, t) {
                                    if (e === t) k(e, new TypeError("You cannot resolve a promise with itself"));
                                    else if (r = typeof t, null === t || "object" != r && "function" != r) E(e, t);
                                    else {
                                        r = void 0;
                                        try {
                                            r = t.then
                                        } catch (t) {
                                            return void k(e, t)
                                        }
                                        S(e, t, r)
                                    }
                                    var r
                                }

                                function F(e) {
                                    e._onerror && e._onerror(e._result), O(e)
                                }

                                function E(e, t) {
                                    e._state === x && (e._result = t, e._state = w, 0 !== e._subscribers.length) && i(O, e)
                                }

                                function k(e, t) {
                                    e._state === x && (e._state = j, e._result = t, i(F, e))
                                }

                                function M(e, t, r, o) {
                                    var n = e._subscribers,
                                        s = n.length;
                                    e._onerror = null, n[s] = t, n[s + w] = r, n[s + j] = o, 0 === s && e._state && i(O, e)
                                }

                                function O(e) {
                                    var t = e._subscribers,
                                        r = e._state;
                                    if (0 !== t.length) {
                                        for (var o, n = void 0, s = e._result, i = 0; i < t.length; i += 3) o = t[i], n = t[i + r], o ? C(r, o, n, s) : n(s);
                                        e._subscribers.length = 0
                                    }
                                }

                                function C(e, t, r, o) {
                                    var n = l(r),
                                        s = void 0,
                                        i = void 0,
                                        a = !0;
                                    if (n) {
                                        try {
                                            s = r(o)
                                        } catch (e) {
                                            a = !1, i = e
                                        }
                                        if (t === s) return void k(t, new TypeError("A promises callback cannot return that same promise."))
                                    } else s = o;
                                    t._state === x && (n && a ? T(t, s) : !1 === a ? k(t, i) : e === w ? E(t, s) : e === j && k(t, s))
                                }
                                var A = 0;

                                function L(e) {
                                    e[b] = A++, e._state = void 0, e._result = void 0, e._subscribers = []
                                }
                                P.prototype._enumerate = function(e) {
                                    for (var t = 0; this._state === x && t < e.length; t++) this._eachEntry(e[t], t)
                                }, P.prototype._eachEntry = function(t, e) {
                                    var r = this._instanceConstructor,
                                        o = r.resolve;
                                    if (o === v) {
                                        var n, s = void 0,
                                            i = void 0,
                                            a = !1;
                                        try {
                                            s = t.then
                                        } catch (e) {
                                            a = !0, i = e
                                        }
                                        s === g && t._state !== x ? this._settledAt(t._state, e, t._result) : "function" != typeof s ? (this._remaining--, this._result[e] = t) : r === I ? (n = new r(_), a ? k(n, i) : S(n, t, s), this._willSettleAt(n, e)) : this._willSettleAt(new r(function(e) {
                                            return e(t)
                                        }), e)
                                    } else this._willSettleAt(o(t), e)
                                }, P.prototype._settledAt = function(e, t, r) {
                                    var o = this.promise;
                                    o._state === x && (this._remaining--, e === j ? k(o, r) : this._result[t] = r), 0 === this._remaining && E(o, this._result)
                                }, P.prototype._willSettleAt = function(e, t) {
                                    var r = this;
                                    M(e, void 0, function(e) {
                                        return r._settledAt(w, t, e)
                                    }, function(e) {
                                        return r._settledAt(j, t, e)
                                    })
                                };
                                var N = P;

                                function P(e, t) {
                                    this._instanceConstructor = e, this.promise = new e(_), this.promise[b] || L(this.promise), r(t) ? (this.length = t.length, this._remaining = t.length, this._result = new Array(this.length), 0 !== this.length && (this.length = this.length || 0, this._enumerate(t), 0 !== this._remaining) || E(this.promise, this._result)) : k(this.promise, new Error("Array Methods must be provided an Array"))
                                }
                                R.prototype.catch = function(e) {
                                    return this.then(null, e)
                                }, R.prototype.finally = function(t) {
                                    var r = this.constructor;
                                    return l(t) ? this.then(function(e) {
                                        return r.resolve(t()).then(function() {
                                            return e
                                        })
                                    }, function(e) {
                                        return r.resolve(t()).then(function() {
                                            throw e
                                        })
                                    }) : this.then(t, t)
                                };
                                var I = R;

                                function R(e) {
                                    if (this[b] = A++, this._result = this._state = void 0, this._subscribers = [], _ !== e) {
                                        if ("function" != typeof e) throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");
                                        if (!(this instanceof R)) throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
                                        var t = this;
                                        try {
                                            e(function(e) {
                                                T(t, e)
                                            }, function(e) {
                                                k(t, e)
                                            })
                                        } catch (e) {
                                            k(t, e)
                                        }
                                    }
                                }
                                return I.prototype.then = g, I.all = function(e) {
                                    return new N(this, e).promise
                                }, I.race = function(n) {
                                    var s = this;
                                    return r(n) ? new s(function(e, t) {
                                        for (var r = n.length, o = 0; o < r; o++) s.resolve(n[o]).then(e, t)
                                    }) : new s(function(e, t) {
                                        return t(new TypeError("You must pass an array to race."))
                                    })
                                }, I.resolve = v, I.reject = function(e) {
                                    var t = new this(_);
                                    return k(t, e), t
                                }, I._setScheduler = function(e) {
                                    n = e
                                }, I._setAsap = function(e) {
                                    i = e
                                }, I._asap = i, I.polyfill = function() {
                                    var e = void 0;
                                    if (void 0 !== B) e = B;
                                    else if ("undefined" != typeof self) e = self;
                                    else try {
                                        e = Function("return this")()
                                    } catch (e) {
                                        throw new Error("polyfill failed because global object is unavailable in this environment")
                                    }
                                    var t = e.Promise;
                                    if (t) {
                                        var r = null;
                                        try {
                                            r = Object.prototype.toString.call(t.resolve())
                                        } catch (e) {}
                                        if ("[object Promise]" === r && !t.cast) return
                                    }
                                    e.Promise = I
                                }, I.Promise = I
                            };
                            "object" == typeof r && void 0 !== t ? t.exports = e() : this.ES6Promise = e()
                        }.call(this, G("_process"), void 0 !== o.g ? o.g : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
                    }, {
                        _process: 259
                    }],
                    251: [function(e, t, r) {
                        var o = function(e, t) {
                            function d(t) {
                                try {
                                    delete window[t]
                                } catch (e) {
                                    window[t] = void 0
                                }
                            }

                            function h(e) {
                                (e = document.getElementById(e)) && document.getElementsByTagName("head")[0].removeChild(e)
                            }
                            t.exports = function(s) {
                                var i = arguments.length <= 1 || void 0 === arguments[1] ? {} : arguments[1],
                                    a = s,
                                    l = i.timeout || 5e3,
                                    c = i.jsonpCallback || "callback",
                                    u = void 0;
                                return new Promise(function(t, e) {
                                    var r = i.jsonpCallbackFunction || "jsonp_" + Date.now() + "_" + Math.ceil(1e5 * Math.random()),
                                        o = c + "_" + r,
                                        n = (window[r] = function(e) {
                                            t({
                                                ok: !0,
                                                json: function() {
                                                    return Promise.resolve(e)
                                                }
                                            }), u && clearTimeout(u), h(o), d(r)
                                        }, a += -1 === a.indexOf("?") ? "?" : "&", document.createElement("script"));
                                    n.setAttribute("src", "" + a + c + "=" + r), i.charset && n.setAttribute("charset", i.charset), n.id = o, document.getElementsByTagName("head")[0].appendChild(n), u = setTimeout(function() {
                                        e(new Error("JSONP request to " + s + " timed out")), d(r), h(o), window[r] = function() {
                                            d(r)
                                        }
                                    }, l), n.onerror = function() {
                                        e(new Error("JSONP request to " + s + " failed")), d(r), h(o), u && clearTimeout(u)
                                    }
                                })
                            }
                        };
                        void 0 !== r && void 0 !== t ? o(0, t) : (o(o = {
                            exports: {}
                        }, o), this.fetchJsonp = o.exports)
                    }, {}],
                    252: [function(e, t, r) {
                        var o = (a => {
                            var l, c, u, d, h, f, p, m, o, e;
                            if (!(void 0 === a || "undefined" != typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent))) return e = a.document, l = function() {
                                return a.URL || a.webkitURL || a
                            }, c = e.createElementNS("http://www.w3.org/1999/xhtml", "a"), u = "download" in c, d = /constructor/i.test(a.HTMLElement) || a.safari, h = /CriOS\/[\d]+/.test(navigator.userAgent), f = function(e) {
                                (a.setImmediate || a.setTimeout)(function() {
                                    throw e
                                }, 0)
                            }, p = function(e) {
                                setTimeout(function() {
                                    "string" == typeof e ? l().revokeObjectURL(e) : e.remove()
                                }, 4e4)
                            }, m = function(e) {
                                return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) ? new Blob([String.fromCharCode(65279), e], {
                                    type: e.type
                                }) : e
                            }, e = (o = function(e, r, t) {
                                t || (e = m(e));

                                function o() {
                                    for (var e = i, t = "writestart progress write writeend".split(" "), r = (t = [].concat(t)).length; r--;) {
                                        var o = e["on" + t[r]];
                                        if ("function" == typeof o) try {
                                            o.call(e, e)
                                        } catch (e) {
                                            f(e)
                                        }
                                    }
                                }
                                var n, s, i = this,
                                    t = "application/octet-stream" === e.type;
                                i.readyState = i.INIT, u ? (n = l().createObjectURL(e), setTimeout(function() {
                                    var e, t;
                                    c.href = n, c.download = r, e = c, t = new MouseEvent("click"), e.dispatchEvent(t), o(), p(n), i.readyState = i.DONE
                                })) : (h || t && d) && a.FileReader ? ((s = new FileReader).onloadend = function() {
                                    var e = h ? s.result : s.result.replace(/^data:[^;]*;/, "data:attachment/file;");
                                    a.open(e, "_blank") || (a.location.href = e), i.readyState = i.DONE, o()
                                }, s.readAsDataURL(e), i.readyState = i.INIT) : (n = n || l().createObjectURL(e), !t && a.open(n, "_blank") || (a.location.href = n), i.readyState = i.DONE, o(), p(n))
                            }).prototype, "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function(e, t, r) {
                                return t = t || e.name || "download", r || (e = m(e)), navigator.msSaveOrOpenBlob(e, t)
                            } : (e.abort = function() {}, e.readyState = e.INIT = 0, e.WRITING = 1, e.DONE = 2, e.error = e.onwritestart = e.onprogress = e.onwrite = e.onabort = e.onerror = e.onwriteend = null, function(e, t, r) {
                                return new o(e, t || e.name || "download", r)
                            })
                        })("undefined" != typeof self && self || "undefined" != typeof window && window || this.content);
                        void 0 !== t && t.exports && (t.exports.saveAs = o)
                    }, {}],
                    253: [function(e, t, r) {
                        var o, n = Object.defineProperty,
                            s = (n(r, "__esModule", {
                                value: !0
                            }), r),
                            i = {
                                GIFEncoder: () => h,
                                applyPalette: () => function(e, t, r = "rgb565") {
                                    if (!e || !e.buffer) throw new Error("quantize() expected RGBA Uint8Array data");
                                    if (!(e instanceof Uint8Array || e instanceof Uint8ClampedArray)) throw new Error("quantize() expected RGBA Uint8Array data");
                                    if (256 < t.length) throw new Error("applyPalette() only works with 256 colors or less");
                                    var o = new Uint32Array(e.buffer),
                                        n = o.length,
                                        e = "rgb444" === r ? 4096 : 65536,
                                        s = new Uint8Array(n),
                                        i = new Array(e);
                                    if ("rgba4444" === r)
                                        for (let e = 0; e < n; e++) {
                                            var a = o[e],
                                                l = a >> 24 & 255,
                                                c = a >> 16 & 255,
                                                u = a >> 8 & 255,
                                                d = (d = A(a = 255 & a, u, c, l)) in i ? i[d] : i[d] = ((t, r, o, n, s) => {
                                                    let i = 0,
                                                        a = 1e100;
                                                    for (let e = 0; e < s.length; e++) {
                                                        var l = s[e],
                                                            c = g(l[3] - n);
                                                        c > a || (c += g(l[0] - t)) > a || (c += g(l[1] - r)) > a || (c += g(l[2] - o)) > a || (a = c, i = e)
                                                    }
                                                    return i
                                                })(a, u, c, l, t);
                                            s[e] = d
                                        } else {
                                            var h = "rgb444" === r ? L : C;
                                            for (let e = 0; e < n; e++) {
                                                var f = o[e],
                                                    p = f >> 16 & 255,
                                                    m = f >> 8 & 255,
                                                    y = (y = h(f = 255 & f, m, p)) in i ? i[y] : i[y] = ((t, r, o, n) => {
                                                        let s = 0,
                                                            i = 1e100;
                                                        for (let e = 0; e < n.length; e++) {
                                                            var a = n[e],
                                                                l = g(a[0] - t);
                                                            l > i || (l += g(a[1] - r)) > i || (l += g(a[2] - o)) > i || (i = l, s = e)
                                                        }
                                                        return s
                                                    })(f, m, p, t);
                                                s[e] = y
                                            }
                                        }
                                    return s
                                },
                                default: () => f,
                                nearestColor: () => function(e, t, r = c) {
                                    return e[l(e, t, r)]
                                },
                                nearestColorIndex: () => l,
                                nearestColorIndexWithDistance: () => d,
                                prequantize: () => function(e, {
                                    roundRGB: r = 5,
                                    roundAlpha: o = 10,
                                    oneBitAlpha: n = null
                                } = {}) {
                                    var s = new Uint32Array(e.buffer);
                                    for (let t = 0; t < s.length; t++) {
                                        let e = (l = s[t]) >> 24 & 255;
                                        var i = l >> 16 & 255,
                                            a = l >> 8 & 255,
                                            l = 255 & l;
                                        e = u(e, o), n && (e = e <= ("number" == typeof n ? n : 127) ? 0 : 255), l = u(l, r), a = u(a, r), i = u(i, r), s[t] = e << 24 | i << 16 | a << 8 | l << 0
                                    }
                                },
                                quantize: () => function(e, t, r = {}) {
                                    var {
                                        format: o = "rgb565",
                                        clearAlpha: n = !0,
                                        clearAlphaColor: s = 0,
                                        clearAlphaThreshold: i = 0,
                                        oneBitAlpha: a = !1
                                    } = r;
                                    if (!e || !e.buffer) throw new Error("quantize() expected RGBA Uint8Array data");
                                    if (!(e instanceof Uint8Array || e instanceof Uint8ClampedArray)) throw new Error("quantize() expected RGBA Uint8Array data");
                                    e = new Uint32Array(e.buffer);
                                    let l = !1 !== r.useSqrt;
                                    for (var c = "rgba4444" === o, u = ((t, e) => {
                                            var r = new Array("rgb444" === e ? 4096 : 65536),
                                                o = t.length;
                                            if ("rgba4444" === e)
                                                for (let e = 0; e < o; ++e) {
                                                    var n = t[e],
                                                        s = n >> 24 & 255,
                                                        i = n >> 16 & 255,
                                                        a = n >> 8 & 255,
                                                        l = A(n = 255 & n, a, i, s),
                                                        l = l in r ? r[l] : r[l] = D();
                                                    l.rc += n, l.gc += a, l.bc += i, l.ac += s, l.cnt++
                                                } else if ("rgb444" === e)
                                                    for (let e = 0; e < o; ++e) {
                                                        var c = t[e],
                                                            u = c >> 16 & 255,
                                                            d = c >> 8 & 255,
                                                            h = L(c = 255 & c, d, u),
                                                            h = h in r ? r[h] : r[h] = D();
                                                        h.rc += c, h.gc += d, h.bc += u, h.cnt++
                                                    } else
                                                        for (let e = 0; e < o; ++e) {
                                                            var f = t[e],
                                                                p = f >> 16 & 255,
                                                                m = f >> 8 & 255,
                                                                y = C(f = 255 & f, m, p),
                                                                y = y in r ? r[y] : r[y] = D();
                                                            y.rc += f, y.gc += m, y.bc += p, y.cnt++
                                                        }
                                            return r
                                        })(e, o), d = u.length, h = d - 1, f = new Uint32Array(d + 1), p = 0, m = 0; m < d; ++m) {
                                        var y = u[m];
                                        null != y && (k = 1 / y.cnt, c && (y.ac *= k), y.rc *= k, y.gc *= k, y.bc *= k, u[p++] = y)
                                    }
                                    I(t) / p < .022 && (l = !1);
                                    for (var g, v, m = 0; m < p - 1; ++m) u[m].fw = m + 1, u[m + 1].bk = m, l && (u[m].cnt = Math.sqrt(u[m].cnt));
                                    for (l && (u[m].cnt = Math.sqrt(u[m].cnt)), m = 0; m < p; ++m) {
                                        R(u, m, !1);
                                        for (var b = u[m].err, _ = ++f[0]; 1 < _ && !(u[g = f[v = _ >> 1]].err <= b); _ = v) f[_] = g;
                                        f[_] = m
                                    }
                                    var x, w = p - t;
                                    for (m = 0; m < w;) {
                                        for (;;) {
                                            var j = f[1];
                                            if ((x = u[j]).tm >= x.mtm && u[x.nn].mtm <= x.tm) break;
                                            for (x.mtm == h ? j = f[1] = f[f[0]--] : (R(u, j, !1), x.tm = m), b = u[j].err, _ = 1;
                                                (v = _ + _) <= f[0] && (v < f[0] && u[f[v]].err > u[f[v + 1]].err && v++, !(b <= u[g = f[v]].err)); _ = v) f[_] = g;
                                            f[_] = j
                                        }
                                        var S = u[x.nn],
                                            T = x.cnt,
                                            E = S.cnt,
                                            k = 1 / (T + E);
                                        c && (x.ac = k * (T * x.ac + E * S.ac)), x.rc = k * (T * x.rc + E * S.rc), x.gc = k * (T * x.gc + E * S.gc), x.bc = k * (T * x.bc + E * S.bc), x.cnt += S.cnt, x.mtm = ++m, u[S.bk].fw = S.fw, u[S.fw].bk = S.bk, S.mtm = h
                                    }
                                    var M = [];
                                    for (m = 0;;) {
                                        let e = P(Math.round(u[m].rc), 0, 255),
                                            t = P(Math.round(u[m].gc), 0, 255),
                                            r = P(Math.round(u[m].bc), 0, 255),
                                            o = 255;
                                        c && (o = P(Math.round(u[m].ac), 0, 255), a && (O = "number" == typeof a ? a : 127, o = o <= O ? 0 : 255), n) && o <= i && (e = t = r = s, o = 0);
                                        var O = c ? [e, t, r, o] : [e, t, r];
                                        if (((t, r) => {
                                                for (let e = 0; e < t.length; e++) {
                                                    var o = (n = t[e])[0] === r[0] && n[1] === r[1] && n[2] === r[2],
                                                        n = !(4 <= n.length && 4 <= r.length) || n[3] === r[3];
                                                    if (o && n) return 1
                                                }
                                            })(M, O) || M.push(O), 0 == (m = u[m].fw)) break
                                    }
                                    return M
                                },
                                snapColorsToPalette: () => function(r, o, e = 5) {
                                    if (r.length && o.length) {
                                        var n = r.map(e => e.slice(0, 3)),
                                            s = e * e,
                                            i = r[0].length;
                                        for (let t = 0; t < o.length; t++) {
                                            let e = o[t];
                                            var a = d(n, (e = e.length < i ? [e[0], e[1], e[2], 255] : e.length > i ? e.slice(0, 3) : e.slice()).slice(0, 3), c),
                                                l = a[0];
                                            0 < (a = a[1]) && a <= s && (r[l] = e)
                                        }
                                    }
                                }
                            };
                        for (o in i) n(s, o, {
                            get: i[o],
                            enumerable: !0
                        });
                        var a = {
                            signature: "GIF",
                            version: "89a",
                            trailer: 59,
                            extensionIntroducer: 33,
                            applicationExtensionLabel: 255,
                            graphicControlExtensionLabel: 249,
                            imageSeparator: 44,
                            signatureSize: 3,
                            versionSize: 3,
                            globalColorTableFlagMask: 128,
                            colorResolutionMask: 112,
                            sortFlagMask: 8,
                            globalColorTableSizeMask: 7,
                            applicationIdentifierSize: 8,
                            applicationAuthCodeSize: 3,
                            disposalMethodMask: 28,
                            userInputFlagMask: 2,
                            transparentColorFlagMask: 1,
                            localColorTableFlagMask: 128,
                            interlaceFlagMask: 64,
                            idSortFlagMask: 32,
                            localColorTableSizeMask: 7
                        };

                        function T(e = 256) {
                            let n = 0,
                                s = new Uint8Array(e);
                            return {
                                get buffer() {
                                    return s.buffer
                                },
                                reset() {
                                    n = 0
                                },
                                bytesView() {
                                    return s.subarray(0, n)
                                },
                                bytes() {
                                    return s.slice(0, n)
                                },
                                writeByte(e) {
                                    i(n + 1), s[n] = e, n++
                                },
                                writeBytes(t, r = 0, o = t.length) {
                                    i(n + o);
                                    for (let e = 0; e < o; e++) s[n++] = t[e + r]
                                },
                                writeBytesView(e, t = 0, r = e.byteLength) {
                                    i(n + r), s.set(e.subarray(t, t + r), n), n += r
                                }
                            };

                            function i(e) {
                                var t = s.length;
                                e <= t || (e = Math.max(e, t * (t < 1048576 ? 2 : 1.125) >>> 0), 0 != t && (e = Math.max(e, 256)), t = s, s = new Uint8Array(e), 0 < n && s.set(t.subarray(0, n), 0))
                            }
                        }
                        var E = [0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535],
                            S = function(e, t, n, r, o = T(512), s = new Uint8Array(256), i = new Int32Array(5003), a = new Int32Array(5003)) {
                                var l = i.length,
                                    r = Math.max(2, r);
                                s.fill(0), a.fill(0), i.fill(-1);
                                let c = 0,
                                    u = 0,
                                    d = r + 1,
                                    h = d,
                                    f = !1,
                                    p = h,
                                    m = (1 << p) - 1,
                                    y = 1 << d - 1,
                                    g = 1 + y,
                                    v = 2 + y,
                                    b = 0,
                                    _ = n[0],
                                    x = 0;
                                for (let e = l; e < 65536; e *= 2) ++x;
                                x = 8 - x, o.writeByte(r), S(y);
                                var w = n.length;
                                for (let o = 1; o < w; o++) e: {
                                    let e = n[o],
                                        t = (e << 12) + _,
                                        r = e << x ^ _;
                                    if (i[r] === t) _ = a[r];
                                    else {
                                        for (var j = 0 === r ? 1 : l - r; 0 <= i[r];)
                                            if ((r -= j) < 0 && (r += l), i[r] === t) {
                                                _ = a[r];
                                                break e
                                            } S(_), _ = e, v < 4096 ? (a[r] = v++, i[r] = t) : (i.fill(-1), v = 2 + y, f = !0, S(y))
                                    }
                                }
                                return S(_), S(g), o.writeByte(0), o.bytesView();

                                function S(e) {
                                    for (c &= E[u], 0 < u ? c |= e << u : c = e, u += p; 8 <= u;) s[b++] = 255 & c, 254 <= b && (o.writeByte(b), o.writeBytesView(s, 0, b), b = 0), c >>= 8, u -= 8;
                                    if ((v > m || f) && (f ? (p = h, m = (1 << p) - 1, f = !1) : (++p, m = 12 === p ? 1 << p : (1 << p) - 1)), e == g) {
                                        for (; 0 < u;) s[b++] = 255 & c, 254 <= b && (o.writeByte(b), o.writeBytesView(s, 0, b), b = 0), c >>= 8, u -= 8;
                                        0 < b && (o.writeByte(b), o.writeBytesView(s, 0, b), b = 0)
                                    }
                                }
                            };

                        function C(e, t, r) {
                            return e << 8 & 63488 | t << 2 & 992 | r >> 3
                        }

                        function A(e, t, r, o) {
                            return e >> 4 | 240 & t | (240 & r) << 4 | (240 & o) << 8
                        }

                        function L(e, t, r) {
                            return e >> 4 << 8 | 240 & t | r >> 4
                        }

                        function P(e, t, r) {
                            return e < t ? t : r < e ? r : e
                        }

                        function I(e) {
                            return e * e
                        }

                        function R(e, t, r) {
                            for (var o = 0, n = 1e100, t = e[t], s = t.cnt, i = t.ac, a = t.rc, l = t.gc, c = t.bc, u = t.fw; 0 != u; u = e[u].fw) {
                                var d, h = e[u],
                                    f = h.cnt;
                                n <= (f = s * f / (s + f)) || (d = 0, r && n <= (d += f * I(h.ac - i))) || n <= (d += f * I(h.rc - a)) || n <= (d += f * I(h.gc - l)) || n <= (d += f * I(h.bc - c)) || (n = d, o = u)
                            }
                            t.err = n, t.nn = o
                        }

                        function D() {
                            return {
                                ac: 0,
                                rc: 0,
                                gc: 0,
                                bc: 0,
                                cnt: 0,
                                nn: 0,
                                fw: 0,
                                bk: 0,
                                tm: 0,
                                mtm: 0,
                                err: 0
                            }
                        }

                        function c(e, t) {
                            for (var r = 0, o = 0; o < e.length; o++) {
                                var n = e[o] - t[o];
                                r += n * n
                            }
                            return r
                        }

                        function u(e, t) {
                            return 1 < t ? Math.round(e / t) * t : e
                        }

                        function g(e) {
                            return e * e
                        }

                        function l(t, r, o = c) {
                            let n = 1 / 0,
                                s = -1;
                            for (let e = 0; e < t.length; e++) {
                                var i = o(r, t[e]);
                                i < n && (n = i, s = e)
                            }
                            return s
                        }

                        function d(t, r, o = c) {
                            let n = 1 / 0,
                                s = -1;
                            for (let e = 0; e < t.length; e++) {
                                var i = o(r, t[e]);
                                i < n && (n = i, s = e)
                            }
                            return [s, n]
                        }

                        function h(e = {}) {
                            let {
                                initialCapacity: t = 4096,
                                auto: g = !0
                            } = e, v = T(t), b = new Uint8Array(256), _ = new Int32Array(5003), x = new Int32Array(5003), w = !1;
                            return {
                                reset() {
                                    v.reset(), w = !1
                                },
                                finish() {
                                    v.writeByte(a.trailer)
                                },
                                bytes() {
                                    return v.bytes()
                                },
                                bytesView() {
                                    return v.bytesView()
                                },
                                get buffer() {
                                    return v.buffer
                                },
                                get stream() {
                                    return v
                                },
                                writeHeader: j,
                                writeFrame(e, t, r, o = {}) {
                                    var {
                                        transparent: n = !1,
                                        transparentIndex: s = 0,
                                        delay: i = 0,
                                        palette: a = null,
                                        repeat: l = 0,
                                        colorDepth: c = 8,
                                        dispose: u = -1
                                    } = o;
                                    let d = !1;
                                    if (g ? w || (d = !0, j(), w = !0) : d = Boolean(o.first), t = Math.max(0, Math.floor(t)), r = Math.max(0, Math.floor(r)), d) {
                                        if (!a) throw new Error("First frame must include a { palette } option");
                                        var [o, h, f, p, m = 8] = [v, t, r, a, c];
                                        m = 128 | m - 1 << 4 | (p = F(p.length) - 1), M(o, h), M(o, f), o.writeBytes([m, 0, 0]), k(v, a), 0 <= l && (h = l, (p = v).writeByte(33), p.writeByte(255), p.writeByte(11), O(p, "NETSCAPE2.0"), p.writeByte(3), p.writeByte(1), M(p, h), p.writeByte(0))
                                    }
                                    m = u, l = f = Math.round(i / 10), h = n, p = s;
                                    (o = v).writeByte(33), o.writeByte(249), o.writeByte(4), p < 0 && (p = 0, h = !1), h = h ? (y = 1, 2) : y = 0, 0 <= m && (h = 7 & m), o.writeByte(0 | (h <<= 2) | y), M(o, l), o.writeByte(p || 0), o.writeByte(0);
                                    var n = t,
                                        s = r,
                                        y = (i = Boolean(a) && !d) ? a : null;
                                    (u = v).writeByte(44), M(u, 0), M(u, 0), M(u, n), M(u, s), y ? (n = F(y.length) - 1, u.writeByte(128 | n)) : u.writeByte(0), i && k(v, a), [l, o, s, n, u = 8, i, a, e] = [v, e, t, r, c, b, _, x], S(s, n, o, u, l, i, a, e)
                                }
                            };

                            function j() {
                                O(v, "GIF89a")
                            }
                        }

                        function k(r, o) {
                            var e = 1 << F(o.length);
                            for (let t = 0; t < e; t++) {
                                let e = [0, 0, 0];
                                t < o.length && (e = o[t]), r.writeByte(e[0]), r.writeByte(e[1]), r.writeByte(e[2])
                            }
                        }

                        function M(e, t) {
                            e.writeByte(255 & t), e.writeByte(t >> 8 & 255)
                        }

                        function O(e, t) {
                            for (var r = 0; r < t.length; r++) e.writeByte(t.charCodeAt(r))
                        }

                        function F(e) {
                            return Math.max(Math.ceil(Math.log2(e)), 1)
                        }
                        var f = h
                    }, {}],
                    254: [function(e, t, r) {
                        r.read = function(e, t, r, o, n) {
                            var s, i, a = 8 * n - o - 1,
                                l = (1 << a) - 1,
                                c = l >> 1,
                                u = -7,
                                d = r ? n - 1 : 0,
                                h = r ? -1 : 1,
                                n = e[t + d];
                            for (d += h, s = n & (1 << -u) - 1, n >>= -u, u += a; 0 < u; s = 256 * s + e[t + d], d += h, u -= 8);
                            for (i = s & (1 << -u) - 1, s >>= -u, u += o; 0 < u; i = 256 * i + e[t + d], d += h, u -= 8);
                            if (0 === s) s = 1 - c;
                            else {
                                if (s === l) return i ? NaN : 1 / 0 * (n ? -1 : 1);
                                i += Math.pow(2, o), s -= c
                            }
                            return (n ? -1 : 1) * i * Math.pow(2, s - o)
                        }, r.write = function(e, t, r, o, n, s) {
                            var i, a, l = 8 * s - n - 1,
                                c = (1 << l) - 1,
                                u = c >> 1,
                                d = 23 === n ? Math.pow(2, -24) - Math.pow(2, -77) : 0,
                                h = o ? 0 : s - 1,
                                f = o ? 1 : -1,
                                s = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
                            for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (a = isNaN(t) ? 1 : 0, i = c) : (i = Math.floor(Math.log(t) / Math.LN2), t * (o = Math.pow(2, -i)) < 1 && (i--, o *= 2), 2 <= (t += 1 <= i + u ? d / o : d * Math.pow(2, 1 - u)) * o && (i++, o /= 2), c <= i + u ? (a = 0, i = c) : 1 <= i + u ? (a = (t * o - 1) * Math.pow(2, n), i += u) : (a = t * Math.pow(2, u - 1) * Math.pow(2, n), i = 0)); 8 <= n; e[r + h] = 255 & a, h += f, a /= 256, n -= 8);
                            for (i = i << n | a, l += n; 0 < l; e[r + h] = 255 & i, h += f, i /= 256, l -= 8);
                            e[r + h - f] |= 128 * s
                        }
                    }, {}],
                    255: [function(o, e, u) {
                        var t;

                        function y(e, t) {
                            return e.b === t.b && e.a === t.a
                        }

                        function g(e, t) {
                            return e.b < t.b || e.b === t.b && e.a <= t.a
                        }

                        function v(e, t, r) {
                            var o = t.b - e.b,
                                n = r.b - t.b;
                            return 0 < o + n ? o < n ? t.a - e.a + o / (o + n) * (e.a - r.a) : t.a - r.a + n / (o + n) * (r.a - e.a) : 0
                        }

                        function b(e, t, r) {
                            var o = t.b - e.b,
                                n = r.b - t.b;
                            return 0 < o + n ? (t.a - r.a) * o + (t.a - e.a) * n : 0
                        }

                        function _(e, t) {
                            return e.a < t.a || e.a === t.a && e.b <= t.b
                        }

                        function z(e, t, r) {
                            var o = t.a - e.a,
                                n = r.a - t.a;
                            return 0 < o + n ? o < n ? t.b - e.b + o / (o + n) * (e.b - r.b) : t.b - r.b + n / (o + n) * (r.b - e.b) : 0
                        }

                        function H(e, t, r) {
                            var o = t.a - e.a,
                                n = r.a - t.a;
                            return 0 < o + n ? (t.b - r.b) * o + (t.b - e.b) * n : 0
                        }

                        function x(e, t, r, o) {
                            return (e = e < 0 ? 0 : e) <= (r = r < 0 ? 0 : r) ? 0 === r ? (t + o) / 2 : t + e / (e + r) * (o - t) : o + r / (e + r) * (t - o)
                        }

                        function d(e) {
                            var t = s(e.b);
                            return n(t, e.c), n(t.b, e.c), i(t, e.a), t
                        }

                        function w(e, t) {
                            var r = !1,
                                o = !1;
                            e !== t && (t.a !== e.a && (o = !0, k(t.a, e.a)), t.d !== e.d && (r = !0, a(t.d, e.d)), E(t, e), o || (n(t, e.a), e.a.c = e), r || (i(t, e.d), e.d.a = e))
                        }

                        function j(e) {
                            var t = e.b,
                                r = !1;
                            e.d !== e.b.d && (r = !0, a(e.d, e.b.d)), e.c === e ? k(e.a, null) : (e.b.d.a = e.b.e, e.a.c = e.c, E(e, e.b.e), r || i(e, e.d)), t.c === t ? (k(t.a, null), a(t.d, null)) : (e.d.a = t.b.e, t.a.c = t.c, E(t, t.b.e)), W(e)
                        }

                        function S(e) {
                            var t = s(e),
                                r = t.b;
                            return E(t, e.e), t.a = e.b.a, n(r, t.a), t.d = r.d = e.d, t = t.b, E(e.b, e.b.b.e), E(e.b, t), e.b.a = t.a, t.b.a.c = t.b, t.b.d = e.b.d, t.f = e.f, t.b.f = e.b.f, t
                        }

                        function T(e, t) {
                            var r = !1,
                                o = s(e),
                                n = o.b;
                            return t.d !== e.d && (r = !0, a(t.d, e.d)), E(o, e.e), E(n, t), o.a = e.b.a, n.a = t.a, o.d = n.d = e.d, e.d.a = n, r || i(o, e.d), o
                        }

                        function s(e) {
                            var t = new c,
                                r = new c,
                                o = e.b.h;
                            return (((r.h = o).b.h = t).h = e).b.h = r, t.b = r, ((t.c = t).e = r).b = t, (r.c = r).e = t
                        }

                        function E(e, t) {
                            var r = e.c,
                                o = t.c;
                            r.b.e = t, (o.b.e = e).c = o, t.c = r
                        }

                        function n(e, t) {
                            var r = t.f,
                                o = new F(t, r);
                            for (r.e = o, r = (t.f = o).c = e; r.a = o, (r = r.c) !== e;);
                        }

                        function i(e, t) {
                            var r = t.d,
                                o = new te(t, r);
                            for (r.b = o, (t.d = o).a = e, o.c = t.c, r = e; r.d = o, (r = r.e) !== e;);
                        }

                        function W(e) {
                            var t = e.h;
                            e = e.b.h, (t.b.h = e).b.h = t
                        }

                        function k(e, t) {
                            for (var r = e.c, o = r; o.a = t, (o = o.c) !== r;);
                            ((o = e.e).f = r = e.f).e = o
                        }

                        function a(e, t) {
                            for (var r = e.a, o = r; o.d = t, (o = o.e) !== r;);
                            ((o = e.b).d = r = e.d).b = o
                        }

                        function q(e) {
                            var t = 0;
                            return Math.abs(e[1]) > Math.abs(e[0]) && (t = 1), Math.abs(e[2]) > Math.abs(e[t]) ? 2 : t
                        }

                        function M(e, t) {
                            e.f += t.f, e.b.f += t.b.f
                        }

                        function h(e, t, r) {
                            return e = e.a, t = t.a, r = r.a, t.b.a === e ? r.b.a === e ? g(t.a, r.a) ? b(r.b.a, t.a, r.a) <= 0 : 0 <= b(t.b.a, r.a, t.a) : b(r.b.a, e, r.a) <= 0 : r.b.a === e ? 0 <= b(t.b.a, e, t.a) : (t = v(t.b.a, e, t.a), (e = v(r.b.a, e, r.a)) <= t)
                        }

                        function O(e) {
                            e.a.i = null;
                            var t = e.e;
                            t.a.c = t.c, t.c.a = t.a, e.e = null
                        }

                        function C(e, t) {
                            j(e.a), e.c = !1, (e.a = t).i = e
                        }

                        function A(e) {
                            for (var t = e.a.a;
                                (e = V(e)).a.a === t;);
                            return e.c && (C(e, t = T(G(e).a.b, e.a.e)), e = V(e)), e
                        }

                        function X(e, t, r) {
                            var o = new B;
                            return o.a = r, o.e = p(e.f, t.e, o), r.i = o
                        }

                        function Y(e, t) {
                            switch (e.s) {
                                case 100130:
                                    return 0 != (1 & t);
                                case 100131:
                                    return 0 !== t;
                                case 100132:
                                    return 0 < t;
                                case 100133:
                                    return t < 0;
                                case 100134:
                                    return 2 <= t || t <= -2
                            }
                            return !1
                        }

                        function f(e) {
                            var t = e.a,
                                r = t.d;
                            r.c = e.d, r.a = t, O(e)
                        }

                        function L(e, t, r) {
                            for (t = (e = t).a; e !== r;) {
                                e.c = !1;
                                var o = G(e),
                                    n = o.a;
                                if (n.a !== t.a) {
                                    if (!o.c) {
                                        f(e);
                                        break
                                    }
                                    C(o, n = T(t.c.b, n.b))
                                }
                                t.c !== n && (w(n.b.e, n), w(t, n)), f(e), t = o.a, e = o
                            }
                            return t
                        }

                        function P(e, t, r, o, n, s) {
                            for (var i = !0; X(e, t, r.b), (r = r.c) !== o;);
                            for (null === n && (n = G(t).a.b.c);
                                (r = (o = G(t)).a.b).a === n.a;) r.c !== n && (w(r.b.e, r), w(n.b.e, r)), o.f = t.f - r.f, o.d = Y(e, o.f), t.b = !0, !i && R(e, t) && (M(r, n), O(t), j(n)), i = !1, t = o, n = r;
                            t.b = !0, s && J(e, t)
                        }

                        function Z(e, t, r, o, n) {
                            var s = [t.g[0], t.g[1], t.g[2]];
                            t.d = null, t.d = e.o && e.o(s, r, o, e.c) || null, null === t.d && (n ? e.n || (l(e, 100156), e.n = !0) : t.d = r[0])
                        }

                        function I(e, t, r) {
                            var o = [null, null, null, null];
                            o[0] = t.a.d, o[1] = r.a.d, Z(e, t.a, o, [.5, .5, 0, 0], !1), w(t, r)
                        }

                        function K(e, t, r, o, n) {
                            var s = Math.abs(t.b - e.b) + Math.abs(t.a - e.a),
                                i = Math.abs(r.b - e.b) + Math.abs(r.a - e.a),
                                a = n + 1;
                            o[n] = .5 * i / (s + i), o[a] = .5 * s / (s + i), e.g[0] += o[n] * t.g[0] + o[a] * r.g[0], e.g[1] += o[n] * t.g[1] + o[a] * r.g[1], e.g[2] += o[n] * t.g[2] + o[a] * r.g[2]
                        }

                        function R(e, t) {
                            var r = G(t),
                                o = t.a,
                                n = r.a;
                            if (g(o.a, n.a)) {
                                if (0 < b(n.b.a, o.a, n.a)) return;
                                if (y(o.a, n.a)) {
                                    if (o.a !== n.a) {
                                        var r = e.e,
                                            s = o.a.h;
                                        if (0 <= s) {
                                            var i = (r = r.b).d,
                                                a = r.e,
                                                l = r.c,
                                                c = l[s];
                                            i[c] = i[r.a], (l[i[c]] = c) <= --r.a && (c <= 1 || g(a[i[c >> 1]], a[i[c]]) ? U : ce)(r, c), a[s] = null, l[s] = r.b, r.b = s
                                        } else
                                            for (r.c[-(s + 1)] = null; 0 < r.a && null === r.c[r.d[r.a - 1]];) --r.a;
                                        I(e, n.b.e, o)
                                    }
                                } else S(n.b), w(o, n.b.e), t.b = r.b = !0
                            } else {
                                if (b(o.b.a, n.a, o.a) < 0) return;
                                V(t).b = t.b = !0, S(o.b), w(n.b.e, o)
                            }
                            return 1
                        }

                        function Q(e, t) {
                            var r = G(t),
                                o = t.a,
                                n = r.a,
                                s = o.a,
                                i = n.a,
                                a = o.b.a,
                                l = n.b.a,
                                c = new F;
                            if (b(a, e.a, s), b(l, e.a, i), !(s === i || Math.min(s.a, a.a) > Math.max(i.a, l.a))) {
                                if (g(s, i)) {
                                    if (0 < b(l, s, i)) return
                                } else if (b(a, i, s) < 0) return;
                                var u, d, h = a,
                                    f = s,
                                    p = l,
                                    m = i;
                                if (g(h, f) || (u = h, h = f, f = u), g(p, m) || (u = p, p = m, m = u), g(h, p) || (u = h, h = p, p = u, u = f, f = m, m = u), g(p, f) ? g(f, m) ? ((u = v(h, p, f)) + (d = v(p, f, m)) < 0 && (u = -u, d = -d), c.b = x(u, p.b, d, f.b)) : ((u = b(h, p, f)) + (d = -b(h, m, f)) < 0 && (u = -u, d = -d), c.b = x(u, p.b, d, m.b)) : c.b = (p.b + f.b) / 2, _(h, f) || (u = h, h = f, f = u), _(p, m) || (u = p, p = m, m = u), _(h, p) || (u = h, h = p, p = u, u = f, f = m, m = u), _(p, f) ? _(f, m) ? ((u = z(h, p, f)) + (d = z(p, f, m)) < 0 && (u = -u, d = -d), c.a = x(u, p.a, d, f.a)) : ((u = H(h, p, f)) + (d = -H(h, m, f)) < 0 && (u = -u, d = -d), c.a = x(u, p.a, d, m.a)) : c.a = (p.a + f.a) / 2, g(c, e.a) && (c.b = e.a.b, c.a = e.a.a), h = g(s, i) ? s : i, g(h, c) && (c.b = h.b, c.a = h.a), y(c, s) || y(c, i)) return R(e, t), 0;
                                if (!y(a, e.a) && 0 <= b(a, e.a, c) || !y(l, e.a) && b(l, e.a, c) <= 0) {
                                    if (l === e.a) S(o.b), w(n.b, o), o = G(t = A(t)).a, L(e, G(t), r), P(e, t, o.b.e, o, o, !0);
                                    else {
                                        if (a !== e.a) return 0 <= b(a, e.a, c) && (V(t).b = t.b = !0, S(o.b), o.a.b = e.a.b, o.a.a = e.a.a), b(l, e.a, c) <= 0 && (t.b = r.b = !0, S(n.b), n.a.b = e.a.b, n.a.a = e.a.a), 0;
                                        for (S(n.b), w(o.e, n.b.e), i = (s = r = t).a.b.a;
                                            (s = V(s)).a.b.a === i;);
                                        s = G(t = s).a.b.c, r.a = n.b.e, P(e, t, (n = L(e, r, null)).c, o.b.c, s, !0)
                                    }
                                    return 1
                                }
                                S(o.b), S(n.b), w(n.b.e, o), o.a.b = c.b, o.a.a = c.a, o.a.h = ne(e.e, o.a), o = o.a, n = [0, 0, 0, 0], c = [s.d, a.d, i.d, l.d], o.g[0] = o.g[1] = o.g[2] = 0, K(o, s, a, n, 0), K(o, i, l, n, 2), Z(e, o, c, n, !0), V(t).b = t.b = r.b = !0
                            }
                        }

                        function J(e, t) {
                            for (var r = G(t);;) {
                                for (; r.b;) r = G(t = r);
                                if (!(t.b || null !== (t = V(r = t)) && t.b)) break;
                                t.b = !1;
                                var o = t.a,
                                    n = r.a;
                                if (s = o.b.a !== n.b.a) e: {
                                    var s, i = G(s = t),
                                        a = s.a,
                                        l = i.a,
                                        c = void 0;
                                    if (g(a.b.a, l.b.a)) {
                                        if (b(a.b.a, l.b.a, a.a) < 0) {
                                            s = !1;
                                            break e
                                        }
                                        V(s).b = s.b = !0, c = S(a), w(l.b, c), c.d.c = s.d
                                    } else {
                                        if (0 < b(l.b.a, a.b.a, l.a)) {
                                            s = !1;
                                            break e
                                        }
                                        s.b = i.b = !0, c = S(l), w(a.e, l.b), c.b.d.c = s.d
                                    }
                                    s = !0
                                }
                                if (s && (r.c ? (O(r), j(n), n = (r = G(t)).a) : t.c && (O(t), j(o), o = (t = V(r)).a)), o.a !== n.a)
                                    if (o.b.a === n.b.a || t.c || r.c || o.b.a !== e.a && n.b.a !== e.a) R(e, t);
                                    else if (Q(e, t)) break;
                                o.a === n.a && o.b.a === n.b.a && (M(n, o), O(t), j(o), t = V(r))
                            }
                        }

                        function $(e, t) {
                            var r = new B,
                                o = d(e.b);
                            o.a.b = 4e150, o.a.a = t, o.b.a.b = -4e150, o.b.a.a = t, e.a = o.b.a, r.a = o, r.f = 0, r.d = !1, r.c = !1, r.h = !0, r.b = !1, o = p(o = e.f, o.a, r), r.e = o
                        }

                        function ee(e) {
                            this.a = new m, this.b = e, this.c = h
                        }

                        function p(e, t, r) {
                            for (; null !== (t = t.c).b && !e.c(e.b, t.b, r););
                            return e = new m(r, t.a, t), t.a.c = e, t.a = e
                        }

                        function m(e, t, r) {
                            this.b = e || null, this.a = t || this, this.c = r || this
                        }

                        function r() {
                            this.d = 0, this.p = this.b = this.q = null, this.j = [0, 0, 0], this.s = 100130, this.n = !1, this.o = this.a = this.e = this.f = null, this.m = !1, this.c = this.r = this.i = this.k = this.l = this.h = null
                        }

                        function D(e, t) {
                            if (e.d !== t)
                                for (; e.d !== t;)
                                    if (e.d < t) switch (e.d) {
                                        case 0:
                                            l(e, 100151), e.u(null);
                                            break;
                                        case 1:
                                            l(e, 100152), e.t()
                                    } else switch (e.d) {
                                        case 2:
                                            l(e, 100154), e.v();
                                            break;
                                        case 1:
                                            l(e, 100153), e.w()
                                    }
                        }

                        function l(e, t) {
                            e.p && e.p(t, e.c)
                        }

                        function te(e, t) {
                            this.b = e || this, this.d = t || this, this.a = null, this.c = !1
                        }

                        function c() {
                            (this.h = this).i = this.d = this.a = this.e = this.c = this.b = null, this.f = 0
                        }

                        function re() {
                            this.c = new F, this.a = new te, this.b = new c, this.d = new c, this.b.b = this.d, this.d.b = this.b
                        }

                        function F(e, t) {
                            this.e = e || this, this.f = t || this, this.d = this.c = null, this.g = [0, 0, 0], this.h = this.a = this.b = 0
                        }

                        function oe() {
                            this.c = [], this.d = null, this.a = 0, this.e = !1, this.b = new ie
                        }

                        function ne(e, t) {
                            var r, o, n;
                            return e.e ? (2 * (o = ++(r = e.b).a) > r.f && (r.f *= 2, r.c = ae(r.c, r.f + 1)), 0 === r.b ? n = o : (n = r.b, r.b = r.c[r.b]), r.e[n] = t, r.c[n] = o, r.d[o] = n, r.h && ce(r, o), n) : (r = e.a++, e.c[r] = t, -(r + 1))
                        }

                        function se(e) {
                            if (0 === e.a) return le(e.b);
                            var t = e.c[e.d[e.a - 1]];
                            if (0 !== e.b.a && g(N(e.b), t)) return le(e.b);
                            for (; --e.a, 0 < e.a && null === e.c[e.d[e.a - 1]];);
                            return t
                        }

                        function ie() {
                            this.d = ae([0], 33), this.e = [null, null], this.c = [0, 0], this.a = 0, this.f = 32, this.b = 0, this.h = !1, this.d[1] = 1
                        }

                        function ae(e, t) {
                            for (var r = Array(t), o = 0; o < e.length; o++) r[o] = e[o];
                            for (; o < t; o++) r[o] = 0;
                            return r
                        }

                        function N(e) {
                            return e.e[e.d[1]]
                        }

                        function le(e) {
                            var t = e.d,
                                r = e.e,
                                o = e.c,
                                n = t[1],
                                s = r[n];
                            return 0 < e.a && (t[1] = t[e.a], o[t[1]] = 1, r[n] = null, o[n] = e.b, e.b = n, 0 < --e.a) && U(e, 1), s
                        }

                        function U(e, t) {
                            for (var r = e.d, o = e.e, n = e.c, s = t, i = r[s];;) {
                                var a = s << 1,
                                    l = (a < e.a && g(o[r[a + 1]], o[r[a]]) && (a += 1), r[a]);
                                if (e.a < a || g(o[i], o[l])) {
                                    n[r[s] = i] = s;
                                    break
                                }
                                n[r[s] = l] = s, s = a
                            }
                        }

                        function ce(e, t) {
                            for (var r = e.d, o = e.e, n = e.c, s = t, i = r[s];;) {
                                var a = s >> 1,
                                    l = r[a];
                                if (0 == a || g(o[l], o[i])) {
                                    n[r[s] = i] = s;
                                    break
                                }
                                n[r[s] = l] = s, s = a
                            }
                        }

                        function B() {
                            this.e = this.a = null, this.f = 0, this.c = this.b = this.h = this.d = !1
                        }

                        function G(e) {
                            return e.e.c.b
                        }

                        function V(e) {
                            return e.e.a.b
                        }(t = r.prototype).x = function() {
                            D(this, 0)
                        }, t.B = function(e, t) {
                            switch (e) {
                                case 100142:
                                    return;
                                case 100140:
                                    switch (t) {
                                        case 100130:
                                        case 100131:
                                        case 100132:
                                        case 100133:
                                        case 100134:
                                            return void(this.s = t)
                                    }
                                    break;
                                case 100141:
                                    return void(this.m = !!t);
                                default:
                                    return void l(this, 100900)
                            }
                            l(this, 100901)
                        }, t.y = function(e) {
                            switch (e) {
                                case 100142:
                                    return 0;
                                case 100140:
                                    return this.s;
                                case 100141:
                                    return this.m;
                                default:
                                    l(this, 100900)
                            }
                            return !1
                        }, t.A = function(e, t, r) {
                            this.j[0] = e, this.j[1] = t, this.j[2] = r
                        }, t.z = function(e, t) {
                            var r = t || null;
                            switch (e) {
                                case 100100:
                                case 100106:
                                    this.h = r;
                                    break;
                                case 100104:
                                case 100110:
                                    this.l = r;
                                    break;
                                case 100101:
                                case 100107:
                                    this.k = r;
                                    break;
                                case 100102:
                                case 100108:
                                    this.i = r;
                                    break;
                                case 100103:
                                case 100109:
                                    this.p = r;
                                    break;
                                case 100105:
                                case 100111:
                                    this.o = r;
                                    break;
                                case 100112:
                                    this.r = r;
                                    break;
                                default:
                                    l(this, 100900)
                            }
                        }, t.C = function(e, t) {
                            var r = !1,
                                o = [0, 0, 0];
                            D(this, 2);
                            for (var n = 0; n < 3; ++n) {
                                var s = e[n];
                                s < -1e150 && (s = -1e150, r = !0), 1e150 < s && (s = 1e150, r = !0), o[n] = s
                            }
                            r && l(this, 100155), null === (r = this.q) ? w(r = d(this.b), r.b) : (S(r), r = r.e), r.a.d = t, r.a.g[0] = o[0], r.a.g[1] = o[1], r.a.g[2] = o[2], r.f = 1, r.b.f = -1, this.q = r
                        }, t.u = function(e) {
                            D(this, 0), this.d = 1, this.b = new re, this.c = e
                        }, t.t = function() {
                            D(this, 1), this.d = 2, this.q = null
                        }, t.v = function() {
                            D(this, 2), this.d = 1
                        }, t.w = function() {
                            D(this, 1), this.d = 0;
                            var e, t, r = !1,
                                o = [l = this.j[0], n = this.j[1], i = this.j[2]];
                            if (0 === l && 0 === n && 0 === i) {
                                for (var n = [-2e150, -2e150, -2e150], s = [2e150, 2e150, 2e150], i = [], a = [], l = (r = this.b.c).e; l !== r; l = l.e)
                                    for (var c = 0; c < 3; ++c) {
                                        var u = l.g[c];
                                        u < s[c] && (s[c] = u, a[c] = l), u > n[c] && (n[c] = u, i[c] = l)
                                    }
                                if (s[l = n[l = n[1] - s[1] > n[l = 0] - s[0] ? 1 : l] - s[l] < n[2] - s[2] ? 2 : l] >= n[l]) o[0] = 0, o[1] = 0, o[2] = 1;
                                else {
                                    for (s = a[l], i = i[l], a = [n = 0, 0, 0], s = [s.g[0] - i.g[0], s.g[1] - i.g[1], s.g[2] - i.g[2]], c = [0, 0, 0], l = r.e; l !== r; l = l.e) c[0] = l.g[0] - i.g[0], c[1] = l.g[1] - i.g[1], c[2] = l.g[2] - i.g[2], a[0] = s[1] * c[2] - s[2] * c[1], a[1] = s[2] * c[0] - s[0] * c[2], a[2] = s[0] * c[1] - s[1] * c[0], n < (u = a[0] * a[0] + a[1] * a[1] + a[2] * a[2]) && (n = u, o[0] = a[0], o[1] = a[1], o[2] = a[2]);
                                    n <= 0 && (o[0] = o[1] = o[2] = 0, o[q(s)] = 1)
                                }
                                r = !0
                            }
                            for (a = q(o), l = this.b.c, n = (a + 1) % 3, i = (a + 2) % 3, a = 0 < o[a] ? 1 : -1, o = l.e; o !== l; o = o.e) o.b = o.g[n], o.a = a * o.g[i];
                            if (r) {
                                for (o = 0, l = (r = this.b.a).b; l !== r; l = l.b)
                                    if (!((n = l.a).f <= 0))
                                        for (; o += (n.a.b - n.b.a.b) * (n.a.a + n.b.a.a), (n = n.e) !== l.a;);
                                if (o < 0)
                                    for (r = (o = this.b.c).e; r !== o; r = r.e) r.a = -r.a
                            }
                            for (this.n = !1, l = (o = this.b.b).h; l !== o; l = r) r = l.h, n = l.e, y(l.a, l.b.a) && l.e.e !== l && (I(this, n, l), j(l), n = (l = n).e), n.e === l && (n !== l && (n !== r && n !== r.b || (r = r.h), j(n)), l !== r && l !== r.b || (r = r.h), j(l));
                            for (this.e = o = new oe, l = (r = this.b.c).e; l !== r; l = l.e) l.h = ne(o, l);
                            var d = o;
                            d.d = [];
                            for (var h, f = 0; f < d.a; f++) d.d[f] = f;
                            d.d.sort((h = d.c, function(e, t) {
                                return g(h[e], h[t]) ? 1 : -1
                            })), d.e = !0;
                            for (var p = d.b, m = p.a; 1 <= m; --m) U(p, m);
                            for (p.h = !0, this.f = new ee(this), $(this, -4e150), $(this, 4e150); null !== (o = se(this.e));) {
                                for (;;) {
                                    e: if (0 === (l = this.e).a) r = N(l.b);
                                        else if (r = l.c[l.d[l.a - 1]], 0 !== l.b.a && g(l = N(l.b), r)) {
                                        r = l;
                                        break e
                                    }
                                    if (null === r || !y(r, o)) break;r = se(this.e),
                                    I(this, o.c, r.c)
                                }! function e(t, r) {
                                    for (var o, n = (t.a = r).c; null === n.i;)
                                        if ((n = n.c) === r.c) {
                                            var n = t,
                                                s = r;
                                            (u = new B).a = s.c.b;
                                            for (var i = (a = n.f).a; null !== (i = i.a).b && !a.c(a.b, u, i.b););
                                            var a, l, c = G(a = i.b),
                                                u = a.a,
                                                i = c.a;
                                            return void(0 === b(u.b.a, s, u.a) ? y((u = a.a).a, s) || y(u.b.a, s) || (S(u.b), a.c && (j(u.c), a.c = !1), w(s.c, u), e(n, s)) : (l = g(i.b.a, u.b.a) ? a : c, c = void 0, a.d || l.c ? (c = l === a ? T(s.c.b, u.e) : T(i.b.c.b, s.c).b, l.c ? C(l, c) : ((a = X(u = n, a, c)).f = V(a).f + a.a.f, a.d = Y(u, a.f)), e(n, s)) : P(n, a, s.c, s.c, null, !0)))
                                        } a = (u = G(n = A(n.i))).a, (u = L(t, u, null)).c === a ? (u = (a = u).c, i = G(n), c = n.a, l = i.a, o = !1, c.b.a !== l.b.a && Q(t, n), y(c.a, t.a) && (w(u.b.e, c), u = G(n = A(n)).a, L(t, G(n), i), o = !0), y(l.a, t.a) && (w(a, l.b.e), a = L(t, i, null), o = !0), o ? P(t, n, a.c, u, u, !0) : (s = g(l.a, c.a) ? l.b.e : c, P(t, n, s = T(a.c.b, s), s.c, s.c, !1), s.b.i.c = !0, J(t, n))) : P(t, n, u.c, a, a, !0)
                                }(this, o)
                            }
                            for (this.a = this.f.a.a.b.a.a, o = 0; null !== (r = this.f.a.a.b);) r.h || ++o, O(r);
                            for (this.f = null, (o = this.e).b = null, o.d = null, this.e = o.c = null, l = (o = this.b).a.b; l !== o.a; l = r) r = l.b, (l = l.a).e.e === l && (M(l.c, l), j(l));
                            if (!this.n) {
                                if (o = this.b, this.m)
                                    for (l = o.b.h; l !== o.b; l = r) r = l.h, l.b.d.c !== l.d.c ? l.f = l.d.c ? 1 : -1 : j(l);
                                else
                                    for (l = o.a.b; l !== o.a; l = r)
                                        if (r = l.b, l.c) {
                                            for (l = l.a; g(l.b.a, l.a); l = l.c.b);
                                            for (; g(l.a, l.b.a); l = l.e);
                                            for (n = l.c.b, i = void 0; l.e !== n;)
                                                if (g(l.b.a, n.a)) {
                                                    for (; n.e !== l && (g((t = n.e).b.a, t.a) || b(n.a, n.b.a, n.e.b.a) <= 0);) n = (i = T(n.e, n)).b;
                                                    n = n.c.b
                                                } else {
                                                    for (; n.e !== l && (g((e = l.c.b).a, e.b.a) || 0 <= b(l.b.a, l.a, l.c.b.a));) l = (i = T(l, l.c.b)).b;
                                                    l = l.e
                                                } for (; n.e.e !== l;) n = (i = T(n.e, n)).b
                                        } if (this.h || this.i || this.k || this.l)
                                    if (this.m) {
                                        for (r = (o = this.b).a.b; r !== o.a; r = r.b)
                                            if (r.c) {
                                                for (this.h && this.h(2, this.c), l = r.a; this.k && this.k(l.a.d, this.c), (l = l.e) !== r.a;);
                                                this.i && this.i(this.c)
                                            }
                                    } else {
                                        for (o = this.b, r = !!this.l, l = !1, n = -1, i = o.a.d; i !== o.a; i = i.d)
                                            if (i.c)
                                                for (l || (this.h && this.h(4, this.c), l = !0), a = i.a; r && n !== (s = a.b.d.c ? 0 : 1) && (n = s, this.l) && this.l(!!n, this.c), this.k && this.k(a.a.d, this.c), (a = a.e) !== i.a;);
                                        l && this.i && this.i(this.c)
                                    } if (this.r) {
                                    for (l = (o = this.b).a.b; l !== o.a; l = r)
                                        if (r = l.b, !l.c) {
                                            for (i = (n = l.a).e, a = void 0; i = (a = i).e, (a.d = null) === a.b.d && (a.c === a ? k(a.a, null) : (a.a.c = a.c, E(a, a.b.e)), (s = a.b).c === s ? k(s.a, null) : (s.a.c = s.c, E(s, s.b.e)), W(a)), a !== n;);
                                            n = l.d, ((l = l.b).d = n).b = l
                                        } return this.r(this.b), void(this.c = this.b = null)
                                }
                            }
                            this.b = this.c = null
                        }, this.libtess = {
                            GluTesselator: r,
                            windingRule: {
                                GLU_TESS_WINDING_ODD: 100130,
                                GLU_TESS_WINDING_NONZERO: 100131,
                                GLU_TESS_WINDING_POSITIVE: 100132,
                                GLU_TESS_WINDING_NEGATIVE: 100133,
                                GLU_TESS_WINDING_ABS_GEQ_TWO: 100134
                            },
                            primitiveType: {
                                GL_LINE_LOOP: 2,
                                GL_TRIANGLES: 4,
                                GL_TRIANGLE_STRIP: 5,
                                GL_TRIANGLE_FAN: 6
                            },
                            errorType: {
                                GLU_TESS_MISSING_BEGIN_POLYGON: 100151,
                                GLU_TESS_MISSING_END_POLYGON: 100153,
                                GLU_TESS_MISSING_BEGIN_CONTOUR: 100152,
                                GLU_TESS_MISSING_END_CONTOUR: 100154,
                                GLU_TESS_COORD_TOO_LARGE: 100155,
                                GLU_TESS_NEED_COMBINE_CALLBACK: 100156
                            },
                            gluEnum: {
                                GLU_TESS_MESH: 100112,
                                GLU_TESS_TOLERANCE: 100142,
                                GLU_TESS_WINDING_RULE: 100140,
                                GLU_TESS_BOUNDARY_ONLY: 100141,
                                GLU_INVALID_ENUM: 100900,
                                GLU_INVALID_VALUE: 100901,
                                GLU_TESS_BEGIN: 100100,
                                GLU_TESS_VERTEX: 100101,
                                GLU_TESS_END: 100102,
                                GLU_TESS_ERROR: 100103,
                                GLU_TESS_EDGE_FLAG: 100104,
                                GLU_TESS_COMBINE: 100105,
                                GLU_TESS_BEGIN_DATA: 100106,
                                GLU_TESS_VERTEX_DATA: 100107,
                                GLU_TESS_END_DATA: 100108,
                                GLU_TESS_ERROR_DATA: 100109,
                                GLU_TESS_EDGE_FLAG_DATA: 100110,
                                GLU_TESS_COMBINE_DATA: 100111
                            }
                        }, r.prototype.gluDeleteTess = r.prototype.x, r.prototype.gluTessProperty = r.prototype.B, r.prototype.gluGetTessProperty = r.prototype.y, r.prototype.gluTessNormal = r.prototype.A, r.prototype.gluTessCallback = r.prototype.z, r.prototype.gluTessVertex = r.prototype.C, r.prototype.gluTessBeginPolygon = r.prototype.u, r.prototype.gluTessBeginContour = r.prototype.t, r.prototype.gluTessEndContour = r.prototype.v, r.prototype.gluTessEndPolygon = r.prototype.w, void 0 !== e && (e.exports = this.libtess)
                    }, {}],
                    256: [function(e, t, r) {
                        function o(g, e, t, r) {
                            var v = 0,
                                o = void 0 === (r = void 0 === r ? {} : r).loop ? null : r.loop,
                                b = void 0 === r.palette ? null : r.palette;
                            if (e <= 0 || t <= 0 || 65535 < e || 65535 < t) throw new Error("Width/Height invalid.");

                            function _(e) {
                                if ((e = e.length) < 2 || 256 < e || e & e - 1) throw new Error("Invalid code/color length, must be power of 2 and 2 .. 256.");
                                return e
                            }
                            g[v++] = 71, g[v++] = 73, g[v++] = 70, g[v++] = 56, g[v++] = 57, g[v++] = 97;
                            var n = 0,
                                s = 0;
                            if (null !== b) {
                                for (var i = _(b); i >>= 1;) ++n;
                                if (i = 1 << n, --n, void 0 !== r.background) {
                                    if (i <= (s = r.background)) throw new Error("Background index out of range.");
                                    if (0 === s) throw new Error("Background index explicitly passed as 0.")
                                }
                            }
                            if (g[v++] = 255 & e, g[v++] = e >> 8 & 255, g[v++] = 255 & t, g[v++] = t >> 8 & 255, g[v++] = (null !== b ? 128 : 0) | n, g[v++] = s, g[v++] = 0, null !== b)
                                for (var a = 0, l = b.length; a < l; ++a) {
                                    var c = b[a];
                                    g[v++] = c >> 16 & 255, g[v++] = c >> 8 & 255, g[v++] = 255 & c
                                }
                            if (null !== o) {
                                if (o < 0 || 65535 < o) throw new Error("Loop count invalid.");
                                g[v++] = 33, g[v++] = 255, g[v++] = 11, g[v++] = 78, g[v++] = 69, g[v++] = 84, g[v++] = 83, g[v++] = 67, g[v++] = 65, g[v++] = 80, g[v++] = 69, g[v++] = 50, g[v++] = 46, g[v++] = 48, g[v++] = 3, g[v++] = 1, g[v++] = 255 & o, g[v++] = o >> 8 & 255, g[v++] = 0
                            }
                            var x = !1;
                            this.addFrame = function(e, t, r, o, n, s) {
                                if (!0 === x && (--v, x = !1), s = void 0 === s ? {} : s, e < 0 || t < 0 || 65535 < e || 65535 < t) throw new Error("x/y invalid.");
                                if (r <= 0 || o <= 0 || 65535 < r || 65535 < o) throw new Error("Width/Height invalid.");
                                if (n.length < r * o) throw new Error("Not enough pixels for the frame size.");
                                var i = !0,
                                    a = s.palette;
                                if (null == a && (i = !1, a = b), null == a) throw new Error("Must supply either a local or global palette.");
                                for (var l = _(a), c = 0; l >>= 1;) ++c;
                                var l = 1 << c,
                                    u = void 0 === s.delay ? 0 : s.delay,
                                    d = void 0 === s.disposal ? 0 : s.disposal;
                                if (d < 0 || 3 < d) throw new Error("Disposal out of range.");
                                var h = !1,
                                    f = 0;
                                if (null != s.transparent && (h = !0, (f = s.transparent) < 0 || l <= f)) throw new Error("Transparent color index.");
                                if (0 === d && !h && 0 === u || (g[v++] = 33, g[v++] = 249, g[v++] = 4, g[v++] = d << 2 | (!0 === h ? 1 : 0), g[v++] = 255 & u, g[v++] = u >> 8 & 255, g[v++] = f, g[v++] = 0), g[v++] = 44, g[v++] = 255 & e, g[v++] = e >> 8 & 255, g[v++] = 255 & t, g[v++] = t >> 8 & 255, g[v++] = 255 & r, g[v++] = r >> 8 & 255, g[v++] = 255 & o, g[v++] = o >> 8 & 255, g[v++] = !0 === i ? 128 | c - 1 : 0, !0 === i)
                                    for (var p = 0, m = a.length; p < m; ++p) {
                                        var y = a[p];
                                        g[v++] = y >> 16 & 255, g[v++] = y >> 8 & 255, g[v++] = 255 & y
                                    }
                                return v = ((t, r, e, o) => {
                                    t[r++] = e;
                                    var n = r++,
                                        s = 1 << e,
                                        i = s - 1,
                                        a = 1 + s,
                                        l = 1 + a,
                                        c = e + 1,
                                        u = 0,
                                        d = 0;

                                    function h(e) {
                                        for (; e <= u;) t[r++] = 255 & d, d >>= 8, u -= 8, r === n + 256 && (t[n] = 255, n = r++)
                                    }

                                    function f(e) {
                                        d |= e << u, u += c, h(8)
                                    }
                                    var p = o[0] & i,
                                        m = {};
                                    f(s);
                                    for (var y = 1, g = o.length; y < g; ++y) {
                                        var v = o[y] & i,
                                            b = p << 8 | v,
                                            _ = m[b];
                                        if (void 0 === _) {
                                            for (d |= p << u, u += c; 8 <= u;) t[r++] = 255 & d, d >>= 8, u -= 8, r === n + 256 && (t[n] = 255, n = r++);
                                            4096 === l ? (f(s), l = 1 + a, c = e + 1, m = {}) : (1 << c <= l && ++c, m[b] = l++), p = v
                                        } else p = _
                                    }
                                    return f(p), f(a), h(1), n + 1 === r ? t[n] = 0 : (t[n] = r - n - 1, t[r++] = 0), r
                                })(g, v, c < 2 ? 2 : c, n)
                            }, this.end = function() {
                                return !1 === x && (g[v++] = 59, x = !0), v
                            }, this.getOutputBuffer = function() {
                                return g
                            }, this.setOutputBuffer = function(e) {
                                g = e
                            }, this.getOutputBufferPosition = function() {
                                return v
                            }, this.setOutputBufferPosition = function(e) {
                                v = e
                            }
                        }

                        function S(e, t, r, o) {
                            for (var n = e[t++], s = 1 << n, i = 1 + s, a = 1 + i, l = n + 1, c = (1 << l) - 1, u = 0, d = 0, h = 0, f = e[t++], p = new Int32Array(4096), m = null;;) {
                                for (; u < 16 && 0 !== f;) d |= e[t++] << u, u += 8, 1 === f ? f = e[t++] : --f;
                                if (u < l) break;
                                var y = d & c;
                                if (d >>= l, u -= l, y == s) a = 1 + i, c = (1 << (l = n + 1)) - 1, m = null;
                                else {
                                    if (y == i) break;
                                    for (var g = y < a ? y : m, v = 0, b = g; s < b;) b = p[b] >> 8, ++v;
                                    var _ = b;
                                    if (o < h + v + (g !== y ? 1 : 0)) return console.log("Warning, gif stream longer than expected.");
                                    r[h++] = _;
                                    var x = h += v;
                                    for (g !== y && (r[h++] = _), b = g; v--;) b = p[b], r[--x] = 255 & b, b >>= 8;
                                    null !== m && a < 4096 && (p[a++] = m << 8 | _, c + 1 <= a) && l < 12 && (++l, c = c << 1 | 1), m = y
                                }
                            }
                            h !== o && console.log("Warning, gif stream shorter than expected.")
                        }
                        try {
                            r.GifWriter = o, r.GifReader = function(b) {
                                var e = 0;
                                if (71 !== b[e++] || 73 !== b[e++] || 70 !== b[e++] || 56 !== b[e++] || 56 != (b[e++] + 1 & 253) || 97 !== b[e++]) throw new Error("Invalid GIF 87a/89a header.");
                                var _ = b[e++] | b[e++] << 8,
                                    t = b[e++] | b[e++] << 8,
                                    r = b[e++],
                                    o = (e++, e++, null),
                                    n = null,
                                    s = (r >> 7 && (o = e, e += 3 * (n = 1 << 1 + (7 & r))), !0),
                                    i = [],
                                    a = 0,
                                    l = null,
                                    c = 0,
                                    u = null;
                                for (this.width = _, this.height = t; s && e < b.length;) switch (b[e++]) {
                                    case 33:
                                        switch (b[e++]) {
                                            case 255:
                                                if (11 !== b[e] || 78 == b[e + 1] && 69 == b[e + 2] && 84 == b[e + 3] && 83 == b[e + 4] && 67 == b[e + 5] && 65 == b[e + 6] && 80 == b[e + 7] && 69 == b[e + 8] && 50 == b[e + 9] && 46 == b[e + 10] && 48 == b[e + 11] && 3 == b[e + 12] && 1 == b[e + 13] && 0 == b[e + 16]) e += 14, u = b[e++] | b[e++] << 8, e++;
                                                else
                                                    for (e += 12;;) {
                                                        if (!(0 <= (h = b[e++]))) throw Error("Invalid block size");
                                                        if (0 === h) break;
                                                        e += h
                                                    }
                                                break;
                                            case 249:
                                                if (4 !== b[e++] || 0 !== b[e + 4]) throw new Error("Invalid graphics extension block.");
                                                var d = b[e++],
                                                    a = b[e++] | b[e++] << 8,
                                                    l = b[e++];
                                                0 == (1 & d) && (l = null), c = d >> 2 & 7, e++;
                                                break;
                                            case 254:
                                                for (;;) {
                                                    if (!(0 <= (h = b[e++]))) throw Error("Invalid block size");
                                                    if (0 === h) break;
                                                    e += h
                                                }
                                                break;
                                            default:
                                                throw new Error("Unknown graphic control label: 0x" + b[e - 1].toString(16))
                                        }
                                        break;
                                    case 44:
                                        var h, f = b[e++] | b[e++] << 8,
                                            p = b[e++] | b[e++] << 8,
                                            m = b[e++] | b[e++] << 8,
                                            y = b[e++] | b[e++] << 8,
                                            g = (j = b[e++]) >> 6 & 1,
                                            v = o,
                                            x = n,
                                            w = !1,
                                            j = (j >> 7 && (w = !0, v = e, e += 3 * (x = 1 << 1 + (7 & j))), e);
                                        for (e++;;) {
                                            if (!(0 <= (h = b[e++]))) throw Error("Invalid block size");
                                            if (0 === h) break;
                                            e += h
                                        }
                                        i.push({
                                            x: f,
                                            y: p,
                                            width: m,
                                            height: y,
                                            has_local_palette: w,
                                            palette_offset: v,
                                            palette_size: x,
                                            data_offset: j,
                                            data_length: e - j,
                                            transparent_index: l,
                                            interlaced: !!g,
                                            delay: a,
                                            disposal: c
                                        });
                                        break;
                                    case 59:
                                        s = !1;
                                        break;
                                    default:
                                        throw new Error("Unknown gif block: 0x" + b[e - 1].toString(16))
                                }
                                this.numFrames = function() {
                                    return i.length
                                }, this.loopCount = function() {
                                    return u
                                }, this.frameInfo = function(e) {
                                    if (e < 0 || i.length <= e) throw new Error("Frame index out of range.");
                                    return i[e]
                                }, this.decodeAndBlitFrameBGRA = function(e, t) {
                                    for (var r = (e = this.frameInfo(e)).width * e.height, o = new Uint8Array(r), n = (S(b, e.data_offset, o, r), e.palette_offset), s = e.transparent_index, i = (null === s && (s = 256), e.width), a = _ - i, l = i, c = 4 * (e.y * _ + e.x), u = 4 * ((e.y + e.height) * _ + e.x), d = c, h = 4 * a, f = (!0 === e.interlaced && (h += 4 * _ * 7), 8), p = 0, m = o.length; p < m; ++p) {
                                        var y, g, v = o[p];
                                        0 === l && (l = i, u <= (d += h)) && (h = 4 * a + 4 * _ * (f - 1), d = c + (i + a) * (f << 1), f >>= 1), v === s ? d += 4 : (y = b[n + 3 * v], g = b[n + 3 * v + 1], t[d++] = b[n + 3 * v + 2], t[d++] = g, t[d++] = y, t[d++] = 255), --l
                                    }
                                }, this.decodeAndBlitFrameRGBA = function(e, t) {
                                    for (var r = (e = this.frameInfo(e)).width * e.height, o = new Uint8Array(r), n = (S(b, e.data_offset, o, r), e.palette_offset), s = e.transparent_index, i = (null === s && (s = 256), e.width), a = _ - i, l = i, c = 4 * (e.y * _ + e.x), u = 4 * ((e.y + e.height) * _ + e.x), d = c, h = 4 * a, f = (!0 === e.interlaced && (h += 4 * _ * 7), 8), p = 0, m = o.length; p < m; ++p) {
                                        var y, g, v = o[p];
                                        0 === l && (l = i, u <= (d += h)) && (h = 4 * a + 4 * _ * (f - 1), d = c + (i + a) * (f << 1), f >>= 1), v === s ? d += 4 : (y = b[n + 3 * v], g = b[n + 3 * v + 1], v = b[n + 3 * v + 2], t[d++] = y, t[d++] = g, t[d++] = v, t[d++] = 255), --l
                                    }
                                }
                            }
                        } catch (e) {}
                    }, {}],
                    257: [function(Br, t, r) {
                        ! function(Ur) {
                            var e = function(_) {
                                function D(e) {
                                    if (null == this) throw TypeError();
                                    var t, r = String(this),
                                        o = r.length;
                                    if (!((e = (e = e ? Number(e) : 0) != e ? 0 : e) < 0 || o <= e)) return 55296 <= (t = r.charCodeAt(e)) && t <= 56319 && e + 1 < o && 56320 <= (o = r.charCodeAt(e + 1)) && o <= 57343 ? 1024 * (t - 55296) + o - 56320 + 65536 : t
                                }
                                String.prototype.codePointAt || ((F = (() => {
                                    try {
                                        var e = {},
                                            t = Object.defineProperty,
                                            r = t(e, e, e) && t
                                    } catch (e) {}
                                    return r
                                })()) ? F(String.prototype, "codePointAt", {
                                    value: D,
                                    configurable: !0,
                                    writable: !0
                                }) : String.prototype.codePointAt = D);
                                var F, N = 0,
                                    U = -3;

                                function B() {
                                    this.table = new Uint16Array(16), this.trans = new Uint16Array(288)
                                }

                                function G(e, t) {
                                    this.source = e, this.sourceIndex = 0, this.tag = 0, this.bitcount = 0, this.dest = t, this.destLen = 0, this.ltree = new B, this.dtree = new B
                                }
                                var V = new B,
                                    z = new B,
                                    H = new Uint8Array(30),
                                    W = new Uint16Array(30),
                                    q = new Uint8Array(30),
                                    X = new Uint16Array(30),
                                    Y = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
                                    Z = new B,
                                    v = new Uint8Array(320);

                                function K(e, t, r, o) {
                                    for (var n, s = 0; s < r; ++s) e[s] = 0;
                                    for (s = 0; s < 30 - r; ++s) e[s + r] = s / r | 0;
                                    for (n = o, s = 0; s < 30; ++s) t[s] = n, n += 1 << e[s]
                                }
                                var Q = new Uint16Array(16);

                                function J(e, t, r, o) {
                                    for (var n, s = 0; s < 16; ++s) e.table[s] = 0;
                                    for (s = 0; s < o; ++s) e.table[t[r + s]]++;
                                    for (s = n = e.table[0] = 0; s < 16; ++s) Q[s] = n, n += e.table[s];
                                    for (s = 0; s < o; ++s) t[r + s] && (e.trans[Q[t[r + s]]++] = s)
                                }

                                function b(e, t, r) {
                                    if (!t) return r;
                                    for (; e.bitcount < 24;) e.tag |= e.source[e.sourceIndex++] << e.bitcount, e.bitcount += 8;
                                    var o = e.tag & 65535 >>> 16 - t;
                                    return e.tag >>>= t, e.bitcount -= t, o + r
                                }

                                function $(e, t) {
                                    for (; e.bitcount < 24;) e.tag |= e.source[e.sourceIndex++] << e.bitcount, e.bitcount += 8;
                                    for (var r = 0, o = 0, n = 0, s = e.tag; o = 2 * o + (1 & s), s >>>= 1, r += t.table[++n], 0 <= (o -= t.table[n]););
                                    return e.tag = s, e.bitcount -= n, t.trans[r + o]
                                }

                                function ee(e, t, r) {
                                    for (;;) {
                                        if (256 === (s = $(e, t))) return N;
                                        if (s < 256) e.dest[e.destLen++] = s;
                                        else
                                            for (var o, n = b(e, H[s -= 257], W[s]), s = $(e, r), i = o = e.destLen - b(e, q[s], X[s]); i < o + n; ++i) e.dest[e.destLen++] = e.dest[i]
                                    }
                                }
                                for (var e = V, te = z, t = 0; t < 7; ++t) e.table[t] = 0;
                                for (e.table[7] = 24, e.table[8] = 152, e.table[9] = 112, t = 0; t < 24; ++t) e.trans[t] = 256 + t;
                                for (t = 0; t < 144; ++t) e.trans[24 + t] = t;
                                for (t = 0; t < 8; ++t) e.trans[168 + t] = 280 + t;
                                for (t = 0; t < 112; ++t) e.trans[176 + t] = 144 + t;
                                for (t = 0; t < 5; ++t) te.table[t] = 0;
                                for (te.table[5] = 32, t = 0; t < 32; ++t) te.trans[t] = t;
                                K(H, W, 4, 3), K(q, X, 2, 1), H[28] = 0, W[28] = 258;
                                var re = function(e, t) {
                                    var r, o, n, s = new G(e, t);
                                    do {
                                        switch ((o = s).bitcount-- || (o.tag = o.source[o.sourceIndex++], o.bitcount = 7), n = 1 & o.tag, o.tag >>>= 1, o = n, b(s, 2, 0)) {
                                            case 0:
                                                r = (e => {
                                                    for (var t, r; 8 < e.bitcount;) e.sourceIndex--, e.bitcount -= 8;
                                                    if ((t = 256 * e.source[e.sourceIndex + 1] + e.source[e.sourceIndex]) !== (65535 & ~(256 * e.source[e.sourceIndex + 3] + e.source[e.sourceIndex + 2]))) return U;
                                                    for (e.sourceIndex += 4, r = t; r; --r) e.dest[e.destLen++] = e.source[e.sourceIndex++];
                                                    return e.bitcount = 0, N
                                                })(s);
                                                break;
                                            case 1:
                                                r = ee(s, V, z);
                                                break;
                                            case 2:
                                                g = i = f = void 0;
                                                for (var i, a = s, l = s.ltree, c = s.dtree, u = b(a, 5, 257), d = b(a, 5, 1), h = b(a, 4, 4), f = 0; f < 19; ++f) v[f] = 0;
                                                for (f = 0; f < h; ++f) {
                                                    var p = b(a, 3, 0);
                                                    v[Y[f]] = p
                                                }
                                                for (J(Z, v, 0, 19), i = 0; i < u + d;) {
                                                    var m = $(a, Z);
                                                    switch (m) {
                                                        case 16:
                                                            for (var y = v[i - 1], g = b(a, 2, 3); g; --g) v[i++] = y;
                                                            break;
                                                        case 17:
                                                            for (g = b(a, 3, 3); g; --g) v[i++] = 0;
                                                            break;
                                                        case 18:
                                                            for (g = b(a, 7, 11); g; --g) v[i++] = 0;
                                                            break;
                                                        default:
                                                            v[i++] = m
                                                    }
                                                }
                                                J(l, v, 0, u), J(c, v, u, d), r = ee(s, s.ltree, s.dtree);
                                                break;
                                            default:
                                                r = U
                                        }
                                        if (r !== N) throw new Error("Data error")
                                    } while (!o);
                                    return s.destLen < s.dest.length ? "function" == typeof s.dest.slice ? s.dest.slice(0, s.destLen) : s.dest.subarray(0, s.destLen) : s.dest
                                };

                                function g(e, t, r, o, n) {
                                    return Math.pow(1 - n, 3) * e + 3 * Math.pow(1 - n, 2) * n * t + 3 * (1 - n) * Math.pow(n, 2) * r + Math.pow(n, 3) * o
                                }

                                function a() {
                                    this.x1 = Number.NaN, this.y1 = Number.NaN, this.x2 = Number.NaN, this.y2 = Number.NaN
                                }

                                function h() {
                                    this.commands = [], this.fill = "black", this.stroke = null, this.strokeWidth = 1
                                }

                                function oe(e) {
                                    throw new Error(e)
                                }

                                function ne(e, t) {
                                    e || oe(t)
                                }
                                a.prototype.isEmpty = function() {
                                    return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2)
                                }, a.prototype.addPoint = function(e, t) {
                                    "number" == typeof e && ((isNaN(this.x1) || isNaN(this.x2)) && (this.x1 = e, this.x2 = e), e < this.x1 && (this.x1 = e), e > this.x2) && (this.x2 = e), "number" == typeof t && ((isNaN(this.y1) || isNaN(this.y2)) && (this.y1 = t, this.y2 = t), t < this.y1 && (this.y1 = t), t > this.y2) && (this.y2 = t)
                                }, a.prototype.addX = function(e) {
                                    this.addPoint(e, null)
                                }, a.prototype.addY = function(e) {
                                    this.addPoint(null, e)
                                }, a.prototype.addBezier = function(e, t, r, o, n, s, i, a) {
                                    var l = [e, t],
                                        c = [r, o],
                                        u = [n, s],
                                        d = [i, a];
                                    this.addPoint(e, t), this.addPoint(i, a);
                                    for (var h = 0; h <= 1; h++) {
                                        var f, p = 6 * l[h] - 12 * c[h] + 6 * u[h],
                                            m = -3 * l[h] + 9 * c[h] - 9 * u[h] + 3 * d[h],
                                            y = 3 * c[h] - 3 * l[h];
                                        0 == m ? 0 != p && 0 < (f = -y / p) && f < 1 && (0 === h && this.addX(g(l[h], c[h], u[h], d[h], f)), 1 === h) && this.addY(g(l[h], c[h], u[h], d[h], f)) : (f = Math.pow(p, 2) - 4 * y * m) < 0 || (0 < (y = (-p + Math.sqrt(f)) / (2 * m)) && y < 1 && (0 === h && this.addX(g(l[h], c[h], u[h], d[h], y)), 1 === h) && this.addY(g(l[h], c[h], u[h], d[h], y)), 0 < (y = (-p - Math.sqrt(f)) / (2 * m)) && y < 1 && (0 === h && this.addX(g(l[h], c[h], u[h], d[h], y)), 1 === h) && this.addY(g(l[h], c[h], u[h], d[h], y)))
                                    }
                                }, a.prototype.addQuad = function(e, t, r, o, n, s) {
                                    this.addBezier(e, t, r = e + 2 / 3 * (r - e), o = t + 2 / 3 * (o - t), r + 1 / 3 * (n - e), o + 1 / 3 * (s - t), n, s)
                                }, h.prototype.moveTo = function(e, t) {
                                    this.commands.push({
                                        type: "M",
                                        x: e,
                                        y: t
                                    })
                                }, h.prototype.lineTo = function(e, t) {
                                    this.commands.push({
                                        type: "L",
                                        x: e,
                                        y: t
                                    })
                                }, h.prototype.curveTo = h.prototype.bezierCurveTo = function(e, t, r, o, n, s) {
                                    this.commands.push({
                                        type: "C",
                                        x1: e,
                                        y1: t,
                                        x2: r,
                                        y2: o,
                                        x: n,
                                        y: s
                                    })
                                }, h.prototype.quadTo = h.prototype.quadraticCurveTo = function(e, t, r, o) {
                                    this.commands.push({
                                        type: "Q",
                                        x1: e,
                                        y1: t,
                                        x: r,
                                        y: o
                                    })
                                }, h.prototype.close = h.prototype.closePath = function() {
                                    this.commands.push({
                                        type: "Z"
                                    })
                                }, h.prototype.extend = function(e) {
                                    var t;
                                    if (e.commands) e = e.commands;
                                    else if (e instanceof a) return t = e, this.moveTo(t.x1, t.y1), this.lineTo(t.x2, t.y1), this.lineTo(t.x2, t.y2), this.lineTo(t.x1, t.y2), void this.close();
                                    Array.prototype.push.apply(this.commands, e)
                                }, h.prototype.getBoundingBox = function() {
                                    for (var e = new a, t = 0, r = 0, o = 0, n = 0, s = 0; s < this.commands.length; s++) {
                                        var i = this.commands[s];
                                        switch (i.type) {
                                            case "M":
                                                e.addPoint(i.x, i.y), t = o = i.x, r = n = i.y;
                                                break;
                                            case "L":
                                                e.addPoint(i.x, i.y), o = i.x, n = i.y;
                                                break;
                                            case "Q":
                                                e.addQuad(o, n, i.x1, i.y1, i.x, i.y), o = i.x, n = i.y;
                                                break;
                                            case "C":
                                                e.addBezier(o, n, i.x1, i.y1, i.x2, i.y2, i.x, i.y), o = i.x, n = i.y;
                                                break;
                                            case "Z":
                                                o = t, n = r;
                                                break;
                                            default:
                                                throw new Error("Unexpected path command " + i.type)
                                        }
                                    }
                                    return e.isEmpty() && e.addPoint(0, 0), e
                                }, h.prototype.draw = function(e) {
                                    e.beginPath();
                                    for (var t = 0; t < this.commands.length; t += 1) {
                                        var r = this.commands[t];
                                        "M" === r.type ? e.moveTo(r.x, r.y) : "L" === r.type ? e.lineTo(r.x, r.y) : "C" === r.type ? e.bezierCurveTo(r.x1, r.y1, r.x2, r.y2, r.x, r.y) : "Q" === r.type ? e.quadraticCurveTo(r.x1, r.y1, r.x, r.y) : "Z" === r.type && e.closePath()
                                    }
                                    this.fill && (e.fillStyle = this.fill, e.fill()), this.stroke && (e.strokeStyle = this.stroke, e.lineWidth = this.strokeWidth, e.stroke())
                                }, h.prototype.toPathData = function(n) {
                                    function e() {
                                        for (var e = arguments, t = "", r = 0; r < arguments.length; r += 1) {
                                            var o = e[r];
                                            0 <= o && 0 < r && (t += " "), t += Math.round(o) === o ? "" + Math.round(o) : o.toFixed(n)
                                        }
                                        return t
                                    }
                                    n = void 0 !== n ? n : 2;
                                    for (var t = "", r = 0; r < this.commands.length; r += 1) {
                                        var o = this.commands[r];
                                        "M" === o.type ? t += "M" + e(o.x, o.y) : "L" === o.type ? t += "L" + e(o.x, o.y) : "C" === o.type ? t += "C" + e(o.x1, o.y1, o.x2, o.y2, o.x, o.y) : "Q" === o.type ? t += "Q" + e(o.x1, o.y1, o.x, o.y) : "Z" === o.type && (t += "Z")
                                    }
                                    return t
                                }, h.prototype.toSVG = function(e) {
                                    var t = (t = '<path d="') + this.toPathData(e) + '"';
                                    return this.fill && "black" !== this.fill && (null === this.fill ? t += ' fill="none"' : t += ' fill="' + this.fill + '"'), this.stroke && (t += ' stroke="' + this.stroke + '" stroke-width="' + this.strokeWidth + '"'), t + "/>"
                                }, h.prototype.toDOMElement = function(e) {
                                    var e = this.toPathData(e),
                                        t = document.createElementNS("http://www.w3.org/2000/svg", "path");
                                    return t.setAttribute("d", e), t
                                };
                                var P = {
                                        fail: oe,
                                        argument: ne,
                                        assert: ne
                                    },
                                    m = {},
                                    j = {},
                                    l = {};

                                function r(e) {
                                    return function() {
                                        return e
                                    }
                                }
                                j.BYTE = function(e) {
                                    return P.argument(0 <= e && e <= 255, "Byte value should be between 0 and 255."), [e]
                                }, l.BYTE = r(1), j.CHAR = function(e) {
                                    return [e.charCodeAt(0)]
                                }, l.CHAR = r(1), j.CHARARRAY = function(e) {
                                    for (var t = [], r = 0; r < e.length; r += 1) t[r] = e.charCodeAt(r);
                                    return t
                                }, l.CHARARRAY = function(e) {
                                    return e.length
                                }, j.USHORT = function(e) {
                                    return [e >> 8 & 255, 255 & e]
                                }, l.USHORT = r(2), j.SHORT = function(e) {
                                    return [(e = 32768 <= e ? -(65536 - e) : e) >> 8 & 255, 255 & e]
                                }, l.SHORT = r(2), j.UINT24 = function(e) {
                                    return [e >> 16 & 255, e >> 8 & 255, 255 & e]
                                }, l.UINT24 = r(3), j.ULONG = function(e) {
                                    return [e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
                                }, l.ULONG = r(4), j.LONG = function(e) {
                                    return [(e = 2147483648 <= e ? -(4294967296 - e) : e) >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
                                }, l.LONG = r(4), j.FIXED = j.ULONG, l.FIXED = l.ULONG, j.FWORD = j.SHORT, l.FWORD = l.SHORT, j.UFWORD = j.USHORT, l.UFWORD = l.USHORT, j.LONGDATETIME = function(e) {
                                    return [0, 0, 0, 0, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
                                }, l.LONGDATETIME = r(8), j.TAG = function(e) {
                                    return P.argument(4 === e.length, "Tag should be exactly 4 ASCII characters."), [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]
                                }, l.TAG = r(4), j.Card8 = j.BYTE, l.Card8 = l.BYTE, j.Card16 = j.USHORT, l.Card16 = l.USHORT, j.OffSize = j.BYTE, l.OffSize = l.BYTE, j.SID = j.USHORT, l.SID = l.USHORT, j.NUMBER = function(e) {
                                    return -107 <= e && e <= 107 ? [e + 139] : 108 <= e && e <= 1131 ? [247 + ((e -= 108) >> 8), 255 & e] : -1131 <= e && e <= -108 ? [251 + ((e = -e - 108) >> 8), 255 & e] : -32768 <= e && e <= 32767 ? j.NUMBER16(e) : j.NUMBER32(e)
                                }, l.NUMBER = function(e) {
                                    return j.NUMBER(e).length
                                }, j.NUMBER16 = function(e) {
                                    return [28, e >> 8 & 255, 255 & e]
                                }, l.NUMBER16 = r(3), j.NUMBER32 = function(e) {
                                    return [29, e >> 24 & 255, e >> 16 & 255, e >> 8 & 255, 255 & e]
                                }, l.NUMBER32 = r(5), j.REAL = function(e) {
                                    for (var t = e.toString(), r = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(t), o = (r && (r = parseFloat("1e" + ((r[2] ? +r[2] : 0) + r[1].length)), t = (Math.round(e * r) / r).toString()), ""), n = 0, s = t.length; n < s; n += 1) {
                                        var i = t[n];
                                        o += "e" === i ? "-" === t[++n] ? "c" : "b" : "." === i ? "a" : "-" === i ? "e" : i
                                    }
                                    for (var a = [30], l = 0, c = (o += 1 & o.length ? "f" : "ff").length; l < c; l += 2) a.push(parseInt(o.substr(l, 2), 16));
                                    return a
                                }, l.REAL = function(e) {
                                    return j.REAL(e).length
                                }, j.NAME = j.CHARARRAY, l.NAME = l.CHARARRAY, j.STRING = j.CHARARRAY, l.STRING = l.CHARARRAY, m.UTF8 = function(e, t, r) {
                                    for (var o = [], n = r, s = 0; s < n; s++, t += 1) o[s] = e.getUint8(t);
                                    return String.fromCharCode.apply(null, o)
                                }, m.UTF16 = function(e, t, r) {
                                    for (var o = [], n = r / 2, s = 0; s < n; s++, t += 2) o[s] = e.getUint16(t);
                                    return String.fromCharCode.apply(null, o)
                                }, j.UTF16 = function(e) {
                                    for (var t = [], r = 0; r < e.length; r += 1) {
                                        var o = e.charCodeAt(r);
                                        t[t.length] = o >> 8 & 255, t[t.length] = 255 & o
                                    }
                                    return t
                                }, l.UTF16 = function(e) {
                                    return 2 * e.length
                                };
                                var se, ie = {
                                        "x-mac-croatian": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ",
                                        "x-mac-cyrillic": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю",
                                        "x-mac-gaelic": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæøṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ",
                                        "x-mac-greek": "Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ­",
                                        "x-mac-icelandic": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ",
                                        "x-mac-inuit": "ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł",
                                        "x-mac-ce": "ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ",
                                        macintosh: "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ",
                                        "x-mac-romanian": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ",
                                        "x-mac-turkish": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"
                                    },
                                    ae = (m.MACSTRING = function(e, t, r, o) {
                                        var n = ie[o];
                                        if (void 0 !== n) {
                                            for (var s = "", i = 0; i < r; i++) {
                                                var a = e.getUint8(t + i);
                                                s += a <= 127 ? String.fromCharCode(a) : n[127 & a]
                                            }
                                            return s
                                        }
                                    }, "function" == typeof WeakMap && new WeakMap);

                                function le(e) {
                                    return -128 <= e && e <= 127
                                }
                                j.MACSTRING = function(e, t) {
                                    var r = (e => {
                                        if (!se)
                                            for (var t in se = {}, ie) se[t] = new String(t);
                                        var r = se[e];
                                        if (void 0 !== r) {
                                            if (ae) {
                                                var o = ae.get(r);
                                                if (void 0 !== o) return o
                                            }
                                            var n = ie[e];
                                            if (void 0 !== n) {
                                                for (var s = {}, i = 0; i < n.length; i++) s[n.charCodeAt(i)] = i + 128;
                                                return ae && ae.set(r, s), s
                                            }
                                        }
                                    })(t);
                                    if (void 0 !== r) {
                                        for (var o = [], n = 0; n < e.length; n++) {
                                            var s = e.charCodeAt(n);
                                            if (128 <= s && void 0 === (s = r[s])) return;
                                            o[n] = s
                                        }
                                        return o
                                    }
                                }, l.MACSTRING = function(e, t) {
                                    return void 0 !== (e = j.MACSTRING(e, t)) ? e.length : 0
                                }, j.VARDELTAS = function(e) {
                                    for (var t = 0, r = []; t < e.length;) var o = e[t],
                                        t = (0 === o ? function(e, t, r) {
                                            for (var o = 0, n = e.length; t < n && o < 64 && 0 === e[t];) ++t, ++o;
                                            return r.push(128 | o - 1), t
                                        } : -128 <= o && o <= 127 ? function(e, t, r) {
                                            for (var o = 0, n = e.length, s = t; s < n && o < 64;) {
                                                var i = e[s];
                                                if (!le(i)) break;
                                                if (0 === i && s + 1 < n && 0 === e[s + 1]) break;
                                                ++s, ++o
                                            }
                                            r.push(o - 1);
                                            for (var a = t; a < s; ++a) r.push(e[a] + 256 & 255);
                                            return s
                                        } : function(e, t, r) {
                                            for (var o = 0, n = e.length, s = t; s < n && o < 64;) {
                                                var i = e[s];
                                                if (0 === i) break;
                                                if (le(i) && s + 1 < n && le(e[s + 1])) break;
                                                ++s, ++o
                                            }
                                            r.push(64 | o - 1);
                                            for (var a = t; a < s; ++a) {
                                                var l = e[a];
                                                r.push(l + 65536 >> 8 & 255, l + 256 & 255)
                                            }
                                            return s
                                        })(e, t, r);
                                    return r
                                }, j.INDEX = function(e) {
                                    for (var t = 1, r = [t], o = [], n = 0; n < e.length; n += 1) {
                                        var s = j.OBJECT(e[n]);
                                        Array.prototype.push.apply(o, s), t += s.length, r.push(t)
                                    }
                                    if (0 === o.length) return [0, 0];
                                    for (var i = [], a = 1 + Math.floor(Math.log(t) / Math.log(2)) / 8 | 0, l = [void 0, j.BYTE, j.USHORT, j.UINT24, j.ULONG][a], c = 0; c < r.length; c += 1) {
                                        var u = l(r[c]);
                                        Array.prototype.push.apply(i, u)
                                    }
                                    return Array.prototype.concat(j.Card16(e.length), j.OffSize(a), i, o)
                                }, l.INDEX = function(e) {
                                    return j.INDEX(e).length
                                }, j.DICT = function(e) {
                                    for (var t = [], r = Object.keys(e), o = r.length, n = 0; n < o; n += 1) var s = parseInt(r[n], 0),
                                        i = e[s],
                                        t = (t = t.concat(j.OPERAND(i.value, i.type))).concat(j.OPERATOR(s));
                                    return t
                                }, l.DICT = function(e) {
                                    return j.DICT(e).length
                                }, j.OPERATOR = function(e) {
                                    return e < 1200 ? [e] : [12, e - 1200]
                                }, j.OPERAND = function(e, t) {
                                    var r = [];
                                    if (Array.isArray(t))
                                        for (var o = 0; o < t.length; o += 1) P.argument(e.length === t.length, "Not enough arguments given for type" + t), r = r.concat(j.OPERAND(e[o], t[o]));
                                    else if ("SID" === t) r = r.concat(j.NUMBER(e));
                                    else if ("offset" === t) r = r.concat(j.NUMBER32(e));
                                    else if ("number" === t) r = r.concat(j.NUMBER(e));
                                    else {
                                        if ("real" !== t) throw new Error("Unknown operand type " + t);
                                        r = r.concat(j.REAL(e))
                                    }
                                    return r
                                }, j.OP = j.BYTE, l.OP = l.BYTE;
                                var ce = "function" == typeof WeakMap && new WeakMap;

                                function n(e, t, r) {
                                    for (var o = 0; o < t.length; o += 1) {
                                        var n = t[o];
                                        this[n.name] = n.value
                                    }
                                    if (this.tableName = e, this.fields = t, r)
                                        for (var s = Object.keys(r), i = 0; i < s.length; i += 1) {
                                            var a = s[i],
                                                l = r[a];
                                            void 0 !== this[a] && (this[a] = l)
                                        }
                                }

                                function ue(e, t, r) {
                                    void 0 === r && (r = t.length);
                                    var o = new Array(t.length + 1);
                                    o[0] = {
                                        name: e + "Count",
                                        type: "USHORT",
                                        value: r
                                    };
                                    for (var n = 0; n < t.length; n++) o[n + 1] = {
                                        name: e + n,
                                        type: "USHORT",
                                        value: t[n]
                                    };
                                    return o
                                }

                                function de(e, t, r) {
                                    var o = t.length,
                                        n = new Array(o + 1);
                                    n[0] = {
                                        name: e + "Count",
                                        type: "USHORT",
                                        value: o
                                    };
                                    for (var s = 0; s < o; s++) n[s + 1] = {
                                        name: e + s,
                                        type: "TABLE",
                                        value: r(t[s], s)
                                    };
                                    return n
                                }

                                function he(e, t, r) {
                                    var o = t.length,
                                        n = [];
                                    n[0] = {
                                        name: e + "Count",
                                        type: "USHORT",
                                        value: o
                                    };
                                    for (var s = 0; s < o; s++) n = n.concat(r(t[s], s));
                                    return n
                                }

                                function fe(e) {
                                    1 === e.format ? n.call(this, "coverageTable", [{
                                        name: "coverageFormat",
                                        type: "USHORT",
                                        value: 1
                                    }].concat(ue("glyph", e.glyphs))) : P.assert(!1, "Can't create coverage table format 2 yet.")
                                }

                                function pe(e) {
                                    n.call(this, "scriptListTable", he("scriptRecord", e, function(e, t) {
                                        var r = e.script,
                                            o = r.defaultLangSys;
                                        return P.assert(!!o, "Unable to write GSUB: script " + e.tag + " has no default language system."), [{
                                            name: "scriptTag" + t,
                                            type: "TAG",
                                            value: e.tag
                                        }, {
                                            name: "script" + t,
                                            type: "TABLE",
                                            value: new n("scriptTable", [{
                                                name: "defaultLangSys",
                                                type: "TABLE",
                                                value: new n("defaultLangSys", [{
                                                    name: "lookupOrder",
                                                    type: "USHORT",
                                                    value: 0
                                                }, {
                                                    name: "reqFeatureIndex",
                                                    type: "USHORT",
                                                    value: o.reqFeatureIndex
                                                }].concat(ue("featureIndex", o.featureIndexes)))
                                            }].concat(he("langSys", r.langSysRecords, function(e, t) {
                                                var r = e.langSys;
                                                return [{
                                                    name: "langSysTag" + t,
                                                    type: "TAG",
                                                    value: e.tag
                                                }, {
                                                    name: "langSys" + t,
                                                    type: "TABLE",
                                                    value: new n("langSys", [{
                                                        name: "lookupOrder",
                                                        type: "USHORT",
                                                        value: 0
                                                    }, {
                                                        name: "reqFeatureIndex",
                                                        type: "USHORT",
                                                        value: r.reqFeatureIndex
                                                    }].concat(ue("featureIndex", r.featureIndexes)))
                                                }]
                                            })))
                                        }]
                                    }))
                                }

                                function me(e) {
                                    n.call(this, "featureListTable", he("featureRecord", e, function(e, t) {
                                        var r = e.feature;
                                        return [{
                                            name: "featureTag" + t,
                                            type: "TAG",
                                            value: e.tag
                                        }, {
                                            name: "feature" + t,
                                            type: "TABLE",
                                            value: new n("featureTable", [{
                                                name: "featureParams",
                                                type: "USHORT",
                                                value: r.featureParams
                                            }].concat(ue("lookupListIndex", r.lookupListIndexes)))
                                        }]
                                    }))
                                }

                                function ye(e, r) {
                                    n.call(this, "lookupListTable", de("lookup", e, function(e) {
                                        var t = r[e.lookupType];
                                        return P.assert(!!t, "Unable to write GSUB lookup type " + e.lookupType + " tables."), new n("lookupTable", [{
                                            name: "lookupType",
                                            type: "USHORT",
                                            value: e.lookupType
                                        }, {
                                            name: "lookupFlag",
                                            type: "USHORT",
                                            value: e.lookupFlag
                                        }].concat(de("subtable", e.subtables, t)))
                                    }))
                                }
                                j.CHARSTRING = function(e) {
                                    if (ce) {
                                        var t = ce.get(e);
                                        if (void 0 !== t) return t
                                    }
                                    for (var r = [], o = e.length, n = 0; n < o; n += 1) var s = e[n],
                                        r = r.concat(j[s.type](s.value));
                                    return ce && ce.set(e, r), r
                                }, l.CHARSTRING = function(e) {
                                    return j.CHARSTRING(e).length
                                }, j.OBJECT = function(e) {
                                    var t = j[e.type];
                                    return P.argument(void 0 !== t, "No encoding function for type " + e.type), t(e.value)
                                }, l.OBJECT = function(e) {
                                    var t = l[e.type];
                                    return P.argument(void 0 !== t, "No sizeOf function for type " + e.type), t(e.value)
                                }, j.TABLE = function(e) {
                                    for (var t = [], r = e.fields.length, o = [], n = [], s = 0; s < r; s += 1) {
                                        var i = e.fields[s],
                                            a = j[i.type],
                                            l = (P.argument(void 0 !== a, "No encoding function for field type " + i.type + " (" + i.name + ")"), e[i.name]),
                                            a = a(void 0 === l ? i.value : l);
                                        "TABLE" === i.type ? (n.push(t.length), t = t.concat([0, 0]), o.push(a)) : t = t.concat(a)
                                    }
                                    for (var c = 0; c < o.length; c += 1) {
                                        var u = n[c],
                                            d = t.length;
                                        P.argument(d < 65536, "Table " + e.tableName + " too big."), t[u] = d >> 8, t[u + 1] = 255 & d, t = t.concat(o[c])
                                    }
                                    return t
                                }, l.TABLE = function(e) {
                                    for (var t = 0, r = e.fields.length, o = 0; o < r; o += 1) {
                                        var n = e.fields[o],
                                            s = l[n.type],
                                            i = (P.argument(void 0 !== s, "No sizeOf function for field type " + n.type + " (" + n.name + ")"), e[n.name]);
                                        t += s(void 0 === i ? n.value : i), "TABLE" === n.type && (t += 2)
                                    }
                                    return t
                                }, j.RECORD = j.TABLE, l.RECORD = l.TABLE, j.LITERAL = function(e) {
                                    return e
                                }, l.LITERAL = function(e) {
                                    return e.length
                                }, n.prototype.encode = function() {
                                    return j.TABLE(this)
                                }, n.prototype.sizeOf = function() {
                                    return l.TABLE(this)
                                };
                                var S = {
                                    Table: n,
                                    Record: n,
                                    Coverage: (fe.prototype = Object.create(n.prototype)).constructor = fe,
                                    ScriptList: (pe.prototype = Object.create(n.prototype)).constructor = pe,
                                    FeatureList: (me.prototype = Object.create(n.prototype)).constructor = me,
                                    LookupList: (ye.prototype = Object.create(n.prototype)).constructor = ye,
                                    ushortList: ue,
                                    tableList: de,
                                    recordList: he
                                };

                                function ge(e, t) {
                                    return e.getUint8(t)
                                }

                                function ve(e, t) {
                                    return e.getUint16(t, !1)
                                }

                                function be(e, t) {
                                    return e.getUint32(t, !1)
                                }

                                function _e(e, t) {
                                    return e.getInt16(t, !1) + e.getUint16(t + 2, !1) / 65535
                                }
                                var xe = {
                                    byte: 1,
                                    uShort: 2,
                                    short: 2,
                                    uLong: 4,
                                    fixed: 4,
                                    longDateTime: 8,
                                    tag: 4
                                };

                                function c(e, t) {
                                    this.data = e, this.offset = t, this.relativeOffset = 0
                                }
                                c.prototype.parseByte = function() {
                                    var e = this.data.getUint8(this.offset + this.relativeOffset);
                                    return this.relativeOffset += 1, e
                                }, c.prototype.parseChar = function() {
                                    var e = this.data.getInt8(this.offset + this.relativeOffset);
                                    return this.relativeOffset += 1, e
                                }, c.prototype.parseCard8 = c.prototype.parseByte, c.prototype.parseCard16 = c.prototype.parseUShort = function() {
                                    var e = this.data.getUint16(this.offset + this.relativeOffset);
                                    return this.relativeOffset += 2, e
                                }, c.prototype.parseSID = c.prototype.parseUShort, c.prototype.parseOffset16 = c.prototype.parseUShort, c.prototype.parseShort = function() {
                                    var e = this.data.getInt16(this.offset + this.relativeOffset);
                                    return this.relativeOffset += 2, e
                                }, c.prototype.parseF2Dot14 = function() {
                                    var e = this.data.getInt16(this.offset + this.relativeOffset) / 16384;
                                    return this.relativeOffset += 2, e
                                }, c.prototype.parseOffset32 = c.prototype.parseULong = function() {
                                    var e = be(this.data, this.offset + this.relativeOffset);
                                    return this.relativeOffset += 4, e
                                }, c.prototype.parseFixed = function() {
                                    var e = _e(this.data, this.offset + this.relativeOffset);
                                    return this.relativeOffset += 4, e
                                }, c.prototype.parseString = function(e) {
                                    var t = this.data,
                                        r = this.offset + this.relativeOffset,
                                        o = "";
                                    this.relativeOffset += e;
                                    for (var n = 0; n < e; n++) o += String.fromCharCode(t.getUint8(r + n));
                                    return o
                                }, c.prototype.parseTag = function() {
                                    return this.parseString(4)
                                }, c.prototype.parseLongDateTime = function() {
                                    var e = be(this.data, this.offset + this.relativeOffset + 4);
                                    return e -= 2082844800, this.relativeOffset += 8, e
                                }, c.prototype.parseVersion = function(e) {
                                    var t = ve(this.data, this.offset + this.relativeOffset),
                                        r = ve(this.data, this.offset + this.relativeOffset + 2);
                                    return this.relativeOffset += 4, t + r / (void 0 === e ? 4096 : e) / 10
                                }, c.prototype.skip = function(e, t) {
                                    this.relativeOffset += xe[e] * (t = void 0 === t ? 1 : t)
                                }, c.prototype.parseULongList = function(e) {
                                    void 0 === e && (e = this.parseULong());
                                    for (var t = new Array(e), r = this.data, o = this.offset + this.relativeOffset, n = 0; n < e; n++) t[n] = r.getUint32(o), o += 4;
                                    return this.relativeOffset += 4 * e, t
                                }, c.prototype.parseOffset16List = c.prototype.parseUShortList = function(e) {
                                    void 0 === e && (e = this.parseUShort());
                                    for (var t = new Array(e), r = this.data, o = this.offset + this.relativeOffset, n = 0; n < e; n++) t[n] = r.getUint16(o), o += 2;
                                    return this.relativeOffset += 2 * e, t
                                }, c.prototype.parseShortList = function(e) {
                                    for (var t = new Array(e), r = this.data, o = this.offset + this.relativeOffset, n = 0; n < e; n++) t[n] = r.getInt16(o), o += 2;
                                    return this.relativeOffset += 2 * e, t
                                }, c.prototype.parseByteList = function(e) {
                                    for (var t = new Array(e), r = this.data, o = this.offset + this.relativeOffset, n = 0; n < e; n++) t[n] = r.getUint8(o++);
                                    return this.relativeOffset += e, t
                                }, c.prototype.parseList = function(e, t) {
                                    t || (t = e, e = this.parseUShort());
                                    for (var r = new Array(e), o = 0; o < e; o++) r[o] = t.call(this);
                                    return r
                                }, c.prototype.parseList32 = function(e, t) {
                                    t || (t = e, e = this.parseULong());
                                    for (var r = new Array(e), o = 0; o < e; o++) r[o] = t.call(this);
                                    return r
                                }, c.prototype.parseRecordList = function(e, t) {
                                    t || (t = e, e = this.parseUShort());
                                    for (var r = new Array(e), o = Object.keys(t), n = 0; n < e; n++) {
                                        for (var s = {}, i = 0; i < o.length; i++) {
                                            var a = o[i],
                                                l = t[a];
                                            s[a] = l.call(this)
                                        }
                                        r[n] = s
                                    }
                                    return r
                                }, c.prototype.parseRecordList32 = function(e, t) {
                                    t || (t = e, e = this.parseULong());
                                    for (var r = new Array(e), o = Object.keys(t), n = 0; n < e; n++) {
                                        for (var s = {}, i = 0; i < o.length; i++) {
                                            var a = o[i],
                                                l = t[a];
                                            s[a] = l.call(this)
                                        }
                                        r[n] = s
                                    }
                                    return r
                                }, c.prototype.parseStruct = function(e) {
                                    if ("function" == typeof e) return e.call(this);
                                    for (var t = Object.keys(e), r = {}, o = 0; o < t.length; o++) {
                                        var n = t[o],
                                            s = e[n];
                                        r[n] = s.call(this)
                                    }
                                    return r
                                }, c.prototype.parseValueRecord = function(e) {
                                    var t;
                                    if (0 !== (e = void 0 === e ? this.parseUShort() : e)) return t = {}, 1 & e && (t.xPlacement = this.parseShort()), 2 & e && (t.yPlacement = this.parseShort()), 4 & e && (t.xAdvance = this.parseShort()), 8 & e && (t.yAdvance = this.parseShort()), 16 & e && (t.xPlaDevice = void 0, this.parseShort()), 32 & e && (t.yPlaDevice = void 0, this.parseShort()), 64 & e && (t.xAdvDevice = void 0, this.parseShort()), 128 & e && (t.yAdvDevice = void 0, this.parseShort()), t
                                }, c.prototype.parseValueRecordList = function() {
                                    for (var e = this.parseUShort(), t = this.parseUShort(), r = new Array(t), o = 0; o < t; o++) r[o] = this.parseValueRecord(e);
                                    return r
                                }, c.prototype.parsePointer = function(e) {
                                    var t = this.parseOffset16();
                                    if (0 < t) return new c(this.data, this.offset + t).parseStruct(e)
                                }, c.prototype.parsePointer32 = function(e) {
                                    var t = this.parseOffset32();
                                    if (0 < t) return new c(this.data, this.offset + t).parseStruct(e)
                                }, c.prototype.parseListOfLists = function(e) {
                                    for (var t = this.parseOffset16List(), r = t.length, o = this.relativeOffset, n = new Array(r), s = 0; s < r; s++) {
                                        var i = t[s];
                                        if (0 === i) n[s] = void 0;
                                        else if (this.relativeOffset = i, e) {
                                            for (var a = this.parseOffset16List(), l = new Array(a.length), c = 0; c < a.length; c++) this.relativeOffset = i + a[c], l[c] = e.call(this);
                                            n[s] = l
                                        } else n[s] = this.parseUShortList()
                                    }
                                    return this.relativeOffset = o, n
                                }, c.prototype.parseCoverage = function() {
                                    var e = this.offset + this.relativeOffset,
                                        t = this.parseUShort(),
                                        r = this.parseUShort();
                                    if (1 === t) return {
                                        format: 1,
                                        glyphs: this.parseUShortList(r)
                                    };
                                    if (2 !== t) throw new Error("0x" + e.toString(16) + ": Coverage format must be 1 or 2.");
                                    for (var o = new Array(r), n = 0; n < r; n++) o[n] = {
                                        start: this.parseUShort(),
                                        end: this.parseUShort(),
                                        index: this.parseUShort()
                                    };
                                    return {
                                        format: 2,
                                        ranges: o
                                    }
                                }, c.prototype.parseClassDef = function() {
                                    var e = this.offset + this.relativeOffset,
                                        t = this.parseUShort();
                                    if (1 === t) return {
                                        format: 1,
                                        startGlyph: this.parseUShort(),
                                        classes: this.parseUShortList()
                                    };
                                    if (2 === t) return {
                                        format: 2,
                                        ranges: this.parseRecordList({
                                            start: c.uShort,
                                            end: c.uShort,
                                            classId: c.uShort
                                        })
                                    };
                                    throw new Error("0x" + e.toString(16) + ": ClassDef format must be 1 or 2.")
                                }, c.list = function(e, t) {
                                    return function() {
                                        return this.parseList(e, t)
                                    }
                                }, c.list32 = function(e, t) {
                                    return function() {
                                        return this.parseList32(e, t)
                                    }
                                }, c.recordList = function(e, t) {
                                    return function() {
                                        return this.parseRecordList(e, t)
                                    }
                                }, c.recordList32 = function(e, t) {
                                    return function() {
                                        return this.parseRecordList32(e, t)
                                    }
                                }, c.pointer = function(e) {
                                    return function() {
                                        return this.parsePointer(e)
                                    }
                                }, c.pointer32 = function(e) {
                                    return function() {
                                        return this.parsePointer32(e)
                                    }
                                }, c.tag = c.prototype.parseTag, c.byte = c.prototype.parseByte, c.uShort = c.offset16 = c.prototype.parseUShort, c.uShortList = c.prototype.parseUShortList, c.uLong = c.offset32 = c.prototype.parseULong, c.uLongList = c.prototype.parseULongList, c.struct = c.prototype.parseStruct, c.coverage = c.prototype.parseCoverage, c.classDef = c.prototype.parseClassDef;
                                var we = {
                                        reserved: c.uShort,
                                        reqFeatureIndex: c.uShort,
                                        featureIndexes: c.uShortList
                                    },
                                    I = (c.prototype.parseScriptList = function() {
                                        return this.parsePointer(c.recordList({
                                            tag: c.tag,
                                            script: c.pointer({
                                                defaultLangSys: c.pointer(we),
                                                langSysRecords: c.recordList({
                                                    tag: c.tag,
                                                    langSys: c.pointer(we)
                                                })
                                            })
                                        })) || []
                                    }, c.prototype.parseFeatureList = function() {
                                        return this.parsePointer(c.recordList({
                                            tag: c.tag,
                                            feature: c.pointer({
                                                featureParams: c.offset16,
                                                lookupListIndexes: c.uShortList
                                            })
                                        })) || []
                                    }, c.prototype.parseLookupList = function(o) {
                                        return this.parsePointer(c.list(c.pointer(function() {
                                            var e = this.parseUShort(),
                                                t = (P.argument(1 <= e && e <= 9, "GPOS/GSUB lookup type " + e + " unknown."), this.parseUShort()),
                                                r = 16 & t;
                                            return {
                                                lookupType: e,
                                                lookupFlag: t,
                                                subtables: this.parseList(c.pointer(o[e])),
                                                markFilteringSet: r ? this.parseUShort() : void 0
                                            }
                                        }))) || []
                                    }, c.prototype.parseFeatureVariationsList = function() {
                                        return this.parsePointer32(function() {
                                            var e = this.parseUShort(),
                                                t = this.parseUShort();
                                            return P.argument(1 === e && t < 1, "GPOS/GSUB feature variations table unknown."), this.parseRecordList32({
                                                conditionSetOffset: c.offset32,
                                                featureTableSubstitutionOffset: c.offset32
                                            })
                                        }) || []
                                    }, {
                                        getByte: ge,
                                        getCard8: ge,
                                        getUShort: ve,
                                        getCard16: ve,
                                        getShort: function(e, t) {
                                            return e.getInt16(t, !1)
                                        },
                                        getULong: be,
                                        getFixed: _e,
                                        getTag: function(e, t) {
                                            for (var r = "", o = t; o < t + 4; o += 1) r += String.fromCharCode(e.getInt8(o));
                                            return r
                                        },
                                        getOffset: function(e, t, r) {
                                            for (var o = 0, n = 0; n < r; n += 1) o = (o <<= 8) + e.getUint8(t + n);
                                            return o
                                        },
                                        getBytes: function(e, t, r) {
                                            for (var o = [], n = t; n < r; n += 1) o.push(e.getUint8(n));
                                            return o
                                        },
                                        bytesToString: function(e) {
                                            for (var t = "", r = 0; r < e.length; r += 1) t += String.fromCharCode(e[r]);
                                            return t
                                        },
                                        Parser: c
                                    }),
                                    je = function(e, t) {
                                        for (var r = {}, o = (r.version = I.getUShort(e, t), P.argument(0 === r.version, "cmap table version should be 0."), r.numTables = I.getUShort(e, t + 2), -1), n = r.numTables - 1; 0 <= n; --n) {
                                            var s = I.getUShort(e, t + 4 + 8 * n),
                                                i = I.getUShort(e, t + 4 + 8 * n + 2);
                                            if (3 === s && (0 === i || 1 === i || 10 === i) || 0 === s && (0 === i || 1 === i || 2 === i || 3 === i || 4 === i)) {
                                                o = I.getULong(e, t + 4 + 8 * n + 4);
                                                break
                                            }
                                        }
                                        if (-1 === o) throw new Error("No valid cmap sub-tables found.");
                                        var a = new I.Parser(e, t + o);
                                        if (r.format = a.parseUShort(), 12 === r.format) {
                                            var l, c = r,
                                                u = a;
                                            u.parseUShort(), c.length = u.parseULong(), c.language = u.parseULong(), c.groupCount = l = u.parseULong(), c.glyphIndexMap = {};
                                            for (var d = 0; d < l; d += 1)
                                                for (var h = u.parseULong(), f = u.parseULong(), p = u.parseULong(), m = h; m <= f; m += 1) c.glyphIndexMap[m] = p, p++
                                        } else {
                                            if (4 !== r.format) throw new Error("Only format 4 and 12 cmap tables are supported (found format " + r.format + ").");
                                            var y = r,
                                                g = e,
                                                v = t,
                                                b = o;
                                            y.length = a.parseUShort(), y.language = a.parseUShort(), y.segCount = _ = a.parseUShort() >> 1, a.skip("uShort", 3), y.glyphIndexMap = {};
                                            for (var _, x, w = new I.Parser(g, v + b + 14), j = new I.Parser(g, v + b + 16 + 2 * _), S = new I.Parser(g, v + b + 16 + 4 * _), T = new I.Parser(g, v + b + 16 + 6 * _), E = 0; E < _ - 1; E += 1)
                                                for (var k = void 0, M = w.parseUShort(), O = j.parseUShort(), C = S.parseShort(), A = T.parseUShort(), L = O; L <= M; L += 1) 0 !== A ? (x = T.offset + T.relativeOffset - 2 + A + 2 * (L - O), 0 !== (k = I.getUShort(g, x)) && (k = k + C & 65535)) : k = L + C & 65535, y.glyphIndexMap[L] = k
                                        }
                                        return r
                                    },
                                    Se = function(e) {
                                        for (var t = !0, r = e.length - 1; 0 < r; --r)
                                            if (65535 < e.get(r).unicode) {
                                                console.log("Adding CMAP format 12 (needed!)"), t = !1;
                                                break
                                            } var o, n, s = [{
                                                name: "version",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "numTables",
                                                type: "USHORT",
                                                value: t ? 1 : 2
                                            }, {
                                                name: "platformID",
                                                type: "USHORT",
                                                value: 3
                                            }, {
                                                name: "encodingID",
                                                type: "USHORT",
                                                value: 1
                                            }, {
                                                name: "offset",
                                                type: "ULONG",
                                                value: t ? 12 : 20
                                            }],
                                            i = (s = (s = t ? s : s.concat([{
                                                name: "cmap12PlatformID",
                                                type: "USHORT",
                                                value: 3
                                            }, {
                                                name: "cmap12EncodingID",
                                                type: "USHORT",
                                                value: 10
                                            }, {
                                                name: "cmap12Offset",
                                                type: "ULONG",
                                                value: 0
                                            }])).concat([{
                                                name: "format",
                                                type: "USHORT",
                                                value: 4
                                            }, {
                                                name: "cmap4Length",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "language",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "segCountX2",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "searchRange",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "entrySelector",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "rangeShift",
                                                type: "USHORT",
                                                value: 0
                                            }]), new S.Table("cmap", s));
                                        for (i.segments = [], r = 0; r < e.length; r += 1) {
                                            for (var a = e.get(r), l = 0; l < a.unicodes.length; l += 1) o = a.unicodes[l], n = r, i.segments.push({
                                                end: o,
                                                start: o,
                                                delta: -(o - n),
                                                offset: 0,
                                                glyphIndex: n
                                            });
                                            i.segments = i.segments.sort(function(e, t) {
                                                return e.start - t.start
                                            })
                                        }
                                        i.segments.push({
                                            end: 65535,
                                            start: 65535,
                                            delta: 1,
                                            offset: 0
                                        });
                                        for (var c = i.segments.length, u = 0, d = [], h = [], f = [], p = [], m = [], y = [], r = 0; r < c; r += 1) {
                                            var g = i.segments[r];
                                            g.end <= 65535 && g.start <= 65535 ? (d = d.concat({
                                                name: "end_" + r,
                                                type: "USHORT",
                                                value: g.end
                                            }), h = h.concat({
                                                name: "start_" + r,
                                                type: "USHORT",
                                                value: g.start
                                            }), f = f.concat({
                                                name: "idDelta_" + r,
                                                type: "SHORT",
                                                value: g.delta
                                            }), p = p.concat({
                                                name: "idRangeOffset_" + r,
                                                type: "USHORT",
                                                value: g.offset
                                            }), void 0 !== g.glyphId && (m = m.concat({
                                                name: "glyph_" + r,
                                                type: "USHORT",
                                                value: g.glyphId
                                            }))) : u += 1, t || void 0 === g.glyphIndex || (y = (y = (y = y.concat({
                                                name: "cmap12Start_" + r,
                                                type: "ULONG",
                                                value: g.start
                                            })).concat({
                                                name: "cmap12End_" + r,
                                                type: "ULONG",
                                                value: g.end
                                            })).concat({
                                                name: "cmap12Glyph_" + r,
                                                type: "ULONG",
                                                value: g.glyphIndex
                                            }))
                                        }
                                        return i.segCountX2 = 2 * (c - u), i.searchRange = 2 * Math.pow(2, Math.floor(Math.log(c - u) / Math.log(2))), i.entrySelector = Math.log(i.searchRange / 2) / Math.log(2), i.rangeShift = i.segCountX2 - i.searchRange, i.fields = i.fields.concat(d), i.fields.push({
                                            name: "reservedPad",
                                            type: "USHORT",
                                            value: 0
                                        }), i.fields = i.fields.concat(h), i.fields = i.fields.concat(f), i.fields = i.fields.concat(p), i.fields = i.fields.concat(m), i.cmap4Length = 14 + 2 * d.length + 2 + 2 * h.length + 2 * f.length + 2 * p.length + 2 * m.length, t || (s = 16 + 4 * y.length, i.cmap12Offset = 20 + i.cmap4Length, i.fields = i.fields.concat([{
                                            name: "cmap12Format",
                                            type: "USHORT",
                                            value: 12
                                        }, {
                                            name: "cmap12Reserved",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "cmap12Length",
                                            type: "ULONG",
                                            value: s
                                        }, {
                                            name: "cmap12Language",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "cmap12nGroups",
                                            type: "ULONG",
                                            value: y.length / 3
                                        }]), i.fields = i.fields.concat(y)), i
                                    },
                                    Te = [".notdef", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "endash", "dagger", "daggerdbl", "periodcentered", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "emdash", "AE", "ordfeminine", "Lslash", "Oslash", "OE", "ordmasculine", "ae", "dotlessi", "lslash", "oslash", "oe", "germandbls", "onesuperior", "logicalnot", "mu", "trademark", "Eth", "onehalf", "plusminus", "Thorn", "onequarter", "divide", "brokenbar", "degree", "thorn", "threequarters", "twosuperior", "registered", "minus", "eth", "multiply", "threesuperior", "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", "aacute", "acircumflex", "adieresis", "agrave", "aring", "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", "egrave", "iacute", "icircumflex", "idieresis", "igrave", "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", "otilde", "scaron", "uacute", "ucircumflex", "udieresis", "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "266 ff", "onedotenleader", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "zerosuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", "001.000", "001.001", "001.002", "001.003", "Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold"],
                                    Ee = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "quoteleft", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdown", "cent", "sterling", "fraction", "yen", "florin", "section", "currency", "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", "fl", "", "endash", "dagger", "daggerdbl", "periodcentered", "", "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand", "", "questiondown", "", "grave", "acute", "circumflex", "tilde", "macron", "breve", "dotaccent", "dieresis", "", "ring", "cedilla", "", "hungarumlaut", "ogonek", "caron", "emdash", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE", "", "ordfeminine", "", "", "", "", "Lslash", "Oslash", "OE", "ordmasculine", "", "", "", "", "", "ae", "", "", "", "dotlessi", "", "", "lslash", "oslash", "oe", "germandbls"],
                                    ke = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "space", "exclamsmall", "Hungarumlautsmall", "", "dollaroldstyle", "dollarsuperior", "ampersandsmall", "Acutesmall", "parenleftsuperior", "parenrightsuperior", "twodotenleader", "onedotenleader", "comma", "hyphen", "period", "fraction", "zerooldstyle", "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", "fiveoldstyle", "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", "colon", "semicolon", "commasuperior", "threequartersemdash", "periodsuperior", "questionsmall", "", "asuperior", "bsuperior", "centsuperior", "dsuperior", "esuperior", "", "", "isuperior", "", "", "lsuperior", "msuperior", "nsuperior", "osuperior", "", "", "rsuperior", "ssuperior", "tsuperior", "", "ff", "fi", "fl", "ffi", "ffl", "parenleftinferior", "", "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", "Asmall", "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", "colonmonetary", "onefitted", "rupiah", "Tildesmall", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "exclamdownsmall", "centoldstyle", "Lslashsmall", "", "", "Scaronsmall", "Zcaronsmall", "Dieresissmall", "Brevesmall", "Caronsmall", "", "Dotaccentsmall", "", "", "Macronsmall", "", "", "figuredash", "hypheninferior", "", "", "Ogoneksmall", "Ringsmall", "Cedillasmall", "", "", "", "onequarter", "onehalf", "threequarters", "questiondownsmall", "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", "twothirds", "", "", "zerosuperior", "onesuperior", "twosuperior", "threesuperior", "foursuperior", "fivesuperior", "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", "oneinferior", "twoinferior", "threeinferior", "fourinferior", "fiveinferior", "sixinferior", "seveninferior", "eightinferior", "nineinferior", "centinferior", "dollarinferior", "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", "Acircumflexsmall", "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", "Igravesmall", "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", "Ntildesmall", "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", "Odieresissmall", "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", "Ucircumflexsmall", "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall"],
                                    u = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", "numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", "eacute", "egrave", "ecircumflex", "edieresis", "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", "bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", "AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", "summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", "questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", "emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", "circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", "Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", "Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", "onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", "Ccaron", "ccaron", "dcroat"];

                                function Me(e) {
                                    this.font = e
                                }

                                function Oe(e) {
                                    this.cmap = e
                                }

                                function Ce(e, t) {
                                    this.encoding = e, this.charset = t
                                }

                                function Ae(e) {
                                    switch (e.version) {
                                        case 1:
                                            this.names = u.slice();
                                            break;
                                        case 2:
                                            this.names = new Array(e.numberOfGlyphs);
                                            for (var t = 0; t < e.numberOfGlyphs; t++) e.glyphNameIndex[t] < u.length ? this.names[t] = u[e.glyphNameIndex[t]] : this.names[t] = e.names[e.glyphNameIndex[t] - u.length];
                                            break;
                                        case 2.5:
                                            this.names = new Array(e.numberOfGlyphs);
                                            for (var r = 0; r < e.numberOfGlyphs; r++) this.names[r] = u[r + e.glyphNameIndex[r]];
                                            break;
                                        default:
                                            this.names = []
                                    }
                                }
                                Me.prototype.charToGlyphIndex = function(e) {
                                    var t = e.codePointAt(0),
                                        r = this.font.glyphs;
                                    if (r)
                                        for (var o = 0; o < r.length; o += 1)
                                            for (var n = r.get(o), s = 0; s < n.unicodes.length; s += 1)
                                                if (n.unicodes[s] === t) return o;
                                    return null
                                }, Oe.prototype.charToGlyphIndex = function(e) {
                                    return this.cmap.glyphIndexMap[e.codePointAt(0)] || 0
                                }, Ce.prototype.charToGlyphIndex = function(e) {
                                    return e = e.codePointAt(0), e = this.encoding[e], this.charset.indexOf(e)
                                }, Ae.prototype.nameToGlyphIndex = function(e) {
                                    return this.names.indexOf(e)
                                }, Ae.prototype.glyphIndexToName = function(e) {
                                    return this.names[e]
                                };
                                var d = function(e, t, r, o, n) {
                                    e.beginPath(), e.moveTo(t, r), e.lineTo(o, n), e.stroke()
                                };

                                function f(e) {
                                    this.bindConstructorValues(e)
                                }

                                function Le(t, e, r) {
                                    Object.defineProperty(t, e, {
                                        get: function() {
                                            return t.path, t[r]
                                        },
                                        set: function(e) {
                                            t[r] = e
                                        },
                                        enumerable: !0,
                                        configurable: !0
                                    })
                                }

                                function Pe(e, t) {
                                    if (this.font = e, this.glyphs = {}, Array.isArray(t))
                                        for (var r = 0; r < t.length; r++) this.glyphs[r] = t[r];
                                    this.length = t && t.length || 0
                                }
                                f.prototype.bindConstructorValues = function(e) {
                                    var t;
                                    this.index = e.index || 0, this.name = e.name || null, this.unicode = e.unicode || void 0, this.unicodes = e.unicodes || void 0 !== e.unicode ? [e.unicode] : [], e.xMin && (this.xMin = e.xMin), e.yMin && (this.yMin = e.yMin), e.xMax && (this.xMax = e.xMax), e.yMax && (this.yMax = e.yMax), e.advanceWidth && (this.advanceWidth = e.advanceWidth), Object.defineProperty(this, "path", (t = (e = e.path) || new h, {
                                        configurable: !0,
                                        get: function() {
                                            return t = "function" == typeof t ? t() : t
                                        },
                                        set: function(e) {
                                            t = e
                                        }
                                    }))
                                }, f.prototype.addUnicode = function(e) {
                                    0 === this.unicodes.length && (this.unicode = e), this.unicodes.push(e)
                                }, f.prototype.getBoundingBox = function() {
                                    return this.path.getBoundingBox()
                                }, f.prototype.getPath = function(e, t, r, o, n) {
                                    e = void 0 !== e ? e : 0, t = void 0 !== t ? t : 0, r = void 0 !== r ? r : 72;
                                    for (var s, i, a = (o = o || {}).xScale, l = o.yScale, c = ((s = o.hinting && n && n.hinting ? this.path && n.hinting.exec(this, r) : s) ? (i = n.hinting.getCommands(s), e = Math.round(e), t = Math.round(t), a = l = 1) : (i = this.path.commands, o = 1 / this.path.unitsPerEm * r, void 0 === a && (a = o), void 0 === l && (l = o)), new h), u = 0; u < i.length; u += 1) {
                                        var d = i[u];
                                        "M" === d.type ? c.moveTo(e + d.x * a, t + -d.y * l) : "L" === d.type ? c.lineTo(e + d.x * a, t + -d.y * l) : "Q" === d.type ? c.quadraticCurveTo(e + d.x1 * a, t + -d.y1 * l, e + d.x * a, t + -d.y * l) : "C" === d.type ? c.curveTo(e + d.x1 * a, t + -d.y1 * l, e + d.x2 * a, t + -d.y2 * l, e + d.x * a, t + -d.y * l) : "Z" === d.type && c.closePath()
                                    }
                                    return c
                                }, f.prototype.getContours = function() {
                                    if (void 0 === this.points) return [];
                                    for (var e = [], t = [], r = 0; r < this.points.length; r += 1) {
                                        var o = this.points[r];
                                        t.push(o), o.lastPointOfContour && (e.push(t), t = [])
                                    }
                                    return P.argument(0 === t.length, "There are still points left in the current contour."), e
                                }, f.prototype.getMetrics = function() {
                                    for (var e = this.path.commands, t = [], r = [], o = 0; o < e.length; o += 1) {
                                        var n = e[o];
                                        "Z" !== n.type && (t.push(n.x), r.push(n.y)), "Q" !== n.type && "C" !== n.type || (t.push(n.x1), r.push(n.y1)), "C" === n.type && (t.push(n.x2), r.push(n.y2))
                                    }
                                    var s = {
                                        xMin: Math.min.apply(null, t),
                                        yMin: Math.min.apply(null, r),
                                        xMax: Math.max.apply(null, t),
                                        yMax: Math.max.apply(null, r),
                                        leftSideBearing: this.leftSideBearing
                                    };
                                    return isFinite(s.xMin) || (s.xMin = 0), isFinite(s.xMax) || (s.xMax = this.advanceWidth), isFinite(s.yMin) || (s.yMin = 0), isFinite(s.yMax) || (s.yMax = 0), s.rightSideBearing = this.advanceWidth - s.leftSideBearing - (s.xMax - s.xMin), s
                                }, f.prototype.draw = function(e, t, r, o, n) {
                                    this.getPath(t, r, o, n).draw(e)
                                }, f.prototype.drawPoints = function(i, e, t, r) {
                                    function o(e, t, r, o) {
                                        var n = 2 * Math.PI;
                                        i.beginPath();
                                        for (var s = 0; s < e.length; s += 1) i.moveTo(t + e[s].x * o, r + e[s].y * o), i.arc(t + e[s].x * o, r + e[s].y * o, 2, 0, n, !1);
                                        i.closePath(), i.fill()
                                    }
                                    e = void 0 !== e ? e : 0, t = void 0 !== t ? t : 0;
                                    for (var r = 1 / this.path.unitsPerEm * (void 0 !== r ? r : 24), n = [], s = [], a = this.path, l = 0; l < a.commands.length; l += 1) {
                                        var c = a.commands[l];
                                        void 0 !== c.x && n.push({
                                            x: c.x,
                                            y: -c.y
                                        }), void 0 !== c.x1 && s.push({
                                            x: c.x1,
                                            y: -c.y1
                                        }), void 0 !== c.x2 && s.push({
                                            x: c.x2,
                                            y: -c.y2
                                        })
                                    }
                                    i.fillStyle = "blue", o(n, e, t, r), i.fillStyle = "red", o(s, e, t, r)
                                }, f.prototype.drawMetrics = function(e, t, r, o) {
                                    t = void 0 !== t ? t : 0, r = void 0 !== r ? r : 0, o = 1 / this.path.unitsPerEm * (void 0 !== o ? o : 24), e.lineWidth = 1, e.strokeStyle = "black", d(e, t, -1e4, t, 1e4), d(e, -1e4, r, 1e4, r);
                                    var n = this.xMin || 0,
                                        s = this.yMin || 0,
                                        i = this.xMax || 0,
                                        a = this.yMax || 0,
                                        l = this.advanceWidth || 0;
                                    e.strokeStyle = "blue", d(e, t + n * o, -1e4, t + n * o, 1e4), d(e, t + i * o, -1e4, t + i * o, 1e4), d(e, -1e4, r + -s * o, 1e4, r + -s * o), d(e, -1e4, r + -a * o, 1e4, r + -a * o), e.strokeStyle = "green", d(e, t + l * o, -1e4, t + l * o, 1e4)
                                }, Pe.prototype.get = function(e) {
                                    return "function" == typeof this.glyphs[e] && (this.glyphs[e] = this.glyphs[e]()), this.glyphs[e]
                                }, Pe.prototype.push = function(e, t) {
                                    this.glyphs[e] = t, this.length++
                                };
                                var p = {
                                    GlyphSet: Pe,
                                    glyphLoader: function(e, t) {
                                        return new f({
                                            index: t,
                                            font: e
                                        })
                                    },
                                    ttfGlyphLoader: function(r, e, o, n, s, i) {
                                        return function() {
                                            var t = new f({
                                                index: e,
                                                font: r
                                            });
                                            return t.path = function() {
                                                o(t, n, s);
                                                var e = i(r.glyphs, t);
                                                return e.unitsPerEm = r.unitsPerEm, e
                                            }, Le(t, "xMin", "_xMin"), Le(t, "xMax", "_xMax"), Le(t, "yMin", "_yMin"), Le(t, "yMax", "_yMax"), t
                                        }
                                    },
                                    cffGlyphLoader: function(r, e, o, n) {
                                        return function() {
                                            var t = new f({
                                                index: e,
                                                font: r
                                            });
                                            return t.path = function() {
                                                var e = o(r, t, n);
                                                return e.unitsPerEm = r.unitsPerEm, e
                                            }, t
                                        }
                                    }
                                };

                                function Ie(e) {
                                    return e = e.length < 1240 ? 107 : e.length < 33900 ? 1131 : 32768
                                }

                                function y(e, t, r) {
                                    var o, n = [],
                                        s = [],
                                        i = I.getCard16(e, t);
                                    if (0 !== i) {
                                        for (var a = I.getByte(e, t + 2), l = t + (i + 1) * a + 2, c = t + 3, u = 0; u < i + 1; u += 1) n.push(I.getOffset(e, c, a)), c += a;
                                        o = l + n[i]
                                    } else o = t + 2;
                                    for (var d = 0; d < n.length - 1; d += 1) {
                                        var h = I.getBytes(e, l + n[d], l + n[d + 1]);
                                        r && (h = r(h)), s.push(h)
                                    }
                                    return {
                                        objects: s,
                                        startOffset: t,
                                        endOffset: o
                                    }
                                }

                                function Re(e, t, r) {
                                    var o = new I.Parser(e, t = void 0 !== t ? t : 0),
                                        n = [],
                                        s = [];
                                    for (r = void 0 !== r ? r : e.length; o.relativeOffset < r;) {
                                        var i = o.parseByte();
                                        i <= 21 ? (12 === i && (i = 1200 + o.parseByte()), n.push([i, s]), s = []) : s.push(((e, t) => {
                                            if (28 === t) return e.parseByte() << 8 | e.parseByte();
                                            if (29 === t) return e.parseByte() << 24 | e.parseByte() << 16 | e.parseByte() << 8 | e.parseByte();
                                            if (30 === t) {
                                                for (var r = e, o = "", n = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"];;) {
                                                    var s = (i = r.parseByte()) >> 4,
                                                        i = 15 & i;
                                                    if (15 == s) break;
                                                    if (o += n[s], 15 == i) break;
                                                    o += n[i]
                                                }
                                                return parseFloat(o)
                                            }
                                            if (32 <= t && t <= 246) return t - 139;
                                            if (247 <= t && t <= 250) return 256 * (t - 247) + e.parseByte() + 108;
                                            if (251 <= t && t <= 254) return 256 * -(t - 251) - e.parseByte() - 108;
                                            throw new Error("Invalid b0 " + t)
                                        })(o, i))
                                    }
                                    for (var a = n, l = {}, c = 0; c < a.length; c += 1) {
                                        var u = a[c][0],
                                            d = a[c][1],
                                            d = 1 === d.length ? d[0] : d;
                                        if (l.hasOwnProperty(u) && !isNaN(l[u])) throw new Error("Object " + l + " already has key " + u);
                                        l[u] = d
                                    }
                                    return l
                                }

                                function De(e, t) {
                                    return t <= 390 ? Te[t] : e[t - 391]
                                }

                                function Fe(e, t, r) {
                                    for (var o, n = {}, s = 0; s < t.length; s += 1) {
                                        var i = t[s];
                                        if (Array.isArray(i.type)) {
                                            var a = [];
                                            a.length = i.type.length;
                                            for (var l = 0; l < i.type.length; l++) void 0 === (o = void 0 !== e[i.op] ? e[i.op][l] : void 0) && (o = void 0 !== i.value && void 0 !== i.value[l] ? i.value[l] : null), "SID" === i.type[l] && (o = De(r, o)), a[l] = o;
                                            n[i.name] = a
                                        } else void 0 === (o = e[i.op]) && (o = void 0 !== i.value ? i.value : null), "SID" === i.type && (o = De(r, o)), n[i.name] = o
                                    }
                                    return n
                                }
                                var Ne = [{
                                        name: "version",
                                        op: 0,
                                        type: "SID"
                                    }, {
                                        name: "notice",
                                        op: 1,
                                        type: "SID"
                                    }, {
                                        name: "copyright",
                                        op: 1200,
                                        type: "SID"
                                    }, {
                                        name: "fullName",
                                        op: 2,
                                        type: "SID"
                                    }, {
                                        name: "familyName",
                                        op: 3,
                                        type: "SID"
                                    }, {
                                        name: "weight",
                                        op: 4,
                                        type: "SID"
                                    }, {
                                        name: "isFixedPitch",
                                        op: 1201,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "italicAngle",
                                        op: 1202,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "underlinePosition",
                                        op: 1203,
                                        type: "number",
                                        value: -100
                                    }, {
                                        name: "underlineThickness",
                                        op: 1204,
                                        type: "number",
                                        value: 50
                                    }, {
                                        name: "paintType",
                                        op: 1205,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "charstringType",
                                        op: 1206,
                                        type: "number",
                                        value: 2
                                    }, {
                                        name: "fontMatrix",
                                        op: 1207,
                                        type: ["real", "real", "real", "real", "real", "real"],
                                        value: [.001, 0, 0, .001, 0, 0]
                                    }, {
                                        name: "uniqueId",
                                        op: 13,
                                        type: "number"
                                    }, {
                                        name: "fontBBox",
                                        op: 5,
                                        type: ["number", "number", "number", "number"],
                                        value: [0, 0, 0, 0]
                                    }, {
                                        name: "strokeWidth",
                                        op: 1208,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "xuid",
                                        op: 14,
                                        type: [],
                                        value: null
                                    }, {
                                        name: "charset",
                                        op: 15,
                                        type: "offset",
                                        value: 0
                                    }, {
                                        name: "encoding",
                                        op: 16,
                                        type: "offset",
                                        value: 0
                                    }, {
                                        name: "charStrings",
                                        op: 17,
                                        type: "offset",
                                        value: 0
                                    }, {
                                        name: "private",
                                        op: 18,
                                        type: ["number", "offset"],
                                        value: [0, 0]
                                    }, {
                                        name: "ros",
                                        op: 1230,
                                        type: ["SID", "SID", "number"]
                                    }, {
                                        name: "cidFontVersion",
                                        op: 1231,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "cidFontRevision",
                                        op: 1232,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "cidFontType",
                                        op: 1233,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "cidCount",
                                        op: 1234,
                                        type: "number",
                                        value: 8720
                                    }, {
                                        name: "uidBase",
                                        op: 1235,
                                        type: "number"
                                    }, {
                                        name: "fdArray",
                                        op: 1236,
                                        type: "offset"
                                    }, {
                                        name: "fdSelect",
                                        op: 1237,
                                        type: "offset"
                                    }, {
                                        name: "fontName",
                                        op: 1238,
                                        type: "SID"
                                    }],
                                    Ue = [{
                                        name: "subrs",
                                        op: 19,
                                        type: "offset",
                                        value: 0
                                    }, {
                                        name: "defaultWidthX",
                                        op: 20,
                                        type: "number",
                                        value: 0
                                    }, {
                                        name: "nominalWidthX",
                                        op: 21,
                                        type: "number",
                                        value: 0
                                    }];

                                function Be(e, t, r, o) {
                                    return Fe(Re(e, t, r), Ue, o)
                                }

                                function Ge(e, t, r, o) {
                                    for (var n = [], s = 0; s < r.length; s += 1) {
                                        var i = new DataView(new Uint8Array(r[s]).buffer),
                                            a = o,
                                            a = ((i = Fe(Re(i, 0, i.byteLength), Ne, a))._subrs = [], i._subrsBias = 0, i.private[0]),
                                            l = i.private[1];
                                        0 !== a && 0 !== l && (a = Be(e, l + t, a, o), i._defaultWidthX = a.defaultWidthX, i._nominalWidthX = a.nominalWidthX, 0 !== a.subrs && (l = y(e, l + a.subrs + t), i._subrs = l.objects, i._subrsBias = Ie(i._subrs)), i._privateDict = a), n.push(i)
                                    }
                                    return n
                                }

                                function Ve(y, g, e) {
                                    var v, b, _, x, t, w, j, r, S, T = new h,
                                        E = [],
                                        k = 0,
                                        M = !1,
                                        O = !1,
                                        C = 0,
                                        A = 0,
                                        L = (S = (y.isCIDFont ? (t = y.tables.cff.topDict._fdSelect[g.index], t = y.tables.cff.topDict._fdArray[t], w = t._subrs, j = t._subrsBias, r = t._defaultWidthX, t) : (w = y.tables.cff.topDict._subrs, j = y.tables.cff.topDict._subrsBias, r = y.tables.cff.topDict._defaultWidthX, y.tables.cff.topDict))._nominalWidthX, r);

                                    function P(e, t) {
                                        O && T.closePath(), T.moveTo(e, t), O = !0
                                    }

                                    function I() {
                                        E.length % 2 == 0 || M || (L = E.shift() + S), k += E.length >> 1, M = !(E.length = 0)
                                    }
                                    return function e(t) {
                                        for (var r, o, n, s, i, a, l, c, u, d, h, f, p = 0; p < t.length;) {
                                            var m = t[p];
                                            switch (p += 1, m) {
                                                case 1:
                                                case 3:
                                                    I();
                                                    break;
                                                case 4:
                                                    1 < E.length && !M && (L = E.shift() + S, M = !0), A += E.pop(), P(C, A);
                                                    break;
                                                case 5:
                                                    for (; 0 < E.length;) C += E.shift(), A += E.shift(), T.lineTo(C, A);
                                                    break;
                                                case 6:
                                                    for (; 0 < E.length && (C += E.shift(), T.lineTo(C, A), 0 !== E.length);) A += E.shift(), T.lineTo(C, A);
                                                    break;
                                                case 7:
                                                    for (; 0 < E.length && (A += E.shift(), T.lineTo(C, A), 0 !== E.length);) C += E.shift(), T.lineTo(C, A);
                                                    break;
                                                case 8:
                                                    for (; 0 < E.length;) v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x + E.shift(), T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                case 10:
                                                    i = E.pop() + j, (a = w[i]) && e(a);
                                                    break;
                                                case 11:
                                                    return;
                                                case 12:
                                                    switch (m = t[p], p += 1, m) {
                                                        case 35:
                                                            v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), l = _ + E.shift(), c = x + E.shift(), u = l + E.shift(), d = c + E.shift(), h = u + E.shift(), f = d + E.shift(), C = h + E.shift(), A = f + E.shift(), E.shift(), T.curveTo(v, b, _, x, l, c), T.curveTo(u, d, h, f, C, A);
                                                            break;
                                                        case 34:
                                                            v = C + E.shift(), b = A, _ = v + E.shift(), x = b + E.shift(), l = _ + E.shift(), c = x, u = l + E.shift(), d = x, h = u + E.shift(), f = A, C = h + E.shift(), T.curveTo(v, b, _, x, l, c), T.curveTo(u, d, h, f, C, A);
                                                            break;
                                                        case 36:
                                                            v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), l = _ + E.shift(), c = x, u = l + E.shift(), d = x, h = u + E.shift(), f = d + E.shift(), C = h + E.shift(), T.curveTo(v, b, _, x, l, c), T.curveTo(u, d, h, f, C, A);
                                                            break;
                                                        case 37:
                                                            v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), l = _ + E.shift(), c = x + E.shift(), u = l + E.shift(), d = c + E.shift(), h = u + E.shift(), f = d + E.shift(), Math.abs(h - C) > Math.abs(f - A) ? C = h + E.shift() : A = f + E.shift(), T.curveTo(v, b, _, x, l, c), T.curveTo(u, d, h, f, C, A);
                                                            break;
                                                        default:
                                                            console.log("Glyph " + g.index + ": unknown operator 1200" + m), E.length = 0
                                                    }
                                                    break;
                                                case 14:
                                                    0 < E.length && !M && (L = E.shift() + S, M = !0), O && (T.closePath(), O = !1);
                                                    break;
                                                case 18:
                                                    I();
                                                    break;
                                                case 19:
                                                case 20:
                                                    I(), p += k + 7 >> 3;
                                                    break;
                                                case 21:
                                                    2 < E.length && !M && (L = E.shift() + S, M = !0), A += E.pop(), P(C += E.pop(), A);
                                                    break;
                                                case 22:
                                                    1 < E.length && !M && (L = E.shift() + S, M = !0), P(C += E.pop(), A);
                                                    break;
                                                case 23:
                                                    I();
                                                    break;
                                                case 24:
                                                    for (; 2 < E.length;) v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x + E.shift(), T.curveTo(v, b, _, x, C, A);
                                                    C += E.shift(), A += E.shift(), T.lineTo(C, A);
                                                    break;
                                                case 25:
                                                    for (; 6 < E.length;) C += E.shift(), A += E.shift(), T.lineTo(C, A);
                                                    v = C + E.shift(), b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x + E.shift(), T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                case 26:
                                                    for (E.length % 2 && (C += E.shift()); 0 < E.length;) v = C, b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _, A = x + E.shift(), T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                case 27:
                                                    for (E.length % 2 && (A += E.shift()); 0 < E.length;) v = C + E.shift(), b = A, _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x, T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                case 28:
                                                    r = t[p], E.push((r << 24 | (o = t[p + 1]) << 16) >> 16), p += 2;
                                                    break;
                                                case 29:
                                                    i = E.pop() + y.gsubrsBias, (a = y.gsubrs[i]) && e(a);
                                                    break;
                                                case 30:
                                                    for (; 0 < E.length && (v = C, b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x + (1 === E.length ? E.shift() : 0), T.curveTo(v, b, _, x, C, A), 0 !== E.length);) v = C + E.shift(), b = A, _ = v + E.shift(), x = b + E.shift(), A = x + E.shift(), C = _ + (1 === E.length ? E.shift() : 0), T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                case 31:
                                                    for (; 0 < E.length && (v = C + E.shift(), b = A, _ = v + E.shift(), x = b + E.shift(), A = x + E.shift(), C = _ + (1 === E.length ? E.shift() : 0), T.curveTo(v, b, _, x, C, A), 0 !== E.length);) v = C, b = A + E.shift(), _ = v + E.shift(), x = b + E.shift(), C = _ + E.shift(), A = x + (1 === E.length ? E.shift() : 0), T.curveTo(v, b, _, x, C, A);
                                                    break;
                                                default:
                                                    m < 32 ? console.log("Glyph " + g.index + ": unknown operator " + m) : m < 247 ? E.push(m - 139) : m < 251 ? (r = t[p], p += 1, E.push(256 * (m - 247) + r + 108)) : m < 255 ? (r = t[p], p += 1, E.push(256 * -(m - 251) - r - 108)) : (r = t[p], o = t[p + 1], n = t[p + 2], s = t[p + 3], p += 4, E.push((r << 24 | o << 16 | n << 8 | s) / 65536))
                                            }
                                        }
                                    }(e), g.advanceWidth = L, T
                                }

                                function ze(e, t) {
                                    var r, o = Te.indexOf(e);
                                    return 0 <= o && (r = o), 0 <= (o = t.indexOf(e)) ? r = o + Te.length : (r = Te.length + t.length, t.push(e)), r
                                }

                                function He(e, t, r) {
                                    for (var o = {}, n = 0; n < e.length; n += 1) {
                                        var s = e[n],
                                            i = t[s.name];
                                        void 0 === i || function e(t, r) {
                                            if (t === r) return 1;
                                            if (Array.isArray(t) && Array.isArray(r) && t.length === r.length) {
                                                for (var o = 0; o < t.length; o += 1)
                                                    if (!e(t[o], r[o])) return;
                                                return 1
                                            }
                                        }(i, s.value) || ("SID" === s.type && (i = ze(i, r)), o[s.op] = {
                                            name: s.name,
                                            type: s.type,
                                            value: i
                                        })
                                    }
                                    return o
                                }

                                function We(e, t) {
                                    var r = new S.Record("Top DICT", [{
                                        name: "dict",
                                        type: "DICT",
                                        value: {}
                                    }]);
                                    return r.dict = He(Ne, e, t), r
                                }

                                function qe(e) {
                                    var t = new S.Record("Top DICT INDEX", [{
                                        name: "topDicts",
                                        type: "INDEX",
                                        value: []
                                    }]);
                                    return t.topDicts = [{
                                        name: "topDict_0",
                                        type: "TABLE",
                                        value: e
                                    }], t
                                }

                                function Xe(e) {
                                    for (var t = new S.Record("CharStrings INDEX", [{
                                            name: "charStrings",
                                            type: "INDEX",
                                            value: []
                                        }]), r = 0; r < e.length; r += 1) {
                                        var h = e.get(r),
                                            o = (() => {
                                                for (var e = [], t = h.path, r = (e.push({
                                                        name: "width",
                                                        type: "NUMBER",
                                                        value: h.advanceWidth
                                                    }), 0), o = 0, n = 0; n < t.commands.length; n += 1) {
                                                    var s, i, a, l, c = void 0,
                                                        u = void 0,
                                                        d = t.commands[n];
                                                    "M" === (d = "Q" === d.type ? {
                                                        type: "C",
                                                        x: d.x,
                                                        y: d.y,
                                                        x1: 1 / 3 * r + 2 / 3 * d.x1,
                                                        y1: 1 / 3 * o + 2 / 3 * d.y1,
                                                        x2: 1 / 3 * d.x + 2 / 3 * d.x1,
                                                        y2: 1 / 3 * d.y + 2 / 3 * d.y1
                                                    } : d).type ? (c = Math.round(d.x - r), u = Math.round(d.y - o), e.push({
                                                        name: "dx",
                                                        type: "NUMBER",
                                                        value: c
                                                    }), e.push({
                                                        name: "dy",
                                                        type: "NUMBER",
                                                        value: u
                                                    }), e.push({
                                                        name: "rmoveto",
                                                        type: "OP",
                                                        value: 21
                                                    }), r = Math.round(d.x), o = Math.round(d.y)) : "L" === d.type ? (c = Math.round(d.x - r), u = Math.round(d.y - o), e.push({
                                                        name: "dx",
                                                        type: "NUMBER",
                                                        value: c
                                                    }), e.push({
                                                        name: "dy",
                                                        type: "NUMBER",
                                                        value: u
                                                    }), e.push({
                                                        name: "rlineto",
                                                        type: "OP",
                                                        value: 5
                                                    }), r = Math.round(d.x), o = Math.round(d.y)) : "C" === d.type && (s = Math.round(d.x1 - r), i = Math.round(d.y1 - o), a = Math.round(d.x2 - d.x1), l = Math.round(d.y2 - d.y1), c = Math.round(d.x - d.x2), u = Math.round(d.y - d.y2), e.push({
                                                        name: "dx1",
                                                        type: "NUMBER",
                                                        value: s
                                                    }), e.push({
                                                        name: "dy1",
                                                        type: "NUMBER",
                                                        value: i
                                                    }), e.push({
                                                        name: "dx2",
                                                        type: "NUMBER",
                                                        value: a
                                                    }), e.push({
                                                        name: "dy2",
                                                        type: "NUMBER",
                                                        value: l
                                                    }), e.push({
                                                        name: "dx",
                                                        type: "NUMBER",
                                                        value: c
                                                    }), e.push({
                                                        name: "dy",
                                                        type: "NUMBER",
                                                        value: u
                                                    }), e.push({
                                                        name: "rrcurveto",
                                                        type: "OP",
                                                        value: 8
                                                    }), r = Math.round(d.x), o = Math.round(d.y))
                                                }
                                                return e.push({
                                                    name: "endchar",
                                                    type: "OP",
                                                    value: 14
                                                }), e
                                            })();
                                        t.charStrings.push({
                                            name: h.name,
                                            type: "CHARSTRING",
                                            value: o
                                        })
                                    }
                                    return t
                                }
                                var Ye = function(f, u, e) {
                                        e.tables.cff = {}, d = u, (r = {}).formatMajor = I.getCard8(t = f, d), r.formatMinor = I.getCard8(t, d + 1), r.size = I.getCard8(t, d + 2), r.offsetSize = I.getCard8(t, d + 3), r.startOffset = d, r.endOffset = d + 4;
                                        var t = y(f, r.endOffset, I.bytesToString),
                                            d = y(f, t.endOffset),
                                            r = y(f, d.endOffset, I.bytesToString),
                                            t = y(f, r.endOffset);
                                        if (e.gsubrs = t.objects, e.gsubrsBias = Ie(e.gsubrs), 1 !== (t = Ge(f, u, d.objects, r.objects)).length) throw new Error("CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = " + t.length);
                                        if (d = t[0], (e.tables.cff.topDict = d)._privateDict && (e.defaultWidthX = d._privateDict.defaultWidthX, e.nominalWidthX = d._privateDict.nominalWidthX), void 0 !== d.ros[0] && void 0 !== d.ros[1] && (e.isCIDFont = !0), e.isCIDFont) {
                                            var t = d.fdArray,
                                                o = d.fdSelect;
                                            if (0 === t || 0 === o) throw new Error("Font is marked as a CID font, but FDArray and/or FDSelect information is missing");
                                            t = Ge(f, u, y(f, t += u).objects, r.objects), d._fdArray = t, d._fdSelect = ((e, t, r, o) => {
                                                var n, s = [],
                                                    i = new I.Parser(f, t);
                                                if (0 === (e = i.parseCard8()))
                                                    for (var a = 0; a < r; a++) {
                                                        if (o <= (n = i.parseCard8())) throw new Error("CFF table CID Font FDSelect has bad FD index value " + n + " (FD count " + o + ")");
                                                        s.push(n)
                                                    } else {
                                                        if (3 !== e) throw new Error("CFF Table CID Font FDSelect table has unsupported format " + e);
                                                        var l, c = i.parseCard16(),
                                                            u = i.parseCard16();
                                                        if (0 !== u) throw new Error("CFF Table CID Font FDSelect format 3 range has bad initial GID " + u);
                                                        for (var d = 0; d < c; d++) {
                                                            if (n = i.parseCard8(), l = i.parseCard16(), o <= n) throw new Error("CFF table CID Font FDSelect has bad FD index value " + n + " (FD count " + o + ")");
                                                            if (r < l) throw new Error("CFF Table CID Font FDSelect format 3 range has bad GID " + l);
                                                            for (; u < l; u++) s.push(n);
                                                            u = l
                                                        }
                                                        if (l !== r) throw new Error("CFF Table CID Font FDSelect format 3 range has bad final GID " + l)
                                                    }
                                                return s
                                            })(0, o += u, e.numGlyphs, t.length)
                                        }
                                        var o = u + d.private[1],
                                            t = Be(f, o, d.private[0], r.objects),
                                            n = (e.defaultWidthX = t.defaultWidthX, e.nominalWidthX = t.nominalWidthX, 0 !== t.subrs ? (o = y(f, o + t.subrs), e.subrs = o.objects, e.subrsBias = Ie(e.subrs)) : (e.subrs = [], e.subrsBias = 0), y(f, u + d.charStrings)),
                                            t = (e.nGlyphs = n.objects.length, ((e, t, r) => {
                                                var o = new I.Parser(f, u + d.charset),
                                                    n = (--t, [".notdef"]);
                                                if (0 === (e = o.parseCard8()))
                                                    for (var s = 0; s < t; s += 1) i = o.parseSID(), n.push(De(r, i));
                                                else if (1 === e)
                                                    for (; n.length <= t;)
                                                        for (var i = o.parseSID(), a = o.parseCard8(), l = 0; l <= a; l += 1) n.push(De(r, i)), i += 1;
                                                else {
                                                    if (2 !== e) throw new Error("Unknown charset format " + e);
                                                    for (; n.length <= t;)
                                                        for (var i = o.parseSID(), a = o.parseCard16(), c = 0; c <= a; c += 1) n.push(De(r, i)), i += 1
                                                }
                                                return n
                                            })(0, e.nGlyphs, r.objects));
                                        0 === d.encoding ? e.cffEncoding = new Ce(Ee, t) : 1 === d.encoding ? e.cffEncoding = new Ce(ke, t) : e.cffEncoding = ((e, t, r) => {
                                            var o = {},
                                                n = new I.Parser(f, t);
                                            if (0 === (e = n.parseCard8()))
                                                for (var s = n.parseCard8(), i = 0; i < s; i += 1) o[l = n.parseCard8()] = i;
                                            else {
                                                if (1 !== e) throw new Error("Unknown encoding format " + e);
                                                for (var a = n.parseCard8(), l = 1, c = 0; c < a; c += 1)
                                                    for (var u = n.parseCard8(), d = n.parseCard8(), h = u; h <= u + d; h += 1) o[h] = l, l += 1
                                            }
                                            return new Ce(o, r)
                                        })(0, u + d.encoding, t), e.encoding = e.encoding || e.cffEncoding, e.glyphs = new p.GlyphSet(e);
                                        for (var s = 0; s < e.nGlyphs; s += 1) {
                                            var i = n.objects[s];
                                            e.glyphs.push(s, p.cffGlyphLoader(e, s, Ve, i))
                                        }
                                    },
                                    Ze = function(e, t) {
                                        for (var r, o = new S.Table("CFF ", [{
                                                name: "header",
                                                type: "RECORD"
                                            }, {
                                                name: "nameIndex",
                                                type: "RECORD"
                                            }, {
                                                name: "topDictIndex",
                                                type: "RECORD"
                                            }, {
                                                name: "stringIndex",
                                                type: "RECORD"
                                            }, {
                                                name: "globalSubrIndex",
                                                type: "RECORD"
                                            }, {
                                                name: "charsets",
                                                type: "RECORD"
                                            }, {
                                                name: "charStringsIndex",
                                                type: "RECORD"
                                            }, {
                                                name: "privateDict",
                                                type: "RECORD"
                                            }]), n = 1 / t.unitsPerEm, n = {
                                                version: t.version,
                                                fullName: t.fullName,
                                                familyName: t.familyName,
                                                weight: t.weightName,
                                                fontBBox: t.fontBBox || [0, 0, 0, 0],
                                                fontMatrix: [n, 0, 0, n, 0, 0],
                                                charset: 999,
                                                encoding: 0,
                                                charStrings: 999,
                                                private: [0, 999]
                                            }, s = [], i = 1; i < e.length; i += 1) r = e.get(i), s.push(r.name);
                                        var a, l, c = [],
                                            t = (o.header = new S.Record("Header", [{
                                                name: "major",
                                                type: "Card8",
                                                value: 1
                                            }, {
                                                name: "minor",
                                                type: "Card8",
                                                value: 0
                                            }, {
                                                name: "hdrSize",
                                                type: "Card8",
                                                value: 4
                                            }, {
                                                name: "major",
                                                type: "Card8",
                                                value: 1
                                            }]), o.nameIndex = (e => {
                                                var t = new S.Record("Name INDEX", [{
                                                    name: "names",
                                                    type: "INDEX",
                                                    value: []
                                                }]);
                                                t.names = [];
                                                for (var r = 0; r < e.length; r += 1) t.names.push({
                                                    name: "name_" + r,
                                                    type: "NAME",
                                                    value: e[r]
                                                });
                                                return t
                                            })([t.postScriptName]), We(n, c)),
                                            u = (o.topDictIndex = qe(t), o.globalSubrIndex = new S.Record("Global Subr INDEX", [{
                                                name: "subrs",
                                                type: "INDEX",
                                                value: []
                                            }]), o.charsets = ((e, t) => {
                                                for (var r = new S.Record("Charsets", [{
                                                        name: "format",
                                                        type: "Card8",
                                                        value: 0
                                                    }]), o = 0; o < e.length; o += 1) {
                                                    var n = ze(e[o], t);
                                                    r.fields.push({
                                                        name: "glyph_" + o,
                                                        type: "SID",
                                                        value: n
                                                    })
                                                }
                                                return r
                                            })(s, c), o.charStringsIndex = Xe(e), o.privateDict = (u = {}, a = c, (l = new S.Record("Private DICT", [{
                                                name: "dict",
                                                type: "DICT",
                                                value: {}
                                            }])).dict = He(Ue, u, a), l), o.stringIndex = (e => {
                                                var t = new S.Record("String INDEX", [{
                                                    name: "strings",
                                                    type: "INDEX",
                                                    value: []
                                                }]);
                                                t.strings = [];
                                                for (var r = 0; r < e.length; r += 1) t.strings.push({
                                                    name: "string_" + r,
                                                    type: "STRING",
                                                    value: e[r]
                                                });
                                                return t
                                            })(c), o.header.sizeOf() + o.nameIndex.sizeOf() + o.topDictIndex.sizeOf() + o.stringIndex.sizeOf() + o.globalSubrIndex.sizeOf());
                                        return n.charset = u, n.encoding = 0, n.charStrings = n.charset + o.charsets.sizeOf(), n.private[1] = n.charStrings + o.charStringsIndex.sizeOf(), t = We(n, c), o.topDictIndex = qe(t), o
                                    },
                                    Ke = function(e, t) {
                                        var r = {},
                                            e = new I.Parser(e, t);
                                        return r.version = e.parseVersion(), r.fontRevision = Math.round(1e3 * e.parseFixed()) / 1e3, r.checkSumAdjustment = e.parseULong(), r.magicNumber = e.parseULong(), P.argument(1594834165 === r.magicNumber, "Font header has wrong magic number."), r.flags = e.parseUShort(), r.unitsPerEm = e.parseUShort(), r.created = e.parseLongDateTime(), r.modified = e.parseLongDateTime(), r.xMin = e.parseShort(), r.yMin = e.parseShort(), r.xMax = e.parseShort(), r.yMax = e.parseShort(), r.macStyle = e.parseUShort(), r.lowestRecPPEM = e.parseUShort(), r.fontDirectionHint = e.parseShort(), r.indexToLocFormat = e.parseShort(), r.glyphDataFormat = e.parseShort(), r
                                    },
                                    Qe = function(e) {
                                        var t = Math.round((new Date).getTime() / 1e3) + 2082844800,
                                            r = t;
                                        return e.createdTimestamp && (r = e.createdTimestamp + 2082844800), new S.Table("head", [{
                                            name: "version",
                                            type: "FIXED",
                                            value: 65536
                                        }, {
                                            name: "fontRevision",
                                            type: "FIXED",
                                            value: 65536
                                        }, {
                                            name: "checkSumAdjustment",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "magicNumber",
                                            type: "ULONG",
                                            value: 1594834165
                                        }, {
                                            name: "flags",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "unitsPerEm",
                                            type: "USHORT",
                                            value: 1e3
                                        }, {
                                            name: "created",
                                            type: "LONGDATETIME",
                                            value: r
                                        }, {
                                            name: "modified",
                                            type: "LONGDATETIME",
                                            value: t
                                        }, {
                                            name: "xMin",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "yMin",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "xMax",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "yMax",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "macStyle",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "lowestRecPPEM",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "fontDirectionHint",
                                            type: "SHORT",
                                            value: 2
                                        }, {
                                            name: "indexToLocFormat",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "glyphDataFormat",
                                            type: "SHORT",
                                            value: 0
                                        }], e)
                                    },
                                    Je = function(e, t) {
                                        var r = {},
                                            e = new I.Parser(e, t);
                                        return r.version = e.parseVersion(), r.ascender = e.parseShort(), r.descender = e.parseShort(), r.lineGap = e.parseShort(), r.advanceWidthMax = e.parseUShort(), r.minLeftSideBearing = e.parseShort(), r.minRightSideBearing = e.parseShort(), r.xMaxExtent = e.parseShort(), r.caretSlopeRise = e.parseShort(), r.caretSlopeRun = e.parseShort(), r.caretOffset = e.parseShort(), e.relativeOffset += 8, r.metricDataFormat = e.parseShort(), r.numberOfHMetrics = e.parseUShort(), r
                                    },
                                    $e = function(e) {
                                        return new S.Table("hhea", [{
                                            name: "version",
                                            type: "FIXED",
                                            value: 65536
                                        }, {
                                            name: "ascender",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "descender",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "lineGap",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "advanceWidthMax",
                                            type: "UFWORD",
                                            value: 0
                                        }, {
                                            name: "minLeftSideBearing",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "minRightSideBearing",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "xMaxExtent",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "caretSlopeRise",
                                            type: "SHORT",
                                            value: 1
                                        }, {
                                            name: "caretSlopeRun",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "caretOffset",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "reserved1",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "reserved2",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "reserved3",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "reserved4",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "metricDataFormat",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "numberOfHMetrics",
                                            type: "USHORT",
                                            value: 0
                                        }], e)
                                    },
                                    et = function(e, t, r, o, n) {
                                        for (var s, i, a = new I.Parser(e, t), l = 0; l < o; l += 1) {
                                            l < r && (s = a.parseUShort(), i = a.parseShort());
                                            var c = n.get(l);
                                            c.advanceWidth = s, c.leftSideBearing = i
                                        }
                                    },
                                    tt = function(e) {
                                        for (var t = new S.Table("hmtx", []), r = 0; r < e.length; r += 1) {
                                            var o = (n = e.get(r)).advanceWidth || 0,
                                                n = n.leftSideBearing || 0;
                                            t.fields.push({
                                                name: "advanceWidth_" + r,
                                                type: "USHORT",
                                                value: o
                                            }), t.fields.push({
                                                name: "leftSideBearing_" + r,
                                                type: "SHORT",
                                                value: n
                                            })
                                        }
                                        return t
                                    },
                                    rt = function(e) {
                                        for (var t = new S.Table("ltag", [{
                                                name: "version",
                                                type: "ULONG",
                                                value: 1
                                            }, {
                                                name: "flags",
                                                type: "ULONG",
                                                value: 0
                                            }, {
                                                name: "numTags",
                                                type: "ULONG",
                                                value: e.length
                                            }]), r = "", o = 12 + 4 * e.length, n = 0; n < e.length; ++n) {
                                            var s = r.indexOf(e[n]);
                                            s < 0 && (s = r.length, r += e[n]), t.fields.push({
                                                name: "offset " + n,
                                                type: "USHORT",
                                                value: o + s
                                            }), t.fields.push({
                                                name: "length " + n,
                                                type: "USHORT",
                                                value: e[n].length
                                            })
                                        }
                                        return t.fields.push({
                                            name: "stringPool",
                                            type: "CHARARRAY",
                                            value: r
                                        }), t
                                    },
                                    ot = function(e, t) {
                                        for (var r = new I.Parser(e, t), o = r.parseULong(), n = (P.argument(1 === o, "Unsupported ltag table version."), r.skip("uLong", 1), r.parseULong()), s = [], i = 0; i < n; i++) {
                                            for (var a = "", l = t + r.parseUShort(), c = r.parseUShort(), u = l; u < l + c; ++u) a += String.fromCharCode(e.getInt8(u));
                                            s.push(a)
                                        }
                                        return s
                                    },
                                    nt = function(e, t) {
                                        var r = {},
                                            e = new I.Parser(e, t);
                                        return r.version = e.parseVersion(), r.numGlyphs = e.parseUShort(), 1 === r.version && (r.maxPoints = e.parseUShort(), r.maxContours = e.parseUShort(), r.maxCompositePoints = e.parseUShort(), r.maxCompositeContours = e.parseUShort(), r.maxZones = e.parseUShort(), r.maxTwilightPoints = e.parseUShort(), r.maxStorage = e.parseUShort(), r.maxFunctionDefs = e.parseUShort(), r.maxInstructionDefs = e.parseUShort(), r.maxStackElements = e.parseUShort(), r.maxSizeOfInstructions = e.parseUShort(), r.maxComponentElements = e.parseUShort(), r.maxComponentDepth = e.parseUShort()), r
                                    },
                                    st = function(e) {
                                        return new S.Table("maxp", [{
                                            name: "version",
                                            type: "FIXED",
                                            value: 20480
                                        }, {
                                            name: "numGlyphs",
                                            type: "USHORT",
                                            value: e
                                        }])
                                    },
                                    it = ["copyright", "fontFamily", "fontSubfamily", "uniqueID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "manufacturerURL", "designerURL", "license", "licenseURL", "reserved", "preferredFamily", "preferredSubfamily", "compatibleFullName", "sampleText", "postScriptFindFontName", "wwsFamily", "wwsSubfamily"],
                                    at = {
                                        0: "en",
                                        1: "fr",
                                        2: "de",
                                        3: "it",
                                        4: "nl",
                                        5: "sv",
                                        6: "es",
                                        7: "da",
                                        8: "pt",
                                        9: "no",
                                        10: "he",
                                        11: "ja",
                                        12: "ar",
                                        13: "fi",
                                        14: "el",
                                        15: "is",
                                        16: "mt",
                                        17: "tr",
                                        18: "hr",
                                        19: "zh-Hant",
                                        20: "ur",
                                        21: "hi",
                                        22: "th",
                                        23: "ko",
                                        24: "lt",
                                        25: "pl",
                                        26: "hu",
                                        27: "es",
                                        28: "lv",
                                        29: "se",
                                        30: "fo",
                                        31: "fa",
                                        32: "ru",
                                        33: "zh",
                                        34: "nl-BE",
                                        35: "ga",
                                        36: "sq",
                                        37: "ro",
                                        38: "cz",
                                        39: "sk",
                                        40: "si",
                                        41: "yi",
                                        42: "sr",
                                        43: "mk",
                                        44: "bg",
                                        45: "uk",
                                        46: "be",
                                        47: "uz",
                                        48: "kk",
                                        49: "az-Cyrl",
                                        50: "az-Arab",
                                        51: "hy",
                                        52: "ka",
                                        53: "mo",
                                        54: "ky",
                                        55: "tg",
                                        56: "tk",
                                        57: "mn-CN",
                                        58: "mn",
                                        59: "ps",
                                        60: "ks",
                                        61: "ku",
                                        62: "sd",
                                        63: "bo",
                                        64: "ne",
                                        65: "sa",
                                        66: "mr",
                                        67: "bn",
                                        68: "as",
                                        69: "gu",
                                        70: "pa",
                                        71: "or",
                                        72: "ml",
                                        73: "kn",
                                        74: "ta",
                                        75: "te",
                                        76: "si",
                                        77: "my",
                                        78: "km",
                                        79: "lo",
                                        80: "vi",
                                        81: "id",
                                        82: "tl",
                                        83: "ms",
                                        84: "ms-Arab",
                                        85: "am",
                                        86: "ti",
                                        87: "om",
                                        88: "so",
                                        89: "sw",
                                        90: "rw",
                                        91: "rn",
                                        92: "ny",
                                        93: "mg",
                                        94: "eo",
                                        128: "cy",
                                        129: "eu",
                                        130: "ca",
                                        131: "la",
                                        132: "qu",
                                        133: "gn",
                                        134: "ay",
                                        135: "tt",
                                        136: "ug",
                                        137: "dz",
                                        138: "jv",
                                        139: "su",
                                        140: "gl",
                                        141: "af",
                                        142: "br",
                                        143: "iu",
                                        144: "gd",
                                        145: "gv",
                                        146: "ga",
                                        147: "to",
                                        148: "el-polyton",
                                        149: "kl",
                                        150: "az",
                                        151: "nn"
                                    },
                                    lt = {
                                        0: 0,
                                        1: 0,
                                        2: 0,
                                        3: 0,
                                        4: 0,
                                        5: 0,
                                        6: 0,
                                        7: 0,
                                        8: 0,
                                        9: 0,
                                        10: 5,
                                        11: 1,
                                        12: 4,
                                        13: 0,
                                        14: 6,
                                        15: 0,
                                        16: 0,
                                        17: 0,
                                        18: 0,
                                        19: 2,
                                        20: 4,
                                        21: 9,
                                        22: 21,
                                        23: 3,
                                        24: 29,
                                        25: 29,
                                        26: 29,
                                        27: 29,
                                        28: 29,
                                        29: 0,
                                        30: 0,
                                        31: 4,
                                        32: 7,
                                        33: 25,
                                        34: 0,
                                        35: 0,
                                        36: 0,
                                        37: 0,
                                        38: 29,
                                        39: 29,
                                        40: 0,
                                        41: 5,
                                        42: 7,
                                        43: 7,
                                        44: 7,
                                        45: 7,
                                        46: 7,
                                        47: 7,
                                        48: 7,
                                        49: 7,
                                        50: 4,
                                        51: 24,
                                        52: 23,
                                        53: 7,
                                        54: 7,
                                        55: 7,
                                        56: 7,
                                        57: 27,
                                        58: 7,
                                        59: 4,
                                        60: 4,
                                        61: 4,
                                        62: 4,
                                        63: 26,
                                        64: 9,
                                        65: 9,
                                        66: 9,
                                        67: 13,
                                        68: 13,
                                        69: 11,
                                        70: 10,
                                        71: 12,
                                        72: 17,
                                        73: 16,
                                        74: 14,
                                        75: 15,
                                        76: 18,
                                        77: 19,
                                        78: 20,
                                        79: 22,
                                        80: 30,
                                        81: 0,
                                        82: 0,
                                        83: 0,
                                        84: 4,
                                        85: 28,
                                        86: 28,
                                        87: 28,
                                        88: 0,
                                        89: 0,
                                        90: 0,
                                        91: 0,
                                        92: 0,
                                        93: 0,
                                        94: 0,
                                        128: 0,
                                        129: 0,
                                        130: 0,
                                        131: 0,
                                        132: 0,
                                        133: 0,
                                        134: 0,
                                        135: 7,
                                        136: 4,
                                        137: 26,
                                        138: 0,
                                        139: 0,
                                        140: 0,
                                        141: 0,
                                        142: 0,
                                        143: 28,
                                        144: 0,
                                        145: 0,
                                        146: 0,
                                        147: 0,
                                        148: 6,
                                        149: 0,
                                        150: 0,
                                        151: 0
                                    },
                                    ct = {
                                        1078: "af",
                                        1052: "sq",
                                        1156: "gsw",
                                        1118: "am",
                                        5121: "ar-DZ",
                                        15361: "ar-BH",
                                        3073: "ar",
                                        2049: "ar-IQ",
                                        11265: "ar-JO",
                                        13313: "ar-KW",
                                        12289: "ar-LB",
                                        4097: "ar-LY",
                                        6145: "ary",
                                        8193: "ar-OM",
                                        16385: "ar-QA",
                                        1025: "ar-SA",
                                        10241: "ar-SY",
                                        7169: "aeb",
                                        14337: "ar-AE",
                                        9217: "ar-YE",
                                        1067: "hy",
                                        1101: "as",
                                        2092: "az-Cyrl",
                                        1068: "az",
                                        1133: "ba",
                                        1069: "eu",
                                        1059: "be",
                                        2117: "bn",
                                        1093: "bn-IN",
                                        8218: "bs-Cyrl",
                                        5146: "bs",
                                        1150: "br",
                                        1026: "bg",
                                        1027: "ca",
                                        3076: "zh-HK",
                                        5124: "zh-MO",
                                        2052: "zh",
                                        4100: "zh-SG",
                                        1028: "zh-TW",
                                        1155: "co",
                                        1050: "hr",
                                        4122: "hr-BA",
                                        1029: "cs",
                                        1030: "da",
                                        1164: "prs",
                                        1125: "dv",
                                        2067: "nl-BE",
                                        1043: "nl",
                                        3081: "en-AU",
                                        10249: "en-BZ",
                                        4105: "en-CA",
                                        9225: "en-029",
                                        16393: "en-IN",
                                        6153: "en-IE",
                                        8201: "en-JM",
                                        17417: "en-MY",
                                        5129: "en-NZ",
                                        13321: "en-PH",
                                        18441: "en-SG",
                                        7177: "en-ZA",
                                        11273: "en-TT",
                                        2057: "en-GB",
                                        1033: "en",
                                        12297: "en-ZW",
                                        1061: "et",
                                        1080: "fo",
                                        1124: "fil",
                                        1035: "fi",
                                        2060: "fr-BE",
                                        3084: "fr-CA",
                                        1036: "fr",
                                        5132: "fr-LU",
                                        6156: "fr-MC",
                                        4108: "fr-CH",
                                        1122: "fy",
                                        1110: "gl",
                                        1079: "ka",
                                        3079: "de-AT",
                                        1031: "de",
                                        5127: "de-LI",
                                        4103: "de-LU",
                                        2055: "de-CH",
                                        1032: "el",
                                        1135: "kl",
                                        1095: "gu",
                                        1128: "ha",
                                        1037: "he",
                                        1081: "hi",
                                        1038: "hu",
                                        1039: "is",
                                        1136: "ig",
                                        1057: "id",
                                        1117: "iu",
                                        2141: "iu-Latn",
                                        2108: "ga",
                                        1076: "xh",
                                        1077: "zu",
                                        1040: "it",
                                        2064: "it-CH",
                                        1041: "ja",
                                        1099: "kn",
                                        1087: "kk",
                                        1107: "km",
                                        1158: "quc",
                                        1159: "rw",
                                        1089: "sw",
                                        1111: "kok",
                                        1042: "ko",
                                        1088: "ky",
                                        1108: "lo",
                                        1062: "lv",
                                        1063: "lt",
                                        2094: "dsb",
                                        1134: "lb",
                                        1071: "mk",
                                        2110: "ms-BN",
                                        1086: "ms",
                                        1100: "ml",
                                        1082: "mt",
                                        1153: "mi",
                                        1146: "arn",
                                        1102: "mr",
                                        1148: "moh",
                                        1104: "mn",
                                        2128: "mn-CN",
                                        1121: "ne",
                                        1044: "nb",
                                        2068: "nn",
                                        1154: "oc",
                                        1096: "or",
                                        1123: "ps",
                                        1045: "pl",
                                        1046: "pt",
                                        2070: "pt-PT",
                                        1094: "pa",
                                        1131: "qu-BO",
                                        2155: "qu-EC",
                                        3179: "qu",
                                        1048: "ro",
                                        1047: "rm",
                                        1049: "ru",
                                        9275: "smn",
                                        4155: "smj-NO",
                                        5179: "smj",
                                        3131: "se-FI",
                                        1083: "se",
                                        2107: "se-SE",
                                        8251: "sms",
                                        6203: "sma-NO",
                                        7227: "sms",
                                        1103: "sa",
                                        7194: "sr-Cyrl-BA",
                                        3098: "sr",
                                        6170: "sr-Latn-BA",
                                        2074: "sr-Latn",
                                        1132: "nso",
                                        1074: "tn",
                                        1115: "si",
                                        1051: "sk",
                                        1060: "sl",
                                        11274: "es-AR",
                                        16394: "es-BO",
                                        13322: "es-CL",
                                        9226: "es-CO",
                                        5130: "es-CR",
                                        7178: "es-DO",
                                        12298: "es-EC",
                                        17418: "es-SV",
                                        4106: "es-GT",
                                        18442: "es-HN",
                                        2058: "es-MX",
                                        19466: "es-NI",
                                        6154: "es-PA",
                                        15370: "es-PY",
                                        10250: "es-PE",
                                        20490: "es-PR",
                                        3082: "es",
                                        1034: "es",
                                        21514: "es-US",
                                        14346: "es-UY",
                                        8202: "es-VE",
                                        2077: "sv-FI",
                                        1053: "sv",
                                        1114: "syr",
                                        1064: "tg",
                                        2143: "tzm",
                                        1097: "ta",
                                        1092: "tt",
                                        1098: "te",
                                        1054: "th",
                                        1105: "bo",
                                        1055: "tr",
                                        1090: "tk",
                                        1152: "ug",
                                        1058: "uk",
                                        1070: "hsb",
                                        1056: "ur",
                                        2115: "uz-Cyrl",
                                        1091: "uz",
                                        1066: "vi",
                                        1106: "cy",
                                        1160: "wo",
                                        1157: "sah",
                                        1144: "ii",
                                        1130: "yo"
                                    },
                                    ut = "utf-16",
                                    dt = {
                                        0: "macintosh",
                                        1: "x-mac-japanese",
                                        2: "x-mac-chinesetrad",
                                        3: "x-mac-korean",
                                        6: "x-mac-greek",
                                        7: "x-mac-cyrillic",
                                        9: "x-mac-devanagai",
                                        10: "x-mac-gurmukhi",
                                        11: "x-mac-gujarati",
                                        12: "x-mac-oriya",
                                        13: "x-mac-bengali",
                                        14: "x-mac-tamil",
                                        15: "x-mac-telugu",
                                        16: "x-mac-kannada",
                                        17: "x-mac-malayalam",
                                        18: "x-mac-sinhalese",
                                        19: "x-mac-burmese",
                                        20: "x-mac-khmer",
                                        21: "x-mac-thai",
                                        22: "x-mac-lao",
                                        23: "x-mac-georgian",
                                        24: "x-mac-armenian",
                                        25: "x-mac-chinesesimp",
                                        26: "x-mac-tibetan",
                                        27: "x-mac-mongolian",
                                        28: "x-mac-ethiopic",
                                        29: "x-mac-ce",
                                        30: "x-mac-vietnamese",
                                        31: "x-mac-extarabic"
                                    },
                                    ht = {
                                        15: "x-mac-icelandic",
                                        17: "x-mac-turkish",
                                        18: "x-mac-croatian",
                                        24: "x-mac-ce",
                                        25: "x-mac-ce",
                                        26: "x-mac-ce",
                                        27: "x-mac-ce",
                                        28: "x-mac-ce",
                                        30: "x-mac-icelandic",
                                        37: "x-mac-romanian",
                                        38: "x-mac-ce",
                                        39: "x-mac-ce",
                                        40: "x-mac-ce",
                                        143: "x-mac-inuit",
                                        146: "x-mac-gaelic"
                                    };

                                function ft(e, t, r) {
                                    switch (e) {
                                        case 0:
                                            return ut;
                                        case 1:
                                            return ht[r] || dt[t];
                                        case 3:
                                            if (1 === t || 10 === t) return ut
                                    }
                                }

                                function pt(e) {
                                    var t, r = {};
                                    for (t in e) r[e[t]] = parseInt(t);
                                    return r
                                }

                                function mt(e, t, r, o, n, s) {
                                    return new S.Record("NameRecord", [{
                                        name: "platformID",
                                        type: "USHORT",
                                        value: e
                                    }, {
                                        name: "encodingID",
                                        type: "USHORT",
                                        value: t
                                    }, {
                                        name: "languageID",
                                        type: "USHORT",
                                        value: r
                                    }, {
                                        name: "nameID",
                                        type: "USHORT",
                                        value: o
                                    }, {
                                        name: "length",
                                        type: "USHORT",
                                        value: n
                                    }, {
                                        name: "offset",
                                        type: "USHORT",
                                        value: s
                                    }])
                                }

                                function yt(e, t) {
                                    if ((r = ((e, t) => {
                                            var r = e.length,
                                                o = t.length - r + 1;
                                            e: for (var n = 0; n < o; n++)
                                                for (; n < o; n++) {
                                                    for (var s = 0; s < r; s++)
                                                        if (t[n + s] !== e[s]) continue e;
                                                    return n
                                                }
                                            return -1
                                        })(e, t)) < 0)
                                        for (var r = t.length, o = 0, n = e.length; o < n; ++o) t.push(e[o]);
                                    return r
                                }
                                var gt = function(e, t, r) {
                                        for (var o = {}, n = new I.Parser(e, t), t = n.parseUShort(), s = n.parseUShort(), i = n.offset + n.parseUShort(), a = 0; a < s; a++) {
                                            var l = n.parseUShort(),
                                                c = n.parseUShort(),
                                                u = n.parseUShort(),
                                                d = n.parseUShort(),
                                                d = it[d] || d,
                                                h = n.parseUShort(),
                                                f = n.parseUShort(),
                                                p = ((e, t) => {
                                                    switch (l) {
                                                        case 0:
                                                            if (65535 === e) return "und";
                                                            if (t) return t[e];
                                                            break;
                                                        case 1:
                                                            return at[e];
                                                        case 3:
                                                            return ct[e]
                                                    }
                                                })(u, r);
                                            void 0 !== (l = ft(l, c, u)) && void 0 !== p && (c = l === ut ? m.UTF16(e, i + f, h) : m.MACSTRING(e, i + f, h, l)) && ((u = void 0 === (u = o[d]) ? o[d] = {} : u)[p] = c)
                                        }
                                        return 1 === t && n.parseUShort(), o
                                    },
                                    vt = function(e, t) {
                                        var r, o = [],
                                            n = {},
                                            s = pt(it);
                                        for (r in e) {
                                            var i = s[r];
                                            if (void 0 === i && (i = r), h = parseInt(i), isNaN(h)) throw new Error('Name table entry "' + r + '" does not exist, see nameTableNames for complete list.');
                                            n[h] = e[r], o.push(h)
                                        }
                                        for (var a = pt(at), l = pt(ct), c = [], u = [], d = 0; d < o.length; d++) {
                                            var h, f, p = n[h = o[d]];
                                            for (f in p) {
                                                var m = p[f],
                                                    y = 1,
                                                    g = a[f],
                                                    v = lt[g],
                                                    b = ft(y, v, g),
                                                    _ = (void 0 === (b = j.MACSTRING(m, b)) && (y = 0, (g = t.indexOf(f)) < 0 && (g = t.length, t.push(f)), v = 4, b = j.UTF16(m)), yt(b, u));
                                                c.push(mt(y, v, g, h, b.length, _)), void 0 !== (y = l[f]) && (g = yt(v = j.UTF16(m), u), c.push(mt(3, 1, y, h, v.length, g)))
                                            }
                                        }
                                        c.sort(function(e, t) {
                                            return e.platformID - t.platformID || e.encodingID - t.encodingID || e.languageID - t.languageID || e.nameID - t.nameID
                                        });
                                        for (var x = new S.Table("name", [{
                                                name: "format",
                                                type: "USHORT",
                                                value: 0
                                            }, {
                                                name: "count",
                                                type: "USHORT",
                                                value: c.length
                                            }, {
                                                name: "stringOffset",
                                                type: "USHORT",
                                                value: 6 + 12 * c.length
                                            }]), w = 0; w < c.length; w++) x.fields.push({
                                            name: "record_" + w,
                                            type: "RECORD",
                                            value: c[w]
                                        });
                                        return x.fields.push({
                                            name: "strings",
                                            type: "LITERAL",
                                            value: u
                                        }), x
                                    },
                                    bt = [{
                                        begin: 0,
                                        end: 127
                                    }, {
                                        begin: 128,
                                        end: 255
                                    }, {
                                        begin: 256,
                                        end: 383
                                    }, {
                                        begin: 384,
                                        end: 591
                                    }, {
                                        begin: 592,
                                        end: 687
                                    }, {
                                        begin: 688,
                                        end: 767
                                    }, {
                                        begin: 768,
                                        end: 879
                                    }, {
                                        begin: 880,
                                        end: 1023
                                    }, {
                                        begin: 11392,
                                        end: 11519
                                    }, {
                                        begin: 1024,
                                        end: 1279
                                    }, {
                                        begin: 1328,
                                        end: 1423
                                    }, {
                                        begin: 1424,
                                        end: 1535
                                    }, {
                                        begin: 42240,
                                        end: 42559
                                    }, {
                                        begin: 1536,
                                        end: 1791
                                    }, {
                                        begin: 1984,
                                        end: 2047
                                    }, {
                                        begin: 2304,
                                        end: 2431
                                    }, {
                                        begin: 2432,
                                        end: 2559
                                    }, {
                                        begin: 2560,
                                        end: 2687
                                    }, {
                                        begin: 2688,
                                        end: 2815
                                    }, {
                                        begin: 2816,
                                        end: 2943
                                    }, {
                                        begin: 2944,
                                        end: 3071
                                    }, {
                                        begin: 3072,
                                        end: 3199
                                    }, {
                                        begin: 3200,
                                        end: 3327
                                    }, {
                                        begin: 3328,
                                        end: 3455
                                    }, {
                                        begin: 3584,
                                        end: 3711
                                    }, {
                                        begin: 3712,
                                        end: 3839
                                    }, {
                                        begin: 4256,
                                        end: 4351
                                    }, {
                                        begin: 6912,
                                        end: 7039
                                    }, {
                                        begin: 4352,
                                        end: 4607
                                    }, {
                                        begin: 7680,
                                        end: 7935
                                    }, {
                                        begin: 7936,
                                        end: 8191
                                    }, {
                                        begin: 8192,
                                        end: 8303
                                    }, {
                                        begin: 8304,
                                        end: 8351
                                    }, {
                                        begin: 8352,
                                        end: 8399
                                    }, {
                                        begin: 8400,
                                        end: 8447
                                    }, {
                                        begin: 8448,
                                        end: 8527
                                    }, {
                                        begin: 8528,
                                        end: 8591
                                    }, {
                                        begin: 8592,
                                        end: 8703
                                    }, {
                                        begin: 8704,
                                        end: 8959
                                    }, {
                                        begin: 8960,
                                        end: 9215
                                    }, {
                                        begin: 9216,
                                        end: 9279
                                    }, {
                                        begin: 9280,
                                        end: 9311
                                    }, {
                                        begin: 9312,
                                        end: 9471
                                    }, {
                                        begin: 9472,
                                        end: 9599
                                    }, {
                                        begin: 9600,
                                        end: 9631
                                    }, {
                                        begin: 9632,
                                        end: 9727
                                    }, {
                                        begin: 9728,
                                        end: 9983
                                    }, {
                                        begin: 9984,
                                        end: 10175
                                    }, {
                                        begin: 12288,
                                        end: 12351
                                    }, {
                                        begin: 12352,
                                        end: 12447
                                    }, {
                                        begin: 12448,
                                        end: 12543
                                    }, {
                                        begin: 12544,
                                        end: 12591
                                    }, {
                                        begin: 12592,
                                        end: 12687
                                    }, {
                                        begin: 43072,
                                        end: 43135
                                    }, {
                                        begin: 12800,
                                        end: 13055
                                    }, {
                                        begin: 13056,
                                        end: 13311
                                    }, {
                                        begin: 44032,
                                        end: 55215
                                    }, {
                                        begin: 55296,
                                        end: 57343
                                    }, {
                                        begin: 67840,
                                        end: 67871
                                    }, {
                                        begin: 19968,
                                        end: 40959
                                    }, {
                                        begin: 57344,
                                        end: 63743
                                    }, {
                                        begin: 12736,
                                        end: 12783
                                    }, {
                                        begin: 64256,
                                        end: 64335
                                    }, {
                                        begin: 64336,
                                        end: 65023
                                    }, {
                                        begin: 65056,
                                        end: 65071
                                    }, {
                                        begin: 65040,
                                        end: 65055
                                    }, {
                                        begin: 65104,
                                        end: 65135
                                    }, {
                                        begin: 65136,
                                        end: 65279
                                    }, {
                                        begin: 65280,
                                        end: 65519
                                    }, {
                                        begin: 65520,
                                        end: 65535
                                    }, {
                                        begin: 3840,
                                        end: 4095
                                    }, {
                                        begin: 1792,
                                        end: 1871
                                    }, {
                                        begin: 1920,
                                        end: 1983
                                    }, {
                                        begin: 3456,
                                        end: 3583
                                    }, {
                                        begin: 4096,
                                        end: 4255
                                    }, {
                                        begin: 4608,
                                        end: 4991
                                    }, {
                                        begin: 5024,
                                        end: 5119
                                    }, {
                                        begin: 5120,
                                        end: 5759
                                    }, {
                                        begin: 5760,
                                        end: 5791
                                    }, {
                                        begin: 5792,
                                        end: 5887
                                    }, {
                                        begin: 6016,
                                        end: 6143
                                    }, {
                                        begin: 6144,
                                        end: 6319
                                    }, {
                                        begin: 10240,
                                        end: 10495
                                    }, {
                                        begin: 40960,
                                        end: 42127
                                    }, {
                                        begin: 5888,
                                        end: 5919
                                    }, {
                                        begin: 66304,
                                        end: 66351
                                    }, {
                                        begin: 66352,
                                        end: 66383
                                    }, {
                                        begin: 66560,
                                        end: 66639
                                    }, {
                                        begin: 118784,
                                        end: 119039
                                    }, {
                                        begin: 119808,
                                        end: 120831
                                    }, {
                                        begin: 1044480,
                                        end: 1048573
                                    }, {
                                        begin: 65024,
                                        end: 65039
                                    }, {
                                        begin: 917504,
                                        end: 917631
                                    }, {
                                        begin: 6400,
                                        end: 6479
                                    }, {
                                        begin: 6480,
                                        end: 6527
                                    }, {
                                        begin: 6528,
                                        end: 6623
                                    }, {
                                        begin: 6656,
                                        end: 6687
                                    }, {
                                        begin: 11264,
                                        end: 11359
                                    }, {
                                        begin: 11568,
                                        end: 11647
                                    }, {
                                        begin: 19904,
                                        end: 19967
                                    }, {
                                        begin: 43008,
                                        end: 43055
                                    }, {
                                        begin: 65536,
                                        end: 65663
                                    }, {
                                        begin: 65856,
                                        end: 65935
                                    }, {
                                        begin: 66432,
                                        end: 66463
                                    }, {
                                        begin: 66464,
                                        end: 66527
                                    }, {
                                        begin: 66640,
                                        end: 66687
                                    }, {
                                        begin: 66688,
                                        end: 66735
                                    }, {
                                        begin: 67584,
                                        end: 67647
                                    }, {
                                        begin: 68096,
                                        end: 68191
                                    }, {
                                        begin: 119552,
                                        end: 119647
                                    }, {
                                        begin: 73728,
                                        end: 74751
                                    }, {
                                        begin: 119648,
                                        end: 119679
                                    }, {
                                        begin: 7040,
                                        end: 7103
                                    }, {
                                        begin: 7168,
                                        end: 7247
                                    }, {
                                        begin: 7248,
                                        end: 7295
                                    }, {
                                        begin: 43136,
                                        end: 43231
                                    }, {
                                        begin: 43264,
                                        end: 43311
                                    }, {
                                        begin: 43312,
                                        end: 43359
                                    }, {
                                        begin: 43520,
                                        end: 43615
                                    }, {
                                        begin: 65936,
                                        end: 65999
                                    }, {
                                        begin: 66e3,
                                        end: 66047
                                    }, {
                                        begin: 66208,
                                        end: 66271
                                    }, {
                                        begin: 127024,
                                        end: 127135
                                    }],
                                    _t = function(e, t) {
                                        var r = {},
                                            o = new I.Parser(e, t);
                                        r.version = o.parseUShort(), r.xAvgCharWidth = o.parseShort(), r.usWeightClass = o.parseUShort(), r.usWidthClass = o.parseUShort(), r.fsType = o.parseUShort(), r.ySubscriptXSize = o.parseShort(), r.ySubscriptYSize = o.parseShort(), r.ySubscriptXOffset = o.parseShort(), r.ySubscriptYOffset = o.parseShort(), r.ySuperscriptXSize = o.parseShort(), r.ySuperscriptYSize = o.parseShort(), r.ySuperscriptXOffset = o.parseShort(), r.ySuperscriptYOffset = o.parseShort(), r.yStrikeoutSize = o.parseShort(), r.yStrikeoutPosition = o.parseShort(), r.sFamilyClass = o.parseShort(), r.panose = [];
                                        for (var n = 0; n < 10; n++) r.panose[n] = o.parseByte();
                                        return r.ulUnicodeRange1 = o.parseULong(), r.ulUnicodeRange2 = o.parseULong(), r.ulUnicodeRange3 = o.parseULong(), r.ulUnicodeRange4 = o.parseULong(), r.achVendID = String.fromCharCode(o.parseByte(), o.parseByte(), o.parseByte(), o.parseByte()), r.fsSelection = o.parseUShort(), r.usFirstCharIndex = o.parseUShort(), r.usLastCharIndex = o.parseUShort(), r.sTypoAscender = o.parseShort(), r.sTypoDescender = o.parseShort(), r.sTypoLineGap = o.parseShort(), r.usWinAscent = o.parseUShort(), r.usWinDescent = o.parseUShort(), 1 <= r.version && (r.ulCodePageRange1 = o.parseULong(), r.ulCodePageRange2 = o.parseULong()), 2 <= r.version && (r.sxHeight = o.parseShort(), r.sCapHeight = o.parseShort(), r.usDefaultChar = o.parseUShort(), r.usBreakChar = o.parseUShort(), r.usMaxContent = o.parseUShort()), r
                                    },
                                    xt = function(e) {
                                        return new S.Table("OS/2", [{
                                            name: "version",
                                            type: "USHORT",
                                            value: 3
                                        }, {
                                            name: "xAvgCharWidth",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "usWeightClass",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usWidthClass",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "fsType",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "ySubscriptXSize",
                                            type: "SHORT",
                                            value: 650
                                        }, {
                                            name: "ySubscriptYSize",
                                            type: "SHORT",
                                            value: 699
                                        }, {
                                            name: "ySubscriptXOffset",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "ySubscriptYOffset",
                                            type: "SHORT",
                                            value: 140
                                        }, {
                                            name: "ySuperscriptXSize",
                                            type: "SHORT",
                                            value: 650
                                        }, {
                                            name: "ySuperscriptYSize",
                                            type: "SHORT",
                                            value: 699
                                        }, {
                                            name: "ySuperscriptXOffset",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "ySuperscriptYOffset",
                                            type: "SHORT",
                                            value: 479
                                        }, {
                                            name: "yStrikeoutSize",
                                            type: "SHORT",
                                            value: 49
                                        }, {
                                            name: "yStrikeoutPosition",
                                            type: "SHORT",
                                            value: 258
                                        }, {
                                            name: "sFamilyClass",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "bFamilyType",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bSerifStyle",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bWeight",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bProportion",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bContrast",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bStrokeVariation",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bArmStyle",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bLetterform",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bMidline",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "bXHeight",
                                            type: "BYTE",
                                            value: 0
                                        }, {
                                            name: "ulUnicodeRange1",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "ulUnicodeRange2",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "ulUnicodeRange3",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "ulUnicodeRange4",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "achVendID",
                                            type: "CHARARRAY",
                                            value: "XXXX"
                                        }, {
                                            name: "fsSelection",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usFirstCharIndex",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usLastCharIndex",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "sTypoAscender",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "sTypoDescender",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "sTypoLineGap",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "usWinAscent",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usWinDescent",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "ulCodePageRange1",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "ulCodePageRange2",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "sxHeight",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "sCapHeight",
                                            type: "SHORT",
                                            value: 0
                                        }, {
                                            name: "usDefaultChar",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usBreakChar",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "usMaxContext",
                                            type: "USHORT",
                                            value: 0
                                        }], e)
                                    },
                                    wt = function(e) {
                                        for (var t = 0; t < bt.length; t += 1) {
                                            var r = bt[t];
                                            if (e >= r.begin && e < r.end) return t
                                        }
                                        return -1
                                    },
                                    jt = function(e, t) {
                                        var r = {},
                                            o = new I.Parser(e, t);
                                        switch (r.version = o.parseVersion(), r.italicAngle = o.parseFixed(), r.underlinePosition = o.parseShort(), r.underlineThickness = o.parseShort(), r.isFixedPitch = o.parseULong(), r.minMemType42 = o.parseULong(), r.maxMemType42 = o.parseULong(), r.minMemType1 = o.parseULong(), r.maxMemType1 = o.parseULong(), r.version) {
                                            case 1:
                                                r.names = u.slice();
                                                break;
                                            case 2:
                                                r.numberOfGlyphs = o.parseUShort(), r.glyphNameIndex = new Array(r.numberOfGlyphs);
                                                for (var n = 0; n < r.numberOfGlyphs; n++) r.glyphNameIndex[n] = o.parseUShort();
                                                r.names = [];
                                                for (var s, i = 0; i < r.numberOfGlyphs; i++) r.glyphNameIndex[i] >= u.length && (s = o.parseChar(), r.names.push(o.parseString(s)));
                                                break;
                                            case 2.5:
                                                r.numberOfGlyphs = o.parseUShort(), r.offset = new Array(r.numberOfGlyphs);
                                                for (var a = 0; a < r.numberOfGlyphs; a++) r.offset[a] = o.parseChar()
                                        }
                                        return r
                                    },
                                    St = function() {
                                        return new S.Table("post", [{
                                            name: "version",
                                            type: "FIXED",
                                            value: 196608
                                        }, {
                                            name: "italicAngle",
                                            type: "FIXED",
                                            value: 0
                                        }, {
                                            name: "underlinePosition",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "underlineThickness",
                                            type: "FWORD",
                                            value: 0
                                        }, {
                                            name: "isFixedPitch",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "minMemType42",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "maxMemType42",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "minMemType1",
                                            type: "ULONG",
                                            value: 0
                                        }, {
                                            name: "maxMemType1",
                                            type: "ULONG",
                                            value: 0
                                        }])
                                    },
                                    o = new Array(9),
                                    s = (o[1] = function() {
                                        var e = this.offset + this.relativeOffset,
                                            t = this.parseUShort();
                                        return 1 === t ? {
                                            substFormat: 1,
                                            coverage: this.parsePointer(c.coverage),
                                            deltaGlyphId: this.parseUShort()
                                        } : 2 === t ? {
                                            substFormat: 2,
                                            coverage: this.parsePointer(c.coverage),
                                            substitute: this.parseOffset16List()
                                        } : void P.assert(!1, "0x" + e.toString(16) + ": lookup type 1 format must be 1 or 2.")
                                    }, o[2] = function() {
                                        var e = this.parseUShort();
                                        return P.argument(1 === e, "GSUB Multiple Substitution Subtable identifier-format must be 1"), {
                                            substFormat: e,
                                            coverage: this.parsePointer(c.coverage),
                                            sequences: this.parseListOfLists()
                                        }
                                    }, o[3] = function() {
                                        var e = this.parseUShort();
                                        return P.argument(1 === e, "GSUB Alternate Substitution Subtable identifier-format must be 1"), {
                                            substFormat: e,
                                            coverage: this.parsePointer(c.coverage),
                                            alternateSets: this.parseListOfLists()
                                        }
                                    }, o[4] = function() {
                                        var e = this.parseUShort();
                                        return P.argument(1 === e, "GSUB ligature table identifier-format must be 1"), {
                                            substFormat: e,
                                            coverage: this.parsePointer(c.coverage),
                                            ligatureSets: this.parseListOfLists(function() {
                                                return {
                                                    ligGlyph: this.parseUShort(),
                                                    components: this.parseUShortList(this.parseUShort() - 1)
                                                }
                                            })
                                        }
                                    }, {
                                        sequenceIndex: c.uShort,
                                        lookupListIndex: c.uShort
                                    }),
                                    Tt = (o[5] = function() {
                                        var e, t, r = this.offset + this.relativeOffset,
                                            o = this.parseUShort();
                                        return 1 === o ? {
                                            substFormat: o,
                                            coverage: this.parsePointer(c.coverage),
                                            ruleSets: this.parseListOfLists(function() {
                                                var e = this.parseUShort(),
                                                    t = this.parseUShort();
                                                return {
                                                    input: this.parseUShortList(e - 1),
                                                    lookupRecords: this.parseRecordList(t, s)
                                                }
                                            })
                                        } : 2 === o ? {
                                            substFormat: o,
                                            coverage: this.parsePointer(c.coverage),
                                            classDef: this.parsePointer(c.classDef),
                                            classSets: this.parseListOfLists(function() {
                                                var e = this.parseUShort(),
                                                    t = this.parseUShort();
                                                return {
                                                    classes: this.parseUShortList(e - 1),
                                                    lookupRecords: this.parseRecordList(t, s)
                                                }
                                            })
                                        } : 3 === o ? (e = this.parseUShort(), t = this.parseUShort(), {
                                            substFormat: o,
                                            coverages: this.parseList(e, c.pointer(c.coverage)),
                                            lookupRecords: this.parseRecordList(t, s)
                                        }) : void P.assert(!1, "0x" + r.toString(16) + ": lookup type 5 format must be 1, 2 or 3.")
                                    }, o[6] = function() {
                                        var e = this.offset + this.relativeOffset,
                                            t = this.parseUShort();
                                        return 1 === t ? {
                                            substFormat: 1,
                                            coverage: this.parsePointer(c.coverage),
                                            chainRuleSets: this.parseListOfLists(function() {
                                                return {
                                                    backtrack: this.parseUShortList(),
                                                    input: this.parseUShortList(this.parseShort() - 1),
                                                    lookahead: this.parseUShortList(),
                                                    lookupRecords: this.parseRecordList(s)
                                                }
                                            })
                                        } : 2 === t ? {
                                            substFormat: 2,
                                            coverage: this.parsePointer(c.coverage),
                                            backtrackClassDef: this.parsePointer(c.classDef),
                                            inputClassDef: this.parsePointer(c.classDef),
                                            lookaheadClassDef: this.parsePointer(c.classDef),
                                            chainClassSet: this.parseListOfLists(function() {
                                                return {
                                                    backtrack: this.parseUShortList(),
                                                    input: this.parseUShortList(this.parseShort() - 1),
                                                    lookahead: this.parseUShortList(),
                                                    lookupRecords: this.parseRecordList(s)
                                                }
                                            })
                                        } : 3 === t ? {
                                            substFormat: 3,
                                            backtrackCoverage: this.parseList(c.pointer(c.coverage)),
                                            inputCoverage: this.parseList(c.pointer(c.coverage)),
                                            lookaheadCoverage: this.parseList(c.pointer(c.coverage)),
                                            lookupRecords: this.parseRecordList(s)
                                        } : void P.assert(!1, "0x" + e.toString(16) + ": lookup type 6 format must be 1, 2 or 3.")
                                    }, o[7] = function() {
                                        var e = this.parseUShort(),
                                            e = (P.argument(1 === e, "GSUB Extension Substitution subtable identifier-format must be 1"), this.parseUShort()),
                                            t = new c(this.data, this.offset + this.parseULong());
                                        return {
                                            substFormat: 1,
                                            lookupType: e,
                                            extension: o[e].call(t)
                                        }
                                    }, o[8] = function() {
                                        var e = this.parseUShort();
                                        return P.argument(1 === e, "GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1"), {
                                            substFormat: e,
                                            coverage: this.parsePointer(c.coverage),
                                            backtrackCoverage: this.parseList(c.pointer(c.coverage)),
                                            lookaheadCoverage: this.parseList(c.pointer(c.coverage)),
                                            substitutes: this.parseUShortList()
                                        }
                                    }, new Array(9));
                                Tt[1] = function(e) {
                                    return 1 === e.substFormat ? new S.Table("substitutionTable", [{
                                        name: "substFormat",
                                        type: "USHORT",
                                        value: 1
                                    }, {
                                        name: "coverage",
                                        type: "TABLE",
                                        value: new S.Coverage(e.coverage)
                                    }, {
                                        name: "deltaGlyphID",
                                        type: "USHORT",
                                        value: e.deltaGlyphId
                                    }]) : new S.Table("substitutionTable", [{
                                        name: "substFormat",
                                        type: "USHORT",
                                        value: 2
                                    }, {
                                        name: "coverage",
                                        type: "TABLE",
                                        value: new S.Coverage(e.coverage)
                                    }].concat(S.ushortList("substitute", e.substitute)))
                                }, Tt[3] = function(e) {
                                    return P.assert(1 === e.substFormat, "Lookup type 3 substFormat must be 1."), new S.Table("substitutionTable", [{
                                        name: "substFormat",
                                        type: "USHORT",
                                        value: 1
                                    }, {
                                        name: "coverage",
                                        type: "TABLE",
                                        value: new S.Coverage(e.coverage)
                                    }].concat(S.tableList("altSet", e.alternateSets, function(e) {
                                        return new S.Table("alternateSetTable", S.ushortList("alternate", e))
                                    })))
                                }, Tt[4] = function(e) {
                                    return P.assert(1 === e.substFormat, "Lookup type 4 substFormat must be 1."), new S.Table("substitutionTable", [{
                                        name: "substFormat",
                                        type: "USHORT",
                                        value: 1
                                    }, {
                                        name: "coverage",
                                        type: "TABLE",
                                        value: new S.Coverage(e.coverage)
                                    }].concat(S.tableList("ligSet", e.ligatureSets, function(e) {
                                        return new S.Table("ligatureSetTable", S.tableList("ligature", e, function(e) {
                                            return new S.Table("ligatureTable", [{
                                                name: "ligGlyph",
                                                type: "USHORT",
                                                value: e.ligGlyph
                                            }].concat(S.ushortList("component", e.components, e.components.length + 1)))
                                        }))
                                    })))
                                };
                                var Et = function(e, t) {
                                        return t = (e = new c(e, t = t || 0)).parseVersion(1), P.argument(1 === t || 1.1 === t, "Unsupported GSUB table version."), 1 === t ? {
                                            version: t,
                                            scripts: e.parseScriptList(),
                                            features: e.parseFeatureList(),
                                            lookups: e.parseLookupList(o)
                                        } : {
                                            version: t,
                                            scripts: e.parseScriptList(),
                                            features: e.parseFeatureList(),
                                            lookups: e.parseLookupList(o),
                                            variations: e.parseFeatureVariationsList()
                                        }
                                    },
                                    kt = function(e) {
                                        return new S.Table("GSUB", [{
                                            name: "version",
                                            type: "ULONG",
                                            value: 65536
                                        }, {
                                            name: "scripts",
                                            type: "TABLE",
                                            value: new S.ScriptList(e.scripts)
                                        }, {
                                            name: "features",
                                            type: "TABLE",
                                            value: new S.FeatureList(e.features)
                                        }, {
                                            name: "lookups",
                                            type: "TABLE",
                                            value: new S.LookupList(e.lookups, Tt)
                                        }])
                                    },
                                    Mt = function(e, t) {
                                        for (var r = new I.Parser(e, t), o = r.parseULong(), n = (P.argument(1 === o, "Unsupported META table version."), r.parseULong(), r.parseULong(), r.parseULong()), s = {}, i = 0; i < n; i++) {
                                            var a = r.parseTag(),
                                                l = r.parseULong(),
                                                c = r.parseULong(),
                                                l = m.UTF8(e, t + l, c);
                                            s[a] = l
                                        }
                                        return s
                                    },
                                    Ot = function(e) {
                                        var t, r = Object.keys(e).length,
                                            o = "",
                                            n = 16 + 12 * r,
                                            s = new S.Table("meta", [{
                                                name: "version",
                                                type: "ULONG",
                                                value: 1
                                            }, {
                                                name: "flags",
                                                type: "ULONG",
                                                value: 0
                                            }, {
                                                name: "offset",
                                                type: "ULONG",
                                                value: n
                                            }, {
                                                name: "numTags",
                                                type: "ULONG",
                                                value: r
                                            }]);
                                        for (t in e) {
                                            var i = o.length;
                                            o += e[t], s.fields.push({
                                                name: "tag " + t,
                                                type: "TAG",
                                                value: t
                                            }), s.fields.push({
                                                name: "offset " + t,
                                                type: "ULONG",
                                                value: n + i
                                            }), s.fields.push({
                                                name: "length " + t,
                                                type: "ULONG",
                                                value: e[t].length
                                            })
                                        }
                                        return s.fields.push({
                                            name: "stringPool",
                                            type: "CHARARRAY",
                                            value: o
                                        }), s
                                    };

                                function Ct(e) {
                                    return Math.log(e) / Math.log(2) | 0
                                }

                                function At(e) {
                                    for (; e.length % 4 != 0;) e.push(0);
                                    for (var t = 0, r = 0; r < e.length; r += 4) t += (e[r] << 24) + (e[r + 1] << 16) + (e[r + 2] << 8) + e[r + 3];
                                    return t % Math.pow(2, 32)
                                }

                                function Lt(e, t, r, o) {
                                    return new S.Record("Table Record", [{
                                        name: "tag",
                                        type: "TAG",
                                        value: void 0 !== e ? e : ""
                                    }, {
                                        name: "checkSum",
                                        type: "ULONG",
                                        value: void 0 !== t ? t : 0
                                    }, {
                                        name: "offset",
                                        type: "ULONG",
                                        value: void 0 !== r ? r : 0
                                    }, {
                                        name: "length",
                                        type: "ULONG",
                                        value: void 0 !== o ? o : 0
                                    }])
                                }

                                function Pt(e) {
                                    for (var t = new S.Table("sfnt", [{
                                            name: "version",
                                            type: "TAG",
                                            value: "OTTO"
                                        }, {
                                            name: "numTables",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "searchRange",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "entrySelector",
                                            type: "USHORT",
                                            value: 0
                                        }, {
                                            name: "rangeShift",
                                            type: "USHORT",
                                            value: 0
                                        }]), r = (t.tables = e, t.numTables = e.length, Math.pow(2, Ct(t.numTables))), o = (t.searchRange = 16 * r, t.entrySelector = Ct(r), t.rangeShift = 16 * t.numTables - t.searchRange, []), n = [], s = t.sizeOf() + Lt().sizeOf() * t.numTables; s % 4 != 0;) s += 1, n.push({
                                        name: "padding",
                                        type: "BYTE",
                                        value: 0
                                    });
                                    for (var i = 0; i < e.length; i += 1) {
                                        var a = e[i],
                                            l = (P.argument(4 === a.tableName.length, "Table name" + a.tableName + " is invalid."), a.sizeOf()),
                                            c = Lt(a.tableName, At(a.encode()), s, l);
                                        for (o.push({
                                                name: c.tag + " Table Record",
                                                type: "RECORD",
                                                value: c
                                            }), n.push({
                                                name: a.tableName + " table",
                                                type: "RECORD",
                                                value: a
                                            }), s += l, P.argument(!isNaN(s), "Something went wrong calculating the offset."); s % 4 != 0;) s += 1, n.push({
                                            name: "padding",
                                            type: "BYTE",
                                            value: 0
                                        })
                                    }
                                    return o.sort(function(e, t) {
                                        return e.value.tag > t.value.tag ? 1 : -1
                                    }), t.fields = t.fields.concat(o), t.fields = t.fields.concat(n), t
                                }

                                function It(e, t, r) {
                                    for (var o = 0; o < t.length; o += 1) {
                                        var n = e.charToGlyphIndex(t[o]);
                                        if (0 < n) return e.glyphs.get(n).getMetrics()
                                    }
                                    return r
                                }
                                var Rt = function(e) {
                                    for (var t, r = [], o = [], n = [], s = [], i = [], a = [], l = [], c = 0, u = 0, d = 0, h = 0, f = 0, p = 0; p < e.glyphs.length; p += 1) {
                                        var m = e.glyphs.get(p),
                                            y = 0 | m.unicode;
                                        if (isNaN(m.advanceWidth)) throw new Error("Glyph " + m.name + " (" + p + "): advanceWidth is not a number.");
                                        if ((y < t || void 0 === t) && 0 < y && (t = y), c < y && (c = y), (y = wt(y)) < 32) u |= 1 << y;
                                        else if (y < 64) d |= 1 << y - 32;
                                        else if (y < 96) h |= 1 << y - 64;
                                        else {
                                            if (!(y < 123)) throw new Error("Unicode ranges bits > 123 are reserved for internal usage");
                                            f |= 1 << y - 96
                                        }
                                        ".notdef" !== m.name && (y = m.getMetrics(), r.push(y.xMin), o.push(y.yMin), n.push(y.xMax), s.push(y.yMax), a.push(y.leftSideBearing), l.push(y.rightSideBearing), i.push(m.advanceWidth))
                                    }
                                    var g, v = {
                                            xMin: Math.min.apply(null, r),
                                            yMin: Math.min.apply(null, o),
                                            xMax: Math.max.apply(null, n),
                                            yMax: Math.max.apply(null, s),
                                            advanceWidthMax: Math.max.apply(null, i),
                                            advanceWidthAvg: (e => {
                                                for (var t = 0, r = 0; r < e.length; r += 1) t += e[r];
                                                return t / e.length
                                            })(i),
                                            minLeftSideBearing: Math.min.apply(null, a),
                                            maxLeftSideBearing: Math.max.apply(null, a),
                                            minRightSideBearing: Math.min.apply(null, l)
                                        },
                                        b = (v.ascender = e.ascender, v.descender = e.descender, Qe({
                                            flags: 3,
                                            unitsPerEm: e.unitsPerEm,
                                            xMin: v.xMin,
                                            yMin: v.yMin,
                                            xMax: v.xMax,
                                            yMax: v.yMax,
                                            lowestRecPPEM: 3,
                                            createdTimestamp: e.createdTimestamp
                                        })),
                                        _ = $e({
                                            ascender: v.ascender,
                                            descender: v.descender,
                                            advanceWidthMax: v.advanceWidthMax,
                                            minLeftSideBearing: v.minLeftSideBearing,
                                            minRightSideBearing: v.minRightSideBearing,
                                            xMaxExtent: v.maxLeftSideBearing + (v.xMax - v.xMin),
                                            numberOfHMetrics: e.glyphs.length
                                        }),
                                        x = st(e.glyphs.length),
                                        w = xt({
                                            xAvgCharWidth: Math.round(v.advanceWidthAvg),
                                            usWeightClass: e.tables.os2.usWeightClass,
                                            usWidthClass: e.tables.os2.usWidthClass,
                                            usFirstCharIndex: t,
                                            usLastCharIndex: c,
                                            ulUnicodeRange1: u,
                                            ulUnicodeRange2: d,
                                            ulUnicodeRange3: h,
                                            ulUnicodeRange4: f,
                                            fsSelection: e.tables.os2.fsSelection,
                                            sTypoAscender: v.ascender,
                                            sTypoDescender: v.descender,
                                            sTypoLineGap: 0,
                                            usWinAscent: v.yMax,
                                            usWinDescent: Math.abs(v.yMin),
                                            ulCodePageRange1: 1,
                                            sxHeight: It(e, "xyvw", {
                                                yMax: Math.round(v.ascender / 2)
                                            }).yMax,
                                            sCapHeight: It(e, "HIKLEFJMNTZBDPRAGOQSUVWXY", v).yMax,
                                            usDefaultChar: e.hasChar(" ") ? 32 : 0,
                                            usBreakChar: e.hasChar(" ") ? 32 : 0
                                        }),
                                        j = tt(e.glyphs),
                                        S = Se(e.glyphs),
                                        T = (A = e.getEnglishName("fontFamily")) + " " + (L = e.getEnglishName("fontSubfamily")),
                                        E = (E = e.getEnglishName("postScriptName")) || A.replace(/\s/g, "") + "-" + L,
                                        k = {};
                                    for (g in e.names) k[g] = e.names[g];
                                    k.uniqueID || (k.uniqueID = {
                                        en: e.getEnglishName("manufacturer") + ":" + T
                                    }), k.postScriptName || (k.postScriptName = {
                                        en: E
                                    }), k.preferredFamily || (k.preferredFamily = e.names.fontFamily), k.preferredSubfamily || (k.preferredSubfamily = e.names.fontSubfamily);
                                    var M = vt(k, O = []),
                                        O = 0 < O.length ? rt(O) : void 0,
                                        C = St(),
                                        T = Ze(e.glyphs, {
                                            version: e.getEnglishName("version"),
                                            fullName: T,
                                            familyName: A,
                                            weightName: L,
                                            postScriptName: E,
                                            unitsPerEm: e.unitsPerEm,
                                            fontBBox: [0, v.yMin, v.ascender, v.advanceWidthMax]
                                        }),
                                        A = e.metas && 0 < Object.keys(e.metas).length ? Ot(e.metas) : void 0,
                                        L = [b, _, x, w, M, S, C, T, j];
                                    O && L.push(O), e.tables.gsub && L.push(kt(e.tables.gsub)), A && L.push(A);
                                    for (var D = At((E = Pt(L)).encode()), P = E.fields, I = !1, R = 0; R < P.length; R += 1)
                                        if ("head table" === P[R].name) {
                                            P[R].value.checkSumAdjustment = 2981146554 - D, I = !0;
                                            break
                                        } if (I) return E;
                                    throw new Error("Could not find head table with checkSum to adjust.")
                                };

                                function Dt(e, t) {
                                    for (var r = 0, o = e.length - 1; r <= o;) {
                                        var n = r + o >>> 1,
                                            s = e[n].tag;
                                        if (s === t) return n;
                                        s < t ? r = 1 + n : o = n - 1
                                    }
                                    return -r - 1
                                }

                                function Ft(e, t) {
                                    for (var r = 0, o = e.length - 1; r <= o;) {
                                        var n = r + o >>> 1,
                                            s = e[n];
                                        if (s === t) return n;
                                        s < t ? r = 1 + n : o = n - 1
                                    }
                                    return -r - 1
                                }

                                function Nt(e, t) {
                                    for (var r = 0, o = e.length - 1; r <= o;) {
                                        var n, s = r + o >>> 1,
                                            i = (n = e[s]).start;
                                        if (i === t) return n;
                                        i < t ? r = 1 + s : o = s - 1
                                    }
                                    if (0 < r) return t > (n = e[r - 1]).end ? 0 : n
                                }

                                function Ut(e, t) {
                                    this.font = e, this.tableName = t
                                }

                                function Bt(e) {
                                    Ut.call(this, e, "gpos")
                                }

                                function i(e) {
                                    Ut.call(this, e, "gsub")
                                }

                                function Gt(e, t, r) {
                                    for (var o = e.subtables, n = 0; n < o.length; n++) {
                                        var s = o[n];
                                        if (s.substFormat === t) return s
                                    }
                                    if (r) return o.push(r), r
                                }

                                function Vt(e) {
                                    for (var t = new ArrayBuffer(e.length), r = new Uint8Array(t), o = 0; o < e.length; ++o) r[o] = e[o];
                                    return t
                                }

                                function x(e, t) {
                                    if (!e) throw t
                                }

                                function zt(e, t, r, o, n) {
                                    var s = 0 < (t & o) ? (s = e.parseByte(), r + (0 == (t & n) ? -s : s)) : 0 < (t & n) ? r : r + e.parseShort();
                                    return s
                                }

                                function Ht(e, t, r) {
                                    var o, n = new I.Parser(t, r);
                                    if (e.numberOfContours = n.parseShort(), e._xMin = n.parseShort(), e._yMin = n.parseShort(), e._xMax = n.parseShort(), e._yMax = n.parseShort(), 0 < e.numberOfContours) {
                                        for (var s = e.endPointIndices = [], i = 0; i < e.numberOfContours; i += 1) s.push(n.parseUShort());
                                        e.instructionLength = n.parseUShort(), e.instructions = [];
                                        for (var a = 0; a < e.instructionLength; a += 1) e.instructions.push(n.parseByte());
                                        for (var l = s[s.length - 1] + 1, c = [], u = 0; u < l; u += 1)
                                            if (o = n.parseByte(), c.push(o), 0 < (8 & o))
                                                for (var d = n.parseByte(), h = 0; h < d; h += 1) c.push(o), u += 1;
                                        if (P.argument(c.length === l, "Bad flags."), 0 < s.length) {
                                            var f, p = [];
                                            if (0 < l) {
                                                for (var m = 0; m < l; m += 1) o = c[m], (f = {}).onCurve = !!(1 & o), f.lastPointOfContour = 0 <= s.indexOf(m), p.push(f);
                                                for (var y = 0, g = 0; g < l; g += 1) o = c[g], (f = p[g]).x = zt(n, o, y, 2, 16), y = f.x;
                                                for (var v = 0, b = 0; b < l; b += 1) o = c[b], (f = p[b]).y = zt(n, o, v, 4, 32), v = f.y
                                            }
                                            e.points = p
                                        } else e.points = []
                                    } else if (0 === e.numberOfContours) e.points = [];
                                    else {
                                        e.isComposite = !0, e.points = [], e.components = [];
                                        for (var _ = !0; _;) {
                                            var c = n.parseUShort(),
                                                x = {
                                                    glyphIndex: n.parseUShort(),
                                                    xScale: 1,
                                                    scale01: 0,
                                                    scale10: 0,
                                                    yScale: 1,
                                                    dx: 0,
                                                    dy: 0
                                                };
                                            0 < (1 & c) ? 0 < (2 & c) ? (x.dx = n.parseShort(), x.dy = n.parseShort()) : x.matchedPoints = [n.parseUShort(), n.parseUShort()] : 0 < (2 & c) ? (x.dx = n.parseChar(), x.dy = n.parseChar()) : x.matchedPoints = [n.parseByte(), n.parseByte()], 0 < (8 & c) ? x.xScale = x.yScale = n.parseF2Dot14() : 0 < (64 & c) ? (x.xScale = n.parseF2Dot14(), x.yScale = n.parseF2Dot14()) : 0 < (128 & c) && (x.xScale = n.parseF2Dot14(), x.scale01 = n.parseF2Dot14(), x.scale10 = n.parseF2Dot14(), x.yScale = n.parseF2Dot14()), e.components.push(x), _ = !!(32 & c)
                                        }
                                        if (256 & c) {
                                            e.instructionLength = n.parseUShort(), e.instructions = [];
                                            for (var w = 0; w < e.instructionLength; w += 1) e.instructions.push(n.parseByte())
                                        }
                                    }
                                }

                                function Wt(e, t) {
                                    for (var r = [], o = 0; o < e.length; o += 1) {
                                        var n = {
                                            x: t.xScale * (n = e[o]).x + t.scale01 * n.y + t.dx,
                                            y: t.scale10 * n.x + t.yScale * n.y + t.dy,
                                            onCurve: n.onCurve,
                                            lastPointOfContour: n.lastPointOfContour
                                        };
                                        r.push(n)
                                    }
                                    return r
                                }

                                function qt(e) {
                                    var t = new h;
                                    if (e)
                                        for (var r = (e => {
                                                for (var t = [], r = [], o = 0; o < e.length; o += 1) {
                                                    var n = e[o];
                                                    r.push(n), n.lastPointOfContour && (t.push(r), r = [])
                                                }
                                                return P.argument(0 === r.length, "There are still points left in the current contour."), t
                                            })(e), o = 0; o < r.length; ++o) {
                                            var n, s = r[o],
                                                i = s[s.length - 1],
                                                a = s[0];
                                            i.onCurve ? t.moveTo(i.x, i.y) : a.onCurve ? t.moveTo(a.x, a.y) : (n = {
                                                x: .5 * (i.x + a.x),
                                                y: .5 * (i.y + a.y)
                                            }, t.moveTo(n.x, n.y));
                                            for (var l = 0; l < s.length; ++l) {
                                                var c = i,
                                                    i = a,
                                                    a = s[(l + 1) % s.length];
                                                i.onCurve ? t.lineTo(i.x, i.y) : (c.onCurve || (i.x, c.x, i.y, c.y), (c = a).onCurve || (c = {
                                                    x: .5 * (i.x + a.x),
                                                    y: .5 * (i.y + a.y)
                                                }), t.quadraticCurveTo(i.x, i.y, c.x, c.y))
                                            }
                                            t.closePath()
                                        }
                                    return t
                                }

                                function Xt(e, t) {
                                    if (t.isComposite)
                                        for (var r = 0; r < t.components.length; r += 1) {
                                            var o = t.components[r],
                                                n = e.get(o.glyphIndex);
                                            if (n.getPath(), n.points) {
                                                var s = void 0;
                                                if (void 0 !== o.matchedPoints) {
                                                    if (o.matchedPoints[0] > t.points.length - 1 || o.matchedPoints[1] > n.points.length - 1) throw Error("Matched points out of range in " + t.name);
                                                    var i = t.points[o.matchedPoints[0]],
                                                        a = Wt([n.points[o.matchedPoints[1]]], o = {
                                                            xScale: o.xScale,
                                                            scale01: o.scale01,
                                                            scale10: o.scale10,
                                                            yScale: o.yScale,
                                                            dx: 0,
                                                            dy: 0
                                                        })[0];
                                                    o.dx = i.x - a.x, o.dy = i.y - a.y
                                                }
                                                s = Wt(n.points, o), t.points = t.points.concat(s)
                                            }
                                        }
                                    return qt(t.points)
                                }(Bt.prototype = Ut.prototype = {
                                    searchTag: Dt,
                                    binSearch: Ft,
                                    getTable: function(e) {
                                        var t = this.font.tables[this.tableName];
                                        return !t && e ? this.font.tables[this.tableName] = this.createDefaultTable() : t
                                    },
                                    getScriptNames: function() {
                                        var e = this.getTable();
                                        return e ? e.scripts.map(function(e) {
                                            return e.tag
                                        }) : []
                                    },
                                    getDefaultScriptName: function() {
                                        var e = this.getTable();
                                        if (e) {
                                            for (var t = !1, r = 0; r < e.scripts.length; r++) {
                                                var o = e.scripts[r].tag;
                                                if ("DFLT" === o) return o;
                                                "latn" === o && (t = !0)
                                            }
                                            return t ? "latn" : void 0
                                        }
                                    },
                                    getScriptTable: function(e, t) {
                                        var r, o = this.getTable(t);
                                        if (o) return r = o.scripts, 0 <= (o = Dt(o.scripts, e = e || "DFLT")) ? r[o].script : t ? (r.splice(-1 - o, 0, t = {
                                            tag: e,
                                            script: {
                                                defaultLangSys: {
                                                    reserved: 0,
                                                    reqFeatureIndex: 65535,
                                                    featureIndexes: []
                                                },
                                                langSysRecords: []
                                            }
                                        }), t.script) : void 0
                                    },
                                    getLangSysTable: function(e, t, r) {
                                        var o;
                                        if (e = this.getScriptTable(e, r)) return t && "dflt" !== t && "DFLT" !== t ? 0 <= (o = Dt(e.langSysRecords, t)) ? e.langSysRecords[o].langSys : r ? (e.langSysRecords.splice(-1 - o, 0, r = {
                                            tag: t,
                                            langSys: {
                                                reserved: 0,
                                                reqFeatureIndex: 65535,
                                                featureIndexes: []
                                            }
                                        }), r.langSys) : void 0 : e.defaultLangSys
                                    },
                                    getFeatureTable: function(e, t, r, o) {
                                        if (e = this.getLangSysTable(e, t, o)) {
                                            for (var n, s = e.featureIndexes, i = this.font.tables[this.tableName].features, a = 0; a < s.length; a++)
                                                if ((n = i[s[a]]).tag === r) return n.feature;
                                            if (o) return t = i.length, P.assert(0 === t || r >= i[t - 1].tag, "Features must be added in alphabetical order."), i.push(n = {
                                                tag: r,
                                                feature: {
                                                    params: 0,
                                                    lookupListIndexes: []
                                                }
                                            }), s.push(t), n.feature
                                        }
                                    },
                                    getLookupTables: function(e, t, r, o, n) {
                                        var s = [];
                                        if (e = this.getFeatureTable(e, t, r, n)) {
                                            for (var i, a = e.lookupListIndexes, l = this.font.tables[this.tableName].lookups, c = 0; c < a.length; c++)(i = l[a[c]]).lookupType === o && s.push(i);
                                            if (0 === s.length && n) return t = l.length, l.push(i = {
                                                lookupType: o,
                                                lookupFlag: 0,
                                                subtables: [],
                                                markFilteringSet: void 0
                                            }), a.push(t), [i]
                                        }
                                        return s
                                    },
                                    getGlyphClass: function(e, t) {
                                        switch (e.format) {
                                            case 1:
                                                return e.startGlyph <= t && t < e.startGlyph + e.classes.length ? e.classes[t - e.startGlyph] : 0;
                                            case 2:
                                                var r = Nt(e.ranges, t);
                                                return r ? r.classId : 0
                                        }
                                    },
                                    getCoverageIndex: function(e, t) {
                                        switch (e.format) {
                                            case 1:
                                                var r = Ft(e.glyphs, t);
                                                return 0 <= r ? r : -1;
                                            case 2:
                                                return (r = Nt(e.ranges, t)) ? r.index + t - r.start : -1
                                        }
                                    },
                                    expandCoverage: function(e) {
                                        if (1 === e.format) return e.glyphs;
                                        for (var t = [], r = e.ranges, o = 0; o < r.length; o++)
                                            for (var n = r[o], s = n.start, i = n.end, a = s; a <= i; a++) t.push(a);
                                        return t
                                    }
                                }).init = function() {
                                    var e = this.getDefaultScriptName();
                                    this.defaultKerningTables = this.getKerningTables(e)
                                }, Bt.prototype.getKerningValue = function(e, t, r) {
                                    for (var o = 0; o < e.length; o++)
                                        for (var n = e[o].subtables, s = 0; s < n.length; s++) {
                                            var i = n[s],
                                                a = this.getCoverageIndex(i.coverage, t);
                                            if (!(a < 0)) switch (i.posFormat) {
                                                case 1:
                                                    for (var l = i.pairSets[a], c = 0; c < l.length; c++) {
                                                        var u = l[c];
                                                        if (u.secondGlyph === r) return u.value1 && u.value1.xAdvance || 0
                                                    }
                                                    break;
                                                case 2:
                                                    var d = this.getGlyphClass(i.classDef1, t),
                                                        h = this.getGlyphClass(i.classDef2, r);
                                                    return (d = i.classRecords[d][h]).value1 && d.value1.xAdvance || 0
                                            }
                                        }
                                    return 0
                                }, Bt.prototype.getKerningTables = function(e, t) {
                                    if (this.font.tables.gpos) return this.getLookupTables(e, t, "kern", 2)
                                }, (i.prototype = Ut.prototype).createDefaultTable = function() {
                                    return {
                                        version: 1,
                                        scripts: [{
                                            tag: "DFLT",
                                            script: {
                                                defaultLangSys: {
                                                    reserved: 0,
                                                    reqFeatureIndex: 65535,
                                                    featureIndexes: []
                                                },
                                                langSysRecords: []
                                            }
                                        }],
                                        features: [],
                                        lookups: []
                                    }
                                }, i.prototype.getSingle = function(e, t, r) {
                                    for (var o = [], n = this.getLookupTables(t, r, e, 1), s = 0; s < n.length; s++)
                                        for (var i = n[s].subtables, a = 0; a < i.length; a++) {
                                            var l = i[a],
                                                c = this.expandCoverage(l.coverage),
                                                u = void 0;
                                            if (1 === l.substFormat)
                                                for (var d = l.deltaGlyphId, u = 0; u < c.length; u++) {
                                                    var h = c[u];
                                                    o.push({
                                                        sub: h,
                                                        by: h + d
                                                    })
                                                } else {
                                                    var f = l.substitute;
                                                    for (u = 0; u < c.length; u++) o.push({
                                                        sub: c[u],
                                                        by: f[u]
                                                    })
                                                }
                                        }
                                    return o
                                }, i.prototype.getAlternates = function(e, t, r) {
                                    for (var o = [], n = this.getLookupTables(t, r, e, 3), s = 0; s < n.length; s++)
                                        for (var i = n[s].subtables, a = 0; a < i.length; a++)
                                            for (var l = i[a], c = this.expandCoverage(l.coverage), u = l.alternateSets, d = 0; d < c.length; d++) o.push({
                                                sub: c[d],
                                                by: u[d]
                                            });
                                    return o
                                }, i.prototype.getLigatures = function(e, t, r) {
                                    for (var o = [], n = this.getLookupTables(t, r, e, 4), s = 0; s < n.length; s++)
                                        for (var i = n[s].subtables, a = 0; a < i.length; a++)
                                            for (var l = i[a], c = this.expandCoverage(l.coverage), u = l.ligatureSets, d = 0; d < c.length; d++)
                                                for (var h = c[d], f = u[d], p = 0; p < f.length; p++) {
                                                    var m = f[p];
                                                    o.push({
                                                        sub: [h].concat(m.components),
                                                        by: m.ligGlyph
                                                    })
                                                }
                                    return o
                                }, i.prototype.addSingle = function(e, t, r, o) {
                                    r = Gt(this.getLookupTables(r, o, e, 1, !0)[0], 2, {
                                        substFormat: 2,
                                        coverage: {
                                            format: 1,
                                            glyphs: []
                                        },
                                        substitute: []
                                    }), P.assert(1 === r.coverage.format, "Ligature: unable to modify coverage table format " + r.coverage.format), o = t.sub, (e = this.binSearch(r.coverage.glyphs, o)) < 0 && (r.coverage.glyphs.splice(e = -1 - e, 0, o), r.substitute.splice(e, 0, 0)), r.substitute[e] = t.by
                                }, i.prototype.addAlternate = function(e, t, r, o) {
                                    r = Gt(this.getLookupTables(r, o, e, 3, !0)[0], 1, {
                                        substFormat: 1,
                                        coverage: {
                                            format: 1,
                                            glyphs: []
                                        },
                                        alternateSets: []
                                    }), P.assert(1 === r.coverage.format, "Ligature: unable to modify coverage table format " + r.coverage.format), o = t.sub, (e = this.binSearch(r.coverage.glyphs, o)) < 0 && (r.coverage.glyphs.splice(e = -1 - e, 0, o), r.alternateSets.splice(e, 0, 0)), r.alternateSets[e] = t.by
                                }, i.prototype.addLigature = function(e, t, r, o) {
                                    (o = (r = this.getLookupTables(r, o, e, 4, !0)[0]).subtables[0]) || (r.subtables[0] = o = {
                                        substFormat: 1,
                                        coverage: {
                                            format: 1,
                                            glyphs: []
                                        },
                                        ligatureSets: []
                                    }), P.assert(1 === o.coverage.format, "Ligature: unable to modify coverage table format " + o.coverage.format);
                                    var e = t.sub[0],
                                        n = t.sub.slice(1),
                                        r = {
                                            ligGlyph: t.by,
                                            components: n
                                        };
                                    if (0 <= (t = this.binSearch(o.coverage.glyphs, e))) {
                                        for (var s = o.ligatureSets[t], i = 0; i < s.length; i++)
                                            if (((e, t) => {
                                                    var r = e.length;
                                                    if (r === t.length) {
                                                        for (var o = 0; o < r; o++)
                                                            if (e[o] !== t[o]) return;
                                                        return 1
                                                    }
                                                })(s[i].components, n)) return;
                                        s.push(r)
                                    } else o.coverage.glyphs.splice(t = -1 - t, 0, e), o.ligatureSets.splice(t, 0, [r])
                                }, i.prototype.getFeature = function(e, t, r) {
                                    if (/ss\d\d/.test(e)) return this.getSingle(e, t, r);
                                    switch (e) {
                                        case "aalt":
                                        case "salt":
                                            return this.getSingle(e, t, r).concat(this.getAlternates(e, t, r));
                                        case "dlig":
                                        case "liga":
                                        case "rlig":
                                            return this.getLigatures(e, t, r)
                                    }
                                }, i.prototype.add = function(e, t, r, o) {
                                    if (/ss\d\d/.test(e)) return this.addSingle(e, t, r, o);
                                    switch (e) {
                                        case "aalt":
                                        case "salt":
                                            return "number" == typeof t.by ? this.addSingle(e, t, r, o) : this.addAlternate(e, t, r, o);
                                        case "dlig":
                                        case "liga":
                                        case "rlig":
                                            return this.addLigature(e, t, r, o)
                                    }
                                };
                                var Yt = {
                                    getPath: qt,
                                    parse: function(e, t, r, o) {
                                        for (var n = new p.GlyphSet(o), s = 0; s < r.length - 1; s += 1) {
                                            var i = r[s];
                                            i !== r[s + 1] ? n.push(s, p.ttfGlyphLoader(o, s, Ht, e, t + i, Xt)) : n.push(s, p.glyphLoader(o, s))
                                        }
                                        return n
                                    }
                                };

                                function Zt(e) {
                                    this.font = e, this.getCommands = function(e) {
                                        return Yt.getPath(e).commands
                                    }, this._fpgmState = this._prepState = void 0, this._errorState = 0
                                }

                                function Kt(e) {
                                    return e
                                }

                                function Qt(e) {
                                    return Math.sign(e) * Math.round(Math.abs(e))
                                }

                                function Jt(e) {
                                    return Math.sign(e) * Math.round(Math.abs(2 * e)) / 2
                                }

                                function $t(e) {
                                    return Math.sign(e) * (Math.round(Math.abs(e) + .5) - .5)
                                }

                                function er(e) {
                                    return Math.sign(e) * Math.ceil(Math.abs(e))
                                }

                                function tr(e) {
                                    return Math.sign(e) * Math.floor(Math.abs(e))
                                }

                                function rr(e) {
                                    var t = this.srPeriod,
                                        r = this.srPhase,
                                        o = 1;
                                    return e < 0 && (e = -e, o = -1), e += this.srThreshold - r, e = Math.trunc(e / t) * t, (e += r) < 0 ? r * o : e * o
                                }
                                var w = {
                                        x: 1,
                                        y: 0,
                                        axis: "x",
                                        distance: function(e, t, r, o) {
                                            return (r ? e.xo : e.x) - (o ? t.xo : t.x)
                                        },
                                        interpolate: function(e, t, r, o) {
                                            var n, s, i, a, l, c, u;
                                            if (!o || o === this) return n = e.xo - t.xo, s = e.xo - r.xo, l = t.x - t.xo, c = r.x - r.xo, 0 === (u = (i = Math.abs(n)) + (a = Math.abs(s))) ? void(e.x = e.xo + (l + c) / 2) : void(e.x = e.xo + (l * a + c * i) / u);
                                            n = o.distance(e, t, !0, !0), s = o.distance(e, r, !0, !0), l = o.distance(t, t, !1, !0), c = o.distance(r, r, !1, !0), 0 === (u = (i = Math.abs(n)) + (a = Math.abs(s))) ? w.setRelative(e, e, (l + c) / 2, o, !0) : w.setRelative(e, e, (l * a + c * i) / u, o, !0)
                                        },
                                        normalSlope: Number.NEGATIVE_INFINITY,
                                        setRelative: function(e, t, r, o, n) {
                                            var s, i;
                                            o && o !== this ? (s = n ? t.xo : t.x, i = n ? t.yo : t.y, s += r * o.x, e.x = s + (e.y - (i += r * o.y)) / o.normalSlope) : e.x = (n ? t.xo : t.x) + r
                                        },
                                        slope: 0,
                                        touch: function(e) {
                                            e.xTouched = !0
                                        },
                                        touched: function(e) {
                                            return e.xTouched
                                        },
                                        untouch: function(e) {
                                            e.xTouched = !1
                                        }
                                    },
                                    T = {
                                        x: 0,
                                        y: 1,
                                        axis: "y",
                                        distance: function(e, t, r, o) {
                                            return (r ? e.yo : e.y) - (o ? t.yo : t.y)
                                        },
                                        interpolate: function(e, t, r, o) {
                                            var n, s, i, a, l, c, u;
                                            if (!o || o === this) return n = e.yo - t.yo, s = e.yo - r.yo, l = t.y - t.yo, c = r.y - r.yo, 0 === (u = (i = Math.abs(n)) + (a = Math.abs(s))) ? void(e.y = e.yo + (l + c) / 2) : void(e.y = e.yo + (l * a + c * i) / u);
                                            n = o.distance(e, t, !0, !0), s = o.distance(e, r, !0, !0), l = o.distance(t, t, !1, !0), c = o.distance(r, r, !1, !0), 0 === (u = (i = Math.abs(n)) + (a = Math.abs(s))) ? T.setRelative(e, e, (l + c) / 2, o, !0) : T.setRelative(e, e, (l * a + c * i) / u, o, !0)
                                        },
                                        normalSlope: 0,
                                        setRelative: function(e, t, r, o, n) {
                                            var s, i;
                                            o && o !== this ? (s = n ? t.xo : t.x, i = n ? t.yo : t.y, s += r * o.x, e.y = (i += r * o.y) + o.normalSlope * (e.x - s)) : e.y = (n ? t.yo : t.y) + r
                                        },
                                        slope: Number.POSITIVE_INFINITY,
                                        touch: function(e) {
                                            e.yTouched = !0
                                        },
                                        touched: function(e) {
                                            return e.yTouched
                                        },
                                        untouch: function(e) {
                                            e.yTouched = !1
                                        }
                                    };

                                function or(e, t) {
                                    this.x = e, this.y = t, this.axis = void 0, this.slope = t / e, this.normalSlope = -e / t, Object.freeze(this)
                                }

                                function nr(e, t) {
                                    var r = Math.sqrt(e * e + t * t);
                                    return t /= r, 1 == (e /= r) && 0 === t ? w : 0 === e && 1 === t ? T : new or(e, t)
                                }

                                function E(e, t, r, o) {
                                    this.x = this.xo = Math.round(64 * e) / 64, this.y = this.yo = Math.round(64 * t) / 64, this.lastPointOfContour = r, this.onCurve = o, this.prevPointOnContour = void 0, this.nextPointOnContour = void 0, this.xTouched = !1, this.yTouched = !1, Object.preventExtensions(this)
                                }
                                Object.freeze(w), Object.freeze(T), or.prototype.distance = function(e, t, r, o) {
                                    return this.x * w.distance(e, t, r, o) + this.y * T.distance(e, t, r, o)
                                }, or.prototype.interpolate = function(e, t, r, o) {
                                    var n = o.distance(e, t, !0, !0),
                                        s = o.distance(e, r, !0, !0),
                                        t = o.distance(t, t, !1, !0),
                                        r = o.distance(r, r, !1, !0),
                                        i = (n = Math.abs(n)) + (s = Math.abs(s));
                                    0 === i ? this.setRelative(e, e, (t + r) / 2, o, !0) : this.setRelative(e, e, (t * s + r * n) / i, o, !0)
                                }, or.prototype.setRelative = function(e, t, r, o, n) {
                                    var s = n ? t.xo : t.x,
                                        n = n ? t.yo : t.y,
                                        t = s + r * (o = o || this).x,
                                        s = n + r * o.y,
                                        n = o.normalSlope,
                                        r = this.slope,
                                        o = e.x,
                                        i = e.y;
                                    e.x = (r * o - n * t + s - i) / (r - n), e.y = r * (e.x - o) + i
                                }, or.prototype.touch = function(e) {
                                    e.xTouched = !0, e.yTouched = !0
                                }, E.prototype.nextTouched = function(e) {
                                    for (var t = this.nextPointOnContour; !e.touched(t) && t !== this;) t = t.nextPointOnContour;
                                    return t
                                }, E.prototype.prevTouched = function(e) {
                                    for (var t = this.prevPointOnContour; !e.touched(t) && t !== this;) t = t.prevPointOnContour;
                                    return t
                                };
                                var sr = Object.freeze(new E(0, 0)),
                                    ir = {
                                        cvCutIn: 17 / 16,
                                        deltaBase: 9,
                                        deltaShift: .125,
                                        loop: 1,
                                        minDis: 1,
                                        autoFlip: !0
                                    };

                                function k(e, t) {
                                    switch (this.env = e, this.stack = [], this.prog = t, e) {
                                        case "glyf":
                                            this.zp0 = this.zp1 = this.zp2 = 1, this.rp0 = this.rp1 = this.rp2 = 0;
                                        case "prep":
                                            this.fv = this.pv = this.dpv = w, this.round = Qt
                                    }
                                }

                                function ar(e) {
                                    for (var t = e.tZone = new Array(e.gZone.length), r = 0; r < t.length; r++) t[r] = new E(0, 0)
                                }

                                function lr(e, t) {
                                    var r, o = e.prog,
                                        n = e.ip,
                                        s = 1;
                                    do {
                                        if (88 === (r = o[++n])) s++;
                                        else if (89 === r) s--;
                                        else if (64 === r) n += o[n + 1] + 1;
                                        else if (65 === r) n += 2 * o[n + 1] + 1;
                                        else if (176 <= r && r <= 183) n += r - 176 + 1;
                                        else if (184 <= r && r <= 191) n += 2 * (r - 184 + 1);
                                        else if (t && 1 === s && 27 === r) break
                                    } while (0 < s);
                                    e.ip = n
                                }

                                function cr(e, t) {
                                    _.DEBUG && console.log(t.step, "SVTCA[" + e.axis + "]"), t.fv = t.pv = t.dpv = e
                                }

                                function ur(e, t) {
                                    _.DEBUG && console.log(t.step, "SPVTCA[" + e.axis + "]"), t.pv = t.dpv = e
                                }

                                function dr(e, t) {
                                    _.DEBUG && console.log(t.step, "SFVTCA[" + e.axis + "]"), t.fv = e
                                }

                                function hr(e, t) {
                                    var r, o = (n = t.stack).pop(),
                                        n = n.pop(),
                                        s = t.z2[o],
                                        i = t.z1[n];
                                    _.DEBUG && console.log("SPVTL[" + e + "]", o, n), o = e ? (r = s.y - i.y, i.x - s.x) : (r = i.x - s.x, i.y - s.y), t.pv = t.dpv = nr(r, o)
                                }

                                function fr(e, t) {
                                    var r, o = (n = t.stack).pop(),
                                        n = n.pop(),
                                        s = t.z2[o],
                                        i = t.z1[n];
                                    _.DEBUG && console.log("SFVTL[" + e + "]", o, n), o = e ? (r = s.y - i.y, i.x - s.x) : (r = i.x - s.x, i.y - s.y), t.fv = nr(r, o)
                                }

                                function pr(e) {
                                    _.DEBUG && console.log(e.step, "POP[]"), e.stack.pop()
                                }

                                function mr(e, t) {
                                    var r = t.stack.pop(),
                                        o = t.z0[r],
                                        n = t.fv,
                                        s = t.pv,
                                        i = (_.DEBUG && console.log(t.step, "MDAP[" + e + "]", r), s.distance(o, sr));
                                    e && (i = t.round(i)), n.setRelative(o, sr, i, s), n.touch(o), t.rp0 = t.rp1 = r
                                }

                                function yr(e, t) {
                                    var r, o, n, s = t.z2,
                                        i = s.length - 2;
                                    _.DEBUG && console.log(t.step, "IUP[" + e.axis + "]");
                                    for (var a = 0; a < i; a++) r = s[a], e.touched(r) || (o = r.prevTouched(e)) !== r && (o === (n = r.nextTouched(e)) && e.setRelative(r, r, e.distance(o, o, !1, !0), e, !0), e.interpolate(r, o, n, e))
                                }

                                function gr(e, t) {
                                    for (var r = t.stack, o = e ? t.rp1 : t.rp2, n = (e ? t.z0 : t.z1)[o], s = t.fv, i = t.pv, a = t.loop, l = t.z2; a--;) {
                                        var c = r.pop(),
                                            u = l[c],
                                            d = i.distance(n, n, !1, !0);
                                        s.setRelative(u, u, d, i), s.touch(u), _.DEBUG && console.log(t.step, (1 < t.loop ? "loop " + (t.loop - a) + ": " : "") + "SHP[" + (e ? "rp1" : "rp2") + "]", c)
                                    }
                                    t.loop = 1
                                }

                                function vr(e, t) {
                                    for (var r = t.stack, o = e ? t.rp1 : t.rp2, n = (e ? t.z0 : t.z1)[o], s = t.fv, i = t.pv, o = r.pop(), a = t.z2[t.contours[o]], l = a, c = (_.DEBUG && console.log(t.step, "SHC[" + e + "]", o), i.distance(n, n, !1, !0)); l !== n && s.setRelative(l, l, c, i), (l = l.nextPointOnContour) !== a;);
                                }

                                function br(e, t) {
                                    var r, o, n = t.stack,
                                        s = e ? t.rp1 : t.rp2,
                                        s = (e ? t.z0 : t.z1)[s],
                                        i = t.fv,
                                        a = t.pv,
                                        n = n.pop();
                                    switch (_.DEBUG && console.log(t.step, "SHZ[" + e + "]", n), n) {
                                        case 0:
                                            r = t.tZone;
                                            break;
                                        case 1:
                                            r = t.gZone;
                                            break;
                                        default:
                                            throw new Error("Invalid zone")
                                    }
                                    for (var l = a.distance(s, s, !1, !0), c = r.length - 2, u = 0; u < c; u++) o = r[u], i.setRelative(o, o, l, a)
                                }

                                function _r(e, t) {
                                    var r = (o = t.stack).pop() / 64,
                                        o = o.pop(),
                                        n = t.z1[o],
                                        s = t.z0[t.rp0],
                                        i = t.fv;
                                    i.setRelative(n, s, r, t.pv), i.touch(n), _.DEBUG && console.log(t.step, "MSIRP[" + e + "]", r, o), t.rp1 = t.rp0, t.rp2 = o, e && (t.rp0 = o)
                                }

                                function xr(e, t) {
                                    var r = (o = t.stack).pop(),
                                        o = o.pop(),
                                        n = t.z0[o],
                                        s = t.fv,
                                        i = t.pv,
                                        a = t.cvt[r],
                                        r = (_.DEBUG && console.log(t.step, "MIAP[" + e + "]", r, "(", a, ")", o), i.distance(n, sr));
                                    e && (Math.abs(r - a) < t.cvCutIn && (r = a), r = t.round(r)), s.setRelative(n, sr, r, i), 0 === t.zp0 && (n.xo = n.x, n.yo = n.y), s.touch(n), t.rp0 = t.rp1 = o
                                }

                                function wr(e, t) {
                                    var r = t.stack,
                                        o = r.pop(),
                                        n = t.z2[o];
                                    _.DEBUG && console.log(t.step, "GC[" + e + "]", o), r.push(64 * t.dpv.distance(n, sr, e, !1))
                                }

                                function jr(e, t) {
                                    var r = (o = t.stack).pop(),
                                        o = o.pop(),
                                        n = t.z1[r],
                                        s = t.z0[o],
                                        s = t.dpv.distance(s, n, e, e);
                                    _.DEBUG && console.log(t.step, "MD[" + e + "]", r, o, "->", s), t.stack.push(Math.round(64 * s))
                                }

                                function Sr(e, t) {
                                    var r = t.stack,
                                        o = r.pop(),
                                        n = t.fv,
                                        s = t.pv,
                                        i = t.ppem,
                                        a = t.deltaBase + 16 * (e - 1),
                                        l = t.deltaShift,
                                        c = t.z0;
                                    _.DEBUG && console.log(t.step, "DELTAP[" + e + "]", o, r);
                                    for (var u = 0; u < o; u++) {
                                        var d = r.pop(),
                                            h = r.pop();
                                        a + ((240 & h) >> 4) === i && (0 <= (h = (15 & h) - 8) && h++, _.DEBUG && console.log(t.step, "DELTAPFIX", d, "by", h * l), d = c[d], n.setRelative(d, d, h * l, s))
                                    }
                                }

                                function Tr(e, t) {
                                    var r = t.stack,
                                        o = r.pop();
                                    _.DEBUG && console.log(t.step, "ROUND[]"), r.push(64 * t.round(o / 64))
                                }

                                function Er(e, t) {
                                    var r = t.stack,
                                        o = r.pop(),
                                        n = t.ppem,
                                        s = t.deltaBase + 16 * (e - 1),
                                        i = t.deltaShift;
                                    _.DEBUG && console.log(t.step, "DELTAC[" + e + "]", o, r);
                                    for (var a = 0; a < o; a++) {
                                        var l = r.pop(),
                                            c = r.pop();
                                        s + ((240 & c) >> 4) === n && (0 <= (c = (15 & c) - 8) && c++, c *= i, _.DEBUG && console.log(t.step, "DELTACFIX", l, "by", c), t.cvt[l] += c)
                                    }
                                }

                                function kr(e, t) {
                                    var r, o = (n = t.stack).pop(),
                                        n = n.pop(),
                                        s = t.z2[o],
                                        i = t.z1[n];
                                    _.DEBUG && console.log(t.step, "SDPVTL[" + e + "]", o, n), o = e ? (r = s.y - i.y, i.x - s.x) : (r = i.x - s.x, i.y - s.y), t.dpv = nr(r, o)
                                }

                                function M(e, t) {
                                    var r = t.stack,
                                        o = t.prog,
                                        n = t.ip;
                                    _.DEBUG && console.log(t.step, "PUSHB[" + e + "]");
                                    for (var s = 0; s < e; s++) r.push(o[++n]);
                                    t.ip = n
                                }

                                function O(e, t) {
                                    var r = t.ip,
                                        o = t.prog,
                                        n = t.stack;
                                    _.DEBUG && console.log(t.ip, "PUSHW[" + e + "]");
                                    for (var s = 0; s < e; s++) {
                                        var i = o[++r] << 8 | o[++r];
                                        32768 & i && (i = -(1 + (65535 ^ i))), n.push(i)
                                    }
                                    t.ip = r
                                }

                                function C(e, t, r, o, n, s) {
                                    var i, a, l = s.stack,
                                        c = e && l.pop(),
                                        l = l.pop(),
                                        u = s.rp0,
                                        u = s.z0[u],
                                        d = s.z1[l],
                                        h = s.minDis,
                                        f = s.fv,
                                        p = s.dpv,
                                        m = 0 <= (y = i = p.distance(d, u, !0, !0)) ? 1 : -1,
                                        y = Math.abs(y);
                                    e && (a = s.cvt[c], o) && Math.abs(y - a) < s.cvCutIn && (y = a), r && y < h && (y = h), o && (y = s.round(y)), f.setRelative(d, u, m * y, p), f.touch(d), _.DEBUG && console.log(s.step, (e ? "MIRP[" : "MDRP[") + (t ? "M" : "m") + (r ? ">" : "_") + (o ? "R" : "_") + (0 === n ? "Gr" : 1 === n ? "Bl" : 2 === n ? "Wh" : "") + "]", e ? c + "(" + s.cvt[c] + "," + a + ")" : "", l, "(d =", i, "->", m * y, ")"), s.rp1 = s.rp0, s.rp2 = l, t && (s.rp0 = l)
                                }
                                Zt.prototype.exec = function(e, t) {
                                    if ("number" != typeof t) throw new Error("Point size is not a number!");
                                    if (!(2 < this._errorState)) {
                                        var r = this.font,
                                            o = this._prepState;
                                        if (!o || o.ppem !== t) {
                                            var n = this._fpgmState;
                                            if (!n) {
                                                k.prototype = ir, (n = this._fpgmState = new k("fpgm", r.tables.fpgm)).funcs = [], n.font = r, _.DEBUG && (console.log("---EXEC FPGM---"), n.step = -1);
                                                try {
                                                    Cr(n)
                                                } catch (e) {
                                                    return console.log("Hinting error in FPGM:" + e), void(this._errorState = 3)
                                                }
                                            }
                                            k.prototype = n, (o = this._prepState = new k("prep", r.tables.prep)).ppem = t;
                                            var s = r.tables.cvt;
                                            if (s)
                                                for (var i = o.cvt = new Array(s.length), a = t / r.unitsPerEm, l = 0; l < s.length; l++) i[l] = s[l] * a;
                                            else o.cvt = [];
                                            _.DEBUG && (console.log("---EXEC PREP---"), o.step = -1);
                                            try {
                                                Cr(o)
                                            } catch (e) {
                                                this._errorState < 2 && console.log("Hinting error in PREP:" + e), this._errorState = 2
                                            }
                                        }
                                        if (!(1 < this._errorState)) try {
                                            return Mr(e, o)
                                        } catch (e) {
                                            this._errorState < 1 && (console.log("Hinting error:" + e), console.log("Note: further hinting errors are silenced")), this._errorState = 1
                                        }
                                    }
                                };
                                var Mr = function(e, t) {
                                        var r = t.ppem / t.font.unitsPerEm,
                                            o = r,
                                            n = e.components;
                                        if (k.prototype = t, n) {
                                            for (var s = t.font, i = [], a = [], l = 0; l < n.length; l++) {
                                                var c = n[l],
                                                    u = s.glyphs.get(c.glyphIndex),
                                                    d = new k("glyf", u.instructions);
                                                _.DEBUG && (console.log("---EXEC COMP " + l + "---"), d.step = -1), Or(u, d, r, o);
                                                for (var h = Math.round(c.dx * r), f = Math.round(c.dy * o), p = d.gZone, m = d.contours, y = 0; y < p.length; y++) {
                                                    var g = p[y];
                                                    g.xTouched = g.yTouched = !1, g.xo = g.x = g.x + h, g.yo = g.y = g.y + f
                                                }
                                                var v = i.length;
                                                i.push.apply(i, p);
                                                for (var b = 0; b < m.length; b++) a.push(m[b] + v)
                                            }
                                            e.instructions && !d.inhibitGridFit && ((d = new k("glyf", e.instructions)).gZone = d.z0 = d.z1 = d.z2 = i, d.contours = a, i.push(new E(0, 0), new E(Math.round(e.advanceWidth * r), 0)), _.DEBUG && (console.log("---EXEC COMPOSITE---"), d.step = -1), Cr(d), i.length -= 2)
                                        } else d = new k("glyf", e.instructions), _.DEBUG && (console.log("---EXEC GLYPH---"), d.step = -1), Or(e, d, r, o), i = d.gZone;
                                        return i
                                    },
                                    Or = function(e, t, r, o) {
                                        for (var n, s, i, a = e.points || [], l = a.length, c = t.gZone = t.z0 = t.z1 = t.z2 = [], u = t.contours = [], d = 0; d < l; d++) n = a[d], c[d] = new E(n.x * r, n.y * o, n.lastPointOfContour, n.onCurve);
                                        for (var h = 0; h < l; h++) n = c[h], s || (s = n, u.push(h)), n.lastPointOfContour ? ((n.nextPointOnContour = s).prevPointOnContour = n, s = void 0) : (i = c[h + 1], (n.nextPointOnContour = i).prevPointOnContour = n);
                                        if (!t.inhibitGridFit) {
                                            if (_.DEBUG) {
                                                console.log("PROCESSING GLYPH", t.stack);
                                                for (var f = 0; f < l; f++) console.log(f, c[f].x, c[f].y)
                                            }
                                            if (c.push(new E(0, 0), new E(Math.round(e.advanceWidth * r), 0)), Cr(t), c.length -= 2, _.DEBUG) {
                                                console.log("FINISHED GLYPH", t.stack);
                                                for (var p = 0; p < l; p++) console.log(p, c[p].x, c[p].y)
                                            }
                                        }
                                    },
                                    Cr = function(e) {
                                        var t = e.prog;
                                        if (t) {
                                            var r, o = t.length;
                                            for (e.ip = 0; e.ip < o; e.ip++) {
                                                if (_.DEBUG && e.step++, !(r = Ar[t[e.ip]])) throw new Error("unknown instruction: 0x" + Number(t[e.ip]).toString(16));
                                                r(e)
                                            }
                                        }
                                    },
                                    Ar = [cr.bind(void 0, T), cr.bind(void 0, w), ur.bind(void 0, T), ur.bind(void 0, w), dr.bind(void 0, T), dr.bind(void 0, w), hr.bind(void 0, 0), hr.bind(void 0, 1), fr.bind(void 0, 0), fr.bind(void 0, 1), function(e) {
                                        var t = (r = e.stack).pop(),
                                            r = r.pop();
                                        _.DEBUG && console.log(e.step, "SPVFS[]", t, r), e.pv = e.dpv = nr(r, t)
                                    }, function(e) {
                                        var t = (r = e.stack).pop(),
                                            r = r.pop();
                                        _.DEBUG && console.log(e.step, "SPVFS[]", t, r), e.fv = nr(r, t)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = e.pv;
                                        _.DEBUG && console.log(e.step, "GPV[]"), t.push(16384 * r.x), t.push(16384 * r.y)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = e.fv;
                                        _.DEBUG && console.log(e.step, "GFV[]"), t.push(16384 * r.x), t.push(16384 * r.y)
                                    }, function(e) {
                                        e.fv = e.pv, _.DEBUG && console.log(e.step, "SFVTPV[]")
                                    }, function(e) {
                                        var t = (s = e.stack).pop(),
                                            r = s.pop(),
                                            o = s.pop(),
                                            n = s.pop(),
                                            s = s.pop(),
                                            i = (a = e.z0)[t],
                                            a = a[r],
                                            l = (c = e.z1)[o],
                                            c = c[n],
                                            e = e.z2[s],
                                            t = (_.DEBUG && console.log("ISECT[], ", t, r, o, n, s), i.x),
                                            r = i.y,
                                            o = a.x,
                                            n = a.y,
                                            s = l.x,
                                            i = l.y,
                                            a = c.x,
                                            u = t * n - r * o,
                                            d = s * (l = c.y) - i * a;
                                        e.x = (u * (s - a) - d * (t - o)) / (c = (t - o) * (i - l) - (r - n) * (s - a)), e.y = (u * (i - l) - d * (r - n)) / c
                                    }, function(e) {
                                        e.rp0 = e.stack.pop(), _.DEBUG && console.log(e.step, "SRP0[]", e.rp0)
                                    }, function(e) {
                                        e.rp1 = e.stack.pop(), _.DEBUG && console.log(e.step, "SRP1[]", e.rp1)
                                    }, function(e) {
                                        e.rp2 = e.stack.pop(), _.DEBUG && console.log(e.step, "SRP2[]", e.rp2)
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "SZP0[]", t), e.zp0 = t) {
                                            case 0:
                                                e.tZone || ar(e), e.z0 = e.tZone;
                                                break;
                                            case 1:
                                                e.z0 = e.gZone;
                                                break;
                                            default:
                                                throw new Error("Invalid zone pointer")
                                        }
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "SZP1[]", t), e.zp1 = t) {
                                            case 0:
                                                e.tZone || ar(e), e.z1 = e.tZone;
                                                break;
                                            case 1:
                                                e.z1 = e.gZone;
                                                break;
                                            default:
                                                throw new Error("Invalid zone pointer")
                                        }
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "SZP2[]", t), e.zp2 = t) {
                                            case 0:
                                                e.tZone || ar(e), e.z2 = e.tZone;
                                                break;
                                            case 1:
                                                e.z2 = e.gZone;
                                                break;
                                            default:
                                                throw new Error("Invalid zone pointer")
                                        }
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "SZPS[]", t), e.zp0 = e.zp1 = e.zp2 = t) {
                                            case 0:
                                                e.tZone || ar(e), e.z0 = e.z1 = e.z2 = e.tZone;
                                                break;
                                            case 1:
                                                e.z0 = e.z1 = e.z2 = e.gZone;
                                                break;
                                            default:
                                                throw new Error("Invalid zone pointer")
                                        }
                                    }, function(e) {
                                        e.loop = e.stack.pop(), _.DEBUG && console.log(e.step, "SLOOP[]", e.loop)
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "RTG[]"), e.round = Qt
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "RTHG[]"), e.round = $t
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SMD[]", t), e.minDis = t / 64
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "ELSE[]"), lr(e, !1)
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "JMPR[]", t), e.ip += t - 1
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SCVTCI[]", t), e.cvCutIn = t / 64
                                    }, void 0, void 0, function(e) {
                                        var t = e.stack;
                                        _.DEBUG && console.log(e.step, "DUP[]"), t.push(t[t.length - 1])
                                    }, pr, function(e) {
                                        _.DEBUG && console.log(e.step, "CLEAR[]"), e.stack.length = 0
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "SWAP[]"), t.push(r), t.push(o)
                                    }, function(e) {
                                        var t = e.stack;
                                        _.DEBUG && console.log(e.step, "DEPTH[]"), t.push(t.length)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "CINDEX[]", r), t.push(t[t.length - r])
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "MINDEX[]", r), t.push(t.splice(t.length - r, 1)[0])
                                    }, void 0, void 0, void 0, function(e) {
                                        var t = (o = e.stack).pop(),
                                            r = o.pop(),
                                            o = (_.DEBUG && console.log(e.step, "LOOPCALL[]", t, r), e.ip),
                                            n = e.prog;
                                        e.prog = e.funcs[t];
                                        for (var s = 0; s < r; s++) Cr(e), _.DEBUG && console.log(++e.step, s + 1 < r ? "next loopcall" : "done loopcall", s);
                                        e.ip = o, e.prog = n
                                    }, function(e) {
                                        var t = e.stack.pop(),
                                            r = (_.DEBUG && console.log(e.step, "CALL[]", t), e.ip),
                                            o = e.prog;
                                        e.prog = e.funcs[t], Cr(e), e.ip = r, e.prog = o, _.DEBUG && console.log(++e.step, "returning from", t)
                                    }, function(e) {
                                        if ("fpgm" !== e.env) throw new Error("FDEF not allowed here");
                                        var t = e.stack,
                                            r = e.prog,
                                            o = e.ip,
                                            t = t.pop(),
                                            n = o;
                                        for (_.DEBUG && console.log(e.step, "FDEF[]", t); 45 !== r[++o];);
                                        e.ip = o, e.funcs[t] = r.slice(n + 1, o)
                                    }, void 0, mr.bind(void 0, 0), mr.bind(void 0, 1), yr.bind(void 0, T), yr.bind(void 0, w), gr.bind(void 0, 0), gr.bind(void 0, 1), vr.bind(void 0, 0), vr.bind(void 0, 1), br.bind(void 0, 0), br.bind(void 0, 1), function(e) {
                                        for (var t = e.stack, r = e.loop, o = e.fv, n = t.pop() / 64, s = e.z2; r--;) {
                                            var i = t.pop(),
                                                a = s[i];
                                            _.DEBUG && console.log(e.step, (1 < e.loop ? "loop " + (e.loop - r) + ": " : "") + "SHPIX[]", i, n), o.setRelative(a, a, n), o.touch(a)
                                        }
                                        e.loop = 1
                                    }, function(e) {
                                        for (var t = e.stack, r = e.rp1, o = e.rp2, n = e.loop, s = e.z0[r], i = e.z1[o], a = e.fv, l = e.dpv, c = e.z2; n--;) {
                                            var u = t.pop(),
                                                d = c[u];
                                            _.DEBUG && console.log(e.step, (1 < e.loop ? "loop " + (e.loop - n) + ": " : "") + "IP[]", u, r, "<->", o), a.interpolate(d, s, i, l), a.touch(d)
                                        }
                                        e.loop = 1
                                    }, _r.bind(void 0, 0), _r.bind(void 0, 1), function(e) {
                                        for (var t = e.stack, r = e.z0[e.rp0], o = e.loop, n = e.fv, s = e.pv, i = e.z1; o--;) {
                                            var a = t.pop(),
                                                l = i[a];
                                            _.DEBUG && console.log(e.step, (1 < e.loop ? "loop " + (e.loop - o) + ": " : "") + "ALIGNRP[]", a), n.setRelative(l, r, 0, s), n.touch(l)
                                        }
                                        e.loop = 1
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "RTDG[]"), e.round = Jt
                                    }, xr.bind(void 0, 0), xr.bind(void 0, 1), function(e) {
                                        var t = e.prog,
                                            r = e.ip,
                                            o = e.stack,
                                            n = t[++r];
                                        _.DEBUG && console.log(e.step, "NPUSHB[]", n);
                                        for (var s = 0; s < n; s++) o.push(t[++r]);
                                        e.ip = r
                                    }, function(e) {
                                        var t = e.ip,
                                            r = e.prog,
                                            o = e.stack,
                                            n = r[++t];
                                        _.DEBUG && console.log(e.step, "NPUSHW[]", n);
                                        for (var s = 0; s < n; s++) {
                                            var i = r[++t] << 8 | r[++t];
                                            32768 & i && (i = -(1 + (65535 ^ i))), o.push(i)
                                        }
                                        e.ip = t
                                    }, function(e) {
                                        var t = e.stack,
                                            r = (r = e.store) || (e.store = []),
                                            o = t.pop(),
                                            t = t.pop();
                                        _.DEBUG && console.log(e.step, "WS", o, t), r[t] = o
                                    }, function(e) {
                                        var t = e.stack,
                                            r = e.store,
                                            o = t.pop(),
                                            e = (_.DEBUG && console.log(e.step, "RS", o), r && r[o] || 0);
                                        t.push(e)
                                    }, function(e) {
                                        var t = (r = e.stack).pop(),
                                            r = r.pop();
                                        _.DEBUG && console.log(e.step, "WCVTP", t, r), e.cvt[r] = t / 64
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "RCVT", r), t.push(64 * e.cvt[r])
                                    }, wr.bind(void 0, 0), wr.bind(void 0, 1), void 0, jr.bind(void 0, 0), jr.bind(void 0, 1), function(e) {
                                        _.DEBUG && console.log(e.step, "MPPEM[]"), e.stack.push(e.ppem)
                                    }, void 0, function(e) {
                                        _.DEBUG && console.log(e.step, "FLIPON[]"), e.autoFlip = !0
                                    }, void 0, void 0, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "LT[]", r, o), t.push(o < r ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "LTEQ[]", r, o), t.push(o <= r ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "GT[]", r, o), t.push(r < o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "GTEQ[]", r, o), t.push(r <= o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "EQ[]", r, o), t.push(r === o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "NEQ[]", r, o), t.push(r !== o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "ODD[]", r), t.push(Math.trunc(r) % 2 ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "EVEN[]", r), t.push(Math.trunc(r) % 2 ? 0 : 1)
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "IF[]", t), t || (lr(e, !0), _.DEBUG && console.log(e.step, "EIF[]"))
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "EIF[]")
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "AND[]", r, o), t.push(r && o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "OR[]", r, o), t.push(r || o ? 1 : 0)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "NOT[]", r), t.push(r ? 0 : 1)
                                    }, Sr.bind(void 0, 1), function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SDB[]", t), e.deltaBase = t
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SDS[]", t), e.deltaShift = Math.pow(.5, t)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "ADD[]", r, o), t.push(o + r)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "SUB[]", r, o), t.push(o - r)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "DIV[]", r, o), t.push(64 * o / r)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "MUL[]", r, o), t.push(o * r / 64)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "ABS[]", r), t.push(Math.abs(r))
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "NEG[]", r), t.push(-r)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "FLOOR[]", r), t.push(64 * Math.floor(r / 64))
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop();
                                        _.DEBUG && console.log(e.step, "CEILING[]", r), t.push(64 * Math.ceil(r / 64))
                                    }, Tr.bind(void 0, 0), Tr.bind(void 0, 1), Tr.bind(void 0, 2), Tr.bind(void 0, 3), void 0, void 0, void 0, void 0, function(e) {
                                        var t = (r = e.stack).pop(),
                                            r = r.pop();
                                        _.DEBUG && console.log(e.step, "WCVTF[]", t, r), e.cvt[r] = t * e.ppem / e.font.unitsPerEm
                                    }, Sr.bind(void 0, 2), Sr.bind(void 0, 3), Er.bind(void 0, 1), Er.bind(void 0, 2), Er.bind(void 0, 3), function(e) {
                                        var t, r = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "SROUND[]", r), e.round = rr, 192 & r) {
                                            case 0:
                                                t = .5;
                                                break;
                                            case 64:
                                                t = 1;
                                                break;
                                            case 128:
                                                t = 2;
                                                break;
                                            default:
                                                throw new Error("invalid SROUND value")
                                        }
                                        switch (e.srPeriod = t, 48 & r) {
                                            case 0:
                                                e.srPhase = 0;
                                                break;
                                            case 16:
                                                e.srPhase = .25 * t;
                                                break;
                                            case 32:
                                                e.srPhase = .5 * t;
                                                break;
                                            case 48:
                                                e.srPhase = .75 * t;
                                                break;
                                            default:
                                                throw new Error("invalid SROUND value")
                                        }
                                        e.srThreshold = 0 == (r &= 15) ? 0 : (r / 8 - .5) * t
                                    }, function(e) {
                                        var t, r = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "S45ROUND[]", r), e.round = rr, 192 & r) {
                                            case 0:
                                                t = Math.sqrt(2) / 2;
                                                break;
                                            case 64:
                                                t = Math.sqrt(2);
                                                break;
                                            case 128:
                                                t = 2 * Math.sqrt(2);
                                                break;
                                            default:
                                                throw new Error("invalid S45ROUND value")
                                        }
                                        switch (e.srPeriod = t, 48 & r) {
                                            case 0:
                                                e.srPhase = 0;
                                                break;
                                            case 16:
                                                e.srPhase = .25 * t;
                                                break;
                                            case 32:
                                                e.srPhase = .5 * t;
                                                break;
                                            case 48:
                                                e.srPhase = .75 * t;
                                                break;
                                            default:
                                                throw new Error("invalid S45ROUND value")
                                        }
                                        e.srThreshold = 0 == (r &= 15) ? 0 : (r / 8 - .5) * t
                                    }, void 0, void 0, function(e) {
                                        _.DEBUG && console.log(e.step, "ROFF[]"), e.round = Kt
                                    }, void 0, function(e) {
                                        _.DEBUG && console.log(e.step, "RUTG[]"), e.round = er
                                    }, function(e) {
                                        _.DEBUG && console.log(e.step, "RDTG[]"), e.round = tr
                                    }, pr, pr, void 0, void 0, void 0, void 0, void 0, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SCANCTRL[]", t)
                                    }, kr.bind(void 0, 0), kr.bind(void 0, 1), function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = 0;
                                        _.DEBUG && console.log(e.step, "GETINFO[]", r), 1 & r && (o = 35), 32 & r && (o |= 4096), t.push(o)
                                    }, void 0, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop(),
                                            n = t.pop();
                                        _.DEBUG && console.log(e.step, "ROLL[]"), t.push(o), t.push(r), t.push(n)
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "MAX[]", r, o), t.push(Math.max(o, r))
                                    }, function(e) {
                                        var t = e.stack,
                                            r = t.pop(),
                                            o = t.pop();
                                        _.DEBUG && console.log(e.step, "MIN[]", r, o), t.push(Math.min(o, r))
                                    }, function(e) {
                                        var t = e.stack.pop();
                                        _.DEBUG && console.log(e.step, "SCANTYPE[]", t)
                                    }, function(e) {
                                        var t = e.stack.pop(),
                                            r = e.stack.pop();
                                        switch (_.DEBUG && console.log(e.step, "INSTCTRL[]", t, r), t) {
                                            case 1:
                                                return void(e.inhibitGridFit = !!r);
                                            case 2:
                                                return void(e.ignoreCvt = !!r);
                                            default:
                                                throw new Error("invalid INSTCTRL[] selector")
                                        }
                                    }, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, void 0, M.bind(void 0, 1), M.bind(void 0, 2), M.bind(void 0, 3), M.bind(void 0, 4), M.bind(void 0, 5), M.bind(void 0, 6), M.bind(void 0, 7), M.bind(void 0, 8), O.bind(void 0, 1), O.bind(void 0, 2), O.bind(void 0, 3), O.bind(void 0, 4), O.bind(void 0, 5), O.bind(void 0, 6), O.bind(void 0, 7), O.bind(void 0, 8), C.bind(void 0, 0, 0, 0, 0, 0), C.bind(void 0, 0, 0, 0, 0, 1), C.bind(void 0, 0, 0, 0, 0, 2), C.bind(void 0, 0, 0, 0, 0, 3), C.bind(void 0, 0, 0, 0, 1, 0), C.bind(void 0, 0, 0, 0, 1, 1), C.bind(void 0, 0, 0, 0, 1, 2), C.bind(void 0, 0, 0, 0, 1, 3), C.bind(void 0, 0, 0, 1, 0, 0), C.bind(void 0, 0, 0, 1, 0, 1), C.bind(void 0, 0, 0, 1, 0, 2), C.bind(void 0, 0, 0, 1, 0, 3), C.bind(void 0, 0, 0, 1, 1, 0), C.bind(void 0, 0, 0, 1, 1, 1), C.bind(void 0, 0, 0, 1, 1, 2), C.bind(void 0, 0, 0, 1, 1, 3), C.bind(void 0, 0, 1, 0, 0, 0), C.bind(void 0, 0, 1, 0, 0, 1), C.bind(void 0, 0, 1, 0, 0, 2), C.bind(void 0, 0, 1, 0, 0, 3), C.bind(void 0, 0, 1, 0, 1, 0), C.bind(void 0, 0, 1, 0, 1, 1), C.bind(void 0, 0, 1, 0, 1, 2), C.bind(void 0, 0, 1, 0, 1, 3), C.bind(void 0, 0, 1, 1, 0, 0), C.bind(void 0, 0, 1, 1, 0, 1), C.bind(void 0, 0, 1, 1, 0, 2), C.bind(void 0, 0, 1, 1, 0, 3), C.bind(void 0, 0, 1, 1, 1, 0), C.bind(void 0, 0, 1, 1, 1, 1), C.bind(void 0, 0, 1, 1, 1, 2), C.bind(void 0, 0, 1, 1, 1, 3), C.bind(void 0, 1, 0, 0, 0, 0), C.bind(void 0, 1, 0, 0, 0, 1), C.bind(void 0, 1, 0, 0, 0, 2), C.bind(void 0, 1, 0, 0, 0, 3), C.bind(void 0, 1, 0, 0, 1, 0), C.bind(void 0, 1, 0, 0, 1, 1), C.bind(void 0, 1, 0, 0, 1, 2), C.bind(void 0, 1, 0, 0, 1, 3), C.bind(void 0, 1, 0, 1, 0, 0), C.bind(void 0, 1, 0, 1, 0, 1), C.bind(void 0, 1, 0, 1, 0, 2), C.bind(void 0, 1, 0, 1, 0, 3), C.bind(void 0, 1, 0, 1, 1, 0), C.bind(void 0, 1, 0, 1, 1, 1), C.bind(void 0, 1, 0, 1, 1, 2), C.bind(void 0, 1, 0, 1, 1, 3), C.bind(void 0, 1, 1, 0, 0, 0), C.bind(void 0, 1, 1, 0, 0, 1), C.bind(void 0, 1, 1, 0, 0, 2), C.bind(void 0, 1, 1, 0, 0, 3), C.bind(void 0, 1, 1, 0, 1, 0), C.bind(void 0, 1, 1, 0, 1, 1), C.bind(void 0, 1, 1, 0, 1, 2), C.bind(void 0, 1, 1, 0, 1, 3), C.bind(void 0, 1, 1, 1, 0, 0), C.bind(void 0, 1, 1, 1, 0, 1), C.bind(void 0, 1, 1, 1, 0, 2), C.bind(void 0, 1, 1, 1, 0, 3), C.bind(void 0, 1, 1, 1, 1, 0), C.bind(void 0, 1, 1, 1, 1, 1), C.bind(void 0, 1, 1, 1, 1, 2), C.bind(void 0, 1, 1, 1, 1, 3)],
                                    Lr = Array.from || function(e) {
                                        return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]?|[^\uD800-\uDFFF]|./g) || []
                                    };

                                function A(e) {
                                    (e = e || {}).empty || (x(e.familyName, "When creating a new Font object, familyName is required."), x(e.styleName, "When creating a new Font object, styleName is required."), x(e.unitsPerEm, "When creating a new Font object, unitsPerEm is required."), x(e.ascender, "When creating a new Font object, ascender is required."), x(e.descender, "When creating a new Font object, descender is required."), x(e.descender < 0, "Descender should be negative (e.g. -512)."), this.names = {
                                        fontFamily: {
                                            en: e.familyName || " "
                                        },
                                        fontSubfamily: {
                                            en: e.styleName || " "
                                        },
                                        fullName: {
                                            en: e.fullName || e.familyName + " " + e.styleName
                                        },
                                        postScriptName: {
                                            en: e.postScriptName || (e.familyName + e.styleName).replace(/\s/g, "")
                                        },
                                        designer: {
                                            en: e.designer || " "
                                        },
                                        designerURL: {
                                            en: e.designerURL || " "
                                        },
                                        manufacturer: {
                                            en: e.manufacturer || " "
                                        },
                                        manufacturerURL: {
                                            en: e.manufacturerURL || " "
                                        },
                                        license: {
                                            en: e.license || " "
                                        },
                                        licenseURL: {
                                            en: e.licenseURL || " "
                                        },
                                        version: {
                                            en: e.version || "Version 0.1"
                                        },
                                        description: {
                                            en: e.description || " "
                                        },
                                        copyright: {
                                            en: e.copyright || " "
                                        },
                                        trademark: {
                                            en: e.trademark || " "
                                        }
                                    }, this.unitsPerEm = e.unitsPerEm || 1e3, this.ascender = e.ascender, this.descender = e.descender, this.createdTimestamp = e.createdTimestamp, this.tables = {
                                        os2: {
                                            usWeightClass: e.weightClass || this.usWeightClasses.MEDIUM,
                                            usWidthClass: e.widthClass || this.usWidthClasses.MEDIUM,
                                            fsSelection: e.fsSelection || this.fsSelectionValues.REGULAR
                                        }
                                    }), this.supported = !0, this.glyphs = new p.GlyphSet(this, e.glyphs || []), this.encoding = new Me(this), this.position = new Bt(this), this.substitution = new i(this), this.tables = this.tables || {}, Object.defineProperty(this, "hinting", {
                                        get: function() {
                                            return this._hinting || ("truetype" === this.outlinesFormat ? this._hinting = new Zt(this) : void 0)
                                        }
                                    })
                                }
                                A.prototype.hasChar = function(e) {
                                    return null !== this.encoding.charToGlyphIndex(e)
                                }, A.prototype.charToGlyphIndex = function(e) {
                                    return this.encoding.charToGlyphIndex(e)
                                }, A.prototype.charToGlyph = function(e) {
                                    return e = this.charToGlyphIndex(e), this.glyphs.get(e) || this.glyphs.get(0)
                                }, A.prototype.stringToGlyphs = function(e, t) {
                                    t = t || this.defaultRenderOptions;
                                    for (var r = Lr(e), o = [], n = 0; n < r.length; n += 1) {
                                        var s = r[n];
                                        o.push(this.charToGlyphIndex(s))
                                    }
                                    var i = o.length;
                                    if (t.features) {
                                        var e = t.script || this.substitution.getDefaultScriptName(),
                                            a = [];
                                        t.features.liga && (a = a.concat(this.substitution.getFeature("liga", e, t.language))), t.features.rlig && (a = a.concat(this.substitution.getFeature("rlig", e, t.language)));
                                        for (var l = 0; l < i; l += 1)
                                            for (var c = 0; c < a.length; c++) {
                                                for (var u = a[c], d = u.sub, h = d.length, f = 0; f < h && d[f] === o[l + f];) f++;
                                                f === h && (o.splice(l, h, u.by), i = i - h + 1)
                                            }
                                    }
                                    for (var p = new Array(i), m = this.glyphs.get(0), y = 0; y < i; y += 1) p[y] = this.glyphs.get(o[y]) || m;
                                    return p
                                }, A.prototype.nameToGlyphIndex = function(e) {
                                    return this.glyphNames.nameToGlyphIndex(e)
                                }, A.prototype.nameToGlyph = function(e) {
                                    return e = this.nameToGlyphIndex(e), this.glyphs.get(e) || this.glyphs.get(0)
                                }, A.prototype.glyphIndexToName = function(e) {
                                    return this.glyphNames.glyphIndexToName ? this.glyphNames.glyphIndexToName(e) : ""
                                }, A.prototype.getKerningValue = function(e, t) {
                                    e = e.index || e, t = t.index || t;
                                    var r = this.position.defaultKerningTables;
                                    return r ? this.position.getKerningValue(r, e, t) : this.kerningPairs[e + "," + t] || 0
                                }, A.prototype.defaultRenderOptions = {
                                    kerning: !0,
                                    features: {
                                        liga: !0,
                                        rlig: !0
                                    }
                                }, A.prototype.forEachGlyph = function(e, t, r, o, n, s) {
                                    t = void 0 !== t ? t : 0, r = void 0 !== r ? r : 0, n = n || this.defaultRenderOptions;
                                    var i, a = 1 / this.unitsPerEm * (o = void 0 !== o ? o : 72),
                                        l = this.stringToGlyphs(e, n);
                                    n.kerning && (e = n.script || this.position.getDefaultScriptName(), i = this.position.getKerningTables(e, n.language));
                                    for (var c = 0; c < l.length; c += 1) {
                                        var u = l[c];
                                        s.call(this, u, t, r, o, n), u.advanceWidth && (t += u.advanceWidth * a), n.kerning && c < l.length - 1 && (t += (i ? this.position.getKerningValue(i, u.index, l[c + 1].index) : this.getKerningValue(u, l[c + 1])) * a), n.letterSpacing ? t += n.letterSpacing * o : n.tracking && (t += n.tracking / 1e3 * o)
                                    }
                                    return t
                                }, A.prototype.getPath = function(e, t, r, o, n) {
                                    var s = new h;
                                    return this.forEachGlyph(e, t, r, o, n, function(e, t, r, o) {
                                        e = e.getPath(t, r, o, n, this), s.extend(e)
                                    }), s
                                }, A.prototype.getPaths = function(e, t, r, o, n) {
                                    var s = [];
                                    return this.forEachGlyph(e, t, r, o, n, function(e, t, r, o) {
                                        e = e.getPath(t, r, o, n, this), s.push(e)
                                    }), s
                                }, A.prototype.getAdvanceWidth = function(e, t, r) {
                                    return this.forEachGlyph(e, 0, 0, t, r, function() {})
                                }, A.prototype.draw = function(e, t, r, o, n, s) {
                                    this.getPath(t, r, o, n, s).draw(e)
                                }, A.prototype.drawPoints = function(n, e, t, r, o, s) {
                                    this.forEachGlyph(e, t, r, o, s, function(e, t, r, o) {
                                        e.drawPoints(n, t, r, o)
                                    })
                                }, A.prototype.drawMetrics = function(n, e, t, r, o, s) {
                                    this.forEachGlyph(e, t, r, o, s, function(e, t, r, o) {
                                        e.drawMetrics(n, t, r, o)
                                    })
                                }, A.prototype.getEnglishName = function(e) {
                                    if (e = this.names[e]) return e.en
                                }, A.prototype.validate = function() {
                                    var t = this;

                                    function e(e) {
                                        (e = t.getEnglishName(e)) && e.trim().length
                                    }
                                    e("fontFamily"), e("weightName"), e("manufacturer"), e("copyright"), e("version"), this.unitsPerEm
                                }, A.prototype.toTables = function() {
                                    return Rt(this)
                                }, A.prototype.toBuffer = function() {
                                    return console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead."), this.toArrayBuffer()
                                }, A.prototype.toArrayBuffer = function() {
                                    for (var e = this.toTables().encode(), t = new ArrayBuffer(e.length), r = new Uint8Array(t), o = 0; o < e.length; o++) r[o] = e[o];
                                    return t
                                }, A.prototype.download = function(t) {
                                    var e = this.getEnglishName("fontFamily"),
                                        r = this.getEnglishName("fontSubfamily"),
                                        o = (t = t || e.replace(/\s/g, "") + "-" + r + ".otf", this.toArrayBuffer());
                                    "undefined" != typeof window ? (window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem, window.requestFileSystem(window.TEMPORARY, o.byteLength, function(e) {
                                        e.root.getFile(t, {
                                            create: !0
                                        }, function(r) {
                                            r.createWriter(function(e) {
                                                var t = new DataView(o),
                                                    t = new Blob([t], {
                                                        type: "font/opentype"
                                                    });
                                                e.write(t), e.addEventListener("writeend", function() {
                                                    location.href = r.toURL()
                                                }, !1)
                                            })
                                        })
                                    }, function(e) {
                                        throw new Error(e.name + ": " + e.message)
                                    })) : (e = Br("fs"), r = (e => {
                                        for (var t = new Ur(e.byteLength), r = new Uint8Array(e), o = 0; o < t.length; ++o) t[o] = r[o];
                                        return t
                                    })(o), e.writeFileSync(t, r))
                                }, A.prototype.fsSelectionValues = {
                                    ITALIC: 1,
                                    UNDERSCORE: 2,
                                    NEGATIVE: 4,
                                    OUTLINED: 8,
                                    STRIKEOUT: 16,
                                    BOLD: 32,
                                    REGULAR: 64,
                                    USER_TYPO_METRICS: 128,
                                    WWS: 256,
                                    OBLIQUE: 512
                                }, A.prototype.usWidthClasses = {
                                    ULTRA_CONDENSED: 1,
                                    EXTRA_CONDENSED: 2,
                                    CONDENSED: 3,
                                    SEMI_CONDENSED: 4,
                                    MEDIUM: 5,
                                    SEMI_EXPANDED: 6,
                                    EXPANDED: 7,
                                    EXTRA_EXPANDED: 8,
                                    ULTRA_EXPANDED: 9
                                }, A.prototype.usWeightClasses = {
                                    THIN: 100,
                                    EXTRA_LIGHT: 200,
                                    LIGHT: 300,
                                    NORMAL: 400,
                                    MEDIUM: 500,
                                    SEMI_BOLD: 600,
                                    BOLD: 700,
                                    EXTRA_BOLD: 800,
                                    BLACK: 900
                                };
                                var Pr = function(s, e, t) {
                                        for (var r, o, n, i = new I.Parser(s, e), a = i.parseULong(), l = (P.argument(65536 === a, "Unsupported fvar table version."), i.parseOffset16()), c = (i.skip("uShort", 1), i.parseUShort()), u = i.parseUShort(), d = i.parseUShort(), h = i.parseUShort(), f = [], p = 0; p < c; p++) f.push((o = t, n = {}, r = new I.Parser(r = s, e + l + p * u), n.tag = r.parseTag(), n.minValue = r.parseFixed(), n.defaultValue = r.parseFixed(), n.maxValue = r.parseFixed(), r.skip("uShort", 1), n.name = o[r.parseUShort()] || {}, n));
                                        for (var m = [], y = e + l + c * u, g = 0; g < d; g++) m.push(((e, t) => {
                                            var r = {},
                                                o = new I.Parser(s, y + g * h);
                                            r.name = t[o.parseUShort()] || {}, o.skip("uShort", 1), r.coordinates = {};
                                            for (var n = 0; n < e.length; ++n) r.coordinates[e[n].tag] = o.parseFixed();
                                            return r
                                        })(f, t));
                                        return {
                                            axes: f,
                                            instances: m
                                        }
                                    },
                                    L = new Array(10),
                                    Ir = (L[1] = function() {
                                        var e = this.offset + this.relativeOffset,
                                            t = this.parseUShort();
                                        return 1 === t ? {
                                            posFormat: 1,
                                            coverage: this.parsePointer(c.coverage),
                                            value: this.parseValueRecord()
                                        } : 2 === t ? {
                                            posFormat: 2,
                                            coverage: this.parsePointer(c.coverage),
                                            values: this.parseValueRecordList()
                                        } : void P.assert(!1, "0x" + e.toString(16) + ": GPOS lookup type 1 format must be 1 or 2.")
                                    }, L[2] = function() {
                                        var e, t, r, o, n = this.offset + this.relativeOffset,
                                            s = this.parseUShort(),
                                            n = (P.assert(1 === s || 2 === s, "0x" + n.toString(16) + ": GPOS lookup type 2 format must be 1 or 2."), this.parsePointer(c.coverage)),
                                            i = this.parseUShort(),
                                            a = this.parseUShort();
                                        return 1 === s ? {
                                            posFormat: s,
                                            coverage: n,
                                            valueFormat1: i,
                                            valueFormat2: a,
                                            pairSets: this.parseList(c.pointer(c.list(function() {
                                                return {
                                                    secondGlyph: this.parseUShort(),
                                                    value1: this.parseValueRecord(i),
                                                    value2: this.parseValueRecord(a)
                                                }
                                            })))
                                        } : 2 === s ? (e = this.parsePointer(c.classDef), t = this.parsePointer(c.classDef), r = this.parseUShort(), o = this.parseUShort(), {
                                            posFormat: s,
                                            coverage: n,
                                            valueFormat1: i,
                                            valueFormat2: a,
                                            classDef1: e,
                                            classDef2: t,
                                            class1Count: r,
                                            class2Count: o,
                                            classRecords: this.parseList(r, c.list(o, function() {
                                                return {
                                                    value1: this.parseValueRecord(i),
                                                    value2: this.parseValueRecord(a)
                                                }
                                            }))
                                        }) : void 0
                                    }, L[3] = function() {
                                        return {
                                            error: "GPOS Lookup 3 not supported"
                                        }
                                    }, L[4] = function() {
                                        return {
                                            error: "GPOS Lookup 4 not supported"
                                        }
                                    }, L[5] = function() {
                                        return {
                                            error: "GPOS Lookup 5 not supported"
                                        }
                                    }, L[6] = function() {
                                        return {
                                            error: "GPOS Lookup 6 not supported"
                                        }
                                    }, L[7] = function() {
                                        return {
                                            error: "GPOS Lookup 7 not supported"
                                        }
                                    }, L[8] = function() {
                                        return {
                                            error: "GPOS Lookup 8 not supported"
                                        }
                                    }, L[9] = function() {
                                        return {
                                            error: "GPOS Lookup 9 not supported"
                                        }
                                    }, new Array(10), function(e, t) {
                                        return t = (e = new c(e, t = t || 0)).parseVersion(1), P.argument(1 === t || 1.1 === t, "Unsupported GPOS table version " + t), 1 === t ? {
                                            version: t,
                                            scripts: e.parseScriptList(),
                                            features: e.parseFeatureList(),
                                            lookups: e.parseLookupList(L)
                                        } : {
                                            version: t,
                                            scripts: e.parseScriptList(),
                                            features: e.parseFeatureList(),
                                            lookups: e.parseLookupList(L),
                                            variations: e.parseFeatureVariationsList()
                                        }
                                    }),
                                    Rr = function(e, t) {
                                        if (0 === (t = (e = new I.Parser(e, t)).parseUShort())) {
                                            var r = e,
                                                o = {},
                                                n = (r.skip("uShort"), r.parseUShort()),
                                                s = (P.argument(0 === n, "Unsupported kern sub-table version."), r.skip("uShort", 2), r.parseUShort());
                                            r.skip("uShort", 3);
                                            for (var i = 0; i < s; i += 1) {
                                                var a = r.parseUShort(),
                                                    l = r.parseUShort(),
                                                    c = r.parseShort();
                                                o[a + "," + l] = c
                                            }
                                            return o
                                        }
                                        if (1 !== t) throw new Error("Unsupported kern table version (" + t + ").");
                                        var u = e,
                                            d = {},
                                            n = (u.skip("uShort"), 1 < u.parseULong() && console.warn("Only the first kern subtable is supported."), u.skip("uLong"), 255 & u.parseUShort());
                                        if (u.skip("uShort"), 0 == n) {
                                            var h = u.parseUShort();
                                            u.skip("uShort", 3);
                                            for (var f = 0; f < h; f += 1) {
                                                var p = u.parseUShort(),
                                                    m = u.parseUShort(),
                                                    y = u.parseShort();
                                                d[p + "," + m] = y
                                            }
                                        }
                                        return d
                                    },
                                    Dr = function(e, t, r, o) {
                                        for (var n = new I.Parser(e, t), s = o ? n.parseUShort : n.parseULong, i = [], a = 0; a < r + 1; a += 1) {
                                            var l = s.call(n);
                                            o && (l *= 2), i.push(l)
                                        }
                                        return i
                                    };

                                function Fr(e, t) {
                                    for (var r = [], o = 12, n = 0; n < t; n += 1) {
                                        var s = I.getTag(e, o),
                                            i = I.getULong(e, o + 4),
                                            a = I.getULong(e, o + 8),
                                            l = I.getULong(e, o + 12);
                                        r.push({
                                            tag: s,
                                            checksum: i,
                                            offset: a,
                                            length: l,
                                            compression: !1
                                        }), o += 16
                                    }
                                    return r
                                }

                                function R(e, t) {
                                    if ("WOFF" !== t.compression) return {
                                        data: e,
                                        offset: t.offset
                                    };
                                    var e = new Uint8Array(e.buffer, t.offset + 2, t.compressedLength - 2),
                                        r = new Uint8Array(t.length);
                                    if (re(e, r), r.byteLength !== t.length) throw new Error("Decompression error: " + t.tag + " decompressed length doesn't match recorded length");
                                    return {
                                        data: new DataView(r.buffer, 0),
                                        offset: 0
                                    }
                                }

                                function Nr(e) {
                                    var t, r, o, n, s, i, a, l, c, u, d, h, f, p, m = new A({
                                            empty: !0
                                        }),
                                        y = new DataView(e, 0),
                                        g = [];
                                    if ((e = I.getTag(y, 0)) === String.fromCharCode(0, 1, 0, 0) || "true" === e || "typ1" === e) m.outlinesFormat = "truetype", g = Fr(y, o = I.getUShort(y, 4));
                                    else if ("OTTO" === e) m.outlinesFormat = "cff", g = Fr(y, o = I.getUShort(y, 4));
                                    else {
                                        if ("wOFF" !== e) throw new Error("Unsupported OpenType signature " + e);
                                        if ((x = I.getTag(y, 4)) === String.fromCharCode(0, 1, 0, 0)) m.outlinesFormat = "truetype";
                                        else {
                                            if ("OTTO" !== x) throw new Error("Unsupported OpenType flavor " + e);
                                            m.outlinesFormat = "cff"
                                        }
                                        g = ((e, t) => {
                                            for (var r = [], o = 44, n = 0; n < t; n += 1) {
                                                var s = I.getTag(e, o),
                                                    i = I.getULong(e, o + 4),
                                                    a = I.getULong(e, o + 8),
                                                    l = I.getULong(e, o + 12);
                                                r.push({
                                                    tag: s,
                                                    offset: i,
                                                    compression: a < l && "WOFF",
                                                    compressedLength: a,
                                                    length: l
                                                }), o += 20
                                            }
                                            return r
                                        })(y, o = I.getUShort(y, 12))
                                    }
                                    for (var v = 0; v < o; v += 1) {
                                        var b = g[v],
                                            _ = void 0;
                                        switch (b.tag) {
                                            case "cmap":
                                                _ = R(y, b), m.tables.cmap = je(_.data, _.offset), m.encoding = new Oe(m.tables.cmap);
                                                break;
                                            case "cvt ":
                                                _ = R(y, b), p = new I.Parser(_.data, _.offset), m.tables.cvt = p.parseShortList(b.length / 2);
                                                break;
                                            case "fvar":
                                                s = b;
                                                break;
                                            case "fpgm":
                                                _ = R(y, b), p = new I.Parser(_.data, _.offset), m.tables.fpgm = p.parseByteList(b.length);
                                                break;
                                            case "head":
                                                _ = R(y, b), m.tables.head = Ke(_.data, _.offset), m.unitsPerEm = m.tables.head.unitsPerEm, t = m.tables.head.indexToLocFormat;
                                                break;
                                            case "hhea":
                                                _ = R(y, b), m.tables.hhea = Je(_.data, _.offset), m.ascender = m.tables.hhea.ascender, m.descender = m.tables.hhea.descender, m.numberOfHMetrics = m.tables.hhea.numberOfHMetrics;
                                                break;
                                            case "hmtx":
                                                c = b;
                                                break;
                                            case "ltag":
                                                _ = R(y, b), r = ot(_.data, _.offset);
                                                break;
                                            case "maxp":
                                                _ = R(y, b), m.tables.maxp = nt(_.data, _.offset), m.numGlyphs = m.tables.maxp.numGlyphs;
                                                break;
                                            case "name":
                                                h = b;
                                                break;
                                            case "OS/2":
                                                _ = R(y, b), m.tables.os2 = _t(_.data, _.offset);
                                                break;
                                            case "post":
                                                _ = R(y, b), m.tables.post = jt(_.data, _.offset), m.glyphNames = new Ae(m.tables.post);
                                                break;
                                            case "prep":
                                                _ = R(y, b), p = new I.Parser(_.data, _.offset), m.tables.prep = p.parseByteList(b.length);
                                                break;
                                            case "glyf":
                                                i = b;
                                                break;
                                            case "loca":
                                                d = b;
                                                break;
                                            case "CFF ":
                                                n = b;
                                                break;
                                            case "kern":
                                                u = b;
                                                break;
                                            case "GPOS":
                                                a = b;
                                                break;
                                            case "GSUB":
                                                l = b;
                                                break;
                                            case "meta":
                                                f = b
                                        }
                                    }
                                    if (x = R(y, h), m.tables.name = gt(x.data, x.offset, r), m.names = m.tables.name, i && d) e = 0 === t, x = R(y, d), x = Dr(x.data, x.offset, m.numGlyphs, e), e = R(y, i), m.glyphs = Yt.parse(e.data, e.offset, x, m);
                                    else {
                                        if (!n) throw new Error("Font doesn't contain TrueType or CFF outlines.");
                                        e = R(y, n), Ye(e.data, e.offset, m)
                                    }
                                    for (var x = R(y, c), w = (et(x.data, x.offset, m.numberOfHMetrics, m.numGlyphs, m.glyphs), m), j = w.tables.cmap.glyphIndexMap, S = Object.keys(j), T = 0; T < S.length; T += 1) {
                                        var E, k = S[T],
                                            M = j[k];
                                        (E = w.glyphs.get(M)).addUnicode(parseInt(k))
                                    }
                                    for (var O = 0; O < w.glyphs.length; O += 1) E = w.glyphs.get(O), w.cffEncoding ? w.isCIDFont ? E.name = "gid" + O : E.name = w.cffEncoding.charset[O] : w.glyphNames.names && (E.name = w.glyphNames.glyphIndexToName(O));
                                    return u ? (e = R(y, u), m.kerningPairs = Rr(e.data, e.offset)) : m.kerningPairs = {}, a && (x = R(y, a), m.tables.gpos = Ir(x.data, x.offset), m.position.init()), l && (e = R(y, l), m.tables.gsub = Et(e.data, e.offset)), s && (x = R(y, s), m.tables.fvar = Pr(x.data, x.offset, m.names)), f && (e = R(y, f), m.tables.meta = Mt(e.data, e.offset), m.metas = m.tables.meta), m
                                }
                                _.Font = A, _.Glyph = f, _.Path = h, _.BoundingBox = a, _._parse = I, _.parse = Nr, _.load = function(e, o) {
                                    ("undefined" == typeof window ? function(e, r) {
                                        Br("fs").readFile(e, function(e, t) {
                                            if (e) return r(e.message);
                                            r(null, Vt(t))
                                        })
                                    } : function(e, t) {
                                        var r = new XMLHttpRequest;
                                        r.open("get", e, !0), r.responseType = "arraybuffer", r.onload = function() {
                                            return r.response ? t(null, r.response) : t("Font could not be loaded: " + r.statusText)
                                        }, r.onerror = function() {
                                            t("Font could not be loaded")
                                        }, r.send()
                                    })(e, function(e, t) {
                                        if (e) return o(e);
                                        var r;
                                        try {
                                            r = Nr(t)
                                        } catch (e) {
                                            return o(e, null)
                                        }
                                        return o(null, r)
                                    })
                                }, _.loadSync = function(e) {
                                    return Nr(Vt(Br("fs").readFileSync(e)))
                                }, Object.defineProperty(_, "__esModule", {
                                    value: !0
                                })
                            };
                            e("object" == typeof r && void 0 !== t ? r : this.opentype = {})
                        }.call(this, Br("buffer").Buffer)
                    }, {
                        buffer: 4,
                        fs: 2
                    }],
                    258: [function(e, t, c) {
                        ! function(n) {
                            function s(e, t) {
                                for (var r = 0, o = e.length - 1; 0 <= o; o--) {
                                    var n = e[o];
                                    "." === n ? e.splice(o, 1) : ".." === n ? (e.splice(o, 1), r++) : r && (e.splice(o, 1), r--)
                                }
                                if (t)
                                    for (; r--;) e.unshift("..");
                                return e
                            }

                            function i(e, t) {
                                if (e.filter) return e.filter(t);
                                for (var r = [], o = 0; o < e.length; o++) t(e[o], o, e) && r.push(e[o]);
                                return r
                            }
                            c.resolve = function() {
                                for (var e = "", t = !1, r = arguments.length - 1; - 1 <= r && !t; r--) {
                                    var o = 0 <= r ? arguments[r] : n.cwd();
                                    if ("string" != typeof o) throw new TypeError("Arguments to path.resolve must be strings");
                                    o && (e = o + "/" + e, t = "/" === o.charAt(0))
                                }
                                return (t ? "/" : "") + s(i(e.split("/"), function(e) {
                                    return !!e
                                }), !t).join("/") || "."
                            }, c.normalize = function(e) {
                                var t = c.isAbsolute(e),
                                    r = "/" === o(e, -1);
                                return (e = (e = s(i(e.split("/"), function(e) {
                                    return !!e
                                }), !t).join("/")) || t ? e : ".") && r && (e += "/"), (t ? "/" : "") + e
                            }, c.isAbsolute = function(e) {
                                return "/" === e.charAt(0)
                            }, c.join = function() {
                                var e = Array.prototype.slice.call(arguments, 0);
                                return c.normalize(i(e, function(e, t) {
                                    if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings");
                                    return e
                                }).join("/"))
                            }, c.relative = function(e, t) {
                                function r(e) {
                                    for (var t = 0; t < e.length && "" === e[t]; t++);
                                    for (var r = e.length - 1; 0 <= r && "" === e[r]; r--);
                                    return r < t ? [] : e.slice(t, r - t + 1)
                                }
                                e = c.resolve(e).substr(1), t = c.resolve(t).substr(1);
                                for (var o = r(e.split("/")), n = r(t.split("/")), s = Math.min(o.length, n.length), i = s, a = 0; a < s; a++)
                                    if (o[a] !== n[a]) {
                                        i = a;
                                        break
                                    } for (var l = [], a = i; a < o.length; a++) l.push("..");
                                return (l = l.concat(n.slice(i))).join("/")
                            }, c.sep = "/", c.delimiter = ":", c.dirname = function(e) {
                                if ("string" != typeof e && (e += ""), 0 === e.length) return ".";
                                for (var t = 47 === e.charCodeAt(0), r = -1, o = !0, n = e.length - 1; 1 <= n; --n)
                                    if (47 === e.charCodeAt(n)) {
                                        if (!o) {
                                            r = n;
                                            break
                                        }
                                    } else o = !1;
                                return -1 === r ? t ? "/" : "." : t && 1 === r ? "/" : e.slice(0, r)
                            }, c.basename = function(e, t) {
                                return e = (e => {
                                    "string" != typeof e && (e += "");
                                    for (var t = 0, r = -1, o = !0, n = e.length - 1; 0 <= n; --n)
                                        if (47 === e.charCodeAt(n)) {
                                            if (!o) {
                                                t = n + 1;
                                                break
                                            }
                                        } else - 1 === r && (o = !1, r = n + 1);
                                    return -1 === r ? "" : e.slice(t, r)
                                })(e), t && e.substr(-1 * t.length) === t ? e.substr(0, e.length - t.length) : e
                            }, c.extname = function(e) {
                                "string" != typeof e && (e += "");
                                for (var t = -1, r = 0, o = -1, n = !0, s = 0, i = e.length - 1; 0 <= i; --i) {
                                    var a = e.charCodeAt(i);
                                    if (47 === a) {
                                        if (n) continue;
                                        r = i + 1;
                                        break
                                    } - 1 === o && (n = !1, o = i + 1), 46 === a ? -1 === t ? t = i : 1 !== s && (s = 1) : -1 !== t && (s = -1)
                                }
                                return -1 === t || -1 === o || 0 === s || 1 === s && t === o - 1 && t === r + 1 ? "" : e.slice(t, o)
                            };
                            var o = function(e, t, r) {
                                return e.substr(t, r)
                            }
                        }.call(this, e("_process"))
                    }, {
                        _process: 259
                    }],
                    259: [function(e, t, r) {
                        var o, n, t = t.exports = {};

                        function s() {
                            throw new Error("setTimeout has not been defined")
                        }

                        function i() {
                            throw new Error("clearTimeout has not been defined")
                        }
                        try {
                            o = "function" == typeof setTimeout ? setTimeout : s
                        } catch (e) {
                            o = s
                        }
                        try {
                            n = "function" == typeof clearTimeout ? clearTimeout : i
                        } catch (e) {
                            n = i
                        }

                        function a(t) {
                            if (o === setTimeout) return setTimeout(t, 0);
                            if ((o === s || !o) && setTimeout) return (o = setTimeout)(t, 0);
                            try {
                                return o(t, 0)
                            } catch (e) {
                                try {
                                    return o.call(null, t, 0)
                                } catch (e) {
                                    return o.call(this, t, 0)
                                }
                            }
                        }
                        var l, c = [],
                            u = !1,
                            d = -1;

                        function h() {
                            u && l && (u = !1, l.length ? c = l.concat(c) : d = -1, c.length) && f()
                        }

                        function f() {
                            if (!u) {
                                for (var e = a(h), t = (u = !0, c.length); t;) {
                                    for (l = c, c = []; ++d < t;) l && l[d].run();
                                    d = -1, t = c.length
                                }
                                l = null, u = !1,
                                    function(t) {
                                        if (n === clearTimeout) return clearTimeout(t);
                                        if ((n === i || !n) && clearTimeout) return (n = clearTimeout)(t);
                                        try {
                                            n(t)
                                        } catch (e) {
                                            try {
                                                return n.call(null, t)
                                            } catch (e) {
                                                return n.call(this, t)
                                            }
                                        }
                                    }(e)
                            }
                        }

                        function p(e, t) {
                            this.fun = e, this.array = t
                        }

                        function m() {}
                        t.nextTick = function(e) {
                            var t = new Array(arguments.length - 1);
                            if (1 < arguments.length)
                                for (var r = 1; r < arguments.length; r++) t[r - 1] = arguments[r];
                            c.push(new p(e, t)), 1 !== c.length || u || a(f)
                        }, p.prototype.run = function() {
                            this.fun.apply(null, this.array)
                        }, t.title = "browser", t.browser = !0, t.env = {}, t.argv = [], t.version = "", t.versions = {}, t.on = m, t.addListener = m, t.once = m, t.off = m, t.removeListener = m, t.removeAllListeners = m, t.emit = m, t.prependListener = m, t.prependOnceListener = m, t.listeners = function(e) {
                            return []
                        }, t.binding = function(e) {
                            throw new Error("process.binding is not supported")
                        }, t.cwd = function() {
                            return "/"
                        }, t.chdir = function(e) {
                            throw new Error("process.chdir is not supported")
                        }, t.umask = function() {
                            return 0
                        }
                    }, {}],
                    260: [function(e, t, r) {
                        function s(e, t, r, o) {
                            var n, s, i, a, t = t && t.prototype instanceof c ? t : c,
                                t = Object.create(t.prototype),
                                o = new h(o || []);
                            return t._invoke = (n = e, s = r, i = o, a = j, function(e, t) {
                                if (a === T) throw new Error("Generator is already running");
                                if (a === E) {
                                    if ("throw" === e) throw t;
                                    return p()
                                }
                                for (i.method = e, i.arg = t;;) {
                                    var r = i.delegate;
                                    if (r = r && function e(t, r) {
                                            var o = t.iterator[r.method];
                                            if (o === y) {
                                                if (r.delegate = null, "throw" === r.method) {
                                                    if (t.iterator.return && (r.method = "return", r.arg = y, e(t, r), "throw" === r.method)) return k;
                                                    r.method = "throw", r.arg = new TypeError("The iterator does not provide a 'throw' method")
                                                }
                                            } else {
                                                if ("throw" === (o = l(o, t.iterator, r.arg)).type) r.method = "throw", r.arg = o.arg;
                                                else if (o = o.arg) {
                                                    if (!o.done) return o;
                                                    r[t.resultName] = o.value, r.next = t.nextLoc, "return" !== r.method && (r.method = "next", r.arg = y)
                                                } else r.method = "throw", r.arg = new TypeError("iterator result is not an object");
                                                r.delegate = null
                                            }
                                            return k
                                        }(r, i)) {
                                        if (r === k) continue;
                                        return r
                                    }
                                    if ("next" === i.method) i.sent = i._sent = i.arg;
                                    else if ("throw" === i.method) {
                                        if (a === j) throw a = E, i.arg;
                                        i.dispatchException(i.arg)
                                    } else "return" === i.method && i.abrupt("return", i.arg);
                                    if (a = T, "normal" === (r = l(n, s, i)).type) {
                                        if (a = i.done ? E : S, r.arg !== k) return {
                                            value: r.arg,
                                            done: i.done
                                        }
                                    } else "throw" === r.type && (a = E, i.method = "throw", i.arg = r.arg)
                                }
                            }), t
                        }

                        function l(e, t, r) {
                            try {
                                return {
                                    type: "normal",
                                    arg: e.call(t, r)
                                }
                            } catch (e) {
                                return {
                                    type: "throw",
                                    arg: e
                                }
                            }
                        }

                        function c() {}

                        function o() {}

                        function n() {}

                        function i(e) {
                            ["next", "throw", "return"].forEach(function(t) {
                                e[t] = function(e) {
                                    return this._invoke(t, e)
                                }
                            })
                        }

                        function a(i) {
                            var t;
                            this._invoke = function(r, o) {
                                function e() {
                                    return new Promise(function(e, t) {
                                        ! function t(e, r, o, n) {
                                            var s;
                                            return "throw" !== (e = l(i[e], i, r)).type ? (r = (s = e.arg).value) && "object" == typeof r && v.call(r, "__await") ? Promise.resolve(r.__await).then(function(e) {
                                                t("next", e, o, n)
                                            }, function(e) {
                                                t("throw", e, o, n)
                                            }) : Promise.resolve(r).then(function(e) {
                                                s.value = e, o(s)
                                            }, function(e) {
                                                return t("throw", e, o, n)
                                            }) : void n(e.arg)
                                        }(r, o, e, t)
                                    })
                                }
                                return t = t ? t.then(e, e) : e()
                            }
                        }

                        function u(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 d(e) {
                            var t = e.completion || {};
                            t.type = "normal", delete t.arg, e.completion = t
                        }

                        function h(e) {
                            this.tryEntries = [{
                                tryLoc: "root"
                            }], e.forEach(u, this), this.reset(!0)
                        }

                        function f(t) {
                            if (t) {
                                var r, e = t[_];
                                if (e) return e.call(t);
                                if ("function" == typeof t.next) return t;
                                if (!isNaN(t.length)) return r = -1, (e = function e() {
                                    for (; ++r < t.length;)
                                        if (v.call(t, r)) return e.value = t[r], e.done = !1, e;
                                    return e.value = y, e.done = !0, e
                                }).next = e
                            }
                            return {
                                next: p
                            }
                        }

                        function p() {
                            return {
                                value: y,
                                done: !0
                            }
                        }
                        var m, y, g, v, b, _, x, w, j, S, T, E, k, M, O;
                        m = "object" == typeof t ? t.exports : {}, g = Object.prototype, v = g.hasOwnProperty, b = "function" == typeof Symbol ? Symbol : {}, _ = b.iterator || "@@iterator", x = b.asyncIterator || "@@asyncIterator", w = b.toStringTag || "@@toStringTag", m.wrap = s, j = "suspendedStart", S = "suspendedYield", T = "executing", E = "completed", k = {}, (b = {})[_] = function() {
                            return this
                        }, (M = (M = Object.getPrototypeOf) && M(M(f([])))) && M !== g && v.call(M, _) && (b = M), O = n.prototype = c.prototype = Object.create(b), (o.prototype = O.constructor = n).constructor = o, n[w] = o.displayName = "GeneratorFunction", m.isGeneratorFunction = function(e) {
                            return !!(e = "function" == typeof e && e.constructor) && (e === o || "GeneratorFunction" === (e.displayName || e.name))
                        }, m.mark = function(e) {
                            return Object.setPrototypeOf ? Object.setPrototypeOf(e, n) : (e.__proto__ = n, w in e || (e[w] = "GeneratorFunction")), e.prototype = Object.create(O), e
                        }, m.awrap = function(e) {
                            return {
                                __await: e
                            }
                        }, i(a.prototype), a.prototype[x] = function() {
                            return this
                        }, m.AsyncIterator = a, m.async = function(e, t, r, o) {
                            var n = new a(s(e, t, r, o));
                            return m.isGeneratorFunction(t) ? n : n.next().then(function(e) {
                                return e.done ? e.value : n.next()
                            })
                        }, i(O), O[w] = "Generator", O[_] = function() {
                            return this
                        }, O.toString = function() {
                            return "[object Generator]"
                        }, m.keys = function(r) {
                            var e, o = [];
                            for (e in r) o.push(e);
                            return o.reverse(),
                                function e() {
                                    for (; o.length;) {
                                        var t = o.pop();
                                        if (t in r) return e.value = t, e.done = !1, e
                                    }
                                    return e.done = !0, e
                                }
                        }, m.values = f, h.prototype = {
                            constructor: h,
                            reset: function(e) {
                                if (this.prev = 0, this.next = 0, this.sent = this._sent = y, this.done = !1, this.delegate = null, this.method = "next", this.arg = y, this.tryEntries.forEach(d), !e)
                                    for (var t in this) "t" === t.charAt(0) && v.call(this, t) && !isNaN(+t.slice(1)) && (this[t] = y)
                            },
                            stop: function() {
                                this.done = !0;
                                var e = this.tryEntries[0].completion;
                                if ("throw" === e.type) throw e.arg;
                                return this.rval
                            },
                            dispatchException: function(r) {
                                if (this.done) throw r;
                                var o = this;

                                function e(e, t) {
                                    return s.type = "throw", s.arg = r, o.next = e, t && (o.method = "next", o.arg = y), !!t
                                }
                                for (var t = this.tryEntries.length - 1; 0 <= t; --t) {
                                    var n = this.tryEntries[t],
                                        s = n.completion;
                                    if ("root" === n.tryLoc) return e("end");
                                    if (n.tryLoc <= this.prev) {
                                        var i = v.call(n, "catchLoc"),
                                            a = v.call(n, "finallyLoc");
                                        if (i && a) {
                                            if (this.prev < n.catchLoc) return e(n.catchLoc, !0);
                                            if (this.prev < n.finallyLoc) return e(n.finallyLoc)
                                        } else if (i) {
                                            if (this.prev < n.catchLoc) return e(n.catchLoc, !0)
                                        } else {
                                            if (!a) throw new Error("try statement without catch or finally");
                                            if (this.prev < n.finallyLoc) return e(n.finallyLoc)
                                        }
                                    }
                                }
                            },
                            abrupt: function(e, t) {
                                for (var r = this.tryEntries.length - 1; 0 <= r; --r) {
                                    var o = this.tryEntries[r];
                                    if (o.tryLoc <= this.prev && v.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
                                        var n = o;
                                        break
                                    }
                                }
                                var s = (n = n && ("break" === e || "continue" === e) && n.tryLoc <= t && t <= n.finallyLoc ? null : n) ? n.completion : {};
                                return s.type = e, s.arg = t, n ? (this.method = "next", this.next = n.finallyLoc, k) : this.complete(s)
                            },
                            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), k
                            },
                            finish: function(e) {
                                for (var t = this.tryEntries.length - 1; 0 <= t; --t) {
                                    var r = this.tryEntries[t];
                                    if (r.finallyLoc === e) return this.complete(r.completion, r.afterLoc), d(r), k
                                }
                            },
                            catch: function(e) {
                                for (var t = this.tryEntries.length - 1; 0 <= t; --t) {
                                    var r, o, n = this.tryEntries[t];
                                    if (n.tryLoc === e) return "throw" === (r = n.completion).type && (o = r.arg, d(n)), o
                                }
                                throw new Error("illegal catch attempt")
                            },
                            delegateYield: function(e, t, r) {
                                return this.delegate = {
                                    iterator: f(e),
                                    resultName: t,
                                    nextLoc: r
                                }, "next" === this.method && (this.arg = y), k
                            }
                        }, t = m;
                        try {
                            regeneratorRuntime = t
                        } catch (e) {
                            Function("r", "regeneratorRuntime = r")(t)
                        }
                    }, {}],
                    261: [function(e, t, r) {
                        function o(e) {
                            if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e)) throw new TypeError("Invalid character in header field name");
                            return e.toLowerCase()
                        }

                        function n(e) {
                            return "string" != typeof e ? String(e) : e
                        }

                        function s(t) {
                            var e = {
                                next: function() {
                                    var e = t.shift();
                                    return {
                                        done: void 0 === e,
                                        value: e
                                    }
                                }
                            };
                            return g && (e[Symbol.iterator] = function() {
                                return e
                            }), e
                        }

                        function i(t) {
                            this.map = {}, t instanceof i ? t.forEach(function(e, t) {
                                this.append(t, e)
                            }, this) : Array.isArray(t) ? t.forEach(function(e) {
                                this.append(e[0], e[1])
                            }, this) : t && Object.getOwnPropertyNames(t).forEach(function(e) {
                                this.append(e, t[e])
                            }, this)
                        }

                        function a(e) {
                            if (e.bodyUsed) return Promise.reject(new TypeError("Already read"));
                            e.bodyUsed = !0
                        }

                        function l(r) {
                            return new Promise(function(e, t) {
                                r.onload = function() {
                                    e(r.result)
                                }, r.onerror = function() {
                                    t(r.error)
                                }
                            })
                        }

                        function c(e) {
                            var t = new FileReader,
                                r = l(t);
                            return t.readAsArrayBuffer(e), r
                        }

                        function u(e) {
                            var t;
                            return e.slice ? e.slice(0) : ((t = new Uint8Array(e.byteLength)).set(new Uint8Array(e)), t.buffer)
                        }

                        function d() {
                            return this.bodyUsed = !1, this._initBody = function(e) {
                                if (this._bodyInit = e)
                                    if ("string" == typeof e) this._bodyText = e;
                                    else if (v && Blob.prototype.isPrototypeOf(e)) this._bodyBlob = e;
                                else if (b && FormData.prototype.isPrototypeOf(e)) this._bodyFormData = e;
                                else if (y && URLSearchParams.prototype.isPrototypeOf(e)) this._bodyText = e.toString();
                                else if (_ && v && w(e)) this._bodyArrayBuffer = u(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer]);
                                else {
                                    if (!_ || !ArrayBuffer.prototype.isPrototypeOf(e) && !j(e)) throw new Error("unsupported BodyInit type");
                                    this._bodyArrayBuffer = u(e)
                                } else this._bodyText = "";
                                this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : y && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"))
                            }, v && (this.blob = function() {
                                var e = a(this);
                                if (e) return e;
                                if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
                                if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
                                if (this._bodyFormData) throw new Error("could not read FormData body as blob");
                                return Promise.resolve(new Blob([this._bodyText]))
                            }, this.arrayBuffer = function() {
                                return this._bodyArrayBuffer ? a(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(c)
                            }), this.text = function() {
                                var e, t, r = a(this);
                                if (r) return r;
                                if (this._bodyBlob) return r = this._bodyBlob, t = l(e = new FileReader), e.readAsText(r), t;
                                if (this._bodyArrayBuffer) return Promise.resolve((e => {
                                    for (var t = new Uint8Array(e), r = new Array(t.length), o = 0; o < t.length; o++) r[o] = String.fromCharCode(t[o]);
                                    return r.join("")
                                })(this._bodyArrayBuffer));
                                if (this._bodyFormData) throw new Error("could not read FormData body as text");
                                return Promise.resolve(this._bodyText)
                            }, b && (this.formData = function() {
                                return this.text().then(f)
                            }), this.json = function() {
                                return this.text().then(JSON.parse)
                            }, this
                        }

                        function h(e, t) {
                            var r, o = (t = t || {}).body;
                            if (e instanceof h) {
                                if (e.bodyUsed) throw new TypeError("Already read");
                                this.url = e.url, this.credentials = e.credentials, t.headers || (this.headers = new i(e.headers)), this.method = e.method, this.mode = e.mode, o || null == e._bodyInit || (o = e._bodyInit, e.bodyUsed = !0)
                            } else this.url = String(e);
                            if (this.credentials = t.credentials || this.credentials || "omit", !t.headers && this.headers || (this.headers = new i(t.headers)), this.method = (r = (e = t.method || this.method || "GET").toUpperCase(), -1 < S.indexOf(r) ? r : e), this.mode = t.mode || this.mode || null, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && o) throw new TypeError("Body not allowed for GET or HEAD requests");
                            this._initBody(o)
                        }

                        function f(e) {
                            var r = new FormData;
                            return e.trim().split("&").forEach(function(e) {
                                var t;
                                e && (t = (e = e.split("=")).shift().replace(/\+/g, " "), e = e.join("=").replace(/\+/g, " "), r.append(decodeURIComponent(t), decodeURIComponent(e)))
                            }), r
                        }

                        function p(e, t) {
                            t = t || {}, this.type = "default", this.status = void 0 === t.status ? 200 : t.status, this.ok = 200 <= this.status && this.status < 300, this.statusText = "statusText" in t ? t.statusText : "OK", this.headers = new i(t.headers), this.url = t.url || "", this._initBody(e)
                        }
                        var m, y, g, v, b, _, x, w, j, S, T;
                        (m = "undefined" != typeof self ? self : this).fetch || (y = "URLSearchParams" in m, g = "Symbol" in m && "iterator" in Symbol, v = "FileReader" in m && "Blob" in m && (() => {
                            try {
                                return new Blob, !0
                            } catch (e) {
                                return !1
                            }
                        })(), b = "FormData" in m, (_ = "ArrayBuffer" in m) && (x = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"], w = function(e) {
                            return e && DataView.prototype.isPrototypeOf(e)
                        }, j = ArrayBuffer.isView || function(e) {
                            return e && -1 < x.indexOf(Object.prototype.toString.call(e))
                        }), i.prototype.append = function(e, t) {
                            e = o(e), t = n(t);
                            var r = this.map[e];
                            this.map[e] = r ? r + "," + t : t
                        }, i.prototype.delete = function(e) {
                            delete this.map[o(e)]
                        }, i.prototype.get = function(e) {
                            return e = o(e), this.has(e) ? this.map[e] : null
                        }, i.prototype.has = function(e) {
                            return this.map.hasOwnProperty(o(e))
                        }, i.prototype.set = function(e, t) {
                            this.map[o(e)] = n(t)
                        }, i.prototype.forEach = function(e, t) {
                            for (var r in this.map) this.map.hasOwnProperty(r) && e.call(t, this.map[r], r, this)
                        }, i.prototype.keys = function() {
                            var r = [];
                            return this.forEach(function(e, t) {
                                r.push(t)
                            }), s(r)
                        }, i.prototype.values = function() {
                            var t = [];
                            return this.forEach(function(e) {
                                t.push(e)
                            }), s(t)
                        }, i.prototype.entries = function() {
                            var r = [];
                            return this.forEach(function(e, t) {
                                r.push([t, e])
                            }), s(r)
                        }, g && (i.prototype[Symbol.iterator] = i.prototype.entries), S = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"], h.prototype.clone = function() {
                            return new h(this, {
                                body: this._bodyInit
                            })
                        }, d.call(h.prototype), d.call(p.prototype), p.prototype.clone = function() {
                            return new p(this._bodyInit, {
                                status: this.status,
                                statusText: this.statusText,
                                headers: new i(this.headers),
                                url: this.url
                            })
                        }, p.error = function() {
                            var e = new p(null, {
                                status: 0,
                                statusText: ""
                            });
                            return e.type = "error", e
                        }, T = [301, 302, 303, 307, 308], p.redirect = function(e, t) {
                            if (-1 === T.indexOf(t)) throw new RangeError("Invalid status code");
                            return new p(null, {
                                status: t,
                                headers: {
                                    location: e
                                }
                            })
                        }, m.Headers = i, m.Request = h, m.Response = p, m.fetch = function(r, s) {
                            return new Promise(function(o, e) {
                                var t = new h(r, s),
                                    n = new XMLHttpRequest;
                                n.onload = function() {
                                    var r, e = {
                                            status: n.status,
                                            statusText: n.statusText,
                                            headers: (e = n.getAllResponseHeaders() || "", r = new i, e.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach(function(e) {
                                                var t = (e = e.split(":")).shift().trim();
                                                t && (e = e.join(":").trim(), r.append(t, e))
                                            }), r)
                                        },
                                        t = (e.url = "responseURL" in n ? n.responseURL : e.headers.get("X-Request-URL"), "response" in n ? n.response : n.responseText);
                                    o(new p(t, e))
                                }, n.onerror = function() {
                                    e(new TypeError("Network request failed"))
                                }, n.ontimeout = function() {
                                    e(new TypeError("Network request failed"))
                                }, n.open(t.method, t.url, !0), "include" === t.credentials ? n.withCredentials = !0 : "omit" === t.credentials && (n.withCredentials = !1), "responseType" in n && v && (n.responseType = "blob"), t.headers.forEach(function(e, t) {
                                    n.setRequestHeader(t, e)
                                }), n.send(void 0 === t._bodyInit ? null : t._bodyInit)
                            })
                        }, m.fetch.polyfill = !0)
                    }, {}],
                    262: [function(e, t, r) {
                        e("core-js/modules/es.function.name"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.split"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.split"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l, o = n(e("../core/main")),
                            c = n(e("../color/color_conversion"));

                        function n(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }
                        var u = [{
                                h: 0,
                                s: 0,
                                b: .8275,
                                name: "gray"
                            }, {
                                h: 0,
                                s: 0,
                                b: .8627,
                                name: "gray"
                            }, {
                                h: 0,
                                s: 0,
                                b: .7529,
                                name: "gray"
                            }, {
                                h: .0167,
                                s: .1176,
                                b: 1,
                                name: "light pink"
                            }],
                            d = [{
                                h: 0,
                                s: 0,
                                b: 0,
                                name: "black"
                            }, {
                                h: 0,
                                s: 0,
                                b: .5,
                                name: "gray"
                            }, {
                                h: 0,
                                s: 0,
                                b: 1,
                                name: "white"
                            }, {
                                h: 0,
                                s: .5,
                                b: .5,
                                name: "dark maroon"
                            }, {
                                h: 0,
                                s: .5,
                                b: 1,
                                name: "salmon pink"
                            }, {
                                h: 0,
                                s: 1,
                                b: 0,
                                name: "black"
                            }, {
                                h: 0,
                                s: 1,
                                b: .5,
                                name: "dark red"
                            }, {
                                h: 0,
                                s: 1,
                                b: 1,
                                name: "red"
                            }, {
                                h: 5,
                                s: 0,
                                b: 1,
                                name: "very light peach"
                            }, {
                                h: 5,
                                s: .5,
                                b: .5,
                                name: "brown"
                            }, {
                                h: 5,
                                s: .5,
                                b: 1,
                                name: "peach"
                            }, {
                                h: 5,
                                s: 1,
                                b: .5,
                                name: "brick red"
                            }, {
                                h: 5,
                                s: 1,
                                b: 1,
                                name: "crimson"
                            }, {
                                h: 10,
                                s: 0,
                                b: 1,
                                name: "light peach"
                            }, {
                                h: 10,
                                s: .5,
                                b: .5,
                                name: "brown"
                            }, {
                                h: 10,
                                s: .5,
                                b: 1,
                                name: "light orange"
                            }, {
                                h: 10,
                                s: 1,
                                b: .5,
                                name: "brown"
                            }, {
                                h: 10,
                                s: 1,
                                b: 1,
                                name: "orange"
                            }, {
                                h: 15,
                                s: 0,
                                b: 1,
                                name: "very light yellow"
                            }, {
                                h: 15,
                                s: .5,
                                b: .5,
                                name: "olive green"
                            }, {
                                h: 15,
                                s: .5,
                                b: 1,
                                name: "light yellow"
                            }, {
                                h: 15,
                                s: 1,
                                b: 0,
                                name: "dark olive green"
                            }, {
                                h: 15,
                                s: 1,
                                b: .5,
                                name: "olive green"
                            }, {
                                h: 15,
                                s: 1,
                                b: 1,
                                name: "yellow"
                            }, {
                                h: 20,
                                s: 0,
                                b: 1,
                                name: "very light yellow"
                            }, {
                                h: 20,
                                s: .5,
                                b: .5,
                                name: "olive green"
                            }, {
                                h: 20,
                                s: .5,
                                b: 1,
                                name: "light yellow green"
                            }, {
                                h: 20,
                                s: 1,
                                b: 0,
                                name: "dark olive green"
                            }, {
                                h: 20,
                                s: 1,
                                b: .5,
                                name: "dark yellow green"
                            }, {
                                h: 20,
                                s: 1,
                                b: 1,
                                name: "yellow green"
                            }, {
                                h: 25,
                                s: .5,
                                b: .5,
                                name: "dark yellow green"
                            }, {
                                h: 25,
                                s: .5,
                                b: 1,
                                name: "light green"
                            }, {
                                h: 25,
                                s: 1,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 25,
                                s: 1,
                                b: 1,
                                name: "green"
                            }, {
                                h: 30,
                                s: .5,
                                b: 1,
                                name: "light green"
                            }, {
                                h: 30,
                                s: 1,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 30,
                                s: 1,
                                b: 1,
                                name: "green"
                            }, {
                                h: 35,
                                s: 0,
                                b: .5,
                                name: "light green"
                            }, {
                                h: 35,
                                s: 0,
                                b: 1,
                                name: "very light green"
                            }, {
                                h: 35,
                                s: .5,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 35,
                                s: .5,
                                b: 1,
                                name: "light green"
                            }, {
                                h: 35,
                                s: 1,
                                b: 0,
                                name: "very dark green"
                            }, {
                                h: 35,
                                s: 1,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 35,
                                s: 1,
                                b: 1,
                                name: "green"
                            }, {
                                h: 40,
                                s: 0,
                                b: 1,
                                name: "very light green"
                            }, {
                                h: 40,
                                s: .5,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 40,
                                s: .5,
                                b: 1,
                                name: "light green"
                            }, {
                                h: 40,
                                s: 1,
                                b: .5,
                                name: "dark green"
                            }, {
                                h: 40,
                                s: 1,
                                b: 1,
                                name: "green"
                            }, {
                                h: 45,
                                s: .5,
                                b: 1,
                                name: "light turquoise"
                            }, {
                                h: 45,
                                s: 1,
                                b: .5,
                                name: "dark turquoise"
                            }, {
                                h: 45,
                                s: 1,
                                b: 1,
                                name: "turquoise"
                            }, {
                                h: 50,
                                s: 0,
                                b: 1,
                                name: "light sky blue"
                            }, {
                                h: 50,
                                s: .5,
                                b: .5,
                                name: "dark cyan"
                            }, {
                                h: 50,
                                s: .5,
                                b: 1,
                                name: "light cyan"
                            }, {
                                h: 50,
                                s: 1,
                                b: .5,
                                name: "dark cyan"
                            }, {
                                h: 50,
                                s: 1,
                                b: 1,
                                name: "cyan"
                            }, {
                                h: 55,
                                s: 0,
                                b: 1,
                                name: "light sky blue"
                            }, {
                                h: 55,
                                s: .5,
                                b: 1,
                                name: "light sky blue"
                            }, {
                                h: 55,
                                s: 1,
                                b: .5,
                                name: "dark blue"
                            }, {
                                h: 55,
                                s: 1,
                                b: 1,
                                name: "sky blue"
                            }, {
                                h: 60,
                                s: 0,
                                b: .5,
                                name: "gray"
                            }, {
                                h: 60,
                                s: 0,
                                b: 1,
                                name: "very light blue"
                            }, {
                                h: 60,
                                s: .5,
                                b: .5,
                                name: "blue"
                            }, {
                                h: 60,
                                s: .5,
                                b: 1,
                                name: "light blue"
                            }, {
                                h: 60,
                                s: 1,
                                b: .5,
                                name: "navy blue"
                            }, {
                                h: 60,
                                s: 1,
                                b: 1,
                                name: "blue"
                            }, {
                                h: 65,
                                s: 0,
                                b: 1,
                                name: "lavender"
                            }, {
                                h: 65,
                                s: .5,
                                b: .5,
                                name: "navy blue"
                            }, {
                                h: 65,
                                s: .5,
                                b: 1,
                                name: "light purple"
                            }, {
                                h: 65,
                                s: 1,
                                b: .5,
                                name: "dark navy blue"
                            }, {
                                h: 65,
                                s: 1,
                                b: 1,
                                name: "blue"
                            }, {
                                h: 70,
                                s: 0,
                                b: 1,
                                name: "lavender"
                            }, {
                                h: 70,
                                s: .5,
                                b: .5,
                                name: "navy blue"
                            }, {
                                h: 70,
                                s: .5,
                                b: 1,
                                name: "lavender blue"
                            }, {
                                h: 70,
                                s: 1,
                                b: .5,
                                name: "dark navy blue"
                            }, {
                                h: 70,
                                s: 1,
                                b: 1,
                                name: "blue"
                            }, {
                                h: 75,
                                s: .5,
                                b: 1,
                                name: "lavender"
                            }, {
                                h: 75,
                                s: 1,
                                b: .5,
                                name: "dark purple"
                            }, {
                                h: 75,
                                s: 1,
                                b: 1,
                                name: "purple"
                            }, {
                                h: 80,
                                s: .5,
                                b: 1,
                                name: "pinkish purple"
                            }, {
                                h: 80,
                                s: 1,
                                b: .5,
                                name: "dark purple"
                            }, {
                                h: 80,
                                s: 1,
                                b: 1,
                                name: "purple"
                            }, {
                                h: 85,
                                s: 0,
                                b: 1,
                                name: "light pink"
                            }, {
                                h: 85,
                                s: .5,
                                b: .5,
                                name: "purple"
                            }, {
                                h: 85,
                                s: .5,
                                b: 1,
                                name: "light fuchsia"
                            }, {
                                h: 85,
                                s: 1,
                                b: .5,
                                name: "dark fuchsia"
                            }, {
                                h: 85,
                                s: 1,
                                b: 1,
                                name: "fuchsia"
                            }, {
                                h: 90,
                                s: .5,
                                b: .5,
                                name: "dark fuchsia"
                            }, {
                                h: 90,
                                s: .5,
                                b: 1,
                                name: "hot pink"
                            }, {
                                h: 90,
                                s: 1,
                                b: .5,
                                name: "dark fuchsia"
                            }, {
                                h: 90,
                                s: 1,
                                b: 1,
                                name: "fuchsia"
                            }, {
                                h: 95,
                                s: 0,
                                b: 1,
                                name: "pink"
                            }, {
                                h: 95,
                                s: .5,
                                b: 1,
                                name: "light pink"
                            }, {
                                h: 95,
                                s: 1,
                                b: .5,
                                name: "dark magenta"
                            }, {
                                h: 95,
                                s: 1,
                                b: 1,
                                name: "magenta"
                            }];
                        o.default.prototype._rgbColorName = function(e) {
                            var t, r, e = c.default._rgbaToHSBA(e),
                                o = [(l = e)[0], e[1], e[2]];
                            0 !== o[0] && (o[0] = Math.round(100 * o[0]), (e = o[0].toString().split(""))[r = e.length - 1] = parseInt(e[r]), e[r] < 2.5 ? e[r] = 0 : 2.5 <= e[r] && e[r] < 7.5 && (e[r] = 5), 2 === e.length ? (e[0] = parseInt(e[0]), 7.5 <= e[r] && (e[r] = 0, e[0] = e[0] + 1), o[0] = 10 * e[0] + e[1]) : 7.5 <= e[r] ? o[0] = 10 : o[0] = e[r]), o[2] = o[2] / 255;
                            for (var n = o.length - 1; 1 <= n; n--) o[n] = o[n] <= .25 ? 0 : .25 < o[n] && o[n] < .75 ? .5 : 1;
                            if (0 === o[0] && 0 === o[1] && 1 === o[2]) {
                                for (var s = 2; 0 <= s; s--) l[s] = Math.round(1e4 * l[s]) / 1e4;
                                for (var i = 0; i < u.length; i++) {
                                    if (u[i].h === l[0] && u[i].s === l[1] && u[i].b === l[2]) {
                                        t = u[i].name;
                                        break
                                    }
                                    t = "white"
                                }
                            } else
                                for (var a = 0; a < d.length; a++)
                                    if (d[a].h === o[0] && d[a].s === o[1] && d[a].b === o[2]) {
                                        t = d[a].name;
                                        break
                                    } return t
                        }, e = o.default, r.default = e
                    }, {
                        "../color/color_conversion": 268,
                        "../core/main": 283,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.split": 206
                    }],
                    263: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.ends-with"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.ends-with"), e("core-js/modules/es.string.replace"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var s = (e = e("../core/main")) && e.__esModule ? e : {
                                default: e
                            },
                            i = "_Description",
                            a = "_fallbackDesc",
                            l = "_fallbackTable",
                            c = "_Label",
                            u = "_labelDesc",
                            d = "_labelTable";

                        function h(e) {
                            if ("label" === e || "fallback" === e) throw new Error("description should not be LABEL or FALLBACK");
                            return e.endsWith(".") || e.endsWith(";") || e.endsWith(",") || e.endsWith("?") || e.endsWith("!") || (e += "."), e
                        }
                        s.default.prototype.describe = function(e, t) {
                            var r;
                            s.default._validateParameters("describe", arguments), "string" == typeof e && (r = this.canvas.id, e = h(e), this.dummyDOM || (this.dummyDOM = document.getElementById(r).parentNode), this.descriptions || (this.descriptions = {}), this.descriptions.fallback ? this.descriptions.fallback.innerHTML !== e && (this.descriptions.fallback.innerHTML = e) : this._describeHTML("fallback", e), t === this.LABEL) && (this.descriptions.label ? this.descriptions.label.innerHTML !== e && (this.descriptions.label.innerHTML = e) : this._describeHTML("label", e))
                        }, s.default.prototype.describeElement = function(e, t, r) {
                            var o, n;
                            s.default._validateParameters("describeElement", arguments), "string" == typeof t && "string" == typeof e && (o = this.canvas.id, t = h(t), n = (e => {
                                if ("label" === e || "fallback" === e) throw new Error("element name should not be LABEL or FALLBACK");
                                return e.endsWith(".") || e.endsWith(";") || e.endsWith(",") ? e = e.replace(/.$/, ":") : e.endsWith(":") || (e += ":"), e
                            })(e), e = e.replace(/[^a-zA-Z0-9]/g, ""), n = '<th scope="row">'.concat(n, "</th><td>").concat(t, "</td>"), this.dummyDOM || (this.dummyDOM = document.getElementById(o).parentNode), this.descriptions ? this.descriptions.fallbackElements || (this.descriptions.fallbackElements = {}) : this.descriptions = {
                                fallbackElements: {}
                            }, this.descriptions.fallbackElements[e] ? this.descriptions.fallbackElements[e].innerHTML !== n && (this.descriptions.fallbackElements[e].innerHTML = n) : this._describeElementHTML("fallback", e, n), r === this.LABEL) && (this.descriptions.labelElements || (this.descriptions.labelElements = {}), this.descriptions.labelElements[e] ? this.descriptions.labelElements[e].innerHTML !== n && (this.descriptions.labelElements[e].innerHTML = n) : this._describeElementHTML("label", e, n))
                        }, s.default.prototype._describeHTML = function(e, t) {
                            var r, o = this.canvas.id;
                            "fallback" === e ? (this.dummyDOM.querySelector("#".concat(o + i)) ? this.dummyDOM.querySelector("#" + o + l).insertAdjacentHTML("beforebegin", '<p id="'.concat(o + a, '"></p>')) : (r = '<div id="'.concat(o).concat(i, '" role="region" aria-label="Canvas Description"><p id="').concat(o).concat(a, '"></p></div>'), this.dummyDOM.querySelector("#".concat(o, "accessibleOutput")) ? this.dummyDOM.querySelector("#".concat(o, "accessibleOutput")).insertAdjacentHTML("beforebegin", r) : this.dummyDOM.querySelector("#".concat(o)).innerHTML = r), this.descriptions.fallback = this.dummyDOM.querySelector("#".concat(o).concat(a)), this.descriptions.fallback.innerHTML = t) : "label" === e && (this.dummyDOM.querySelector("#".concat(o + c)) ? this.dummyDOM.querySelector("#".concat(o + d)) && this.dummyDOM.querySelector("#".concat(o + d)).insertAdjacentHTML("beforebegin", '<p id="'.concat(o).concat(u, '"></p>')) : (r = '<div id="'.concat(o).concat(c, '" class="p5Label"><p id="').concat(o).concat(u, '"></p></div>'), this.dummyDOM.querySelector("#".concat(o, "accessibleOutputLabel")) ? this.dummyDOM.querySelector("#".concat(o, "accessibleOutputLabel")).insertAdjacentHTML("beforebegin", r) : this.dummyDOM.querySelector("#" + o).insertAdjacentHTML("afterend", r)), this.descriptions.label = this.dummyDOM.querySelector("#" + o + u), this.descriptions.label.innerHTML = t)
                        }, s.default.prototype._describeElementHTML = function(e, t, r) {
                            var o, n = this.canvas.id;
                            "fallback" === e ? (this.dummyDOM.querySelector("#".concat(n + i)) ? this.dummyDOM.querySelector("#" + n + l) || this.dummyDOM.querySelector("#" + n + a).insertAdjacentHTML("afterend", '<table id="'.concat(n).concat(l, '"><caption>Canvas elements and their descriptions</caption></table>')) : (o = '<div id="'.concat(n).concat(i, '" role="region" aria-label="Canvas Description"><table id="').concat(n).concat(l, '"><caption>Canvas elements and their descriptions</caption></table></div>'), this.dummyDOM.querySelector("#".concat(n, "accessibleOutput")) ? this.dummyDOM.querySelector("#".concat(n, "accessibleOutput")).insertAdjacentHTML("beforebegin", o) : this.dummyDOM.querySelector("#" + n).innerHTML = o), (o = document.createElement("tr")).id = n + "_fte_" + t, this.dummyDOM.querySelector("#" + n + l).appendChild(o), this.descriptions.fallbackElements[t] = this.dummyDOM.querySelector("#".concat(n).concat("_fte_").concat(t)), this.descriptions.fallbackElements[t].innerHTML = r) : "label" === e && (this.dummyDOM.querySelector("#".concat(n + c)) ? this.dummyDOM.querySelector("#".concat(n + d)) || this.dummyDOM.querySelector("#" + n + u).insertAdjacentHTML("afterend", '<table id="'.concat(n + d, '"></table>')) : (o = '<div id="'.concat(n).concat(c, '" class="p5Label"><table id="').concat(n).concat(d, '"></table></div>'), this.dummyDOM.querySelector("#".concat(n, "accessibleOutputLabel")) ? this.dummyDOM.querySelector("#".concat(n, "accessibleOutputLabel")).insertAdjacentHTML("beforebegin", o) : this.dummyDOM.querySelector("#" + n).insertAdjacentHTML("afterend", o)), (e = document.createElement("tr")).id = n + "_lte_" + t, this.dummyDOM.querySelector("#" + n + d).appendChild(e), this.descriptions.labelElements[t] = this.dummyDOM.querySelector("#".concat(n).concat("_lte_").concat(t)), this.descriptions.labelElements[t].innerHTML = r)
                        }, r.default = e = s.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.ends-with": 198,
                        "core-js/modules/es.string.replace": 204
                    }],
                    264: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.map"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.map"), e("core-js/modules/es.string.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype._updateGridOutput = function(e) {
                            var t, r, o, n, s, i;
                            this.dummyDOM.querySelector("#".concat(e, "_summary")) && (t = this._accessibleOutputs[e], o = (r = ((e, t) => {
                                var r, o = "",
                                    n = "",
                                    s = 0;
                                for (r in t) {
                                    var i, a = 0;
                                    for (i in t[r]) {
                                        var l = '<li id="'.concat(e, "shape").concat(s, '">').concat(t[r][i].color, " ").concat(r, ",");
                                        "line" === r ? l += " location = ".concat(t[r][i].pos, ", length = ").concat(t[r][i].length, " pixels") : (l += " location = ".concat(t[r][i].pos), "point" !== r && (l += ", area = ".concat(t[r][i].area, " %")), l += "</li>"), o += l, a++, s++
                                    }
                                    n = 1 < a ? "".concat(n, " ").concat(a, " ").concat(r, "s") : "".concat(n, " ").concat(a, " ").concat(r)
                                }
                                return {
                                    numShapes: [s, n],
                                    details: o
                                }
                            })(e, this.ingredients.shapes)).numShapes, n = this.ingredients.colors.background, s = this.width, i = this.height, n = "".concat(n, " canvas, ").concat(s, " by ").concat(i, " pixels, contains ").concat(o[0]), s = (1 === o[0] ? "".concat(n, " shape: ") : "".concat(n, " shapes: ")).concat(o[1]), i = ((e, t) => {
                                var r, o, n = 0,
                                    s = "",
                                    i = Array.from(Array(10), function() {
                                        return Array(10)
                                    });
                                for (r in t)
                                    for (var a in t[r]) {
                                        var l = "line" !== r ? '<a href="#'.concat(e, "shape").concat(n, '">').concat(t[r][a].color, " ").concat(r, "</a>") : '<a href="#'.concat(e, "shape").concat(n, '">').concat(t[r][a].color, " ").concat(r, " midpoint</a>");
                                        t[r][a].loc.locY < i.length && t[r][a].loc.locX < i[t[r][a].loc.locY].length && (i[t[r][a].loc.locY][t[r][a].loc.locX] ? i[t[r][a].loc.locY][t[r][a].loc.locX] = i[t[r][a].loc.locY][t[r][a].loc.locX] + "  " + l : i[t[r][a].loc.locY][t[r][a].loc.locX] = l, n++)
                                    }
                                for (o in i) {
                                    var c, u = "<tr>";
                                    for (c in i[o]) u += "<td>", void 0 !== i[o][c] && (u += i[o][c]), u += "</td>";
                                    s = s + u + "</tr>"
                                }
                                return s
                            })(e, this.ingredients.shapes), s !== t.summary.innerHTML && (t.summary.innerHTML = s), i !== t.map.innerHTML && (t.map.innerHTML = i), r.details !== t.shapeDetails.innerHTML && (t.shapeDetails.innerHTML = r.details), this._accessibleOutputs[e] = t)
                        }, r.default = e = e.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.string.iterator": 200
                    }],
                    265: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.map"), e("core-js/modules/es.number.to-fixed"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function l(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function c(e, t, r) {
                            return 10 === (t = Math.floor(e[0] / t * 10)) && --t, 10 === (e = Math.floor(e[1] / r * 10)) && --e, {
                                locX: t,
                                locY: e
                            }
                        }
                        o.default.prototype.textOutput = function(e) {
                            o.default._validateParameters("textOutput", arguments), this._accessibleOutputs.text || (this._accessibleOutputs.text = !0, this._createOutput("textOutput", "Fallback"), e === this.LABEL && (this._accessibleOutputs.textLabel = !0, this._createOutput("textOutput", "Label")))
                        }, o.default.prototype.gridOutput = function(e) {
                            o.default._validateParameters("gridOutput", arguments), this._accessibleOutputs.grid || (this._accessibleOutputs.grid = !0, this._createOutput("gridOutput", "Fallback"), e === this.LABEL && (this._accessibleOutputs.gridLabel = !0, this._createOutput("gridOutput", "Label")))
                        }, o.default.prototype._addAccsOutput = function() {
                            return this._accessibleOutputs || (this._accessibleOutputs = {
                                text: !1,
                                grid: !1,
                                textLabel: !1,
                                gridLabel: !1
                            }), this._accessibleOutputs.grid || this._accessibleOutputs.text
                        }, o.default.prototype._createOutput = function(e, t) {
                            var r, o, n, s = this.canvas.id,
                                i = (this.ingredients || (this.ingredients = {
                                    shapes: {},
                                    colors: {
                                        background: "white",
                                        fill: "white",
                                        stroke: "black"
                                    },
                                    pShapes: "",
                                    pBackground: ""
                                }), this.dummyDOM || (this.dummyDOM = document.getElementById(s).parentNode), "");
                            "Fallback" === t ? (r = s + e, this.dummyDOM.querySelector("#".concat(o = s + "accessibleOutput")) || (this.dummyDOM.querySelector("#".concat(s, "_Description")) ? this.dummyDOM.querySelector("#".concat(s, "_Description")).insertAdjacentHTML("afterend", '<div id="'.concat(o, '" role="region" aria-label="Canvas Outputs"></div>')) : this.dummyDOM.querySelector("#".concat(s)).innerHTML = '<div id="'.concat(o, '" role="region" aria-label="Canvas Outputs"></div>'))) : "Label" === t && (r = s + e + (i = t), this.dummyDOM.querySelector("#".concat(o = s + "accessibleOutput" + t)) || (this.dummyDOM.querySelector("#".concat(s, "_Label")) ? this.dummyDOM.querySelector("#".concat(s, "_Label")) : this.dummyDOM.querySelector("#".concat(s))).insertAdjacentHTML("afterend", '<div id="'.concat(o, '"></div>'))), this._accessibleOutputs[r] = {}, "textOutput" === e ? (i = "#".concat(s, "gridOutput").concat(i), n = '<div id="'.concat(r, '">Text Output<div id="').concat(r, 'Summary" aria-label="text output summary"><p id="').concat(r, '_summary"></p><ul id="').concat(r, '_list"></ul></div><table id="').concat(r, '_shapeDetails" summary="text output shape details"></table></div>'), this.dummyDOM.querySelector(i) ? this.dummyDOM.querySelector(i).insertAdjacentHTML("beforebegin", n) : this.dummyDOM.querySelector("#".concat(o)).innerHTML = n, this._accessibleOutputs[r].list = this.dummyDOM.querySelector("#".concat(r, "_list"))) : "gridOutput" === e && (i = "#".concat(s, "textOutput").concat(i), n = '<div id="'.concat(r, '">Grid Output<p id="').concat(r, '_summary" aria-label="grid output summary"><table id="').concat(r, '_map" summary="grid output content"></table><ul id="').concat(r, '_shapeDetails" aria-label="grid output shape details"></ul></div>'), this.dummyDOM.querySelector(i) ? this.dummyDOM.querySelector(i).insertAdjacentHTML("afterend", n) : this.dummyDOM.querySelector("#".concat(o)).innerHTML = n, this._accessibleOutputs[r].map = this.dummyDOM.querySelector("#".concat(r, "_map"))), this._accessibleOutputs[r].shapeDetails = this.dummyDOM.querySelector("#".concat(r, "_shapeDetails")), this._accessibleOutputs[r].summary = this.dummyDOM.querySelector("#".concat(r, "_summary"))
                        }, o.default.prototype._updateAccsOutput = function() {
                            var e = this.canvas.id;
                            JSON.stringify(this.ingredients.shapes) === this.ingredients.pShapes && this.ingredients.colors.background === this.ingredients.pBackground || (this.ingredients.pShapes = JSON.stringify(this.ingredients.shapes), this._accessibleOutputs.text && this._updateTextOutput(e + "textOutput"), this._accessibleOutputs.grid && this._updateGridOutput(e + "gridOutput"), this._accessibleOutputs.textLabel && this._updateTextOutput(e + "textOutputLabel"), this._accessibleOutputs.gridLabel && this._updateGridOutput(e + "gridOutputLabel"))
                        }, o.default.prototype._accsBackground = function(e) {
                            this.ingredients.pShapes = JSON.stringify(this.ingredients.shapes), this.ingredients.pBackground = this.ingredients.colors.background, this.ingredients.shapes = {}, this.ingredients.colors.backgroundRGBA !== e && (this.ingredients.colors.backgroundRGBA = e, this.ingredients.colors.background = this._rgbColorName(e))
                        }, o.default.prototype._accsCanvasColors = function(e, t) {
                            "fill" === e ? this.ingredients.colors.fillRGBA !== t && (this.ingredients.colors.fillRGBA = t, this.ingredients.colors.fill = this._rgbColorName(t)) : "stroke" === e && this.ingredients.colors.strokeRGBA !== t && (this.ingredients.colors.strokeRGBA = t, this.ingredients.colors.stroke = this._rgbColorName(t))
                        }, o.default.prototype._accsOutput = function(e, t) {
                            "ellipse" === e && t[2] === t[3] ? e = "circle" : "rectangle" === e && t[2] === t[3] && (e = "square");
                            var r, o, n = {},
                                s = !0,
                                i = (i = t, r = "rectangle" === (r = e) || "ellipse" === r || "arc" === r || "circle" === r || "square" === r ? (o = Math.round(i[0] + i[2] / 2), Math.round(i[1] + i[3] / 2)) : "triangle" === r ? (o = (i[0] + i[2] + i[4]) / 3, (i[1] + i[3] + i[5]) / 3) : "quadrilateral" === r ? (o = (i[0] + i[2] + i[4] + i[6]) / 4, (i[1] + i[3] + i[5] + i[7]) / 4) : "line" === r ? (o = (i[0] + i[2]) / 2, (i[1] + i[3]) / 2) : (o = i[0], i[1]), [o, r]);
                            if ("line" === e ? (n.color = this.ingredients.colors.stroke, n.length = Math.round(this.dist(t[0], t[1], t[2], t[3])), o = this._getPos(t[0], [1]), r = this._getPos(t[2], [3]), n.loc = c(i, this.width, this.height), n.pos = o === r ? "at ".concat(o) : "from ".concat(o, " to ").concat(r)) : ("point" === e ? n.color = this.ingredients.colors.stroke : (n.color = this.ingredients.colors.fill, n.area = this._getArea(e, t)), n.pos = this._getPos.apply(this, l(i)), n.loc = c(i, this.width, this.height)), this.ingredients.shapes[e]) {
                                if (this.ingredients.shapes[e] !== [n]) {
                                    for (var a in this.ingredients.shapes[e]) JSON.stringify(this.ingredients.shapes[e][a]) === JSON.stringify(n) && (s = !1);
                                    !0 === s && this.ingredients.shapes[e].push(n)
                                }
                            } else this.ingredients.shapes[e] = [n]
                        }, o.default.prototype._getPos = function(e, t) {
                            var e = new DOMPointReadOnly(e, t),
                                t = this._renderer.isP3D ? new DOMMatrix(this._renderer.uMVMatrix.mat4) : this.drawingContext.getTransform(),
                                t = (e = e.matrixTransform(t)).x,
                                e = e.y,
                                r = this.width * this._pixelDensity,
                                o = this.height * this._pixelDensity;
                            return t < .4 * r ? e < .4 * o ? "top left" : .6 * o < e ? "bottom left" : "mid left" : .6 * r < t ? e < .4 * o ? "top right" : .6 * o < e ? "bottom right" : "mid right" : e < .4 * o ? "top middle" : .6 * o < e ? "bottom middle" : "middle"
                        }, o.default.prototype._getArea = function(e, t) {
                            var r, o, n = 0,
                                s = ("arc" === e ? (n = (r = ((t[5] - t[4]) % (2 * Math.PI) + 2 * Math.PI) % (2 * Math.PI)) * t[2] * t[3] / 8, "open" !== t[6] && "chord" !== t[6] || (o = t[0], c = t[1], s = t[0] + t[2] / 2 * Math.cos(t[4]).toFixed(2), u = t[1] + t[3] / 2 * Math.sin(t[4]).toFixed(2), a = t[0] + t[2] / 2 * Math.cos(t[5]).toFixed(2), i = t[1] + t[3] / 2 * Math.sin(t[5]).toFixed(2), o = Math.abs(o * (u - i) + s * (i - c) + a * (c - u)) / 2, r > Math.PI ? n += o : n -= o)) : "ellipse" === e || "circle" === e ? n = 3.14 * t[2] / 2 * t[3] / 2 : "line" === e || "point" === e ? n = 0 : "quadrilateral" === e ? n = Math.abs((t[6] + t[0]) * (t[7] - t[1]) + (t[0] + t[2]) * (t[1] - t[3]) + (t[2] + t[4]) * (t[3] - t[5]) + (t[4] + t[6]) * (t[5] - t[7])) / 2 : "rectangle" === e || "square" === e ? n = t[2] * t[3] : "triangle" === e && (n = Math.abs(t[0] * (t[3] - t[5]) + t[2] * (t[5] - t[1]) + t[4] * (t[1] - t[3])) / 2), this.width * this._pixelDensity),
                                i = this.height * this._pixelDensity,
                                a = [new DOMPoint(0, 0), new DOMPoint(s, 0), new DOMPoint(s, i), new DOMPoint(0, i)],
                                l = (this._renderer.isP3D ? new DOMMatrix(this._renderer.uMVMatrix.mat4) : this.drawingContext.getTransform()).inverse(),
                                c = a.map(function(e) {
                                    return e.matrixTransform(l)
                                }),
                                u = Math.abs((c[3].x + c[0].x) * (c[3].y - c[0].y) + (c[0].x + c[1].x) * (c[0].y - c[1].y) + (c[1].x + c[2].x) * (c[1].y - c[2].y) + (c[2].x + c[3].x) * (c[2].y - c[3].y)) / 2;
                            return Math.round(100 * n / u)
                        }, r.default = e = o.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.number.to-fixed": 182,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    266: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.concat"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype._updateTextOutput = function(e) {
                            var t, r, o, n, s, i;
                            this.dummyDOM.querySelector("#".concat(e, "_summary")) && (t = this._accessibleOutputs[e], o = (r = ((e, t) => {
                                var r, o = "",
                                    n = 0;
                                for (r in t)
                                    for (var s in t[r]) {
                                        var i = '<li><a href="#'.concat(e, "shape").concat(n, '">').concat(t[r][s].color, " ").concat(r, "</a>");
                                        "line" === r ? i += ", ".concat(t[r][s].pos, ", ").concat(t[r][s].length, " pixels long.</li>") : (i += ", at ".concat(t[r][s].pos), "point" !== r && (i += ", covering ".concat(t[r][s].area, "% of the canvas")), i += ".</li>"), o += i, n++
                                    }
                                return {
                                    numShapes: n,
                                    listShapes: o
                                }
                            })(e, this.ingredients.shapes)).numShapes, n = this.ingredients.colors.background, s = this.width, i = this.height, s = "Your output is a, ".concat(s, " by ").concat(i, " pixels, ").concat(n, " canvas containing the following"), i = 1 === o ? "".concat(s, " shape:") : "".concat(s, " ").concat(o, " shapes:"), n = ((e, t) => {
                                var r, o = "",
                                    n = 0;
                                for (r in t)
                                    for (var s in t[r]) {
                                        var i = '<tr id="'.concat(e, "shape").concat(n, '"><th>').concat(t[r][s].color, " ").concat(r, "</th>");
                                        "line" === r ? i += "<td>location = ".concat(t[r][s].pos, "</td><td>length = ").concat(t[r][s].length, " pixels</td></tr>") : (i += "<td>location = ".concat(t[r][s].pos, "</td>"), "point" !== r && (i += "<td> area = ".concat(t[r][s].area, "%</td>")), i += "</tr>"), o += i, n++
                                    }
                                return o
                            })(e, this.ingredients.shapes), i !== t.summary.innerHTML && (t.summary.innerHTML = i), r.listShapes !== t.list.innerHTML && (t.list.innerHTML = r.listShapes), n !== t.shapeDetails.innerHTML && (t.shapeDetails.innerHTML = n), this._accessibleOutputs[e] = t)
                        }, r.default = e = e.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153
                    }],
                    267: [function(e, t, r) {
                        var o = (o = e("./core/main")) && o.__esModule ? o : {
                            default: o
                        };
                        e("./core/constants"), e("./core/environment"), e("./core/friendly_errors/stacktrace"), e("./core/friendly_errors/validate_params"), e("./core/friendly_errors/file_errors"), e("./core/friendly_errors/fes_core"), e("./core/friendly_errors/sketch_reader"), e("./core/helpers"), e("./core/legacy"), e("./core/preload"), e("./core/p5.Element"), e("./core/p5.Graphics"), e("./core/p5.Renderer"), e("./core/p5.Renderer2D"), e("./core/rendering"), e("./core/shim"), e("./core/structure"), e("./core/transform"), e("./core/shape/2d_primitives"), e("./core/shape/attributes"), e("./core/shape/curves"), e("./core/shape/vertex"), e("./accessibility/outputs"), e("./accessibility/textOutput"), e("./accessibility/gridOutput"), e("./accessibility/color_namer"), e("./color/color_conversion"), e("./color/creating_reading"), e("./color/p5.Color"), e("./color/setting"), e("./data/p5.TypedDict"), e("./data/local_storage.js"), e("./dom/dom"), e("./accessibility/describe"), e("./events/acceleration"), e("./events/keyboard"), e("./events/mouse"), e("./events/touch"), e("./image/filters"), e("./image/image"), e("./image/loading_displaying"), e("./image/p5.Image"), e("./image/pixels"), e("./io/files"), e("./io/p5.Table"), e("./io/p5.TableRow"), e("./io/p5.XML"), e("./math/calculation"), e("./math/math"), e("./math/noise"), e("./math/p5.Vector"), e("./math/random"), e("./math/trigonometry"), e("./typography/attributes"), e("./typography/loading_displaying"), e("./typography/p5.Font"), e("./utilities/array_functions"), e("./utilities/conversion"), e("./utilities/string_functions"), e("./utilities/time_date"), e("./webgl/3d_primitives"), e("./webgl/interaction"), e("./webgl/light"), e("./webgl/loading"), e("./webgl/material"), e("./webgl/p5.Camera"), e("./webgl/p5.DataArray"), e("./webgl/p5.Geometry"), e("./webgl/p5.Matrix"), e("./webgl/p5.Quat"), e("./webgl/p5.RendererGL.Immediate"), e("./webgl/p5.RendererGL"), e("./webgl/p5.RendererGL.Retained"), e("./webgl/p5.Framebuffer"), e("./webgl/p5.Shader"), e("./webgl/p5.RenderBuffer"), e("./webgl/p5.Texture"), e("./webgl/text"), e("./core/init"), t.exports = o.default
                    }, {
                        "./accessibility/color_namer": 262,
                        "./accessibility/describe": 263,
                        "./accessibility/gridOutput": 264,
                        "./accessibility/outputs": 265,
                        "./accessibility/textOutput": 266,
                        "./color/color_conversion": 268,
                        "./color/creating_reading": 269,
                        "./color/p5.Color": 270,
                        "./color/setting": 271,
                        "./core/constants": 272,
                        "./core/environment": 273,
                        "./core/friendly_errors/fes_core": 274,
                        "./core/friendly_errors/file_errors": 275,
                        "./core/friendly_errors/sketch_reader": 276,
                        "./core/friendly_errors/stacktrace": 277,
                        "./core/friendly_errors/validate_params": 278,
                        "./core/helpers": 279,
                        "./core/init": 280,
                        "./core/legacy": 282,
                        "./core/main": 283,
                        "./core/p5.Element": 284,
                        "./core/p5.Graphics": 285,
                        "./core/p5.Renderer": 286,
                        "./core/p5.Renderer2D": 287,
                        "./core/preload": 288,
                        "./core/rendering": 289,
                        "./core/shape/2d_primitives": 290,
                        "./core/shape/attributes": 291,
                        "./core/shape/curves": 292,
                        "./core/shape/vertex": 293,
                        "./core/shim": 294,
                        "./core/structure": 295,
                        "./core/transform": 296,
                        "./data/local_storage.js": 297,
                        "./data/p5.TypedDict": 298,
                        "./dom/dom": 299,
                        "./events/acceleration": 300,
                        "./events/keyboard": 301,
                        "./events/mouse": 302,
                        "./events/touch": 303,
                        "./image/filters": 304,
                        "./image/image": 305,
                        "./image/loading_displaying": 306,
                        "./image/p5.Image": 307,
                        "./image/pixels": 308,
                        "./io/files": 309,
                        "./io/p5.Table": 310,
                        "./io/p5.TableRow": 311,
                        "./io/p5.XML": 312,
                        "./math/calculation": 313,
                        "./math/math": 314,
                        "./math/noise": 315,
                        "./math/p5.Vector": 316,
                        "./math/random": 317,
                        "./math/trigonometry": 318,
                        "./typography/attributes": 319,
                        "./typography/loading_displaying": 320,
                        "./typography/p5.Font": 321,
                        "./utilities/array_functions": 322,
                        "./utilities/conversion": 323,
                        "./utilities/string_functions": 324,
                        "./utilities/time_date": 325,
                        "./webgl/3d_primitives": 326,
                        "./webgl/interaction": 328,
                        "./webgl/light": 329,
                        "./webgl/loading": 330,
                        "./webgl/material": 331,
                        "./webgl/p5.Camera": 332,
                        "./webgl/p5.DataArray": 333,
                        "./webgl/p5.Framebuffer": 334,
                        "./webgl/p5.Geometry": 335,
                        "./webgl/p5.Matrix": 336,
                        "./webgl/p5.Quat": 337,
                        "./webgl/p5.RenderBuffer": 338,
                        "./webgl/p5.RendererGL": 341,
                        "./webgl/p5.RendererGL.Immediate": 339,
                        "./webgl/p5.RendererGL.Retained": 340,
                        "./webgl/p5.Shader": 342,
                        "./webgl/p5.Texture": 343,
                        "./webgl/text": 344
                    }],
                    268: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.ColorConversion = {
                            _hsbaToHSLA: function(e) {
                                var t = e[0],
                                    r = e[1],
                                    o = e[2],
                                    n = (2 - r) * o / 2;
                                return 0 != n && (1 == n ? r = 0 : n < .5 ? r /= 2 - r : r = r * o / (2 - 2 * n)), [t, r, n, e[3]]
                            },
                            _hsbaToRGBA: function(e) {
                                var t, r, o, n, s, i = 6 * e[0],
                                    a = e[1],
                                    l = e[2];
                                return 0 === a ? [l, l, l, e[3]] : (r = l * (1 - a), o = l * (1 - a * (i - (t = Math.floor(i)))), a = l * (1 - a * (1 + t - i)), i = 1 === t ? (n = o, s = l, r) : 2 === t ? (n = r, s = l, a) : 3 === t ? (n = r, s = o, l) : 4 === t ? (n = a, s = r, l) : 5 === t ? (n = l, s = r, o) : (n = l, s = a, r), [n, s, i, e[3]])
                            },
                            _hslaToHSBA: function(e) {
                                var t = e[0],
                                    r = e[1],
                                    o = e[2],
                                    r = o < .5 ? (1 + r) * o : o + r - o * r;
                                return [t, 2 * (r - o) / r, r, e[3]]
                            },
                            _hslaToRGBA: function(e) {
                                var t, r = 6 * e[0],
                                    o = e[1],
                                    n = e[2];
                                return 0 === o ? [n, n, n, e[3]] : [(t = function(e, t, r) {
                                    return e < 0 ? e += 6 : 6 <= e && (e -= 6), e < 1 ? t + (r - t) * e : e < 3 ? r : e < 4 ? t + (r - t) * (4 - e) : t
                                })(2 + r, o = 2 * n - (n = n < .5 ? (1 + o) * n : n + o - n * o), n), t(r, o, n), t(r - 2, o, n), e[3]]
                            },
                            _rgbaToHSBA: function(e) {
                                var t, r, o = e[0],
                                    n = e[1],
                                    s = e[2],
                                    i = Math.max(o, n, s),
                                    a = i - Math.min(o, n, s);
                                return 0 == a ? r = t = 0 : (r = a / i, o === i ? t = (n - s) / a : n === i ? t = 2 + (s - o) / a : s === i && (t = 4 + (o - n) / a), t < 0 ? t += 6 : 6 <= t && (t -= 6)), [t / 6, r, i, e[3]]
                            },
                            _rgbaToHSLA: function(e) {
                                var t, r, o = e[0],
                                    n = e[1],
                                    s = e[2],
                                    i = Math.max(o, n, s),
                                    a = Math.min(o, n, s),
                                    l = i + a;
                                return 0 == (a = i - a) ? r = t = 0 : (r = l < 1 ? a / l : a / (2 - l), o === i ? t = (n - s) / a : n === i ? t = 2 + (s - o) / a : s === i && (t = 4 + (o - n) / a), t < 0 ? t += 6 : 6 <= t && (t -= 6)), [t / 6, r, l / 2, e[3]]
                            }
                        }, e = e.default.ColorConversion, r.default = e
                    }, {
                        "../core/main": 283
                    }],
                    269: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.map"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            c = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        e("./p5.Color"), e("../core/friendly_errors/validate_params"), e("../core/friendly_errors/file_errors"), e("../core/friendly_errors/fes_core"), l.default.prototype.alpha = function(e) {
                            return l.default._validateParameters("alpha", arguments), this.color(e)._getAlpha()
                        }, l.default.prototype.blue = function(e) {
                            return l.default._validateParameters("blue", arguments), this.color(e)._getBlue()
                        }, l.default.prototype.brightness = function(e) {
                            return l.default._validateParameters("brightness", arguments), this.color(e)._getBrightness()
                        }, l.default.prototype.color = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return l.default._validateParameters("color", r), r[0] instanceof l.default.Color ? r[0] : (e = Array.isArray(r[0]) ? r[0] : r, new l.default.Color(this, e))
                        }, l.default.prototype.green = function(e) {
                            return l.default._validateParameters("green", arguments), this.color(e)._getGreen()
                        }, l.default.prototype.hue = function(e) {
                            return l.default._validateParameters("hue", arguments), this.color(e)._getHue()
                        }, l.default.prototype.lerpColor = function(e, t, r) {
                            l.default._validateParameters("lerpColor", arguments), e instanceof l.default.Color || (e = color(e)), t instanceof l.default.Color || (t = color(t));
                            var o, n, s, i = this._colorMode,
                                a = this._colorMaxes;
                            if (i === c.RGB) n = e.levels.map(function(e) {
                                return e / 255
                            }), s = t.levels.map(function(e) {
                                return e / 255
                            });
                            else if (i === c.HSB) e._getBrightness(), t._getBrightness(), n = e.hsba, s = t.hsba;
                            else {
                                if (i !== c.HSL) throw new Error("".concat(i, " cannot be used for interpolation."));
                                e._getLightness(), t._getLightness(), n = e.hsla, s = t.hsla
                            }
                            return r = Math.max(Math.min(r, 1), 0), void 0 === this.lerp && (this.lerp = function(e, t, r) {
                                return r * (t - e) + e
                            }), i === c.RGB ? o = this.lerp(n[0], s[0], r) : (.5 < Math.abs(n[0] - s[0]) && (n[0] > s[0] ? s[0] += 1 : n[0] += 1), 1 <= (o = this.lerp(n[0], s[0], r)) && --o), e = this.lerp(n[1], s[1], r), t = this.lerp(n[2], s[2], r), n = this.lerp(n[3], s[3], r), o *= a[i][0], e *= a[i][1], t *= a[i][2], n *= a[i][3], this.color(o, e, t, n)
                        }, l.default.prototype.paletteLerp = function(e, t) {
                            var r = e[0];
                            if (t < r[1]) return this.color(r[0]);
                            for (var o = 1; o < e.length; o++) {
                                var n, s = e[o];
                                if (t < s[1]) return n = e[o - 1], this.lerpColor(this.color(n[0]), this.color(s[0]), (t - n[1]) / (s[1] - n[1]))
                            }
                            return this.color(e[e.length - 1][0])
                        }, l.default.prototype.lightness = function(e) {
                            return l.default._validateParameters("lightness", arguments), this.color(e)._getLightness()
                        }, l.default.prototype.red = function(e) {
                            return l.default._validateParameters("red", arguments), this.color(e)._getRed()
                        }, l.default.prototype.saturation = function(e) {
                            return l.default._validateParameters("saturation", arguments), this.color(e)._getSaturation()
                        };
                        var n = l.default;
                        r.default = n
                    }, {
                        "../core/constants": 272,
                        "../core/friendly_errors/fes_core": 274,
                        "../core/friendly_errors/file_errors": 275,
                        "../core/friendly_errors/validate_params": 278,
                        "../core/main": 283,
                        "./p5.Color": 270,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    270: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.trim"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.trim"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = s(e("../core/main")),
                            u = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")),
                            d = s(e("./color_conversion"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function s(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function l(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }
                        var h = {
                                aliceblue: "#f0f8ff",
                                antiquewhite: "#faebd7",
                                aqua: "#00ffff",
                                aquamarine: "#7fffd4",
                                azure: "#f0ffff",
                                beige: "#f5f5dc",
                                bisque: "#ffe4c4",
                                black: "#000000",
                                blanchedalmond: "#ffebcd",
                                blue: "#0000ff",
                                blueviolet: "#8a2be2",
                                brown: "#a52a2a",
                                burlywood: "#deb887",
                                cadetblue: "#5f9ea0",
                                chartreuse: "#7fff00",
                                chocolate: "#d2691e",
                                coral: "#ff7f50",
                                cornflowerblue: "#6495ed",
                                cornsilk: "#fff8dc",
                                crimson: "#dc143c",
                                cyan: "#00ffff",
                                darkblue: "#00008b",
                                darkcyan: "#008b8b",
                                darkgoldenrod: "#b8860b",
                                darkgray: "#a9a9a9",
                                darkgreen: "#006400",
                                darkgrey: "#a9a9a9",
                                darkkhaki: "#bdb76b",
                                darkmagenta: "#8b008b",
                                darkolivegreen: "#556b2f",
                                darkorange: "#ff8c00",
                                darkorchid: "#9932cc",
                                darkred: "#8b0000",
                                darksalmon: "#e9967a",
                                darkseagreen: "#8fbc8f",
                                darkslateblue: "#483d8b",
                                darkslategray: "#2f4f4f",
                                darkslategrey: "#2f4f4f",
                                darkturquoise: "#00ced1",
                                darkviolet: "#9400d3",
                                deeppink: "#ff1493",
                                deepskyblue: "#00bfff",
                                dimgray: "#696969",
                                dimgrey: "#696969",
                                dodgerblue: "#1e90ff",
                                firebrick: "#b22222",
                                floralwhite: "#fffaf0",
                                forestgreen: "#228b22",
                                fuchsia: "#ff00ff",
                                gainsboro: "#dcdcdc",
                                ghostwhite: "#f8f8ff",
                                gold: "#ffd700",
                                goldenrod: "#daa520",
                                gray: "#808080",
                                green: "#008000",
                                greenyellow: "#adff2f",
                                grey: "#808080",
                                honeydew: "#f0fff0",
                                hotpink: "#ff69b4",
                                indianred: "#cd5c5c",
                                indigo: "#4b0082",
                                ivory: "#fffff0",
                                khaki: "#f0e68c",
                                lavender: "#e6e6fa",
                                lavenderblush: "#fff0f5",
                                lawngreen: "#7cfc00",
                                lemonchiffon: "#fffacd",
                                lightblue: "#add8e6",
                                lightcoral: "#f08080",
                                lightcyan: "#e0ffff",
                                lightgoldenrodyellow: "#fafad2",
                                lightgray: "#d3d3d3",
                                lightgreen: "#90ee90",
                                lightgrey: "#d3d3d3",
                                lightpink: "#ffb6c1",
                                lightsalmon: "#ffa07a",
                                lightseagreen: "#20b2aa",
                                lightskyblue: "#87cefa",
                                lightslategray: "#778899",
                                lightslategrey: "#778899",
                                lightsteelblue: "#b0c4de",
                                lightyellow: "#ffffe0",
                                lime: "#00ff00",
                                limegreen: "#32cd32",
                                linen: "#faf0e6",
                                magenta: "#ff00ff",
                                maroon: "#800000",
                                mediumaquamarine: "#66cdaa",
                                mediumblue: "#0000cd",
                                mediumorchid: "#ba55d3",
                                mediumpurple: "#9370db",
                                mediumseagreen: "#3cb371",
                                mediumslateblue: "#7b68ee",
                                mediumspringgreen: "#00fa9a",
                                mediumturquoise: "#48d1cc",
                                mediumvioletred: "#c71585",
                                midnightblue: "#191970",
                                mintcream: "#f5fffa",
                                mistyrose: "#ffe4e1",
                                moccasin: "#ffe4b5",
                                navajowhite: "#ffdead",
                                navy: "#000080",
                                oldlace: "#fdf5e6",
                                olive: "#808000",
                                olivedrab: "#6b8e23",
                                orange: "#ffa500",
                                orangered: "#ff4500",
                                orchid: "#da70d6",
                                palegoldenrod: "#eee8aa",
                                palegreen: "#98fb98",
                                paleturquoise: "#afeeee",
                                palevioletred: "#db7093",
                                papayawhip: "#ffefd5",
                                peachpuff: "#ffdab9",
                                peru: "#cd853f",
                                pink: "#ffc0cb",
                                plum: "#dda0dd",
                                powderblue: "#b0e0e6",
                                purple: "#800080",
                                rebeccapurple: "#663399",
                                red: "#ff0000",
                                rosybrown: "#bc8f8f",
                                royalblue: "#4169e1",
                                saddlebrown: "#8b4513",
                                salmon: "#fa8072",
                                sandybrown: "#f4a460",
                                seagreen: "#2e8b57",
                                seashell: "#fff5ee",
                                sienna: "#a0522d",
                                silver: "#c0c0c0",
                                skyblue: "#87ceeb",
                                slateblue: "#6a5acd",
                                slategray: "#708090",
                                slategrey: "#708090",
                                snow: "#fffafa",
                                springgreen: "#00ff7f",
                                steelblue: "#4682b4",
                                tan: "#d2b48c",
                                teal: "#008080",
                                thistle: "#d8bfd8",
                                tomato: "#ff6347",
                                turquoise: "#40e0d0",
                                violet: "#ee82ee",
                                wheat: "#f5deb3",
                                white: "#ffffff",
                                whitesmoke: "#f5f5f5",
                                yellow: "#ffff00",
                                yellowgreen: "#9acd32"
                            },
                            e = /\s*/,
                            c = /(\d{1,3})/,
                            f = /((?:\d+(?:\.\d+)?)|(?:\.\d+))/,
                            p = new RegExp("".concat(f.source, "%")),
                            m = {
                                HEX3: /^#([a-f0-9])([a-f0-9])([a-f0-9])$/i,
                                HEX4: /^#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])$/i,
                                HEX6: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,
                                HEX8: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/i,
                                RGB: new RegExp(["^rgb\\(", c.source, ",", c.source, ",", c.source, "\\)$"].join(e.source), "i"),
                                RGB_PERCENT: new RegExp(["^rgb\\(", p.source, ",", p.source, ",", p.source, "\\)$"].join(e.source), "i"),
                                RGBA: new RegExp(["^rgba\\(", c.source, ",", c.source, ",", c.source, ",", f.source, "\\)$"].join(e.source), "i"),
                                RGBA_PERCENT: new RegExp(["^rgba\\(", p.source, ",", p.source, ",", p.source, ",", f.source, "\\)$"].join(e.source), "i"),
                                HSL: new RegExp(["^hsl\\(", c.source, ",", p.source, ",", p.source, "\\)$"].join(e.source), "i"),
                                HSLA: new RegExp(["^hsla\\(", c.source, ",", p.source, ",", p.source, ",", f.source, "\\)$"].join(e.source), "i"),
                                HSB: new RegExp(["^hsb\\(", c.source, ",", p.source, ",", p.source, "\\)$"].join(e.source), "i"),
                                HSBA: new RegExp(["^hsba\\(", c.source, ",", p.source, ",", p.source, ",", f.source, "\\)$"].join(e.source), "i")
                            },
                            c = (n.default.Color = (p = [{
                                key: "_parseInputs",
                                value: function(e, t, r, o) {
                                    var n, s = arguments.length,
                                        i = this.mode,
                                        a = this.maxes[i],
                                        l = [];
                                    if (3 <= s) {
                                        for (l[0] = e / a[0], l[1] = t / a[1], l[2] = r / a[2], l[3] = "number" == typeof o ? o / a[3] : 1, n = l.length - 1; 0 <= n; --n) {
                                            var c = l[n];
                                            c < 0 ? l[n] = 0 : 1 < c && (l[n] = 1)
                                        }
                                        return i === u.HSL ? d.default._hslaToRGBA(l) : i === u.HSB ? d.default._hsbaToRGBA(l) : l
                                    }
                                    if (1 === s && "string" == typeof e) {
                                        if (r = e.trim().toLowerCase(), h[r]) return y._parseInputs.call(this, h[r]);
                                        if (m.HEX3.test(r)) return (l = m.HEX3.exec(r).slice(1).map(function(e) {
                                            return parseInt(e + e, 16) / 255
                                        }))[3] = 1, l;
                                        if (m.HEX6.test(r)) return (l = m.HEX6.exec(r).slice(1).map(function(e) {
                                            return parseInt(e, 16) / 255
                                        }))[3] = 1, l;
                                        if (m.HEX4.test(r)) return m.HEX4.exec(r).slice(1).map(function(e) {
                                            return parseInt(e + e, 16) / 255
                                        });
                                        if (m.HEX8.test(r)) return m.HEX8.exec(r).slice(1).map(function(e) {
                                            return parseInt(e, 16) / 255
                                        });
                                        if (m.RGB.test(r)) return (l = m.RGB.exec(r).slice(1).map(function(e) {
                                            return e / 255
                                        }))[3] = 1, l;
                                        if (m.RGB_PERCENT.test(r)) return (l = m.RGB_PERCENT.exec(r).slice(1).map(function(e) {
                                            return parseFloat(e) / 100
                                        }))[3] = 1, l;
                                        if (m.RGBA.test(r)) return m.RGBA.exec(r).slice(1).map(function(e, t) {
                                            return 3 === t ? parseFloat(e) : e / 255
                                        });
                                        if (m.RGBA_PERCENT.test(r)) return m.RGBA_PERCENT.exec(r).slice(1).map(function(e, t) {
                                            return 3 === t ? parseFloat(e) : parseFloat(e) / 100
                                        });
                                        if (m.HSL.test(r) ? (l = m.HSL.exec(r).slice(1).map(function(e, t) {
                                                return 0 === t ? parseInt(e, 10) / 360 : parseInt(e, 10) / 100
                                            }))[3] = 1 : m.HSLA.test(r) && (l = m.HSLA.exec(r).slice(1).map(function(e, t) {
                                                return 0 === t ? parseInt(e, 10) / 360 : 3 === t ? parseFloat(e) : parseInt(e, 10) / 100
                                            })), (l = l.map(function(e) {
                                                return Math.max(Math.min(e, 1), 0)
                                            })).length) return d.default._hslaToRGBA(l);
                                        if (m.HSB.test(r) ? (l = m.HSB.exec(r).slice(1).map(function(e, t) {
                                                return 0 === t ? parseInt(e, 10) / 360 : parseInt(e, 10) / 100
                                            }))[3] = 1 : m.HSBA.test(r) && (l = m.HSBA.exec(r).slice(1).map(function(e, t) {
                                                return 0 === t ? parseInt(e, 10) / 360 : 3 === t ? parseFloat(e) : parseInt(e, 10) / 100
                                            })), l.length) {
                                            for (n = l.length - 1; 0 <= n; --n) l[n] = Math.max(Math.min(l[n], 1), 0);
                                            return d.default._hsbaToRGBA(l)
                                        }
                                        l = [1, 1, 1, 1]
                                    } else {
                                        if (1 !== s && 2 !== s || "number" != typeof e) throw new Error("".concat(arguments, "is not a valid color representation."));
                                        l[0] = e / a[2], l[1] = e / a[2], l[2] = e / a[2], l[3] = "number" == typeof t ? t / a[3] : 1, l = l.map(function(e) {
                                            return Math.max(Math.min(e, 1), 0)
                                        })
                                    }
                                    return l
                                }
                            }], l((f = y).prototype, [{
                                key: "toString",
                                value: function(e) {
                                    var t = this.levels,
                                        r = this._array,
                                        o = r[3];
                                    switch (e) {
                                        case "#rrggbb":
                                            return "#".concat(t[0] < 16 ? "0".concat(t[0].toString(16)) : t[0].toString(16), t[1] < 16 ? "0".concat(t[1].toString(16)) : t[1].toString(16), t[2] < 16 ? "0".concat(t[2].toString(16)) : t[2].toString(16));
                                        case "#rrggbbaa":
                                            return "#".concat(t[0] < 16 ? "0".concat(t[0].toString(16)) : t[0].toString(16), t[1] < 16 ? "0".concat(t[1].toString(16)) : t[1].toString(16), t[2] < 16 ? "0".concat(t[2].toString(16)) : t[2].toString(16), t[3] < 16 ? "0".concat(t[3].toString(16)) : t[3].toString(16));
                                        case "#rgb":
                                            return "#".concat(Math.round(15 * r[0]).toString(16), Math.round(15 * r[1]).toString(16), Math.round(15 * r[2]).toString(16));
                                        case "#rgba":
                                            return "#".concat(Math.round(15 * r[0]).toString(16), Math.round(15 * r[1]).toString(16), Math.round(15 * r[2]).toString(16), Math.round(15 * r[3]).toString(16));
                                        case "rgb":
                                            return "rgb(".concat(t[0], ", ", t[1], ", ", t[2], ")");
                                        case "rgb%":
                                            return "rgb(".concat((100 * r[0]).toPrecision(3), "%, ", (100 * r[1]).toPrecision(3), "%, ", (100 * r[2]).toPrecision(3), "%)");
                                        case "rgba%":
                                            return "rgba(".concat((100 * r[0]).toPrecision(3), "%, ", (100 * r[1]).toPrecision(3), "%, ", (100 * r[2]).toPrecision(3), "%, ", (100 * r[3]).toPrecision(3), "%)");
                                        case "hsb":
                                        case "hsv":
                                            return this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), "hsb(".concat(this.hsba[0] * this.maxes[u.HSB][0], ", ", this.hsba[1] * this.maxes[u.HSB][1], ", ", this.hsba[2] * this.maxes[u.HSB][2], ")");
                                        case "hsb%":
                                        case "hsv%":
                                            return this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), "hsb(".concat((100 * this.hsba[0]).toPrecision(3), "%, ", (100 * this.hsba[1]).toPrecision(3), "%, ", (100 * this.hsba[2]).toPrecision(3), "%)");
                                        case "hsba":
                                        case "hsva":
                                            return this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), "hsba(".concat(this.hsba[0] * this.maxes[u.HSB][0], ", ", this.hsba[1] * this.maxes[u.HSB][1], ", ", this.hsba[2] * this.maxes[u.HSB][2], ", ", o, ")");
                                        case "hsba%":
                                        case "hsva%":
                                            return this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), "hsba(".concat((100 * this.hsba[0]).toPrecision(3), "%, ", (100 * this.hsba[1]).toPrecision(3), "%, ", (100 * this.hsba[2]).toPrecision(3), "%, ", (100 * o).toPrecision(3), "%)");
                                        case "hsl":
                                            return this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), "hsl(".concat(this.hsla[0] * this.maxes[u.HSL][0], ", ", this.hsla[1] * this.maxes[u.HSL][1], ", ", this.hsla[2] * this.maxes[u.HSL][2], ")");
                                        case "hsl%":
                                            return this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), "hsl(".concat((100 * this.hsla[0]).toPrecision(3), "%, ", (100 * this.hsla[1]).toPrecision(3), "%, ", (100 * this.hsla[2]).toPrecision(3), "%)");
                                        case "hsla":
                                            return this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), "hsla(".concat(this.hsla[0] * this.maxes[u.HSL][0], ", ", this.hsla[1] * this.maxes[u.HSL][1], ", ", this.hsla[2] * this.maxes[u.HSL][2], ", ", o, ")");
                                        case "hsla%":
                                            return this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), "hsl(".concat((100 * this.hsla[0]).toPrecision(3), "%, ", (100 * this.hsla[1]).toPrecision(3), "%, ", (100 * this.hsla[2]).toPrecision(3), "%, ", (100 * o).toPrecision(3), "%)");
                                        default:
                                            return "rgba(".concat(t[0], ",", t[1], ",", t[2], ",", o, ")")
                                    }
                                }
                            }, {
                                key: "setRed",
                                value: function(e) {
                                    this._array[0] = e / this.maxes[u.RGB][0], this._calculateLevels()
                                }
                            }, {
                                key: "setGreen",
                                value: function(e) {
                                    this._array[1] = e / this.maxes[u.RGB][1], this._calculateLevels()
                                }
                            }, {
                                key: "setBlue",
                                value: function(e) {
                                    this._array[2] = e / this.maxes[u.RGB][2], this._calculateLevels()
                                }
                            }, {
                                key: "setAlpha",
                                value: function(e) {
                                    this._array[3] = e / this.maxes[this.mode][3], this._calculateLevels()
                                }
                            }, {
                                key: "_calculateLevels",
                                value: function() {
                                    for (var e = this._array, t = this.levels = new Array(e.length), r = e.length - 1; 0 <= r; --r) t[r] = Math.round(255 * e[r]);
                                    this.hsla = null, this.hsba = null
                                }
                            }, {
                                key: "_getAlpha",
                                value: function() {
                                    return this._array[3] * this.maxes[this.mode][3]
                                }
                            }, {
                                key: "_storeModeAndMaxes",
                                value: function(e, t) {
                                    this.mode = e, this.maxes = t
                                }
                            }, {
                                key: "_getMode",
                                value: function() {
                                    return this.mode
                                }
                            }, {
                                key: "_getMaxes",
                                value: function() {
                                    return this.maxes
                                }
                            }, {
                                key: "_getBlue",
                                value: function() {
                                    return this._array[2] * this.maxes[u.RGB][2]
                                }
                            }, {
                                key: "_getBrightness",
                                value: function() {
                                    return this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), this.hsba[2] * this.maxes[u.HSB][2]
                                }
                            }, {
                                key: "_getGreen",
                                value: function() {
                                    return this._array[1] * this.maxes[u.RGB][1]
                                }
                            }, {
                                key: "_getHue",
                                value: function() {
                                    return this.mode === u.HSB ? (this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), this.hsba[0] * this.maxes[u.HSB][0]) : (this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), this.hsla[0] * this.maxes[u.HSL][0])
                                }
                            }, {
                                key: "_getLightness",
                                value: function() {
                                    return this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), this.hsla[2] * this.maxes[u.HSL][2]
                                }
                            }, {
                                key: "_getRed",
                                value: function() {
                                    return this._array[0] * this.maxes[u.RGB][0]
                                }
                            }, {
                                key: "_getSaturation",
                                value: function() {
                                    return this.mode === u.HSB ? (this.hsba || (this.hsba = d.default._rgbaToHSBA(this._array)), this.hsba[1] * this.maxes[u.HSB][1]) : (this.hsla || (this.hsla = d.default._rgbaToHSLA(this._array)), this.hsla[1] * this.maxes[u.HSL][1])
                                }
                            }]), l(f, p), y), n.default.Color);

                        function y(e, t) {
                            if (!(this instanceof y)) throw new TypeError("Cannot call a class as a function");
                            if (this._storeModeAndMaxes(e._colorMode, e._colorMaxes), ![u.RGB, u.HSL, u.HSB].includes(this.mode)) throw new Error("".concat(this.mode, " is an invalid colorMode."));
                            this._array = y._parseInputs.apply(this, t), this._calculateLevels()
                        }
                        r.default = c
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./color_conversion": 268,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.constructor": 194,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    271: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.fill"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var s = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            a = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }
                        e("./p5.Color"), s.default.prototype.beginClip = function() {
                            this._renderer.beginClip(0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {})
                        }, s.default.prototype.endClip = function() {
                            this._renderer.endClip()
                        }, s.default.prototype.clip = function(e, t) {
                            this._renderer.beginClip(t), e(), this._renderer.endClip(t)
                        }, s.default.prototype.background = function() {
                            var e;
                            return (e = this._renderer).background.apply(e, arguments), this
                        }, s.default.prototype.clear = function() {
                            return this._renderer.clear((arguments.length <= 0 ? void 0 : arguments[0]) || 0, (arguments.length <= 1 ? void 0 : arguments[1]) || 0, (arguments.length <= 2 ? void 0 : arguments[2]) || 0, (arguments.length <= 3 ? void 0 : arguments[3]) || 0), this
                        }, s.default.prototype.colorMode = function(e, t, r, o, n) {
                            return s.default._validateParameters("colorMode", arguments), e !== a.RGB && e !== a.HSB && e !== a.HSL || (this._colorMode = e, e = this._colorMaxes[e], 2 === arguments.length ? (e[0] = t, e[1] = t, e[2] = t, e[3] = t) : 4 === arguments.length ? (e[0] = t, e[1] = r, e[2] = o) : 5 === arguments.length && (e[0] = t, e[1] = r, e[2] = o, e[3] = n)), this
                        }, s.default.prototype.fill = function() {
                            var e;
                            return this._renderer._setProperty("_fillSet", !0), this._renderer._setProperty("_doFill", !0), (e = this._renderer).fill.apply(e, arguments), this
                        }, s.default.prototype.noFill = function() {
                            return this._renderer._setProperty("_doFill", !1), this
                        }, s.default.prototype.noStroke = function() {
                            return this._renderer._setProperty("_doStroke", !1), this
                        }, s.default.prototype.stroke = function() {
                            var e;
                            return this._renderer._setProperty("_strokeSet", !0), this._renderer._setProperty("_doStroke", !0), (e = this._renderer).stroke.apply(e, arguments), this
                        }, s.default.prototype.erase = function() {
                            return this._renderer.erase(0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 255, 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 255), this
                        }, s.default.prototype.noErase = function() {
                            return this._renderer.noErase(), this
                        };
                        var n = s.default;
                        r.default = n
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.Color": 270,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    272: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.QUADRATIC = r.LINEAR = r._CTX_MIDDLE = r._DEFAULT_LEADMULT = r._DEFAULT_TEXT_FILL = r.WORD = r.CHAR = r.BOLDITALIC = r.BOLD = r.ITALIC = r.NORMAL = r.BLUR = r.ERODE = r.DILATE = r.POSTERIZE = r.INVERT = r.OPAQUE = r.GRAY = r.THRESHOLD = r.BURN = r.DODGE = r.SOFT_LIGHT = r.HARD_LIGHT = r.OVERLAY = r.REPLACE = r.SCREEN = r.MULTIPLY = r.EXCLUSION = r.SUBTRACT = r.DIFFERENCE = r.LIGHTEST = r.DARKEST = r.ADD = r.REMOVE = r.BLEND = r.UP_ARROW = r.TAB = r.SHIFT = r.RIGHT_ARROW = r.RETURN = r.OPTION = r.LEFT_ARROW = r.ESCAPE = r.ENTER = r.DOWN_ARROW = r.DELETE = r.CONTROL = r.BACKSPACE = r.ALT = r.AUTO = r.HSL = r.HSB = r.RGB = r.MITER = r.BEVEL = r.ROUND = r.SQUARE = r.PROJECT = r.PIE = r.CHORD = r.OPEN = r.CLOSE = r.TESS = r.QUAD_STRIP = r.QUADS = r.TRIANGLE_STRIP = r.TRIANGLE_FAN = r.TRIANGLES = r.LINE_LOOP = r.LINE_STRIP = r.LINES = r.POINTS = r.BASELINE = r.BOTTOM = r.TOP = r.CENTER = r.LEFT = r.RIGHT = r.RADIUS = r.CORNERS = r.CORNER = r.RAD_TO_DEG = r.DEG_TO_RAD = r.RADIANS = r.DEGREES = r.TWO_PI = r.TAU = r.QUARTER_PI = r.PI = r.HALF_PI = r.WAIT = r.TEXT = r.MOVE = r.HAND = r.CROSS = r.ARROW = r.WEBGL2 = r.WEBGL = r.P2D = r.VERSION = void 0, r.RGBA = r.HALF_FLOAT = r.FLOAT = r.UNSIGNED_INT = r.UNSIGNED_BYTE = r.COVER = r.CONTAIN = r.FALLBACK = r.LABEL = r.AXES = r.GRID = r._DEFAULT_FILL = r._DEFAULT_STROKE = r.PORTRAIT = r.LANDSCAPE = r.SMOOTH = r.FLAT = r.MIRROR = r.CLAMP = r.REPEAT = r.NEAREST = r.IMAGE = r.IMMEDIATE = r.TEXTURE = r.FILL = r.STROKE = r.CURVE = r.BEZIER = void 0;
                        var o = Math.PI,
                            n = (r.VERSION = "1.11.3", r.P2D = "p2d", r.WEBGL = "webgl", r.WEBGL2 = "webgl2", r.ARROW = "default", r.CROSS = "crosshair", r.HAND = "pointer", r.MOVE = "move", r.TEXT = "text", r.WAIT = "wait", o / 2),
                            n = (r.HALF_PI = n, o),
                            n = (r.PI = n, o / 4),
                            n = (r.QUARTER_PI = n, 2 * o),
                            n = (r.TAU = n, 2 * o),
                            n = (r.TWO_PI = n, r.DEGREES = "degrees", r.RADIANS = "radians", o / 180),
                            n = (r.DEG_TO_RAD = n, 180 / o);
                        r.RAD_TO_DEG = n, r.CORNER = "corner", r.CORNERS = "corners", r.RADIUS = "radius", r.RIGHT = "right", r.LEFT = "left", r.CENTER = "center", r.TOP = "top", r.BOTTOM = "bottom", r.BASELINE = "alphabetic", r.POINTS = 0, r.LINES = 1, r.LINE_STRIP = 3, r.LINE_LOOP = 2, r.TRIANGLES = 4, r.TRIANGLE_FAN = 6, r.TRIANGLE_STRIP = 5, r.QUADS = "quads", r.QUAD_STRIP = "quad_strip", r.TESS = "tess", r.CLOSE = "close", r.OPEN = "open", r.CHORD = "chord", r.PIE = "pie", r.PROJECT = "square", r.SQUARE = "butt", r.ROUND = "round", r.BEVEL = "bevel", r.MITER = "miter", r.RGB = "rgb", r.HSB = "hsb", r.HSL = "hsl", r.AUTO = "auto", r.ALT = 18, r.BACKSPACE = 8, r.CONTROL = 17, r.DELETE = 46, r.DOWN_ARROW = 40, r.ENTER = 13, r.ESCAPE = 27, r.LEFT_ARROW = 37, r.OPTION = 18, r.RETURN = 13, r.RIGHT_ARROW = 39, r.SHIFT = 16, r.TAB = 9, r.UP_ARROW = 38, r.BLEND = "source-over", r.REMOVE = "destination-out", r.ADD = "lighter", r.DARKEST = "darken", r.LIGHTEST = "lighten", r.DIFFERENCE = "difference", r.SUBTRACT = "subtract", r.EXCLUSION = "exclusion", r.MULTIPLY = "multiply", r.SCREEN = "screen", r.REPLACE = "copy", r.OVERLAY = "overlay", r.HARD_LIGHT = "hard-light", r.SOFT_LIGHT = "soft-light", r.DODGE = "color-dodge", r.BURN = "color-burn", r.THRESHOLD = "threshold", r.GRAY = "gray", r.OPAQUE = "opaque", r.INVERT = "invert", r.POSTERIZE = "posterize", r.DILATE = "dilate", r.ERODE = "erode", r.BLUR = "blur", r.NORMAL = "normal", r.ITALIC = "italic", r.BOLD = "bold", r.BOLDITALIC = "bold italic", r.CHAR = "CHAR", r.WORD = "WORD", r._DEFAULT_TEXT_FILL = "#000000", r._DEFAULT_LEADMULT = 1.25, r._CTX_MIDDLE = "middle", r.LINEAR = "linear", r.QUADRATIC = "quadratic", r.BEZIER = "bezier", r.CURVE = "curve", r.STROKE = "stroke", r.FILL = "fill", r.TEXTURE = "texture", r.IMMEDIATE = "immediate", r.IMAGE = "image", r.NEAREST = "nearest", r.REPEAT = "repeat", r.CLAMP = "clamp", r.MIRROR = "mirror", r.FLAT = "flat", r.SMOOTH = "smooth", r.LANDSCAPE = "landscape", r.PORTRAIT = "portrait", r._DEFAULT_STROKE = "#000000", r._DEFAULT_FILL = "#FFFFFF", r.GRID = "grid", r.AXES = "axes", r.LABEL = "label", r.FALLBACK = "fallback", r.CONTAIN = "contain", r.COVER = "cover", r.UNSIGNED_BYTE = "unsigned-byte", r.UNSIGNED_INT = "unsigned-int", r.FLOAT = "float", r.HALF_FLOAT = "half-float", r.RGBA = "rgba"
                    }, {}],
                    273: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.search"), e("core-js/modules/es.string.split"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.search"), e("core-js/modules/es.string.split"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (s = e("./main")) && s.__esModule ? s : {
                                default: s
                            },
                            s = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("./constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        var l = [s.ARROW, s.CROSS, s.HAND, s.MOVE, s.TEXT, s.WAIT],
                            c = (n.default.prototype._frameRate = 0, n.default.prototype._lastFrameTime = window.performance.now(), n.default.prototype._targetFrameRate = 60, window.print),
                            u = !1;

                        function d() {
                            return window.innerWidth || document.documentElement && document.documentElement.clientWidth || document.body && document.body.clientWidth || 0
                        }

                        function h() {
                            return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body && document.body.clientHeight || 0
                        }
                        n.default.prototype.print = function() {
                            var e;
                            arguments.length ? (e = console).log.apply(e, arguments) : u || (c(), window.confirm("You just tried to print the webpage. Do you want to prevent this from running again?") && (u = !0))
                        }, n.default.prototype.frameCount = 0, n.default.prototype.deltaTime = 0, n.default.prototype.focused = document.hasFocus(), n.default.prototype.cursor = function(e, t, r) {
                            var o, n = "auto",
                                s = this._curElement.elt;
                            l.includes(e) ? n = e : "string" == typeof e && (o = "", t && r && "number" == typeof t && "number" == typeof r && (o = "".concat(t, " ").concat(r)), n = "http://" === e.substring(0, 7) || "https://" === e.substring(0, 8) || /\.(cur|jpg|jpeg|gif|png|CUR|JPG|JPEG|GIF|PNG)$/.test(e) ? "url(".concat(e, ") ").concat(o, ", auto") : e), s.style.cursor = n
                        }, n.default.prototype.frameRate = function(e) {
                            return n.default._validateParameters("frameRate", arguments), "number" != typeof e || e < 0 ? this._frameRate : (this._setProperty("_targetFrameRate", e), 0 === e && this._setProperty("_frameRate", e), this)
                        }, n.default.prototype.getFrameRate = function() {
                            return this.frameRate()
                        }, n.default.prototype.setFrameRate = function(e) {
                            return this.frameRate(e)
                        }, n.default.prototype.getTargetFrameRate = function() {
                            return this._targetFrameRate
                        }, n.default.prototype.noCursor = function() {
                            this._curElement.elt.style.cursor = "none"
                        }, n.default.prototype.webglVersion = s.P2D, n.default.prototype.displayWidth = screen.width, n.default.prototype.displayHeight = screen.height, n.default.prototype.windowWidth = 0, n.default.prototype.windowHeight = 0, n.default.prototype._onresize = function(e) {
                            this._setProperty("windowWidth", d()), this._setProperty("windowHeight", h());
                            var t = this._isGlobal ? window : this;
                            "function" != typeof t.windowResized || void 0 === (t = t.windowResized(e)) || t || e.preventDefault()
                        }, n.default.prototype._updateWindowSize = function() {
                            this._setProperty("windowWidth", d()), this._setProperty("windowHeight", h())
                        }, n.default.prototype.width = 0, n.default.prototype.height = 0, n.default.prototype.fullscreen = function(e) {
                            if (n.default._validateParameters("fullscreen", arguments), void 0 === e) return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;
                            if (e) {
                                if (e = document.documentElement, !(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled)) throw new Error("Fullscreen not enabled in this browser.");
                                e.requestFullscreen ? e.requestFullscreen() : e.mozRequestFullScreen ? e.mozRequestFullScreen() : e.webkitRequestFullscreen ? e.webkitRequestFullscreen() : e.msRequestFullscreen && e.msRequestFullscreen()
                            } else document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen()
                        }, n.default.prototype.pixelDensity = function(e) {
                            var t;
                            return n.default._validateParameters("pixelDensity", arguments), "number" == typeof e ? (e !== this._pixelDensity && (this._pixelDensity = this._maxAllowedPixelDimensions = e), (t = this).resizeCanvas(this.width, this.height, !0)) : t = this._pixelDensity, t
                        }, n.default.prototype.displayDensity = function() {
                            return window.devicePixelRatio
                        }, n.default.prototype.getURL = function() {
                            return location.href
                        }, n.default.prototype.getURLPath = function() {
                            return location.pathname.split("/").filter(function(e) {
                                return "" !== e
                            })
                        }, n.default.prototype.getURLParams = function() {
                            for (var e, t = /[?&]([^&=]+)(?:[&=])([^&=]+)/gim, r = {}; null != (e = t.exec(location.search));) e.index === t.lastIndex && t.lastIndex++, r[e[1]] = e[2];
                            return r
                        }, e = n.default, r.default = e
                    }, {
                        "./constants": 272,
                        "./main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.search": 205,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    274: [function(n, e, t) {
                        n("core-js/modules/es.symbol"), n("core-js/modules/es.symbol.description"), n("core-js/modules/es.symbol.iterator"), n("core-js/modules/es.array.concat"), n("core-js/modules/es.array.filter"), n("core-js/modules/es.array.for-each"), n("core-js/modules/es.array.includes"), n("core-js/modules/es.array.iterator"), n("core-js/modules/es.array.join"), n("core-js/modules/es.array.map"), n("core-js/modules/es.array.slice"), n("core-js/modules/es.array.some"), n("core-js/modules/es.function.name"), n("core-js/modules/es.object.assign"), n("core-js/modules/es.object.get-own-property-names"), n("core-js/modules/es.object.keys"), n("core-js/modules/es.object.to-string"), n("core-js/modules/es.regexp.constructor"), n("core-js/modules/es.regexp.exec"), n("core-js/modules/es.regexp.to-string"), n("core-js/modules/es.string.iterator"), n("core-js/modules/es.string.match"), n("core-js/modules/es.string.replace"), n("core-js/modules/es.string.split"), n("core-js/modules/es.string.starts-with"), n("core-js/modules/web.dom-collections.for-each"), n("core-js/modules/web.dom-collections.iterator"), n("core-js/modules/es.symbol"), n("core-js/modules/es.symbol.description"), n("core-js/modules/es.symbol.iterator"), n("core-js/modules/es.array.concat"), n("core-js/modules/es.array.filter"), n("core-js/modules/es.array.for-each"), n("core-js/modules/es.array.includes"), n("core-js/modules/es.array.iterator"), n("core-js/modules/es.array.join"), n("core-js/modules/es.array.map"), n("core-js/modules/es.array.slice"), n("core-js/modules/es.array.some"), n("core-js/modules/es.function.name"), n("core-js/modules/es.object.assign"), n("core-js/modules/es.object.get-own-property-names"), n("core-js/modules/es.object.keys"), n("core-js/modules/es.object.to-string"), n("core-js/modules/es.regexp.constructor"), n("core-js/modules/es.regexp.exec"), n("core-js/modules/es.regexp.to-string"), n("core-js/modules/es.string.iterator"), n("core-js/modules/es.string.match"), n("core-js/modules/es.string.replace"), n("core-js/modules/es.string.split"), n("core-js/modules/es.string.starts-with"), n("core-js/modules/web.dom-collections.for-each"), n("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(t, "__esModule", {
                            value: !0
                        }), t.default = void 0;
                        var s = (o = n("../main")) && o.__esModule ? o : {
                            default: o
                        };

                        function r(r, o) {
                            function e(r) {
                                return Object.getOwnPropertyNames(r).filter(function(e) {
                                    return "_" !== e[0] && !(e in t) && (t[e] = !0)
                                }).map(function(e) {
                                    var t = "function" == typeof r[e] ? "function" : e === e.toUpperCase() ? "constant" : "variable";
                                    return {
                                        name: e,
                                        type: t
                                    }
                                })
                            }
                            var t;
                            o = o || console.log.bind(console), i || (t = {}, (i = [].concat(e(s.default.prototype), e(n("../constants")))).sort(function(e, t) {
                                return t.name.length - e.name.length
                            })), i.some(function(e) {
                                var t;
                                if (r.message && null !== r.message.match("\\W?".concat(e.name, "\\W"))) return t = "function" === e.type ? "".concat(e.name, "()") : e.name, o("Did you just try to use p5.js's ".concat(t, " ").concat(e.type, "? If so, you may want to move it into your sketch's setup() function.\n\nFor more details, see: ").concat("https://github.com/processing/p5.js/wiki/p5.js-overview#why-cant-i-assign-variables-using-p5-functions-and-variables-before-setup")), !0
                            })
                        }
                        n("../internationalization");
                        var i = null,
                            o = (s.default._friendlyError = s.default._checkForUserDefinedFunctions = s.default._fesErrorMonitor = function() {}, i = null, s.default.prototype._helpForMisusedAtTopLevelCode = r, "complete" !== document.readyState && (window.addEventListener("error", r, !1), window.addEventListener("load", function() {
                                window.removeEventListener("error", r, !1)
                            })), s.default);
                        t.default = o
                    }, {
                        "../constants": 272,
                        "../internationalization": 281,
                        "../main": 283,
                        "./browser_errors": void 0,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.some": 170,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.get-own-property-names": 187,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.constructor": 194,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.starts-with": 207,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    275: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (o = e("../main")) && o.__esModule ? o : {
                            default: o
                        };
                        e("../internationalization"), o.default._friendlyFileLoadError = function() {}, e = o.default, r.default = e
                    }, {
                        "../internationalization": 281,
                        "../main": 283
                    }],
                    276: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/web.dom-collections.for-each"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (n = e("../main")) && n.__esModule ? n : {
                            default: n
                        };
                        e("../internationalization"), (e => {
                            if (e && e.__esModule) return;
                            if (null === e || "object" !== i(e) && "function" != typeof e) return;
                            var t = a();
                            if (t && t.has(e)) return t.get(e);
                            var r, o, n = {},
                                s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                            for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                            n.default = e, t && t.set(e, n)
                        })(e("../constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        n.default._fesCodeReader = function() {};
                        e = n.default;
                        r.default = e
                    }, {
                        "../constants": 272,
                        "../internationalization": 281,
                        "../main": 283,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.constructor": 194,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    277: [function(e, t, r) {
                        function o() {
                            var t = /(^|@)\S+:\d+/,
                                r = /^\s*at .*(\S+:\d+|\(native\))/m,
                                o = /^(eval@)?(\[native code])?$/;
                            return {
                                parse: function(e) {
                                    return void 0 !== e.stacktrace || void 0 !== e["opera#sourceloc"] ? this.parseOpera(e) : e.stack && e.stack.match(r) ? this.parseV8OrIE(e) : e.stack ? this.parseFFOrSafari(e) : void 0
                                },
                                extractLocation: function(e) {
                                    return -1 === e.indexOf(":") ? [e] : [(e = /(.+?)(?::(\d+))?(?::(\d+))?$/.exec(e.replace(/[()]/g, "")))[1], e[2] || void 0, e[3] || void 0]
                                },
                                parseV8OrIE: function(e) {
                                    return e.stack.split("\n").filter(function(e) {
                                        return !!e.match(r)
                                    }, this).map(function(e) {
                                        var t = (t = (r = (t = (e = -1 < e.indexOf("(eval ") ? e.replace(/eval code/g, "eval").replace(/(\(eval at [^()]*)|(\),.*$)/g, "") : e).replace(/^\s+/, "").replace(/\(eval code/g, "(")).match(/ (\((.+):(\d+):(\d+)\)$)/)) ? t.replace(r[0], "") : t).split(/\s+/).slice(1),
                                            r = this.extractLocation(r ? r[1] : t.pop());
                                        return {
                                            functionName: t.join(" ") || void 0,
                                            fileName: -1 < ["eval", "<anonymous>"].indexOf(r[0]) ? void 0 : r[0],
                                            lineNumber: r[1],
                                            columnNumber: r[2],
                                            source: e
                                        }
                                    }, this)
                                },
                                parseFFOrSafari: function(e) {
                                    return e.stack.split("\n").filter(function(e) {
                                        return !e.match(o)
                                    }, this).map(function(e) {
                                        var t, r;
                                        return -1 === (e = -1 < e.indexOf(" > eval") ? e.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g, ":$1") : e).indexOf("@") && -1 === e.indexOf(":") ? {
                                            functionName: e
                                        } : {
                                            functionName: (r = e.match(t = /((.*".+"[^@]*)?[^@]*)(?:@)/)) && r[1] ? r[1] : void 0,
                                            fileName: (r = this.extractLocation(e.replace(t, "")))[0],
                                            lineNumber: r[1],
                                            columnNumber: r[2],
                                            source: e
                                        }
                                    }, this)
                                },
                                parseOpera: function(e) {
                                    return !e.stacktrace || -1 < e.message.indexOf("\n") && e.message.split("\n").length > e.stacktrace.split("\n").length ? this.parseOpera9(e) : e.stack ? this.parseOpera11(e) : this.parseOpera10(e)
                                },
                                parseOpera9: function(e) {
                                    for (var t = /Line (\d+).*script (?:in )?(\S+)/i, r = e.message.split("\n"), o = [], n = 2, s = r.length; n < s; n += 2) {
                                        var i = t.exec(r[n]);
                                        i && o.push({
                                            fileName: i[2],
                                            lineNumber: i[1],
                                            source: r[n]
                                        })
                                    }
                                    return o
                                },
                                parseOpera10: function(e) {
                                    for (var t = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i, r = e.stacktrace.split("\n"), o = [], n = 0, s = r.length; n < s; n += 2) {
                                        var i = t.exec(r[n]);
                                        i && o.push({
                                            functionName: i[3] || void 0,
                                            fileName: i[2],
                                            lineNumber: i[1],
                                            source: r[n]
                                        })
                                    }
                                    return o
                                },
                                parseOpera11: function(e) {
                                    return e.stack.split("\n").filter(function(e) {
                                        return !!e.match(t) && !e.match(/^Error created at/)
                                    }, this).map(function(e) {
                                        var t, r = e.split("@"),
                                            o = this.extractLocation(r.pop());
                                        return {
                                            functionName: (r = r.shift() || "").replace(/<anonymous function(: (\w+))?>/, "$2").replace(/\([^)]*\)/g, "") || void 0,
                                            args: void 0 === (t = r.match(/\(([^)]*)\)/) ? r.replace(/^[^(]+\(([^)]*)\)$/, "$1") : t) || "[arguments not available]" === t ? void 0 : t.split(","),
                                            fileName: o[0],
                                            lineNumber: o[1],
                                            columnNumber: o[2],
                                            source: e
                                        }
                                    }, this)
                                }
                            }
                        }
                        e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../main")) && e.__esModule ? e : {
                            default: e
                        }).default._getErrorStackParser = function() {
                            return new o
                        }, r.default = e = e.default
                    }, {
                        "../main": 283,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206
                    }],
                    278: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.map"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (n = e("../main")) && n.__esModule ? n : {
                            default: n
                        };

                        function i() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, i = function() {
                                return e
                            }, e)
                        }

                        function a(e) {
                            return (a = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }(e => {
                            if (!(e && e.__esModule || null === e || "object" !== a(e) && "function" != typeof e)) {
                                var t = i();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                n.default = e, t && t.set(e, n)
                            }
                        })(e("../constants")), e("../internationalization"), n.default._validateParameters = n.default._clearValidateParamsCache = function() {}, e = n.default, r.default = e
                    }, {
                        "../../../docs/parameterData.json": void 0,
                        "../constants": 272,
                        "../internationalization": 281,
                        "../main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.last-index-of": 167,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.map": 175,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.set": 197,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    279: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (e => {
                            if (e && e.__esModule) return e;
                            if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                default: e
                            };
                            var t = l();
                            if (t && t.has(e)) return t.get(e);
                            var r, o, n = {},
                                s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                            for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                            return n.default = e, t && t.set(e, n), n
                        })(e("./constants"));

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }
                        r.default = {
                            modeAdjust: function(e, t, r, o, n) {
                                var s;
                                return n === a.CORNER ? s = {
                                    x: e,
                                    y: t,
                                    w: Math.abs(r),
                                    h: Math.abs(o)
                                } : n === a.CORNERS ? s = {
                                    x: Math.min(e, r),
                                    y: Math.min(t, o),
                                    w: Math.abs(r - e),
                                    h: Math.abs(o - t)
                                } : n === a.RADIUS ? s = {
                                    x: e - (r = Math.abs(r)),
                                    y: t - (o = Math.abs(o)),
                                    w: 2 * r,
                                    h: 2 * o
                                } : n === a.CENTER && (s = {
                                    x: e - .5 * (r = Math.abs(r)),
                                    y: t - .5 * (o = Math.abs(o)),
                                    w: r,
                                    h: o
                                }), s
                            }
                        }
                    }, {
                        "./constants": 272,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    280: [function(e, t, r) {
                        e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator");
                        var o = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            n = (e("./internationalization"), Promise.resolve());
                        Promise.all([new Promise(function(e, t) {
                            "complete" === document.readyState ? e() : window.addEventListener("load", e, !1)
                        }), n]).then(function() {
                            var e;
                            void 0 !== window._setupDone ? console.warn("p5.js seems to have been imported multiple times. Please remove the duplicate import") : window.mocha || (e = new Event("p5Ready"), window.dispatchEvent(e), (window.setup && "function" == typeof window.setup || window.draw && "function" == typeof window.draw) && !o.default.instance && new o.default)
                        })
                    }, {
                        "../core/main": 283,
                        "./internationalization": 281,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    281: [function(e, t, r) {
                        e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.setTranslatorLanguage = r.currentTranslatorLanguage = r.availableTranslatorLanguages = r.initialize = r.translator = void 0;
                        var o = s(e("i18next")),
                            n = s(e("i18next-browser-languagedetector"));

                        function s(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function i(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }
                        i(l.prototype, [{
                            key: "fetchWithTimeout",
                            value: function(e, t) {
                                var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 2e3;
                                return Promise.race([fetch(e, t), new Promise(function(e, t) {
                                    return setTimeout(function() {
                                        return t(new Error("timeout"))
                                    }, r)
                                })])
                            }
                        }, {
                            key: "init",
                            value: function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
                                this.services = e, this.options = t
                            }
                        }, {
                            key: "read",
                            value: function(e, t, r) {
                                var o = this.options.loadPath;
                                e === this.options.fallback ? r(null, (void 0)[e][t]) : (void 0).includes(e) ? (o = this.services.interpolator.interpolate(o, {
                                    lng: e,
                                    ns: t
                                }), this.loadUrl(o, r)) : r("Not found", !1)
                            }
                        }, {
                            key: "loadUrl",
                            value: function(t, r) {
                                this.fetchWithTimeout(t).then(function(e) {
                                    if (e.ok) return e.json();
                                    throw new Error("failed loading ".concat(t))
                                }, function() {
                                    throw new Error("failed loading ".concat(t))
                                }).then(function(e) {
                                    return r(null, e)
                                }).catch(r)
                            }
                        }]);
                        var a = l;

                        function l(e, t) {
                            if (!(this instanceof l)) throw new TypeError("Cannot call a class as a function");
                            this.init(e, t)
                        }
                        a.type = "backend", r.translator = function(e, t) {
                            console.debug("p5.js translator called before translations were loaded"), o.default.t(e, t)
                        }, r.initialize = function() {
                            return o.default.use(n.default).use(a).init({
                                fallbackLng: "en",
                                nestingPrefix: "$tr(",
                                nestingSuffix: ")",
                                defaultNS: "translation",
                                returnEmptyString: !1,
                                interpolation: {
                                    escapeValue: !1
                                },
                                detection: {
                                    checkWhitelist: !1,
                                    order: ["querystring", "navigator", "htmlTag", "path", "subdomain"],
                                    caches: []
                                },
                                backend: {
                                    fallback: "en",
                                    loadPath: "https://cdn.jsdelivr.net/npm/p5/translations/{{lng}}/{{ns}}.json"
                                },
                                partialBundledLanguages: !0,
                                resources: void 0
                            }).then(function(e) {
                                r.translator = e
                            }, function(e) {
                                return console.debug("Translations failed to load (".concat(e, ")"))
                            })
                        }, r.availableTranslatorLanguages = function() {
                            return o.default.languages
                        }, r.currentTranslatorLanguage = function(e) {
                            return o.default.language
                        }, r.setTranslatorLanguage = function(e) {
                            return o.default.changeLanguage(e || void 0, function(e) {
                                return console.debug("Translations failed to load (".concat(e, ")"))
                            })
                        }
                    }, {
                        "../../translations": void 0,
                        "../../translations/dev": void 0,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        i18next: 3,
                        "i18next-browser-languagedetector": 3
                    }],
                    282: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("./main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype.pushStyle = function() {
                            throw new Error("pushStyle() not used, see push()")
                        }, e.default.prototype.popStyle = function() {
                            throw new Error("popStyle() not used, see pop()")
                        }, e.default.prototype.popMatrix = function() {
                            throw new Error("popMatrix() not used, see pop()")
                        }, e.default.prototype.pushMatrix = function() {
                            throw new Error("pushMatrix() not used, see push()")
                        }, r.default = e = e.default
                    }, {
                        "./main": 283
                    }],
                    283: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-own-property-names"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.get-own-property-names"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, e("./shim");
                        var n = (e => {
                            if (e && e.__esModule) return e;
                            if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                default: e
                            };
                            var t = a();
                            if (t && t.has(e)) return t.get(e);
                            var r, o, n = {},
                                s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                            for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                            return n.default = e, t && t.set(e, n), n
                        })(e("./constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }
                        s(g.prototype, [{
                            key: "_initializeInstanceVariables",
                            value: function() {
                                this._accessibleOutputs = {
                                    text: !1,
                                    grid: !1,
                                    textLabel: !1,
                                    gridLabel: !1
                                }, this._styles = [], this._bezierDetail = 20, this._curveDetail = 20, this._colorMode = n.RGB, this._colorMaxes = {
                                    rgb: [255, 255, 255, 255],
                                    hsb: [360, 100, 100, 1],
                                    hsl: [360, 100, 100, 1]
                                }, this._downKeys = {}
                            }
                        }, {
                            key: "registerPreloadMethod",
                            value: function(e, t) {
                                g.prototype._preloadMethods.hasOwnProperty(e) || (g.prototype._preloadMethods[e] = t)
                            }
                        }, {
                            key: "registerMethod",
                            value: function(e, t) {
                                var r = this || g.prototype;
                                r._registeredMethods.hasOwnProperty(e) || (r._registeredMethods[e] = []), r._registeredMethods[e].push(t)
                            }
                        }, {
                            key: "unregisterMethod",
                            value: function(e, t) {
                                var r = this || g.prototype;
                                if (r._registeredMethods.hasOwnProperty(e)) {
                                    for (var o = r._registeredMethods[e], n = [], s = 0; s < o.length; s++) o[s] === t && n.push(s);
                                    for (var i = n.length - 1; 0 <= i; i--) o.splice(n[i], 1)
                                }
                            }
                        }, {
                            key: "_createFriendlyGlobalFunctionBinder",
                            value: function() {
                                var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
                                    r = e.globalObject || window;
                                return e.log || console.log.bind(console),
                                    function(e, t) {
                                        g.disableFriendlyErrors, r[e] = t
                                    }
                            }
                        }]);
                        var l, c = g;

                        function g(e, t) {
                            var d = this;
                            if (!(this instanceof g)) throw new TypeError("Cannot call a class as a function");
                            this._setupDone = !1, this._preloadDone = !1, this._pixelDensity = Math.ceil(window.devicePixelRatio) || 1, this._maxAllowedPixelDimensions = 0, this._userNode = t, this._curElement = null, this._elements = [], this._glAttributes = null, this._requestAnimId = 0, this._preloadCount = 0, this._isGlobal = !1, this._loop = !0, this._startListener = null, this._initializeInstanceVariables(), this._defaultCanvasSize = {
                                width: 100,
                                height: 100
                            }, this._events = {
                                mousemove: null,
                                mousedown: null,
                                mouseup: null,
                                dragend: null,
                                dragover: null,
                                click: null,
                                dblclick: null,
                                mouseover: null,
                                mouseout: null,
                                keydown: null,
                                keyup: null,
                                keypress: null,
                                touchstart: null,
                                touchmove: null,
                                touchend: null,
                                resize: null,
                                blur: null
                            }, this._millisStart = -1, this._recording = !1, this.touchstart = !1, this.touchend = !1, this._lcg_random_state = null, this._gaussian_previous = !1, this._events.wheel = null, this._loadingScreenId = "p5_loading", this._registeredMethods = {};
                            var t = Object.getOwnPropertyNames(g.prototype._registeredMethods),
                                r = !0,
                                o = !1,
                                n = void 0;
                            try {
                                for (var s, i = t[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) {
                                    var a = s.value;
                                    this._registeredMethods[a] = g.prototype._registeredMethods[a].slice()
                                }
                            } catch (e) {
                                o = !0, n = e
                            } finally {
                                try {
                                    r || null == i.return || i.return()
                                } finally {
                                    if (o) throw n
                                }
                            }
                            window.DeviceOrientationEvent && (this._events.deviceorientation = null), window.DeviceMotionEvent && !window._isNodeWebkit && (this._events.devicemotion = null), g.prototype.callRegisteredHooksFor = function(e) {
                                var t = this || g.prototype,
                                    r = this._isGlobal ? window : this;
                                if (t._registeredMethods.hasOwnProperty(e)) {
                                    var t = t._registeredMethods[e],
                                        o = !0,
                                        e = !1,
                                        n = void 0;
                                    try {
                                        for (var s, i = t[Symbol.iterator](); !(o = (s = i.next()).done); o = !0) {
                                            var a = s.value;
                                            "function" == typeof a && a.call(r)
                                        }
                                    } catch (t) {
                                        e = !0, n = t
                                    } finally {
                                        try {
                                            o || null == i.return || i.return()
                                        } finally {
                                            if (e) throw n
                                        }
                                    }
                                }
                            }, this._start = function() {
                                d._userNode && "string" == typeof d._userNode && (d._userNode = document.getElementById(d._userNode));
                                var e = d._isGlobal ? window : d;
                                if (e.preload) {
                                    d.callRegisteredHooksFor("beforePreload");
                                    var t, r = document.getElementById(d._loadingScreenId),
                                        o = (r || ((r = document.createElement("div")).innerHTML = "Loading...", r.style.position = "absolute", r.id = d._loadingScreenId, (d._userNode || document.body).appendChild(r)), d._preloadMethods);
                                    for (t in o) {
                                        o[t] = o[t] || g;
                                        var n = o[t];
                                        n !== g.prototype && n !== g || (d._isGlobal && (window[t] = d._wrapPreload(d, t)), n = d), d._registeredPreloadMethods[t] = n[t], n[t] = d._wrapPreload(n, t)
                                    }
                                    e.preload(), d._runIfPreloadsAreDone()
                                } else d._setup(), d._recording || d._draw()
                            }, this._runIfPreloadsAreDone = function() {
                                var e, t = this._isGlobal ? window : this;
                                0 === t._preloadCount && ((e = document.getElementById(t._loadingScreenId)) && e.parentNode.removeChild(e), this.callRegisteredHooksFor("afterPreload"), this._setupDone || (this._lastTargetFrameTime = window.performance.now(), this._lastRealFrameTime = window.performance.now(), t._setup(), this._recording) || t._draw())
                            }, this._decrementPreload = function() {
                                var e = this._isGlobal ? window : this;
                                e._preloadDone || "function" != typeof e.preload || (e._setProperty("_preloadCount", e._preloadCount - 1), e._runIfPreloadsAreDone())
                            }, this._wrapPreload = function(o, n) {
                                var s = this;
                                return function() {
                                    s._incrementPreload();
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    return s._registeredPreloadMethods[n].apply(o, t)
                                }
                            }, this._incrementPreload = function() {
                                var e = this._isGlobal ? window : this;
                                e._preloadDone || e._setProperty("_preloadCount", e._preloadCount + 1)
                            }, this._setup = function() {
                                d.callRegisteredHooksFor("beforeSetup"), d.createCanvas(d._defaultCanvasSize.width, d._defaultCanvasSize.height, "p2d");
                                var e = d._isGlobal ? window : d;
                                if ("function" == typeof e.preload)
                                    for (var t in d._preloadMethods) e[t] = d._preloadMethods[t][t], e[t] && d && (e[t] = e[t].bind(d));
                                d._millisStart = window.performance.now(), e._preloadDone = !0, "function" == typeof e.setup && e.setup();
                                var r = document.getElementsByTagName("canvas"),
                                    o = !0,
                                    n = !1,
                                    s = void 0;
                                try {
                                    for (var i, a = r[Symbol.iterator](); !(o = (i = a.next()).done); o = !0) {
                                        var l = i.value;
                                        "true" === l.dataset.hidden && (l.style.visibility = "", delete l.dataset.hidden)
                                    }
                                } catch (e) {
                                    n = !0, s = e
                                } finally {
                                    try {
                                        o || null == a.return || a.return()
                                    } finally {
                                        if (n) throw s
                                    }
                                }
                                d._lastTargetFrameTime = window.performance.now(), d._lastRealFrameTime = window.performance.now(), d._setupDone = !0, (d._accessibleOutputs.grid || d._accessibleOutputs.text) && d._updateAccsOutput(), d.callRegisteredHooksFor("afterSetup")
                            }, this._draw = function(e) {
                                var t = (e = e || window.performance.now()) - d._lastTargetFrameTime,
                                    r = 1e3 / d._targetFrameRate;
                                (!d._loop || r - 5 <= t) && (d.deltaTime = e - d._lastRealFrameTime, d._setProperty("deltaTime", d.deltaTime), d._frameRate = 1e3 / d.deltaTime, d.redraw(), d._lastTargetFrameTime = Math.max(d._lastTargetFrameTime + r, e), d._lastRealFrameTime = e, void 0 !== d._updateMouseCoords) && (d._updateMouseCoords(), d._setProperty("movedX", 0), d._setProperty("movedY", 0)), d._loop && (d._requestAnimId = window.requestAnimationFrame(d._draw))
                            }, this._setProperty = function(e, t) {
                                d[e] = t, d._isGlobal && (window[e] = t)
                            }, this.remove = function() {
                                if (d._startListener && window.removeEventListener("load", d._startListener, !1), (r = document.getElementById(d._loadingScreenId)) && (r.parentNode.removeChild(r), d._incrementPreload()), d._curElement) {
                                    for (var e in d._loop = !1, d._requestAnimId && window.cancelAnimationFrame(d._requestAnimId), d._events) window.removeEventListener(e, d._events[e]);
                                    var t = !0,
                                        r = !1,
                                        o = void 0;
                                    try {
                                        for (var n, s = d._elements[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                            var i, a = n.value;
                                            for (i in a.elt && a.elt.parentNode && a.elt.parentNode.removeChild(a.elt), a._events) a.elt.removeEventListener(i, a._events[i])
                                        }
                                    } catch (e) {
                                        r = !0, o = e
                                    } finally {
                                        try {
                                            t || null == s.return || s.return()
                                        } finally {
                                            if (r) throw o
                                        }
                                    }
                                    var l = d;
                                    d._registeredMethods.remove.forEach(function(e) {
                                        void 0 !== e && e.call(l)
                                    })
                                }
                                if (d._isGlobal) {
                                    for (var c in g.prototype) try {
                                        delete window[c]
                                    } catch (e) {
                                        window[c] = void 0
                                    }
                                    for (var u in d)
                                        if (d.hasOwnProperty(u)) try {
                                            delete window[u]
                                        } catch (e) {
                                            window[u] = void 0
                                        }
                                    g.instance = null
                                }
                            }, this._updateWindowSize(), this._registeredMethods.init.forEach(function(e) {
                                void 0 !== e && e.call(this)
                            }, this), this._setupPromisePreloads();
                            var l, c, u = this._createFriendlyGlobalFunctionBinder();
                            if (e) e(this), g._checkForUserDefinedFunctions(this);
                            else {
                                for (var h in this._isGlobal = !0, g.instance = this, g.prototype) "function" == typeof g.prototype[h] ? (l = h.substring(2), this._events.hasOwnProperty(l) || (Math.hasOwnProperty(h) && Math[h] === g.prototype[h] ? u(h, g.prototype[h]) : u(h, g.prototype[h].bind(this)))) : u(h, g.prototype[h]);
                                for (var f in this) this.hasOwnProperty(f) && u(f, this[f])
                            }
                            for (c in this._events) {
                                var p = this["_on".concat(c)];
                                p && (p = p.bind(this), window.addEventListener(c, p, {
                                    passive: !1
                                }), this._events[c] = p)
                            }

                            function m() {
                                d._setProperty("focused", !0)
                            }

                            function y() {
                                d._setProperty("focused", !1)
                            }
                            window.addEventListener("focus", m), window.addEventListener("blur", y), this.registerMethod("remove", function() {
                                window.removeEventListener("focus", m), window.removeEventListener("blur", y)
                            }), "complete" === document.readyState ? this._start() : (this._startListener = this._start.bind(this), window.addEventListener("load", this._startListener, !1))
                        }
                        for (l in c.instance = null, c.disableFriendlyErrors = !1, n) c.prototype[l] = n[l];
                        c.VERSION = n.VERSION, c.prototype._preloadMethods = {
                            loadJSON: c.prototype,
                            loadImage: c.prototype,
                            loadStrings: c.prototype,
                            loadXML: c.prototype,
                            loadBytes: c.prototype,
                            loadTable: c.prototype,
                            loadFont: c.prototype,
                            loadModel: c.prototype,
                            loadShader: c.prototype
                        }, c.prototype._registeredMethods = {
                            init: [],
                            pre: [],
                            post: [],
                            remove: []
                        }, c.prototype._registeredPreloadMethods = {}, r.default = c
                    }, {
                        "./constants": 272,
                        "./shim": 294,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-own-property-names": 187,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    284: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o, n, s = (e = e("./main")) && e.__esModule ? e : {
                            default: e
                        };

                        function i(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function a(e, t) {
                            if (!(this instanceof a)) throw new TypeError("Cannot call a class as a function");
                            this.elt = e, this._pInst = this._pixelsState = t, this._events = {}, this.width = this.elt.offsetWidth, this.height = this.elt.offsetHeight
                        }
                        s.default.Element = (n = [{
                            key: "_adjustListener",
                            value: function(e, t, r) {
                                return !1 === t ? s.default.Element._detachListener(e, r) : s.default.Element._attachListener(e, t, r), this
                            }
                        }, {
                            key: "_attachListener",
                            value: function(e, t, r) {
                                r._events[e] && s.default.Element._detachListener(e, r), t = t.bind(r), r.elt.addEventListener(e, t, !1), r._events[e] = t
                            }
                        }, {
                            key: "_detachListener",
                            value: function(e, t) {
                                var r = t._events[e];
                                t.elt.removeEventListener(e, r, !1), t._events[e] = null
                            }
                        }], i((o = a).prototype, [{
                            key: "parent",
                            value: function(e) {
                                return void 0 === e ? this.elt.parentNode : ("string" == typeof e ? ("#" === e[0] && (e = e.substring(1)), e = document.getElementById(e)) : e instanceof s.default.Element && (e = e.elt), e.appendChild(this.elt), this)
                            }
                        }, {
                            key: "id",
                            value: function(e) {
                                return void 0 === e ? this.elt.id : (this.elt.id = e, this.width = this.elt.offsetWidth, this.height = this.elt.offsetHeight, this)
                            }
                        }, {
                            key: "class",
                            value: function(e) {
                                return void 0 === e ? this.elt.className : (this.elt.className = e, this)
                            }
                        }, {
                            key: "mousePressed",
                            value: function(t) {
                                return s.default.Element._adjustListener("mousedown", function(e) {
                                    return this._pInst._setProperty("mouseIsPressed", !0), this._pInst._setMouseButton(e), t.call(this, e)
                                }, this), this
                            }
                        }, {
                            key: "doubleClicked",
                            value: function(e) {
                                return s.default.Element._adjustListener("dblclick", e, this), this
                            }
                        }, {
                            key: "mouseWheel",
                            value: function(e) {
                                return s.default.Element._adjustListener("wheel", e, this), this
                            }
                        }, {
                            key: "mouseReleased",
                            value: function(e) {
                                return s.default.Element._adjustListener("mouseup", e, this), this
                            }
                        }, {
                            key: "mouseClicked",
                            value: function(e) {
                                return s.default.Element._adjustListener("click", e, this), this
                            }
                        }, {
                            key: "mouseMoved",
                            value: function(e) {
                                return s.default.Element._adjustListener("mousemove", e, this), this
                            }
                        }, {
                            key: "mouseOver",
                            value: function(e) {
                                return s.default.Element._adjustListener("mouseover", e, this), this
                            }
                        }, {
                            key: "mouseOut",
                            value: function(e) {
                                return s.default.Element._adjustListener("mouseout", e, this), this
                            }
                        }, {
                            key: "touchStarted",
                            value: function(e) {
                                return s.default.Element._adjustListener("touchstart", e, this), this
                            }
                        }, {
                            key: "touchMoved",
                            value: function(e) {
                                return s.default.Element._adjustListener("touchmove", e, this), this
                            }
                        }, {
                            key: "touchEnded",
                            value: function(e) {
                                return s.default.Element._adjustListener("touchend", e, this), this
                            }
                        }, {
                            key: "dragOver",
                            value: function(e) {
                                return s.default.Element._adjustListener("dragover", e, this), this
                            }
                        }, {
                            key: "dragLeave",
                            value: function(e) {
                                return s.default.Element._adjustListener("dragleave", e, this), this
                            }
                        }, {
                            key: "_setProperty",
                            value: function(e, t) {
                                this[e] = t
                            }
                        }]), i(o, n), a), e = s.default.Element, r.default = e
                    }, {
                        "./main": 283
                    }],
                    285: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.get-prototype-of"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var u = (l = e("./main")) && l.__esModule ? l : {
                                default: l
                            },
                            d = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("./constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function n(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function s(e, t) {
                            return (s = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function h(e, t) {
                            return !t || "object" !== i(t) && "function" != typeof t ? f(e) : t
                        }

                        function f(e) {
                            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                            return e
                        }

                        function p(e) {
                            return (p = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }
                        u.default.Graphics = (e => {
                            var t = c;
                            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                            t.prototype = Object.create(e && e.prototype, {
                                constructor: {
                                    value: t,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), e && s(t, e);
                            var r, l = function() {
                                var e, t = p(r);
                                return h(this, (() => {
                                    if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                        if ("function" == typeof Proxy) return 1;
                                        try {
                                            return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                        } catch (e) {}
                                    }
                                })() ? (e = p(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments))
                            };

                            function c(e, t, r, o, n) {
                                var s;
                                if (!(this instanceof c)) throw new TypeError("Cannot call a class as a function");
                                a = n || document.createElement("canvas"), (s = l.call(this, a, o)).canvas = a;
                                var i, a = r || d.P2D,
                                    r = o._userNode || document.body;
                                for (i in n || r.appendChild(s.canvas), u.default.prototype) s[i] || ("function" == typeof u.default.prototype[i] ? s[i] = u.default.prototype[i].bind(f(s)) : s[i] = u.default.prototype[i]);
                                return u.default.prototype._initializeInstanceVariables.apply(f(s)), s.width = e, s.height = t, s._pixelDensity = o._pixelDensity, a === d.WEBGL ? (s._renderer = new u.default.RendererGL(s.canvas, f(s), !1), e = (n = s._renderer._adjustDimensions(e, t)).adjustedWidth, t = n.adjustedHeight) : s._renderer = new u.default.Renderer2D(s.canvas, f(s), !1), o._elements.push(f(s)), Object.defineProperty(f(s), "deltaTime", {
                                    get: function() {
                                        return this._pInst.deltaTime
                                    }
                                }), s._renderer.resize(e, t), s._renderer._applyDefaults(), h(s, f(s))
                            }
                            return n((t = r = c).prototype, [{
                                key: "reset",
                                value: function() {
                                    this._renderer.resetMatrix(), this._renderer.isP3D && this._renderer._update()
                                }
                            }, {
                                key: "remove",
                                value: function() {
                                    this.elt.parentNode && this.elt.parentNode.removeChild(this.elt);
                                    var e, t = this._pInst._elements.indexOf(this);
                                    for (e in -1 !== t && this._pInst._elements.splice(t, 1), this._events) this.elt.removeEventListener(e, this._events[e]);
                                    this._renderer = void 0, this.canvas = void 0, this.elt = void 0
                                }
                            }, {
                                key: "createFramebuffer",
                                value: function(e) {
                                    return new u.default.Framebuffer(this, e)
                                }
                            }]), c
                        })(u.default.Element);
                        var l = u.default.Graphics;
                        r.default = l
                    }, {
                        "./constants": 272,
                        "./main": 283,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    286: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (n = e("./main")) && n.__esModule ? n : {
                                default: n
                            },
                            A = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== l(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = i();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function i() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, i = function() {
                                return e
                            }, e)
                        }

                        function l(e) {
                            return (l = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }

                        function c(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function u(e, t) {
                            return (u = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function d(e) {
                            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                            return e
                        }

                        function h(e) {
                            return (h = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }
                        var n = (e => {
                            var t = s;
                            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                            t.prototype = Object.create(e && e.prototype, {
                                constructor: {
                                    value: t,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), e && u(t, e);
                            var r, n = function() {
                                var e = h(r),
                                    t = (() => {
                                        if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                            if ("function" == typeof Proxy) return 1;
                                            try {
                                                return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                            } catch (e) {}
                                        }
                                    })() ? (t = h(this).constructor, Reflect.construct(e, arguments, t)) : e.apply(this, arguments),
                                    e = this;
                                return !(t = t) || "object" !== l(t) && "function" != typeof t ? d(e) : t
                            };

                            function s(e, t, r) {
                                var o;
                                if (this instanceof s) return (o = n.call(this, e, t)).canvas = e, o._pixelsState = t, r ? (o._isMainCanvas = !0, o._pInst._setProperty("_curElement", d(o)), o._pInst._setProperty("canvas", o.canvas), o._pInst._setProperty("width", o.width), o._pInst._setProperty("height", o.height)) : (o.canvas.style.display = "none", o._styles = []), o._clipping = !1, o._clipInvert = !1, o._textSize = 12, o._textLeading = 15, o._textFont = "sans-serif", o._textStyle = A.NORMAL, o._textAscent = null, o._textDescent = null, o._textAlign = A.LEFT, o._textBaseline = A.BASELINE, o._textWrap = A.WORD, o._rectMode = A.CORNER, o._ellipseMode = A.CENTER, o._curveTightness = 0, o._imageMode = A.CORNER, o._tint = null, o._doStroke = !0, o._doFill = !0, o._strokeSet = !1, o._fillSet = !1, o._leadingSet = !1, o._pushPopDepth = 0, o;
                                throw new TypeError("Cannot call a class as a function")
                            }
                            return c((t = r = s).prototype, [{
                                key: "push",
                                value: function() {
                                    return this._pushPopDepth++, {
                                        properties: {
                                            _doStroke: this._doStroke,
                                            _strokeSet: this._strokeSet,
                                            _doFill: this._doFill,
                                            _fillSet: this._fillSet,
                                            _tint: this._tint,
                                            _imageMode: this._imageMode,
                                            _rectMode: this._rectMode,
                                            _ellipseMode: this._ellipseMode,
                                            _textFont: this._textFont,
                                            _textLeading: this._textLeading,
                                            _leadingSet: this._leadingSet,
                                            _textSize: this._textSize,
                                            _textAlign: this._textAlign,
                                            _textBaseline: this._textBaseline,
                                            _textStyle: this._textStyle,
                                            _textWrap: this._textWrap
                                        }
                                    }
                                }
                            }, {
                                key: "pop",
                                value: function(e) {
                                    this._pushPopDepth--, e.properties && Object.assign(this, e.properties)
                                }
                            }, {
                                key: "beginClip",
                                value: function() {
                                    var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
                                    if (this._clipping) throw new Error("It looks like you're trying to clip while already in the middle of clipping. Did you forget to endClip()?");
                                    this._clipping = !0, this._clipInvert = e.invert
                                }
                            }, {
                                key: "endClip",
                                value: function() {
                                    if (!this._clipping) throw new Error("It looks like you've called endClip() without beginClip(). Did you forget to call beginClip() first?");
                                    this._clipping = !1
                                }
                            }, {
                                key: "resize",
                                value: function(e, t) {
                                    this.width = e, this.height = t, this.elt.width = e * this._pInst._pixelDensity, this.elt.height = t * this._pInst._pixelDensity, this.elt.style.width = "".concat(e, "px"), this.elt.style.height = "".concat(t, "px"), this._isMainCanvas && (this._pInst._setProperty("width", this.width), this._pInst._setProperty("height", this.height))
                                }
                            }, {
                                key: "get",
                                value: function(e, t, r, o) {
                                    var n = this._pixelsState,
                                        s = n._pixelDensity,
                                        i = this.canvas;
                                    if (void 0 === e && void 0 === t) e = t = 0, r = n.width, o = n.height;
                                    else if (e *= s, t *= s, void 0 === r && void 0 === o) return e < 0 || t < 0 || e >= i.width || t >= i.height ? [0, 0, 0, 0] : this._getPixel(e, t);
                                    return (n = new a.default.Image(r * s, o * s)).pixelDensity(s), n.canvas.getContext("2d").drawImage(i, e, t, r * s, o * s, 0, 0, r * s, o * s), n
                                }
                            }, {
                                key: "textLeading",
                                value: function(e) {
                                    return "number" == typeof e ? (this._setProperty("_leadingSet", !0), this._setProperty("_textLeading", e), this._pInst) : this._textLeading
                                }
                            }, {
                                key: "textStyle",
                                value: function(e) {
                                    return e ? (e !== A.NORMAL && e !== A.ITALIC && e !== A.BOLD && e !== A.BOLDITALIC || this._setProperty("_textStyle", e), this._applyTextProperties()) : this._textStyle
                                }
                            }, {
                                key: "textAscent",
                                value: function() {
                                    return null === this._textAscent && this._updateTextMetrics(), this._textAscent
                                }
                            }, {
                                key: "textDescent",
                                value: function() {
                                    return null === this._textDescent && this._updateTextMetrics(), this._textDescent
                                }
                            }, {
                                key: "textAlign",
                                value: function(e, t) {
                                    return void 0 !== e ? (this._setProperty("_textAlign", e), void 0 !== t && this._setProperty("_textBaseline", t), this._applyTextProperties()) : {
                                        horizontal: this._textAlign,
                                        vertical: this._textBaseline
                                    }
                                }
                            }, {
                                key: "textWrap",
                                value: function(e) {
                                    return this._setProperty("_textWrap", e), this._textWrap
                                }
                            }, {
                                key: "text",
                                value: function(e, t, r, o, n) {
                                    var s, i, a, l, c = this._pInst,
                                        u = this._textWrap,
                                        d = Number.MAX_VALUE,
                                        h = r;
                                    if ((this._doFill || this._doStroke) && void 0 !== e) {
                                        if (s = (e = (e = "string" != typeof e ? e.toString() : e).replace(/(\t)/g, "  ")).split("\n"), void 0 !== o) {
                                            switch (this._rectMode === A.CENTER && (t -= o / 2), this._textAlign) {
                                                case A.CENTER:
                                                    t += o / 2;
                                                    break;
                                                case A.RIGHT:
                                                    t += o
                                            }
                                            if (void 0 !== n) {
                                                this._rectMode === A.CENTER && (r -= n / 2, h -= n / 2);
                                                var e = r,
                                                    f = c.textAscent();
                                                switch (this._textBaseline) {
                                                    case A.BOTTOM:
                                                        l = r + n, r = Math.max(l, r), h += f;
                                                        break;
                                                    case A.CENTER:
                                                        l = r + n / 2, r = Math.max(l, r), h += f / 2
                                                }
                                                d = r + n - f, this._textBaseline === A.CENTER && (d = e + n - f / 2)
                                            } else this._textBaseline !== A.BOTTOM && this._textBaseline !== A.CENTER || (h = r - (e = c.textSize() * this._textLeading) / 2, d = r + e / 2);
                                            if (u === A.WORD) {
                                                for (var p = [], m = 0; m < s.length; m++) {
                                                    for (var y = "", g = s[m].split(" "), v = 0; v < g.length; v++) i = "".concat(y + g[v]) + " ", y = o < (a = this.textWidth(i)) && 0 < y.length ? (p.push(y), "".concat(g[v]) + " ") : i;
                                                    p.push(y)
                                                }
                                                var b = 0;
                                                this._textBaseline === A.CENTER ? b = (p.length - 1) * c.textLeading() / 2 : this._textBaseline === A.BOTTOM && (b = (p.length - 1) * c.textLeading());
                                                for (var _ = 0; _ < s.length; _++) {
                                                    for (var y = "", g = s[_].split(" "), x = 0; x < g.length; x++) i = "".concat(y + g[x]) + " ", o < (a = this.textWidth(i)) && 0 < y.length ? (this._renderText(c, y.trim(), t, r - b, d, h), y = "".concat(g[x]) + " ", r += c.textLeading()) : y = i;
                                                    this._renderText(c, y.trim(), t, r - b, d, h), r += c.textLeading()
                                                }
                                            } else {
                                                for (var w = [], j = 0; j < s.length; j++)
                                                    for (var S = s[j].split(y = ""), T = 0; T < S.length; T++) i = "".concat(y + S[T]), (a = this.textWidth(i)) <= o ? y += S[T] : o < a && 0 < y.length && (w.push(y), y = "".concat(S[T]));
                                                w.push(y);
                                                var E = 0;
                                                this._textBaseline === A.CENTER ? E = (w.length - 1) * c.textLeading() / 2 : this._textBaseline === A.BOTTOM && (E = (w.length - 1) * c.textLeading());
                                                for (var k = 0; k < s.length; k++)
                                                    for (var S = s[k].split(y = ""), M = 0; M < S.length; M++) i = "".concat(y + S[M]), (a = this.textWidth(i)) <= o ? y += S[M] : o < a && 0 < y.length && (this._renderText(c, y.trim(), t, r - E, d, h), r += c.textLeading(), y = "".concat(S[M]));
                                                this._renderText(c, y.trim(), t, r - E, d, h), r += c.textLeading()
                                            }
                                        } else {
                                            var O = 0;
                                            this._textBaseline === A.CENTER ? O = (s.length - 1) * c.textLeading() / 2 : this._textBaseline === A.BOTTOM && (O = (s.length - 1) * c.textLeading());
                                            for (var C = 0; C < s.length; C++) this._renderText(c, s[C], t, r - O, d, h - O), r += c.textLeading()
                                        }
                                        return c
                                    }
                                }
                            }, {
                                key: "_applyDefaults",
                                value: function() {
                                    return this
                                }
                            }, {
                                key: "_isOpenType",
                                value: function() {
                                    var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : this._textFont;
                                    return "object" === l(e) && e.font && e.font.supported
                                }
                            }, {
                                key: "_updateTextMetrics",
                                value: function() {
                                    var e, t, r, o, n, s;
                                    return this._isOpenType() ? (this._setProperty("_textAscent", this._textFont._textAscent()), this._setProperty("_textDescent", this._textFont._textDescent())) : ((e = document.createElement("span")).style.fontFamily = this._textFont, e.style.fontSize = "".concat(this._textSize, "px"), e.innerHTML = "ABCjgq|", (s = document.createElement("div")).style.display = "inline-block", s.style.width = "1px", s.style.height = "0px", (t = document.createElement("div")).appendChild(e), t.appendChild(s), t.style.height = "0px", t.style.overflow = "hidden", document.body.appendChild(t), s.style.verticalAlign = "baseline", o = f(s), n = f(e), r = o[1] - n[1], s.style.verticalAlign = "bottom", o = f(s), n = f(e), s = o[1] - n[1] - r, document.body.removeChild(t), this._setProperty("_textAscent", r), this._setProperty("_textDescent", s)), this
                                }
                            }]), s
                        })(a.default.Element);

                        function f(e) {
                            var t = 0,
                                r = 0;
                            if (e.offsetParent)
                                for (; t += e.offsetLeft, r += e.offsetTop, e = e.offsetParent;);
                            else t += e.offsetLeft, r += e.offsetTop;
                            return [t, r]
                        }
                        n.prototype.textSize = function(e) {
                            return "number" == typeof e ? (this._setProperty("_textSize", e), this._leadingSet || this._setProperty("_textLeading", e * A._DEFAULT_LEADMULT), this._applyTextProperties()) : this._textSize
                        }, a.default.Renderer = n, e = a.default.Renderer, r.default = e
                    }, {
                        "../core/constants": 272,
                        "./main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    287: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.reflect.get"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var d = (n = e("./main")) && n.__esModule ? n : {
                                default: n
                            },
                            p = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("./constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function l(e, t, r) {
                            return (l = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(e, t, r) {
                                if (e = ((e, t) => {
                                        for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = u(e)););
                                        return e
                                    })(e, t)) return (e = Object.getOwnPropertyDescriptor(e, t)).get ? e.get.call(r) : e.value
                            })(e, t, r || e)
                        }

                        function c(e, t) {
                            return (c = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function u(e) {
                            return (u = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }
                        e("./p5.Renderer");
                        var f = "rgba(0,0,0,0)",
                            n = (e => {
                                var t = n;
                                if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                                t.prototype = Object.create(e && e.prototype, {
                                    constructor: {
                                        value: t,
                                        writable: !0,
                                        configurable: !0
                                    }
                                }), e && c(t, e);
                                var r, o = function() {
                                    var e, t = u(r),
                                        t = (e = (() => {
                                            if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                                if ("function" == typeof Proxy) return 1;
                                                try {
                                                    return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                                } catch (e) {}
                                            }
                                        })() ? (e = u(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments), this);
                                    if (!e || "object" !== i(e) && "function" != typeof e) {
                                        if (void 0 !== t) return t;
                                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                    }
                                    return e
                                };

                                function n(e, t, r) {
                                    if (this instanceof n) return (e = o.call(this, e, t, r)).drawingContext = e.canvas.getContext("2d"), e._pInst._setProperty("drawingContext", e.drawingContext), e;
                                    throw new TypeError("Cannot call a class as a function")
                                }
                                return s((t = r = n).prototype, [{
                                    key: "getFilterGraphicsLayer",
                                    value: function() {
                                        var e;
                                        return this.filterGraphicsLayer || (e = (this._pInst instanceof d.default.Graphics ? this._pInst : this)._pInst, this.filterGraphicsLayer = new d.default.Graphics(this.width, this.height, p.WEBGL, e)), this.filterGraphicsLayer.width === this.width && this.filterGraphicsLayer.height === this.height || this.filterGraphicsLayer.resizeCanvas(this.width, this.height), this.filterGraphicsLayer.pixelDensity() !== this._pInst.pixelDensity() && this.filterGraphicsLayer.pixelDensity(this._pInst.pixelDensity()), this.filterGraphicsLayer
                                    }
                                }, {
                                    key: "_applyDefaults",
                                    value: function() {
                                        this._cachedFillStyle = this._cachedStrokeStyle = void 0, this._cachedBlendMode = p.BLEND, this._setFill(p._DEFAULT_FILL), this._setStroke(p._DEFAULT_STROKE), this.drawingContext.lineCap = p.ROUND, this.drawingContext.font = "normal 12px sans-serif"
                                    }
                                }, {
                                    key: "resize",
                                    value: function(e, t) {
                                        l(u(n.prototype), "resize", this).call(this, e, t), this.drawingContext.scale(this._pInst._pixelDensity, this._pInst._pixelDensity)
                                    }
                                }, {
                                    key: "background",
                                    value: function() {
                                        var e, t;
                                        this.drawingContext.save(), this.resetMatrix(), (arguments.length <= 0 ? void 0 : arguments[0]) instanceof d.default.Image ? 0 <= (arguments.length <= 1 ? void 0 : arguments[1]) ? (e = arguments.length <= 0 ? void 0 : arguments[0], this.drawingContext.globalAlpha = (arguments.length <= 1 ? void 0 : arguments[1]) / 255, this._pInst.image(e, 0, 0, this.width, this.height)) : this._pInst.image(arguments.length <= 0 ? void 0 : arguments[0], 0, 0, this.width, this.height) : (e = this._getFill(), t = (t = this._pInst).color.apply(t, arguments), this._pInst._addAccsOutput() && this._pInst._accsBackground(t.levels), t = t.toString(), this._setFill(t), this._isErasing && this.blendMode(this._cachedBlendMode), this.drawingContext.fillRect(0, 0, this.width, this.height), this._setFill(e), this._isErasing && this._pInst.erase()), this.drawingContext.restore()
                                    }
                                }, {
                                    key: "clear",
                                    value: function() {
                                        this.drawingContext.save(), this.resetMatrix(), this.drawingContext.clearRect(0, 0, this.width, this.height), this.drawingContext.restore()
                                    }
                                }, {
                                    key: "fill",
                                    value: function() {
                                        var e = (e = this._pInst).color.apply(e, arguments);
                                        this._setFill(e.toString()), this._pInst._addAccsOutput() && this._pInst._accsCanvasColors("fill", e.levels)
                                    }
                                }, {
                                    key: "stroke",
                                    value: function() {
                                        var e = (e = this._pInst).color.apply(e, arguments);
                                        this._setStroke(e.toString()), this._pInst._addAccsOutput() && this._pInst._accsCanvasColors("stroke", e.levels)
                                    }
                                }, {
                                    key: "erase",
                                    value: function(e, t) {
                                        this._isErasing || (this._cachedFillStyle = this.drawingContext.fillStyle, e = this._pInst.color(255, e).toString(), this.drawingContext.fillStyle = e, this._cachedStrokeStyle = this.drawingContext.strokeStyle, e = this._pInst.color(255, t).toString(), this.drawingContext.strokeStyle = e, t = this._cachedBlendMode, this.blendMode(p.REMOVE), this._cachedBlendMode = t, this._isErasing = !0)
                                    }
                                }, {
                                    key: "noErase",
                                    value: function() {
                                        this._isErasing && (this.drawingContext.fillStyle = this._cachedFillStyle, this.drawingContext.strokeStyle = this._cachedStrokeStyle, this.blendMode(this._cachedBlendMode), this._isErasing = !1)
                                    }
                                }, {
                                    key: "beginClip",
                                    value: function() {
                                        var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {},
                                            e = (l(u(n.prototype), "beginClip", this).call(this, e), this._cachedFillStyle = this.drawingContext.fillStyle, this._pInst.color(255, 0).toString()),
                                            e = (this.drawingContext.fillStyle = e, this._cachedStrokeStyle = this.drawingContext.strokeStyle, this._pInst.color(255, 0).toString()),
                                            e = (this.drawingContext.strokeStyle = e, this._cachedBlendMode);
                                        this.blendMode(p.BLEND), this._cachedBlendMode = e, this.drawingContext.beginPath(), this._clipInvert && (this.drawingContext.moveTo(-2 * this.width, -2 * this.height), this.drawingContext.lineTo(-2 * this.width, 2 * this.height), this.drawingContext.lineTo(2 * this.width, 2 * this.height), this.drawingContext.lineTo(2 * this.width, -2 * this.height), this.drawingContext.closePath())
                                    }
                                }, {
                                    key: "endClip",
                                    value: function() {
                                        this._doFillStrokeClose(), this.drawingContext.clip(), l(u(n.prototype), "endClip", this).call(this), this.drawingContext.fillStyle = this._cachedFillStyle, this.drawingContext.strokeStyle = this._cachedStrokeStyle, this.blendMode(this._cachedBlendMode)
                                    }
                                }, {
                                    key: "image",
                                    value: function(e, t, r, o, n, s, i, a, l) {
                                        e.gifProperties && e._animateGif(this._pInst);
                                        try {
                                            d.default.MediaElement && e instanceof d.default.MediaElement && e._ensureCanvas();
                                            var c = (c = this._tint && e.canvas ? this._getTintedImageCanvas(e) : c) || e.canvas || e.elt,
                                                u = 1;
                                            e.width && 0 < e.width && (u = c.width / e.width), this._isErasing && this.blendMode(this._cachedBlendMode), this.drawingContext.drawImage(c, u * t, u * r, u * o, u * n, s, i, a, l), this._isErasing && this._pInst.erase()
                                        } catch (e) {
                                            if ("NS_ERROR_NOT_AVAILABLE" !== e.name) throw e
                                        }
                                    }
                                }, {
                                    key: "_getTintedImageCanvas",
                                    value: function(e) {
                                        if (!e.canvas) return e;
                                        e.tintCanvas || (e.tintCanvas = document.createElement("canvas")), e.tintCanvas.width !== e.canvas.width && (e.tintCanvas.width = e.canvas.width), e.tintCanvas.height !== e.canvas.height && (e.tintCanvas.height = e.canvas.height);
                                        var t = e.tintCanvas.getContext("2d");
                                        return t.save(), t.clearRect(0, 0, e.canvas.width, e.canvas.height), (this._tint[0] < 255 || this._tint[1] < 255 || this._tint[2] < 255) && (t.drawImage(e.canvas, 0, 0), t.globalCompositeOperation = "luminosity", t.drawImage(e.canvas, 0, 0), t.globalCompositeOperation = "color", t.drawImage(e.canvas, 0, 0), t.globalCompositeOperation = "multiply", t.fillStyle = "rgb(".concat(this._tint.slice(0, 3).join(", "), ")"), t.fillRect(0, 0, e.canvas.width, e.canvas.height), t.globalCompositeOperation = "destination-in"), t.globalAlpha = this._tint[3] / 255, t.drawImage(e.canvas, 0, 0), t.restore(), e.tintCanvas
                                    }
                                }, {
                                    key: "blendMode",
                                    value: function(e) {
                                        if (e === p.SUBTRACT) console.warn("blendMode(SUBTRACT) only works in WEBGL mode.");
                                        else {
                                            if (e !== p.BLEND && e !== p.REMOVE && e !== p.DARKEST && e !== p.LIGHTEST && e !== p.DIFFERENCE && e !== p.MULTIPLY && e !== p.EXCLUSION && e !== p.SCREEN && e !== p.REPLACE && e !== p.OVERLAY && e !== p.HARD_LIGHT && e !== p.SOFT_LIGHT && e !== p.DODGE && e !== p.BURN && e !== p.ADD) throw new Error("Mode ".concat(e, " not recognized."));
                                            this._cachedBlendMode = e, this.drawingContext.globalCompositeOperation = e
                                        }
                                    }
                                }, {
                                    key: "blend",
                                    value: function() {
                                        for (var e = this.drawingContext.globalCompositeOperation, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                        var n = r[r.length - 1],
                                            s = Array.prototype.slice.call(r, 0, r.length - 1);
                                        this.drawingContext.globalCompositeOperation = n, d.default.prototype.copy.apply(this, s), this.drawingContext.globalCompositeOperation = e
                                    }
                                }, {
                                    key: "_getPixel",
                                    value: function(e, t) {
                                        return [(e = this.drawingContext.getImageData(e, t, 1, 1).data)[0], e[1], e[2], e[3]]
                                    }
                                }, {
                                    key: "loadPixels",
                                    value: function() {
                                        var e = this._pixelsState,
                                            t = e._pixelDensity,
                                            r = this.width * t,
                                            t = this.height * t,
                                            r = this.drawingContext.getImageData(0, 0, r, t);
                                        e._setProperty("imageData", r), e._setProperty("pixels", r.data)
                                    }
                                }, {
                                    key: "set",
                                    value: function(e, t, r) {
                                        e = Math.floor(e), t = Math.floor(t);
                                        var o = this._pixelsState;
                                        if (r instanceof d.default.Image) this.drawingContext.save(), this.drawingContext.setTransform(1, 0, 0, 1, 0, 0), this.drawingContext.scale(o._pixelDensity, o._pixelDensity), this.drawingContext.clearRect(e, t, r.width, r.height), this.drawingContext.drawImage(r.canvas, e, t), this.drawingContext.restore();
                                        else {
                                            var n = 0,
                                                s = 0,
                                                i = 0,
                                                a = 0,
                                                l = 4 * (t * o._pixelDensity * (this.width * o._pixelDensity) + e * o._pixelDensity);
                                            if (o.imageData || o.loadPixels(), "number" == typeof r) l < o.pixels.length && (i = s = n = r, a = 255);
                                            else if (Array.isArray(r)) {
                                                if (r.length < 4) throw new Error("pixel array must be of the form [R, G, B, A]");
                                                l < o.pixels.length && (n = r[0], s = r[1], i = r[2], a = r[3])
                                            } else r instanceof d.default.Color && l < o.pixels.length && (n = r.levels[0], s = r.levels[1], i = r.levels[2], a = r.levels[3]);
                                            for (var c = 0; c < o._pixelDensity; c++)
                                                for (var u = 0; u < o._pixelDensity; u++) l = 4 * ((t * o._pixelDensity + u) * this.width * o._pixelDensity + (e * o._pixelDensity + c)), o.pixels[l] = n, o.pixels[l + 1] = s, o.pixels[l + 2] = i, o.pixels[l + 3] = a
                                        }
                                    }
                                }, {
                                    key: "updatePixels",
                                    value: function(e, t, r, o) {
                                        var n = this._pixelsState,
                                            s = n._pixelDensity;
                                        void 0 === e && void 0 === t && void 0 === r && void 0 === o && (t = e = 0, r = this.width, o = this.height), e *= s, t *= s, r *= s, o *= s, this.gifProperties && (this.gifProperties.frames[this.gifProperties.displayIndex].image = n.imageData), this.drawingContext.putImageData(n.imageData, 0, 0, e, t, r, o)
                                    }
                                }, {
                                    key: "arc",
                                    value: function(e, t, r, o, n, s, i) {
                                        var a = this.drawingContext,
                                            e = e + r / 2,
                                            t = t + o / 2,
                                            r = r / 2,
                                            o = o / 2,
                                            l = !(i === p.CHORD || i === p.OPEN || (s - n) % p.TWO_PI == 0);
                                        return this._doFill && (this._clipping || a.beginPath(), a.ellipse(e, t, r, o, 0, n, s), l && a.lineTo(e, t), a.closePath(), this._clipping || a.fill()), this._doStroke && (this._clipping || a.beginPath(), a.ellipse(e, t, r, o, 0, n, s), i === p.PIE && l && a.lineTo(e, t), i !== p.PIE && i !== p.CHORD || a.closePath(), this._clipping || a.stroke()), this
                                    }
                                }, {
                                    key: "ellipse",
                                    value: function(e) {
                                        var t = this.drawingContext,
                                            r = this._doFill,
                                            o = this._doStroke,
                                            n = parseFloat(e[0]),
                                            s = parseFloat(e[1]),
                                            i = parseFloat(e[2]),
                                            e = parseFloat(e[3]);
                                        if (r && !o) {
                                            if (this._getFill() === f) return this
                                        } else if (!r && o && this._getStroke() === f) return this;
                                        n += i / 2, s += e / 2, i /= 2, e /= 2, this._clipping || t.beginPath(), t.ellipse(n, s, i, e, 0, 0, 2 * Math.PI), t.closePath(), !this._clipping && r && t.fill(), !this._clipping && o && t.stroke()
                                    }
                                }, {
                                    key: "line",
                                    value: function(e, t, r, o) {
                                        var n = this.drawingContext;
                                        return this._doStroke && this._getStroke() !== f && (this._clipping || n.beginPath(), n.moveTo(e, t), n.lineTo(r, o), n.stroke()), this
                                    }
                                }, {
                                    key: "point",
                                    value: function(e, t) {
                                        var r, o, n = this.drawingContext;
                                        return this._doStroke && this._getStroke() !== f ? (r = this._getStroke(), o = this._getFill(), this._clipping || this._setFill(r), this._clipping || n.beginPath(), n.arc(e, t, n.lineWidth / 2, 0, p.TWO_PI, !1), void(this._clipping || (n.fill(), this._setFill(o)))) : this
                                    }
                                }, {
                                    key: "quad",
                                    value: function(e, t, r, o, n, s, i, a) {
                                        var l = this.drawingContext,
                                            c = this._doFill,
                                            u = this._doStroke;
                                        if (c && !u) {
                                            if (this._getFill() === f) return this
                                        } else if (!c && u && this._getStroke() === f) return this;
                                        return this._clipping || l.beginPath(), l.moveTo(e, t), l.lineTo(r, o), l.lineTo(n, s), l.lineTo(i, a), l.closePath(), !this._clipping && c && l.fill(), !this._clipping && u && l.stroke(), this
                                    }
                                }, {
                                    key: "rect",
                                    value: function(e) {
                                        var t, r, o = e[0],
                                            n = e[1],
                                            s = e[2],
                                            i = e[3],
                                            a = e[4],
                                            l = e[5],
                                            c = e[6],
                                            e = e[7],
                                            u = this.drawingContext,
                                            d = this._doFill,
                                            h = this._doStroke;
                                        if (d && !h) {
                                            if (this._getFill() === f) return this
                                        } else if (!d && h && this._getStroke() === f) return this;
                                        return this._clipping || u.beginPath(), void 0 === a ? u.rect(o, n, s, i) : (void 0 === l && (l = a), void 0 === c && (c = l), void 0 === e && (e = c), h = (d = Math.abs(s)) / 2, r = (t = Math.abs(i)) / 2, u.roundRect(o, n, s, i, [t < 2 * (a = d < 2 * a ? h : a) ? r : a, l = t < 2 * (l = d < 2 * l ? h : l) ? r : l, c = t < 2 * (c = d < 2 * c ? h : c) ? r : c, e = t < 2 * (e = d < 2 * e ? h : e) ? r : e])), !this._clipping && this._doFill && u.fill(), !this._clipping && this._doStroke && u.stroke(), this
                                    }
                                }, {
                                    key: "triangle",
                                    value: function(e) {
                                        var t = this.drawingContext,
                                            r = this._doFill,
                                            o = this._doStroke,
                                            n = e[0],
                                            s = e[1],
                                            i = e[2],
                                            a = e[3],
                                            l = e[4],
                                            e = e[5];
                                        if (r && !o) {
                                            if (this._getFill() === f) return this
                                        } else if (!r && o && this._getStroke() === f) return this;
                                        this._clipping || t.beginPath(), t.moveTo(n, s), t.lineTo(i, a), t.lineTo(l, e), t.closePath(), !this._clipping && r && t.fill(), !this._clipping && o && t.stroke()
                                    }
                                }, {
                                    key: "endShape",
                                    value: function(e, t, r, o, n, s, i) {
                                        if (0 !== t.length && (this._doStroke || this._doFill)) {
                                            var a, l, c, u = e === p.CLOSE,
                                                d = (u && !s && t.push(t[0]), t.length);
                                            if (r && null === i) {
                                                if (3 < d) {
                                                    var h = [],
                                                        f = 1 - this._curveTightness;
                                                    for (this._clipping || this.drawingContext.beginPath(), this.drawingContext.moveTo(t[1][0], t[1][1]), l = 1; l + 2 < d; l++) a = t[l], h[0] = [a[0], a[1]], h[1] = [a[0] + (f * t[l + 1][0] - f * t[l - 1][0]) / 6, a[1] + (f * t[l + 1][1] - f * t[l - 1][1]) / 6], h[2] = [t[l + 1][0] + (f * t[l][0] - f * t[l + 2][0]) / 6, t[l + 1][1] + (f * t[l][1] - f * t[l + 2][1]) / 6], h[3] = [t[l + 1][0], t[l + 1][1]], this.drawingContext.bezierCurveTo(h[1][0], h[1][1], h[2][0], h[2][1], h[3][0], h[3][1]);
                                                    u && this.drawingContext.lineTo(t[l + 1][0], t[l + 1][1]), this._doFillStrokeClose(u)
                                                }
                                            } else if (o && null === i) {
                                                for (this._clipping || this.drawingContext.beginPath(), l = 0; l < d; l++) t[l].isVert ? t[l].moveTo ? this.drawingContext.moveTo(t[l][0], t[l][1]) : this.drawingContext.lineTo(t[l][0], t[l][1]) : this.drawingContext.bezierCurveTo(t[l][0], t[l][1], t[l][2], t[l][3], t[l][4], t[l][5]);
                                                this._doFillStrokeClose(u)
                                            } else if (n && null === i) {
                                                for (this._clipping || this.drawingContext.beginPath(), l = 0; l < d; l++) t[l].isVert ? t[l].moveTo ? this.drawingContext.moveTo(t[l][0], t[l][1]) : this.drawingContext.lineTo(t[l][0], t[l][1]) : this.drawingContext.quadraticCurveTo(t[l][0], t[l][1], t[l][2], t[l][3]);
                                                this._doFillStrokeClose(u)
                                            } else if (i === p.POINTS)
                                                for (l = 0; l < d; l++) a = t[l], this._doStroke && this._pInst.stroke(a[6]), this._pInst.point(a[0], a[1]);
                                            else if (i === p.LINES)
                                                for (l = 0; l + 1 < d; l += 2) a = t[l], this._doStroke && this._pInst.stroke(t[l + 1][6]), this._pInst.line(a[0], a[1], t[l + 1][0], t[l + 1][1]);
                                            else if (i === p.TRIANGLES)
                                                for (l = 0; l + 2 < d; l += 3) a = t[l], this._clipping || this.drawingContext.beginPath(), this.drawingContext.moveTo(a[0], a[1]), this.drawingContext.lineTo(t[l + 1][0], t[l + 1][1]), this.drawingContext.lineTo(t[l + 2][0], t[l + 2][1]), this.drawingContext.closePath(), !this._clipping && this._doFill && (this._pInst.fill(t[l + 2][5]), this.drawingContext.fill()), !this._clipping && this._doStroke && (this._pInst.stroke(t[l + 2][6]), this.drawingContext.stroke());
                                            else if (i === p.TRIANGLE_STRIP)
                                                for (l = 0; l + 1 < d; l++) a = t[l], this._clipping || this.drawingContext.beginPath(), this.drawingContext.moveTo(t[l + 1][0], t[l + 1][1]), this.drawingContext.lineTo(a[0], a[1]), !this._clipping && this._doStroke && this._pInst.stroke(t[l + 1][6]), !this._clipping && this._doFill && this._pInst.fill(t[l + 1][5]), l + 2 < d && (this.drawingContext.lineTo(t[l + 2][0], t[l + 2][1]), !this._clipping && this._doStroke && this._pInst.stroke(t[l + 2][6]), !this._clipping) && this._doFill && this._pInst.fill(t[l + 2][5]), this._doFillStrokeClose(u);
                                            else if (i === p.TRIANGLE_FAN) {
                                                if (2 < d) {
                                                    for (this._clipping || this.drawingContext.beginPath(), l = 2; l < d; l++) a = t[l], this.drawingContext.moveTo(t[0][0], t[0][1]), this.drawingContext.lineTo(t[l - 1][0], t[l - 1][1]), this.drawingContext.lineTo(a[0], a[1]), this.drawingContext.lineTo(t[0][0], t[0][1]), l < d - 1 && (this._doFill && a[5] !== t[l + 1][5] || this._doStroke && a[6] !== t[l + 1][6]) && (!this._clipping && this._doFill && (this._pInst.fill(a[5]), this.drawingContext.fill(), this._pInst.fill(t[l + 1][5])), !this._clipping && this._doStroke && (this._pInst.stroke(a[6]), this.drawingContext.stroke(), this._pInst.stroke(t[l + 1][6])), this.drawingContext.closePath(), this._clipping || this.drawingContext.beginPath());
                                                    this._doFillStrokeClose(u)
                                                }
                                            } else if (i === p.QUADS)
                                                for (l = 0; l + 3 < d; l += 4) {
                                                    for (a = t[l], this._clipping || this.drawingContext.beginPath(), this.drawingContext.moveTo(a[0], a[1]), c = 1; c < 4; c++) this.drawingContext.lineTo(t[l + c][0], t[l + c][1]);
                                                    this.drawingContext.lineTo(a[0], a[1]), !this._clipping && this._doFill && this._pInst.fill(t[l + 3][5]), !this._clipping && this._doStroke && this._pInst.stroke(t[l + 3][6]), this._doFillStrokeClose(u)
                                                } else if (i === p.QUAD_STRIP) {
                                                    if (3 < d)
                                                        for (l = 0; l + 1 < d; l += 2) a = t[l], this._clipping || this.drawingContext.beginPath(), l + 3 < d ? (this.drawingContext.moveTo(t[l + 2][0], t[l + 2][1]), this.drawingContext.lineTo(a[0], a[1]), this.drawingContext.lineTo(t[l + 1][0], t[l + 1][1]), this.drawingContext.lineTo(t[l + 3][0], t[l + 3][1]), !this._clipping && this._doFill && this._pInst.fill(t[l + 3][5]), !this._clipping && this._doStroke && this._pInst.stroke(t[l + 3][6])) : (this.drawingContext.moveTo(a[0], a[1]), this.drawingContext.lineTo(t[l + 1][0], t[l + 1][1])), this._doFillStrokeClose(u)
                                                } else {
                                                    for (this._clipping || this.drawingContext.beginPath(), this.drawingContext.moveTo(t[0][0], t[0][1]), l = 1; l < d; l++)(a = t[l]).isVert && (a.moveTo ? (u && this.drawingContext.closePath(), this.drawingContext.moveTo(a[0], a[1])) : this.drawingContext.lineTo(a[0], a[1]));
                                                    this._doFillStrokeClose(u)
                                                } s = n = o = r = !1, u && t.pop()
                                        }
                                        return this
                                    }
                                }, {
                                    key: "strokeCap",
                                    value: function(e) {
                                        return e !== p.ROUND && e !== p.SQUARE && e !== p.PROJECT || (this.drawingContext.lineCap = e), this
                                    }
                                }, {
                                    key: "strokeJoin",
                                    value: function(e) {
                                        return e !== p.ROUND && e !== p.BEVEL && e !== p.MITER || (this.drawingContext.lineJoin = e), this
                                    }
                                }, {
                                    key: "strokeWeight",
                                    value: function(e) {
                                        return this.drawingContext.lineWidth = void 0 === e || 0 === e ? 1e-4 : e, this
                                    }
                                }, {
                                    key: "_getFill",
                                    value: function() {
                                        return this._cachedFillStyle || (this._cachedFillStyle = this.drawingContext.fillStyle), this._cachedFillStyle
                                    }
                                }, {
                                    key: "_setFill",
                                    value: function(e) {
                                        e !== this._cachedFillStyle && (this.drawingContext.fillStyle = e, this._cachedFillStyle = e)
                                    }
                                }, {
                                    key: "_getStroke",
                                    value: function() {
                                        return this._cachedStrokeStyle || (this._cachedStrokeStyle = this.drawingContext.strokeStyle), this._cachedStrokeStyle
                                    }
                                }, {
                                    key: "_setStroke",
                                    value: function(e) {
                                        e !== this._cachedStrokeStyle && (this.drawingContext.strokeStyle = e, this._cachedStrokeStyle = e)
                                    }
                                }, {
                                    key: "bezier",
                                    value: function(e, t, r, o, n, s, i, a) {
                                        return this._pInst.beginShape(), this._pInst.vertex(e, t), this._pInst.bezierVertex(r, o, n, s, i, a), this._pInst.endShape(), this
                                    }
                                }, {
                                    key: "curve",
                                    value: function(e, t, r, o, n, s, i, a) {
                                        return this._pInst.beginShape(), this._pInst.curveVertex(e, t), this._pInst.curveVertex(r, o), this._pInst.curveVertex(n, s), this._pInst.curveVertex(i, a), this._pInst.endShape(), this
                                    }
                                }, {
                                    key: "_doFillStrokeClose",
                                    value: function(e) {
                                        e && this.drawingContext.closePath(), !this._clipping && this._doFill && this.drawingContext.fill(), !this._clipping && this._doStroke && this.drawingContext.stroke()
                                    }
                                }, {
                                    key: "applyMatrix",
                                    value: function(e, t, r, o, n, s) {
                                        this.drawingContext.transform(e, t, r, o, n, s)
                                    }
                                }, {
                                    key: "resetMatrix",
                                    value: function() {
                                        return this.drawingContext.setTransform(1, 0, 0, 1, 0, 0), this.drawingContext.scale(this._pInst._pixelDensity, this._pInst._pixelDensity), this
                                    }
                                }, {
                                    key: "rotate",
                                    value: function(e) {
                                        this.drawingContext.rotate(e)
                                    }
                                }, {
                                    key: "scale",
                                    value: function(e, t) {
                                        return this.drawingContext.scale(e, t), this
                                    }
                                }, {
                                    key: "translate",
                                    value: function(e, t) {
                                        return e instanceof d.default.Vector && (t = e.y, e = e.x), this.drawingContext.translate(e, t), this
                                    }
                                }, {
                                    key: "_renderText",
                                    value: function(e, t, r, o, n, s) {
                                        if (!(o < s || n <= o)) return e.push(), this._isOpenType() ? this._textFont._renderPath(t, r, o, {
                                            renderer: this
                                        }) : (this._doStroke && this._strokeSet && this.drawingContext.strokeText(t, r, o), !this._clipping && this._doFill && (this._fillSet || this._setFill(p._DEFAULT_TEXT_FILL), this.drawingContext.fillText(t, r, o))), e.pop(), e
                                    }
                                }, {
                                    key: "textWidth",
                                    value: function(e) {
                                        return this._isOpenType() ? this._textFont._textWidth(e, this._textSize) : this.drawingContext.measureText(e).width
                                    }
                                }, {
                                    key: "_applyTextProperties",
                                    value: function() {
                                        var e = this._pInst,
                                            t = (this._setProperty("_textAscent", null), this._setProperty("_textDescent", null), t = this._textFont, this._isOpenType() && (t = this._textFont.font.familyName, this._setProperty("_textStyle", this._textFont.font.styleName)), t || "sans-serif");
                                        return /\s/.exec(t) && (t = '"'.concat(t, '"')), this.drawingContext.font = "".concat(this._textStyle || "normal", " ").concat(this._textSize || 12, "px ").concat(t), this.drawingContext.textAlign = this._textAlign, this._textBaseline === p.CENTER ? this.drawingContext.textBaseline = p._CTX_MIDDLE : this.drawingContext.textBaseline = this._textBaseline, e
                                    }
                                }, {
                                    key: "push",
                                    value: function() {
                                        return this.drawingContext.save(), l(u(n.prototype), "push", this).call(this)
                                    }
                                }, {
                                    key: "pop",
                                    value: function(e) {
                                        this.drawingContext.restore(), this._cachedFillStyle = this.drawingContext.fillStyle, this._cachedStrokeStyle = this.drawingContext.strokeStyle, l(u(n.prototype), "pop", this).call(this, e)
                                    }
                                }]), n
                            })(d.default.Renderer),
                            e = (n.prototype.text = function(e, t, r, o, n) {
                                void 0 !== o && this.drawingContext.textBaseline === p.BASELINE && (s = !0, this.drawingContext.textBaseline = p.TOP);
                                var s, o = d.default.Renderer.prototype.text.apply(this, arguments);
                                return s && (this.drawingContext.textBaseline = p.BASELINE), o
                            }, d.default.Renderer2D = n, d.default.Renderer2D);
                        r.default = e
                    }, {
                        "./constants": 272,
                        "./main": 283,
                        "./p5.Renderer": 286,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.reflect.get": 193,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    288: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator");
                        var h = (e = e("./main")) && e.__esModule ? e : {
                            default: e
                        };

                        function o() {
                            return {}
                        }
                        h.default.prototype._promisePreloads = [];
                        var f = !(h.default.prototype.registerPromisePreload = function(e) {
                            h.default.prototype._promisePreloads.push(e)
                        });
                        h.default.prototype._setupPromisePreloads = function() {
                            var e = !0,
                                t = !1,
                                r = void 0;
                            try {
                                for (var o, n = this._promisePreloads[Symbol.iterator](); !(e = (o = n.next()).done); e = !0) {
                                    var s = o.value,
                                        i = this,
                                        a = s.method,
                                        l = s.addCallbacks,
                                        c = s.legacyPreloadSetup,
                                        u = s.target || this,
                                        d = u[a].bind(u);
                                    if (u === h.default.prototype) {
                                        if (f) continue;
                                        i = null, d = u[a]
                                    }
                                    u[a] = this._wrapPromisePreload(i, d, l), c && (u[c.method] = this._legacyPreloadGenerator(i, c, u[a]))
                                }
                            } catch (e) {
                                t = !0, r = e
                            } finally {
                                try {
                                    e || null == n.return || n.return()
                                } finally {
                                    if (t) throw r
                                }
                            }
                            f = !0
                        }, h.default.prototype._wrapPromisePreload = function(e, l, c) {
                            var t = function() {
                                for (var e = this, t = (this._incrementPreload(), null), r = null, o = arguments.length, n = new Array(o), s = 0; s < o; s++) n[s] = arguments[s];
                                if (c)
                                    for (var i = n.length - 1; 0 <= i && !r && "function" == typeof n[i]; i--) r = t, t = n.pop();
                                var a = Promise.resolve(l.apply(this, n));
                                return t && a.then(t), r && a.catch(r), a.then(function() {
                                    return e._decrementPreload()
                                }), a
                            };
                            return e ? t.bind(e) : t
                        }, h.default.prototype._legacyPreloadGenerator = function(e, t, s) {
                            var i = t.createBaseObject || o,
                                t = function() {
                                    var t = this;
                                    this._incrementPreload();
                                    for (var e = arguments.length, r = new Array(e), o = 0; o < e; o++) r[o] = arguments[o];
                                    var n = i.apply(this, r);
                                    return s.apply(this, r).then(function(e) {
                                        Object.assign(n, e), t._decrementPreload()
                                    }), n
                                };
                            return e ? t.bind(e) : t
                        }
                    }, {
                        "./main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    289: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = (n = e("./main")) && n.__esModule ? n : {
                                default: n
                            },
                            c = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== u(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = i();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("./constants"));

                        function i() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, i = function() {
                                return e
                            }, e)
                        }

                        function u(e) {
                            return (u = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("./p5.Graphics"), e("./p5.Renderer2D"), e("../webgl/p5.RendererGL");
                        var d = "defaultCanvas0",
                            n = (l.default.prototype.createCanvas = function(e, t, r, o) {
                                var n, s;
                                if (l.default._validateParameters("createCanvas", arguments), arguments[2] instanceof HTMLCanvasElement ? (r = c.P2D, o = arguments[2]) : n = r || c.P2D, o)(i = document.getElementById(d)) && i.parentNode.removeChild(i), i = o, this._defaultGraphicsCreated = !1;
                                else {
                                    if (n === c.WEBGL)(i = document.getElementById(d)) && (i.parentNode.removeChild(i), s = this._renderer, this._elements = this._elements.filter(function(e) {
                                        return e !== s
                                    })), (i = document.createElement("canvas")).id = d, i.classList.add("p5Canvas");
                                    else if (this._defaultGraphicsCreated) i = this.canvas;
                                    else {
                                        for (var i = o || document.createElement("canvas"), a = 0; document.getElementById("defaultCanvas".concat(a));) a++;
                                        d = "defaultCanvas".concat(a), i.id = d, i.classList.add("p5Canvas")
                                    }
                                    this._setupDone || (i.dataset.hidden = !0, i.style.visibility = "hidden"), (this._userNode || (0 === document.getElementsByTagName("main").length && (r = document.createElement("main"), document.body.appendChild(r)), document.getElementsByTagName("main")[0])).appendChild(i)
                                }
                                return n === c.WEBGL ? (this._setProperty("_renderer", new l.default.RendererGL(i, this, !0)), this._elements.push(this._renderer), e = (o = this._renderer._adjustDimensions(e, t)).adjustedWidth, t = o.adjustedHeight) : this._defaultGraphicsCreated || (this._setProperty("_renderer", new l.default.Renderer2D(i, this, !0)), this._defaultGraphicsCreated = !0, this._elements.push(this._renderer)), this._renderer.resize(e, t), this._renderer._applyDefaults(), this._renderer
                            }, l.default.prototype.resizeCanvas = function(e, t, r) {
                                if (l.default._validateParameters("resizeCanvas", arguments), this._renderer) {
                                    var o, n, s, i = {};
                                    for (o in this.drawingContext) {
                                        var a = this.drawingContext[o];
                                        "object" !== u(a) && "function" != typeof a && (i[o] = a)
                                    }
                                    for (s in this._renderer instanceof l.default.RendererGL && (e = (n = this._renderer._adjustDimensions(e, t)).adjustedWidth, t = n.adjustedHeight), this.width = e, this.height = t, this._renderer.resize(e, t), i) try {
                                        this.drawingContext[s] = i[s]
                                    } catch (e) {}
                                    r || this.redraw()
                                }
                                this._addAccsOutput() && this._updateAccsOutput()
                            }, l.default.prototype.noCanvas = function() {
                                this.canvas && this.canvas.parentNode.removeChild(this.canvas)
                            }, l.default.prototype.createGraphics = function(e, t) {
                                for (var r = arguments.length, o = new Array(2 < r ? r - 2 : 0), n = 2; n < r; n++) o[n - 2] = arguments[n];
                                return o[0] instanceof HTMLCanvasElement && (o[1] = o[0], o[0] = c.P2D), l.default._validateParameters("createGraphics", arguments), new l.default.Graphics(e, t, o[0], this, o[1])
                            }, l.default.prototype.createFramebuffer = function(e) {
                                return new l.default.Framebuffer(this, e)
                            }, l.default.prototype.clearDepth = function(e) {
                                this._assert3d("clearDepth"), this._renderer.clearDepth(e)
                            }, l.default.prototype.blendMode = function(e) {
                                l.default._validateParameters("blendMode", arguments), e === c.NORMAL && (console.warn("NORMAL has been deprecated for use in blendMode. defaulting to BLEND instead."), e = c.BLEND), this._renderer.blendMode(e)
                            }, l.default);
                        r.default = n
                    }, {
                        "../webgl/p5.RendererGL": 341,
                        "./constants": 272,
                        "./main": 283,
                        "./p5.Graphics": 285,
                        "./p5.Renderer2D": 287,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    290: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.slice"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = n(e("../main")),
                            a = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = u();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../constants")),
                            c = n(e("../helpers"));

                        function u() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, u = function() {
                                return e
                            }, e)
                        }

                        function n(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function s(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }
                        e("../friendly_errors/fes_core"), e("../friendly_errors/file_errors"), e("../friendly_errors/validate_params"), l.default.prototype._normalizeArcAngles = function(e, t, r, o, n) {
                            var s;
                            return e -= a.TWO_PI * Math.floor(e / a.TWO_PI), t -= a.TWO_PI * Math.floor(t / a.TWO_PI), s = Math.min(Math.abs(e - t), a.TWO_PI - Math.abs(e - t)), n && (e = e <= a.HALF_PI ? Math.atan(r / o * Math.tan(e)) : e > a.HALF_PI && e <= 3 * a.HALF_PI ? Math.atan(r / o * Math.tan(e)) + a.PI : Math.atan(r / o * Math.tan(e)) + a.TWO_PI, t = t <= a.HALF_PI ? Math.atan(r / o * Math.tan(t)) : t > a.HALF_PI && t <= 3 * a.HALF_PI ? Math.atan(r / o * Math.tan(t)) + a.PI : Math.atan(r / o * Math.tan(t)) + a.TWO_PI), t < e && (t += a.TWO_PI), {
                                start: e,
                                stop: t,
                                correspondToSamePoint: s < 1e-5
                            }
                        }, l.default.prototype.arc = function(e, t, r, o, n, s, i, a) {
                            return l.default._validateParameters("arc", arguments), (this._renderer._doStroke || this._renderer._doFill) && n !== s && (n = this._toRadians(n), s = this._toRadians(s), e = c.default.modeAdjust(e, t, r, o, this._renderer._ellipseMode), (t = this._normalizeArcAngles(n, s, e.w, e.h, !0)).correspondToSamePoint ? this._renderer.ellipse([e.x, e.y, e.w, e.h, a]) : (this._renderer.arc(e.x, e.y, e.w, e.h, t.start, t.stop, i, a), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("arc", [e.x, e.y, e.w, e.h, t.start, t.stop, i]))), this
                        }, l.default.prototype.ellipse = function(e, t, r, o, n) {
                            return l.default._validateParameters("ellipse", arguments), this._renderEllipse.apply(this, arguments)
                        }, l.default.prototype.circle = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            l.default._validateParameters("circle", t);
                            var o = t.slice(0, 2);
                            return o.push(t[2], t[2]), this._renderEllipse.apply(this, s(o))
                        }, l.default.prototype._renderEllipse = function(e, t, r, o, n) {
                            return (this._renderer._doStroke || this._renderer._doFill) && (e = c.default.modeAdjust(e, t, r, o = void 0 === o ? r : o, this._renderer._ellipseMode), this._renderer.ellipse([e.x, e.y, e.w, e.h, n]), this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("ellipse", [e.x, e.y, e.w, e.h]), this
                        }, l.default.prototype.line = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return l.default._validateParameters("line", r), this._renderer._doStroke && (e = this._renderer).line.apply(e, r), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("line", r), this
                        }, l.default.prototype.point = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return l.default._validateParameters("point", r), this._renderer._doStroke && (1 === r.length && r[0] instanceof l.default.Vector ? this._renderer.point.call(this._renderer, r[0].x, r[0].y, r[0].z) : ((e = this._renderer).point.apply(e, r), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("point", r))), this
                        }, l.default.prototype.quad = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return l.default._validateParameters("quad", r), (this._renderer._doStroke || this._renderer._doFill) && (this._renderer.isP3D && r.length < 12 ? this._renderer.quad.call(this._renderer, r[0], r[1], 0, r[2], r[3], 0, r[4], r[5], 0, r[6], r[7], 0, r[8], r[9]) : ((e = this._renderer).quad.apply(e, r), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("quadrilateral", r))), this
                        }, l.default.prototype.rect = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return l.default._validateParameters("rect", t), this._renderRect.apply(this, t)
                        }, l.default.prototype.square = function(e, t, r, o, n, s, i) {
                            return l.default._validateParameters("square", arguments), this._renderRect.call(this, e, t, r, r, o, n, s, i)
                        }, l.default.prototype._renderRect = function() {
                            if (this._renderer._doStroke || this._renderer._doFill) {
                                3 === arguments.length && (arguments[3] = arguments[2]);
                                for (var e = c.default.modeAdjust(arguments[0], arguments[1], arguments[2], arguments[3], this._renderer._rectMode), t = (this._renderer._rectMode === a.CORNER && (e.w = arguments[2], e.h = arguments[3]), [e.x, e.y, e.w, e.h]), r = 4; r < arguments.length; r++) t[r] = arguments[r];
                                this._renderer.rect(t), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("rectangle", [e.x, e.y, e.w, e.h])
                            }
                            return this
                        }, l.default.prototype.triangle = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return l.default._validateParameters("triangle", t), (this._renderer._doStroke || this._renderer._doFill) && this._renderer.triangle(t), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._accsOutput("triangle", t), this
                        }, e = l.default, r.default = e
                    }, {
                        "../constants": 272,
                        "../friendly_errors/fes_core": 274,
                        "../friendly_errors/file_errors": 275,
                        "../friendly_errors/validate_params": 278,
                        "../helpers": 279,
                        "../main": 283,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    291: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (l = e("../main")) && l.__esModule ? l : {
                                default: l
                            },
                            s = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        n.default.prototype.ellipseMode = function(e) {
                            return n.default._validateParameters("ellipseMode", arguments), e !== s.CORNER && e !== s.CORNERS && e !== s.RADIUS && e !== s.CENTER || (this._renderer._ellipseMode = e), this
                        }, n.default.prototype.noSmooth = function() {
                            return this._renderer.isP3D ? this.setAttributes("antialias", !1) : "imageSmoothingEnabled" in this.drawingContext && (this.drawingContext.imageSmoothingEnabled = !1), this
                        }, n.default.prototype.rectMode = function(e) {
                            return n.default._validateParameters("rectMode", arguments), e !== s.CORNER && e !== s.CORNERS && e !== s.RADIUS && e !== s.CENTER || (this._renderer._rectMode = e), this
                        }, n.default.prototype.smooth = function() {
                            return this._renderer.isP3D ? this.setAttributes("antialias", !0) : "imageSmoothingEnabled" in this.drawingContext && (this.drawingContext.imageSmoothingEnabled = !0), this
                        }, n.default.prototype.strokeCap = function(e) {
                            return n.default._validateParameters("strokeCap", arguments), e !== s.ROUND && e !== s.SQUARE && e !== s.PROJECT || this._renderer.strokeCap(e), this
                        }, n.default.prototype.strokeJoin = function(e) {
                            return n.default._validateParameters("strokeJoin", arguments), e !== s.ROUND && e !== s.BEVEL && e !== s.MITER || this._renderer.strokeJoin(e), this
                        }, n.default.prototype.strokeWeight = function(e) {
                            return n.default._validateParameters("strokeWeight", arguments), this._renderer.strokeWeight(e), this
                        };
                        var l = n.default;
                        r.default = l
                    }, {
                        "../constants": 272,
                        "../main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    292: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = (o = e("../main")) && o.__esModule ? o : {
                                default: o
                            },
                            o = (e("../friendly_errors/fes_core"), e("../friendly_errors/file_errors"), e("../friendly_errors/validate_params"), l.default.prototype.bezier = function() {
                                for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                return l.default._validateParameters("bezier", r), (this._renderer._doStroke || this._renderer._doFill) && (e = this._renderer).bezier.apply(e, r), this
                            }, l.default.prototype.bezierDetail = function(e) {
                                return l.default._validateParameters("bezierDetail", arguments), this._bezierDetail = e, this
                            }, l.default.prototype.bezierPoint = function(e, t, r, o, n) {
                                l.default._validateParameters("bezierPoint", arguments);
                                var s = 1 - n;
                                return Math.pow(s, 3) * e + 3 * Math.pow(s, 2) * n * t + 3 * s * Math.pow(n, 2) * r + Math.pow(n, 3) * o
                            }, l.default.prototype.bezierTangent = function(e, t, r, o, n) {
                                l.default._validateParameters("bezierTangent", arguments);
                                var s = 1 - n;
                                return 3 * o * Math.pow(n, 2) - 3 * r * Math.pow(n, 2) + 6 * r * s * n - 6 * t * s * n + 3 * t * Math.pow(s, 2) - 3 * e * Math.pow(s, 2)
                            }, l.default.prototype.curve = function() {
                                for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                return l.default._validateParameters("curve", r), this._renderer._doStroke && (e = this._renderer).curve.apply(e, r), this
                            }, l.default.prototype.curveDetail = function(e) {
                                return l.default._validateParameters("curveDetail", arguments), this._curveDetail = e < 3 ? 3 : e, this
                            }, l.default.prototype.curveTightness = function(e) {
                                return l.default._validateParameters("curveTightness", arguments), this._renderer._curveTightness = e, this
                            }, l.default.prototype.curvePoint = function(e, t, r, o, n) {
                                l.default._validateParameters("curvePoint", arguments);
                                var s = this._renderer._curveTightness,
                                    i = n * n * n,
                                    a = n * n;
                                return e * ((s - 1) / 2 * i + (1 - s) * a + (s - 1) / 2 * n) + t * ((s + 3) / 2 * i + (-5 - s) / 2 * a + 1) + r * ((-3 - s) / 2 * i + (s + 2) * a + (1 - s) / 2 * n) + o * ((1 - s) / 2 * i + (s - 1) / 2 * a)
                            }, l.default.prototype.curveTangent = function(e, t, r, o, n) {
                                l.default._validateParameters("curveTangent", arguments);
                                var s = this._renderer._curveTightness,
                                    i = n * n * 3,
                                    n = 2 * n;
                                return e * ((s - 1) / 2 * i + (1 - s) * n + (s - 1) / 2) + t * ((s + 3) / 2 * i + (-5 - s) / 2 * n) + r * ((-3 - s) / 2 * i + (s + 2) * n + (1 - s) / 2) + o * ((1 - s) / 2 * i + (s - 1) / 2 * n)
                            }, l.default);
                        r.default = o
                    }, {
                        "../friendly_errors/fes_core": 274,
                        "../friendly_errors/file_errors": 275,
                        "../friendly_errors/validate_params": 278,
                        "../main": 283
                    }],
                    293: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.slice"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (y = e("../main")) && y.__esModule ? y : {
                                default: y
                            },
                            l = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = c();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../constants"));

                        function c() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, c = function() {
                                return e
                            }, e)
                        }
                        var n = null,
                            u = [],
                            d = [],
                            h = !1,
                            s = !1,
                            f = !1,
                            p = !1,
                            m = !0,
                            y = (a.default.prototype.beginContour = function() {
                                return this._renderer.isP3D ? this._renderer.beginContour() : (d = [], p = !0), this
                            }, a.default.prototype.beginShape = function(e) {
                                var t;
                                return a.default._validateParameters("beginShape", arguments), this._renderer.isP3D ? (t = this._renderer).beginShape.apply(t, arguments) : (n = e === l.POINTS || e === l.LINES || e === l.TRIANGLES || e === l.TRIANGLE_FAN || e === l.TRIANGLE_STRIP || e === l.QUADS || e === l.QUAD_STRIP ? e : null, u = [], d = []), this
                            }, a.default.prototype.bezierVertex = function() {
                                for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                if (a.default._validateParameters("bezierVertex", r), this._renderer.isP3D)(e = this._renderer).bezierVertex.apply(e, r);
                                else if (0 === u.length) a.default._friendlyError("vertex() must be used once before calling bezierVertex()", "bezierVertex");
                                else {
                                    h = !0;
                                    for (var n = [], s = 0; s < r.length; s++) n[s] = r[s];
                                    n.isVert = !1, (p ? d : u).push(n)
                                }
                                return this
                            }, a.default.prototype.curveVertex = function() {
                                for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                return a.default._validateParameters("curveVertex", r), this._renderer.isP3D ? (e = this._renderer).curveVertex.apply(e, r) : (s = !0, this.vertex(r[0], r[1])), this
                            }, a.default.prototype.endContour = function() {
                                if (!this._renderer.isP3D) {
                                    var e = d[0].slice();
                                    e.isVert = d[0].isVert, e.moveTo = !1, d.push(e), m && (u.push(u[0]), m = !1);
                                    for (var t = 0; t < d.length; t++) u.push(d[t])
                                }
                                return this
                            }, a.default.prototype.endShape = function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 1;
                                if (a.default._validateParameters("endShape", arguments), t < 1 && (console.log("🌸 p5.js says: You can not have less than one instance"), t = 1), this._renderer.isP3D) this._renderer.endShape(e, s, h, f, p, n, t);
                                else {
                                    if (1 !== t && console.log("🌸 p5.js says: Instancing is only supported in WebGL2 mode"), 0 === u.length) return this;
                                    if (!this._renderer._doStroke && !this._renderer._doFill) return this;
                                    (t = e === l.CLOSE) && !p && u.push(u[0]), this._renderer.endShape(e, u, s, h, f, p, n), m = !(p = f = h = s = !1), t && u.pop()
                                }
                                return this
                            }, a.default.prototype.quadraticVertex = function() {
                                for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                if (a.default._validateParameters("quadraticVertex", r), this._renderer.isP3D)(e = this._renderer).quadraticVertex.apply(e, r);
                                else {
                                    if (this._contourInited) return (e = {}).x = r[0], e.y = r[1], e.x3 = r[2], e.y3 = r[3], e.type = l.QUADRATIC, this._contourVertices.push(e), this;
                                    if (0 < u.length) {
                                        f = !0;
                                        for (var n = [], s = 0; s < r.length; s++) n[s] = r[s];
                                        n.isVert = !1, (p ? d : u).push(n)
                                    } else a.default._friendlyError("vertex() must be used once before calling quadraticVertex()", "quadraticVertex")
                                }
                                return this
                            }, a.default.prototype.vertex = function(e, t, r, o, n) {
                                var s;
                                return this._renderer.isP3D ? (s = this._renderer).vertex.apply(s, arguments) : ((s = []).isVert = !0, s[0] = e, s[1] = t, s[2] = 0, s[3] = 0, s[4] = 0, s[5] = this._renderer._getFill(), s[6] = this._renderer._getStroke(), r && (s.moveTo = r), (p ? (0 === d.length && (s.moveTo = !0), d) : u).push(s)), this
                            }, a.default.prototype.normal = function(e, t, r) {
                                var o;
                                return this._assert3d("normal"), a.default._validateParameters("normal", arguments), (o = this._renderer).normal.apply(o, arguments), this
                            }, a.default);
                        r.default = y
                    }, {
                        "../constants": 272,
                        "../main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    294: [function(e, t, r) {}, {}],
                    295: [function(e, t, r) {
                        e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.assign"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("./main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype.noLoop = function() {
                            this._loop = !1
                        }, e.default.prototype.loop = function() {
                            this._loop || (this._loop = !0, this._setupDone && this._draw())
                        }, e.default.prototype.isLooping = function() {
                            return this._loop
                        }, e.default.prototype.push = function() {
                            this._styles.push({
                                props: {
                                    _colorMode: this._colorMode
                                },
                                renderer: this._renderer.push()
                            })
                        }, e.default.prototype.pop = function() {
                            var e = this._styles.pop();
                            e ? (this._renderer.pop(e.renderer), Object.assign(this, e.props)) : console.warn("pop() was called without matching push()")
                        }, e.default.prototype.redraw = function(e) {
                            if (!this._inUserDraw && this._setupDone) {
                                var t = parseInt(e),
                                    r = ((isNaN(t) || t < 1) && (t = 1), this._isGlobal ? window : this);
                                if ("function" == typeof r.draw) {
                                    void 0 === r.setup && r.scale(r._pixelDensity, r._pixelDensity);
                                    for (var o = 0; o < t; o++) {
                                        r.resetMatrix(), (this._accessibleOutputs.grid || this._accessibleOutputs.text) && this._updateAccsOutput(), r._renderer.isP3D && r._renderer._update(), r._setProperty("frameCount", r.frameCount + 1), this.callRegisteredHooksFor("pre"), this._inUserDraw = !0;
                                        try {
                                            r.draw()
                                        } finally {
                                            this._inUserDraw = !1
                                        }
                                        this.callRegisteredHooksFor("post")
                                    }
                                }
                            }
                        }, r.default = e = e.default
                    }, {
                        "./main": 283,
                        "core-js/modules/es.object.assign": 183
                    }],
                    296: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (e = e("./main")) && e.__esModule ? e : {
                            default: e
                        };

                        function o(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }
                        n.default.prototype.applyMatrix = function() {
                            var e = (arguments.length <= 0 ? void 0 : arguments[0]) instanceof Object.getPrototypeOf(Uint8Array);
                            return Array.isArray(arguments.length <= 0 ? void 0 : arguments[0]) || e ? (e = this._renderer).applyMatrix.apply(e, o(arguments.length <= 0 ? void 0 : arguments[0])) : (e = this._renderer).applyMatrix.apply(e, arguments), this
                        }, n.default.prototype.resetMatrix = function() {
                            return this._renderer.resetMatrix(), this
                        }, n.default.prototype.rotate = function(e, t) {
                            return n.default._validateParameters("rotate", arguments), this._renderer.rotate(this._toRadians(e), t), this
                        }, n.default.prototype.rotateX = function(e) {
                            return this._assert3d("rotateX"), n.default._validateParameters("rotateX", arguments), this._renderer.rotateX(this._toRadians(e)), this
                        }, n.default.prototype.rotateY = function(e) {
                            return this._assert3d("rotateY"), n.default._validateParameters("rotateY", arguments), this._renderer.rotateY(this._toRadians(e)), this
                        }, n.default.prototype.rotateZ = function(e) {
                            return this._assert3d("rotateZ"), n.default._validateParameters("rotateZ", arguments), this._renderer.rotateZ(this._toRadians(e)), this
                        }, n.default.prototype.scale = function(e, t, r) {
                            var o;
                            return n.default._validateParameters("scale", arguments), e instanceof n.default.Vector ? (e = (o = e).x, t = o.y, r = o.z) : Array.isArray(e) && (e = (o = e)[0], t = o[1], r = o[2] || 1), isNaN(t) ? t = r = e : isNaN(r) && (r = 1), this._renderer.scale(e, t, r), this
                        }, n.default.prototype.shearX = function(e) {
                            return n.default._validateParameters("shearX", arguments), e = this._toRadians(e), this._renderer.applyMatrix(1, 0, Math.tan(e), 1, 0, 0), this
                        }, n.default.prototype.shearY = function(e) {
                            return n.default._validateParameters("shearY", arguments), e = this._toRadians(e), this._renderer.applyMatrix(1, Math.tan(e), 0, 1, 0, 0), this
                        }, n.default.prototype.translate = function(e, t, r) {
                            return n.default._validateParameters("translate", arguments), this._renderer.isP3D ? this._renderer.translate(e, t, r) : this._renderer.translate(e, t), this
                        }, r.default = e = n.default
                    }, {
                        "./main": 283,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    297: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.ends-with"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.ends-with"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator");
                        var n = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function s(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        n.default.prototype.storeItem = function(e, t) {
                            "string" != typeof e && console.log("The argument that you passed to storeItem() - ".concat(e, " is not a string.")), e.endsWith("p5TypeID") && console.log("The argument that you passed to storeItem() - ".concat(e, " must not end with 'p5TypeID'.")), void 0 === t && console.log("You cannot store undefined variables using storeItem().");
                            var r = i(t);
                            switch (r) {
                                case "number":
                                case "boolean":
                                    t = t.toString();
                                    break;
                                case "object":
                                    t instanceof n.default.Color ? r = "p5.Color" : t instanceof n.default.Vector && (r = "p5.Vector", t = [t.x, t.y, t.z]), t = JSON.stringify(t)
                            }
                            localStorage.setItem(e, t), e = "".concat(e, "p5TypeID"), localStorage.setItem(e, r)
                        }, n.default.prototype.getItem = function(e) {
                            var t = localStorage.getItem(e),
                                r = localStorage.getItem("".concat(e, "p5TypeID"));
                            if (void 0 === r) console.log("Unable to determine type of item stored under ".concat(e, "in local storage. Did you save the item with something other than setItem()?"));
                            else if (null !== t) switch (r) {
                                case "number":
                                    t = parseFloat(t);
                                    break;
                                case "boolean":
                                    t = "true" === t;
                                    break;
                                case "object":
                                    t = JSON.parse(t);
                                    break;
                                case "p5.Color":
                                    t = JSON.parse(t), t = this.color.apply(this, s(t.levels));
                                    break;
                                case "p5.Vector":
                                    t = JSON.parse(t), t = this.createVector.apply(this, s(t))
                            }
                            return t
                        }, n.default.prototype.clearStorage = function() {
                            var t = this;
                            Object.keys(localStorage).forEach(function(e) {
                                e.endsWith("p5TypeID") && t.removeItem(e.replace("p5TypeID", ""))
                            })
                        }, n.default.prototype.removeItem = function(e) {
                            "string" != typeof e && console.log("The argument that you passed to removeItem() - ".concat(e, " is not a string.")), localStorage.removeItem(e), localStorage.removeItem("".concat(e, "p5TypeID"))
                        }
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.ends-with": 198,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    298: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function n(e) {
                            return (n = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.object.keys"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var s, i, a = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function l(e, t) {
                            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
                            e.prototype = Object.create(t && t.prototype, {
                                constructor: {
                                    value: e,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), t && c(e, t)
                        }

                        function c(e, t) {
                            return (c = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function u(r) {
                            return function() {
                                var e, t = d(r),
                                    t = (e = (() => {
                                        if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                            if ("function" == typeof Proxy) return 1;
                                            try {
                                                return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                            } catch (e) {}
                                        }
                                    })() ? (e = d(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments), this);
                                if (!e || "object" !== n(e) && "function" != typeof e) {
                                    if (void 0 !== t) return t;
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                }
                                return e
                            }
                        }

                        function d(e) {
                            return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }

                        function h(e, t) {
                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                        }

                        function f(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function p(e, t, r) {
                            t && f(e.prototype, t), r && f(e, r)
                        }

                        function m() {
                            h(this, m);
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return s.call.apply(s, [this].concat(t))
                        }

                        function y() {
                            h(this, y);
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return i.call.apply(i, [this].concat(t))
                        }

                        function g(e, t) {
                            return h(this, g), e instanceof Object ? this.data = e : (this.data = {}, this.data[e] = t), this
                        }
                        a.default.prototype.createStringDict = function(e, t) {
                            return a.default._validateParameters("createStringDict", arguments), new a.default.StringDict(e, t)
                        }, a.default.prototype.createNumberDict = function(e, t) {
                            return a.default._validateParameters("createNumberDict", arguments), new a.default.NumberDict(e, t)
                        }, a.default.TypedDict = (p(g, [{
                            key: "size",
                            value: function() {
                                return Object.keys(this.data).length
                            }
                        }, {
                            key: "hasKey",
                            value: function(e) {
                                return this.data.hasOwnProperty(e)
                            }
                        }, {
                            key: "get",
                            value: function(e) {
                                if (this.data.hasOwnProperty(e)) return this.data[e];
                                console.log("".concat(e, " does not exist in this Dictionary"))
                            }
                        }, {
                            key: "set",
                            value: function(e, t) {
                                this._validate(t) ? this.data[e] = t : console.log("Those values dont work for this dictionary type.")
                            }
                        }, {
                            key: "_addObj",
                            value: function(e) {
                                for (var t in e) this.set(t, e[t])
                            }
                        }, {
                            key: "create",
                            value: function(e, t) {
                                e instanceof Object && void 0 === t ? this._addObj(e) : void 0 !== e ? this.set(e, t) : console.log("In order to create a new Dictionary entry you must pass an object or a key, value pair")
                            }
                        }, {
                            key: "clear",
                            value: function() {
                                this.data = {}
                            }
                        }, {
                            key: "remove",
                            value: function(e) {
                                if (!this.data.hasOwnProperty(e)) throw new Error("".concat(e, " does not exist in this Dictionary"));
                                delete this.data[e]
                            }
                        }, {
                            key: "print",
                            value: function() {
                                for (var e in this.data) console.log("key:".concat(e, " value:").concat(this.data[e]))
                            }
                        }, {
                            key: "saveTable",
                            value: function(e) {
                                var t, r = "";
                                for (t in this.data) r += "".concat(t, ",").concat(this.data[t], "\n");
                                var o = new Blob([r], {
                                    type: "text/csv"
                                });
                                a.default.prototype.downloadFile(o, e || "mycsv", "csv")
                            }
                        }, {
                            key: "saveJSON",
                            value: function(e, t) {
                                a.default.prototype.saveJSON(this.data, e, t)
                            }
                        }, {
                            key: "_validate",
                            value: function(e) {
                                return !0
                            }
                        }]), g), a.default.StringDict = (l(y, a.default.TypedDict), i = u(y), p(y, [{
                            key: "_validate",
                            value: function(e) {
                                return "string" == typeof e
                            }
                        }]), y), a.default.NumberDict = (l(m, a.default.TypedDict), s = u(m), p(m, [{
                            key: "_validate",
                            value: function(e) {
                                return "number" == typeof e
                            }
                        }, {
                            key: "add",
                            value: function(e, t) {
                                this.data.hasOwnProperty(e) ? this.data[e] += t : console.log("The key - ".concat(e, " does not exist in this dictionary."))
                            }
                        }, {
                            key: "sub",
                            value: function(e, t) {
                                this.add(e, -t)
                            }
                        }, {
                            key: "mult",
                            value: function(e, t) {
                                this.data.hasOwnProperty(e) ? this.data[e] *= t : console.log("The key - ".concat(e, " does not exist in this dictionary."))
                            }
                        }, {
                            key: "div",
                            value: function(e, t) {
                                this.data.hasOwnProperty(e) ? this.data[e] /= t : console.log("The key - ".concat(e, " does not exist in this dictionary."))
                            }
                        }, {
                            key: "_valueTest",
                            value: function(e) {
                                if (0 === Object.keys(this.data).length) throw new Error("Unable to search for a minimum or maximum value on an empty NumberDict");
                                if (1 === Object.keys(this.data).length) return this.data[Object.keys(this.data)[0]];
                                var t, r = this.data[Object.keys(this.data)[0]];
                                for (t in this.data) this.data[t] * e < r * e && (r = this.data[t]);
                                return r
                            }
                        }, {
                            key: "minValue",
                            value: function() {
                                return this._valueTest(1)
                            }
                        }, {
                            key: "maxValue",
                            value: function() {
                                return this._valueTest(-1)
                            }
                        }, {
                            key: "_keyTest",
                            value: function(e) {
                                if (0 === Object.keys(this.data).length) throw new Error("Unable to use minValue on an empty NumberDict");
                                if (1 === Object.keys(this.data).length) return Object.keys(this.data)[0];
                                for (var t = Object.keys(this.data)[0], r = 1; r < Object.keys(this.data).length; r++) Object.keys(this.data)[r] * e < t * e && (t = Object.keys(this.data)[r]);
                                return t
                            }
                        }, {
                            key: "minKey",
                            value: function() {
                                return this._keyTest(1)
                            }
                        }, {
                            key: "maxKey",
                            value: function() {
                                return this._keyTest(-1)
                            }
                        }]), m), e = a.default.TypedDict, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    299: [function(t, r, o) {
                        function n(e) {
                            return (n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        t("core-js/modules/es.symbol"), t("core-js/modules/es.symbol.description"), t("core-js/modules/es.symbol.iterator"), t("core-js/modules/es.array.every"), t("core-js/modules/es.array.filter"), t("core-js/modules/es.array.for-each"), t("core-js/modules/es.array.from"), t("core-js/modules/es.array.index-of"), t("core-js/modules/es.array.iterator"), t("core-js/modules/es.array.map"), t("core-js/modules/es.array.slice"), t("core-js/modules/es.array.splice"), t("core-js/modules/es.function.name"), t("core-js/modules/es.object.assign"), t("core-js/modules/es.object.get-prototype-of"), t("core-js/modules/es.object.to-string"), t("core-js/modules/es.promise"), t("core-js/modules/es.reflect.construct"), t("core-js/modules/es.regexp.exec"), t("core-js/modules/es.regexp.to-string"), t("core-js/modules/es.string.iterator"), t("core-js/modules/es.string.replace"), t("core-js/modules/es.string.split"), t("core-js/modules/es.string.trim"), t("core-js/modules/web.dom-collections.for-each"), t("core-js/modules/web.dom-collections.iterator"), t("core-js/modules/web.url"), t("core-js/modules/es.symbol"), t("core-js/modules/es.symbol.description"), t("core-js/modules/es.symbol.iterator"), t("core-js/modules/es.array.every"), t("core-js/modules/es.array.filter"), t("core-js/modules/es.array.for-each"), t("core-js/modules/es.array.from"), t("core-js/modules/es.array.index-of"), t("core-js/modules/es.array.iterator"), t("core-js/modules/es.array.map"), t("core-js/modules/es.array.slice"), t("core-js/modules/es.array.splice"), t("core-js/modules/es.function.name"), t("core-js/modules/es.object.assign"), t("core-js/modules/es.object.to-string"), t("core-js/modules/es.promise"), t("core-js/modules/es.regexp.exec"), t("core-js/modules/es.regexp.to-string"), t("core-js/modules/es.string.iterator"), t("core-js/modules/es.string.replace"), t("core-js/modules/es.string.split"), t("core-js/modules/es.string.trim"), t("core-js/modules/web.dom-collections.for-each"), t("core-js/modules/web.dom-collections.iterator"), t("core-js/modules/web.url"), Object.defineProperty(o, "__esModule", {
                            value: !0
                        }), o.default = void 0;
                        var f = (t = t("../core/main")) && t.__esModule ? t : {
                            default: t
                        };

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function a(e, t, r) {
                            t && s(e.prototype, t), r && s(e, r)
                        }

                        function l(e, t) {
                            return (l = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function c(e) {
                            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                            return e
                        }

                        function u(e) {
                            return (u = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }

                        function d(e, t) {
                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                        }

                        function p(e) {
                            return (p = "function" == typeof Symbol && "symbol" === n(Symbol.iterator) ? function(e) {
                                return n(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : n(e)
                            })(e)
                        }

                        function m(e, t, r) {
                            return (t._userNode || document.body).appendChild(e), r = new(r ? f.default.MediaElement : f.default.Element)(e, t), t._elements.push(r), r
                        }
                        f.default.prototype.select = function(e, t) {
                            return f.default._validateParameters("select", arguments), (t = this._getContainer(t).querySelector(e)) ? this._wrapElement(t) : null
                        }, f.default.prototype.selectAll = function(e, t) {
                            f.default._validateParameters("selectAll", arguments);
                            var r = [],
                                o = this._getContainer(t).querySelectorAll(e);
                            if (o)
                                for (var n = 0; n < o.length; n++) {
                                    var s = this._wrapElement(o[n]);
                                    r.push(s)
                                }
                            return r
                        }, f.default.prototype._getContainer = function(e) {
                            var t = document;
                            return "string" == typeof e ? t = document.querySelector(e) || document : e instanceof f.default.Element ? t = e.elt : e instanceof HTMLElement && (t = e), t
                        }, f.default.prototype._wrapElement = function(e) {
                            var t, r = Array.prototype.slice.call(e.children);
                            return "INPUT" === e.tagName && "checkbox" === e.type ? ((t = new f.default.Element(e, this)).checked = function() {
                                return 0 === arguments.length ? this.elt.checked : (this.elt.checked = !(arguments.length <= 0 || !arguments[0]), this)
                            }, t) : "VIDEO" === e.tagName || "AUDIO" === e.tagName ? new f.default.MediaElement(e, this) : "SELECT" === e.tagName ? this.createSelect(new f.default.Element(e, this)) : 0 < r.length && r.every(function(e) {
                                return "INPUT" === e.tagName || "LABEL" === e.tagName
                            }) && ("DIV" === e.tagName || "SPAN" === e.tagName) ? this.createRadio(new f.default.Element(e, this)) : new f.default.Element(e, this)
                        }, f.default.prototype.removeElements = function(e) {
                            f.default._validateParameters("removeElements", arguments), this._elements.filter(function(e) {
                                return !(e.elt instanceof HTMLCanvasElement)
                            }).map(function(e) {
                                return e.remove()
                            })
                        }, f.default.Element.prototype.changed = function(e) {
                            return f.default.Element._adjustListener("change", e, this), this
                        }, f.default.Element.prototype.input = function(e) {
                            return f.default.Element._adjustListener("input", e, this), this
                        }, f.default.prototype.createDiv = function() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
                                t = document.createElement("div");
                            return t.innerHTML = e, m(t, this)
                        }, f.default.prototype.createP = function() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
                                t = document.createElement("p");
                            return t.innerHTML = e, m(t, this)
                        }, f.default.prototype.createSpan = function() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
                                t = document.createElement("span");
                            return t.innerHTML = e, m(t, this)
                        }, f.default.prototype.createImg = function() {
                            f.default._validateParameters("createImg", arguments);
                            var t, r = document.createElement("img"),
                                o = arguments;
                            return 1 < o.length && "string" == typeof o[1] && (r.alt = o[1]), 2 < o.length && "string" == typeof o[2] && (r.crossOrigin = o[2]), r.src = o[0], t = m(r, this), r.addEventListener("load", function() {
                                t.width = r.offsetWidth || r.width, t.height = r.offsetHeight || r.height;
                                var e = o[o.length - 1];
                                "function" == typeof e && e(t)
                            }), t
                        }, f.default.prototype.createA = function(e, t, r) {
                            f.default._validateParameters("createA", arguments);
                            var o = document.createElement("a");
                            return o.href = e, o.innerHTML = t, r && (o.target = r), m(o, this)
                        }, f.default.prototype.createSlider = function(e, t, r, o) {
                            f.default._validateParameters("createSlider", arguments);
                            var n = document.createElement("input");
                            return n.type = "range", n.min = e, n.max = t, 0 === o ? n.step = 1e-18 : o && (n.step = o), "number" == typeof r && (n.value = r), m(n, this)
                        }, f.default.prototype.createButton = function(e, t) {
                            f.default._validateParameters("createButton", arguments);
                            var r = document.createElement("button");
                            return r.innerHTML = e, t && (r.value = t), m(r, this)
                        }, f.default.prototype.createCheckbox = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            f.default._validateParameters("createCheckbox", t);
                            var o = document.createElement("div"),
                                n = document.createElement("input"),
                                s = (n.type = "checkbox", document.createElement("label")),
                                i = (s.appendChild(n), o.appendChild(s), m(o, this));
                            return i.checked = function() {
                                var e = i.elt.firstElementChild.getElementsByTagName("input")[0];
                                if (e) {
                                    if (0 === arguments.length) return e.checked;
                                    e.checked = !(arguments.length <= 0 || !arguments[0])
                                }
                                return i
                            }, this.value = function(e) {
                                return i.value = e, this
                            }, t[0] && (i.value(t[0]), (o = document.createElement("span")).innerHTML = t[0], s.appendChild(o)), t[1] && (n.checked = !0), i
                        }, f.default.prototype.createSelect = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            f.default._validateParameters("createSelect", r);
                            var n, s = r[0];
                            return s instanceof f.default.Element && s.elt instanceof HTMLSelectElement ? this.elt = (e = s).elt : s instanceof HTMLSelectElement ? (e = m(s, this), this.elt = s) : (n = document.createElement("select"), s && "boolean" == typeof s && n.setAttribute("multiple", "true"), e = m(n, this), this.elt = n), e.option = function(e, t) {
                                var r;
                                if (void 0 !== e) {
                                    for (var o, n = 0; n < this.elt.length; n += 1)
                                        if (this.elt[n].textContent === e) {
                                            r = n;
                                            break
                                        } void 0 !== r ? !1 === t ? this.elt.remove(r) : this.elt[r].value = t : ((o = document.createElement("option")).textContent = e, o.value = void 0 === t ? e : t, this.elt.appendChild(o), this._pInst._elements.push(o))
                                }
                            }, e.selected = function(e) {
                                if (void 0 !== e) {
                                    for (var t = 0; t < this.elt.length; t += 1) this.elt[t].value.toString() === e.toString() && (this.elt.selectedIndex = t);
                                    return this
                                }
                                if (this.elt.getAttribute("multiple")) {
                                    var r = [],
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = this.elt.selectedOptions[Symbol.iterator](); !(o = (i = a.next()).done); o = !0) r.push(i.value.value)
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    return r
                                }
                                return this.elt.value
                            }, e.disable = function(e) {
                                if ("string" == typeof e)
                                    for (var t = 0; t < this.elt.length; t++) this.elt[t].value.toString() === e && (this.elt[t].disabled = !0, this.elt[t].selected = !1);
                                else this.elt.disabled = !0;
                                return this
                            }, e.enable = function(e) {
                                if ("string" == typeof e)
                                    for (var t = 0; t < this.elt.length; t++) this.elt[t].value.toString() === e && (this.elt[t].disabled = !1, this.elt[t].selected = !1);
                                else {
                                    this.elt.disabled = !1;
                                    for (var r = 0; r < this.elt.length; r++) this.elt[r].disabled = !1, this.elt[r].selected = !1
                                }
                                return this
                            }, e
                        };
                        var i = 0;

                        function h(e, t, r, o) {
                            var n = document.createElement(t),
                                s = ("string" == typeof(r = r || "") && (r = [r]), !0),
                                t = !1,
                                i = void 0;
                            try {
                                for (var a, l = r[Symbol.iterator](); !(s = (a = l.next()).done); s = !0) {
                                    var c = a.value,
                                        u = document.createElement("source");
                                    u.setAttribute("src", c), n.appendChild(u)
                                }
                            } catch (e) {
                                t = !0, i = e
                            } finally {
                                try {
                                    s || null == l.return || l.return()
                                } finally {
                                    if (t) throw i
                                }
                            }
                            "function" == typeof o && n.addEventListener("canplaythrough", function e() {
                                o(), n.removeEventListener("canplaythrough", e)
                            });
                            var d = m(n, e, !0);
                            return d.loadedmetadata = !1, n.addEventListener("loadedmetadata", function() {
                                d.width = n.videoWidth, d.height = n.videoHeight, 0 === d.elt.width && (d.elt.width = n.videoWidth), 0 === d.elt.height && (d.elt.height = n.videoHeight), d.presetPlaybackRate && (d.elt.playbackRate = d.presetPlaybackRate, delete d.presetPlaybackRate), d.loadedmetadata = !0
                            }), d
                        }

                        function y(e, t, r, o) {
                            d(this, y), this.callback = e, this.time = t, this.id = r, this.val = o
                        }

                        function g(e, t) {
                            d(this, g), this.file = e, this._pInst = t, t = e.type.split("/"), this.type = t[0], this.subtype = t[1], this.name = e.name, this.size = e.size, this.data = void 0
                        }
                        f.default.prototype.createRadio = function() {
                            function t(e) {
                                return e instanceof HTMLInputElement && "radio" === e.type
                            }

                            function d(e) {
                                return e instanceof HTMLLabelElement
                            }
                            var h, e, r, o = arguments.length <= 0 ? void 0 : arguments[0];
                            return o instanceof f.default.Element && (o.elt instanceof HTMLDivElement || o.elt instanceof HTMLSpanElement) ? (h = o, this.elt = o.elt) : o instanceof HTMLDivElement || o instanceof HTMLSpanElement ? (h = m(o, this), e = this.elt = o, "string" == typeof(arguments.length <= 1 ? void 0 : arguments[1]) && (r = arguments.length <= 1 ? void 0 : arguments[1])) : ("string" == typeof o && (r = o), e = document.createElement("div"), h = m(e, this), this.elt = e), h._name = r || "radioOption_".concat(i++), h._getOptionsArray = function() {
                                return Array.from(this.elt.children).filter(function(e) {
                                    return t(e) || d(e) && t(e.firstElementChild)
                                }).map(function(e) {
                                    return t(e) ? e : e.firstElementChild
                                })
                            }, h.option = function(e, t) {
                                var r, o, n, s = !0,
                                    i = !1,
                                    a = void 0;
                                try {
                                    for (var l, c = h._getOptionsArray()[Symbol.iterator](); !(s = (l = c.next()).done); s = !0) {
                                        var u = l.value;
                                        if (u.value === e) {
                                            r = u;
                                            break
                                        }
                                    }
                                } catch (e) {
                                    i = !0, a = e
                                } finally {
                                    try {
                                        s || null == c.return || c.return()
                                    } finally {
                                        if (i) throw a
                                    }
                                }
                                return void 0 === r && ((r = document.createElement("input")).setAttribute("type", "radio"), r.setAttribute("value", e)), r.setAttribute("name", h._name), d(r.parentElement) ? o = r.parentElement : (o = document.createElement("label")).insertAdjacentElement("afterbegin", r), o.lastElementChild instanceof HTMLSpanElement ? n = o.lastElementChild : (n = document.createElement("span"), r.insertAdjacentElement("afterend", n)), n.innerHTML = void 0 === t ? e : t, this.elt.appendChild(o), r
                            }, h.remove = function(e) {
                                var t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = h._getOptionsArray()[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        if (i.value === e) return void(d(i.parentElement) ? i.parentElement : i).remove()
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }, h.value = function() {
                                var e = "",
                                    t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = h._getOptionsArray()[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        if (i.checked) {
                                            e = i.value;
                                            break
                                        }
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                                return e
                            }, h.selected = function(e) {
                                var t = null;
                                if (void 0 === e) {
                                    var r = !0,
                                        o = !1,
                                        n = void 0;
                                    try {
                                        for (var s, i = h._getOptionsArray()[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) {
                                            var a = s.value;
                                            if (a.checked) {
                                                t = a;
                                                break
                                            }
                                        }
                                    } catch (e) {
                                        o = !0, n = e
                                    } finally {
                                        try {
                                            r || null == i.return || i.return()
                                        } finally {
                                            if (o) throw n
                                        }
                                    }
                                } else {
                                    h._getOptionsArray().forEach(function(e) {
                                        e.checked = !1, e.removeAttribute("checked")
                                    });
                                    var l = !0,
                                        o = !1,
                                        n = void 0;
                                    try {
                                        for (var c, u = h._getOptionsArray()[Symbol.iterator](); !(l = (c = u.next()).done); l = !0) {
                                            var d = c.value;
                                            d.value === e && (d.setAttribute("checked", !0), d.checked = !0, t = d)
                                        }
                                    } catch (e) {
                                        o = !0, n = e
                                    } finally {
                                        try {
                                            l || null == u.return || u.return()
                                        } finally {
                                            if (o) throw n
                                        }
                                    }
                                }
                                return t
                            }, h.disable = function() {
                                var e = !(0 < arguments.length && void 0 !== arguments[0]) || arguments[0],
                                    t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = h._getOptionsArray()[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) n.value.setAttribute("disabled", e)
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }, h
                        }, f.default.prototype.createColorPicker = function(e) {
                            f.default._validateParameters("createColorPicker", arguments);
                            var t = document.createElement("input");
                            return t.type = "color", e ? e instanceof f.default.Color ? t.value = e.toString("#rrggbb") : (f.default.prototype._colorMode = "rgb", f.default.prototype._colorMaxes = {
                                rgb: [255, 255, 255, 255],
                                hsb: [360, 100, 100, 1],
                                hsl: [360, 100, 100, 1]
                            }, t.value = f.default.prototype.color(e).toString("#rrggbb")) : t.value = "#000000", (t = m(t, this)).color = function() {
                                return e && (e.mode && (f.default.prototype._colorMode = e.mode), e.maxes) && (f.default.prototype._colorMaxes = e.maxes), f.default.prototype.color(this.elt.value)
                            }, t
                        }, f.default.prototype.createInput = function() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "",
                                t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : "text",
                                r = (f.default._validateParameters("createInput", arguments), document.createElement("input"));
                            return r.setAttribute("value", e), r.setAttribute("type", t), m(r, this)
                        }, f.default.prototype.createFileInput = function(a) {
                            var e, t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1];
                            if (f.default._validateParameters("createFileInput", arguments), window.File && window.FileReader && window.FileList && window.Blob) return (e = document.createElement("input")).setAttribute("type", "file"), t && e.setAttribute("multiple", !0), e.addEventListener("change", function(e) {
                                var t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = e.target.files[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        f.default.File._load(i, a)
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }, !1), m(e, this);
                            console.log("The File APIs are not fully supported in this browser. Cannot create element.")
                        }, f.default.prototype.createVideo = function(e, t) {
                            return f.default._validateParameters("createVideo", arguments), h(this, "video", e, t)
                        }, f.default.prototype.createAudio = function(e, t) {
                            return f.default._validateParameters("createAudio", arguments), h(this, "audio", e, t)
                        }, f.default.prototype.VIDEO = "video", f.default.prototype.AUDIO = "audio", void 0 === navigator.mediaDevices && (navigator.mediaDevices = {}), void 0 === navigator.mediaDevices.getUserMedia && (navigator.mediaDevices.getUserMedia = function(r) {
                            var o = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
                            return o ? new Promise(function(e, t) {
                                o.call(navigator, r, e, t)
                            }) : Promise.reject(new Error("getUserMedia is not implemented in this browser"))
                        }), f.default.prototype.createCapture = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            if (f.default._validateParameters("createCapture", t), !navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) throw new DOMException("getUserMedia not supported in this browser");
                            for (var o, n = !0, s = !0, i = !1, a = 0, l = t; a < l.length; a++) {
                                var c = l[a];
                                c === f.default.prototype.VIDEO ? s = !1 : c === f.default.prototype.AUDIO ? n = !1 : "object" === p(c) ? (void 0 !== c.flipped && (i = c.flipped, delete c.flipped), u = Object.assign({}, u, c)) : "function" == typeof c && (o = c)
                            }
                            var u = Object.assign({}, {
                                    video: n,
                                    audio: s
                                }, u),
                                d = document.createElement("video"),
                                h = (d.setAttribute("playsinline", ""), navigator.mediaDevices.getUserMedia(u).then(function(t) {
                                    try {
                                        "srcObject" in d ? d.srcObject = t : d.src = window.URL.createObjectURL(t)
                                    } catch (e) {
                                        d.src = t
                                    }
                                }).catch(function(e) {
                                    "NotFoundError" === e.name && f.default._friendlyError("No webcam found on this device", "createCapture"), "NotAllowedError" === e.name && f.default._friendlyError("Access to the camera was denied", "createCapture"), console.error(e)
                                }), m(d, this, !0));
                            return h.loadedmetadata = !1, d.addEventListener("loadedmetadata", function() {
                                d.play(), d.width ? (h.width = d.width, h.height = d.height, i && (h.elt.style.transform = "scaleX(-1)")) : (h.width = h.elt.width = d.videoWidth, h.height = h.elt.height = d.videoHeight), h.loadedmetadata = !0, o && o(d.srcObject)
                            }), h.flipped = i, h
                        }, f.default.prototype.createElement = function(e, t) {
                            return f.default._validateParameters("createElement", arguments), e = document.createElement(e), void 0 !== t && (e.innerHTML = t), m(e, this)
                        }, f.default.Element.prototype.addClass = function(e) {
                            return this.elt.className ? this.hasClass(e) || (this.elt.className = this.elt.className + " " + e) : this.elt.className = e, this
                        }, f.default.Element.prototype.removeClass = function(e) {
                            return this.elt.classList.remove(e), this
                        }, f.default.Element.prototype.hasClass = function(e) {
                            return this.elt.classList.contains(e)
                        }, f.default.Element.prototype.toggleClass = function(e) {
                            return this.elt.classList.contains(e) ? this.elt.classList.remove(e) : this.elt.classList.add(e), this
                        }, f.default.Element.prototype.child = function(e) {
                            return void 0 === e ? this.elt.childNodes : ("string" == typeof e ? ("#" === e[0] && (e = e.substring(1)), e = document.getElementById(e)) : e instanceof f.default.Element && (e = e.elt), e instanceof HTMLElement && this.elt.appendChild(e), this)
                        }, f.default.Element.prototype.center = function(e) {
                            var t = this.elt.style.display,
                                r = "none" === this.elt.style.display,
                                o = "none" === this.parent().style.display,
                                n = {
                                    x: this.elt.offsetLeft,
                                    y: this.elt.offsetTop
                                },
                                s = (r && this.show(), o && this.parent().show(), this.elt.style.display = "block", this.position(0, 0), Math.abs(this.parent().offsetWidth - this.elt.offsetWidth)),
                                i = Math.abs(this.parent().offsetHeight - this.elt.offsetHeight);
                            return "both" === e || void 0 === e ? this.position(s / 2 + this.parent().offsetLeft, i / 2 + this.parent().offsetTop) : "horizontal" === e ? this.position(s / 2 + this.parent().offsetLeft, n.y) : "vertical" === e && this.position(n.x, i / 2 + this.parent().offsetTop), this.style("display", t), r && this.hide(), o && this.parent().hide(), this
                        }, f.default.Element.prototype.html = function() {
                            return 0 === arguments.length ? this.elt.innerHTML : (arguments.length <= 1 || !arguments[1] ? this.elt.innerHTML = arguments.length <= 0 ? void 0 : arguments[0] : this.elt.insertAdjacentHTML("beforeend", arguments.length <= 0 ? void 0 : arguments[0]), this)
                        }, f.default.Element.prototype.position = function() {
                            return 0 === arguments.length ? {
                                x: this.elt.offsetLeft,
                                y: this.elt.offsetTop
                            } : (this.elt.style.position = "static" !== (arguments.length <= 2 ? void 0 : arguments[2]) && "fixed" !== (arguments.length <= 2 ? void 0 : arguments[2]) && "relative" !== (arguments.length <= 2 ? void 0 : arguments[2]) && "sticky" !== (arguments.length <= 2 ? void 0 : arguments[2]) && "initial" !== (arguments.length <= 2 ? void 0 : arguments[2]) && "inherit" !== (arguments.length <= 2 ? void 0 : arguments[2]) ? "absolute" : arguments.length <= 2 ? void 0 : arguments[2], this.elt.style.left = (arguments.length <= 0 ? void 0 : arguments[0]) + "px", this.elt.style.top = (arguments.length <= 1 ? void 0 : arguments[1]) + "px", this.x = arguments.length <= 0 ? void 0 : arguments[0], this.y = arguments.length <= 1 ? void 0 : arguments[1], this)
                        }, f.default.Element.prototype._translate = function() {
                            this.elt.style.position = "absolute";
                            var e = "";
                            return this.elt.style.transform && (e = (e = this.elt.style.transform.replace(/translate3d\(.*\)/g, "")).replace(/translate[X-Z]?\(.*\)/g, "")), 2 === arguments.length ? this.elt.style.transform = "translate(" + (arguments.length <= 0 ? void 0 : arguments[0]) + "px, " + (arguments.length <= 1 ? void 0 : arguments[1]) + "px)" : 2 < arguments.length && (this.elt.style.transform = "translate3d(" + (arguments.length <= 0 ? void 0 : arguments[0]) + "px," + (arguments.length <= 1 ? void 0 : arguments[1]) + "px," + (arguments.length <= 2 ? void 0 : arguments[2]) + "px)", this.elt.parentElement.style.perspective = 3 === arguments.length ? "1000px" : (arguments.length <= 3 ? void 0 : arguments[3]) + "px"), this.elt.style.transform += e, this
                        }, f.default.Element.prototype._rotate = function() {
                            var e = "";
                            return this.elt.style.transform && (e = (e = this.elt.style.transform.replace(/rotate3d\(.*\)/g, "")).replace(/rotate[X-Z]?\(.*\)/g, "")), 1 === arguments.length ? this.elt.style.transform = "rotate(" + (arguments.length <= 0 ? void 0 : arguments[0]) + "deg)" : 2 === arguments.length ? this.elt.style.transform = "rotate(" + (arguments.length <= 0 ? void 0 : arguments[0]) + "deg, " + (arguments.length <= 1 ? void 0 : arguments[1]) + "deg)" : 3 === arguments.length && (this.elt.style.transform = "rotateX(" + (arguments.length <= 0 ? void 0 : arguments[0]) + "deg)", this.elt.style.transform += "rotateY(" + (arguments.length <= 1 ? void 0 : arguments[1]) + "deg)", this.elt.style.transform += "rotateZ(" + (arguments.length <= 2 ? void 0 : arguments[2]) + "deg)"), this.elt.style.transform += e, this
                        }, f.default.Element.prototype.style = function(e, t) {
                            if (void 0 === (t = t instanceof f.default.Color ? "rgba(" + t.levels[0] + "," + t.levels[1] + "," + t.levels[2] + "," + t.levels[3] / 255 + ")" : t)) {
                                if (-1 === e.indexOf(":")) return window.getComputedStyle(this.elt).getPropertyValue(e);
                                for (var r = e.split(";"), o = 0; o < r.length; o++) {
                                    var n = r[o].split(":");
                                    n[0] && n[1] && (this.elt.style[n[0].trim()] = n[1].trim())
                                }
                            } else this.elt.style[e] = t, "width" !== e && "height" !== e && "left" !== e && "top" !== e || (t = window.getComputedStyle(this.elt).getPropertyValue(e).replace(/[^\d.]/g, ""), this[e] = Math.round(parseFloat(t, 10)));
                            return this
                        }, f.default.Element.prototype.attribute = function(e, t) {
                            if (null == this.elt.firstChild || "checkbox" !== this.elt.firstChild.type && "radio" !== this.elt.firstChild.type) return void 0 === t ? this.elt.getAttribute(e) : (this.elt.setAttribute(e, t), this);
                            if (void 0 === t) return this.elt.firstChild.getAttribute(e);
                            for (var r = 0; r < this.elt.childNodes.length; r++) this.elt.childNodes[r].setAttribute(e, t)
                        }, f.default.Element.prototype.removeAttribute = function(e) {
                            if (null != this.elt.firstChild && ("checkbox" === this.elt.firstChild.type || "radio" === this.elt.firstChild.type))
                                for (var t = 0; t < this.elt.childNodes.length; t++) this.elt.childNodes[t].removeAttribute(e);
                            return this.elt.removeAttribute(e), this
                        }, f.default.Element.prototype.value = function() {
                            return 0 < arguments.length ? (this.elt.value = arguments.length <= 0 ? void 0 : arguments[0], this) : "range" === this.elt.type ? parseFloat(this.elt.value) : this.elt.value
                        }, f.default.Element.prototype.show = function() {
                            return this.elt.style.display = "block", this
                        }, f.default.Element.prototype.hide = function() {
                            return this.elt.style.display = "none", this
                        }, f.default.Element.prototype.size = function(e, t) {
                            if (0 === arguments.length) return {
                                width: this.elt.offsetWidth,
                                height: this.elt.offsetHeight
                            };
                            var r = e,
                                o = t,
                                n = f.default.prototype.AUTO;
                            if (r !== n || o !== n) {
                                if (r === n ? r = t * this.width / this.height : o === n && (o = e * this.height / this.width), this.elt instanceof HTMLCanvasElement) {
                                    var s, i = {},
                                        a = this.elt.getContext("2d");
                                    for (s in a) i[s] = a[s];
                                    for (s in this.elt.setAttribute("width", r * this._pInst._pixelDensity), this.elt.setAttribute("height", o * this._pInst._pixelDensity), this.elt.style.width = r + "px", this.elt.style.height = o + "px", this._pInst.scale(this._pInst._pixelDensity, this._pInst._pixelDensity), i) this.elt.getContext("2d")[s] = i[s]
                                } else this.elt.style.width = r + "px", this.elt.style.height = o + "px", this.elt.width = r, this.elt.height = o;
                                this.width = r, this.height = o, this._pInst && this._pInst._curElement && this._pInst._curElement.elt === this.elt && (this._pInst._setProperty("width", r), this._pInst._setProperty("height", o))
                            }
                            return this
                        }, f.default.Element.prototype.remove = function() {
                            this instanceof f.default.MediaElement && (this.stop(), null !== (t = this.elt.srcObject)) && t.getTracks().forEach(function(e) {
                                e.stop()
                            });
                            var e, t = this._pInst._elements.indexOf(this);
                            for (e in -1 !== t && this._pInst._elements.splice(t, 1), this._events) this.elt.removeEventListener(e, this._events[e]);
                            this.elt && this.elt.parentNode && this.elt.parentNode.removeChild(this.elt)
                        }, f.default.Element.prototype.drop = function(a, l) {
                            var e;
                            return window.File && window.FileReader && window.FileList && window.Blob ? (this._dragDisabled || (this._dragDisabled = !0, this.elt.addEventListener("dragover", e = function(e) {
                                e.preventDefault()
                            }), this.elt.addEventListener("dragleave", e)), f.default.Element._attachListener("drop", function(e) {
                                e.preventDefault(), "function" == typeof l && l.call(this, e);
                                var e = e.dataTransfer.files,
                                    t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = e[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        f.default.File._load(i, a)
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }, this)) : console.log("The File APIs are not fully supported in this browser."), this
                        }, f.default.Element.prototype.draggable = function(r) {
                            var e, o = "ontouchstart" in window,
                                n = 0,
                                s = 0,
                                i = 0,
                                a = 0,
                                l = o ? "touchend" : "mouseup",
                                c = o ? "touchmove" : "mousemove";

                            function u(e) {
                                var t;
                                e = e || window.event, a = o ? (t = e.changedTouches, n = i - parseInt(t[0].clientX), s = a - parseInt(t[0].clientY), i = parseInt(t[0].clientX), parseInt(t[0].clientY)) : (n = i - parseInt(e.clientX), s = a - parseInt(e.clientY), i = parseInt(e.clientX), parseInt(e.clientY)), r.style.left = r.offsetLeft - n + "px", r.style.top = r.offsetTop - s + "px"
                            }

                            function d() {
                                document.removeEventListener(l, d, !1), document.removeEventListener(c, u, !1)
                            }
                            return void 0 === r ? e = r = this.elt : r !== this.elt && r.elt !== this.elt && (r = r.elt, e = this.elt), e.addEventListener(o ? "touchstart" : "mousedown", function(e) {
                                var t;
                                return e = e || window.event, a = o ? (t = e.changedTouches, i = parseInt(t[0].clientX), parseInt(t[0].clientY)) : (i = parseInt(e.clientX), parseInt(e.clientY)), document.addEventListener(l, d, !1), document.addEventListener(c, u, !1), !1
                            }, !1), e.style.cursor = "move", this
                        }, t = (t => {
                            var r = i;
                            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
                            r.prototype = Object.create(t && t.prototype, {
                                constructor: {
                                    value: r,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), t && l(r, t);
                            var o, s = function() {
                                var e = u(o),
                                    t = (() => {
                                        if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                            if ("function" == typeof Proxy) return 1;
                                            try {
                                                return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                            } catch (e) {}
                                        }
                                    })() ? (t = u(this).constructor, Reflect.construct(e, arguments, t)) : e.apply(this, arguments),
                                    e = this;
                                return !(t = t) || "object" !== p(t) && "function" != typeof t ? c(e) : t
                            };

                            function i(o, e) {
                                d(this, i);
                                var n = c(e = s.call(this, o, e));
                                return e.elt.crossOrigin = "anonymous", e._prevTime = 0, e._cueIDCounter = 0, e._cues = [], e.pixels = [], e._pixelsState = c(e), e._pixelDensity = 1, e._modified = !1, e._frameOnCanvas = -1, Object.defineProperty(n, "src", {
                                    get: function() {
                                        var e = n.elt.children[0].src,
                                            t = n.elt.src === window.location.href ? "" : n.elt.src;
                                        return e === window.location.href ? t : e
                                    },
                                    set: function(e) {
                                        for (var t = 0; t < n.elt.children.length; t++) n.elt.removeChild(n.elt.children[t]);
                                        var r = document.createElement("source");
                                        r.src = e, o.appendChild(r), n.elt.src = e, n.modified = !0
                                    }
                                }), n._onended = function() {}, n.elt.onended = function() {
                                    n._onended(n)
                                }, e
                            }
                            return a(o = i, [{
                                key: "play",
                                value: function() {
                                    var e;
                                    return this.elt.currentTime === this.elt.duration && (this.elt.currentTime = 0), 1 < this.elt.readyState || this.elt.load(), (e = this.elt.play()) && e.catch && e.catch(function(e) {
                                        "NotAllowedError" === e.name ? console.error(e) : console.error("Media play method encountered an unexpected error", e)
                                    }), this
                                }
                            }, {
                                key: "stop",
                                value: function() {
                                    return this.elt.pause(), this.elt.currentTime = 0, this
                                }
                            }, {
                                key: "pause",
                                value: function() {
                                    return this.elt.pause(), this
                                }
                            }, {
                                key: "loop",
                                value: function() {
                                    return this.elt.setAttribute("loop", !0), this.play(), this
                                }
                            }, {
                                key: "noLoop",
                                value: function() {
                                    return this.elt.removeAttribute("loop"), this
                                }
                            }, {
                                key: "_setupAutoplayFailDetection",
                                value: function() {
                                    var t = setTimeout(function() {
                                        console.error(e)
                                    }, 500);
                                    this.elt.addEventListener("play", function() {
                                        return clearTimeout(t)
                                    }, {
                                        passive: !0,
                                        once: !0
                                    })
                                }
                            }, {
                                key: "autoplay",
                                value: function(e) {
                                    var t = this,
                                        r = this.elt.getAttribute("autoplay");
                                    return this.elt.setAttribute("autoplay", e), e && !r && (e = function() {
                                        return t._setupAutoplayFailDetection()
                                    }, 4 === this.elt.readyState ? e() : this.elt.addEventListener("canplay", e, {
                                        passive: !0,
                                        once: !0
                                    })), this
                                }
                            }, {
                                key: "volume",
                                value: function(e) {
                                    if (void 0 === e) return this.elt.volume;
                                    this.elt.volume = e
                                }
                            }, {
                                key: "speed",
                                value: function(e) {
                                    if (void 0 === e) return this.presetPlaybackRate || this.elt.playbackRate;
                                    this.loadedmetadata ? this.elt.playbackRate = e : this.presetPlaybackRate = e
                                }
                            }, {
                                key: "time",
                                value: function(e) {
                                    return void 0 === e ? this.elt.currentTime : (this.elt.currentTime = e, this)
                                }
                            }, {
                                key: "duration",
                                value: function() {
                                    return this.elt.duration
                                }
                            }, {
                                key: "_ensureCanvas",
                                value: function() {
                                    this.canvas || (this.canvas = document.createElement("canvas"), this.drawingContext = this.canvas.getContext("2d"), this.setModified(!0));
                                    var e = this._frameOnCanvas !== this._pInst.frameCount;
                                    this.loadedmetadata && e && (this.canvas.width !== this.elt.width && (this.canvas.width = this.elt.width, this.canvas.height = this.elt.height, this.width = this.canvas.width, this.height = this.canvas.height), this.drawingContext.clearRect(0, 0, this.canvas.width, this.canvas.height), !0 === this.flipped && (this.drawingContext.save(), this.drawingContext.scale(-1, 1), this.drawingContext.translate(-this.canvas.width, 0)), this.drawingContext.drawImage(this.elt, 0, 0, this.canvas.width, this.canvas.height), !0 === this.flipped && this.drawingContext.restore(), this.setModified(!0), this._frameOnCanvas = this._pInst.frameCount)
                                }
                            }, {
                                key: "loadPixels",
                                value: function() {
                                    this._ensureCanvas();
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    return f.default.Renderer2D.prototype.loadPixels.apply(this, t)
                                }
                            }, {
                                key: "updatePixels",
                                value: function(e, t, r, o) {
                                    return this.loadedmetadata && (this._ensureCanvas(), f.default.Renderer2D.prototype.updatePixels.call(this, e, t, r, o)), this.setModified(!0), this
                                }
                            }, {
                                key: "get",
                                value: function() {
                                    this._ensureCanvas();
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    return f.default.Renderer2D.prototype.get.apply(this, t)
                                }
                            }, {
                                key: "_getPixel",
                                value: function() {
                                    this.loadPixels();
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    return f.default.Renderer2D.prototype._getPixel.apply(this, t)
                                }
                            }, {
                                key: "set",
                                value: function(e, t, r) {
                                    this.loadedmetadata && (this._ensureCanvas(), f.default.Renderer2D.prototype.set.call(this, e, t, r), this.setModified(!0))
                                }
                            }, {
                                key: "copy",
                                value: function() {
                                    this._ensureCanvas();
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    f.default.prototype.copy.apply(this, t)
                                }
                            }, {
                                key: "mask",
                                value: function() {
                                    this.loadPixels(), this.setModified(!0);
                                    for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                    f.default.Image.prototype.mask.apply(this, t)
                                }
                            }, {
                                key: "isModified",
                                value: function() {
                                    return this._modified
                                }
                            }, {
                                key: "setModified",
                                value: function(e) {
                                    this._modified = e
                                }
                            }, {
                                key: "onended",
                                value: function(e) {
                                    return this._onended = e, this
                                }
                            }, {
                                key: "connect",
                                value: function(e) {
                                    var t, r;
                                    if ("function" == typeof f.default.prototype.getAudioContext) t = f.default.prototype.getAudioContext(), r = f.default.soundOut.input;
                                    else try {
                                        r = (t = e.context).destination
                                    } catch (e) {
                                        throw "connect() is meant to be used with Web Audio API or p5.sound.js"
                                    }
                                    this.audioSourceNode || (this.audioSourceNode = t.createMediaElementSource(this.elt), this.audioSourceNode.connect(r)), e ? e.input ? this.audioSourceNode.connect(e.input) : this.audioSourceNode.connect(e) : this.audioSourceNode.connect(r)
                                }
                            }, {
                                key: "disconnect",
                                value: function() {
                                    if (!this.audioSourceNode) throw "nothing to disconnect";
                                    this.audioSourceNode.disconnect()
                                }
                            }, {
                                key: "showControls",
                                value: function() {
                                    this.elt.style["text-align"] = "inherit", this.elt.controls = !0
                                }
                            }, {
                                key: "hideControls",
                                value: function() {
                                    this.elt.controls = !1
                                }
                            }, {
                                key: "addCue",
                                value: function(e, t, r) {
                                    var o = this._cueIDCounter++,
                                        t = new y(t, e, o, r);
                                    return this._cues.push(t), this.elt.ontimeupdate || (this.elt.ontimeupdate = this._onTimeUpdate.bind(this)), o
                                }
                            }, {
                                key: "removeCue",
                                value: function(e) {
                                    for (var t = 0; t < this._cues.length; t++) this._cues[t].id === e && (console.log(e), this._cues.splice(t, 1));
                                    0 === this._cues.length && (this.elt.ontimeupdate = null)
                                }
                            }, {
                                key: "clearCues",
                                value: function() {
                                    this._cues = [], this.elt.ontimeupdate = null
                                }
                            }, {
                                key: "_onTimeUpdate",
                                value: function() {
                                    for (var e = this.time(), t = 0; t < this._cues.length; t++) {
                                        var r = this._cues[t].time,
                                            o = this._cues[t].val;
                                        this._prevTime < r && r <= e && this._cues[t].callback(o)
                                    }
                                    this._prevTime = e
                                }
                            }]), i
                        })(f.default.Element), f.default.MediaElement = t, a(g, null, [{
                            key: "_createLoader",
                            value: function(o, n) {
                                var e = new FileReader;
                                return e.onload = function(e) {
                                    var t, r = new f.default.File(o);
                                    "application/json" === r.file.type ? r.data = JSON.parse(e.target.result) : "text/xml" === r.file.type ? (t = (new DOMParser).parseFromString(e.target.result, "text/xml"), r.data = new f.default.XML(t.documentElement)) : r.data = e.target.result, n(r)
                                }, e
                            }
                        }, {
                            key: "_load",
                            value: function(e, t) {
                                var r;
                                /^text\//.test(e.type) || "application/json" === e.type ? f.default.File._createLoader(e, t).readAsText(e) : /^(video|audio)\//.test(e.type) ? ((r = new f.default.File(e)).data = URL.createObjectURL(e), t(r)) : f.default.File._createLoader(e, t).readAsDataURL(e)
                            }
                        }]), f.default.File = t = g, t = f.default, o.default = t
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.every": 155,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        "core-js/modules/web.url": 248
                    }],
                    300: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                                default: e
                            },
                            i = (o.default.prototype.deviceOrientation = 1 < window.innerWidth / window.innerHeight ? "landscape" : "portrait", o.default.prototype.accelerationX = 0, o.default.prototype.accelerationY = 0, o.default.prototype.accelerationZ = 0, o.default.prototype.pAccelerationX = 0, o.default.prototype.pAccelerationY = 0, o.default.prototype.pAccelerationZ = 0, o.default.prototype._updatePAccelerations = function() {
                                this._setProperty("pAccelerationX", this.accelerationX), this._setProperty("pAccelerationY", this.accelerationY), this._setProperty("pAccelerationZ", this.accelerationZ)
                            }, o.default.prototype.rotationX = 0, o.default.prototype.rotationY = 0, o.default.prototype.rotationZ = 0, o.default.prototype.pRotationX = 0, o.default.prototype.pRotationY = 0, o.default.prototype.pRotationZ = 0),
                            a = 0,
                            l = 0,
                            c = "clockwise",
                            u = "clockwise",
                            d = "clockwise",
                            h = (o.default.prototype.pRotateDirectionX = void 0, o.default.prototype.pRotateDirectionY = void 0, o.default.prototype.pRotateDirectionZ = void 0, o.default.prototype._updatePRotations = function() {
                                this._setProperty("pRotationX", this.rotationX), this._setProperty("pRotationY", this.rotationY), this._setProperty("pRotationZ", this.rotationZ)
                            }, o.default.prototype.turnAxis = void 0, .5),
                            f = 30,
                            e = (o.default.prototype.setMoveThreshold = function(e) {
                                o.default._validateParameters("setMoveThreshold", arguments), h = e
                            }, o.default.prototype.setShakeThreshold = function(e) {
                                o.default._validateParameters("setShakeThreshold", arguments), f = e
                            }, o.default.prototype._ondeviceorientation = function(e) {
                                this._updatePRotations(), this._setProperty("rotationX", this._fromDegrees(e.beta)), this._setProperty("rotationY", this._fromDegrees(e.gamma)), this._setProperty("rotationZ", this._fromDegrees(e.alpha)), this._handleMotion()
                            }, o.default.prototype._ondevicemotion = function(e) {
                                this._updatePAccelerations(), this._setProperty("accelerationX", 2 * e.acceleration.x), this._setProperty("accelerationY", 2 * e.acceleration.y), this._setProperty("accelerationZ", 2 * e.acceleration.z), this._handleMotion()
                            }, o.default.prototype._handleMotion = function() {
                                90 === window.orientation || -90 === window.orientation ? this._setProperty("deviceOrientation", "landscape") : 0 === window.orientation ? this._setProperty("deviceOrientation", "portrait") : void 0 === window.orientation && this._setProperty("deviceOrientation", "undefined");
                                var e, t, r, o, n, s = this._isGlobal ? window : this;
                                "function" == typeof s.deviceMoved && (Math.abs(this.accelerationX - this.pAccelerationX) > h || Math.abs(this.accelerationY - this.pAccelerationY) > h || Math.abs(this.accelerationZ - this.pAccelerationZ) > h) && s.deviceMoved(), "function" == typeof s.deviceTurned && (t = this._toDegrees(this.rotationX) + 180, r = this._toDegrees(this.pRotationX) + 180, e = i + 180, 0 < t - r && t - r < 270 || t - r < -270 ? c = "clockwise" : (t - r < 0 || 270 < t - r) && (c = "counter-clockwise"), c !== this.pRotateDirectionX && (e = t), 90 < Math.abs(t - e) && Math.abs(t - e) < 270 && (e = t, this._setProperty("turnAxis", "X"), s.deviceTurned()), this.pRotateDirectionX = c, i = e - 180, r = this._toDegrees(this.rotationY) + 180, t = this._toDegrees(this.pRotationY) + 180, e = a + 180, 0 < r - t && r - t < 270 || r - t < -270 ? u = "clockwise" : (r - t < 0 || 270 < r - this.pRotationY) && (u = "counter-clockwise"), u !== this.pRotateDirectionY && (e = r), 90 < Math.abs(r - e) && Math.abs(r - e) < 270 && (e = r, this._setProperty("turnAxis", "Y"), s.deviceTurned()), this.pRotateDirectionY = u, a = e - 180, 0 < (t = this._toDegrees(this.rotationZ)) - (r = this._toDegrees(this.pRotationZ)) && t - r < 270 || t - r < -270 ? d = "clockwise" : (t - r < 0 || 270 < t - r) && (d = "counter-clockwise"), d !== this.pRotateDirectionZ && (l = t), 90 < Math.abs(t - l) && Math.abs(t - l) < 270 && (l = t, this._setProperty("turnAxis", "Z"), s.deviceTurned()), this.pRotateDirectionZ = d, this._setProperty("turnAxis", void 0)), "function" == typeof s.deviceShaken && (null !== this.pAccelerationX && (o = Math.abs(this.accelerationX - this.pAccelerationX), n = Math.abs(this.accelerationY - this.pAccelerationY)), f < o + n) && s.deviceShaken()
                            }, o.default);
                        r.default = e
                    }, {
                        "../core/main": 283
                    }],
                    301: [function(e, t, r) {
                        e("core-js/modules/es.array.for-each"), e("core-js/modules/es.string.repeat"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.string.repeat"), e("core-js/modules/web.dom-collections.for-each"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };
                        o.default.prototype.isKeyPressed = !1, o.default.prototype.keyIsPressed = !1, o.default.prototype.key = "", o.default.prototype.keyCode = 0, o.default.prototype._onkeydown = function(e) {
                            var t;
                            e.repeat || (this._setProperty("isKeyPressed", !0), this._setProperty("keyIsPressed", !0), this._setProperty("keyCode", e.which), this._downKeys[e.which] = !0, this._setProperty("key", e.key || String.fromCharCode(e.which) || e.which), e.metaKey && (this._metaKeys || (this._metaKeys = []), this._metaKeys.push(e.which)), "function" != typeof(t = this._isGlobal ? window : this).keyPressed) || e.charCode || !1 === t.keyPressed(e) && e.preventDefault()
                        }, o.default.prototype._onkeyup = function(e) {
                            var t = this,
                                r = (this._setProperty("isKeyPressed", !1), this._setProperty("keyIsPressed", !1), this._setProperty("_lastKeyCodePressed", this._keyCode), this._downKeys[e.which] = !1, "Meta" === e.key && this._metaKeys && (this._metaKeys.forEach(function(e) {
                                    t._downKeys[e] = !1
                                }), this._metaKeys = []), this._isGlobal ? window : this);
                            "function" == typeof r.keyReleased && !1 === r.keyReleased(e) && e.preventDefault()
                        }, o.default.prototype._onkeypress = function(e) {
                            var t;
                            e.which !== this._lastKeyCodeTyped && (this._setProperty("_lastKeyCodeTyped", e.which), this._setProperty("key", e.key || String.fromCharCode(e.which) || e.which), "function" == typeof(t = this._isGlobal ? window : this).keyTyped) && !1 === t.keyTyped(e) && e.preventDefault()
                        }, o.default.prototype._onblur = function(e) {
                            this._downKeys = {}
                        }, o.default.prototype.keyIsDown = function(e) {
                            return o.default._validateParameters("keyIsDown", arguments), this._downKeys[e] || !1
                        }, o.default.prototype._areDownKeys = function() {
                            for (var e in this._downKeys)
                                if (this._downKeys.hasOwnProperty(e) && !0 === this._downKeys[e]) return !0;
                            return !1
                        }, r.default = e = o.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.string.repeat": 203,
                        "core-js/modules/web.dom-collections.for-each": 245
                    }],
                    302: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            s = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        n.default.prototype.movedX = 0, n.default.prototype.movedY = 0, n.default.prototype._hasMouseInteracted = !1, n.default.prototype.mouseX = 0, n.default.prototype.mouseY = 0, n.default.prototype.pmouseX = 0, n.default.prototype.pmouseY = 0, n.default.prototype.winMouseX = 0, n.default.prototype.winMouseY = 0, n.default.prototype.pwinMouseX = 0, n.default.prototype.pwinMouseY = 0, n.default.prototype.mouseButton = 0, n.default.prototype.mouseIsPressed = !1, n.default.prototype._updateNextMouseCoords = function(e) {
                            var t, r, o, n, s;
                            null !== this._curElement && (!e.touches || 0 < e.touches.length) && (t = this._curElement.elt, r = this.width, o = this.height, (n = e) && !n.clientX && (n.touches ? n = n.touches[0] : n.changedTouches && (n = n.changedTouches[0])), s = t.getBoundingClientRect(), r = t.scrollWidth / r || 1, t = t.scrollHeight / o || 1, o = {
                                x: (n.clientX - s.left) / r,
                                y: (n.clientY - s.top) / t,
                                winX: n.clientX,
                                winY: n.clientY,
                                id: n.identifier
                            }, this._setProperty("movedX", e.movementX), this._setProperty("movedY", e.movementY), this._setProperty("mouseX", o.x), this._setProperty("mouseY", o.y), this._setProperty("winMouseX", o.winX), this._setProperty("winMouseY", o.winY)), this._hasMouseInteracted || (this._updateMouseCoords(), this._setProperty("_hasMouseInteracted", !0))
                        }, n.default.prototype._updateMouseCoords = function() {
                            this._setProperty("pmouseX", this.mouseX), this._setProperty("pmouseY", this.mouseY), this._setProperty("pwinMouseX", this.winMouseX), this._setProperty("pwinMouseY", this.winMouseY), this._setProperty("_pmouseWheelDeltaY", this._mouseWheelDeltaY)
                        }, n.default.prototype._setMouseButton = function(e) {
                            1 === e.button ? this._setProperty("mouseButton", s.CENTER) : 2 === e.button ? this._setProperty("mouseButton", s.RIGHT) : this._setProperty("mouseButton", s.LEFT)
                        }, n.default.prototype._onmousemove = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._updateNextMouseCoords(e), this.mouseIsPressed ? "function" == typeof t.mouseDragged ? !1 === t.mouseDragged(e) && e.preventDefault() : "function" == typeof t.touchMoved && !1 === t.touchMoved(e) && e.preventDefault() : "function" == typeof t.mouseMoved && !1 === t.mouseMoved(e) && e.preventDefault()
                        }, n.default.prototype._onmousedown = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._setProperty("mouseIsPressed", !0), this._setMouseButton(e), this._updateNextMouseCoords(e), this.touchstart || ("function" == typeof t.mousePressed ? !1 === t.mousePressed(e) && e.preventDefault() : "function" == typeof t.touchStarted && !1 === t.touchStarted(e) && e.preventDefault(), this.touchstart = !1)
                        }, n.default.prototype._onmouseup = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._setProperty("mouseIsPressed", !1), this.touchend || ("function" == typeof t.mouseReleased ? !1 === t.mouseReleased(e) && e.preventDefault() : "function" == typeof t.touchEnded && !1 === t.touchEnded(e) && e.preventDefault(), this.touchend = !1)
                        }, n.default.prototype._ondragend = n.default.prototype._onmouseup, n.default.prototype._ondragover = n.default.prototype._onmousemove, n.default.prototype._onclick = function(e) {
                            var t = this._isGlobal ? window : this;
                            "function" == typeof t.mouseClicked && !1 === t.mouseClicked(e) && e.preventDefault()
                        }, n.default.prototype._ondblclick = function(e) {
                            var t = this._isGlobal ? window : this;
                            "function" == typeof t.doubleClicked && !1 === t.doubleClicked(e) && e.preventDefault()
                        }, n.default.prototype._mouseWheelDeltaY = 0, n.default.prototype._pmouseWheelDeltaY = 0, n.default.prototype._onwheel = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._setProperty("_mouseWheelDeltaY", e.deltaY), "function" == typeof t.mouseWheel && (e.delta = e.deltaY, !1 === t.mouseWheel(e)) && e.preventDefault()
                        }, n.default.prototype.requestPointerLock = function() {
                            var e = this._curElement.elt;
                            return e.requestPointerLock = e.requestPointerLock || e.mozRequestPointerLock, e.requestPointerLock ? (e.requestPointerLock(), !0) : (console.log("requestPointerLock is not implemented in this browser"), !1)
                        }, n.default.prototype.exitPointerLock = function() {
                            document.exitPointerLock()
                        }, e = n.default, r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    303: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype.touches = [], e.default.prototype._updateTouchCoords = function(e) {
                            if (null !== this._curElement) {
                                for (var t = [], r = 0; r < e.touches.length; r++) t[r] = function(e, t, r, o, n) {
                                    var n = 4 < arguments.length && void 0 !== n ? n : 0,
                                        s = e.getBoundingClientRect(),
                                        t = e.scrollWidth / t || 1,
                                        e = e.scrollHeight / r || 1,
                                        r = o.touches[n] || o.changedTouches[n];
                                    return {
                                        x: (r.clientX - s.left) / t,
                                        y: (r.clientY - s.top) / e,
                                        winX: r.clientX,
                                        winY: r.clientY,
                                        id: r.identifier
                                    }
                                }(this._curElement.elt, this.width, this.height, e, r);
                                this._setProperty("touches", t)
                            }
                        }, e.default.prototype._ontouchstart = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._setProperty("mouseIsPressed", !0), this._updateTouchCoords(e), this._updateNextMouseCoords(e), this._updateMouseCoords(), "function" == typeof t.touchStarted && (!1 === t.touchStarted(e) && e.preventDefault(), this.touchstart = !0)
                        }, e.default.prototype._ontouchmove = function(e) {
                            var t = this._isGlobal ? window : this;
                            this._updateTouchCoords(e), this._updateNextMouseCoords(e), "function" == typeof t.touchMoved ? !1 === t.touchMoved(e) && e.preventDefault() : "function" == typeof t.mouseDragged && !1 === t.mouseDragged(e) && e.preventDefault()
                        }, e.default.prototype._ontouchend = function(e) {
                            this._setProperty("mouseIsPressed", !1), this._updateTouchCoords(e), this._updateNextMouseCoords(e);
                            var t = this._isGlobal ? window : this;
                            "function" == typeof t.touchEnded && (!1 === t.touchEnded(e) && e.preventDefault(), this.touchend = !0)
                        }, r.default = e = e.default
                    }, {
                        "../core/main": 283
                    }],
                    304: [function(e, t, r) {
                        e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.int32-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.int32-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var N, U, B, G, V = {
                            _toPixels: function(e) {
                                var t, r;
                                return e instanceof ImageData ? e.data : e.getContext("2d") ? e.getContext("2d").getImageData(0, 0, e.width, e.height).data : e.getContext("webgl") ? (r = (t = e.getContext("webgl")).drawingBufferWidth * t.drawingBufferHeight * 4, r = new Uint8Array(r), t.readPixels(0, 0, e.width, e.height, t.RGBA, t.UNSIGNED_BYTE, r), r) : void 0
                            },
                            _getARGB: function(e, t) {
                                return e[3 + (t *= 4)] << 24 & 4278190080 | e[t] << 16 & 16711680 | e[1 + t] << 8 & 65280 | 255 & e[2 + t]
                            },
                            _setPixels: function(e, t) {
                                for (var r, o = 0, n = e.length; o < n; o++) e[0 + (r = 4 * o)] = (16711680 & t[o]) >>> 16, e[1 + r] = (65280 & t[o]) >>> 8, e[2 + r] = 255 & t[o], e[3 + r] = (4278190080 & t[o]) >>> 24
                            },
                            _toImageData: function(e) {
                                return e instanceof ImageData ? e : e.getContext("2d").getImageData(0, 0, e.width, e.height)
                            },
                            _createImageData: function(e, t) {
                                return V._tmpCanvas = document.createElement("canvas"), V._tmpCtx = V._tmpCanvas.getContext("2d"), this._tmpCtx.createImageData(e, t)
                            },
                            apply: function(e, t, r) {
                                var o = e.getContext("2d"),
                                    n = o.getImageData(0, 0, e.width, e.height);
                                (t = t(n, r)) instanceof ImageData ? o.putImageData(t, 0, 0, 0, 0, e.width, e.height) : o.putImageData(n, 0, 0, 0, 0, e.width, e.height)
                            },
                            threshold: function(e) {
                                for (var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : .5, r = V._toPixels(e), o = Math.floor(255 * t), n = 0; n < r.length; n += 4) {
                                    var s = o <= .2126 * r[n] + .7152 * r[n + 1] + .0722 * r[n + 2] ? 255 : 0;
                                    r[n] = r[n + 1] = r[n + 2] = s
                                }
                            },
                            gray: function(e) {
                                for (var t = V._toPixels(e), r = 0; r < t.length; r += 4) {
                                    var o = t[r],
                                        n = t[r + 1],
                                        s = t[r + 2];
                                    t[r] = t[r + 1] = t[r + 2] = .2126 * o + .7152 * n + .0722 * s
                                }
                            },
                            opaque: function(e) {
                                for (var t = V._toPixels(e), r = 0; r < t.length; r += 4) t[r + 3] = 255;
                                return t
                            },
                            invert: function(e) {
                                for (var t = V._toPixels(e), r = 0; r < t.length; r += 4) t[r] = 255 - t[r], t[r + 1] = 255 - t[r + 1], t[r + 2] = 255 - t[r + 2]
                            },
                            posterize: function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 4,
                                    r = V._toPixels(e);
                                if (t < 2 || 255 < t) throw new Error("Level must be greater than 2 and less than 255 for posterize");
                                for (var o = t - 1, n = 0; n < r.length; n += 4) {
                                    var s = r[n],
                                        i = r[n + 1],
                                        a = r[n + 2];
                                    r[n] = 255 * (s * t >> 8) / o, r[n + 1] = 255 * (i * t >> 8) / o, r[n + 2] = 255 * (a * t >> 8) / o
                                }
                            },
                            dilate: function(e) {
                                for (var t, r, o, n, s, i, a, l, c, u = V._toPixels(e), d = 0, h = u.length ? u.length / 4 : 0, f = new Int32Array(h); d < h;)
                                    for (r = (t = d) + e.width; d < r;) n = o = V._getARGB(u, d), (c = d - 1) < t && (c = d), r <= (l = d + 1) && (l = d), (s = d - e.width) < 0 && (s = 0), h <= (i = d + e.width) && (i = d), s = V._getARGB(u, s), c = V._getARGB(u, c), i = V._getARGB(u, i), (n = 77 * (n >> 16 & 255) + 151 * (n >> 8 & 255) + 28 * (255 & n)) < (a = 77 * (c >> 16 & 255) + 151 * (c >> 8 & 255) + 28 * (255 & c)) && (o = c, n = a), n < (a = 77 * ((c = V._getARGB(u, l)) >> 16 & 255) + 151 * (c >> 8 & 255) + 28 * (255 & c)) && (o = c, n = a), n < (l = 77 * (s >> 16 & 255) + 151 * (s >> 8 & 255) + 28 * (255 & s)) && (o = s, n = l), n < (c = 77 * (i >> 16 & 255) + 151 * (i >> 8 & 255) + 28 * (255 & i)) && (o = i, n = c), f[d++] = o;
                                V._setPixels(u, f)
                            },
                            erode: function(e) {
                                for (var t, r, o, n, s, i, a, l, c, u = V._toPixels(e), d = 0, h = u.length ? u.length / 4 : 0, f = new Int32Array(h); d < h;)
                                    for (r = (t = d) + e.width; d < r;) n = o = V._getARGB(u, d), (c = d - 1) < t && (c = d), r <= (l = d + 1) && (l = d), (s = d - e.width) < 0 && (s = 0), h <= (i = d + e.width) && (i = d), s = V._getARGB(u, s), c = V._getARGB(u, c), i = V._getARGB(u, i), (a = 77 * (c >> 16 & 255) + 151 * (c >> 8 & 255) + 28 * (255 & c)) < (n = 77 * (n >> 16 & 255) + 151 * (n >> 8 & 255) + 28 * (255 & n)) && (o = c, n = a), (a = 77 * ((c = V._getARGB(u, l)) >> 16 & 255) + 151 * (c >> 8 & 255) + 28 * (255 & c)) < n && (o = c, n = a), (l = 77 * (s >> 16 & 255) + 151 * (s >> 8 & 255) + 28 * (255 & s)) < n && (o = s, n = l), (c = 77 * (i >> 16 & 255) + 151 * (i >> 8 & 255) + 28 * (255 & i)) < n && (o = i, n = c), f[d++] = o;
                                V._setPixels(u, f)
                            },
                            blur: function(e, D) {
                                for (var t, r, o, n, s, i, a, l, c, u, d = V._toPixels(e), h = e.width, f = e.height, p = h * f, m = new Int32Array(p), y = 0; y < p; y++) m[y] = V._getARGB(d, y);
                                var g, v, b, _, x, w = new Int32Array(p),
                                    j = new Int32Array(p),
                                    S = new Int32Array(p),
                                    T = new Int32Array(p),
                                    E = 0,
                                    k = 3.5 * D | 0;
                                if (N !== (k = k < 1 ? 1 : k < 248 ? k : 248)) {
                                    U = 1 + (N = k) << 1, B = new Int32Array(U), G = new Array(U);
                                    for (var M = 0; M < U; M++) G[M] = new Int32Array(256);
                                    for (var O = 1, C = k - 1; O < k; O++) {
                                        B[k + O] = B[C] = x = C * C;
                                        for (var A = G[k + O], F = G[C--], L = 0; L < 256; L++) A[L] = F[L] = x * L
                                    }
                                    _ = B[k] = k * k, A = G[k];
                                    for (var P = 0; P < 256; P++) A[P] = _ * P
                                }
                                for (v = 0; v < f; v++) {
                                    for (g = 0; g < h; g++) {
                                        if (n = o = r = s = t = 0, (i = g - N) < 0) u = -i, i = 0;
                                        else {
                                            if (h <= i) break;
                                            u = 0
                                        }
                                        for (b = u; b < U && !(h <= i); b++) {
                                            var I, R = m[i + E];
                                            s += (I = G[b])[(-16777216 & R) >>> 24], r += I[(16711680 & R) >> 16], o += I[(65280 & R) >> 8], n += I[255 & R], t += B[b], i++
                                        }
                                        w[a = E + g] = s / t, j[a] = r / t, S[a] = o / t, T[a] = n / t
                                    }
                                    E += h
                                }
                                for (c = (l = -N) * h, v = E = 0; v < f; v++) {
                                    for (g = 0; g < h; g++) {
                                        if (l < (n = o = r = s = t = 0)) u = a = -l, i = g;
                                        else {
                                            if (f <= l) break;
                                            u = 0, a = l, i = g + c
                                        }
                                        for (b = u; b < U && !(f <= a); b++) s += (I = G[b])[w[i]], r += I[j[i]], o += I[S[i]], n += I[T[i]], t += B[b], a++, i += h;
                                        m[g + E] = s / t << 24 | r / t << 16 | o / t << 8 | n / t
                                    }
                                    E += h, c += h, l++
                                }
                                V._setPixels(d, m)
                            }
                        };
                        r.default = V
                    }, {
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.int32-array": 225,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242
                    }],
                    305: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var O = o(e("../core/main")),
                            C = o(e("omggif"));

                        function o(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function A(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }
                        O.default.prototype.createImage = function(e, t) {
                            return O.default._validateParameters("createImage", arguments), new O.default.Image(e, t)
                        }, O.default.prototype.saveCanvas = function() {
                            for (var e, t, r, o, n, s, i = arguments.length, a = new Array(i), l = 0; l < i; l++) a[l] = arguments[l];
                            switch (O.default._validateParameters("saveCanvas", a), a[0] instanceof HTMLCanvasElement ? (e = a[0], a.shift()) : a[0] instanceof O.default.Element ? (e = a[0].elt, a.shift()) : a[0] instanceof O.default.Framebuffer ? (o = a[0], (n = this.createGraphics(o.width, o.height)).pixelDensity(pixelDensity()), o.loadPixels(), n.loadPixels(), n.pixels.set(o.pixels), n.updatePixels(), e = n.elt, a.shift()) : e = this._curElement && this._curElement.elt, 1 <= a.length && (t = a[0]), r = (r = 2 <= a.length ? a[1] : r) || O.default.prototype._checkFileExtension(t, r)[1] || "png") {
                                default:
                                    s = "image/png";
                                    break;
                                case "webp":
                                    s = "image/webp";
                                    break;
                                case "jpeg":
                                case "jpg":
                                    s = "image/jpeg"
                            }
                            e.toBlob(function(e) {
                                O.default.prototype.downloadFile(e, t, r), n && n.remove()
                            }, s)
                        }, O.default.prototype.encodeAndDownloadGif = function(d, e) {
                            for (var h = d.gifProperties, t = (1 === (T = h.loopLimit) ? T = null : null === T && (T = 0), new Uint8Array(d.width * d.height * h.numFrames)), f = [], r = {}, o = 0; o < h.numFrames; o++) {
                                for (var n = new Set, s = h.frames[o].image.data, i = s.length, a = new Uint32Array(d.width * d.height), l = 0, c = 0; l < i; l += 4, c++) {
                                    var u = s[l + 0] << 16 | s[l + 1] << 8 | s[l + 2] << 0;
                                    n.add(u), a[c] = u
                                }
                                var p = A(n).sort().toString();
                                void 0 === r[p] ? r[p] = {
                                    freq: 1,
                                    frames: [o]
                                } : (r[p].freq += 1, r[p].frames.push(o)), f.push(a)
                            }
                            for (var m = [], y = Object.keys(r).sort(function(e, t) {
                                    return r[t].freq - r[e].freq
                                }), g = y[0].split(",").map(function(e) {
                                    return parseInt(e)
                                }), m = m.concat(r[g].frames), v = new Set(g), b = 1; b < y.length; b++) {
                                var _ = y[b].split(",").map(function(e) {
                                    return parseInt(e)
                                }).filter(function(e) {
                                    return !v.has(e)
                                });
                                if (g.length + _.length <= 256) {
                                    for (var x = 0; x < _.length; x++) g.push(_[x]), v.add(_[x]);
                                    m = m.concat(r[y[b]].frames)
                                }
                            }
                            m = new Set(m);
                            for (var w = {}, j = 0; j < g.length; j++) w[g[j]] || (w[g[j]] = j);
                            for (var S = 1; S < g.length;) S <<= 1;
                            g.length = S;
                            for (var T = {
                                    loop: T,
                                    palette: new Uint32Array(g)
                                }, E = new C.default.GifWriter(t, d.width, d.height, T), k = {}, M = 0; M < h.numFrames; M++)(r => {
                                var o = !m.has(r),
                                    n = o ? [] : g,
                                    s = new Uint8Array(d.width * d.height),
                                    i = {},
                                    a = new Set,
                                    e = (f[r].forEach(function(e, t) {
                                        o ? (void 0 === i[e] && (i[e] = n.length, n.push(e)), s[t] = i[e]) : s[t] = w[e], 0 < r && f[r - 1][t] !== e && a.add(e)
                                    }), {});
                                if (0 < (t = n.filter(function(e) {
                                        return !a.has(e)
                                    })).length) {
                                    var t = t[0],
                                        l = (o ? i : w)[t];
                                    if (0 < r) {
                                        for (var c = 0; c < f[r].length; c++) f[r - 1][c] === f[r][c] && (s[c] = l);
                                        e.transparent = l, k.frameOpts.disposal = 1
                                    }
                                }
                                if (e.delay = h.frames[r].delay / 10, o) {
                                    for (var u = 1; u < n.length;) u <<= 1;
                                    n.length = u, e.palette = new Uint32Array(n)
                                }
                                0 < r && E.addFrame(0, 0, d.width, d.height, k.pixelPaletteIndex, k.frameOpts), k = {
                                    pixelPaletteIndex: s,
                                    frameOpts: e
                                }
                            })(M);
                            k.frameOpts.disposal = 1, E.addFrame(0, 0, d.width, d.height, k.pixelPaletteIndex, k.frameOpts), T = new Blob([t.slice(0, E.end())], {
                                type: "image/gif"
                            }), O.default.prototype.downloadFile(T, e, "gif")
                        }, O.default.prototype.saveFrames = function(e, t, r, o, n) {
                            O.default._validateParameters("saveFrames", arguments), r = O.default.prototype.constrain(r = r || 3, 0, 15), r *= 1e3;
                            var o = O.default.prototype.constrain(o || 15, 0, 22),
                                s = 0,
                                i = O.default.prototype._makeFrame,
                                a = this._curElement.elt,
                                l = [],
                                c = setInterval(function() {
                                    l.push(i(e + s, t, a)), s++
                                }, 1e3 / o);
                            setTimeout(function() {
                                if (clearInterval(c), n) n(l);
                                else
                                    for (var e = 0, t = l; e < t.length; e++) {
                                        var r = t[e];
                                        O.default.prototype.downloadFile(r.imageData, r.filename, r.ext)
                                    }
                                l = []
                            }, .01 + r)
                        }, O.default.prototype._makeFrame = function(e, t, r) {
                            var o, r = this ? this._curElement.elt : r;
                            if (t) switch (t.toLowerCase()) {
                                case "png":
                                    o = "image/png";
                                    break;
                                case "jpeg":
                                case "jpg":
                                    o = "image/jpeg";
                                    break;
                                default:
                                    o = "image/png"
                            } else t = "png", o = "image/png";
                            var r = (r = r.toDataURL(o)).replace(o, "image/octet-stream"),
                                n = {};
                            return n.imageData = r, n.filename = e, n.ext = t, n
                        }, e = O.default, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.set": 197,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint32-array": 241,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        omggif: 256
                    }],
                    306: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.copy-within"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint8-clamped-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.copy-within"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint8-clamped-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, e("regenerator-runtime/runtime");
                        var a, C = n(e("../core/main")),
                            S = n(e("../core/helpers")),
                            T = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")),
                            g = n(e("omggif")),
                            A = e("gifenc");

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }

                        function n(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function c(e, t, r, o, n, s, i) {
                            try {
                                var a = e[s](i),
                                    l = a.value
                            } catch (e) {
                                return r(e)
                            }
                            a.done ? t(l) : Promise.resolve(l).then(o, n)
                        }

                        function E(e, t) {
                            return 0 < e && e < t ? e : t
                        }
                        e("../core/friendly_errors/validate_params"), e("../core/friendly_errors/file_errors"), e("../core/friendly_errors/fes_core"), C.default.prototype.loadImage = function(o, f, p) {
                            C.default._validateParameters("loadImage", arguments);
                            var m = new C.default.Image(1, 1, this),
                                y = this,
                                e = new Request(o, {
                                    method: "GET",
                                    mode: "cors"
                                });
                            return fetch(o, e).then(function(e) {
                                var t, r = e.headers.get("content-type");
                                null === r && console.warn("The image you loaded does not have a Content-Type header. If you are using the online editor consider reuploading the asset."), r && r.includes("image/gif") ? e.arrayBuffer().then(function(e) {
                                    if (e) {
                                        for (var r, e = new Uint8Array(e), o = m, t = f, n = p, s = function(e) {
                                                y._decrementPreload()
                                            }.bind(y), i = new g.default.GifReader(e), a = (o.width = o.canvas.width = i.width, o.height = o.canvas.height = i.height, []), l = i.numFrames(), c = (new Uint8ClampedArray(o.width * o.height * 4), 0); c < l; c++) {
                                            var u = i.frameInfo(c),
                                                d = o.drawingContext.getImageData(0, 0, o.width, o.height),
                                                h = (r = d.data.slice(), ((e, t) => {
                                                    try {
                                                        t.decodeAndBlitFrameRGBA(e, r)
                                                    } catch (e) {
                                                        C.default._friendlyFileLoadError(8, o.src), "function" == typeof n ? n(e) : console.error(e)
                                                    }
                                                })(c, i), new ImageData(r, o.width, o.height));
                                            o.drawingContext.putImageData(h, 0, 0), 0 === (h = u.delay) && (h = 10), a.push({
                                                image: o.drawingContext.getImageData(0, 0, o.width, o.height),
                                                delay: 10 * h
                                            }), 2 === u.disposal ? o.drawingContext.clearRect(u.x, u.y, u.width, u.height) : 3 === u.disposal && o.drawingContext.putImageData(d, 0, 0, u.x, u.y, u.width, u.height)
                                        }
                                        null === (e = i.loopCount()) ? e = 1 : 0 === e && (e = null), o.drawingContext.putImageData(a[0].image, 0, 0), 1 < a.length && (o.gifProperties = {
                                            displayIndex: 0,
                                            loopLimit: e,
                                            loopCount: 0,
                                            frames: a,
                                            numFrames: l,
                                            playing: !0,
                                            timeDisplayed: 0,
                                            lastChangeTime: 0
                                        }), "function" == typeof t && t(o), s()
                                    }
                                }, function(e) {
                                    "function" == typeof p ? (p(e), y._decrementPreload()) : console.error(e)
                                }) : ((t = new Image).onload = function() {
                                    m.width = m.canvas.width = t.width, m.height = m.canvas.height = t.height, m.drawingContext.drawImage(t, 0, 0), m.modified = !0, "function" == typeof f && f(m), y._decrementPreload()
                                }, t.onerror = function(e) {
                                    C.default._friendlyFileLoadError(0, t.src), "function" == typeof p ? (p(e), y._decrementPreload()) : console.error(e)
                                }, 0 !== o.indexOf("data:image/") && (t.crossOrigin = "Anonymous"), t.src = o), m.modified = !0
                            }).catch(function(e) {
                                C.default._friendlyFileLoadError(0, o), "function" == typeof p ? (p(e), y._decrementPreload()) : console.error(e)
                            }), m
                        }, C.default.prototype.saveGif = (a = regeneratorRuntime.mark(function e(t, r) {
                            var o, n, s, i, a, l, c, u, d, h, f, p, m, y, g, v, b, _, x, w, j, S, T, E, k, M, O = arguments;
                            return regeneratorRuntime.wrap(function(e) {
                                for (;;) switch (e.prev = e.next) {
                                    case 0:
                                        if (o = 2 < O.length && void 0 !== O[2] ? O[2] : {
                                                delay: 0,
                                                units: "seconds",
                                                silent: !1,
                                                notificationDuration: 0,
                                                notificationID: "progressBar"
                                            }, "string" != typeof t) throw TypeError("fileName parameter must be a string");
                                        e.next = 3;
                                        break;
                                    case 3:
                                        if ("number" != typeof r) throw TypeError("Duration parameter must be a number");
                                        e.next = 5;
                                        break;
                                    case 5:
                                        if (n = o && o.delay || 0, s = o && o.units || "seconds", i = o && o.silent || !1, a = o && o.notificationDuration || 0, l = o && o.notificationID || "progressBar", "number" != typeof n) throw TypeError("Delay parameter must be a number");
                                        e.next = 12;
                                        break;
                                    case 12:
                                        if ("seconds" !== s && "frames" !== s) throw TypeError('Units parameter must be either "frames" or "seconds"');
                                        e.next = 14;
                                        break;
                                    case 14:
                                        if ("boolean" != typeof i) throw TypeError("Silent parameter must be a boolean");
                                        e.next = 16;
                                        break;
                                    case 16:
                                        if ("number" != typeof a) throw TypeError("Notification duration parameter must be a number");
                                        e.next = 18;
                                        break;
                                    case 18:
                                        if ("string" != typeof l) throw TypeError("Notification ID parameter must be a string");
                                        e.next = 20;
                                        break;
                                    case 20:
                                        return this._recording = !0, h = this._targetFrameRate, c = (c = 1 / (h = h !== 1 / 0 && void 0 !== h && 0 !== h ? h : 60) * 1e3) < 20 ? 20 : c, d = (u = "seconds" === s ? r * h : r) + (h = "seconds" === s ? n * h : n), this.frameCount = h, f = this._pixelDensity, this.pixelDensity(1), p = [], null !== document.getElementById(l) && document.getElementById(l).remove(), i || ((m = this.createP("")).id(l), m.style("font-size", "16px"), m.style("font-family", "Montserrat"), m.style("background-color", "#ffffffa0"), m.style("padding", "8px"), m.style("border-radius", "10px"), m.position(0, 0)), this._renderer instanceof C.default.RendererGL && (g = this.drawingContext, y = new Uint8Array(g.drawingBufferWidth * g.drawingBufferHeight * 4)), this.noLoop(), e.next = 39, Promise.resolve();
                                    case 39:
                                        if (h < d) return this.redraw(), E = void 0, E = this._renderer instanceof C.default.RendererGL ? (y = new Uint8Array(g.drawingBufferWidth * g.drawingBufferHeight * 4), g.readPixels(0, 0, g.drawingBufferWidth, g.drawingBufferHeight, g.RGBA, g.UNSIGNED_BYTE, y), ((e, t, r) => {
                                            for (var o = parseInt(r / 2), n = 4 * t, s = new Uint8Array(4 * t), i = 0; i < o; ++i) {
                                                var a = i * n,
                                                    l = (r - i - 1) * n;
                                                s.set(e.subarray(a, a + n)), e.copyWithin(a, l, l + n), e.set(s, l)
                                            }
                                            return e
                                        })(y, this.width, this.height)) : this.drawingContext.getImageData(0, 0, this.width, this.height).data, p.push(E), h++, i || m.html("Saved frame <b>" + p.length.toString() + "</b> out of " + u.toString()), e.next = 48, new Promise(function(e) {
                                            return setTimeout(e, 0)
                                        });
                                        e.next = 50;
                                        break;
                                    case 48:
                                        e.next = 39;
                                        break;
                                    case 50:
                                        i || m.html("Frames processed, generating color palette..."), this.loop(), this.pixelDensity(f), v = (0, A.GIFEncoder)(), b = (e => {
                                            for (var t = new Uint8Array(e.length * e[0].length), r = 0; r < e.length; r++) t.set(e[r], r * e[0].length);
                                            var o = (0, A.quantize)(t, 256, {
                                                format: "rgba4444",
                                                oneBitAlpha: !0
                                            });
                                            return 256 === o.length ? o[o.length - 1] = [255 * Math.random(), 255 * Math.random(), 255 * Math.random(), 0] : o.push([255 * Math.random(), 255 * Math.random(), 255 * Math.random(), 0]), o
                                        })(p), _ = {}, x = function(e) {
                                            for (var t = e.length / 4, r = new Uint8Array(t), o = 0; o < t; o++) {
                                                var n = e[4 * o] << 24 | e[4 * o + 1] << 16 | e[4 * o + 2] << 8 | e[4 * o + 3];
                                                void 0 === _[n] && (_[n] = (0, A.nearestColorIndex)(b, e.slice(4 * o, 4 * (o + 1)))), r[o] = _[n]
                                            }
                                            return r
                                        }, w = b.length - 1, j = [], S = 0;
                                    case 60:
                                        if (!(S < p.length)) {
                                            e.next = 71;
                                            break
                                        }
                                        if (T = x(p[S]), E = T.slice(), 0 === S) v.writeFrame(T, this.width, this.height, {
                                            palette: b,
                                            delay: c,
                                            dispose: 1
                                        });
                                        else {
                                            for (k = 0; k < T.length; k++) T[k] === j[k] && (T[k] = w);
                                            v.writeFrame(T, this.width, this.height, {
                                                delay: c,
                                                transparent: !0,
                                                transparentIndex: w,
                                                dispose: 1
                                            })
                                        }
                                        return j = E, i || m.html("Rendered frame <b>" + S.toString() + "</b> out of " + u.toString()), e.next = 68, new Promise(function(e) {
                                            return setTimeout(e, 0)
                                        });
                                    case 68:
                                        S++, e.next = 60;
                                        break;
                                    case 71:
                                        v.finish(), M = v.bytesView(), M = new Blob([M], {
                                            type: "image/gif"
                                        }), p = [], this._recording = !1, this.loop(), i || (m.html("Done. Downloading your gif!🌸"), 0 < a && setTimeout(function() {
                                            return m.remove()
                                        }, 1e3 * a)), C.default.prototype.downloadFile(M, t, "gif");
                                    case 80:
                                    case "end":
                                        return e.stop()
                                }
                            }, e, this)
                        }), function(e, t) {
                            return function() {
                                var e = this,
                                    i = arguments;
                                return new Promise(function(t, r) {
                                    var o = a.apply(e, i);

                                    function n(e) {
                                        c(o, t, r, n, s, "next", e)
                                    }

                                    function s(e) {
                                        c(o, t, r, n, s, "throw", e)
                                    }
                                    n(void 0)
                                })
                            }.apply(this, arguments)
                        }), C.default.prototype.image = function(e, t, r, o, n, s, i, a, l, c, u, d) {
                            C.default._validateParameters("image", arguments);
                            var h, f, p, m, y, g, v, b, _, x = e.width,
                                w = e.height,
                                j = (d = d || T.CENTER, u = u || T.CENTER, e.elt && (x = void 0 !== x ? x : e.elt.width, w = void 0 !== w ? w : e.elt.height), e.elt && e.elt.videoWidth && !e.canvas && (x = void 0 !== x ? x : e.elt.videoWidth, w = void 0 !== w ? w : e.elt.videoHeight), o || x),
                                n = n || w,
                                s = s || 0,
                                i = i || 0,
                                a = E(void 0 !== a ? a : x, x),
                                x = E(void 0 !== l ? l : w, w),
                                l = 1;
                            e.elt && !e.canvas && e.elt.style.width && (l = e.elt.videoWidth && !o ? e.elt.videoWidth : e.elt.width, l /= parseInt(e.elt.style.width, 10)), s *= l, i *= l, x *= l, a *= l, o = c, l = u, c = d, u = (w = S.default.modeAdjust(t, r, j, n, this._renderer._imageMode)).x, d = w.y, t = w.w, r = w.h, j = s, n = i, s = a, i = x, o === T.COVER && (h = l, p = c, v = t, b = r, g = j, _ = n, f = s, m = i, v /= y = Math.max(v / f, b / m), b /= y, y = g, g = _, h === T.CENTER ? y += (f - v) / 2 : h === T.RIGHT && (y += f - v), p === T.CENTER ? g += (m - b) / 2 : p === T.BOTTOM && (g += m - b), j = (_ = {
                                x: y,
                                y: g,
                                w: v,
                                h: b
                            }).x, n = _.y, s = _.w, i = _.h), o === T.CONTAIN && (h = l, f = c, p = u, m = d, y = t, g = r, v = s, b = i, v /= _ = Math.max(v / y, b / g), b /= _, _ = p, p = m, h === T.CENTER ? _ += (y - v) / 2 : h === T.RIGHT && (_ += y - v), f === T.CENTER ? p += (g - b) / 2 : f === T.BOTTOM && (p += g - b), u = (o = {
                                x: _,
                                y: p,
                                w: v,
                                h: b
                            }).x, d = o.y, t = o.w, r = o.h), this._renderer.image(e, (w = {
                                sx: j,
                                sy: n,
                                sw: s,
                                sh: i,
                                dx: u,
                                dy: d,
                                dw: t,
                                dh: r
                            }).sx, w.sy, w.sw, w.sh, w.dx, w.dy, w.dw, w.dh)
                        }, C.default.prototype.tint = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            C.default._validateParameters("tint", t);
                            var o = this.color.apply(this, t);
                            this._renderer._tint = o.levels
                        }, C.default.prototype.noTint = function() {
                            this._renderer._tint = null
                        }, C.default.prototype._getTintedImageCanvas = C.default.Renderer2D.prototype._getTintedImageCanvas, C.default.prototype.imageMode = function(e) {
                            C.default._validateParameters("imageMode", arguments), e !== T.CORNER && e !== T.CORNERS && e !== T.CENTER || (this._renderer._imageMode = e)
                        }, e = C.default, r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/friendly_errors/fes_core": 274,
                        "../core/friendly_errors/file_errors": 275,
                        "../core/friendly_errors/validate_params": 278,
                        "../core/helpers": 279,
                        "../core/main": 283,
                        "core-js/modules/es.array.copy-within": 154,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/es.typed-array.uint8-clamped-array": 243,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        gifenc: 253,
                        omggif: 256,
                        "regenerator-runtime/runtime": 260
                    }],
                    307: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var i = n(e("../core/main")),
                            o = n(e("./filters"));

                        function n(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function a(e, t) {
                            if (!(this instanceof a)) throw new TypeError("Cannot call a class as a function");
                            this.width = e, this.height = t, this.canvas = document.createElement("canvas"), this.canvas.width = this.width, this.canvas.height = this.height, this.drawingContext = this.canvas.getContext("2d"), (this._pixelsState = this)._pixelDensity = 1, this.gifProperties = null, this._modified = !1, this.pixels = []
                        }
                        i.default.Image = (s(a.prototype, [{
                            key: "pixelDensity",
                            value: function(e) {
                                return void 0 !== e ? (e <= 0 && (i.default._friendlyParamError({
                                    type: "INVALID_VALUE",
                                    format: {
                                        types: ["Number"]
                                    },
                                    position: 1
                                }, "pixelDensity"), e = 1), this._pixelDensity = e, this.width /= e, this.height /= e, this) : this._pixelDensity
                            }
                        }, {
                            key: "_animateGif",
                            value: function(e) {
                                var t, r = this.gifProperties,
                                    e = e._lastRealFrameTime || window.performance.now();
                                0 === r.lastChangeTime && (r.lastChangeTime = e), r.playing && (r.timeDisplayed = e - r.lastChangeTime, t = r.frames[r.displayIndex].delay, r.timeDisplayed >= t) && (t = Math.floor(r.timeDisplayed / t), r.timeDisplayed = 0, r.lastChangeTime = e, r.displayIndex += t, r.loopCount = Math.floor(r.displayIndex / r.numFrames), null !== r.loopLimit && r.loopCount >= r.loopLimit ? r.playing = !1 : (e = r.displayIndex % r.numFrames, this.drawingContext.putImageData(r.frames[e].image, 0, 0), r.displayIndex = e, this.setModified(!0)))
                            }
                        }, {
                            key: "_setProperty",
                            value: function(e, t) {
                                this[e] = t, this.setModified(!0)
                            }
                        }, {
                            key: "loadPixels",
                            value: function() {
                                i.default.Renderer2D.prototype.loadPixels.call(this), this.setModified(!0)
                            }
                        }, {
                            key: "updatePixels",
                            value: function(e, t, r, o) {
                                i.default.Renderer2D.prototype.updatePixels.call(this, e, t, r, o), this.setModified(!0)
                            }
                        }, {
                            key: "get",
                            value: function(e, t, r, o) {
                                return i.default._validateParameters("p5.Image.get", arguments), i.default.Renderer2D.prototype.get.apply(this, arguments)
                            }
                        }, {
                            key: "_getPixel",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                return i.default.Renderer2D.prototype._getPixel.apply(this, t)
                            }
                        }, {
                            key: "set",
                            value: function(e, t, r) {
                                i.default.Renderer2D.prototype.set.call(this, e, t, r), this.setModified(!0)
                            }
                        }, {
                            key: "resize",
                            value: function(e, t) {
                                0 === e && 0 === t ? (e = this.canvas.width, t = this.canvas.height) : 0 === e ? e = this.canvas.width * t / this.canvas.height : 0 === t && (t = this.canvas.height * e / this.canvas.width), e = Math.floor(e), t = Math.floor(t);
                                var r = document.createElement("canvas");
                                if (r.width = e, r.height = t, this.gifProperties)
                                    for (var o = this.gifProperties, n = 0; n < o.numFrames; n++) {
                                        for (var s = this.drawingContext.createImageData(e, t), i = (d = u = c = l = void 0, o.frames[n].image), a = s, l = 0, c = 0; c < a.height; c++)
                                            for (var u = 0; u < a.width; u++) {
                                                var d = Math.floor(u * i.width / a.width),
                                                    d = 4 * (Math.floor(c * i.height / a.height) * i.width + d);
                                                a.data[l++] = i.data[d++], a.data[l++] = i.data[d++], a.data[l++] = i.data[d++], a.data[l++] = i.data[+d]
                                            }
                                        o.frames[n].image = s
                                    }
                                r.getContext("2d").drawImage(this.canvas, 0, 0, this.canvas.width, this.canvas.height, 0, 0, r.width, r.height), this.canvas.width = this.width = e, this.canvas.height = this.height = t, this.drawingContext.drawImage(r, 0, 0, e, t, 0, 0, e, t), 0 < this.pixels.length && this.loadPixels(), this.setModified(!0)
                            }
                        }, {
                            key: "copy",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                i.default.prototype.copy.apply(this, t)
                            }
                        }, {
                            key: "mask",
                            value: function(e) {
                                var t, r = this.drawingContext.globalCompositeOperation,
                                    o = this._pixelDensity,
                                    n = [e = void 0 === e ? this : e, 0, 0, (t = e instanceof i.default.Renderer ? e._pInst._pixelDensity : 1) * e.width, t * e.height, 0, 0, o * this.width, o * this.height];
                                if (this.drawingContext.globalCompositeOperation = "destination-in", this.gifProperties) {
                                    for (var s = 0; s < this.gifProperties.frames.length; s++) this.drawingContext.putImageData(this.gifProperties.frames[s].image, 0, 0), this.copy.apply(this, n), this.gifProperties.frames[s].image = this.drawingContext.getImageData(0, 0, o * this.width, o * this.height);
                                    this.drawingContext.putImageData(this.gifProperties.frames[this.gifProperties.displayIndex].image, 0, 0)
                                } else this.copy.apply(this, n);
                                this.drawingContext.globalCompositeOperation = r, this.setModified(!0)
                            }
                        }, {
                            key: "filter",
                            value: function(e, t) {
                                o.default.apply(this.canvas, o.default[e], t), this.setModified(!0)
                            }
                        }, {
                            key: "blend",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                i.default._validateParameters("p5.Image.blend", arguments), i.default.prototype.blend.apply(this, t), this.setModified(!0)
                            }
                        }, {
                            key: "setModified",
                            value: function(e) {
                                this._modified = e
                            }
                        }, {
                            key: "isModified",
                            value: function() {
                                return this._modified
                            }
                        }, {
                            key: "save",
                            value: function(e, t) {
                                this.gifProperties ? i.default.prototype.encodeAndDownloadGif(this, e) : i.default.prototype.saveCanvas(this.canvas, e, t)
                            }
                        }, {
                            key: "reset",
                            value: function() {
                                var e;
                                this.gifProperties && ((e = this.gifProperties).playing = !0, e.timeSinceStart = 0, e.timeDisplayed = 0, e.lastChangeTime = 0, e.loopCount = 0, e.displayIndex = 0, this.drawingContext.putImageData(e.frames[0].image, 0, 0))
                            }
                        }, {
                            key: "getCurrentFrame",
                            value: function() {
                                var e;
                                if (this.gifProperties) return (e = this.gifProperties).displayIndex % e.numFrames
                            }
                        }, {
                            key: "setFrame",
                            value: function(e) {
                                var t;
                                this.gifProperties && (e < (t = this.gifProperties).numFrames && 0 <= e ? (t.timeDisplayed = 0, t.lastChangeTime = 0, t.displayIndex = e, this.drawingContext.putImageData(t.frames[e].image, 0, 0)) : console.log("Cannot set GIF to a frame number that is higher than total number of frames or below zero."))
                            }
                        }, {
                            key: "numFrames",
                            value: function() {
                                if (this.gifProperties) return this.gifProperties.numFrames
                            }
                        }, {
                            key: "play",
                            value: function() {
                                this.gifProperties && (this.gifProperties.playing = !0)
                            }
                        }, {
                            key: "pause",
                            value: function() {
                                this.gifProperties && (this.gifProperties.playing = !1)
                            }
                        }, {
                            key: "delay",
                            value: function(e, t) {
                                if (this.gifProperties) {
                                    var r = this.gifProperties;
                                    if (t < r.numFrames && 0 <= t) r.frames[t].delay = e;
                                    else {
                                        var o = !0,
                                            t = !1,
                                            n = void 0;
                                        try {
                                            for (var s, i = r.frames[Symbol.iterator](); !(o = (s = i.next()).done); o = !0) s.value.delay = e
                                        } catch (e) {
                                            t = !0, n = e
                                        } finally {
                                            try {
                                                o || null == i.return || i.return()
                                            } finally {
                                                if (t) throw n
                                            }
                                        }
                                    }
                                }
                            }
                        }]), a), e = i.default.Image, r.default = e
                    }, {
                        "../core/main": 283,
                        "./filters": 304,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    308: [function(e, t, r) {
                        e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.filter"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var f = o(e("../core/main")),
                            a = o(e("./filters"));

                        function o(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }
                        e("../color/p5.Color"), f.default.prototype.pixels = [], f.default.prototype.blend = function() {
                            for (var e, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            f.default._validateParameters("blend", r), this._renderer ? (e = this._renderer).blend.apply(e, r) : f.default.Renderer2D.prototype.blend.apply(this, r)
                        }, f.default.prototype.copy = function() {
                            for (var e, t, r, o, n, s, i, a, l, c = arguments.length, u = new Array(c), d = 0; d < c; d++) u[d] = arguments[d];
                            if (f.default._validateParameters("copy", u), 9 === u.length) e = u[0], t = u[1], r = u[2], o = u[3], n = u[4], s = u[5], i = u[6], a = u[7], l = u[8];
                            else {
                                if (8 !== u.length) throw new Error("Signature not supported");
                                e = this, t = u[0], r = u[1], o = u[2], n = u[3], s = u[4], i = u[5], a = u[6], l = u[7]
                            }
                            f.default.prototype._copyHelper(this, e, t, r, o, n, s, i, a, l)
                        }, f.default.prototype._copyHelper = function(e, t, r, o, n, s, i, a, l, c) {
                            var u = t.canvas.width / t.width,
                                d = 0,
                                h = 0;
                            t._renderer && t._renderer.isP3D && (d = t.width / 2, h = t.height / 2), e._renderer && e._renderer.isP3D ? (e.push(), e.resetMatrix(), e.noLights(), e.blendMode(e.BLEND), e.imageMode(e.CORNER), f.default.RendererGL.prototype.image.call(e._renderer, t, r + d, o + h, n, s, i, a, l, c), e.pop()) : e.drawingContext.drawImage(t.canvas, u * (r + d), u * (o + h), u * n, u * s, i, a, l, c)
                        }, f.default.prototype.getFilterGraphicsLayer = function() {
                            return this._renderer.getFilterGraphicsLayer()
                        }, f.default.prototype.filter = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            f.default._validateParameters("filter", t);
                            var o = (i = function() {
                                    var e, t = {
                                        shader: void 0,
                                        operation: void 0,
                                        value: void 0,
                                        useWebGL: !0
                                    };
                                    return (arguments.length <= 0 ? void 0 : arguments[0]) instanceof f.default.Shader ? t.shader = arguments.length <= 0 ? void 0 : arguments[0] : (t.operation = arguments.length <= 0 ? void 0 : arguments[0], 1 < arguments.length && "number" == typeof(arguments.length <= 1 ? void 0 : arguments[1]) && (t.value = arguments.length <= 1 ? void 0 : arguments[1]), !1 === ((e = arguments.length - 1) < 0 || arguments.length <= e ? void 0 : arguments[e]) && (t.useWebGL = !1)), t
                                }.apply(void 0, t)).shader,
                                n = i.operation,
                                s = i.value,
                                i = i.useWebGL;
                            this._renderer.isP3D && o ? f.default.RendererGL.prototype.filter.call(this._renderer, o) : i || this._renderer.isP3D ? (!i && this._renderer.isP3D && console.warn("filter() with useWebGL=false is not supported in WEBGL"), this._renderer.isP3D ? f.default.RendererGL.prototype.filter.call(this._renderer, n, s) : ((o = this.getFilterGraphicsLayer()).copy(this._renderer, 0, 0, this.width, this.height, -this.width / 2, -this.height / 2, this.width, this.height), this._renderer.clear(), this._renderer.resetMatrix(), o.filter.apply(o, t), this.copy(o._renderer, 0, 0, this.width, this.height, 0, 0, this.width, this.height), o.clear())) : void 0 !== this.canvas ? a.default.apply(this.canvas, a.default[n], s) : a.default.apply(this.elt, a.default[n], s)
                        }, f.default.prototype.get = function(e, t, r, o) {
                            var n;
                            return f.default._validateParameters("get", arguments), (n = this._renderer).get.apply(n, arguments)
                        }, f.default.prototype.loadPixels = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            f.default._validateParameters("loadPixels", t), this._renderer.loadPixels()
                        }, f.default.prototype.set = function(e, t, r) {
                            this._renderer.set(e, t, r)
                        }, f.default.prototype.updatePixels = function(e, t, r, o) {
                            f.default._validateParameters("updatePixels", arguments), 0 !== this.pixels.length && this._renderer.updatePixels(e, t, r, o)
                        }, e = f.default, r.default = e
                    }, {
                        "../color/p5.Color": 270,
                        "../core/main": 283,
                        "./filters": 304,
                        "core-js/modules/es.array.filter": 157
                    }],
                    309: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.from-entries"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/web.url"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.from-entries"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/web.url"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var v = s(e("../core/main")),
                            m = (e("whatwg-fetch"), e("es6-promise/auto"), s(e("fetch-jsonp"))),
                            n = s(e("file-saver"));

                        function s(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function y(e) {
                            return (y = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }

                        function g(e) {
                            return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;")
                        }

                        function i(e, t) {
                            t && !0 !== t && "true" !== t || (t = "");
                            var r = "";
                            return (e = e || "untitled") && e.includes(".") && (r = e.split(".").pop()), t && r !== t && (r = t, e = "".concat(e, ".").concat(r)), [e, r]
                        }
                        e("../core/friendly_errors/validate_params"), e("../core/friendly_errors/file_errors"), e("../core/friendly_errors/fes_core"), v.default.prototype.loadJSON = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            v.default._validateParameters("loadJSON", t);
                            for (var o, n, s, i = t[0], a = {}, l = "json", c = 1; c < t.length; c++) {
                                var u = t[c];
                                "string" == typeof u ? "jsonp" !== u && "json" !== u || (l = u) : "function" == typeof u ? o ? n = u : o = u : "object" === y(u) && (u.hasOwnProperty("jsonpCallback") || u.hasOwnProperty("jsonpCallbackFunction")) && (l = "jsonp", s = u)
                            }
                            var d = this;
                            return this.httpDo(i, "GET", s, l, function(e) {
                                for (var t in e) a[t] = e[t];
                                void 0 !== o && o(e), d._decrementPreload()
                            }, function(e) {
                                if (v.default._friendlyFileLoadError(5, i), !n) throw e;
                                n(e)
                            }), a
                        }, v.default.prototype.loadStrings = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            v.default._validateParameters("loadStrings", t);
                            for (var n, o, s = [], i = 1; i < t.length; i++) {
                                var a = t[i];
                                "function" == typeof a && (void 0 === n ? n = a : void 0 === o && (o = a))
                            }
                            var l = this;
                            return v.default.prototype.httpDo.call(this, t[0], "GET", "text", function(e) {
                                for (var t = e.replace(/\r\n/g, "\r").replace(/\n/g, "\r").split(/\r/), r = 0, o = t.length; r < o; r += 32768) Array.prototype.push.apply(s, t.slice(r, Math.min(r + 32768, o)));
                                void 0 !== n && n(s), l._decrementPreload()
                            }, function(e) {
                                if (v.default._friendlyFileLoadError(3, e), !o) throw e;
                                o(e)
                            }), s
                        }, v.default.prototype.loadTable = function(t) {
                            var f, r, p, e = [],
                                m = !1,
                                o = t.substring(t.lastIndexOf(".") + 1, t.length);
                            "csv" === o ? p = "," : "ssv" === o ? p = ";" : "tsv" === o && (p = "\t");
                            for (var n = 1; n < arguments.length; n++) "function" == typeof arguments[n] ? void 0 === f ? f = arguments[n] : void 0 === r && (r = arguments[n]) : "string" == typeof arguments[n] && (e.push(arguments[n]), "header" === arguments[n] && (m = !0), "csv" === arguments[n] ? p = "," : "ssv" === arguments[n] ? p = ";" : "tsv" === arguments[n] && (p = "\t"));
                            var y = new v.default.Table,
                                g = this;
                            return this.httpDo(t, "GET", "table", function(e) {
                                for (var t, r, o = {}, n = 0, s = [], i = 0, a = null, l = function() {
                                        o.currentState = n, o.token = ""
                                    }, c = function() {
                                        a.push(o.token), l()
                                    }, u = function() {
                                        o.currentState = 4, s.push(a), a = null
                                    };;) {
                                    if (null == (t = e[i++])) {
                                        if (o.escaped) throw new Error("Unclosed quote in file.");
                                        if (a) {
                                            c(), u();
                                            break
                                        }
                                    }
                                    if (null === a && (o.escaped = !1, a = [], l()), o.currentState === n) {
                                        if ('"' === t) {
                                            o.escaped = !0, o.currentState = 1;
                                            continue
                                        }
                                        o.currentState = 1
                                    }
                                    1 === o.currentState && o.escaped ? '"' === t ? '"' === e[i] ? (o.token += '"', i++) : (o.escaped = !1, o.currentState = 2) : "\r" !== t && (o.token += t) : "\r" === t ? ("\n" === e[i] && i++, c(), u()) : "\n" === t ? (c(), u()) : t === p ? c() : 1 === o.currentState && (o.token += t)
                                }
                                if (m) y.columns = s.shift();
                                else
                                    for (var d = 0; d < s[0].length; d++) y.columns[d] = "null";
                                for (var h = 0; h < s.length; h++)(1 !== s[h].length || "undefined" !== s[h][0] && "" !== s[h][0]) && ((r = new v.default.TableRow).arr = s[h], r.obj = ((r, e) => (e = e || [], Object.fromEntries(e.map(function(e, t) {
                                    return [e, r[t]]
                                }))))(s[h], y.columns), y.addRow(r));
                                "function" == typeof f && f(y), g._decrementPreload()
                            }, function(e) {
                                v.default._friendlyFileLoadError(2, t), r ? r(e) : console.error(e)
                            }), y
                        }, v.default.prototype.loadXML = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            for (var o, n, s = new v.default.XML, i = 1; i < t.length; i++) {
                                var a = t[i];
                                "function" == typeof a && (void 0 === o ? o = a : void 0 === n && (n = a))
                            }
                            var l = this;
                            return this.httpDo(t[0], "GET", "xml", function(e) {
                                for (var t in e) s[t] = e[t];
                                void 0 !== o && o(s), l._decrementPreload()
                            }, function(e) {
                                if (v.default._friendlyFileLoadError(1, e), !n) throw e;
                                n(e)
                            }), s
                        }, v.default.prototype.loadBytes = function(t, r, o) {
                            var n = {},
                                s = this;
                            return this.httpDo(t, "GET", "arrayBuffer", function(e) {
                                n.bytes = new Uint8Array(e), "function" == typeof r && r(n), s._decrementPreload()
                            }, function(e) {
                                if (v.default._friendlyFileLoadError(6, t), !o) throw e;
                                o(e)
                            }), n
                        }, v.default.prototype.httpGet = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return v.default._validateParameters("httpGet", t), t.splice(1, 0, "GET"), v.default.prototype.httpDo.apply(this, t)
                        }, v.default.prototype.httpPost = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return v.default._validateParameters("httpPost", t), t.splice(1, 0, "POST"), v.default.prototype.httpDo.apply(this, t)
                        }, v.default.prototype.httpDo = function() {
                            for (var r, e, t, o = {}, n = 0, s = "text/plain", i = arguments.length - 1; 0 < i && "function" == typeof(i < 0 || arguments.length <= i ? void 0 : arguments[i]); i--) n++;
                            var a = arguments.length - n,
                                l = arguments.length <= 0 ? void 0 : arguments[0];
                            if (2 == a && "string" == typeof l && "object" === y(arguments.length <= 1 ? void 0 : arguments[1])) p = new Request(l, arguments.length <= 1 ? void 0 : arguments[1]), e = arguments.length <= 2 ? void 0 : arguments[2], t = arguments.length <= 3 ? void 0 : arguments[3];
                            else {
                                for (var c, u = "GET", d = 1; d < arguments.length; d++) {
                                    var h = d < 0 || arguments.length <= d ? void 0 : arguments[d];
                                    if ("string" == typeof h) "GET" === h || "POST" === h || "PUT" === h || "DELETE" === h ? u = h : "json" === h || "jsonp" === h || "binary" === h || "arrayBuffer" === h || "xml" === h || "text" === h || "table" === h ? r = h : c = h;
                                    else if ("number" == typeof h) c = h.toString();
                                    else if ("object" === y(h))
                                        if (h.hasOwnProperty("jsonpCallback") || h.hasOwnProperty("jsonpCallbackFunction"))
                                            for (var f in h) o[f] = h[f];
                                        else s = h instanceof v.default.XML ? (c = h.serialize(), "application/xml") : (c = JSON.stringify(h), "application/json");
                                    else "function" == typeof h && (e ? t = h : e = h)
                                }
                                var a = "GET" === u ? new Headers : new Headers({
                                        "Content-Type": s
                                    }),
                                    p = new Request(l, {
                                        method: u,
                                        mode: "cors",
                                        body: c,
                                        headers: a
                                    })
                            }
                            return (a = (a = "jsonp" === (r = r || (l.includes("json") ? "json" : l.includes("xml") ? "xml" : "text")) ? (0, m.default)(l, o) : fetch(p)).then(function(e) {
                                if (!e.ok) throw (t = new Error(e.body)).status = e.status, t.ok = !1, t;
                                var t = 0;
                                switch ((t = "jsonp" !== r ? e.headers.get("content-length") : t) && 64e6 < t && v.default._friendlyFileLoadError(7, l), r) {
                                    case "json":
                                    case "jsonp":
                                        return e.json();
                                    case "binary":
                                        return e.blob();
                                    case "arrayBuffer":
                                        return e.arrayBuffer();
                                    case "xml":
                                        return e.text().then(function(e) {
                                            return e = (new DOMParser).parseFromString(e, "text/xml"), new v.default.XML(e.documentElement)
                                        });
                                    default:
                                        return e.text()
                                }
                            })).then(e || function() {}), a.catch(t || console.error), a
                        }, window.URL = window.URL || window.webkitURL, v.default.prototype._pWriters = [], v.default.prototype.createWriter = function(e, t) {
                            var r, o;
                            for (o in v.default.prototype._pWriters)
                                if (v.default.prototype._pWriters[o].name === e) return r = new v.default.PrintWriter(e + this.millis(), t), v.default.prototype._pWriters.push(r), r;
                            return r = new v.default.PrintWriter(e, t), v.default.prototype._pWriters.push(r), r
                        }, v.default.PrintWriter = function(r, o) {
                            var n = this;
                            this.name = r, this.content = "", this.write = function(e) {
                                this.content += e
                            }, this.print = function(e) {
                                this.content += "".concat(e, "\n")
                            }, this.clear = function() {
                                this.content = ""
                            }, this.close = function() {
                                var e, t = [];
                                for (e in t.push(this.content), v.default.prototype.writeFile(t, r, o), v.default.prototype._pWriters) v.default.prototype._pWriters[e].name === this.name && v.default.prototype._pWriters.splice(e, 1);
                                n.clear(), n = {}
                            }
                        }, v.default.prototype.save = function(e, t, r) {
                            var o = arguments,
                                n = (this._curElement || this).elt;
                            if (0 === o.length) v.default.prototype.saveCanvas(n);
                            else if (o[0] instanceof v.default.Renderer || o[0] instanceof v.default.Graphics) v.default.prototype.saveCanvas(o[0].elt, o[1], o[2]);
                            else if (1 === o.length && "string" == typeof o[0]) v.default.prototype.saveCanvas(n, o[0]);
                            else switch (i(o[1], o[2])[1]) {
                                case "json":
                                    return void v.default.prototype.saveJSON(o[0], o[1], o[2]);
                                case "txt":
                                    return void v.default.prototype.saveStrings(o[0], o[1], o[2]);
                                default:
                                    o[0] instanceof Array ? v.default.prototype.saveStrings(o[0], o[1], o[2]) : o[0] instanceof v.default.Table ? v.default.prototype.saveTable(o[0], o[1], o[2]) : o[0] instanceof v.default.Image ? v.default.prototype.saveCanvas(o[0].canvas, o[1]) : o[0] instanceof v.default.SoundFile && v.default.prototype.saveSound(o[0], o[1], o[2], o[3])
                            }
                        }, v.default.prototype.saveJSON = function(e, t, r) {
                            v.default._validateParameters("saveJSON", arguments), r = r ? JSON.stringify(e) : JSON.stringify(e, void 0, 2), this.saveStrings(r.split("\n"), t, "json")
                        }, v.default.prototype.saveJSONObject = v.default.prototype.saveJSON, v.default.prototype.saveJSONArray = v.default.prototype.saveJSON, v.default.prototype.saveStrings = function(e, t, r, o) {
                            v.default._validateParameters("saveStrings", arguments);
                            for (var n = this.createWriter(t, r || "txt"), s = 0; s < e.length; s++) o ? n.write(e[s] + "\r\n") : n.write(e[s] + "\n");
                            n.close(), n.clear()
                        }, v.default.prototype.saveTable = function(e, t, r) {
                            v.default._validateParameters("saveTable", arguments);
                            var o, o = void 0 === r ? t.substring(t.lastIndexOf(".") + 1, t.length) : r,
                                n = this.createWriter(t, o),
                                s = e.columns,
                                i = "tsv" === o ? "\t" : ",";
                            if ("html" !== o) {
                                if ("0" !== s[0]) {
                                    for (var a = 0; a < s.length; a++) a < s.length - 1 ? n.write(s[a] + i) : n.write(s[a]);
                                    n.write("\n")
                                }
                                for (var l = 0; l < e.rows.length; l++) {
                                    for (var c = void 0, c = 0; c < e.rows[l].arr.length; c++) c < e.rows[l].arr.length - 1 ? "csv" === o && String(e.rows[l].arr[c]).includes(",") ? n.write('"' + e.rows[l].arr[c] + '"' + i) : n.write(e.rows[l].arr[c] + i) : "csv" === o && String(e.rows[l].arr[c]).includes(",") ? n.write('"' + e.rows[l].arr[c] + '"') : n.write(e.rows[l].arr[c]);
                                    n.write("\n")
                                }
                            } else {
                                if (n.print("<html>"), n.print("<head>"), n.print('  <meta http-equiv="content-type" content="text/html;charset=utf-8" />'), n.print("</head>"), n.print("<body>"), n.print("  <table>"), "0" !== s[0]) {
                                    n.print("    <tr>");
                                    for (var u = 0; u < s.length; u++) {
                                        var d = g(s[u]);
                                        n.print("      <td>".concat(d)), n.print("      </td>")
                                    }
                                    n.print("    </tr>")
                                }
                                for (var h = 0; h < e.rows.length; h++) {
                                    n.print("    <tr>");
                                    for (var f = 0; f < e.columns.length; f++) {
                                        var p = g(e.rows[h].getString(f));
                                        n.print("      <td>".concat(p)), n.print("      </td>")
                                    }
                                    n.print("    </tr>")
                                }
                                n.print("  </table>"), n.print("</body>"), n.print("</html>")
                            }
                            n.close(), n.clear()
                        }, v.default.prototype.writeFile = function(e, t, r) {
                            var o = "application/octet-stream",
                                e = (v.default.prototype._isSafari() && (o = "text/plain"), new Blob(e, {
                                    type: o
                                }));
                            v.default.prototype.downloadFile(e, t, r)
                        }, v.default.prototype.downloadFile = function(e, t, r) {
                            var o, r = (t = i(t, r))[0];
                            e instanceof Blob ? n.default.saveAs(e, r) : ((o = document.createElement("a")).href = e, o.download = r, o.onclick = function(e) {
                                document.body.removeChild(e.target), e.stopPropagation()
                            }, o.style.display = "none", document.body.appendChild(o), v.default.prototype._isSafari() && (e = (e = 'Hello, Safari user! To download this file...\n1. Go to File --\x3e Save As.\n2. Choose "Page Source" as the Format.\n') + '3. Name it with this extension: ."'.concat(t[1], '"'), alert(e)), o.click())
                        }, v.default.prototype._checkFileExtension = i, v.default.prototype._isSafari = function() {
                            return window.HTMLElement.toString().includes("Constructor")
                        }, e = v.default, r.default = e
                    }, {
                        "../core/friendly_errors/fes_core": 274,
                        "../core/friendly_errors/file_errors": 275,
                        "../core/friendly_errors/validate_params": 278,
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.last-index-of": 167,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.from-entries": 185,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        "core-js/modules/web.url": 248,
                        "es6-promise/auto": 249,
                        "fetch-jsonp": 251,
                        "file-saver": 252,
                        "whatwg-fetch": 261
                    }],
                    310: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.replace"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function n(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function s() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : [];
                            if (!(this instanceof s)) throw new TypeError("Cannot call a class as a function");
                            this.columns = [], this.rows = e
                        }
                        o.default.Table = (n(s.prototype, [{
                            key: "addRow",
                            value: function(e) {
                                if (void 0 === (e = e || new o.default.TableRow).arr || void 0 === e.obj) throw new Error("invalid TableRow: ".concat(e));
                                return (e.table = this).rows.push(e), e
                            }
                        }, {
                            key: "removeRow",
                            value: function(e) {
                                this.rows[e].table = null, e = this.rows.splice(e + 1, this.rows.length), this.rows.pop(), this.rows = this.rows.concat(e)
                            }
                        }, {
                            key: "getRow",
                            value: function(e) {
                                return this.rows[e]
                            }
                        }, {
                            key: "getRows",
                            value: function() {
                                return this.rows
                            }
                        }, {
                            key: "findRow",
                            value: function(e, t) {
                                if ("string" == typeof t) {
                                    for (var r = 0; r < this.rows.length; r++)
                                        if (this.rows[r].obj[t] === e) return this.rows[r]
                                } else
                                    for (var o = 0; o < this.rows.length; o++)
                                        if (this.rows[o].arr[t] === e) return this.rows[o];
                                return null
                            }
                        }, {
                            key: "findRows",
                            value: function(e, t) {
                                var r = [];
                                if ("string" == typeof t)
                                    for (var o = 0; o < this.rows.length; o++) this.rows[o].obj[t] === e && r.push(this.rows[o]);
                                else
                                    for (var n = 0; n < this.rows.length; n++) this.rows[n].arr[t] === e && r.push(this.rows[n]);
                                return r
                            }
                        }, {
                            key: "matchRow",
                            value: function(e, t) {
                                if ("number" == typeof t) {
                                    for (var r = 0; r < this.rows.length; r++)
                                        if (this.rows[r].arr[t].match(e)) return this.rows[r]
                                } else
                                    for (var o = 0; o < this.rows.length; o++)
                                        if (this.rows[o].obj[t].match(e)) return this.rows[o];
                                return null
                            }
                        }, {
                            key: "matchRows",
                            value: function(e, t) {
                                var r = [];
                                if ("number" == typeof t)
                                    for (var o = 0; o < this.rows.length; o++) this.rows[o].arr[t].match(e) && r.push(this.rows[o]);
                                else
                                    for (var n = 0; n < this.rows.length; n++) this.rows[n].obj[t].match(e) && r.push(this.rows[n]);
                                return r
                            }
                        }, {
                            key: "getColumn",
                            value: function(e) {
                                var t = [];
                                if ("string" == typeof e)
                                    for (var r = 0; r < this.rows.length; r++) t.push(this.rows[r].obj[e]);
                                else
                                    for (var o = 0; o < this.rows.length; o++) t.push(this.rows[o].arr[e]);
                                return t
                            }
                        }, {
                            key: "clearRows",
                            value: function() {
                                delete this.rows, this.rows = []
                            }
                        }, {
                            key: "addColumn",
                            value: function(e) {
                                this.columns.push(e || null)
                            }
                        }, {
                            key: "getColumnCount",
                            value: function() {
                                return this.columns.length
                            }
                        }, {
                            key: "getRowCount",
                            value: function() {
                                return this.rows.length
                            }
                        }, {
                            key: "removeTokens",
                            value: function(e, t) {
                                for (var r = [], o = 0; o < e.length; o++) r.push(e.charAt(o).replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"));
                                var n = new RegExp(r.join("|"), "g");
                                if (void 0 === t)
                                    for (var s = 0; s < this.columns.length; s++)
                                        for (var i = 0; i < this.rows.length; i++) {
                                            var a = (a = this.rows[i].arr[s]).replace(n, "");
                                            this.rows[i].arr[s] = a, this.rows[i].obj[this.columns[s]] = a
                                        } else if ("string" == typeof t)
                                            for (var l = 0; l < this.rows.length; l++) {
                                                var c = (c = this.rows[l].obj[t]).replace(n, ""),
                                                    u = (this.rows[l].obj[t] = c, this.columns.indexOf(t));
                                                this.rows[l].arr[u] = c
                                            } else
                                                for (var d = 0; d < this.rows.length; d++) {
                                                    var h = (h = this.rows[d].arr[t]).replace(n, "");
                                                    this.rows[d].arr[t] = h, this.rows[d].obj[this.columns[t]] = h
                                                }
                            }
                        }, {
                            key: "trim",
                            value: function(e) {
                                var t = new RegExp(" ", "g");
                                if (void 0 === e)
                                    for (var r = 0; r < this.columns.length; r++)
                                        for (var o = 0; o < this.rows.length; o++) {
                                            var n = (n = this.rows[o].arr[r]).replace(t, "");
                                            this.rows[o].arr[r] = n, this.rows[o].obj[this.columns[r]] = n
                                        } else if ("string" == typeof e)
                                            for (var s = 0; s < this.rows.length; s++) {
                                                var i = (i = this.rows[s].obj[e]).replace(t, ""),
                                                    a = (this.rows[s].obj[e] = i, this.columns.indexOf(e));
                                                this.rows[s].arr[a] = i
                                            } else
                                                for (var l = 0; l < this.rows.length; l++) {
                                                    var c = (c = this.rows[l].arr[e]).replace(t, "");
                                                    this.rows[l].arr[e] = c, this.rows[l].obj[this.columns[e]] = c
                                                }
                            }
                        }, {
                            key: "removeColumn",
                            value: function(e) {
                                "string" == typeof e ? r = this.columns.indexOf(t = e) : t = this.columns[r = e];
                                var t, r, e = this.columns.splice(r + 1, this.columns.length);
                                this.columns.pop(), this.columns = this.columns.concat(e);
                                for (var o = 0; o < this.rows.length; o++) {
                                    var n = this.rows[o].arr,
                                        s = n.splice(r + 1, n.length);
                                    n.pop(), this.rows[o].arr = n.concat(s), delete this.rows[o].obj[t]
                                }
                            }
                        }, {
                            key: "set",
                            value: function(e, t, r) {
                                this.rows[e].set(t, r)
                            }
                        }, {
                            key: "setNum",
                            value: function(e, t, r) {
                                this.rows[e].setNum(t, r)
                            }
                        }, {
                            key: "setString",
                            value: function(e, t, r) {
                                this.rows[e].setString(t, r)
                            }
                        }, {
                            key: "get",
                            value: function(e, t) {
                                return this.rows[e].get(t)
                            }
                        }, {
                            key: "getNum",
                            value: function(e, t) {
                                return this.rows[e].getNum(t)
                            }
                        }, {
                            key: "getString",
                            value: function(e, t) {
                                return this.rows[e].getString(t)
                            }
                        }, {
                            key: "getObject",
                            value: function(e) {
                                for (var t, r = {}, o = 0; o < this.rows.length; o++)
                                    if (t = this.rows[o].obj, "string" == typeof e) {
                                        if (!(0 <= this.columns.indexOf(e))) throw new Error('This table has no column named "'.concat(e, '"'));
                                        r[t[e]] = t
                                    } else r[o] = this.rows[o].obj;
                                return r
                            }
                        }, {
                            key: "getArray",
                            value: function() {
                                for (var e = [], t = 0; t < this.rows.length; t++) e.push(this.rows[t].arr);
                                return e
                            }
                        }]), s), r.default = e = o.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.regexp.constructor": 194,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.replace": 204
                    }],
                    311: [function(e, t, r) {
                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function n(e, t) {
                            if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
                            var r = [];
                            e && (r = e.split(t = t || ",")), this.arr = r, this.obj = Object.fromEntries(r.entries()), this.table = null
                        }
                        e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.from-entries"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.from-entries"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.TableRow = (o(n.prototype, [{
                            key: "set",
                            value: function(e, t) {
                                if ("string" == typeof e) {
                                    var r = this.table.columns.indexOf(e);
                                    if (!(0 <= r)) throw new Error('This table has no column named "'.concat(e, '"'));
                                    this.obj[e] = t, this.arr[r] = t
                                } else {
                                    if (!(e < this.table.columns.length)) throw new Error("Column #".concat(e, " is out of the range of this table"));
                                    this.arr[e] = t, r = this.table.columns[e], this.obj[r] = t
                                }
                            }
                        }, {
                            key: "setNum",
                            value: function(e, t) {
                                t = parseFloat(t), this.set(e, t)
                            }
                        }, {
                            key: "setString",
                            value: function(e, t) {
                                t = t.toString(), this.set(e, t)
                            }
                        }, {
                            key: "get",
                            value: function(e) {
                                return ("string" == typeof e ? this.obj : this.arr)[e]
                            }
                        }, {
                            key: "getNum",
                            value: function(e) {
                                var t = "string" == typeof e ? parseFloat(this.obj[e]) : parseFloat(this.arr[e]);
                                if ("NaN" === t.toString()) throw "Error: ".concat(this.obj[e], " is NaN (Not a Number)");
                                return t
                            }
                        }, {
                            key: "getString",
                            value: function(e) {
                                return ("string" == typeof e ? this.obj : this.arr)[e].toString()
                            }
                        }]), n), r.default = e = e.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.from-entries": 185,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    312: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function n(e) {
                            if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
                            e ? this.DOM = e : (e = document.implementation.createDocument(null, "doc"), this.DOM = e.createElement("root"))
                        }
                        a.default.XML = (o(n.prototype, [{
                            key: "getParent",
                            value: function() {
                                return new a.default.XML(this.DOM.parentElement)
                            }
                        }, {
                            key: "getName",
                            value: function() {
                                return this.DOM.tagName
                            }
                        }, {
                            key: "setName",
                            value: function(e) {
                                var t = this.DOM.innerHTML,
                                    r = this.DOM.attributes,
                                    o = document.implementation.createDocument(null, "default").createElement(e);
                                o.innerHTML = t;
                                for (var n = 0; n < r.length; n++) o.setAttribute(r[n].nodeName, r[n].nodeValue);
                                this.DOM = o
                            }
                        }, {
                            key: "hasChildren",
                            value: function() {
                                return 0 < this.DOM.children.length
                            }
                        }, {
                            key: "listChildren",
                            value: function() {
                                for (var e = [], t = 0; t < this.DOM.childNodes.length; t++) e.push(this.DOM.childNodes[t].nodeName);
                                return e
                            }
                        }, {
                            key: "getChildren",
                            value: function(e) {
                                for (var t = e ? this.DOM.getElementsByTagName(e) : this.DOM.children, r = [], o = 0; o < t.length; o++) r.push(new a.default.XML(t[o]));
                                return r
                            }
                        }, {
                            key: "getChild",
                            value: function(e) {
                                if ("string" != typeof e) return new a.default.XML(this.DOM.children[e]);
                                var t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = this.DOM.children[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        if (i.tagName === e) return new a.default.XML(i)
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }
                        }, {
                            key: "addChild",
                            value: function(e) {
                                e instanceof a.default.XML && this.DOM.appendChild(e.DOM)
                            }
                        }, {
                            key: "removeChild",
                            value: function(e) {
                                var t = -1;
                                if ("string" == typeof e) {
                                    for (var r = 0; r < this.DOM.children.length; r++)
                                        if (this.DOM.children[r].tagName === e) {
                                            t = r;
                                            break
                                        }
                                } else t = e; - 1 !== t && this.DOM.removeChild(this.DOM.children[t])
                            }
                        }, {
                            key: "getAttributeCount",
                            value: function() {
                                return this.DOM.attributes.length
                            }
                        }, {
                            key: "listAttributes",
                            value: function() {
                                var e = [],
                                    t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = this.DOM.attributes[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) e.push(n.value.nodeName)
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                                return e
                            }
                        }, {
                            key: "hasAttribute",
                            value: function(e) {
                                var t = {},
                                    r = !0,
                                    o = !1,
                                    n = void 0;
                                try {
                                    for (var s, i = this.DOM.attributes[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) {
                                        var a = s.value;
                                        t[a.nodeName] = a.nodeValue
                                    }
                                } catch (e) {
                                    o = !0, n = e
                                } finally {
                                    try {
                                        r || null == i.return || i.return()
                                    } finally {
                                        if (o) throw n
                                    }
                                }
                                return !!t[e]
                            }
                        }, {
                            key: "getNum",
                            value: function(e, t) {
                                var r = {},
                                    o = !0,
                                    n = !1,
                                    s = void 0;
                                try {
                                    for (var i, a = this.DOM.attributes[Symbol.iterator](); !(o = (i = a.next()).done); o = !0) {
                                        var l = i.value;
                                        r[l.nodeName] = l.nodeValue
                                    }
                                } catch (e) {
                                    n = !0, s = e
                                } finally {
                                    try {
                                        o || null == a.return || a.return()
                                    } finally {
                                        if (n) throw s
                                    }
                                }
                                return Number(r[e]) || t || 0
                            }
                        }, {
                            key: "getString",
                            value: function(e, t) {
                                var r = {},
                                    o = !0,
                                    n = !1,
                                    s = void 0;
                                try {
                                    for (var i, a = this.DOM.attributes[Symbol.iterator](); !(o = (i = a.next()).done); o = !0) {
                                        var l = i.value;
                                        r[l.nodeName] = l.nodeValue
                                    }
                                } catch (e) {
                                    n = !0, s = e
                                } finally {
                                    try {
                                        o || null == a.return || a.return()
                                    } finally {
                                        if (n) throw s
                                    }
                                }
                                return r[e] ? String(r[e]) : t || null
                            }
                        }, {
                            key: "setAttribute",
                            value: function(e, t) {
                                this.DOM.setAttribute(e, t)
                            }
                        }, {
                            key: "getContent",
                            value: function(e) {
                                return this.DOM.textContent.replace(/\s\s+/g, ",") || e || null
                            }
                        }, {
                            key: "setContent",
                            value: function(e) {
                                this.DOM.children.length || (this.DOM.textContent = e)
                            }
                        }, {
                            key: "serialize",
                            value: function() {
                                return (new XMLSerializer).serializeToString(this.DOM)
                            }
                        }]), n), r.default = e = a.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    313: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.string.includes"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var i = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function n(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }
                        i.default.prototype.abs = Math.abs, i.default.prototype.ceil = Math.ceil, i.default.prototype.constrain = function(e, t, r) {
                            return i.default._validateParameters("constrain", arguments), Math.max(Math.min(e, r), t)
                        }, i.default.prototype.dist = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return i.default._validateParameters("dist", t), 4 === t.length ? Math.hypot(t[2] - t[0], t[3] - t[1]) : 6 === t.length ? Math.hypot(t[3] - t[0], t[4] - t[1], t[5] - t[2]) : void 0
                        }, i.default.prototype.exp = Math.exp, i.default.prototype.floor = Math.floor, i.default.prototype.lerp = function(e, t, r) {
                            return i.default._validateParameters("lerp", arguments), r * (t - e) + e
                        }, i.default.prototype.log = Math.log, i.default.prototype.mag = function(e, t) {
                            return i.default._validateParameters("mag", arguments), Math.hypot(e, t)
                        }, i.default.prototype.map = function(e, t, r, o, n, s) {
                            return i.default._validateParameters("map", arguments), e = (e - t) / (r - t) * (n - o) + o, s ? o < n ? this.constrain(e, o, n) : this.constrain(e, n, o) : e
                        }, i.default.prototype.max = function() {
                            for (var e = function(e) {
                                    return Math.max.apply(Math, n(e))
                                }, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return Array.isArray(r[0]) ? e(r[0]) : e(r)
                        }, i.default.prototype.min = function() {
                            for (var e = function(e) {
                                    return Math.min.apply(Math, n(e))
                                }, t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return Array.isArray(r[0]) ? e(r[0]) : e(r)
                        }, i.default.prototype.norm = function(e, t, r) {
                            return i.default._validateParameters("norm", arguments), this.map(e, t, r, 0, 1)
                        }, i.default.prototype.pow = Math.pow, i.default.prototype.round = function(e, t) {
                            return t ? (t = Math.pow(10, t), Math.round(e * t) / t) : Math.round(e)
                        }, i.default.prototype.sq = function(e) {
                            return e * e
                        }, i.default.prototype.sqrt = Math.sqrt, i.default.prototype.fract = function(e) {
                            i.default._validateParameters("fract", arguments);
                            var t, r = 0,
                                e = Number(e);
                            return isNaN(e) || Math.abs(e) === 1 / 0 ? e : (e < 0 && (e = -e, r = 1), String(e).includes(".") && !String(e).includes("e") ? (t = String(e), t = Number("0" + t.slice(t.indexOf("."))), Math.abs(r - t)) : e < 1 ? Math.abs(r - e) : 0)
                        }, r.default = e = i.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.math.hypot": 176,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    314: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.slice"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function n(e, t, r) {
                            return (n = (() => {
                                if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                    if ("function" == typeof Proxy) return 1;
                                    try {
                                        return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                    } catch (e) {}
                                }
                            })() ? Reflect.construct : function(e, t, r) {
                                var o = [null];
                                return o.push.apply(o, t), t = new(Function.bind.apply(e, o)), r && s(t, r.prototype), t
                            }).apply(null, arguments)
                        }

                        function s(e, t) {
                            return (s = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }
                        o.default.prototype.createVector = function(e, t, r) {
                            return this instanceof o.default ? n(o.default.Vector, [this._fromRadians.bind(this), this._toRadians.bind(this)].concat(Array.prototype.slice.call(arguments))) : new o.default.Vector(e, t, r)
                        }, r.default = e = o.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.to-string": 196
                    }],
                    315: [function(e, t, r) {
                        function b(e) {
                            return .5 * (1 - Math.cos(e * Math.PI))
                        }
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };
                        var _, x = 4,
                            w = .5,
                            e = (e.default.prototype.noise = function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0;
                                if (null == _) {
                                    _ = new Array(4096);
                                    for (var o = 0; o < 4096; o++) _[o] = Math.random()
                                }
                                e < 0 && (e = -e), t < 0 && (t = -t), r < 0 && (r = -r);
                                for (var n, s, i = Math.floor(e), a = Math.floor(t), l = Math.floor(r), c = e - i, u = t - a, d = r - l, h = 0, f = .5, p = 0; p < x; p++) {
                                    var m = i + (a << 4) + (l << 8),
                                        y = b(c),
                                        g = b(u),
                                        v = _[4095 & m];
                                    v += y * (_[m + 1 & 4095] - v), n = _[m + 16 & 4095], v += g * ((n += y * (_[m + 16 + 1 & 4095] - n)) - v), n = _[4095 & (m += 256)], n += y * (_[m + 1 & 4095] - n), s = _[m + 16 & 4095], n += g * ((s += y * (_[m + 16 + 1 & 4095] - s)) - n), h += (v += b(d) * (n - v)) * f, f *= w, i <<= 1, a <<= 1, l <<= 1, 1 <= (c *= 2) && (i++, c--), 1 <= (u *= 2) && (a++, u--), 1 <= (d *= 2) && (l++, d--)
                                }
                                return h
                            }, e.default.prototype.noiseDetail = function(e, t) {
                                0 < e && (x = e), 0 < t && (w = t)
                            }, e.default.prototype.noiseSeed = function(e) {
                                var t, r = 4294967296,
                                    o = function() {
                                        return (t = (1664525 * t + 1013904223) % r) / r
                                    };
                                t = (null == e ? Math.random() * r : e) >>> 0, _ = new Array(4096);
                                for (var n = 0; n < 4096; n++) _[n] = o()
                            }, e.default);
                        r.default = e
                    }, {
                        "../core/main": 283
                    }],
                    316: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.some"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.number.epsilon"), e("core-js/modules/es.number.is-finite"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.sub"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.some"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.number.epsilon"), e("core-js/modules/es.number.is-finite"), e("core-js/modules/es.string.sub"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n, c = (d = e("../core/main")) && d.__esModule ? d : {
                                default: d
                            },
                            s = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function l(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function u() {
                            if (!(this instanceof u)) throw new TypeError("Cannot call a class as a function");
                            var e, t, r = "function" == typeof(arguments.length <= 0 ? void 0 : arguments[0]) ? (this.isPInst = !0, this._fromRadians = arguments.length <= 0 ? void 0 : arguments[0], this._toRadians = arguments.length <= 1 ? void 0 : arguments[1], e = (arguments.length <= 2 ? void 0 : arguments[2]) || 0, t = (arguments.length <= 3 ? void 0 : arguments[3]) || 0, (arguments.length <= 4 ? void 0 : arguments[4]) || 0) : (e = (arguments.length <= 0 ? void 0 : arguments[0]) || 0, t = (arguments.length <= 1 ? void 0 : arguments[1]) || 0, (arguments.length <= 2 ? void 0 : arguments[2]) || 0);
                            this.x = e, this.y = t, this.z = r
                        }
                        c.default.Vector = (e = [{
                            key: "fromAngle",
                            value: function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 1;
                                return new c.default.Vector(t * Math.cos(e), t * Math.sin(e), 0)
                            }
                        }, {
                            key: "fromAngles",
                            value: function(e, t) {
                                var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 1,
                                    o = Math.cos(t),
                                    t = Math.sin(t),
                                    n = Math.cos(e),
                                    e = Math.sin(e);
                                return new c.default.Vector(r * e * t, -r * n, r * e * o)
                            }
                        }, {
                            key: "random2D",
                            value: function() {
                                return this.fromAngle(Math.random() * s.TWO_PI)
                            }
                        }, {
                            key: "random3D",
                            value: function() {
                                var e = Math.random() * s.TWO_PI,
                                    t = 2 * Math.random() - 1,
                                    r = (o = Math.sqrt(1 - t * t)) * Math.cos(e),
                                    o = o * Math.sin(e);
                                return new c.default.Vector(r, o, t)
                            }
                        }, {
                            key: "copy",
                            value: function(e) {
                                return e.copy(e)
                            }
                        }, {
                            key: "add",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return s ? s.set(o) : (s = o.copy(), 3 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.add")), s.add(n), s
                            }
                        }, {
                            key: "rem",
                            value: function(e, t) {
                                if (e instanceof c.default.Vector && t instanceof c.default.Vector) return (e = e.copy()).rem(t), e
                            }
                        }, {
                            key: "sub",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return s ? s.set(o) : (s = o.copy(), 3 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.sub")), s.sub(n), s
                            }
                        }, {
                            key: "mult",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return s ? s.set(o) : (s = o.copy(), 3 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.mult")), s.mult(n), s
                            }
                        }, {
                            key: "rotate",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return 2 === t.length ? s = o.copy() : (s instanceof c.default.Vector || c.default._friendlyError("The target parameter should be of type p5.Vector", "p5.Vector.rotate"), s.set(o)), s.rotate(n), s
                            }
                        }, {
                            key: "div",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return s ? s.set(o) : (s = o.copy(), 3 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.div")), s.div(n), s
                            }
                        }, {
                            key: "dot",
                            value: function(e, t) {
                                return e.dot(t)
                            }
                        }, {
                            key: "cross",
                            value: function(e, t) {
                                return e.cross(t)
                            }
                        }, {
                            key: "dist",
                            value: function(e, t) {
                                return e.dist(t)
                            }
                        }, {
                            key: "lerp",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2],
                                    i = t[3];
                                return i ? i.set(o) : (i = o.copy(), 4 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.lerp")), i.lerp(n, s), i
                            }
                        }, {
                            key: "slerp",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2],
                                    i = t[3];
                                return i ? i.set(o) : (i = o.copy(), 4 === t.length && c.default._friendlyError("The target parameter is undefined, it should be of type p5.Vector", "p5.Vector.slerp")), i.slerp(n, s), i
                            }
                        }, {
                            key: "mag",
                            value: function(e) {
                                return e.mag()
                            }
                        }, {
                            key: "magSq",
                            value: function(e) {
                                return e.magSq()
                            }
                        }, {
                            key: "normalize",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1];
                                return t.length < 2 ? n = o.copy() : (n instanceof c.default.Vector || c.default._friendlyError("The target parameter should be of type p5.Vector", "p5.Vector.normalize"), n.set(o)), n.normalize()
                            }
                        }, {
                            key: "limit",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return t.length < 3 ? s = o.copy() : (s instanceof c.default.Vector || c.default._friendlyError("The target parameter should be of type p5.Vector", "p5.Vector.limit"), s.set(o)), s.limit(n)
                            }
                        }, {
                            key: "setMag",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return t.length < 3 ? s = o.copy() : (s instanceof c.default.Vector || c.default._friendlyError("The target parameter should be of type p5.Vector", "p5.Vector.setMag"), s.set(o)), s.setMag(n)
                            }
                        }, {
                            key: "heading",
                            value: function(e) {
                                return e.heading()
                            }
                        }, {
                            key: "angleBetween",
                            value: function(e, t) {
                                return e.angleBetween(t)
                            }
                        }, {
                            key: "reflect",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                return t.length < 3 ? s = o.copy() : (s instanceof c.default.Vector || c.default._friendlyError("The target parameter should be of type p5.Vector", "p5.Vector.reflect"), s.set(o)), s.reflect(n)
                            }
                        }, {
                            key: "array",
                            value: function(e) {
                                return e.array()
                            }
                        }, {
                            key: "equals",
                            value: function(e, t) {
                                var r;
                                return e instanceof c.default.Vector ? r = e : Array.isArray(e) ? r = (new c.default.Vector).set(e) : c.default._friendlyError("The v1 parameter should be of type Array or p5.Vector", "p5.Vector.equals"), r.equals(t)
                            }
                        }], l((n = u).prototype, [{
                            key: "toString",
                            value: function() {
                                return "p5.Vector Object : [".concat(this.x, ", ").concat(this.y, ", ").concat(this.z, "]")
                            }
                        }, {
                            key: "set",
                            value: function(e, t, r) {
                                return e instanceof c.default.Vector ? (this.x = e.x || 0, this.y = e.y || 0, this.z = e.z || 0) : Array.isArray(e) ? (this.x = e[0] || 0, this.y = e[1] || 0, this.z = e[2] || 0) : (this.x = e || 0, this.y = t || 0, this.z = r || 0), this
                            }
                        }, {
                            key: "copy",
                            value: function() {
                                return this.isPInst ? new c.default.Vector(this._fromRadians, this._toRadians, this.x, this.y, this.z) : new c.default.Vector(this.x, this.y, this.z)
                            }
                        }, {
                            key: "add",
                            value: function(e, t, r) {
                                return e instanceof c.default.Vector ? (this.x += e.x || 0, this.y += e.y || 0, this.z += e.z || 0) : Array.isArray(e) ? (this.x += e[0] || 0, this.y += e[1] || 0, this.z += e[2] || 0) : (this.x += e || 0, this.y += t || 0, this.z += r || 0), this
                            }
                        }, {
                            key: "calculateRemainder2D",
                            value: function(e, t) {
                                return 0 !== e && (this.x = this.x % e), 0 !== t && (this.y = this.y % t), this
                            }
                        }, {
                            key: "calculateRemainder3D",
                            value: function(e, t, r) {
                                return 0 !== e && (this.x = this.x % e), 0 !== t && (this.y = this.y % t), 0 !== r && (this.z = this.z % r), this
                            }
                        }, {
                            key: "rem",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o, n, s, i = t[0],
                                    a = t[1],
                                    l = t[2];
                                if (i instanceof c.default.Vector) {
                                    if ([i.x, i.y, i.z].every(Number.isFinite)) return o = parseFloat(i.x), n = parseFloat(i.y), s = parseFloat(i.z), this.calculateRemainder3D(o, n, s)
                                } else if (Array.isArray(i)) {
                                    if (i.every(Number.isFinite)) return 2 === i.length ? this.calculateRemainder2D(i[0], i[1]) : 3 === i.length ? this.calculateRemainder3D(i[0], i[1], i[2]) : void 0
                                } else if (1 === t.length) {
                                    if (Number.isFinite(i) && 0 !== i) return this.x = this.x % i, this.y = this.y % i, this.z = this.z % i, this
                                } else if (2 === t.length) {
                                    if (t.every(Number.isFinite)) return this.calculateRemainder2D(i, a)
                                } else if (3 === t.length && t.every(Number.isFinite)) return this.calculateRemainder3D(i, a, l)
                            }
                        }, {
                            key: "sub",
                            value: function(e, t, r) {
                                return e instanceof c.default.Vector ? (this.x -= e.x || 0, this.y -= e.y || 0, this.z -= e.z || 0) : Array.isArray(e) ? (this.x -= e[0] || 0, this.y -= e[1] || 0, this.z -= e[2] || 0) : (this.x -= e || 0, this.y -= t || 0, this.z -= r || 0), this
                            }
                        }, {
                            key: "mult",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o, n = t[0],
                                    s = t[1],
                                    i = t[2];
                                return n instanceof c.default.Vector ? Number.isFinite(n.x) && Number.isFinite(n.y) && Number.isFinite(n.z) && "number" == typeof n.x && "number" == typeof n.y && "number" == typeof n.z ? (this.x *= n.x, this.y *= n.y, this.z *= n.z) : console.warn("p5.Vector.prototype.mult:", "x contains components that are either undefined or not finite numbers") : Array.isArray(n) ? n.every(function(e) {
                                    return Number.isFinite(e)
                                }) && n.every(function(e) {
                                    return "number" == typeof e
                                }) ? 1 === n.length ? (this.x *= n[0], this.y *= n[0], this.z *= n[0]) : 2 === n.length ? (this.x *= n[0], this.y *= n[1]) : 3 === n.length && (this.x *= n[0], this.y *= n[1], this.z *= n[2]) : console.warn("p5.Vector.prototype.mult:", "x contains elements that are either undefined or not finite numbers") : (o = t).every(function(e) {
                                    return Number.isFinite(e)
                                }) && o.every(function(e) {
                                    return "number" == typeof e
                                }) ? (1 === t.length && (this.x *= n, this.y *= n, this.z *= n), 2 === t.length && (this.x *= n, this.y *= s), 3 === t.length && (this.x *= n, this.y *= s, this.z *= i)) : console.warn("p5.Vector.prototype.mult:", "x, y, or z arguments are either undefined or not a finite number"), this
                            }
                        }, {
                            key: "div",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                var o = t[0],
                                    n = t[1],
                                    s = t[2];
                                if (o instanceof c.default.Vector)
                                    if (Number.isFinite(o.x) && Number.isFinite(o.y) && Number.isFinite(o.z) && "number" == typeof o.x && "number" == typeof o.y && "number" == typeof o.z) {
                                        var i = 0 === o.z && 0 === this.z;
                                        if (0 === o.x || 0 === o.y || !i && 0 === o.z) return console.warn("p5.Vector.prototype.div:", "divide by 0"), this;
                                        this.x /= o.x, this.y /= o.y, i || (this.z /= o.z)
                                    } else console.warn("p5.Vector.prototype.div:", "x contains components that are either undefined or not finite numbers");
                                else if (Array.isArray(o))
                                    if (o.every(Number.isFinite) && o.every(function(e) {
                                            return "number" == typeof e
                                        })) {
                                        if (o.some(function(e) {
                                                return 0 === e
                                            })) return console.warn("p5.Vector.prototype.div:", "divide by 0"), this;
                                        1 === o.length ? (this.x /= o[0], this.y /= o[0], this.z /= o[0]) : 2 === o.length ? (this.x /= o[0], this.y /= o[1]) : 3 === o.length && (this.x /= o[0], this.y /= o[1], this.z /= o[2])
                                    } else console.warn("p5.Vector.prototype.div:", "x contains components that are either undefined or not finite numbers");
                                else if (t.every(Number.isFinite) && t.every(function(e) {
                                        return "number" == typeof e
                                    })) {
                                    if (t.some(function(e) {
                                            return 0 === e
                                        })) return console.warn("p5.Vector.prototype.div:", "divide by 0"), this;
                                    1 === t.length && (this.x /= o, this.y /= o, this.z /= o), 2 === t.length && (this.x /= o, this.y /= n), 3 === t.length && (this.x /= o, this.y /= n, this.z /= s)
                                } else console.warn("p5.Vector.prototype.div:", "x, y, or z arguments are either undefined or not a finite number");
                                return this
                            }
                        }, {
                            key: "mag",
                            value: function() {
                                return Math.sqrt(this.magSq())
                            }
                        }, {
                            key: "magSq",
                            value: function() {
                                var e = this.x,
                                    t = this.y,
                                    r = this.z;
                                return e * e + t * t + r * r
                            }
                        }, {
                            key: "dot",
                            value: function(e, t, r) {
                                return e instanceof c.default.Vector ? this.dot(e.x, e.y, e.z) : this.x * (e || 0) + this.y * (t || 0) + this.z * (r || 0)
                            }
                        }, {
                            key: "cross",
                            value: function(e) {
                                var t = this.y * e.z - this.z * e.y,
                                    r = this.z * e.x - this.x * e.z,
                                    e = this.x * e.y - this.y * e.x;
                                return this.isPInst ? new c.default.Vector(this._fromRadians, this._toRadians, t, r, e) : new c.default.Vector(t, r, e)
                            }
                        }, {
                            key: "dist",
                            value: function(e) {
                                return e.copy().sub(this).mag()
                            }
                        }, {
                            key: "normalize",
                            value: function() {
                                var e = this.mag();
                                return 0 !== e && this.mult(1 / e), this
                            }
                        }, {
                            key: "limit",
                            value: function(e) {
                                var t = this.magSq();
                                return e * e < t && this.div(Math.sqrt(t)).mult(e), this
                            }
                        }, {
                            key: "setMag",
                            value: function(e) {
                                return this.normalize().mult(e)
                            }
                        }, {
                            key: "heading",
                            value: function() {
                                var e = Math.atan2(this.y, this.x);
                                return this.isPInst ? this._fromRadians(e) : e
                            }
                        }, {
                            key: "setHeading",
                            value: function(e) {
                                this.isPInst && (e = this._toRadians(e));
                                var t = this.mag();
                                return this.x = t * Math.cos(e), this.y = t * Math.sin(e), this
                            }
                        }, {
                            key: "rotate",
                            value: function(e) {
                                var e = this.heading() + e,
                                    t = (this.isPInst && (e = this._toRadians(e)), this.mag());
                                return this.x = Math.cos(e) * t, this.y = Math.sin(e) * t, this
                            }
                        }, {
                            key: "angleBetween",
                            value: function(e) {
                                var t;
                                return 0 == this.magSq() * e.magSq() ? NaN : (t = this.cross(e), e = Math.atan2(t.mag(), this.dot(e)) * Math.sign(t.z || 1), this.isPInst ? this._fromRadians(e) : e)
                            }
                        }, {
                            key: "lerp",
                            value: function(e, t, r, o) {
                                return e instanceof c.default.Vector ? this.lerp(e.x, e.y, e.z, t) : (this.x += (e - this.x) * o || 0, this.y += (t - this.y) * o || 0, this.z += (r - this.z) * o || 0, this)
                            }
                        }, {
                            key: "slerp",
                            value: function(e, t) {
                                if (0 !== t) {
                                    if (1 === t) return this.set(e);
                                    var r = this.mag(),
                                        o = e.mag();
                                    if (0 == r * o) this.mult(1 - t).add(e.x * t, e.y * t, e.z * t);
                                    else {
                                        var n = this.cross(e),
                                            s = n.mag(),
                                            i = Math.atan2(s, this.dot(e));
                                        if (0 < s) n.x /= s, n.y /= s, n.z /= s;
                                        else {
                                            if (i < .5 * Math.PI) return this.mult(1 - t).add(e.x * t, e.y * t, e.z * t), this;
                                            0 === this.z && 0 === e.z ? n.set(0, 0, 1) : 0 !== this.x ? n.set(this.y, -this.x, 0).normalize() : n.set(1, 0, 0)
                                        }
                                        s = n.cross(this), n = (e = 1 - t + t * o / r) * Math.cos(t * i), o = e * Math.sin(t * i), this.x = this.x * n + s.x * o, this.y = this.y * n + s.y * o, this.z = this.z * n + s.z * o
                                    }
                                }
                                return this
                            }
                        }, {
                            key: "reflect",
                            value: function(e) {
                                return e = c.default.Vector.normalize(e), this.sub(e.mult(2 * this.dot(e)))
                            }
                        }, {
                            key: "array",
                            value: function() {
                                return [this.x || 0, this.y || 0, this.z || 0]
                            }
                        }, {
                            key: "equals",
                            value: function(e, t, r) {
                                var o, n, e = e instanceof c.default.Vector ? (o = e.x || 0, n = e.y || 0, e.z || 0) : Array.isArray(e) ? (o = e[0] || 0, n = e[1] || 0, e[2] || 0) : (o = e || 0, n = t || 0, r || 0);
                                return this.x === o && this.y === n && this.z === e
                            }
                        }, {
                            key: "clampToZero",
                            value: function() {
                                return this.x = this._clampToZero(this.x), this.y = this._clampToZero(this.y), this.z = this._clampToZero(this.z), this
                            }
                        }, {
                            key: "_clampToZero",
                            value: function(e) {
                                return Math.abs(+(e || 0)) <= Number.EPSILON ? 0 : e
                            }
                        }]), l(n, e), u);
                        var d = c.default.Vector;
                        r.default = d
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.every": 155,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.some": 170,
                        "core-js/modules/es.math.sign": 178,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.number.epsilon": 180,
                        "core-js/modules/es.number.is-finite": 181,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.sub": 208,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    317: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (e = e("../core/main")) && e.__esModule ? e : {
                                default: e
                            },
                            s = "_lcg_random_state",
                            o = 4294967296,
                            i = 0,
                            e = (n.default.prototype._lcg = function(e) {
                                return this[e] = (1664525 * this[e] + 1013904223) % o, this[e] / o
                            }, n.default.prototype._lcgSetSeed = function(e, t) {
                                this[e] = (null == t ? Math.random() * o : t) >>> 0
                            }, n.default.prototype.randomSeed = function(e) {
                                this._lcgSetSeed(s, e), this._gaussian_previous = !1
                            }, n.default.prototype.random = function(e, t) {
                                var r, o;
                                return n.default._validateParameters("random", arguments), r = null != this[s] ? this._lcg(s) : Math.random(), void 0 === e ? r : void 0 === t ? Array.isArray(e) ? e[Math.floor(r * e.length)] : r * e : (t < e && (o = e, e = t, t = o), r * (t - e) + e)
                            }, n.default.prototype.randomGaussian = function(e) {
                                var t, r, o, n, s = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 1;
                                if (this._gaussian_previous) t = i, this._gaussian_previous = !1;
                                else {
                                    for (; 1 <= (n = (r = this.random(2) - 1) * r + (o = this.random(2) - 1) * o););
                                    t = r * (n = Math.sqrt(-2 * Math.log(n) / n)), i = o * n, this._gaussian_previous = !0
                                }
                                return t * s + (e || 0)
                            }, n.default);
                        r.default = e
                    }, {
                        "../core/main": 283
                    }],
                    318: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (l = e("../core/main")) && l.__esModule ? l : {
                                default: l
                            },
                            s = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        n.default.prototype._angleMode = s.RADIANS, n.default.prototype.acos = function(e) {
                            return this._fromRadians(Math.acos(e))
                        }, n.default.prototype.asin = function(e) {
                            return this._fromRadians(Math.asin(e))
                        }, n.default.prototype.atan = function(e) {
                            return this._fromRadians(Math.atan(e))
                        }, n.default.prototype.atan2 = function(e, t) {
                            return this._fromRadians(Math.atan2(e, t))
                        }, n.default.prototype.cos = function(e) {
                            return Math.cos(this._toRadians(e))
                        }, n.default.prototype.sin = function(e) {
                            return Math.sin(this._toRadians(e))
                        }, n.default.prototype.tan = function(e) {
                            return Math.tan(this._toRadians(e))
                        }, n.default.prototype.degrees = function(e) {
                            return e * s.RAD_TO_DEG
                        }, n.default.prototype.radians = function(e) {
                            return e * s.DEG_TO_RAD
                        }, n.default.prototype.angleMode = function(e) {
                            if (n.default._validateParameters("angleMode", arguments), void 0 === e) return this._angleMode;
                            e !== s.DEGREES && e !== s.RADIANS || e !== this._angleMode && (e === s.RADIANS ? (this._setProperty("pRotationX", this.pRotationX * s.DEG_TO_RAD), this._setProperty("pRotationY", this.pRotationY * s.DEG_TO_RAD), this._setProperty("pRotationZ", this.pRotationZ * s.DEG_TO_RAD)) : (this._setProperty("pRotationX", this.pRotationX * s.RAD_TO_DEG), this._setProperty("pRotationY", this.pRotationY * s.RAD_TO_DEG), this._setProperty("pRotationZ", this.pRotationZ * s.RAD_TO_DEG)), this._angleMode = e)
                        }, n.default.prototype._toRadians = function(e) {
                            return this._angleMode === s.DEGREES ? e * s.DEG_TO_RAD : e
                        }, n.default.prototype._toDegrees = function(e) {
                            return this._angleMode === s.RADIANS ? e * s.RAD_TO_DEG : e
                        }, n.default.prototype._fromRadians = function(e) {
                            return this._angleMode === s.DEGREES ? e * s.RAD_TO_DEG : e
                        }, n.default.prototype._fromDegrees = function(e) {
                            return this._angleMode === s.RADIANS ? e * s.DEG_TO_RAD : e
                        };
                        var l = n.default;
                        r.default = l
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    319: [function(e, t, r) {
                        e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var i = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };
                        i.default.prototype.textAlign = function(e, t) {
                            var r;
                            return i.default._validateParameters("textAlign", arguments), (r = this._renderer).textAlign.apply(r, arguments)
                        }, i.default.prototype.textLeading = function(e) {
                            var t;
                            return i.default._validateParameters("textLeading", arguments), (t = this._renderer).textLeading.apply(t, arguments)
                        }, i.default.prototype.textSize = function(e) {
                            var t;
                            return i.default._validateParameters("textSize", arguments), (t = this._renderer).textSize.apply(t, arguments)
                        }, i.default.prototype.textStyle = function(e) {
                            var t;
                            return i.default._validateParameters("textStyle", arguments), (t = this._renderer).textStyle.apply(t, arguments)
                        }, i.default.prototype.textWidth = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            if (t[0] += "", i.default._validateParameters("textWidth", t), 0 === t[0].length) return 0;
                            for (var o = t[0].replace(/\t/g, "  ").split(/\r?\n|\r|\n/g), n = [], s = 0; s < o.length; s++) n.push(this._renderer.textWidth(o[s]));
                            return Math.max.apply(Math, n)
                        }, i.default.prototype.textAscent = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return i.default._validateParameters("textAscent", t), this._renderer.textAscent()
                        }, i.default.prototype.textDescent = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return i.default._validateParameters("textDescent", t), this._renderer.textDescent()
                        }, i.default.prototype._updateTextMetrics = function() {
                            return this._renderer._updateTextMetrics()
                        }, i.default.prototype.textWrap = function(e) {
                            return i.default._validateParameters("textWrap", [e]), this._renderer.textWrap(e)
                        }, r.default = e = i.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206
                    }],
                    320: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.split"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = (u = e("../core/main")) && u.__esModule ? u : {
                                default: u
                            },
                            n = s(e("../core/constants")),
                            c = s(e("opentype.js"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function s(e) {
                            if (e && e.__esModule) return e;
                            if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                default: e
                            };
                            var t = a();
                            if (t && t.has(e)) return t.get(e);
                            var r, o, n = {},
                                s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                            for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                            return n.default = e, t && t.set(e, n), n
                        }
                        e("../core/friendly_errors/validate_params"), e("../core/friendly_errors/file_errors"), e("../core/friendly_errors/fes_core"), l.default.prototype.loadFont = function(o, n, s) {
                            l.default._validateParameters("loadFont", arguments);
                            var i = new l.default.Font(this),
                                a = this;
                            return c.load(o, function(e, t) {
                                if (e) return l.default._friendlyFileLoadError(4, o), void 0 !== s ? s(e) : void console.error(e, o);
                                i.font = t, void 0 !== n && n(i), a._decrementPreload();
                                var r = (t = (e = o.split("\\").pop().split("/").pop()).lastIndexOf(".")) < 1 ? null : e.slice(t + 1);
                                ["ttf", "otf", "woff", "woff2"].includes(r) && (r = e.slice(0, -1 !== t ? t : 0), (e = document.createElement("style")).appendChild(document.createTextNode("\n@font-face {\nfont-family: ".concat(r, ";\nsrc: url(").concat(o, ");\n}\n"))), document.head.appendChild(e))
                            }), i
                        }, l.default.prototype.text = function(e, t, r, o, n) {
                            var s;
                            return l.default._validateParameters("text", arguments), this._renderer._doFill || this._renderer._doStroke ? (s = this._renderer).text.apply(s, arguments) : this
                        }, l.default.prototype.textFont = function(e, t) {
                            if (l.default._validateParameters("textFont", arguments), arguments.length) {
                                if (e) return this._renderer._setProperty("_textFont", e), t && (this._renderer._setProperty("_textSize", t), this._renderer._leadingSet || this._renderer._setProperty("_textLeading", t * n._DEFAULT_LEADMULT)), this._renderer._applyTextProperties();
                                throw new Error("null font passed to textFont")
                            }
                            return this._renderer._textFont
                        };
                        var u = l.default;
                        r.default = u
                    }, {
                        "../core/constants": 272,
                        "../core/friendly_errors/fes_core": 274,
                        "../core/friendly_errors/file_errors": 275,
                        "../core/friendly_errors/validate_params": 278,
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.last-index-of": 167,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        "opentype.js": 257
                    }],
                    321: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.function.name"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            v = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== x(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = i();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function i() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, i = function() {
                                return e
                            }, e)
                        }

                        function x(e) {
                            return (x = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function w(e, t) {
                            var r = e.length;
                            return e[t < 0 ? t % r + r : t % r]
                        }

                        function j(e, t, r, o) {
                            var n, s, i;
                            return o ? (void 0 === j.tmpPoint1 && (j.tmpPoint1 = [], j.tmpPoint2 = []), i = j.tmpPoint2, (s = j.tmpPoint1).x = t.x - e.x, s.y = t.y - e.y, i.x = r.x - t.x, i.y = r.y - t.y, n = s.x * i.x + s.y * i.y, s = Math.sqrt(s.x * s.x + s.y * s.y), i = Math.sqrt(i.x * i.x + i.y * i.y), Math.acos(n / (s * i)) < o) : 0 == (t[0] - e[0]) * (r[1] - e[1]) - (r[0] - e[0]) * (t[1] - e[1])
                        }

                        function u(e, t, r, o, n, s, i, a, l) {
                            var c = 1 - l,
                                u = (d = Math.pow(c, 3)) * e + 3 * (h = Math.pow(c, 2)) * l * r + 3 * c * l * l * n + (f = (m = l * l) * l) * i,
                                d = d * t + 3 * h * l * o + 3 * c * l * l * s + f * a,
                                h = e + 2 * l * (r - e) + m * (n - 2 * r + e),
                                f = t + 2 * l * (o - t) + m * (s - 2 * o + t),
                                p = r + 2 * l * (n - r) + m * (i - 2 * n + r),
                                m = o + 2 * l * (s - o) + m * (a - 2 * s + o),
                                e = c * e + l * r,
                                r = c * t + l * o,
                                t = c * n + l * i,
                                o = c * s + l * a,
                                n = 90 - 180 * Math.atan2(h - p, f - m) / Math.PI;
                            return (p < h || f < m) && (n += 180), {
                                x: u,
                                y: d,
                                m: {
                                    x: h,
                                    y: f
                                },
                                n: {
                                    x: p,
                                    y: m
                                },
                                start: {
                                    x: e,
                                    y: r
                                },
                                end: {
                                    x: t,
                                    y: o
                                },
                                alpha: n
                            }
                        }

                        function d(e, t, r, o, n, s, i, a, l) {
                            return null == l ? h(e, t, r, o, n, s, i, a) : u(e, t, r, o, n, s, i, a, ((e, t, r, o, n, s, i, a, l) => {
                                if (!(l < 0 || h(e, t, r, o, n, s, i, a) < l)) {
                                    for (var c = .5, u = 1 - c, d = h(e, t, r, o, n, s, i, a, u); .01 < Math.abs(d - l);) d = h(e, t, r, o, n, s, i, a, u += (d < l ? 1 : -1) * (c /= 2));
                                    return u
                                }
                            })(e, t, r, o, n, s, i, a, l))
                        }

                        function S(g, e, t) {
                            for (var r, o, n, s, i, a = 0, l = 0, c = (g = (() => {
                                    function e(e, t, r) {
                                        var o, n;
                                        if (!e) return ["C", t.x, t.y, t.x, t.y, t.x, t.y];
                                        switch (e[0] in {
                                                T: 1,
                                                Q: 1
                                            } || (t.qx = t.qy = null), e[0]) {
                                            case "M":
                                                t.X = e[1], t.Y = e[2];
                                                break;
                                            case "A":
                                                e = ["C"].concat(E.apply(0, [t.x, t.y].concat(e.slice(1))));
                                                break;
                                            case "S":
                                                n = "C" === r || "S" === r ? (o = 2 * t.x - t.bx, 2 * t.y - t.by) : (o = t.x, t.y), e = ["C", o, n].concat(e.slice(1));
                                                break;
                                            case "T":
                                                "Q" === r || "T" === r ? (t.qx = 2 * t.x - t.qx, t.qy = 2 * t.y - t.qy) : (t.qx = t.x, t.qy = t.y), e = ["C"].concat(k(t.x, t.y, t.qx, t.qy, e[1], e[2]));
                                                break;
                                            case "Q":
                                                t.qx = e[1], t.qy = e[2], e = ["C"].concat(k(t.x, t.y, e[1], e[2], e[3], e[4]));
                                                break;
                                            case "L":
                                                e = ["C"].concat(T(t.x, t.y, e[1], e[2]));
                                                break;
                                            case "H":
                                                e = ["C"].concat(T(t.x, t.y, e[1], t.y));
                                                break;
                                            case "V":
                                                e = ["C"].concat(T(t.x, t.y, t.x, e[1]));
                                                break;
                                            case "Z":
                                                e = ["C"].concat(T(t.x, t.y, t.X, t.Y))
                                        }
                                        return e
                                    }

                                    function t(e, t) {
                                        if (7 < e[t].length) {
                                            e[t].shift();
                                            for (var r = e[t]; r.length;) a[t] = "A", i && (l[t] = "A"), e.splice(t++, 0, ["C"].concat(r.splice(0, 6)));
                                            e.splice(t, 1), d = Math.max(s.length, i && i.length || 0)
                                        }
                                    }

                                    function r(e, t, r, o, n) {
                                        e && t && "M" === e[n][0] && "M" !== t[n][0] && (t.splice(n, 0, ["M", o.x, o.y]), r.bx = 0, r.by = 0, r.x = e[n][1], r.y = e[n][2], d = Math.max(s.length, i && i.length || 0))
                                    }
                                    for (var s = b(g), i = void 0, o = {
                                            x: 0,
                                            y: 0,
                                            bx: 0,
                                            by: 0,
                                            X: 0,
                                            Y: 0,
                                            qx: null,
                                            qy: null
                                        }, n = {
                                            x: 0,
                                            y: 0,
                                            bx: 0,
                                            by: 0,
                                            X: 0,
                                            Y: 0,
                                            qx: null,
                                            qy: null
                                        }, a = [], l = [], c = "", u = "", d = Math.max(s.length, i && i.length || 0), h = 0; h < d; h++) {
                                        "C" !== (c = s[h] ? s[h][0] : c) && (a[h] = c, h) && (u = a[h - 1]), s[h] = e(s[h], o, u), "A" !== a[h] && "C" === c && (a[h] = "C"), t(s, h), i && ("C" !== (c = i[h] ? i[h][0] : c) && (l[h] = c, h) && (u = l[h - 1]), i[h] = e(i[h], n, u), "A" !== l[h] && "C" === c && (l[h] = "C"), t(i, h)), r(s, i, o, n, h), r(i, s, n, o, h);
                                        var f = s[h],
                                            p = i && i[h],
                                            m = f.length,
                                            y = i && p.length;
                                        o.x = f[m - 2], o.y = f[m - 1], o.bx = parseFloat(f[m - 4]) || o.x, o.by = parseFloat(f[m - 3]) || o.y, n.bx = i && (parseFloat(p[y - 4]) || n.x), n.by = i && (parseFloat(p[y - 3]) || n.y), n.x = i && p[y - 2], n.y = i && p[y - 1]
                                    }
                                    return i ? [s, i] : s
                                })()).length; l < c; l++) {
                                if ("M" === (n = g[l])[0]) r = +n[1], o = +n[2];
                                else {
                                    if (e < a + (s = d(r, o, n[1], n[2], n[3], n[4], n[5], n[6])) && !t) return {
                                        x: (i = d(r, o, n[1], n[2], n[3], n[4], n[5], n[6], e - a)).x,
                                        y: i.y,
                                        alpha: i.alpha
                                    };
                                    a += s, r = +n[5], o = +n[6]
                                }
                                n.shift()
                            }
                            return (i = t ? a : u(r, o, n[0], n[1], n[2], n[3], n[4], n[5], 1)).alpha ? {
                                x: i.x,
                                y: i.y,
                                alpha: i.alpha
                            } : i
                        }

                        function b(e) {
                            var t = [],
                                r = 0,
                                o = 0,
                                n = 0,
                                s = 0,
                                i = 0;
                            if (e) {
                                "M" === e[0][0] && (n = r = +e[0][1], s = o = +e[0][2], i++, t[0] = ["M", r, o]);
                                for (var a, l, c = 3 === e.length && "M" === e[0][0] && "R" === e[1][0].toUpperCase() && "Z" === e[2][0].toUpperCase(), u = i, d = e.length; u < d; u++) {
                                    if (t.push(a = []), (l = e[u])[0] !== l[0].toUpperCase()) switch (a[0] = l[0].toUpperCase(), a[0]) {
                                            case "A":
                                                a[1] = l[1], a[2] = l[2], a[3] = l[3], a[4] = l[4], a[5] = l[5], a[6] = +(l[6] + r), a[7] = +(l[7] + o);
                                                break;
                                            case "V":
                                                a[1] = +l[1] + o;
                                                break;
                                            case "H":
                                                a[1] = +l[1] + r;
                                                break;
                                            case "R":
                                                for (var h, f = 2, p = (h = [r, o].concat(l.slice(1))).length; f < p; f++) h[f] = +h[f] + r, h[++f] = +h[f] + o;
                                                t.pop(), t = t.concat(_(h, c));
                                                break;
                                            case "M":
                                                n = +l[1] + r, s = +l[2] + o;
                                                break;
                                            default:
                                                for (var m = 1, y = l.length; m < y; m++) a[m] = +l[m] + (m % 2 ? r : o)
                                        } else if ("R" === l[0]) h = [r, o].concat(l.slice(1)), t.pop(), t = t.concat(_(h, c)), a = ["R"].concat(l.slice(-2));
                                        else
                                            for (var g = 0, v = l.length; g < v; g++) a[g] = l[g];
                                    switch (a[0]) {
                                        case "Z":
                                            r = n, o = s;
                                            break;
                                        case "H":
                                            r = a[1];
                                            break;
                                        case "V":
                                            o = a[1];
                                            break;
                                        case "M":
                                            n = a[a.length - 2], s = a[a.length - 1];
                                            break;
                                        default:
                                            r = a[a.length - 2], o = a[a.length - 1]
                                    }
                                }
                            }
                            return t
                        }

                        function E(e, t, r, o, n, s, i, a, l, c) {
                            function u(e, t, r) {
                                return {
                                    x: e * Math.cos(r) - t * Math.sin(r),
                                    y: e * Math.sin(r) + t * Math.cos(r)
                                }
                            }
                            var d, h = 120 * (g = Math.PI) / 180,
                                f = g / 180 * (+n || 0),
                                p = [],
                                m = (c ? (w = c[0], d = c[1], _ = c[2], x = c[3]) : (e = (v = u(e, t, -f)).x, t = v.y, 1 < (m = (y = (e - (a = (v = u(a, l, -f)).x)) / 2) * y / (r * r) + (v = (t - (l = v.y)) / 2) * v / (o * o)) && (r *= m = Math.sqrt(m), o *= m), m = r * r, b = o * o, _ = (s = (s === i ? -1 : 1) * Math.sqrt(Math.abs((m * b - m * v * v - b * y * y) / (m * v * v + b * y * y)))) * r * v / o + (e + a) / 2, x = s * -o * y / r + (t + l) / 2, w = Math.asin(((t - x) / o).toFixed(9)), d = Math.asin(((l - x) / o).toFixed(9)), (w = e < _ ? g - w : w) < 0 && (w = 2 * g + w), (d = a < _ ? g - d : d) < 0 && (d = 2 * g + d), i && d < w && (w -= 2 * g), !i && w < d && (d -= 2 * g)), d - w),
                                y = (Math.abs(m) > h && (b = d, v = a, s = l, d = w + h * (i && w < d ? 1 : -1), p = E(a = _ + r * Math.cos(d), l = x + o * Math.sin(d), r, o, n, 0, i, v, s, [d, b, _, x])), m = d - w, Math.cos(w)),
                                g = Math.sin(w),
                                h = Math.cos(d),
                                n = Math.sin(d),
                                v = 4 / 3 * r * (i = Math.tan(m / 4)),
                                b = [e, t],
                                _ = [e + v * g, t - (s = 4 / 3 * o * i) * y],
                                x = [a + v * n, l - s * h],
                                w = [a, l];
                            if (_[0] = 2 * b[0] - _[0], _[1] = 2 * b[1] - _[1], c) return [_, x, w].concat(p);
                            for (var j = [], S = 0, T = (p = [_, x, w].concat(p).join().split(",")).length; S < T; S++) j[S] = S % 2 ? u(p[S - 1], p[S], f).y : u(p[S], p[S + 1], f).x;
                            return j
                        }

                        function _(e, t) {
                            for (var r = [], o = 0, n = e.length; o < n - 2 * !t; o += 2) {
                                var s = [{
                                    x: +e[o - 2],
                                    y: +e[o - 1]
                                }, {
                                    x: +e[o],
                                    y: +e[o + 1]
                                }, {
                                    x: +e[o + 2],
                                    y: +e[o + 3]
                                }, {
                                    x: +e[o + 4],
                                    y: +e[o + 5]
                                }];
                                t ? o ? n - 4 === o ? s[3] = {
                                    x: +e[0],
                                    y: +e[1]
                                } : n - 2 === o && (s[2] = {
                                    x: +e[0],
                                    y: +e[1]
                                }, s[3] = {
                                    x: +e[2],
                                    y: +e[3]
                                }) : s[0] = {
                                    x: +e[n - 2],
                                    y: +e[n - 1]
                                } : n - 4 === o ? s[3] = s[2] : o || (s[0] = {
                                    x: +e[o],
                                    y: +e[o + 1]
                                }), r.push(["C", (-s[0].x + 6 * s[1].x + s[2].x) / 6, (-s[0].y + 6 * s[1].y + s[2].y) / 6, (s[1].x + 6 * s[2].x - s[3].x) / 6, (s[1].y + 6 * s[2].y - s[3].y) / 6, s[2].x, s[2].y])
                            }
                            return r
                        }

                        function T(e, t, r, o) {
                            return [e, t, r, o, r, o]
                        }

                        function k(e, t, r, o, n, s) {
                            return [1 / 3 * e + 2 / 3 * r, 1 / 3 * t + 2 / 3 * o, 1 / 3 * n + 2 / 3 * r, 1 / 3 * s + 2 / 3 * o, n, s]
                        }

                        function h(e, t, r, o, n, s, i, a, l) {
                            for (var c = (l = 1 < (l = null == l ? 1 : l) ? 1 : l < 0 ? 0 : l) / 2, u = [-.1252, .1252, -.3678, .3678, -.5873, .5873, -.7699, .7699, -.9041, .9041, -.9816, .9816], d = 0, h = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], f = 0; f < 12; f++) {
                                var p = y(m = c * u[f] + c, e, r, n, i),
                                    m = y(m, t, o, s, a);
                                d += h[f] * Math.sqrt(p * p + m * m)
                            }
                            return c * d
                        }

                        function y(e, t, r, o, n) {
                            return e * (e * (-3 * t + 9 * r - 9 * o + 3 * n) + 6 * t - 12 * r + 6 * o) - 3 * t + 3 * r
                        }

                        function a(e) {
                            if (!(this instanceof a)) throw new TypeError("Cannot call a class as a function");
                            this.parent = e, this.cache = {}, this.font = void 0
                        }
                        n.default.Font = (s(a.prototype, [{
                            key: "textBounds",
                            value: function(e) {
                                var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 0,
                                    r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0,
                                    o = 3 < arguments.length ? arguments[3] : void 0,
                                    n = 4 < arguments.length ? arguments[4] : void 0,
                                    s = n && n.renderer && n.renderer._pInst || this.parent,
                                    o = ((y = s._renderer.drawingContext).textAlign || v.LEFT, y.textBaseline || v.BASELINE, o || s._renderer._textSize);
                                if (!g) {
                                    for (var i = [], a = [], l = [], c = (l[0] = [], []), u = this._scale(o), d = s._renderer.textLeading(), h = 0, f = (this.font.forEachGlyph(e, t, r, o, n, function(e, t, r, o) {
                                            var n = e.getMetrics();
                                            0 === e.index ? l[h += 1] = [] : (l[h].push(t + n.xMin * u), l[h].push(t + n.xMax * u), c.push(r + h * d + -n.yMin * u), c.push(r + h * d + -n.yMax * u))
                                        }), 0 < l[h].length && (i[h] = Math.min.apply(null, l[h]), a[h] = Math.max.apply(null, l[h])), 0), p = 0; p <= h; p++) {
                                        i[p] = Math.min.apply(null, l[p]), a[p] = Math.max.apply(null, l[p]);
                                        var m = a[p] - i[p];
                                        f < m && (f = m)
                                    }
                                    var y, g = {
                                            x: y = Math.min.apply(null, i),
                                            y: r = Math.min.apply(null, c),
                                            h: Math.max.apply(null, c) - r,
                                            w: f,
                                            advance: y - t
                                        },
                                        o = this._handleAlignment(s._renderer, e, g.x, g.y, g.w + g.advance);
                                    g.x = o.x, g.y = o.y
                                }
                                return g
                            }
                        }, {
                            key: "textToPoints",
                            value: function(e, t, r, o, i) {
                                var n, s = t,
                                    a = [],
                                    l = this.parent,
                                    c = e.split(/\r?\n|\r|\n/g);
                                o = o || this.parent._renderer._textSize;
                                for (var u, d, h = 0; h < c.length; h++) {
                                    var f = 0;
                                    t = s;
                                    for (var p = (p = c[h]).replace("\t", "  "), m = this._getGlyphs(p), y = 0; y < m.length; y++) {
                                        if (d = p, !(m[u = y].name && "space" === m[u].name || d.length === m.length && " " === d[u]))
                                            for (var g = (e => {
                                                    for (var t, r, o, n = [], s = 0; s < e.length; s++) "M" === e[s].type && (t && n.push(t), t = []), t.push((o = void 0, o = [(r = e[s]).type], "M" === r.type || "L" === r.type ? o.push(r.x, r.y) : "C" === r.type ? o.push(r.x1, r.y1, r.x2, r.y2, r.x, r.y) : "Q" === r.type && o.push(r.x1, r.y1, r.x, r.y), o));
                                                    return n.push(t), n
                                                })(m[y].getPath(t, r, o).commands), v = 0; v < g.length; v++)
                                                for (var b = ((e, t) => {
                                                        for (var t = ((e, t) => {
                                                                if ("object" !== x(e)) e = t;
                                                                else
                                                                    for (var r in t) void 0 === e[r] && (e[r] = t[r]);
                                                                return e
                                                            })(i, {
                                                                sampleFactor: .1,
                                                                simplifyThreshold: 0
                                                            }), r = S(e, 0, 1), o = r / (r * t.sampleFactor), n = [], s = 0; s < r; s += o) n.push(S(e, s));
                                                        return t.simplifyThreshold && function(e, t) {
                                                            for (var r = 1 < arguments.length && void 0 !== t ? t : 0, o = e.length - 1; 3 < e.length && 0 <= o; --o) j(w(e, o - 1), w(e, o), w(e, o + 1), r) && (e.splice(o % e.length, 1), 0)
                                                        }(n, t.simplifyThreshold), n
                                                    })(g[v]), _ = 0; _ < b.length; _++) b[_].x += f, n = this._handleAlignment(l._renderer, p, b[_].x, b[_].y), b[_].x = n.x, b[_].y = n.y, a.push(b[_]);
                                        f += m[y].advanceWidth * this._scale(o)
                                    }
                                    r += this.parent._renderer._textLeading
                                }
                                return a
                            }
                        }, {
                            key: "_getGlyphs",
                            value: function(e) {
                                return this.font.stringToGlyphs(e)
                            }
                        }, {
                            key: "_getPath",
                            value: function(e, t, r, o) {
                                var n = (o && o.renderer && o.renderer._pInst || this.parent)._renderer,
                                    t = this._handleAlignment(n, e, t, r);
                                return this.font.getPath(e, t.x, t.y, n._textSize, o)
                            }
                        }, {
                            key: "_getPathData",
                            value: function(e, t, r, o) {
                                var n = 3;
                                return "string" == typeof e && 2 < arguments.length ? e = this._getPath(e, t, r, o) : "object" === x(t) && (o = t), o && "number" == typeof o.decimals && (n = o.decimals), e.toPathData(n)
                            }
                        }, {
                            key: "_getSVG",
                            value: function(e, t, r, o) {
                                var n = 3;
                                return "string" == typeof e && 2 < arguments.length ? e = this._getPath(e, t, r, o) : "object" === x(t) && (o = t), o && ("number" == typeof o.decimals && (n = o.decimals), "number" == typeof o.strokeWidth && (e.strokeWidth = o.strokeWidth), void 0 !== o.fill && (e.fill = o.fill), void 0 !== o.stroke) && (e.stroke = o.stroke), e.toSVG(n)
                            }
                        }, {
                            key: "_renderPath",
                            value: function(e, t, r, o) {
                                var n = o && o.renderer || this.parent._renderer,
                                    s = n.drawingContext,
                                    e = ("object" === x(e) && e.commands ? e : this._getPath(e, t, r, o)).commands,
                                    i = (n._clipping || s.beginPath(), !0),
                                    t = !1,
                                    r = void 0;
                                try {
                                    for (var a, l = e[Symbol.iterator](); !(i = (a = l.next()).done); i = !0) {
                                        var c = a.value;
                                        "M" === c.type ? s.moveTo(c.x, c.y) : "L" === c.type ? s.lineTo(c.x, c.y) : "C" === c.type ? s.bezierCurveTo(c.x1, c.y1, c.x2, c.y2, c.x, c.y) : "Q" === c.type ? s.quadraticCurveTo(c.x1, c.y1, c.x, c.y) : "Z" === c.type && s.closePath()
                                    }
                                } catch (e) {
                                    t = !0, r = e
                                } finally {
                                    try {
                                        i || null == l.return || l.return()
                                    } finally {
                                        if (t) throw r
                                    }
                                }
                                return n._doStroke && n._strokeSet && !n._clipping && s.stroke(), n._doFill && !n._clipping && (n._fillSet || n._setFill(v._DEFAULT_TEXT_FILL), s.fill()), this
                            }
                        }, {
                            key: "_textWidth",
                            value: function(e, t) {
                                return this.font.getAdvanceWidth(e, t)
                            }
                        }, {
                            key: "_textAscent",
                            value: function(e) {
                                return this.font.ascender * this._scale(e)
                            }
                        }, {
                            key: "_textDescent",
                            value: function(e) {
                                return -this.font.descender * this._scale(e)
                            }
                        }, {
                            key: "_scale",
                            value: function(e) {
                                return 1 / this.font.unitsPerEm * (e || this.parent._renderer._textSize)
                            }
                        }, {
                            key: "_handleAlignment",
                            value: function(e, t, r, o, n) {
                                var s = e._textSize;
                                switch (void 0 === n && (n = this._textWidth(t, s)), e._textAlign) {
                                    case v.CENTER:
                                        r -= n / 2;
                                        break;
                                    case v.RIGHT:
                                        r -= n
                                }
                                switch (e._textBaseline) {
                                    case v.TOP:
                                        o += this._textAscent(s);
                                        break;
                                    case v.CENTER:
                                        o += this._textAscent(s) / 2;
                                        break;
                                    case v.BOTTOM:
                                        o -= this._textDescent(s)
                                }
                                return {
                                    x: r,
                                    y: o
                                }
                            }
                        }]), a), e = n.default, r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.number.to-fixed": 182,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    322: [function(e, t, r) {
                        e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.array-buffer.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.array-buffer.constructor"), e("core-js/modules/es.object.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype.append = function(e, t) {
                            return e.push(t), e
                        }, e.default.prototype.arrayCopy = function(e, t, r, o, n) {
                            var s, i;
                            e = void 0 !== n ? (i = Math.min(n, e.length), s = o, e.slice(t, i + t)) : (i = void 0 !== r ? (i = r, Math.min(i, e.length)) : e.length, r = t, e.slice(s = 0, i)), Array.prototype.splice.apply(r, [s, i].concat(e))
                        }, e.default.prototype.concat = function(e, t) {
                            return e.concat(t)
                        }, e.default.prototype.reverse = function(e) {
                            return e.reverse()
                        }, e.default.prototype.shorten = function(e) {
                            return e.pop(), e
                        }, e.default.prototype.shuffle = function(e, t) {
                            for (var r, o, n = ArrayBuffer && ArrayBuffer.isView && ArrayBuffer.isView(e), s = (e = t || n ? e : e.slice()).length; 1 < s;) r = this.random(0, 1) * s | 0, o = e[--s], e[s] = e[r], e[r] = o;
                            return e
                        }, e.default.prototype.sort = function(e, t) {
                            var r = t ? e.slice(0, Math.min(t, e.length)) : e,
                                t = t ? e.slice(Math.min(t, e.length)) : [];
                            return (r = "string" == typeof r[0] ? r.sort() : r.sort(function(e, t) {
                                return e - t
                            })).concat(t)
                        }, e.default.prototype.splice = function(e, t, r) {
                            return Array.prototype.splice.apply(e, [r, 0].concat(t)), e
                        }, e.default.prototype.subset = function(e, t, r) {
                            return void 0 !== r ? e.slice(t, t + r) : e.slice(t, e.length)
                        }, r.default = e = e.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array-buffer.constructor": 152,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.object.to-string": 190
                    }],
                    323: [function(e, t, r) {
                        e("core-js/modules/es.array.map"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.repeat"), e("core-js/modules/es.array.map"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.repeat"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };
                        o.default.prototype.float = function(e) {
                            return e instanceof Array ? e.map(parseFloat) : parseFloat(e)
                        }, o.default.prototype.int = function(e) {
                            var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 10;
                            return e === 1 / 0 || "Infinity" === e ? 1 / 0 : e === -1 / 0 || "-Infinity" === e ? -1 / 0 : "string" == typeof e ? parseInt(e, t) : "number" == typeof e ? 0 | e : "boolean" == typeof e ? e ? 1 : 0 : e instanceof Array ? e.map(function(e) {
                                return o.default.prototype.int(e, t)
                            }) : void 0
                        }, o.default.prototype.str = function(e) {
                            return e instanceof Array ? e.map(o.default.prototype.str) : String(e)
                        }, o.default.prototype.boolean = function(e) {
                            return "number" == typeof e ? 0 !== e : "string" == typeof e ? "true" === e.toLowerCase() : "boolean" == typeof e ? e : e instanceof Array ? e.map(o.default.prototype.boolean) : void 0
                        }, o.default.prototype.byte = function(e) {
                            return "number" == typeof(e = o.default.prototype.int(e, 10)) ? (e + 128) % 256 - 128 : e instanceof Array ? e.map(o.default.prototype.byte) : void 0
                        }, o.default.prototype.char = function(e) {
                            return "number" != typeof e || isNaN(e) ? e instanceof Array ? e.map(o.default.prototype.char) : "string" == typeof e ? o.default.prototype.char(parseInt(e, 10)) : void 0 : String.fromCharCode(e)
                        }, o.default.prototype.unchar = function(e) {
                            return "string" == typeof e && 1 === e.length ? e.charCodeAt(0) : e instanceof Array ? e.map(o.default.prototype.unchar) : void 0
                        }, o.default.prototype.hex = function(e, t) {
                            if (t = null == t ? 8 : t, e instanceof Array) return e.map(function(e) {
                                return o.default.prototype.hex(e, t)
                            });
                            if (e === 1 / 0 || e === -1 / 0) return (e === 1 / 0 ? "F" : "0").repeat(t);
                            if ("number" == typeof e) {
                                e < 0 && (e = 4294967295 + e + 1);
                                for (var r = Number(e).toString(16).toUpperCase(); r.length < t;) r = "0".concat(r);
                                return r.length >= t ? r.substring(r.length - t, r.length) : r
                            }
                        }, o.default.prototype.unhex = function(e) {
                            return e instanceof Array ? e.map(o.default.prototype.unhex) : parseInt("0x".concat(e), 16)
                        }, r.default = e = o.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.repeat": 203
                    }],
                    324: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.pad-start"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.constructor"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.pad-start"), e("core-js/modules/es.string.replace"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var s = (c = e("../core/main")) && c.__esModule ? c : {
                            default: c
                        };

                        function a(e, t) {
                            return (e => {
                                if (Array.isArray(e)) return e
                            })(e) || ((e, t) => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
                                    var r = [],
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = e[Symbol.iterator](); !(o = (i = a.next()).done) && (r.push(i.value), !t || r.length !== t); o = !0);
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    return r
                                }
                            })(e, t) || (() => {
                                throw new TypeError("Invalid attempt to destructure non-iterable instance")
                            })()
                        }

                        function o(e, t, r) {
                            var o, n = e < 0,
                                s = (i = a((e = Math.abs(e)).toString().split("."), 2))[0],
                                i = i[1];
                            return void 0 === r ? (s = s.padStart(t, "0"), o = i ? s + "." + i : s, n ? "-" + o : o) : (s = (o = a(e.toFixed(r).toString().split("."), 2))[0], i = o[1], s = s.padStart(t, "0"), e = void 0 === i ? s : s + "." + i, n ? "-" + e : e)
                        }

                        function n(e, t) {
                            var r = (e = e.toString()).indexOf("."),
                                o = -1 !== r ? e.substring(r) : "",
                                e = (e = -1 !== r ? e.substring(0, r) : e).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                            if (0 === t) o = "";
                            else if (void 0 !== t)
                                if (t > o.length)
                                    for (var n = t - (o += -1 === r ? "." : "").length + 1, s = 0; s < n; s++) o += "0";
                                else o = o.substring(0, t + 1);
                            return e + o
                        }

                        function i(e) {
                            return 0 < parseFloat(e) ? "+".concat(e.toString()) : e.toString()
                        }

                        function l(e) {
                            return 0 <= parseFloat(e) ? " ".concat(e.toString()) : e.toString()
                        }
                        e("../core/friendly_errors/validate_params"), e("../core/friendly_errors/file_errors"), e("../core/friendly_errors/fes_core"), s.default.prototype.join = function(e, t) {
                            return s.default._validateParameters("join", arguments), e.join(t)
                        }, s.default.prototype.match = function(e, t) {
                            return s.default._validateParameters("match", arguments), e.match(t)
                        }, s.default.prototype.matchAll = function(e, t) {
                            s.default._validateParameters("matchAll", arguments);
                            for (var r = new RegExp(t, "g"), o = r.exec(e), n = []; null !== o;) n.push(o), o = r.exec(e);
                            return n
                        }, s.default.prototype.nf = function(e, t, r) {
                            return s.default._validateParameters("nf", arguments), e instanceof Array ? e.map(function(e) {
                                return o(e, t, r)
                            }) : "[object Arguments]" === Object.prototype.toString.call(e) ? 3 === e.length ? this.nf(e[0], e[1], e[2]) : 2 === e.length ? this.nf(e[0], e[1]) : this.nf(e[0]) : o(e, t, r)
                        }, s.default.prototype.nfc = function(e, t) {
                            return s.default._validateParameters("nfc", arguments), e instanceof Array ? e.map(function(e) {
                                return n(e, t)
                            }) : n(e, t)
                        }, s.default.prototype.nfp = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            s.default._validateParameters("nfp", t);
                            var o = s.default.prototype.nf.apply(this, t);
                            return o instanceof Array ? o.map(i) : i(o)
                        }, s.default.prototype.nfs = function() {
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            s.default._validateParameters("nfs", t);
                            var o = s.default.prototype.nf.apply(this, t);
                            return o instanceof Array ? o.map(l) : l(o)
                        }, s.default.prototype.split = function(e, t) {
                            return s.default._validateParameters("split", arguments), e.split(t)
                        }, s.default.prototype.splitTokens = function(e, t) {
                            var r, o;
                            return s.default._validateParameters("splitTokens", arguments), o = void 0 !== t ? (o = /\]/g.exec(t), (r = /\[/g.exec(t)) && o ? (t = t.slice(0, o.index) + t.slice(o.index + 1), r = /\[/g.exec(t), t = t.slice(0, r.index) + t.slice(r.index + 1), new RegExp("[\\[".concat(t, "\\]]"), "g")) : o ? (t = t.slice(0, o.index) + t.slice(o.index + 1), new RegExp("[".concat(t, "\\]]"), "g")) : r ? (t = t.slice(0, r.index) + t.slice(r.index + 1), new RegExp("[".concat(t, "\\[]"), "g")) : new RegExp("[".concat(t, "]"), "g")) : /\s/g, e.split(o).filter(function(e) {
                                return e
                            })
                        }, s.default.prototype.trim = function(e) {
                            return s.default._validateParameters("trim", arguments), e instanceof Array ? e.map(this.trim) : e.trim()
                        };
                        var c = s.default;
                        r.default = c
                    }, {
                        "../core/friendly_errors/fes_core": 274,
                        "../core/friendly_errors/file_errors": 275,
                        "../core/friendly_errors/validate_params": 278,
                        "../core/main": 283,
                        "core-js/modules/es.array.filter": 157,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.number.to-fixed": 182,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.constructor": 194,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.pad-start": 202,
                        "core-js/modules/es.string.replace": 204,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    325: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.prototype.day = function() {
                            return (new Date).getDate()
                        }, e.default.prototype.hour = function() {
                            return (new Date).getHours()
                        }, e.default.prototype.minute = function() {
                            return (new Date).getMinutes()
                        }, e.default.prototype.millis = function() {
                            return -1 === this._millisStart ? 0 : window.performance.now() - this._millisStart
                        }, e.default.prototype.month = function() {
                            return (new Date).getMonth() + 1
                        }, e.default.prototype.second = function() {
                            return (new Date).getSeconds()
                        }, e.default.prototype.year = function() {
                            return (new Date).getFullYear()
                        }, r.default = e = e.default
                    }, {
                        "../core/main": 283
                    }],
                    326: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.number.to-fixed"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var j = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            x = (e("./p5.Geometry"), (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function l(e, t, r, o, n, s, i) {
                            e = e <= 0 ? 1 : e, t = t < 0 ? 0 : t, r = r <= 0 ? e : r, o = o < 3 ? 3 : o;
                            for (var a, l, c = (s = void 0 === s || s) ? -2 : 0, u = (n = n < 1 ? 1 : n) + ((i = void 0 === i ? 0 !== t : i) ? 2 : 0), d = Math.atan2(e - t, r), h = Math.sin(d), f = Math.cos(d), p = c; p <= u; ++p) {
                                var m = p / n,
                                    y = r * m,
                                    g = void 0,
                                    g = p < 0 ? (m = y = 0, e) : n < p ? (y = r, m = 1, t) : e + (t - e) * m;
                                for (-2 !== p && p !== n + 2 || (g = 0), y -= r / 2, a = 0; a < o; ++a) {
                                    var v = a / (o - 1),
                                        b = 2 * Math.PI * v,
                                        _ = Math.sin(b),
                                        b = Math.cos(b),
                                        _ = (this.vertices.push(new j.default.Vector(_ * g, y, b * g)), p < 0 ? new j.default.Vector(0, -1, 0) : n < p && t ? new j.default.Vector(0, 1, 0) : new j.default.Vector(_ * f, h, b * f));
                                    this.vertexNormals.push(_), this.uvs.push(v, m)
                                }
                            }
                            var x = 0;
                            if (s) {
                                for (l = 0; l < o; ++l) this.faces.push([x + l, x + o + (l + 1) % o, x + o + l]);
                                x += 2 * o
                            }
                            for (p = 0; p < n; ++p) {
                                for (a = 0; a < o; ++a) {
                                    var w = (a + 1) % o;
                                    this.faces.push([x + a, x + w, x + o + w]), this.faces.push([x + a, x + o + w, x + o + a])
                                }
                                x += o
                            }
                            if (i)
                                for (x += o, a = 0; a < o; ++a) this.faces.push([x + a, x + (a + 1) % o, x + o])
                        }
                        j.default.prototype.beginGeometry = function() {
                            return this._renderer.beginGeometry()
                        }, j.default.prototype.endGeometry = function() {
                            return this._renderer.endGeometry()
                        }, j.default.prototype.buildGeometry = function(e) {
                            return this._renderer.buildGeometry(e)
                        }, j.default.prototype.freeGeometry = function(e) {
                            this._renderer._freeBuffers(e.gid)
                        }, j.default.prototype.plane = function() {
                            var e, t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 50,
                                r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
                                o = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 1,
                                n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : 1,
                                s = (this._assert3d("plane"), j.default._validateParameters("plane", arguments), "plane|".concat(o, "|").concat(n));
                            return this._renderer.geometryInHash(s) || ((e = new j.default.Geometry(o, n, function() {
                                for (var e, t, r = 0; r <= this.detailY; r++)
                                    for (var o = r / this.detailY, n = 0; n <= this.detailX; n++) e = n / this.detailX, t = new j.default.Vector(e - .5, o - .5, 0), this.vertices.push(t), this.uvs.push(e, o)
                            })).computeFaces().computeNormals(), o <= 1 && n <= 1 ? e._makeTriangleEdges()._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw stroke on plane objects with more than 1 detailX or 1 detailY"), this._renderer.createBuffers(s, e)), this._renderer.drawBuffersScaled(s, t, r, 1), this
                        }, j.default.prototype.box = function(e, t, r, o, n) {
                            this._assert3d("box"), j.default._validateParameters("box", arguments), void 0 === e && (e = 50), void 0 === t && (t = e), void 0 === r && (r = t);
                            var s, i = this._renderer.attributes && this._renderer.attributes.perPixelLighting,
                                i = (void 0 === n && (n = i ? 1 : 4), "box|".concat(o = void 0 === o ? i ? 1 : 4 : o, "|").concat(n));
                            return this._renderer.geometryInHash(i) || ((s = new j.default.Geometry(o, n, function() {
                                var n = this;
                                this.edges = [
                                    [0, 1],
                                    [1, 3],
                                    [3, 2],
                                    [6, 7],
                                    [8, 9],
                                    [9, 11],
                                    [14, 15],
                                    [16, 17],
                                    [17, 19],
                                    [18, 19],
                                    [20, 21],
                                    [22, 23]
                                ], [
                                    [0, 4, 2, 6],
                                    [1, 3, 5, 7],
                                    [0, 1, 4, 5],
                                    [2, 6, 3, 7],
                                    [0, 2, 1, 3],
                                    [4, 5, 6, 7]
                                ].forEach(function(e, t) {
                                    for (var t = 4 * t, r = 0; r < 4; r++) {
                                        var o = e[r],
                                            o = new j.default.Vector((2 * (1 & o) - 1) / 2, ((2 & o) - 1) / 2, ((4 & o) / 2 - 1) / 2);
                                        n.vertices.push(o), n.uvs.push(1 & r, (2 & r) / 2)
                                    }
                                    n.faces.push([t, 1 + t, 2 + t]), n.faces.push([2 + t, 1 + t, 3 + t])
                                })
                            })).computeNormals(), o <= 4 && n <= 4 ? s._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw stroke on box objects with more than 4 detailX or 4 detailY"), this._renderer.createBuffers(i, s)), this._renderer.drawBuffersScaled(i, e, t, r), this
                        }, j.default.prototype.sphere = function() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 50,
                                t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 24,
                                r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 16;
                            return this._assert3d("sphere"), j.default._validateParameters("sphere", arguments), this.ellipsoid(e, e, e, t, r), this
                        }, j.default.prototype.cylinder = function() {
                            var e, t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 50,
                                r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
                                o = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 24,
                                n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : 1,
                                s = !(4 < arguments.length && void 0 !== arguments[4]) || arguments[4],
                                i = !(5 < arguments.length && void 0 !== arguments[5]) || arguments[5],
                                a = (this._assert3d("cylinder"), j.default._validateParameters("cylinder", arguments), "cylinder|".concat(o, "|").concat(n, "|").concat(s, "|").concat(i));
                            return this._renderer.geometryInHash(a) || (e = new j.default.Geometry(o, n), l.call(e, 1, 1, 1, o, n, s, i), o <= 24 && n <= 16 ? e._makeTriangleEdges()._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw stroke on cylinder objects with more than 24 detailX or 16 detailY"), this._renderer.createBuffers(a, e)), this._renderer.drawBuffersScaled(a, t, r, t), this
                        }, j.default.prototype.cone = function() {
                            var e, t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 50,
                                r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
                                o = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 24,
                                n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : 1,
                                s = !(4 < arguments.length && void 0 !== arguments[4]) || arguments[4],
                                i = (this._assert3d("cone"), j.default._validateParameters("cone", arguments), "cone|".concat(o, "|").concat(n, "|").concat(s));
                            return this._renderer.geometryInHash(i) || (e = new j.default.Geometry(o, n), l.call(e, 1, 0, 1, o, n, s, !1), o <= 24 && n <= 16 ? e._makeTriangleEdges()._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw stroke on cone objects with more than 24 detailX or 16 detailY"), this._renderer.createBuffers(i, e)), this._renderer.drawBuffersScaled(i, t, r, t), this
                        }, j.default.prototype.ellipsoid = function() {
                            var e, t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 50,
                                r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : t,
                                o = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : t,
                                n = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : 24,
                                s = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 16,
                                i = (this._assert3d("ellipsoid"), j.default._validateParameters("ellipsoid", arguments), "ellipsoid|".concat(n, "|").concat(s));
                            return this._renderer.geometryInHash(i) || ((e = new j.default.Geometry(n, s, function() {
                                for (var e = 0; e <= this.detailY; e++)
                                    for (var t = e / this.detailY, r = Math.PI * t - Math.PI / 2, o = Math.cos(r), n = Math.sin(r), s = 0; s <= this.detailX; s++) {
                                        var i = s / this.detailX,
                                            a = 2 * Math.PI * i,
                                            l = Math.cos(a),
                                            a = Math.sin(a),
                                            a = new j.default.Vector(o * a, n, o * l);
                                        this.vertices.push(a), this.vertexNormals.push(a), this.uvs.push(i, t)
                                    }
                            })).computeFaces(), n <= 24 && s <= 24 ? e._makeTriangleEdges()._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw stroke on ellipsoids with more than 24 detailX or 24 detailY"), this._renderer.createBuffers(i, e)), this._renderer.drawBuffersScaled(i, t, r, o), this
                        }, j.default.prototype.torus = function(e, t, r, o) {
                            if (this._assert3d("torus"), j.default._validateParameters("torus", arguments), void 0 === e) e = 50;
                            else if (!e) return;
                            if (void 0 === t) t = 10;
                            else if (!t) return;
                            void 0 === r && (r = 24), void 0 === o && (o = 16);
                            var n, d = (t / e).toPrecision(4),
                                t = "torus|".concat(d, "|").concat(r, "|").concat(o);
                            return this._renderer.geometryInHash(t) || ((n = new j.default.Geometry(r, o, function() {
                                for (var e = 0; e <= this.detailY; e++)
                                    for (var t = e / this.detailY, r = 2 * Math.PI * t, o = Math.cos(r), n = Math.sin(r), s = 1 + d * o, i = 0; i <= this.detailX; i++) {
                                        var a = i / this.detailX,
                                            l = 2 * Math.PI * a,
                                            c = Math.cos(l),
                                            l = Math.sin(l),
                                            u = new j.default.Vector(s * c, s * l, d * n),
                                            c = new j.default.Vector(o * c, o * l, n);
                                        this.vertices.push(u), this.vertexNormals.push(c), this.uvs.push(a, t)
                                    }
                            })).computeFaces(), r <= 24 && o <= 16 ? n._makeTriangleEdges()._edgesToVertices() : this._renderer._doStroke && console.log("Cannot draw strokes on torus object with more than 24 detailX or 16 detailY"), this._renderer.createBuffers(t, n)), this._renderer.drawBuffersScaled(t, e, e, e), this
                        }, j.default.RendererGL.prototype.point = function(e, t) {
                            var r = [];
                            return r.push(new j.default.Vector(e, t, 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : 0)), this._drawPoints(r, this.immediateMode.buffers.point), this
                        }, j.default.RendererGL.prototype.triangle = function(e) {
                            var t = e[0],
                                r = e[1],
                                o = e[2],
                                n = e[3],
                                s = e[4],
                                e = e[5],
                                i = (this.geometryInHash("tri") || ((i = new j.default.Geometry(1, 1, function() {
                                    var e = [];
                                    e.push(new j.default.Vector(0, 0, 0)), e.push(new j.default.Vector(1, 0, 0)), e.push(new j.default.Vector(0, 1, 0)), this.edges = [
                                        [0, 1],
                                        [1, 2],
                                        [2, 0]
                                    ], this.vertices = e, this.faces = [
                                        [0, 1, 2]
                                    ], this.uvs = [0, 0, 1, 0, 1, 1]
                                }))._edgesToVertices(), i.computeNormals(), this.createBuffers("tri", i)), this.uModelMatrix.copy());
                            try {
                                var a = Math.sign(t * n - o * r + o * e - s * n + s * r - t * e),
                                    l = new j.default.Matrix([o - t, n - r, 0, 0, s - t, e - r, 0, 0, 0, 0, a, 0, t, r, 0, 1]).mult(this.uModelMatrix);
                                this.uModelMatrix = l, this.drawBuffers("tri")
                            } finally {
                                this.uModelMatrix = i
                            }
                            return this
                        }, j.default.RendererGL.prototype.ellipse = function(e) {
                            this.arc(e[0], e[1], e[2], e[3], 0, x.TWO_PI, x.OPEN, e[4])
                        }, j.default.RendererGL.prototype.arc = function() {
                            var e, t = arguments.length <= 0 ? void 0 : arguments[0],
                                r = arguments.length <= 1 ? void 0 : arguments[1],
                                o = arguments.length <= 2 ? void 0 : arguments[2],
                                n = arguments.length <= 3 ? void 0 : arguments[3],
                                s = arguments.length <= 4 ? void 0 : arguments[4],
                                i = arguments.length <= 5 ? void 0 : arguments[5],
                                a = arguments.length <= 6 ? void 0 : arguments[6],
                                l = (arguments.length <= 7 ? void 0 : arguments[7]) || 25,
                                c = (Math.abs(i - s) >= x.TWO_PI ? "".concat(u = "ellipse", "|") : "".concat(u = "arc", "|").concat(s, "|").concat(i, "|").concat(a, "|")).concat(l, "|"),
                                u = (this.geometryInHash(c) || ((e = new j.default.Geometry(l, 1, function() {
                                    if (s.toFixed(10) !== i.toFixed(10)) {
                                        a !== x.PIE && void 0 !== a || (this.vertices.push(new j.default.Vector(.5, .5, 0)), this.uvs.push([.5, .5]));
                                        for (var e = 0; e <= l; e++) {
                                            var t = e / l * (i - s) + s,
                                                r = .5 + Math.cos(t) / 2,
                                                t = .5 + Math.sin(t) / 2;
                                            this.vertices.push(new j.default.Vector(r, t, 0)), this.uvs.push([r, t]), e < l - 1 && (this.faces.push([0, e + 1, e + 2]), this.edges.push([e + 1, e + 2]))
                                        }
                                        switch (a) {
                                            case x.PIE:
                                                this.faces.push([0, this.vertices.length - 2, this.vertices.length - 1]), this.edges.push([0, 1]), this.edges.push([this.vertices.length - 2, this.vertices.length - 1]), this.edges.push([0, this.vertices.length - 1]);
                                                break;
                                            case x.CHORD:
                                                this.edges.push([0, 1]), this.edges.push([0, this.vertices.length - 1]);
                                                break;
                                            case x.OPEN:
                                                this.edges.push([0, 1]);
                                                break;
                                            default:
                                                this.faces.push([0, this.vertices.length - 2, this.vertices.length - 1]), this.edges.push([this.vertices.length - 2, this.vertices.length - 1])
                                        }
                                    }
                                })).computeNormals(), l <= 50 ? e._edgesToVertices(e) : this._doStroke && console.log("Cannot apply a stroke to an ".concat(u, " with more than 50 detail")), this.createBuffers(c, e)), this.uModelMatrix.copy());
                            try {
                                this.uModelMatrix.translate([t, r, 0]), this.uModelMatrix.scale(o, n, 1), this.drawBuffers(c)
                            } finally {
                                this.uModelMatrix = u
                            }
                            return this
                        }, j.default.RendererGL.prototype.rect = function(e) {
                            var t = e[0],
                                r = e[1],
                                o = e[2],
                                n = e[3];
                            if (void 0 === e[4]) {
                                var s = this._pInst._glAttributes.perPixelLighting,
                                    i = e[4] || (s ? 1 : 24),
                                    a = e[5] || (s ? 1 : 16),
                                    s = "rect|".concat(i, "|").concat(a),
                                    l = (this.geometryInHash(s) || ((l = new j.default.Geometry(i, a, function() {
                                        for (var e = 0; e <= this.detailY; e++)
                                            for (var t = e / this.detailY, r = 0; r <= this.detailX; r++) {
                                                var o = r / this.detailX,
                                                    n = new j.default.Vector(o, t, 0);
                                                this.vertices.push(n), this.uvs.push(o, t)
                                            }
                                        0 < i && 0 < a && (this.edges = [
                                            [0, i],
                                            [i, (i + 1) * (a + 1) - 1],
                                            [(i + 1) * (a + 1) - 1, (i + 1) * a],
                                            [(i + 1) * a, 0]
                                        ])
                                    })).computeFaces().computeNormals()._edgesToVertices(), this.createBuffers(s, l)), this.uModelMatrix.copy());
                                try {
                                    this.uModelMatrix.translate([t, r, 0]), this.uModelMatrix.scale(o, n, 1), this.drawBuffers(s)
                                } finally {
                                    this.uModelMatrix = l
                                }
                            } else {
                                var s = e[4],
                                    l = void 0 === e[5] ? s : e[5],
                                    c = void 0 === e[6] ? l : e[6],
                                    e = void 0 === e[7] ? c : e[7],
                                    u = o,
                                    d = n;
                                (u += t) < t && (p = t, t = u, u = p), (d += r) < r && (p = r, r = d, d = p);
                                (p = Math.min((u - t) / 2, (d - r) / 2)) < s && (s = p), p < l && (l = p), p < c && (c = p), p < e && (e = p);
                                var h = t,
                                    f = r,
                                    p = u,
                                    t = d,
                                    m = (this.beginShape(), 0 !== l ? (this.vertex(p - l, f), this.quadraticVertex(p, f, p, f + l)) : this.vertex(p, f), 0 !== c ? (this.vertex(p, t - c), this.quadraticVertex(p, t, p - c, t)) : this.vertex(p, t), 0 !== e ? (this.vertex(h + e, t), this.quadraticVertex(h, t, h, t - e)) : this.vertex(h, t), 0 !== s ? (this.vertex(h, f + s), this.quadraticVertex(h, f, h + s, f)) : this.vertex(h, f), !(this.immediateMode.geometry.uvs.length = 0)),
                                    r = !1,
                                    u = void 0;
                                try {
                                    for (var y, g = this.immediateMode.geometry.vertices[Symbol.iterator](); !(m = (y = g.next()).done); m = !0) {
                                        var v = y.value,
                                            b = (v.x - h) / o,
                                            _ = (v.y - f) / n;
                                        this.immediateMode.geometry.uvs.push(b, _)
                                    }
                                } catch (e) {
                                    r = !0, u = e
                                } finally {
                                    try {
                                        m || null == g.return || g.return()
                                    } finally {
                                        if (r) throw u
                                    }
                                }
                                this.endShape(x.CLOSE)
                            }
                            return this
                        }, j.default.RendererGL.prototype.quad = function(i, a, l, c, u, d, h, f, p, m, y, g) {
                            var e = 12 < arguments.length && void 0 !== arguments[12] ? arguments[12] : 2,
                                t = 13 < arguments.length && void 0 !== arguments[13] ? arguments[13] : 2,
                                r = "quad|".concat(i, "|").concat(a, "|").concat(l, "|").concat(c, "|").concat(u, "|").concat(d, "|").concat(h, "|").concat(f, "|").concat(p, "|").concat(m, "|").concat(y, "|").concat(g, "|").concat(e, "|").concat(t);
                            if (!this.geometryInHash(r)) {
                                var o = new j.default.Geometry(e, t, function() {
                                    for (var e = 1 / (this.detailX - 1), t = 1 / (this.detailY - 1), r = 0; r < this.detailY; r++)
                                        for (var o = 0; o < this.detailX; o++) {
                                            var n = o * e,
                                                s = r * t;
                                            this.vertices.push(new j.default.Vector((1 - n) * ((1 - s) * i + s * m) + n * ((1 - s) * c + s * h), (1 - n) * ((1 - s) * a + s * y) + n * ((1 - s) * u + s * f), (1 - n) * ((1 - s) * l + s * g) + n * ((1 - s) * d + s * p))), this.uvs.push([n, s])
                                        }
                                });
                                o.faces = [];
                                for (var n = 0; n < t - 1; n++)
                                    for (var s = 0; s < e - 1; s++) {
                                        var v = s + n * e,
                                            b = s + 1 + (n + 1) * e,
                                            _ = s + (n + 1) * e;
                                        o.faces.push([v, s + 1 + n * e, b]), o.faces.push([v, b, _])
                                    }
                                o.computeNormals();
                                for (var x = [o.edges.length = 0, 2, 3, 1], w = 0; w < x.length; w++) o.edges.push([x[w], x[(w + 1) % x.length]]);
                                o._edgesToVertices(), this.createBuffers(r, o)
                            }
                            return this.drawBuffers(r), this
                        }, j.default.RendererGL.prototype.bezier = function(e, t, r, o, n, s, i, a, l, c, u, d) {
                            8 === arguments.length && (u = a, c = i, a = s, i = n, n = o, o = r, r = s = l = d = 0);
                            var h = this._pInst._bezierDetail || 20;
                            this.beginShape();
                            for (var f = 0; f <= h; f++) {
                                var p = Math.pow(1 - f / h, 3),
                                    m = f / h * 3 * Math.pow(1 - f / h, 2),
                                    y = 3 * Math.pow(f / h, 2) * (1 - f / h),
                                    g = Math.pow(f / h, 3);
                                this.vertex(e * p + o * m + i * y + c * g, t * p + n * m + a * y + u * g, r * p + s * m + l * y + d * g)
                            }
                            return this.endShape(), this
                        }, j.default.RendererGL.prototype.curve = function(e, t, r, o, n, s, i, a, l, c, u, d) {
                            8 === arguments.length && (c = i, u = a, i = n, a = o, n = o = r, r = s = l = d = 0);
                            var h = this._pInst._curveDetail;
                            this.beginShape();
                            for (var f = 0; f <= h; f++) {
                                var p = .5 * Math.pow(f / h, 3),
                                    m = .5 * Math.pow(f / h, 2),
                                    y = f / h * .5;
                                this.vertex(p * (3 * o - e - 3 * i + c) + m * (2 * e - 5 * o + 4 * i - c) + y * (-e + i) + 2 * o * .5, p * (3 * n - t - 3 * a + u) + m * (2 * t - 5 * n + 4 * a - u) + y * (-t + a) + 2 * n * .5, p * (3 * s - r - 3 * l + d) + m * (2 * r - 5 * s + 4 * l - d) + y * (-r + l) + 2 * s * .5)
                            }
                            return this.endShape(), this
                        }, j.default.RendererGL.prototype.line = function() {
                            return 6 === arguments.length ? (this.beginShape(x.LINES), this.vertex(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 2 ? void 0 : arguments[2]), this.vertex(arguments.length <= 3 ? void 0 : arguments[3], arguments.length <= 4 ? void 0 : arguments[4], arguments.length <= 5 ? void 0 : arguments[5]), this.endShape()) : 4 === arguments.length && (this.beginShape(x.LINES), this.vertex(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], 0), this.vertex(arguments.length <= 2 ? void 0 : arguments[2], arguments.length <= 3 ? void 0 : arguments[3], 0), this.endShape()), this
                        }, j.default.RendererGL.prototype.bezierVertex = function() {
                            if (0 === this.immediateMode._bezierVertex.length) throw Error("vertex() must be used once before calling bezierVertex()");
                            var e, t, r, o, n, s, i = [],
                                a = [],
                                l = arguments.length;
                            if (0 === this._lookUpTableBezier.length || this._lutBezierDetail !== this._pInst._curveDetail) {
                                this._lookUpTableBezier = [], this._lutBezierDetail = this._pInst._curveDetail;
                                for (var c = 1 / this._lutBezierDetail, u = c, d = 1, h = 0; u < 1;) {
                                    if (s = parseFloat(u.toFixed(6)), this._lookUpTableBezier[h] = this._bezierCoefficients(s), d.toFixed(6) === c.toFixed(6)) {
                                        s = parseFloat(d.toFixed(6)) + parseFloat(u.toFixed(6)), ++h, this._lookUpTableBezier[h] = this._bezierCoefficients(s);
                                        break
                                    }
                                    u += c, d -= c, ++h
                                }
                            }
                            for (var f = this._lookUpTableBezier.length, p = [], m = 0; m < 4; m++) p.push([]);
                            p[0] = this.immediateMode.geometry.vertexColors.slice(-4), p[3] = this.curFillColor.slice();
                            for (var y = [], m = 0; m < 4; m++) y.push([]);
                            if (y[0] = this.immediateMode.geometry.vertexStrokeColors.slice(-4), y[3] = this.curStrokeColor.slice(), 6 === l) {
                                this.isBezier = !0;
                                var i = [this.immediateMode._bezierVertex[0], arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 2 ? void 0 : arguments[2], arguments.length <= 4 ? void 0 : arguments[4]],
                                    a = [this.immediateMode._bezierVertex[1], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 3 ? void 0 : arguments[3], arguments.length <= 5 ? void 0 : arguments[5]],
                                    g = Math.hypot(i[0] - i[1], a[0] - a[1]),
                                    v = Math.hypot(i[1] - i[2], a[1] - a[2]),
                                    b = Math.hypot(i[2] - i[3], a[2] - a[3]);
                                for (g /= v = g + v + b, b /= v, n = 0; n < 4; n++) p[1].push(p[0][n] * (1 - g) + p[3][n] * g), p[2].push(p[0][n] * b + p[3][n] * (1 - b)), y[1].push(y[0][n] * (1 - g) + y[3][n] * g), y[2].push(y[0][n] * b + y[3][n] * (1 - b));
                                for (o = 0; o < f; o++) {
                                    for (this.curFillColor = [0, 0, 0, 0], this.curStrokeColor = [0, 0, 0, 0], m = e = t = 0; m < 4; m++) {
                                        for (n = 0; n < 4; n++) this.curFillColor[n] += this._lookUpTableBezier[o][m] * p[m][n], this.curStrokeColor[n] += this._lookUpTableBezier[o][m] * y[m][n];
                                        e += i[m] * this._lookUpTableBezier[o][m], t += a[m] * this._lookUpTableBezier[o][m]
                                    }
                                    this.vertex(e, t)
                                }
                                this.curFillColor = p[3], this.curStrokeColor = y[3], this.immediateMode._bezierVertex[0] = arguments.length <= 4 ? void 0 : arguments[4], this.immediateMode._bezierVertex[1] = arguments.length <= 5 ? void 0 : arguments[5]
                            } else if (9 === l) {
                                this.isBezier = !0, i = [this.immediateMode._bezierVertex[0], arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 3 ? void 0 : arguments[3], arguments.length <= 6 ? void 0 : arguments[6]], a = [this.immediateMode._bezierVertex[1], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 4 ? void 0 : arguments[4], arguments.length <= 7 ? void 0 : arguments[7]];
                                var _ = [this.immediateMode._bezierVertex[2], arguments.length <= 2 ? void 0 : arguments[2], arguments.length <= 5 ? void 0 : arguments[5], arguments.length <= 8 ? void 0 : arguments[8]],
                                    x = Math.hypot(i[0] - i[1], a[0] - a[1], _[0] - _[1]),
                                    v = Math.hypot(i[1] - i[2], a[1] - a[2], _[1] - _[2]),
                                    w = Math.hypot(i[2] - i[3], a[2] - a[3], _[2] - _[3]);
                                for (x /= l = x + v + w, w /= l, n = 0; n < 4; n++) p[1].push(p[0][n] * (1 - x) + p[3][n] * x), p[2].push(p[0][n] * w + p[3][n] * (1 - w)), y[1].push(y[0][n] * (1 - x) + y[3][n] * x), y[2].push(y[0][n] * w + y[3][n] * (1 - w));
                                for (o = 0; o < f; o++) {
                                    for (this.curFillColor = [0, 0, 0, 0], this.curStrokeColor = [0, 0, 0, 0], m = e = t = r = 0; m < 4; m++) {
                                        for (n = 0; n < 4; n++) this.curFillColor[n] += this._lookUpTableBezier[o][m] * p[m][n], this.curStrokeColor[n] += this._lookUpTableBezier[o][m] * y[m][n];
                                        e += i[m] * this._lookUpTableBezier[o][m], t += a[m] * this._lookUpTableBezier[o][m], r += _[m] * this._lookUpTableBezier[o][m]
                                    }
                                    this.vertex(e, t, r)
                                }
                                this.curFillColor = p[3], this.curStrokeColor = y[3], this.immediateMode._bezierVertex[0] = arguments.length <= 6 ? void 0 : arguments[6], this.immediateMode._bezierVertex[1] = arguments.length <= 7 ? void 0 : arguments[7], this.immediateMode._bezierVertex[2] = arguments.length <= 8 ? void 0 : arguments[8]
                            }
                        }, j.default.RendererGL.prototype.quadraticVertex = function() {
                            if (0 === this.immediateMode._quadraticVertex.length) throw Error("vertex() must be used once before calling quadraticVertex()");
                            var e, t, r, o, n, s, i = [],
                                a = [],
                                l = arguments.length;
                            if (0 === this._lookUpTableQuadratic.length || this._lutQuadraticDetail !== this._pInst._curveDetail) {
                                this._lookUpTableQuadratic = [], this._lutQuadraticDetail = this._pInst._curveDetail;
                                for (var c = 1 / this._lutQuadraticDetail, u = c, d = 1, h = 0; u < 1;) {
                                    if (s = parseFloat(u.toFixed(6)), this._lookUpTableQuadratic[h] = this._quadraticCoefficients(s), d.toFixed(6) === c.toFixed(6)) {
                                        s = parseFloat(d.toFixed(6)) + parseFloat(u.toFixed(6)), ++h, this._lookUpTableQuadratic[h] = this._quadraticCoefficients(s);
                                        break
                                    }
                                    u += c, d -= c, ++h
                                }
                            }
                            for (var f = this._lookUpTableQuadratic.length, p = [], m = 0; m < 3; m++) p.push([]);
                            p[0] = this.immediateMode.geometry.vertexColors.slice(-4), p[2] = this.curFillColor.slice();
                            for (var y = [], m = 0; m < 3; m++) y.push([]);
                            if (y[0] = this.immediateMode.geometry.vertexStrokeColors.slice(-4), y[2] = this.curStrokeColor.slice(), 4 === l) {
                                this.isQuadratic = !0;
                                var i = [this.immediateMode._quadraticVertex[0], arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 2 ? void 0 : arguments[2]],
                                    a = [this.immediateMode._quadraticVertex[1], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 3 ? void 0 : arguments[3]],
                                    g = Math.hypot(i[0] - i[1], a[0] - a[1]);
                                for (g /= g + Math.hypot(i[1] - i[2], a[1] - a[2]), n = 0; n < 4; n++) p[1].push(p[0][n] * (1 - g) + p[2][n] * g), y[1].push(y[0][n] * (1 - g) + y[2][n] * g);
                                for (o = 0; o < f; o++) {
                                    for (this.curFillColor = [0, 0, 0, 0], this.curStrokeColor = [0, 0, 0, 0], m = e = t = 0; m < 3; m++) {
                                        for (n = 0; n < 4; n++) this.curFillColor[n] += this._lookUpTableQuadratic[o][m] * p[m][n], this.curStrokeColor[n] += this._lookUpTableQuadratic[o][m] * y[m][n];
                                        e += i[m] * this._lookUpTableQuadratic[o][m], t += a[m] * this._lookUpTableQuadratic[o][m]
                                    }
                                    this.vertex(e, t)
                                }
                                this.curFillColor = p[2], this.curStrokeColor = y[2], this.immediateMode._quadraticVertex[0] = arguments.length <= 2 ? void 0 : arguments[2], this.immediateMode._quadraticVertex[1] = arguments.length <= 3 ? void 0 : arguments[3]
                            } else if (6 === l) {
                                this.isQuadratic = !0, i = [this.immediateMode._quadraticVertex[0], arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 3 ? void 0 : arguments[3]], a = [this.immediateMode._quadraticVertex[1], arguments.length <= 1 ? void 0 : arguments[1], arguments.length <= 4 ? void 0 : arguments[4]];
                                var v = [this.immediateMode._quadraticVertex[2], arguments.length <= 2 ? void 0 : arguments[2], arguments.length <= 5 ? void 0 : arguments[5]],
                                    b = Math.hypot(i[0] - i[1], a[0] - a[1], v[0] - v[1]);
                                for (b /= b + Math.hypot(i[1] - i[2], a[1] - a[2], v[1] - v[2]), n = 0; n < 4; n++) p[1].push(p[0][n] * (1 - b) + p[2][n] * b), y[1].push(y[0][n] * (1 - b) + y[2][n] * b);
                                for (o = 0; o < f; o++) {
                                    for (this.curFillColor = [0, 0, 0, 0], this.curStrokeColor = [0, 0, 0, 0], m = e = t = r = 0; m < 3; m++) {
                                        for (n = 0; n < 4; n++) this.curFillColor[n] += this._lookUpTableQuadratic[o][m] * p[m][n], this.curStrokeColor[n] += this._lookUpTableQuadratic[o][m] * y[m][n];
                                        e += i[m] * this._lookUpTableQuadratic[o][m], t += a[m] * this._lookUpTableQuadratic[o][m], r += v[m] * this._lookUpTableQuadratic[o][m]
                                    }
                                    this.vertex(e, t, r)
                                }
                                this.curFillColor = p[2], this.curStrokeColor = y[2], this.immediateMode._quadraticVertex[0] = arguments.length <= 3 ? void 0 : arguments[3], this.immediateMode._quadraticVertex[1] = arguments.length <= 4 ? void 0 : arguments[4], this.immediateMode._quadraticVertex[2] = arguments.length <= 5 ? void 0 : arguments[5]
                            }
                        }, j.default.RendererGL.prototype.curveVertex = function() {
                            var e, t, r, o, n, s, i = [],
                                a = [],
                                l = arguments.length;
                            if (0 === this._lookUpTableBezier.length || this._lutBezierDetail !== this._pInst._curveDetail) {
                                this._lookUpTableBezier = [], this._lutBezierDetail = this._pInst._curveDetail;
                                for (var c = 1 / this._lutBezierDetail, u = c, d = 1, h = 0; u < 1;) {
                                    if (s = parseFloat(u.toFixed(6)), this._lookUpTableBezier[h] = this._bezierCoefficients(s), d.toFixed(6) === c.toFixed(6)) {
                                        s = parseFloat(d.toFixed(6)) + parseFloat(u.toFixed(6)), ++h, this._lookUpTableBezier[h] = this._bezierCoefficients(s);
                                        break
                                    }
                                    u += c, d -= c, ++h
                                }
                            }
                            var f = this._lookUpTableBezier.length;
                            if (2 === l) {
                                if (this.immediateMode._curveVertex.push(arguments.length <= 0 ? void 0 : arguments[0]), this.immediateMode._curveVertex.push(arguments.length <= 1 ? void 0 : arguments[1]), 8 === this.immediateMode._curveVertex.length) {
                                    for (this.isCurve = !0, i = this._bezierToCatmull([this.immediateMode._curveVertex[0], this.immediateMode._curveVertex[2], this.immediateMode._curveVertex[4], this.immediateMode._curveVertex[6]]), a = this._bezierToCatmull([this.immediateMode._curveVertex[1], this.immediateMode._curveVertex[3], this.immediateMode._curveVertex[5], this.immediateMode._curveVertex[7]]), n = 0; n < f; n++) t = i[0] * this._lookUpTableBezier[n][0] + i[1] * this._lookUpTableBezier[n][1] + i[2] * this._lookUpTableBezier[n][2] + i[3] * this._lookUpTableBezier[n][3], r = a[0] * this._lookUpTableBezier[n][0] + a[1] * this._lookUpTableBezier[n][1] + a[2] * this._lookUpTableBezier[n][2] + a[3] * this._lookUpTableBezier[n][3], this.vertex(t, r);
                                    for (n = 0; n < l; n++) this.immediateMode._curveVertex.shift()
                                }
                            } else if (3 === l && (this.immediateMode._curveVertex.push(arguments.length <= 0 ? void 0 : arguments[0]), this.immediateMode._curveVertex.push(arguments.length <= 1 ? void 0 : arguments[1]), this.immediateMode._curveVertex.push(arguments.length <= 2 ? void 0 : arguments[2]), 12 === this.immediateMode._curveVertex.length)) {
                                for (this.isCurve = !0, i = this._bezierToCatmull([this.immediateMode._curveVertex[0], this.immediateMode._curveVertex[3], this.immediateMode._curveVertex[6], this.immediateMode._curveVertex[9]]), a = this._bezierToCatmull([this.immediateMode._curveVertex[1], this.immediateMode._curveVertex[4], this.immediateMode._curveVertex[7], this.immediateMode._curveVertex[10]]), e = this._bezierToCatmull([this.immediateMode._curveVertex[2], this.immediateMode._curveVertex[5], this.immediateMode._curveVertex[8], this.immediateMode._curveVertex[11]]), n = 0; n < f; n++) t = i[0] * this._lookUpTableBezier[n][0] + i[1] * this._lookUpTableBezier[n][1] + i[2] * this._lookUpTableBezier[n][2] + i[3] * this._lookUpTableBezier[n][3], r = a[0] * this._lookUpTableBezier[n][0] + a[1] * this._lookUpTableBezier[n][1] + a[2] * this._lookUpTableBezier[n][2] + a[3] * this._lookUpTableBezier[n][3], o = e[0] * this._lookUpTableBezier[n][0] + e[1] * this._lookUpTableBezier[n][1] + e[2] * this._lookUpTableBezier[n][2] + e[3] * this._lookUpTableBezier[n][3], this.vertex(t, r, o);
                                for (n = 0; n < l; n++) this.immediateMode._curveVertex.shift()
                            }
                        }, j.default.RendererGL.prototype.image = function(e, t, r, o, n, s, i, a, l) {
                            this._isErasing && this.blendMode(this._cachedBlendMode), this._pInst.push(), this._pInst.noLights(), this._pInst.noStroke(), this._pInst.texture(e), this._pInst.textureMode(x.NORMAL);
                            var c = 0,
                                u = (t <= e.width && (c = t / e.width), 1),
                                t = (t + o <= e.width && (u = (t + o) / e.width), 0),
                                o = (r <= e.height && (t = r / e.height), 1);
                            r + n <= e.height && (o = (r + n) / e.height), this.beginShape(), this.vertex(s, i, 0, c, t), this.vertex(s + a, i, 0, u, t), this.vertex(s + a, i + l, 0, u, o), this.vertex(s, i + l, 0, c, o), this.endShape(x.CLOSE), this._pInst.pop(), this._isErasing && this.blendMode(x.REMOVE)
                        };
                        var n = j.default;
                        r.default = n
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.Geometry": 335,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.math.hypot": 176,
                        "core-js/modules/es.math.sign": 178,
                        "core-js/modules/es.number.to-fixed": 182,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    327: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.map"), e("core-js/modules/es.object.assign"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var n = (u = e("../core/main")) && u.__esModule ? u : {
                                default: u
                            },
                            a = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }

                        function s(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function c(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }
                        c(d.prototype, [{
                            key: "transformVertices",
                            value: function(e) {
                                var t = this;
                                return this.hasTransform ? e.map(function(e) {
                                    return t.renderer.uModelMatrix.multiplyPoint(e)
                                }) : e
                            }
                        }, {
                            key: "transformNormals",
                            value: function(e) {
                                var t = this;
                                return this.hasTransform ? e.map(function(e) {
                                    return t.renderer.uNMatrix.multiplyVec3(e)
                                }) : e
                            }
                        }, {
                            key: "addGeometry",
                            value: function(e) {
                                for (var t, r = this, o = (this.hasTransform = !this.renderer.uModelMatrix.mat4.every(function(e, t) {
                                        return e === r.identityMatrix.mat4[t]
                                    }), this.hasTransform && this.renderer.uNMatrix.inverseTranspose(this.renderer.uModelMatrix), this.geometry.vertices.length), n = ((t = this.geometry.vertices).push.apply(t, s(this.transformVertices(e.vertices))), (t = this.geometry.vertexNormals).push.apply(t, s(this.transformNormals(e.vertexNormals))), (t = this.geometry.uvs).push.apply(t, s(e.uvs)), this.renderer._doFill && (t = this.geometry.faces).push.apply(t, s(e.faces.map(function(e) {
                                        return e.map(function(e) {
                                            return e + o
                                        })
                                    }))), this.renderer._doStroke && (t = this.geometry.edges).push.apply(t, s(e.edges.map(function(e) {
                                        return e.map(function(e) {
                                            return e + o
                                        })
                                    }))), s(e.vertexColors)); n.length < 4 * e.vertices.length;) n.push.apply(n, s(this.renderer.curFillColor));
                                (t = this.geometry.vertexColors).push.apply(t, s(n))
                            }
                        }, {
                            key: "addImmediate",
                            value: function() {
                                var e = this.renderer.immediateMode.geometry,
                                    t = this.renderer.immediateMode.shapeMode,
                                    r = [];
                                if (this.renderer._doFill)
                                    if (t === a.TRIANGLE_STRIP || t === a.QUAD_STRIP)
                                        for (var o = 2; o < e.vertices.length; o++) r.push(o % 2 == 0 ? [o, o - 1, o - 2] : [o, o - 2, o - 1]);
                                    else if (t === a.TRIANGLE_FAN)
                                    for (var n = 2; n < e.vertices.length; n++) r.push([0, n - 1, n]);
                                else
                                    for (var s = 0; s < e.vertices.length; s += 3) r.push([s, s + 1, s + 2]);
                                this.addGeometry(Object.assign({}, e, {
                                    faces: r
                                }))
                            }
                        }, {
                            key: "addRetained",
                            value: function(e) {
                                this.addGeometry(e.model)
                            }
                        }, {
                            key: "finish",
                            value: function() {
                                return this.renderer._pInst.pop(), this.geometry
                            }
                        }]);
                        var u = d;

                        function d(e) {
                            if (!(this instanceof d)) throw new TypeError("Cannot call a class as a function");
                            (this.renderer = e)._pInst.push(), this.identityMatrix = new n.default.Matrix, e.uModelMatrix = new n.default.Matrix, this.geometry = new n.default.Geometry, this.geometry.gid = "_p5_GeometryBuilder_".concat(d.nextGeometryId), d.nextGeometryId++, this.hasTransform = !1
                        }
                        u.nextGeometryId = 0, r.default = u
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.every": 155,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    328: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.math.sign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var g = (s = e("../core/main")) && s.__esModule ? s : {
                                default: s
                            },
                            n = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== v(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = i();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function i() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, i = function() {
                                return e
                            }, e)
                        }

                        function v(e) {
                            return (v = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        g.default.prototype.orbitControl = function(e, t, r, o) {
                            var n = this,
                                s = (this._assert3d("orbitControl"), g.default._validateParameters("orbitControl", arguments), this._renderer._curCamera),
                                i = (void 0 === e && (e = 1), void 0 === t && (t = e), void 0 === r && (r = 1), "object" !== v(o) && (o = {}), !0 !== this.contextMenuDisabled && (this.canvas.oncontextmenu = function() {
                                    return !1
                                }, this._setProperty("contextMenuDisabled", !0)), !0 !== this.wheelDefaultDisabled && (this.canvas.onwheel = function() {
                                    return !1
                                }, this._setProperty("wheelDefaultDisabled", !0)), o.disableTouchActions);
                            !0 === this.touchActionsDisabled || void 0 !== i && !i || (this.canvas.style["touch-action"] = "none", this._setProperty("touchActionsDisabled", !0));
                            var a, l, c, o = void 0 !== (i = o.freeRotation) && i,
                                u = [],
                                i = (this.touches.forEach(function(t) {
                                    n._renderer.prevTouches.forEach(function(e) {
                                        t.id === e.id && (e = {
                                            x: t.x,
                                            y: t.y,
                                            px: e.x,
                                            py: e.y
                                        }, u.push(e))
                                    })
                                }), this._renderer.prevTouches = this.touches, 0),
                                d = 0,
                                h = 0,
                                f = 0,
                                p = 0,
                                m = this.height < this.width ? this.height : this.width,
                                y = !1;
                            return 0 < u.length ? (y = 0 < u[0].x && u[0].x < this.width && 0 < u[0].y && u[0].y < this.height, 1 === u.length ? (d = -e * ((a = u[0]).x - a.px) / m, h = t * (a.y - a.py) / m) : (a = u[0], l = u[1], i = -(Math.hypot(a.x - l.x, a.y - l.y) - Math.hypot(a.px - l.px, a.py - l.py)) * r * 4e-4, f = .5 * (a.x + l.x) - .5 * (a.px + l.px), p = .5 * (a.y + l.y) - .5 * (a.py + l.py)), 0 < this.touches.length ? y && (this._renderer.executeRotateAndMove = !0, this._renderer.executeZoom = !0) : (this._renderer.executeRotateAndMove = !1, this._renderer.executeZoom = !1)) : (y = 0 < this.mouseX && this.mouseX < this.width && 0 < this.mouseY && this.mouseY < this.height, 0 !== this._mouseWheelDeltaY ? (i = Math.sign(this._mouseWheelDeltaY) * r, i *= .01, this._mouseWheelDeltaY = 0, y && (this._renderer.executeZoom = !0)) : this._renderer.executeZoom = !1, this.mouseIsPressed ? (this.mouseButton === this.LEFT ? (d = -e * this.movedX / m, h = t * this.movedY / m) : this.mouseButton === this.RIGHT && (f = this.movedX, p = this.movedY * s.yScale), y && (this._renderer.executeRotateAndMove = !0)) : this._renderer.executeRotateAndMove = !1), 0 !== i && this._renderer.executeZoom && (this._renderer.zoomVelocity += i), .001 < Math.abs(this._renderer.zoomVelocity) ? (o ? s._orbitFree(0, 0, this._renderer.zoomVelocity) : s._orbit(0, 0, this._renderer.zoomVelocity), 0 !== s.projMatrix.mat4[15] && (s.projMatrix.mat4[0] *= Math.pow(10, -this._renderer.zoomVelocity), s.projMatrix.mat4[5] *= Math.pow(10, -this._renderer.zoomVelocity), this._renderer.uPMatrix.mat4[0] = s.projMatrix.mat4[0], this._renderer.uPMatrix.mat4[5] = s.projMatrix.mat4[5]), this._renderer.zoomVelocity *= .85) : this._renderer.zoomVelocity = 0, 0 === d && 0 === h || !this._renderer.executeRotateAndMove || this._renderer.rotateVelocity.add(.6 * d, .6 * h), 1e-6 < this._renderer.rotateVelocity.magSq() ? (o ? s._orbitFree(-this._renderer.rotateVelocity.x, this._renderer.rotateVelocity.y, 0) : s._orbit(this._renderer.rotateVelocity.x, this._renderer.rotateVelocity.y, 0), this._renderer.rotateVelocity.mult(.85)) : this._renderer.rotateVelocity.set(0, 0), 0 === f && 0 === p || !this._renderer.executeRotateAndMove || (a = 2 * f / this.width, l = 2 * -p / this.height, this._renderer.moveVelocity.add(.15 * a, .15 * l)), 1e-6 < this._renderer.moveVelocity.magSq() ? (r = s._getLocalAxes(), e = s.eyeX - s.centerX, t = s.eyeY - s.centerY, m = s.eyeZ - s.centerZ, y = Math.sqrt(e * e + t * t + m * m), i = new g.default.Vector(s.centerX, s.centerY, s.centerZ), i = s.cameraMatrix.multiplyPoint(i), (i = this._renderer.uPMatrix.multiplyAndNormalizePoint(i)).x -= this._renderer.moveVelocity.x, i.y -= this._renderer.moveVelocity.y, h = 0 === (d = this._renderer.uPMatrix.mat4)[15] ? (c = (d[8] + i.x) / d[0] * y, (d[9] + i.y) / d[5] * y) : (c = (i.x - d[12]) / d[0], (i.y - d[13]) / d[5]), s.setPosition(s.eyeX + c * r.x[0] + h * r.y[0], s.eyeY + c * r.x[1] + h * r.y[1], s.eyeZ + c * r.x[2] + h * r.y[2]), this._renderer.moveVelocity.mult(.85)) : this._renderer.moveVelocity.set(0, 0), this
                        }, g.default.prototype.debugMode = function() {
                            this._assert3d("debugMode");
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            g.default._validateParameters("debugMode", t);
                            for (var o = this._registeredMethods.post.length - 1; 0 <= o; o--) this._registeredMethods.post[o].toString() !== this._grid().toString() && this._registeredMethods.post[o].toString() !== this._axesIcon().toString() || this._registeredMethods.post.splice(o, 1);
                            t[0] === n.GRID ? this.registerMethod("post", this._grid(t[1], t[2], t[3], t[4], t[5])) : t[0] === n.AXES ? this.registerMethod("post", this._axesIcon(t[1], t[2], t[3], t[4])) : (this.registerMethod("post", this._grid(t[0], t[1], t[2], t[3], t[4])), this.registerMethod("post", this._axesIcon(t[5], t[6], t[7], t[8])))
                        }, g.default.prototype.noDebugMode = function() {
                            this._assert3d("noDebugMode");
                            for (var e = this._registeredMethods.post.length - 1; 0 <= e; e--) this._registeredMethods.post[e].toString() !== this._grid().toString() && this._registeredMethods.post[e].toString() !== this._axesIcon().toString() || this._registeredMethods.post.splice(e, 1)
                        }, g.default.prototype._grid = function(e, r, o, n, s) {
                            void 0 === e && (e = this.width / 2), void 0 === r && (r = Math.round(e / 30) < 4 ? 4 : Math.round(e / 30)), void 0 === o && (o = 0), void 0 === n && (n = 0), void 0 === s && (s = 0);
                            var i = e / r,
                                a = e / 2;
                            return function() {
                                this.push(), this.stroke(255 * this._renderer.curStrokeColor[0], 255 * this._renderer.curStrokeColor[1], 255 * this._renderer.curStrokeColor[2]), this._renderer.uModelMatrix.reset();
                                for (var e = 0; e <= r; e++) this.beginShape(this.LINES), this.vertex(-a + o, n, e * i - a + s), this.vertex(a + o, n, e * i - a + s), this.endShape();
                                for (var t = 0; t <= r; t++) this.beginShape(this.LINES), this.vertex(t * i - a + o, n, -a + s), this.vertex(t * i - a + o, n, a + s), this.endShape();
                                this.pop()
                            }
                        }, g.default.prototype._axesIcon = function(e, t, r, o) {
                            return void 0 === e && (e = 40 < this.width / 20 ? this.width / 20 : 40), void 0 === t && (t = -this.width / 4), void 0 === r && (r = t), void 0 === o && (o = t),
                                function() {
                                    this.push(), this._renderer.uModelMatrix.reset(), this.strokeWeight(2), this.stroke(255, 0, 0), this.beginShape(this.LINES), this.vertex(t, r, o), this.vertex(t + e, r, o), this.endShape(), this.stroke(0, 255, 0), this.beginShape(this.LINES), this.vertex(t, r, o), this.vertex(t, r + e, o), this.endShape(), this.stroke(0, 0, 255), this.beginShape(this.LINES), this.vertex(t, r, o), this.vertex(t, r, o + e), this.endShape(), this.pop()
                                }
                        };
                        var s = g.default;
                        r.default = s
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.math.hypot": 176,
                        "core-js/modules/es.math.sign": 178,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    329: [function(e, t, r) {
                        e("core-js/modules/es.array.filter"), e("core-js/modules/es.array.filter"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var m = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };
                        m.default.prototype.ambientLight = function(e, t, r, o) {
                            this._assert3d("ambientLight"), m.default._validateParameters("ambientLight", arguments);
                            var n = this.color.apply(this, arguments);
                            return this._renderer.ambientLightColors.push(n._array[0], n._array[1], n._array[2]), this._renderer._enableLighting = !0, this
                        }, m.default.prototype.specularColor = function(e, t, r) {
                            this._assert3d("specularColor"), m.default._validateParameters("specularColor", arguments);
                            var o = this.color.apply(this, arguments);
                            return this._renderer.specularColors = [o._array[0], o._array[1], o._array[2]], this
                        }, m.default.prototype.directionalLight = function(e, t, r, o, n, s) {
                            this._assert3d("directionalLight"), m.default._validateParameters("directionalLight", arguments), e = e instanceof m.default.Color ? e : this.color(e, t, r);
                            var i, a, t = arguments[arguments.length - 1],
                                r = "number" == typeof t ? (i = arguments[arguments.length - 3], a = arguments[arguments.length - 2], arguments[arguments.length - 1]) : (i = t.x, a = t.y, t.z),
                                t = Math.sqrt(i * i + a * a + r * r);
                            return this._renderer.directionalLightDirections.push(i / t, a / t, r / t), this._renderer.directionalLightDiffuseColors.push(e._array[0], e._array[1], e._array[2]), Array.prototype.push.apply(this._renderer.directionalLightSpecularColors, this._renderer.specularColors), this._renderer._enableLighting = !0, this
                        }, m.default.prototype.pointLight = function(e, t, r, o, n, s) {
                            this._assert3d("pointLight"), m.default._validateParameters("pointLight", arguments), e = e instanceof m.default.Color ? e : this.color(e, t, r);
                            var i, a, t = arguments[arguments.length - 1],
                                r = "number" == typeof t ? (i = arguments[arguments.length - 3], a = arguments[arguments.length - 2], arguments[arguments.length - 1]) : (i = t.x, a = t.y, t.z);
                            return this._renderer.pointLightPositions.push(i, a, r), this._renderer.pointLightDiffuseColors.push(e._array[0], e._array[1], e._array[2]), Array.prototype.push.apply(this._renderer.pointLightSpecularColors, this._renderer.specularColors), this._renderer._enableLighting = !0, this
                        }, m.default.prototype.imageLight = function(e) {
                            this._renderer.activeImageLight = e, this._renderer._enableLighting = !0
                        }, m.default.prototype.panorama = function(e) {
                            this.filter(this._renderer._getSphereMapping(e))
                        }, m.default.prototype.lights = function() {
                            this._assert3d("lights");
                            var e = this.color("rgb(128,128,128)");
                            return this.ambientLight(e), this.directionalLight(e, 0, 0, -1), this
                        }, m.default.prototype.lightFalloff = function(e, t, r) {
                            return this._assert3d("lightFalloff"), m.default._validateParameters("lightFalloff", arguments), e < 0 && (e = 0, console.warn("Value of constant argument in lightFalloff() should be never be negative. Set to 0.")), t < 0 && (t = 0, console.warn("Value of linear argument in lightFalloff() should be never be negative. Set to 0.")), r < 0 && (r = 0, console.warn("Value of quadratic argument in lightFalloff() should be never be negative. Set to 0.")), 0 === e && 0 === t && 0 === r && (e = 1, console.warn("Either one of the three arguments in lightFalloff() should be greater than zero. Set constant argument to 1.")), this._renderer.constantAttenuation = e, this._renderer.linearAttenuation = t, this._renderer.quadraticAttenuation = r, this
                        }, m.default.prototype.spotLight = function(e, t, r, o, n, s, i, a, l, c, u) {
                            this._assert3d("spotLight"), m.default._validateParameters("spotLight", arguments);
                            var d, h, f, p = arguments.length;
                            switch (p) {
                                case 11:
                                case 10:
                                    d = this.color(e, t, r), h = new m.default.Vector(o, n, s), f = new m.default.Vector(i, a, l);
                                    break;
                                case 9:
                                    e instanceof m.default.Color ? (d = e, h = new m.default.Vector(t, r, o), f = new m.default.Vector(n, s, i), c = a, u = l) : o instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, f = new m.default.Vector(n, s, i), c = a, u = l) : i instanceof m.default.Vector ? (d = this.color(e, t, r), h = new m.default.Vector(o, n, s), f = i, c = a, u = l) : (d = this.color(e, t, r), h = new m.default.Vector(o, n, s), f = new m.default.Vector(i, a, l));
                                    break;
                                case 8:
                                    f = e instanceof m.default.Color ? (d = e, h = new m.default.Vector(t, r, o), new m.default.Vector(n, s, i)) : o instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, new m.default.Vector(n, s, i)) : (d = this.color(e, t, r), h = new m.default.Vector(o, n, s), i), c = a;
                                    break;
                                case 7:
                                    e instanceof m.default.Color && t instanceof m.default.Vector ? (d = e, h = t, f = new m.default.Vector(r, o, n), c = s, u = i) : e instanceof m.default.Color && n instanceof m.default.Vector ? (d = e, h = new m.default.Vector(t, r, o), f = n, c = s, u = i) : o instanceof m.default.Vector && n instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, f = n, c = s, u = i) : f = e instanceof m.default.Color ? (d = e, h = new m.default.Vector(t, r, o), new m.default.Vector(n, s, i)) : o instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, new m.default.Vector(n, s, i)) : (d = this.color(e, t, r), h = new m.default.Vector(o, n, s), i);
                                    break;
                                case 6:
                                    o instanceof m.default.Vector && n instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, f = n, c = s) : e instanceof m.default.Color && n instanceof m.default.Vector ? (d = e, h = new m.default.Vector(t, r, o), f = n, c = s) : e instanceof m.default.Color && t instanceof m.default.Vector && (d = e, h = t, f = new m.default.Vector(r, o, n), c = s);
                                    break;
                                case 5:
                                    e instanceof m.default.Color && t instanceof m.default.Vector && r instanceof m.default.Vector ? (d = e, h = t, f = r, c = o, u = n) : o instanceof m.default.Vector && n instanceof m.default.Vector ? (d = this.color(e, t, r), h = o, f = n) : e instanceof m.default.Color && n instanceof m.default.Vector ? (d = e, h = new m.default.Vector(t, r, o), f = n) : e instanceof m.default.Color && t instanceof m.default.Vector && (d = e, h = t, f = new m.default.Vector(r, o, n));
                                    break;
                                case 4:
                                    d = e, h = t, f = r, c = o;
                                    break;
                                case 3:
                                    d = e, h = t, f = r;
                                    break;
                                default:
                                    return console.warn("Sorry, input for spotlight() is not in prescribed format. Too ".concat(p < 3 ? "few" : "many", " arguments were provided")), this
                            }
                            return this._renderer.spotLightDiffuseColors.push(d._array[0], d._array[1], d._array[2]), Array.prototype.push.apply(this._renderer.spotLightSpecularColors, this._renderer.specularColors), this._renderer.spotLightPositions.push(h.x, h.y, h.z), f.normalize(), this._renderer.spotLightDirections.push(f.x, f.y, f.z), void 0 === c && (c = Math.PI / 3), void 0 !== u && u < 1 ? (u = 1, console.warn("Value of concentration needs to be greater than 1. Setting it to 1")) : void 0 === u && (u = 100), c = this._renderer._pInst._toRadians(c), this._renderer.spotLightAngle.push(Math.cos(c)), this._renderer.spotLightConc.push(u), this._renderer._enableLighting = !0, this
                        }, m.default.prototype.noLights = function() {
                            this._assert3d("noLights");
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return m.default._validateParameters("noLights", t), this._renderer.activeImageLight = null, this._renderer._enableLighting = !1, this._renderer.ambientLightColors.length = 0, this._renderer.specularColors = [1, 1, 1], this._renderer.directionalLightDirections.length = 0, this._renderer.directionalLightDiffuseColors.length = 0, this._renderer.directionalLightSpecularColors.length = 0, this._renderer.pointLightPositions.length = 0, this._renderer.pointLightDiffuseColors.length = 0, this._renderer.pointLightSpecularColors.length = 0, this._renderer.spotLightPositions.length = 0, this._renderer.spotLightDirections.length = 0, this._renderer.spotLightDiffuseColors.length = 0, this._renderer.spotLightSpecularColors.length = 0, this._renderer.spotLightAngle.length = 0, this._renderer.spotLightConc.length = 0, this._renderer.constantAttenuation = 1, this._renderer.linearAttenuation = 0, this._renderer.quadraticAttenuation = 0, this._renderer._useShininess = 1, this._renderer._useMetalness = 0, this
                        }, r.default = e = m.default
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.filter": 157
                    }],
                    330: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.splice"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.promise"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.match"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.trim"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, e("regenerator-runtime/runtime");
                        var P = (n = e("../core/main")) && n.__esModule ? n : {
                            default: n
                        };

                        function f(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function l(e, t, r, o, n, s, i) {
                            try {
                                var a = e[s](i),
                                    l = a.value
                            } catch (e) {
                                return r(e)
                            }
                            a.done ? t(l) : Promise.resolve(l).then(o, n)
                        }

                        function p(a) {
                            return function() {
                                var e = this,
                                    i = arguments;
                                return new Promise(function(t, r) {
                                    var o = a.apply(e, i);

                                    function n(e) {
                                        l(o, t, r, n, s, "next", e)
                                    }

                                    function s(e) {
                                        l(o, t, r, n, s, "throw", e)
                                    }
                                    n(void 0)
                                })
                            }
                        }

                        function m(e) {
                            return (m = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }

                        function y(e, t, r) {
                            for (var o = 2 < arguments.length && void 0 !== r ? r : {}, n = {
                                    v: [],
                                    vt: [],
                                    vn: []
                                }, s = {}, i = null, a = new Set, l = !1, c = !1, u = 0; u < t.length; ++u) {
                                var d = t[u].trim().split(/\b\s+/);
                                if (0 < d.length)
                                    if ("usemtl" === d[0]) i = d[1];
                                    else if ("v" === d[0] || "vn" === d[0]) {
                                    var h = new P.default.Vector(parseFloat(d[1]), parseFloat(d[2]), parseFloat(d[3]));
                                    n[d[0]].push(h)
                                } else if ("vt" === d[0]) h = [parseFloat(d[1]), 1 - parseFloat(d[2])], n[d[0]].push(h);
                                else if ("f" === d[0])
                                    for (var f = 3; f < d.length; ++f) {
                                        for (var p = [], m = [1, f - 1, f], y = 0; y < m.length; ++y) {
                                            for (var g, v = d[m[y]], b = v.split("/"), _ = 0; _ < b.length; _++) b[_] = parseInt(b[_]) - 1;
                                            s[v] || (s[v] = {}), void 0 === s[v][i] ? (g = e.vertices.length, e.vertices.push(n.v[b[0]].copy()), e.uvs.push(n.vt[b[1]] ? n.vt[b[1]].slice() : [0, 0]), e.vertexNormals.push(n.vn[b[2]] ? n.vn[b[2]].copy() : new P.default.Vector), s[v][i] = g, p.push(g), i && o[i] && o[i].diffuseColor && a.add(n.v[b[0]])) : p.push(s[v][i])
                                        }
                                        if (p[0] !== p[1] && p[0] !== p[2] && p[1] !== p[2])
                                            if (e.faces.push(p), i && o[i] && o[i].diffuseColor)
                                                for (var l = !0, x = o[i].diffuseColor, w = 0; w < p.length; w++) e.vertexColors.push(x[0]), e.vertexColors.push(x[1]), e.vertexColors.push(x[2]);
                                            else c = !0
                                    }
                            }
                            if (0 === e.vertexNormals.length && e.computeNormals(), l === c) throw new Error("Model coloring is inconsistent. Either all vertices should have colors or none should.")
                        }

                        function g(e, o) {
                            if ((() => {
                                    for (var e = new DataView(o), t = [115, 111, 108, 105, 100], r = 0; r < 5; r++)
                                        if (((e, t, r) => {
                                                for (var o = 0, n = e.length; o < n; o++)
                                                    if (e[o] !== t.getUint8(r + o, !1)) return;
                                                return 1
                                            })(t, e, r)) return;
                                    return 1
                                })()) {
                                for (var t, r, n, s, i, a, l, c = e, u = new DataView(o), d = u.getUint32(80, !0), h = !1, f = 0; f < 70; f++) 1129270351 === u.getUint32(f, !1) && 82 === u.getUint8(f + 4) && 61 === u.getUint8(f + 5) && (h = !0, s = [], i = u.getUint8(f + 6) / 255, a = u.getUint8(f + 7) / 255, l = u.getUint8(f + 8) / 255);
                                for (var p = 0; p < d; p++) {
                                    for (var m, y = 84 + 50 * p, g = u.getFloat32(y, !0), v = u.getFloat32(4 + y, !0), b = u.getFloat32(8 + y, !0), _ = (h && (n = 0 == (32768 & (m = u.getUint16(48 + y, !0))) ? (t = (31 & m) / 31, r = (m >> 5 & 31) / 31, (m >> 10 & 31) / 31) : (t = i, r = a, l)), new P.default.Vector(g, v, b)), x = 1; x <= 3; x++) {
                                        var w = new P.default.Vector(u.getFloat32(w = y + 12 * x, !0), u.getFloat32(4 + w, !0), u.getFloat32(8 + w, !0));
                                        c.vertices.push(w), c.vertexNormals.push(_), h && s.push(t, r, n)
                                    }
                                    c.faces.push([3 * p, 3 * p + 1, 3 * p + 2]), c.uvs.push([0, 0], [0, 0], [0, 0])
                                }
                            } else if (o = new DataView(o), "TextDecoder" in window)
                                for (var j, S, T = e, E = new TextDecoder("utf-8").decode(o).split("\n"), k = "", M = [], O = 0; O < E.length; ++O) {
                                    for (var C = E[O].trim(), A = C.split(" "), L = 0; L < A.length; ++L) "" === A[L] && A.splice(L, 1);
                                    if (0 !== A.length) switch (k) {
                                        case "":
                                            if ("solid" !== A[0]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "solid"'));
                                            k = "solid";
                                            break;
                                        case "solid":
                                            if ("facet" !== A[0] || "normal" !== A[1]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "facet normal"'));
                                            j = new P.default.Vector(parseFloat(A[2]), parseFloat(A[3]), parseFloat(A[4])), T.vertexNormals.push(j, j, j), k = "facet normal";
                                            break;
                                        case "facet normal":
                                            if ("outer" !== A[0] || "loop" !== A[1]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "outer loop"'));
                                            k = "vertex";
                                            break;
                                        case "vertex":
                                            if ("vertex" === A[0]) S = new P.default.Vector(parseFloat(A[1]), parseFloat(A[2]), parseFloat(A[3])), T.vertices.push(S), T.uvs.push([0, 0]), M.push(T.vertices.indexOf(S));
                                            else {
                                                if ("endloop" !== A[0]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "vertex" or "endloop"'));
                                                T.faces.push(M), M = [], k = "endloop"
                                            }
                                            break;
                                        case "endloop":
                                            if ("endfacet" !== A[0]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "endfacet"'));
                                            k = "endfacet";
                                            break;
                                        case "endfacet":
                                            if ("endsolid" !== A[0]) {
                                                if ("facet" !== A[0] || "normal" !== A[1]) return console.error(C), console.error('Invalid state "'.concat(A[0], '", should be "endsolid" or "facet normal"'));
                                                j = new P.default.Vector(parseFloat(A[2]), parseFloat(A[3]), parseFloat(A[4])), T.vertexNormals.push(j, j, j), k = "facet normal"
                                            }
                                            break;
                                        default:
                                            console.error('Invalid state "'.concat(k, '"'))
                                    }
                                } else console.warn("Sorry, ASCII STL loading only works in browsers that support TextDecoder (https://caniuse.com/#feat=textencoder)")
                        }
                        e("./p5.Geometry"), P.default.prototype.loadModel = function(i, e) {
                            P.default._validateParameters("loadModel", arguments);
                            var o, n, t, s = !1,
                                a = !1,
                                l = !1,
                                r = i.slice(-4),
                                c = (e && "object" === m(e) ? (s = e.normalize || !1, o = e.successCallback, n = e.failureCallback, r = e.fileType || r, a = e.flipU || !1, l = e.flipV || !1) : "boolean" == typeof e ? (s = e, o = arguments[2], n = arguments[3], void 0 !== arguments[4] && (r = arguments[4])) : (o = "function" == typeof e ? e : void 0, n = arguments[2], void 0 !== arguments[3] && (r = arguments[3])), new P.default.Geometry),
                                u = (c.gid = "".concat(i, "|").concat(s), this);

                            function d() {
                                return (d = p(regeneratorRuntime.mark(function e(t) {
                                    var r, o, n, s;
                                    return regeneratorRuntime.wrap(function(e) {
                                        for (;;) switch (e.prev = e.next) {
                                            case 0:
                                                for (r = [], o = 0; o < t.length; o++)(n = t[o].match(/^mtllib (.+)/)) && (() => {
                                                    var e = n[1],
                                                        t = i.split("/"),
                                                        o = 1 < t.length ? (t.pop(), t.join("/") + "/" + e) : e;
                                                    r.push(function() {
                                                        return h.apply(this, arguments)
                                                    }(o).then(function(e) {
                                                        return e ? (t = u, r = o, new Promise(function(n, e) {
                                                            var s = null,
                                                                i = {};
                                                            t.loadStrings(r, function(e) {
                                                                for (var t = 0; t < e.length; ++t) {
                                                                    var r, o = e[t].trim().split(/\s+/);
                                                                    "newmtl" === o[0] ? (r = o[1], i[s = r] = {}) : "Kd" === o[0] ? i[s].diffuseColor = [parseFloat(o[1]), parseFloat(o[2]), parseFloat(o[3])] : "Ka" === o[0] ? i[s].ambientColor = [parseFloat(o[1]), parseFloat(o[2]), parseFloat(o[3])] : "Ks" === o[0] ? i[s].specularColor = [parseFloat(o[1]), parseFloat(o[2]), parseFloat(o[3])] : "map_Kd" === o[0] && (i[s].texturePath = o[1])
                                                                }
                                                                n(i)
                                                            }, e)
                                                        })) : (console.warn("MTL file not found or error in parsing; proceeding without materials: ".concat(o)), {});
                                                        var t, r
                                                    }).catch(function(e) {
                                                        return console.warn("Error loading MTL file: ".concat(o), e), {}
                                                    }))
                                                })();
                                                return e.prev = 2, e.next = 5, Promise.all(r);
                                            case 5:
                                                return s = e.sent, s = Object.assign.apply(Object, [{}].concat(f(s))), e.abrupt("return", s);
                                            case 10:
                                                return e.prev = 10, e.t0 = e.catch(2), e.abrupt("return", {});
                                            case 13:
                                            case "end":
                                                return e.stop()
                                        }
                                    }, e, null, [
                                        [2, 10]
                                    ])
                                }))).apply(this, arguments)
                            }

                            function h() {
                                return (h = p(regeneratorRuntime.mark(function e(t) {
                                    var r;
                                    return regeneratorRuntime.wrap(function(e) {
                                        for (;;) switch (e.prev = e.next) {
                                            case 0:
                                                return e.prev = 0, e.next = 3, fetch(t, {
                                                    method: "HEAD"
                                                });
                                            case 3:
                                                return r = e.sent, e.abrupt("return", r.ok);
                                            case 7:
                                                return e.prev = 7, e.t0 = e.catch(0), e.abrupt("return", !1);
                                            case 10:
                                            case "end":
                                                return e.stop()
                                        }
                                    }, e, null, [
                                        [0, 7]
                                    ])
                                }))).apply(this, arguments)
                            }
                            return r.match(/\.stl$/i) ? this.httpDo(i, "GET", "arrayBuffer", function(e) {
                                g(c, e), s && c.normalize(), a && c.flipU(), l && c.flipV(), u._decrementPreload(), "function" == typeof o && o(c)
                            }, n) : r.match(/\.obj$/i) ? this.loadStrings(i, (t = p(regeneratorRuntime.mark(function e(t) {
                                var r;
                                return regeneratorRuntime.wrap(function(e) {
                                    for (;;) switch (e.prev = e.next) {
                                        case 0:
                                            return e.prev = 0, e.next = 3,
                                                function() {
                                                    return d.apply(this, arguments)
                                                }(t);
                                        case 3:
                                            r = e.sent, y(c, t, r), e.next = 11;
                                            break;
                                        case 7:
                                            return e.prev = 7, e.t0 = e.catch(0), n ? n(e.t0) : P.default._friendlyError("Error during parsing: " + e.t0.message), e.abrupt("return");
                                        case 11:
                                            return e.prev = 11, s && c.normalize(), a && c.flipU(), l && c.flipV(), c._makeTriangleEdges(), u._decrementPreload(), "function" == typeof o && o(c), e.finish(11);
                                        case 19:
                                        case "end":
                                            return e.stop()
                                    }
                                }, e, null, [
                                    [0, 7, 11, 19]
                                ])
                            })), function(e) {
                                return t.apply(this, arguments)
                            }), n) : (P.default._friendlyFileLoadError(3, i), n ? n() : P.default._friendlyError("Sorry, the file type is invalid. Only OBJ and STL files are supported.")), c
                        }, P.default.prototype.model = function(e) {
                            this._assert3d("model"), P.default._validateParameters("model", arguments), 0 < e.vertices.length && (this._renderer.geometryInHash(e.gid) || (e._edgesToVertices(), this._renderer.createBuffers(e.gid, e)), this._renderer.drawBuffers(e.gid))
                        };
                        var c = 0,
                            n = (P.default.prototype.createModel = function(e) {
                                var t, r, o = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : " ",
                                    n = 2 < arguments.length ? arguments[2] : void 0,
                                    s = (P.default._validateParameters("createModel", arguments), !1),
                                    i = !1,
                                    a = !1;
                                if (n && "object" === m(n) ? (s = n.normalize || !1, t = n.successCallback, r = n.failureCallback, i = n.flipU || !1, a = n.flipV || !1) : r = "boolean" == typeof n ? (s = n, t = arguments[3], arguments[4]) : (t = "function" == typeof arguments[2] ? arguments[2] : void 0, arguments[3]), (n = new P.default.Geometry).gid = "".concat(o, "|").concat(s, "|").concat(c++), o.match(/\.stl$/i)) try {
                                    g(n, (new TextEncoder).encode(e).buffer)
                                } catch (e) {
                                    return void(r ? r(e) : P.default._friendlyError("Error during parsing: " + e.message))
                                } else if (o.match(/\.obj$/i)) try {
                                    y(n, e.split("\n"))
                                } catch (e) {
                                    return void(r ? r(e) : P.default._friendlyError("Error during parsing: " + e.message))
                                } else P.default._friendlyFileLoadError(3, e), r ? r() : P.default._friendlyError("Sorry, the file type is invalid. Only OBJ and STL files are supported.");
                                return s && n.normalize(), i && n.flipU(), a && n.flipV(), n._makeTriangleEdges(), "function" == typeof t && t(n), n
                            }, P.default);
                        r.default = n
                    }, {
                        "../core/main": 283,
                        "./p5.Geometry": 335,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.splice": 171,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.promise": 191,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.set": 197,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.match": 201,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.trim": 209,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        "regenerator-runtime/runtime": 260
                    }],
                    331: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.join"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var c = (s = e("../core/main")) && s.__esModule ? s : {
                                default: s
                            },
                            n = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }
                        e("./p5.Texture"), c.default.prototype.loadShader = function(e, t, r, o) {
                            function n() {
                                i._decrementPreload(), r && r(s)
                            }
                            c.default._validateParameters("loadShader", arguments), o = o || console.error;
                            var s = new c.default.Shader,
                                i = this,
                                a = !1,
                                l = !1;
                            return this.loadStrings(e, function(e) {
                                s._vertSrc = e.join("\n"), l = !0, a && n()
                            }, o), this.loadStrings(t, function(e) {
                                s._fragSrc = e.join("\n"), a = !0, l && n()
                            }, o), s
                        }, c.default.prototype.createShader = function(e, t, r) {
                            return c.default._validateParameters("createShader", arguments), new c.default.Shader(this._renderer, e, t, r)
                        }, c.default.prototype.createFilterShader = function(e) {
                            c.default._validateParameters("createFilterShader", arguments);
                            var t = e.includes("#version 300 es") ? "#version 300 es\n    uniform mat4 uModelViewMatrix;\n    uniform mat4 uProjectionMatrix;\n\n    in vec3 aPosition;\n    in vec2 aTexCoord;\n    out vec2 vTexCoord;\n\n    void main() {\n      // transferring texcoords for the frag shader\n      vTexCoord = aTexCoord;\n\n      // copy position with a fourth coordinate for projection (1.0 is normal)\n      vec4 positionVec4 = vec4(aPosition, 1.0);\n\n      // project to 3D space\n      gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n    }\n  " : "\n    uniform mat4 uModelViewMatrix;\n    uniform mat4 uProjectionMatrix;\n\n    attribute vec3 aPosition;\n    // texcoords only come from p5 to vertex shader\n    // so pass texcoords on to the fragment shader in a varying variable\n    attribute vec2 aTexCoord;\n    varying vec2 vTexCoord;\n\n    void main() {\n      // transferring texcoords for the frag shader\n      vTexCoord = aTexCoord;\n\n      // copy position with a fourth coordinate for projection (1.0 is normal)\n      vec4 positionVec4 = vec4(aPosition, 1.0);\n\n      // project to 3D space\n      gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n    }\n  ",
                                t = new c.default.Shader(this._renderer, t, e);
                            return this._renderer.GL ? t.ensureCompiledOnContext(this) : t.ensureCompiledOnContext(this._renderer.getFilterGraphicsLayer()), t
                        }, c.default.prototype.shader = function(e) {
                            return this._assert3d("shader"), c.default._validateParameters("shader", arguments), e.ensureCompiledOnContext(this), e.isStrokeShader() ? this._renderer.userStrokeShader = e : (this._renderer.userFillShader = e, this._renderer._useNormalMaterial = !1), e.setDefaultUniforms(), this
                        }, c.default.prototype.baseMaterialShader = function() {
                            return this._assert3d("baseMaterialShader"), this._renderer.baseMaterialShader()
                        }, c.default.prototype.baseNormalShader = function() {
                            return this._assert3d("baseNormalShader"), this._renderer.baseNormalShader()
                        }, c.default.prototype.baseColorShader = function() {
                            return this._assert3d("baseColorShader"), this._renderer.baseColorShader()
                        }, c.default.prototype.baseStrokeShader = function() {
                            return this._assert3d("baseStrokeShader"), this._renderer.baseStrokeShader()
                        }, c.default.prototype.resetShader = function() {
                            return this._renderer.userFillShader = this._renderer.userStrokeShader = null, this
                        }, c.default.prototype.texture = function(e) {
                            return this._assert3d("texture"), c.default._validateParameters("texture", arguments), e.gifProperties && e._animateGif(this), this._renderer.drawMode = n.TEXTURE, this._renderer._useNormalMaterial = !1, this._renderer._tex = e, this._renderer._setProperty("_doFill", !0), this
                        }, c.default.prototype.textureMode = function(e) {
                            e !== n.IMAGE && e !== n.NORMAL ? console.warn("You tried to set ".concat(e, " textureMode only supports IMAGE & NORMAL ")) : this._renderer.textureMode = e
                        }, c.default.prototype.textureWrap = function(e) {
                            var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : e,
                                r = (this._renderer.textureWrapX = e, this._renderer.textureWrapY = t, !0),
                                o = !1,
                                n = void 0;
                            try {
                                for (var s, i = this._renderer.textures.values()[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) s.value.setWrapMode(e, t)
                            } catch (e) {
                                o = !0, n = e
                            } finally {
                                try {
                                    r || null == i.return || i.return()
                                } finally {
                                    if (o) throw n
                                }
                            }
                        }, c.default.prototype.normalMaterial = function() {
                            this._assert3d("normalMaterial");
                            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                            return c.default._validateParameters("normalMaterial", t), this._renderer.drawMode = n.FILL, this._renderer._useSpecularMaterial = !1, this._renderer._useEmissiveMaterial = !1, this._renderer._useNormalMaterial = !0, this._renderer.curFillColor = [1, 1, 1, 1], this._renderer._setProperty("_doFill", !0), this.noStroke(), this
                        }, c.default.prototype.ambientMaterial = function(e, t, r) {
                            this._assert3d("ambientMaterial"), c.default._validateParameters("ambientMaterial", arguments);
                            var o = c.default.prototype.color.apply(this, arguments);
                            return this._renderer._hasSetAmbient = !0, this._renderer.curAmbientColor = o._array, this._renderer._useNormalMaterial = !1, this._renderer._enableLighting = !0, this._renderer._setProperty("_doFill", !0), this
                        }, c.default.prototype.emissiveMaterial = function(e, t, r, o) {
                            this._assert3d("emissiveMaterial"), c.default._validateParameters("emissiveMaterial", arguments);
                            var n = c.default.prototype.color.apply(this, arguments);
                            return this._renderer.curEmissiveColor = n._array, this._renderer._useEmissiveMaterial = !0, this._renderer._useNormalMaterial = !1, this._renderer._enableLighting = !0, this
                        }, c.default.prototype.specularMaterial = function(e, t, r, o) {
                            this._assert3d("specularMaterial"), c.default._validateParameters("specularMaterial", arguments);
                            var n = c.default.prototype.color.apply(this, arguments);
                            return this._renderer.curSpecularColor = n._array, this._renderer._useSpecularMaterial = !0, this._renderer._useNormalMaterial = !1, this._renderer._enableLighting = !0, this
                        }, c.default.prototype.shininess = function(e) {
                            return this._assert3d("shininess"), c.default._validateParameters("shininess", arguments), this._renderer._useShininess = e = e < 1 ? 1 : e, this
                        }, c.default.prototype.metalness = function(e) {
                            return this._assert3d("metalness"), e = 1 - Math.exp(-e / 100), this._renderer._useMetalness = e, this
                        }, c.default.RendererGL.prototype._applyColorBlend = function(e, t) {
                            var r = this.GL,
                                o = this.drawMode === n.TEXTURE;
                            return (t = t || this.userFillShader || this.userStrokeShader || this.userPointShader || o || this.curBlendMode !== n.BLEND || e[e.length - 1] < 1 || this._isErasing) !== this._isBlending && (t || this.curBlendMode !== n.BLEND && this.curBlendMode !== n.ADD ? r.enable(r.BLEND) : r.disable(r.BLEND), r.depthMask(!0), this._isBlending = t), this._applyBlendMode(), e
                        }, c.default.RendererGL.prototype._applyBlendMode = function() {
                            if (this._cachedBlendMode !== this.curBlendMode) {
                                var e = this.GL;
                                switch (this.curBlendMode) {
                                    case n.BLEND:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA);
                                        break;
                                    case n.ADD:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ONE);
                                        break;
                                    case n.REMOVE:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ZERO, e.ONE_MINUS_SRC_ALPHA);
                                        break;
                                    case n.MULTIPLY:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.DST_COLOR, e.ONE_MINUS_SRC_ALPHA);
                                        break;
                                    case n.SCREEN:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_COLOR);
                                        break;
                                    case n.EXCLUSION:
                                        e.blendEquationSeparate(e.FUNC_ADD, e.FUNC_ADD), e.blendFuncSeparate(e.ONE_MINUS_DST_COLOR, e.ONE_MINUS_SRC_COLOR, e.ONE, e.ONE);
                                        break;
                                    case n.REPLACE:
                                        e.blendEquation(e.FUNC_ADD), e.blendFunc(e.ONE, e.ZERO);
                                        break;
                                    case n.SUBTRACT:
                                        e.blendEquationSeparate(e.FUNC_REVERSE_SUBTRACT, e.FUNC_ADD), e.blendFuncSeparate(e.ONE, e.ONE, e.ONE, e.ONE_MINUS_SRC_ALPHA);
                                        break;
                                    case n.DARKEST:
                                        this.blendExt ? (e.blendEquationSeparate(this.blendExt.MIN || this.blendExt.MIN_EXT, e.FUNC_ADD), e.blendFuncSeparate(e.ONE, e.ONE, e.ONE, e.ONE)) : console.warn("blendMode(DARKEST) does not work in your browser in WEBGL mode.");
                                        break;
                                    case n.LIGHTEST:
                                        this.blendExt ? (e.blendEquationSeparate(this.blendExt.MAX || this.blendExt.MAX_EXT, e.FUNC_ADD), e.blendFuncSeparate(e.ONE, e.ONE, e.ONE, e.ONE)) : console.warn("blendMode(LIGHTEST) does not work in your browser in WEBGL mode.");
                                        break;
                                    default:
                                        console.error("Oops! Somehow RendererGL set curBlendMode to an unsupported mode.")
                                }
                                this._isErasing || (this._cachedBlendMode = this.curBlendMode)
                            }
                        };
                        var s = c.default;
                        r.default = s
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.Texture": 343,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.join": 166,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    332: [function(e, t, r) {
                        e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.string.sub"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.hypot"), e("core-js/modules/es.string.sub"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var x = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function n(e) {
                            if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
                            this._renderer = e, this.cameraType = "default", this.useLinePerspective = !0, this.cameraMatrix = new x.default.Matrix, this.projMatrix = new x.default.Matrix, this.yScale = 1
                        }
                        x.default.prototype.camera = function() {
                            var e;
                            this._assert3d("camera");
                            for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return x.default._validateParameters("camera", r), (e = this._renderer._curCamera).camera.apply(e, r), this
                        }, x.default.prototype.perspective = function() {
                            var e;
                            this._assert3d("perspective");
                            for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return x.default._validateParameters("perspective", r), (e = this._renderer._curCamera).perspective.apply(e, r), this
                        }, x.default.prototype.linePerspective = function(e) {
                            if (x.default._validateParameters("linePerspective", arguments), !(this._renderer instanceof x.default.RendererGL)) throw new Error("linePerspective() must be called in WebGL mode.");
                            if (void 0 === e) return this._renderer._curCamera.useLinePerspective;
                            this._renderer._curCamera.useLinePerspective = e
                        }, x.default.prototype.ortho = function() {
                            var e;
                            this._assert3d("ortho");
                            for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return x.default._validateParameters("ortho", r), (e = this._renderer._curCamera).ortho.apply(e, r), this
                        }, x.default.prototype.frustum = function() {
                            var e;
                            this._assert3d("frustum");
                            for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                            return x.default._validateParameters("frustum", r), (e = this._renderer._curCamera).frustum.apply(e, r), this
                        }, x.default.prototype.createCamera = function() {
                            this._assert3d("createCamera");
                            var e = new x.default.Camera(this._renderer);
                            return e._computeCameraDefaultSettings(), e._setDefaultCamera(), this._renderer._curCamera = e
                        }, x.default.Camera = (o(n.prototype, [{
                            key: "perspective",
                            value: function(e, t, r, o) {
                                this.cameraType = 0 < arguments.length ? "custom" : "default", void 0 === e ? (e = this.defaultCameraFOV, this.cameraFOV = e) : this.cameraFOV = this._renderer._pInst._toRadians(e), void 0 === t && (t = this.defaultAspectRatio), void 0 === r && (r = this.defaultCameraNear), void 0 === o && (o = this.defaultCameraFar), r <= 1e-4 && (r = .01, console.log("Avoid perspective near plane values close to or below 0. Setting value to 0.01.")), o < r && console.log("Perspective far plane value is less than near plane value. Nothing will be shown."), this.aspectRatio = t, this.cameraNear = r, this.cameraFar = o, this.projMatrix = x.default.Matrix.identity();
                                var e = 1 / Math.tan(this.cameraFOV / 2),
                                    n = 1 / (this.cameraNear - this.cameraFar);
                                this.projMatrix.set(e / t, 0, 0, 0, 0, -e * this.yScale, 0, 0, 0, 0, (o + r) * n, -1, 0, 0, 2 * o * r * n, 0), this._isActive() && this._renderer.uPMatrix.set(this.projMatrix)
                            }
                        }, {
                            key: "ortho",
                            value: function(e, t, r, o, n, s) {
                                var i = this.fbo || this._renderer,
                                    i = (void 0 === e && (e = -i.width / 2), void 0 === t && (t = +i.width / 2), void 0 === r && (r = -i.height / 2), void 0 === o && (o = +i.height / 2), void 0 === n && (n = 0), void 0 === s && (s = Math.max(i.width, i.height) + 800), this.cameraNear = n, t - e),
                                    a = o - r,
                                    l = (this.cameraFar = s) - n,
                                    c = 2 / i,
                                    u = 2 / a * this.yScale,
                                    d = -2 / l,
                                    t = -(t + e) / i,
                                    e = -(o + r) / a,
                                    i = -(s + n) / l;
                                this.projMatrix = x.default.Matrix.identity(), this.projMatrix.set(c, 0, 0, 0, 0, -u, 0, 0, 0, 0, d, 0, t, e, i, 1), this._isActive() && this._renderer.uPMatrix.set(this.projMatrix), this.cameraType = "custom"
                            }
                        }, {
                            key: "frustum",
                            value: function(e, t, r, o, n, s) {
                                void 0 === e && (e = .05 * -this._renderer.width), void 0 === t && (t = .05 * +this._renderer.width), void 0 === r && (r = .05 * +this._renderer.height), void 0 === o && (o = .05 * -this._renderer.height), void 0 === n && (n = this.defaultCameraNear), void 0 === s && (s = this.defaultCameraFar), this.cameraNear = n;
                                var i = t - e,
                                    a = o - r,
                                    l = (this.cameraFar = s) - n,
                                    c = 2 * n / i,
                                    u = 2 * n / a * this.yScale,
                                    d = -2 * s * n / l,
                                    t = (t + e) / i,
                                    e = (o + r) / a,
                                    i = -(s + n) / l;
                                this.projMatrix = x.default.Matrix.identity(), this.projMatrix.set(c, 0, 0, 0, 0, -u, 0, 0, t, e, i, -1, 0, 0, d, 0), this._isActive() && this._renderer.uPMatrix.set(this.projMatrix), this.cameraType = "custom"
                            }
                        }, {
                            key: "_rotateView",
                            value: function(e, t, r, o) {
                                var n = this.centerX,
                                    s = this.centerY,
                                    i = this.centerZ,
                                    a = (n -= this.eyeX, s -= this.eyeY, i -= this.eyeZ, x.default.Matrix.identity(this._renderer._pInst));
                                a.rotate(this._renderer._pInst._toRadians(e), t, r, o), (e = [n * a.mat4[0] + s * a.mat4[4] + i * a.mat4[8], n * a.mat4[1] + s * a.mat4[5] + i * a.mat4[9], n * a.mat4[2] + s * a.mat4[6] + i * a.mat4[10]])[0] += this.eyeX, e[1] += this.eyeY, e[2] += this.eyeZ, this.camera(this.eyeX, this.eyeY, this.eyeZ, e[0], e[1], e[2], this.upX, this.upY, this.upZ)
                            }
                        }, {
                            key: "roll",
                            value: function(e) {
                                var t = this._getLocalAxes(),
                                    e = x.default.Quat.fromAxisAngle(this._renderer._pInst._toRadians(e), t.z[0], t.z[1], t.z[2]).rotateVector(new x.default.Vector(this.upX, this.upY, this.upZ));
                                this.camera(this.eyeX, this.eyeY, this.eyeZ, this.centerX, this.centerY, this.centerZ, e.x, e.y, e.z)
                            }
                        }, {
                            key: "pan",
                            value: function(e) {
                                var t = this._getLocalAxes();
                                this._rotateView(e, t.y[0], t.y[1], t.y[2])
                            }
                        }, {
                            key: "tilt",
                            value: function(e) {
                                var t = this._getLocalAxes();
                                this._rotateView(e, t.x[0], t.x[1], t.x[2])
                            }
                        }, {
                            key: "lookAt",
                            value: function(e, t, r) {
                                this.camera(this.eyeX, this.eyeY, this.eyeZ, e, t, r, this.upX, this.upY, this.upZ)
                            }
                        }, {
                            key: "camera",
                            value: function(e, t, r, o, n, s, i, a, l) {
                                return void 0 === e && (e = this.defaultEyeX, t = this.defaultEyeY, r = this.defaultEyeZ, o = e, n = t, a = 1, l = i = s = 0), this.eyeX = e, this.eyeY = t, this.eyeZ = r, void 0 !== o && (this.centerX = o, this.centerY = n, this.centerZ = s), void 0 !== i && (this.upX = i, this.upY = a, this.upZ = l), o = this._getLocalAxes(), this.cameraMatrix.set(o.x[0], o.y[0], o.z[0], 0, o.x[1], o.y[1], o.z[1], 0, o.x[2], o.y[2], o.z[2], 0, 0, 0, 0, 1), this.cameraMatrix.translate([n = -e, -t, -r]), this._isActive() && this._renderer.uViewMatrix.set(this.cameraMatrix), this
                            }
                        }, {
                            key: "move",
                            value: function(e, t, r) {
                                var e = [(o = this._getLocalAxes()).x[0] * e, o.x[1] * e, o.x[2] * e],
                                    t = [o.y[0] * t, o.y[1] * t, o.y[2] * t],
                                    o = [o.z[0] * r, o.z[1] * r, o.z[2] * r];
                                this.camera(this.eyeX + e[0] + t[0] + o[0], this.eyeY + e[1] + t[1] + o[1], this.eyeZ + e[2] + t[2] + o[2], this.centerX + e[0] + t[0] + o[0], this.centerY + e[1] + t[1] + o[1], this.centerZ + e[2] + t[2] + o[2], this.upX, this.upY, this.upZ)
                            }
                        }, {
                            key: "setPosition",
                            value: function(e, t, r) {
                                var o = e - this.eyeX,
                                    n = t - this.eyeY,
                                    s = r - this.eyeZ;
                                this.camera(e, t, r, this.centerX + o, this.centerY + n, this.centerZ + s, this.upX, this.upY, this.upZ)
                            }
                        }, {
                            key: "set",
                            value: function(e) {
                                for (var t = 0, r = ["eyeX", "eyeY", "eyeZ", "centerX", "centerY", "centerZ", "upX", "upY", "upZ", "cameraFOV", "aspectRatio", "cameraNear", "cameraFar", "cameraType", "yScale", "useLinePerspective"]; t < r.length; t++) {
                                    var o = r[t];
                                    this[o] = e[o]
                                }
                                this.cameraMatrix = e.cameraMatrix.copy(), this.projMatrix = e.projMatrix.copy(), this._isActive() && (this._renderer.uModelMatrix.reset(), this._renderer.uViewMatrix.set(this.cameraMatrix), this._renderer.uPMatrix.set(this.projMatrix))
                            }
                        }, {
                            key: "slerp",
                            value: function(e, t, r) {
                                var o, n, s, i, a, l, c, u, d, h, f, p, m, y, g, v, b, _;
                                0 === r ? this.set(e) : 1 === r ? this.set(t) : (0 !== this.projMatrix.mat4[15] && (this.projMatrix.mat4[0] = e.projMatrix.mat4[0] * Math.pow(t.projMatrix.mat4[0] / e.projMatrix.mat4[0], r), this.projMatrix.mat4[5] = e.projMatrix.mat4[5] * Math.pow(t.projMatrix.mat4[5] / e.projMatrix.mat4[5], r), this._isActive()) && (this._renderer.uPMatrix.mat4 = this.projMatrix.mat4.slice()), i = new x.default.Vector(e.eyeX, e.eyeY, e.eyeZ), a = new x.default.Vector(t.eyeX, t.eyeY, t.eyeZ), v = new x.default.Vector(e.centerX, e.centerY, e.centerZ), _ = new x.default.Vector(t.centerX, t.centerY, t.centerZ), s = x.default.Vector.dist(i, v), o = x.default.Vector.dist(a, _), o = s * Math.pow(o / s, r), s = x.default.Vector.sub(i, a), n = 1, 1e-6 < (b = (y = i.copy().sub(a).sub(v).add(_)).magSq()) && (n = x.default.Vector.dot(s, y) / b, n = Math.max(0, Math.min(n, 1))), s = x.default.Vector.lerp(x.default.Vector.lerp(i, v, n), x.default.Vector.lerp(a, _, n), r), y = e.cameraMatrix.createSubMatrix3x3(), b = t.cameraMatrix.createSubMatrix3x3(), i = y.row(2), v = b.row(2), a = y.row(1), _ = b.row(1), e = new x.default.Vector, t = new x.default.Vector, l = new x.default.Vector, c = new x.default.Vector, 1 - (u = .5 * ((y = (b = b.mult3x3(y.copy().transpose3x3())).diagonal())[0] + y[1] + y[2] - 1)) < 1e-7 ? (e.set(x.default.Vector.lerp(i, v, r)).normalize(), l.set(e).mult(n * o).add(s), c.set(e).mult((n - 1) * o).add(s), t.set(x.default.Vector.lerp(a, _, r)).normalize()) : (v = 1 / (1 - u), _ = Math.max(y[0], y[1], y[2]), p = b.mat3[1] + b.mat3[3], m = b.mat3[2] + b.mat3[6], g = b.mat3[5] + b.mat3[7], _ = _ === y[0] ? (h = .5 * p * (v /= d = Math.sqrt((y[0] - u) * v)), f = .5 * m * v, .5 * (b.mat3[7] - b.mat3[5]) / d) : _ === y[1] ? (f = .5 * g * (v /= h = Math.sqrt((y[1] - u) * v)), d = .5 * p * v, .5 * (b.mat3[2] - b.mat3[6]) / h) : (d = .5 * m * (v /= f = Math.sqrt((y[2] - u) * v)), h = .5 * g * v, .5 * (b.mat3[3] - b.mat3[1]) / f), p = r * Math.atan2(_, u), m = Math.cos(p), y = Math.sin(p), (_ = new x.default.Matrix("mat3", [m + (g = 1 - m) * d * d, g * (v = d * h) + y * f, g * (b = f * d) - y * h, g * v - y * f, m + g * h * h, g * (r = h * f) + y * d, g * b + y * h, g * r - y * d, m + g * f * f])).multiplyVec3(i, e), l.set(e).mult(n * o).add(s), c.set(e).mult((n - 1) * o).add(s), _.multiplyVec3(a, t)), this.camera(l.x, l.y, l.z, c.x, c.y, c.z, t.x, t.y, t.z))
                            }
                        }, {
                            key: "_computeCameraDefaultSettings",
                            value: function() {
                                this.defaultAspectRatio = this._renderer.width / this._renderer.height, this.defaultEyeX = 0, this.defaultEyeY = 0, this.defaultEyeZ = 800, this.defaultCameraFOV = 2 * Math.atan(this._renderer.height / 2 / this.defaultEyeZ), this.defaultCenterX = 0, this.defaultCenterY = 0, this.defaultCenterZ = 0, this.defaultCameraNear = .1 * this.defaultEyeZ, this.defaultCameraFar = 10 * this.defaultEyeZ
                            }
                        }, {
                            key: "_setDefaultCamera",
                            value: function() {
                                this.cameraFOV = this.defaultCameraFOV, this.aspectRatio = this.defaultAspectRatio, this.eyeX = this.defaultEyeX, this.eyeY = this.defaultEyeY, this.eyeZ = this.defaultEyeZ, this.centerX = this.defaultCenterX, this.centerY = this.defaultCenterY, this.centerZ = this.defaultCenterZ, this.upX = 0, this.upY = 1, this.upZ = 0, this.cameraNear = this.defaultCameraNear, this.cameraFar = this.defaultCameraFar, this.perspective(), this.camera(), this.cameraType = "default"
                            }
                        }, {
                            key: "_resize",
                            value: function() {
                                "default" === this.cameraType && (this._computeCameraDefaultSettings(), this.cameraFOV = this.defaultCameraFOV, this.aspectRatio = this.defaultAspectRatio, this.perspective())
                            }
                        }, {
                            key: "copy",
                            value: function() {
                                var e = new x.default.Camera(this._renderer);
                                return e.cameraFOV = this.cameraFOV, e.aspectRatio = this.aspectRatio, e.eyeX = this.eyeX, e.eyeY = this.eyeY, e.eyeZ = this.eyeZ, e.centerX = this.centerX, e.centerY = this.centerY, e.centerZ = this.centerZ, e.upX = this.upX, e.upY = this.upY, e.upZ = this.upZ, e.cameraNear = this.cameraNear, e.cameraFar = this.cameraFar, e.cameraType = this.cameraType, e.useLinePerspective = this.useLinePerspective, e.cameraMatrix = this.cameraMatrix.copy(), e.projMatrix = this.projMatrix.copy(), e.yScale = this.yScale, e
                            }
                        }, {
                            key: "_getLocalAxes",
                            value: function() {
                                var e = this.eyeX - this.centerX,
                                    t = this.eyeY - this.centerY,
                                    r = this.eyeZ - this.centerZ,
                                    o = (0 !== (o = Math.sqrt(e * e + t * t + r * r)) && (e /= o, t /= o, r /= o), this.upX),
                                    n = (a = this.upY) * r - (l = this.upZ) * t,
                                    s = -o * r + l * e,
                                    i = o * t - a * e,
                                    o = t * i - r * s,
                                    a = -e * i + r * n,
                                    l = e * s - t * n,
                                    c = Math.sqrt(n * n + s * s + i * i);
                                return 0 !== c && (n /= c, s /= c, i /= c), 0 !== (c = Math.sqrt(o * o + a * a + l * l)) && (o /= c, a /= c, l /= c), {
                                    x: [n, s, i],
                                    y: [o, a, l],
                                    z: [e, t, r]
                                }
                            }
                        }, {
                            key: "_orbit",
                            value: function(e, t, r) {
                                var o = this.eyeX - this.centerX,
                                    n = this.eyeY - this.centerY,
                                    s = this.eyeZ - this.centerZ,
                                    i = Math.hypot(o, n, s),
                                    o = new x.default.Vector(o, n, s).normalize(),
                                    n = new x.default.Vector(this.upX, this.upY, this.upZ).normalize(),
                                    s = x.default.Vector.cross(n, o).normalize(),
                                    a = x.default.Vector.cross(s, n),
                                    r = ((i = (i *= Math.pow(10, r)) < this.cameraNear ? this.cameraNear : i) > this.cameraFar && (i = this.cameraFar), Math.acos(Math.max(-1, Math.min(1, x.default.Vector.dot(o, n)))) + t),
                                    t = e;
                                (r <= 0 || r >= Math.PI) && (this.upX *= -1, this.upY *= -1, this.upZ *= -1), n.mult(Math.cos(r)), a.mult(Math.cos(t) * Math.sin(r)), s.mult(Math.sin(t) * Math.sin(r)), o.set(n).add(a).add(s), this.eyeX = i * o.x + this.centerX, this.eyeY = i * o.y + this.centerY, this.eyeZ = i * o.z + this.centerZ, this.camera(this.eyeX, this.eyeY, this.eyeZ, this.centerX, this.centerY, this.centerZ, this.upX, this.upY, this.upZ)
                            }
                        }, {
                            key: "_orbitFree",
                            value: function(e, t, r) {
                                var o = this.eyeX - this.centerX,
                                    n = this.eyeY - this.centerY,
                                    s = this.eyeZ - this.centerZ,
                                    i = Math.hypot(o, n, s),
                                    o = new x.default.Vector(o, n, s).normalize(),
                                    n = new x.default.Vector(this.upX, this.upY, this.upZ),
                                    s = x.default.Vector.cross(n, o).normalize(),
                                    a = x.default.Vector.cross(o, s),
                                    l = Math.atan2(t, e),
                                    l = (a.mult(Math.sin(l)), s.mult(Math.cos(l)).add(a), Math.sqrt(e * e + t * t)),
                                    a = x.default.Vector.cross(o, s),
                                    e = ((i = (i *= Math.pow(10, r)) < this.cameraNear ? this.cameraNear : i) > this.cameraFar && (i = this.cameraFar), Math.cos(l)),
                                    t = Math.sin(l),
                                    c = (r = n.dot(o)) * e + (l = n.dot(s)) * t,
                                    r = -r * t + l * e,
                                    l = n.dot(a);
                                n.x = c * o.x + r * s.x + l * a.x, n.y = c * o.y + r * s.y + l * a.y, n.z = c * o.z + r * s.z + l * a.z, s.mult(-t), o.mult(e).add(s).mult(i), this.camera(o.x + this.centerX, o.y + this.centerY, o.z + this.centerZ, this.centerX, this.centerY, this.centerZ, n.x, n.y, n.z)
                            }
                        }, {
                            key: "_isActive",
                            value: function() {
                                return this === this._renderer._curCamera
                            }
                        }]), n), x.default.prototype.setCamera = function(e) {
                            this._renderer._curCamera = e, this._renderer.uPMatrix.set(e.projMatrix), this._renderer.uViewMatrix.set(e.cameraMatrix)
                        }, e = x.default.Camera, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.math.hypot": 176,
                        "core-js/modules/es.string.sub": 208
                    }],
                    333: [function(e, t, r) {
                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function n() {
                            var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 128;
                            if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
                            this.length = 0, this.data = new Float32Array(e), this.initialLength = e
                        }
                        e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.log2"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.math.log2"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.DataArray = (o(n.prototype, [{
                            key: "dataArray",
                            value: function() {
                                return this.subArray(0, this.length)
                            }
                        }, {
                            key: "clear",
                            value: function() {
                                this.length = 0
                            }
                        }, {
                            key: "rescale",
                            value: function() {
                                var e;
                                this.length < this.data.length / 2 && (e = 1 << Math.ceil(Math.log2(this.length)), (e = new Float32Array(e)).set(this.data.subarray(0, this.length), 0), this.data = e)
                            }
                        }, {
                            key: "reset",
                            value: function() {
                                this.clear(), this.data = new Float32Array(this.initialLength)
                            }
                        }, {
                            key: "push",
                            value: function() {
                                for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
                                this.ensureLength(this.length + t.length), this.data.set(t, this.length), this.length += t.length
                            }
                        }, {
                            key: "slice",
                            value: function(e, t) {
                                return this.data.slice(e, Math.min(t, this.length))
                            }
                        }, {
                            key: "subArray",
                            value: function(e, t) {
                                return this.data.subarray(e, Math.min(t, this.length))
                            }
                        }, {
                            key: "ensureLength",
                            value: function(e) {
                                for (; this.data.length < e;) {
                                    var t = new Float32Array(2 * this.data.length);
                                    t.set(this.data, 0), this.data = t
                                }
                            }
                        }]), n), e = e.default.DataArray, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.math.log2": 177,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.float32-array": 219,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239
                    }],
                    334: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.reflect.get"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint8-clamped-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint8-clamped-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var f = (_ = e("../core/main")) && _.__esModule ? _ : {
                                default: _
                            },
                            a = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")),
                            n = e("./p5.Texture"),
                            p = e("./p5.RendererGL");

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }

                        function c(e, t) {
                            return (e => {
                                if (Array.isArray(e)) return e
                            })(e) || ((e, t) => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
                                    var r = [],
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = e[Symbol.iterator](); !(o = (i = a.next()).done) && (r.push(i.value), !t || r.length !== t); o = !0);
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    return r
                                }
                            })(e, t) || (() => {
                                throw new TypeError("Invalid attempt to destructure non-iterable instance")
                            })()
                        }

                        function s(e, t, r) {
                            return t in e ? Object.defineProperty(e, t, {
                                value: r,
                                enumerable: !0,
                                configurable: !0,
                                writable: !0
                            }) : e[t] = r, e
                        }

                        function u(e, t) {
                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                        }

                        function d(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function h(e, t, r) {
                            t && d(e.prototype, t), r && d(e, r)
                        }

                        function m(e, t, r) {
                            return (m = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(e, t, r) {
                                if (e = ((e, t) => {
                                        for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = g(e)););
                                        return e
                                    })(e, t)) return (e = Object.getOwnPropertyDescriptor(e, t)).get ? e.get.call(r) : e.value
                            })(e, t, r || e)
                        }

                        function y(e, t) {
                            return (y = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function g(e) {
                            return (g = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }
                        var v = (e => {
                                var t = n;
                                if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                                t.prototype = Object.create(e && e.prototype, {
                                    constructor: {
                                        value: t,
                                        writable: !0,
                                        configurable: !0
                                    }
                                }), e && y(t, e);
                                var r, o = function() {
                                    var e, t = g(r),
                                        t = (e = (() => {
                                            if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                                if ("function" == typeof Proxy) return 1;
                                                try {
                                                    return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                                } catch (e) {}
                                            }
                                        })() ? (e = g(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments), this);
                                    if (!e || "object" !== i(e) && "function" != typeof e) {
                                        if (void 0 !== t) return t;
                                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                    }
                                    return e
                                };

                                function n(e) {
                                    var t;
                                    return u(this, n), (t = o.call(this, e.target._renderer)).fbo = e, t.yScale = -1, t
                                }
                                return h(r = n, [{
                                    key: "_computeCameraDefaultSettings",
                                    value: function() {
                                        m(g(n.prototype), "_computeCameraDefaultSettings", this).call(this), this.defaultAspectRatio = this.fbo.width / this.fbo.height, this.defaultCameraFOV = 2 * Math.atan(this.fbo.height / 2 / this.defaultEyeZ)
                                    }
                                }]), n
                            })(f.default.Camera),
                            b = (f.default.FramebufferCamera = v, h(w, [{
                                key: "rawTexture",
                                value: function() {
                                    return this.framebuffer[this.property]
                                }
                            }, {
                                key: "width",
                                get: function() {
                                    return this.framebuffer.width * this.framebuffer.density
                                }
                            }, {
                                key: "height",
                                get: function() {
                                    return this.framebuffer.height * this.framebuffer.density
                                }
                            }]), w),
                            _ = (f.default.FramebufferTexture = b, h(x, [{
                                key: "resize",
                                value: function(e, t) {
                                    this._autoSized = !1;
                                    var r = this.target._renderer._adjustDimensions(e, t);
                                    e = r.adjustedWidth, t = r.adjustedHeight, this.width = e, this.height = t, this._handleResize()
                                }
                            }, {
                                key: "pixelDensity",
                                value: function(e) {
                                    if (!e) return this.density;
                                    this._autoSized = !1, this.density = e, this._handleResize()
                                }
                            }, {
                                key: "autoSized",
                                value: function(e) {
                                    if (void 0 === e) return this._autoSized;
                                    this._autoSized = e, this._handleResize()
                                }
                            }, {
                                key: "_checkIfFormatsAvailable",
                                value: function() {
                                    var e = this.gl;
                                    this.useDepth && this.target.webglVersion === a.WEBGL && !e.getExtension("WEBGL_depth_texture") && (console.warn("Unable to create depth textures in this environment. Falling back to a framebuffer without depth."), this.useDepth = !1), this.useDepth && this.target.webglVersion === a.WEBGL && this.depthFormat === a.FLOAT && (console.warn("FLOAT depth format is unavailable in WebGL 1. Defaulting to UNSIGNED_INT."), this.depthFormat = a.UNSIGNED_INT), [a.UNSIGNED_BYTE, a.FLOAT, a.HALF_FLOAT].includes(this.format) || (console.warn("Unknown Framebuffer format. Please use UNSIGNED_BYTE, FLOAT, or HALF_FLOAT. Defaulting to UNSIGNED_BYTE."), this.format = a.UNSIGNED_BYTE), this.useDepth && ![a.UNSIGNED_INT, a.FLOAT].includes(this.depthFormat) && (console.warn("Unknown Framebuffer depth format. Please use UNSIGNED_INT or FLOAT. Defaulting to FLOAT."), this.depthFormat = a.FLOAT), (e = (0, n.checkWebGLCapabilities)(this.target._renderer)).float || this.format !== a.FLOAT || (console.warn("This environment does not support FLOAT textures. Falling back to UNSIGNED_BYTE."), this.format = a.UNSIGNED_BYTE), this.useDepth && !e.float && this.depthFormat === a.FLOAT && (console.warn("This environment does not support FLOAT depth textures. Falling back to UNSIGNED_INT."), this.depthFormat = a.UNSIGNED_INT), e.halfFloat || this.format !== a.HALF_FLOAT || (console.warn("This environment does not support HALF_FLOAT textures. Falling back to UNSIGNED_BYTE."), this.format = a.UNSIGNED_BYTE), this.channels === a.RGB && [a.FLOAT, a.HALF_FLOAT].includes(this.format) && (console.warn("FLOAT and HALF_FLOAT formats do not work cross-platform with only RGB channels. Falling back to RGBA."), this.channels = a.RGBA)
                                }
                            }, {
                                key: "_recreateTextures",
                                value: function() {
                                    var e = this.gl,
                                        t = (this._updateSize(), e.getParameter(e.TEXTURE_BINDING_2D)),
                                        r = e.getParameter(e.FRAMEBUFFER_BINDING),
                                        o = e.createTexture();
                                    if (!o) throw new Error("Unable to create color texture");
                                    e.bindTexture(e.TEXTURE_2D, o);
                                    var n = this._glColorFormat();
                                    if (e.texImage2D(e.TEXTURE_2D, 0, n.internalFormat, this.width * this.density, this.height * this.density, 0, n.format, n.type, null), this.colorTexture = o, e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.TEXTURE_2D, o, 0), this.useDepth) {
                                        if (!(o = e.createTexture())) throw new Error("Unable to create depth texture");
                                        var s = this._glDepthFormat();
                                        e.bindTexture(e.TEXTURE_2D, o), e.texImage2D(e.TEXTURE_2D, 0, s.internalFormat, this.width * this.density, this.height * this.density, 0, s.format, s.type, null), e.framebufferTexture2D(e.FRAMEBUFFER, this.useStencil ? e.DEPTH_STENCIL_ATTACHMENT : e.DEPTH_ATTACHMENT, e.TEXTURE_2D, o, 0), this.depthTexture = o
                                    }
                                    this.antialias && (this.colorRenderbuffer = e.createRenderbuffer(), e.bindRenderbuffer(e.RENDERBUFFER, this.colorRenderbuffer), e.renderbufferStorageMultisample(e.RENDERBUFFER, Math.max(0, Math.min(this.antialiasSamples, e.getParameter(e.MAX_SAMPLES))), n.internalFormat, this.width * this.density, this.height * this.density), this.useDepth && (s = this._glDepthFormat(), this.depthRenderbuffer = e.createRenderbuffer(), e.bindRenderbuffer(e.RENDERBUFFER, this.depthRenderbuffer), e.renderbufferStorageMultisample(e.RENDERBUFFER, Math.max(0, Math.min(this.antialiasSamples, e.getParameter(e.MAX_SAMPLES))), s.internalFormat, this.width * this.density, this.height * this.density)), e.bindFramebuffer(e.FRAMEBUFFER, this.aaFramebuffer), e.framebufferRenderbuffer(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.RENDERBUFFER, this.colorRenderbuffer), this.useDepth) && e.framebufferRenderbuffer(e.FRAMEBUFFER, this.useStencil ? e.DEPTH_STENCIL_ATTACHMENT : e.DEPTH_ATTACHMENT, e.RENDERBUFFER, this.depthRenderbuffer), this.useDepth && (this.depth = new b(this, "depthTexture"), o = e.NEAREST, this.depthP5Texture = new f.default.Texture(this.target._renderer, this.depth, {
                                        minFilter: o,
                                        magFilter: o
                                    }), this.target._renderer.textures.set(this.depth, this.depthP5Texture)), this.color = new b(this, "colorTexture"), n = this.textureFiltering === a.LINEAR ? e.LINEAR : e.NEAREST, this.colorP5Texture = new f.default.Texture(this.target._renderer, this.color, {
                                        minFilter: n,
                                        magFilter: n
                                    }), this.target._renderer.textures.set(this.color, this.colorP5Texture), e.bindTexture(e.TEXTURE_2D, t), e.bindFramebuffer(e.FRAMEBUFFER, r)
                                }
                            }, {
                                key: "_glColorFormat",
                                value: function() {
                                    var e, t, r = this.gl,
                                        o = this.format === a.FLOAT ? r.FLOAT : this.format === a.HALF_FLOAT ? this.target.webglVersion === a.WEBGL2 ? r.HALF_FLOAT : r.getExtension("OES_texture_half_float").HALF_FLOAT_OES : r.UNSIGNED_BYTE,
                                        n = this.channels === a.RGBA ? r.RGBA : r.RGB;
                                    return {
                                        internalFormat: this.target.webglVersion === a.WEBGL2 ? (s(t = {}, r.FLOAT, s({}, r.RGBA, r.RGBA32F)), s(t, r.HALF_FLOAT, s({}, r.RGBA, r.RGBA16F)), s(t, r.UNSIGNED_BYTE, (s(e = {}, r.RGBA, r.RGBA8), s(e, r.RGB, r.RGB8), e)), t[o][n]) : this.format === a.HALF_FLOAT ? r.RGBA : n,
                                        format: n,
                                        type: o
                                    }
                                }
                            }, {
                                key: "_glDepthFormat",
                                value: function() {
                                    var e = this.gl,
                                        t = this.useStencil ? this.depthFormat === a.FLOAT ? e.FLOAT_32_UNSIGNED_INT_24_8_REV : this.target.webglVersion === a.WEBGL2 ? e.UNSIGNED_INT_24_8 : e.getExtension("WEBGL_depth_texture").UNSIGNED_INT_24_8_WEBGL : this.depthFormat === a.FLOAT ? e.FLOAT : e.UNSIGNED_INT,
                                        r = this.useStencil ? e.DEPTH_STENCIL : e.DEPTH_COMPONENT;
                                    return {
                                        internalFormat: e = this.useStencil ? this.depthFormat === a.FLOAT ? e.DEPTH32F_STENCIL8 : this.target.webglVersion === a.WEBGL2 ? e.DEPTH24_STENCIL8 : e.DEPTH_STENCIL : this.target.webglVersion === a.WEBGL2 ? this.depthFormat === a.FLOAT ? e.DEPTH_COMPONENT32F : e.DEPTH_COMPONENT24 : e.DEPTH_COMPONENT,
                                        format: r,
                                        type: t
                                    }
                                }
                            }, {
                                key: "_updateSize",
                                value: function() {
                                    this._autoSized && (this.width = this.target.width, this.height = this.target.height, this.density = this.target.pixelDensity())
                                }
                            }, {
                                key: "_canvasSizeChanged",
                                value: function() {
                                    this._autoSized && this._handleResize()
                                }
                            }, {
                                key: "_handleResize",
                                value: function() {
                                    var e = this.color,
                                        t = this.depth,
                                        r = this.colorRenderbuffer,
                                        o = this.depthRenderbuffer,
                                        e = (this._deleteTexture(e), t && this._deleteTexture(t), this.gl);
                                    r && e.deleteRenderbuffer(r), o && e.deleteRenderbuffer(o), this._recreateTextures(), this.defaultCamera._resize()
                                }
                            }, {
                                key: "createCamera",
                                value: function() {
                                    var e = new v(this);
                                    return e._computeCameraDefaultSettings(), e._setDefaultCamera(), this.target._renderer._curCamera = e
                                }
                            }, {
                                key: "_deleteTexture",
                                value: function(e) {
                                    this.gl.deleteTexture(e.rawTexture()), this.target._renderer.textures.delete(e)
                                }
                            }, {
                                key: "remove",
                                value: function() {
                                    var e = this.gl;
                                    this._deleteTexture(this.color), this.depth && this._deleteTexture(this.depth), e.deleteFramebuffer(this.framebuffer), this.aaFramebuffer && e.deleteFramebuffer(this.aaFramebuffer), this.depthRenderbuffer && e.deleteRenderbuffer(this.depthRenderbuffer), this.colorRenderbuffer && e.deleteRenderbuffer(this.colorRenderbuffer), this.target._renderer.framebuffers.delete(this)
                                }
                            }, {
                                key: "begin",
                                value: function() {
                                    this.prevFramebuffer = this.target._renderer.activeFramebuffer(), this.prevFramebuffer && this.prevFramebuffer._beforeEnd(), this.target._renderer.activeFramebuffers.push(this), this._beforeBegin(), this.target.push(), this.target.setCamera(this.defaultCamera), this.target.resetMatrix(), this.target._renderer.uViewMatrix.set(this.target._renderer._curCamera.cameraMatrix), this.target._renderer.uModelMatrix.reset(), this.target._renderer._applyStencilTestIfClipping()
                                }
                            }, {
                                key: "_framebufferToBind",
                                value: function() {
                                    return this.antialias ? this.aaFramebuffer : this.framebuffer
                                }
                            }, {
                                key: "_beforeBegin",
                                value: function() {
                                    var e = this.gl;
                                    e.bindFramebuffer(e.FRAMEBUFFER, this._framebufferToBind()), this.target._renderer.viewport(this.width * this.density, this.height * this.density)
                                }
                            }, {
                                key: "_beforeEnd",
                                value: function() {
                                    if (this.antialias) {
                                        var e = this.gl,
                                            t = (e.bindFramebuffer(e.READ_FRAMEBUFFER, this.aaFramebuffer), e.bindFramebuffer(e.DRAW_FRAMEBUFFER, this.framebuffer), [
                                                [e.COLOR_BUFFER_BIT, this.colorP5Texture.glMagFilter]
                                            ]);
                                        this.useDepth && t.push([e.DEPTH_BUFFER_BIT, this.depthP5Texture.glMagFilter]);
                                        for (var r = 0, o = t; r < o.length; r++) {
                                            var n = c(o[r], 2),
                                                s = n[0];
                                            e.blitFramebuffer(0, 0, this.width * this.density, this.height * this.density, 0, 0, this.width * this.density, this.height * this.density, s, n[1])
                                        }
                                    }
                                }
                            }, {
                                key: "end",
                                value: function() {
                                    var e = this.gl;
                                    if (this.target.pop(), this.target._renderer.activeFramebuffers.pop() !== this) throw new Error("It looks like you've called end() while another Framebuffer is active.");
                                    this._beforeEnd(), this.prevFramebuffer ? this.prevFramebuffer._beforeBegin() : (e.bindFramebuffer(e.FRAMEBUFFER, null), this.target._renderer.viewport(this.target._renderer._origViewport.width, this.target._renderer._origViewport.height)), this.target._renderer._applyStencilTestIfClipping()
                                }
                            }, {
                                key: "draw",
                                value: function(e) {
                                    this.begin(), e(), this.end()
                                }
                            }, {
                                key: "loadPixels",
                                value: function() {
                                    var e = this.gl,
                                        t = this.target._renderer.activeFramebuffer(),
                                        r = (e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer), this._glColorFormat());
                                    this.pixels = (0, p.readPixelsWebGL)(this.pixels, e, this.framebuffer, 0, 0, this.width * this.density, this.height * this.density, r.format, r.type), t ? e.bindFramebuffer(e.FRAMEBUFFER, t._framebufferToBind()) : e.bindFramebuffer(e.FRAMEBUFFER, null)
                                }
                            }, {
                                key: "get",
                                value: function(e, t, r, o) {
                                    f.default._validateParameters("p5.Framebuffer.get", arguments);
                                    var n = this._glColorFormat();
                                    if (void 0 === e && void 0 === t) t = e = 0, r = this.width, o = this.height;
                                    else if (void 0 === r && void 0 === o) return (e < 0 || t < 0 || e >= this.width || t >= this.height) && (console.warn("The x and y values passed to p5.Framebuffer.get are outside of its range and will be clamped."), e = this.target.constrain(e, 0, this.width - 1), t = this.target.constrain(t, 0, this.height - 1)), (0, p.readPixelWebGL)(this.gl, this.framebuffer, e * this.density, t * this.density, n.format, n.type);
                                    e = this.target.constrain(e, 0, this.width - 1), t = this.target.constrain(t, 0, this.height - 1), r = this.target.constrain(r, 1, this.width - e), o = this.target.constrain(o, 1, this.height - t);
                                    for (var s = (0, p.readPixelsWebGL)(void 0, this.gl, this.framebuffer, e * this.density, t * this.density, r * this.density, o * this.density, n.format, n.type), i = new Uint8ClampedArray(r * o * this.density * this.density * 4), a = (i.fill(255), n.type === this.gl.RGB ? 3 : 4), l = 0; l < o * this.density; l++)
                                        for (var c = 0; c < r * this.density; c++)
                                            for (var u = 0; u < 4; u++) {
                                                var d, h = 4 * (l * r * this.density + c) + u;
                                                u < a && (d = 4 == a ? h : (l * r * this.density + c) * a + u, i[h] = s[d])
                                            }
                                    return (e = new f.default.Image(r * this.density, o * this.density)).imageData = e.canvas.getContext("2d").createImageData(e.width, e.height), e.imageData.data.set(i), e.pixels = e.imageData.data, e.updatePixels(), 1 !== this.density && e.resize(r, o), e
                                }
                            }, {
                                key: "updatePixels",
                                value: function() {
                                    var e = this.gl,
                                        t = (this.colorP5Texture.bindTexture(), this._glColorFormat()),
                                        r = t.format === e.RGBA ? 4 : 3,
                                        r = this.width * this.height * this.density * this.density * r,
                                        o = t.type === e.UNSIGNED_BYTE ? Uint8Array : Float32Array;
                                    if (!(this.pixels instanceof o) || this.pixels.length !== r) throw new Error("The pixels array has not been set correctly. Please call loadPixels() before updatePixels().");
                                    e.texImage2D(e.TEXTURE_2D, 0, t.internalFormat, this.width * this.density, this.height * this.density, 0, t.format, t.type, this.pixels), this.colorP5Texture.unbindTexture(), o = this.target._renderer.activeFramebuffer(), this.antialias ? (this.begin(), this.target.push(), this.target.imageMode(this.target.CENTER), this.target.resetMatrix(), this.target.noStroke(), this.target.clear(), this.target.image(this, 0, 0), this.target.pop(), this.useDepth && (e.clearDepth(1), e.clear(e.DEPTH_BUFFER_BIT)), this.end()) : (e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer), this.useDepth && (e.clearDepth(1), e.clear(e.DEPTH_BUFFER_BIT)), o ? e.bindFramebuffer(e.FRAMEBUFFER, o._framebufferToBind()) : e.bindFramebuffer(e.FRAMEBUFFER, null))
                                }
                            }]), x),
                            e = f.default.Framebuffer = _;

                        function x(e) {
                            var t = this,
                                r = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {},
                                o = (u(this, x), this.target = e, this.target._renderer.framebuffers.add(this), this._isClipApplied = !1, this.pixels = [], this.format = r.format || a.UNSIGNED_BYTE, this.channels = r.channels || (e._renderer._pInst._glAttributes.alpha ? a.RGBA : a.RGB), this.useDepth = void 0 === r.depth || r.depth, this.depthFormat = r.depthFormat || a.FLOAT, this.textureFiltering = r.textureFiltering || a.LINEAR, void 0 === r.antialias ? this.antialiasSamples = e._renderer._pInst._glAttributes.antialias ? 2 : 0 : "number" == typeof r.antialias ? this.antialiasSamples = r.antialias : this.antialiasSamples = r.antialias ? 2 : 0, this.antialias = 0 < this.antialiasSamples, this.antialias && e.webglVersion !== a.WEBGL2 && (console.warn("Antialiasing is unsupported in a WebGL 1 context"), this.antialias = !1), this.density = r.density || e.pixelDensity(), e._renderer.GL);
                            if (this.gl = o, r.width && r.height ? (n = e._renderer._adjustDimensions(r.width, r.height), this.width = n.adjustedWidth, this.height = n.adjustedHeight, this._autoSized = !1) : (void 0 === r.width != (void 0 === r.height) && console.warn("Please supply both width and height for a framebuffer to give it a size. Only one was given, so the framebuffer will match the size of its canvas."), this.width = e.width, this.height = e.height, this._autoSized = !0), this._checkIfFormatsAvailable(), r.stencil && !this.useDepth && console.warn("A stencil buffer can only be used if also using depth. Since the framebuffer has no depth buffer, the stencil buffer will be ignored."), this.useStencil = this.useDepth && (void 0 === r.stencil || r.stencil), this.framebuffer = o.createFramebuffer(), !this.framebuffer) throw new Error("Unable to create a framebuffer");
                            if (this.antialias && (this.aaFramebuffer = o.createFramebuffer(), !this.aaFramebuffer)) throw new Error("Unable to create a framebuffer for antialiasing");
                            this._recreateTextures();
                            var n = this.target._renderer._curCamera;
                            this.defaultCamera = this.createCamera(), this.filterCamera = this.createCamera(), this.target._renderer._curCamera = n, this.draw(function() {
                                return t.target.clear()
                            })
                        }

                        function w(e, t) {
                            u(this, w), this.framebuffer = e, this.property = t
                        }
                        r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.RendererGL": 341,
                        "./p5.Texture": 343,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.reflect.get": 193,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.float32-array": 219,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/es.typed-array.uint8-clamped-array": 243,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    335: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.flat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.unscopables.flat"), e("core-js/modules/es.array-buffer.constructor"), e("core-js/modules/es.map"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.entries"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.sub"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.flat"), e("core-js/modules/es.array.for-each"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.last-index-of"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.unscopables.flat"), e("core-js/modules/es.array-buffer.constructor"), e("core-js/modules/es.map"), e("core-js/modules/es.number.constructor"), e("core-js/modules/es.object.entries"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.sub"), e("core-js/modules/web.dom-collections.for-each"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var F = (l = e("../core/main")) && l.__esModule ? l : {
                                default: l
                            },
                            m = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function u(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function N(e, t) {
                            return (e => {
                                if (Array.isArray(e)) return e
                            })(e) || ((e, t) => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
                                    var r = [],
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = e[Symbol.iterator](); !(o = (i = a.next()).done) && (r.push(i.value), !t || r.length !== t); o = !0);
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    return r
                                }
                            })(e, t) || (() => {
                                throw new TypeError("Invalid attempt to destructure non-iterable instance")
                            })()
                        }

                        function n(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function s(e, t, r) {
                            if (!(this instanceof s)) throw new TypeError("Cannot call a class as a function");
                            this.vertices = [], this.boundingBoxCache = null, this.lineVertices = new F.default.DataArray, this.lineTangentsIn = new F.default.DataArray, this.lineTangentsOut = new F.default.DataArray, this.lineSides = new F.default.DataArray, this.vertexNormals = [], this.faces = [], this.uvs = [], this.edges = [], this.vertexColors = [], this.vertexStrokeColors = [], this.lineVertexColors = new F.default.DataArray, this.detailX = void 0 !== e ? e : 1, this.detailY = void 0 !== t ? t : 1, this.dirtyFlags = {}, this._hasFillTransparency = void 0, this._hasStrokeTransparency = void 0, r instanceof Function && r.call(this)
                        }
                        F.default.Geometry = (n(s.prototype, [{
                            key: "calculateBoundingBox",
                            value: function() {
                                if (!this.boundingBoxCache) {
                                    for (var e = new F.default.Vector(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE), t = new F.default.Vector(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE), r = 0; r < this.vertices.length; r++) {
                                        var o = this.vertices[r];
                                        e.x = Math.min(e.x, o.x), e.y = Math.min(e.y, o.y), e.z = Math.min(e.z, o.z), t.x = Math.max(t.x, o.x), t.y = Math.max(t.y, o.y), t.z = Math.max(t.z, o.z)
                                    }
                                    var n = new F.default.Vector(t.x - e.x, t.y - e.y, t.z - e.z),
                                        s = new F.default.Vector((e.x + t.x) / 2, (e.y + t.y) / 2, (e.z + t.z) / 2);
                                    this.boundingBoxCache = {
                                        min: e,
                                        max: t,
                                        size: n,
                                        offset: s
                                    }
                                }
                                return this.boundingBoxCache
                            }
                        }, {
                            key: "reset",
                            value: function() {
                                this._hasFillTransparency = void 0, this._hasStrokeTransparency = void 0, this.lineVertices.clear(), this.lineTangentsIn.clear(), this.lineTangentsOut.clear(), this.lineSides.clear(), this.vertices.length = 0, this.edges.length = 0, this.vertexColors.length = 0, this.vertexStrokeColors.length = 0, this.lineVertexColors.clear(), this.vertexNormals.length = 0, this.uvs.length = 0, this.dirtyFlags = {}
                            }
                        }, {
                            key: "hasFillTransparency",
                            value: function() {
                                if (void 0 === this._hasFillTransparency) {
                                    this._hasFillTransparency = !1;
                                    for (var e = 0; e < this.vertexColors.length; e += 4)
                                        if (this.vertexColors[e + 3] < 1) {
                                            this._hasFillTransparency = !0;
                                            break
                                        }
                                }
                                return this._hasFillTransparency
                            }
                        }, {
                            key: "hasStrokeTransparency",
                            value: function() {
                                if (void 0 === this._hasStrokeTransparency) {
                                    this._hasStrokeTransparency = !1;
                                    for (var e = 0; e < this.lineVertexColors.length; e += 4)
                                        if (this.lineVertexColors[e + 3] < 1) {
                                            this._hasStrokeTransparency = !0;
                                            break
                                        }
                                }
                                return this._hasStrokeTransparency
                            }
                        }, {
                            key: "clearColors",
                            value: function() {
                                return this.vertexColors = [], this
                            }
                        }, {
                            key: "saveObj",
                            value: function() {
                                var r = this,
                                    e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "model.obj",
                                    o = "";
                                if (this.vertices.forEach(function(e) {
                                        o += "v ".concat(e.x, " ").concat(e.y, " ").concat(e.z, "\n")
                                    }), this.uvs && 0 < this.uvs.length)
                                    for (var t = 0; t < this.uvs.length; t += 2) o += "vt ".concat(this.uvs[t], " ").concat(this.uvs[t + 1], "\n");
                                this.vertexNormals && 0 < this.vertexNormals.length && this.vertexNormals.forEach(function(e) {
                                    o += "vn ".concat(e.x, " ").concat(e.y, " ").concat(e.z, "\n")
                                }), this.faces.forEach(function(e) {
                                    var t = "f";
                                    e.forEach(function(e) {
                                        t = t + " " + (e + 1), (0 < r.vertexNormals.length || 0 < r.uvs.length) && (t += "/", 0 < r.uvs.length && (t += e + 1), t += "/", 0 < r.vertexNormals.length) && (t += e + 1)
                                    }), o += t + "\n"
                                });
                                var n = new Blob([o], {
                                    type: "text/plain"
                                });
                                F.default.prototype.downloadFile(n, e, "obj")
                            }
                        }, {
                            key: "saveStl",
                            value: function() {
                                var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : "model.stl",
                                    t = void 0 !== (t = (1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}).binary) && t,
                                    r = e.substring(0, e.lastIndexOf(".")),
                                    o = [],
                                    n = !0,
                                    s = !1,
                                    i = void 0;
                                try {
                                    for (var a, l = this.faces[Symbol.iterator](); !(n = (a = l.next()).done); n = !0) {
                                        var c = a.value,
                                            u = F.default.Vector.sub(this.vertices[c[1]], this.vertices[c[0]]),
                                            d = F.default.Vector.sub(this.vertices[c[2]], this.vertices[c[0]]),
                                            h = u.y * d.z - u.z * d.y,
                                            f = u.z * d.x - u.x * d.z,
                                            p = u.x * d.y - u.y * d.x;
                                        o.push(new F.default.Vector(h, f, p).normalize())
                                    }
                                } catch (e) {
                                    s = !0, i = e
                                } finally {
                                    try {
                                        n || null == l.return || l.return()
                                    } finally {
                                        if (s) throw i
                                    }
                                }
                                if (t) {
                                    var m = 80,
                                        s = 2 * this.faces.length + 3 * this.faces.length * 4 * 4 + 80 + 4,
                                        i = new ArrayBuffer(s);
                                    (T = new DataView(i)).setUint32(m, this.faces.length, !0), m += 4;
                                    for (var y = 0, g = Object.entries(this.faces); y < g.length; y++) {
                                        var v = (b = N(g[y], 2))[0],
                                            b = b[1],
                                            v = o[v],
                                            _ = (T.setFloat32(m, v.x, !0), m += 4, T.setFloat32(m, v.y, !0), m += 4, T.setFloat32(m, v.z, !0), m += 4, !0),
                                            v = !1,
                                            x = void 0;
                                        try {
                                            for (var w, j = b[Symbol.iterator](); !(_ = (w = j.next()).done); _ = !0) {
                                                var R = w.value,
                                                    S = this.vertices[R];
                                                T.setFloat32(m, S.x, !0), m += 4, T.setFloat32(m, S.y, !0), m += 4, T.setFloat32(m, S.z, !0), m += 4
                                            }
                                        } catch (e) {
                                            v = !0, x = e
                                        } finally {
                                            try {
                                                _ || null == j.return || j.return()
                                            } finally {
                                                if (v) throw x
                                            }
                                        }
                                        T.setUint16(m, 0, !0), m += 2
                                    }
                                } else {
                                    for (var T = "solid " + r + "\n", E = 0, k = Object.entries(this.faces); E < k.length; E++) {
                                        var M = (O = N(k[E], 2))[0],
                                            O = O[1],
                                            C = (T = T + (" facet norm " + (M = o[M]).x) + " " + M.y + " " + M.z + "\n  outer loop\n", !0),
                                            M = !1,
                                            A = void 0;
                                        try {
                                            for (var L, P = O[Symbol.iterator](); !(C = (L = P.next()).done); C = !0) {
                                                var D = L.value,
                                                    I = this.vertices[D];
                                                T += "   vertex " + I.x + " " + I.y + " " + I.z + "\n"
                                            }
                                        } catch (e) {
                                            M = !0, A = e
                                        } finally {
                                            try {
                                                C || null == P.return || P.return()
                                            } finally {
                                                if (M) throw A
                                            }
                                        }
                                        T += "  endloop\n endfacet\n"
                                    }
                                    T += "endsolid " + r + "\n"
                                }
                                t = new Blob([T], {
                                    type: "text/plain"
                                }), F.default.prototype.downloadFile(t, e, "stl")
                            }
                        }, {
                            key: "flipU",
                            value: function() {
                                this.uvs = this.uvs.flat().map(function(e, t) {
                                    return t % 2 == 0 ? 1 - e : e
                                })
                            }
                        }, {
                            key: "flipV",
                            value: function() {
                                this.uvs = this.uvs.flat().map(function(e, t) {
                                    return t % 2 == 0 ? e : 1 - e
                                })
                            }
                        }, {
                            key: "computeFaces",
                            value: function() {
                                this.faces.length = 0;
                                for (var e, t, r, o = this.detailX + 1, n = 0; n < this.detailY; n++)
                                    for (var s = 0; s < this.detailX; s++) t = (n + 1) * o + s + 1, this.faces.push([n * o + s, e = n * o + s + 1, r = (n + 1) * o + s]), this.faces.push([r, e, t]);
                                return this
                            }
                        }, {
                            key: "_getFaceNormal",
                            value: function(e) {
                                var e = this.faces[e],
                                    t = this.vertices[e[0]],
                                    r = this.vertices[e[1]],
                                    e = this.vertices[e[2]],
                                    r = F.default.Vector.sub(r, t),
                                    e = F.default.Vector.sub(e, t),
                                    t = F.default.Vector.cross(r, e),
                                    o = F.default.Vector.mag(t);
                                return 0 === (r = o / (F.default.Vector.mag(r) * F.default.Vector.mag(e))) || isNaN(r) ? (console.warn("p5.Geometry.prototype._getFaceNormal:", "face has colinear sides or a repeated vertex"), t) : (1 < r && (r = 1), t.mult(Math.asin(r) / o))
                            }
                        }, {
                            key: "computeNormals",
                            value: function() {
                                var e, s = this,
                                    t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : m.FLAT,
                                    r = (1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}).roundToPrecision,
                                    i = this.vertexNormals,
                                    o = this.vertices,
                                    n = this.faces;
                                if (t === m.SMOOTH) {
                                    for (var a = {}, l = [], c = Math.pow(10, void 0 === r ? 3 : r), u = function(e) {
                                            return Math.round(e * c) / c
                                        }, d = function(e) {
                                            return "".concat(u(e.x), ",").concat(u(e.y), ",").concat(u(e.z))
                                        }, h = 0; h < o.length; h++) {
                                        var f = o[h],
                                            p = d(f);
                                        void 0 === a[p] && (a[p] = l.length, l.push(f))
                                    }
                                    n.forEach(function(e) {
                                        for (var t = 0; t < 3; ++t) {
                                            var r = e[t],
                                                r = o[r],
                                                r = d(r);
                                            e[t] = a[r]
                                        }
                                    }), this.edges.forEach(function(e) {
                                        for (var t = 0; t < 2; ++t) {
                                            var r = e[t],
                                                r = o[r],
                                                r = d(r);
                                            e[t] = a[r]
                                        }
                                    }), this.vertices = o = l
                                }
                                for (e = i.length = 0; e < o.length; ++e) i.push(new F.default.Vector);
                                for (n.forEach(function(e, t) {
                                        for (var r = s._getFaceNormal(t), o = 0; o < 3; ++o) {
                                            var n = e[o];
                                            i[n].add(r)
                                        }
                                    }), e = 0; e < o.length; ++e) i[e].normalize();
                                return this
                            }
                        }, {
                            key: "averageNormals",
                            value: function() {
                                for (var e = 0; e <= this.detailY; e++) {
                                    var t = this.detailX + 1,
                                        r = F.default.Vector.add(this.vertexNormals[e * t], this.vertexNormals[e * t + this.detailX]),
                                        r = F.default.Vector.div(r, 2);
                                    this.vertexNormals[e * t] = r, this.vertexNormals[e * t + this.detailX] = r
                                }
                                return this
                            }
                        }, {
                            key: "averagePoleNormals",
                            value: function() {
                                for (var e = new F.default.Vector(0, 0, 0), t = 0; t < this.detailX; t++) e.add(this.vertexNormals[t]);
                                for (var e = F.default.Vector.div(e, this.detailX), r = 0; r < this.detailX; r++) this.vertexNormals[r] = e;
                                e = new F.default.Vector(0, 0, 0);
                                for (var o = this.vertices.length - 1; o > this.vertices.length - 1 - this.detailX; o--) e.add(this.vertexNormals[o]);
                                e = F.default.Vector.div(e, this.detailX);
                                for (var n = this.vertices.length - 1; n > this.vertices.length - 1 - this.detailX; n--) this.vertexNormals[n] = e;
                                return this
                            }
                        }, {
                            key: "_makeTriangleEdges",
                            value: function() {
                                for (var e = this.edges.length = 0; e < this.faces.length; e++) this.edges.push([this.faces[e][0], this.faces[e][1]]), this.edges.push([this.faces[e][1], this.faces[e][2]]), this.edges.push([this.faces[e][2], this.faces[e][0]]);
                                return this
                            }
                        }, {
                            key: "_edgesToVertices",
                            value: function() {
                                this.lineVertices.clear(), this.lineTangentsIn.clear(), this.lineTangentsOut.clear(), this.lineSides.clear();
                                for (var e, t = new Map, r = new Set, o = 0; o < this.edges.length; o++) {
                                    var n, s = this.edges[o - 1],
                                        i = this.edges[o],
                                        a = this.vertices[i[0]],
                                        l = this.vertices[i[1]],
                                        c = 0 < this.vertexStrokeColors.length && s ? this.vertexStrokeColors.slice(4 * s[1], 4 * (s[1] + 1)) : [0, 0, 0, 0],
                                        u = 0 < this.vertexStrokeColors.length ? this.vertexStrokeColors.slice(4 * i[0], 4 * (i[0] + 1)) : [0, 0, 0, 0],
                                        d = 0 < this.vertexStrokeColors.length ? this.vertexStrokeColors.slice(4 * i[1], 4 * (i[1] + 1)) : [0, 0, 0, 0],
                                        h = l.copy().sub(a).normalize(),
                                        f = 0 < h.magSq();
                                    f && this._addSegment(a, l, u, d, h), 0 < o && s[1] === i[0] ? r.has(i[0]) || (r.add(i[0]), t.delete(i[0]), e && f && h.dot(e) < 1 - 1e-8 && this._addJoin(a, e, h, u)) : (f && !r.has(i[0]) && ((n = t.get(i[0])) ? (this._addJoin(a, n.dir, h, u), t.delete(i[0]), r.add(i[0])) : t.set(i[0], {
                                        point: a,
                                        dir: h.copy().mult(-1),
                                        color: u
                                    })), e && !r.has(s[1]) && ((n = t.get(s[1])) ? (this._addJoin(this.vertices[s[1]], e, n.dir.copy().mult(-1), c), t.delete(s[1]), r.add(s[1])) : t.set(s[1], {
                                        point: this.vertices[s[1]],
                                        dir: e,
                                        color: c
                                    }), e = void 0)), o !== this.edges.length - 1 || r.has(i[1]) || ((a = t.get(i[1])) ? (this._addJoin(l, h, a.dir.copy().mult(-1), d), t.delete(i[1]), r.add(i[1])) : t.set(i[1], {
                                        point: l,
                                        dir: h,
                                        color: d
                                    })), f && (e = h)
                                }
                                var p = !0,
                                    m = !1,
                                    y = void 0;
                                try {
                                    for (var g, v = t.values()[Symbol.iterator](); !(p = (g = v.next()).done); p = !0) {
                                        var b = g.value,
                                            _ = b.point,
                                            x = b.dir,
                                            w = b.color;
                                        this._addCap(_, x, w)
                                    }
                                } catch (e) {
                                    m = !0, y = e
                                } finally {
                                    try {
                                        p || null == v.return || v.return()
                                    } finally {
                                        if (m) throw y
                                    }
                                }
                                return this
                            }
                        }, {
                            key: "_addSegment",
                            value: function(e, t, r, o, n) {
                                var e = e.array(),
                                    t = t.array(),
                                    s = n.array();
                                this.lineSides.push(1, 1, -1, 1, -1, -1);
                                for (var i = 0, a = [this.lineTangentsIn, this.lineTangentsOut]; i < a.length; i++)
                                    for (var l = a[i], c = 0; c < 6; c++) l.push.apply(l, u(s));
                                return (n = this.lineVertices).push.apply(n, u(e).concat(u(t), u(e), u(t), u(t), u(e))), (n = this.lineVertexColors).push.apply(n, u(r).concat(u(o), u(r), u(o), u(o), u(r))), this
                            }
                        }, {
                            key: "_addCap",
                            value: function(e, t, r) {
                                for (var o, n = e.array(), s = t.array(), i = [0, 0, 0], a = 0; a < 6; a++)(o = this.lineVertices).push.apply(o, u(n)), (o = this.lineTangentsIn).push.apply(o, u(s)), (o = this.lineTangentsOut).push.apply(o, i), (o = this.lineVertexColors).push.apply(o, u(r));
                                return this.lineSides.push(-1, 2, -2, 1, 2, -1), this
                            }
                        }, {
                            key: "_addJoin",
                            value: function(e, t, r, o) {
                                for (var n, s = e.array(), i = t.array(), a = r.array(), l = 0; l < 12; l++)(n = this.lineVertices).push.apply(n, u(s)), (n = this.lineTangentsIn).push.apply(n, u(i)), (n = this.lineTangentsOut).push.apply(n, u(a)), (n = this.lineVertexColors).push.apply(n, u(o));
                                return this.lineSides.push(-1, -3, -2, -1, 0, -3), this.lineSides.push(3, 1, 2, 3, 0, 1), this
                            }
                        }, {
                            key: "normalize",
                            value: function() {
                                if (0 < this.vertices.length) {
                                    for (var e = this.vertices[0].copy(), t = this.vertices[0].copy(), r = 0; r < this.vertices.length; r++) e.x = Math.max(e.x, this.vertices[r].x), t.x = Math.min(t.x, this.vertices[r].x), e.y = Math.max(e.y, this.vertices[r].y), t.y = Math.min(t.y, this.vertices[r].y), e.z = Math.max(e.z, this.vertices[r].z), t.z = Math.min(t.z, this.vertices[r].z);
                                    for (var o = F.default.Vector.lerp(e, t, .5), n = F.default.Vector.sub(e, t), s = 200 / Math.max(Math.max(n.x, n.y), n.z), i = 0; i < this.vertices.length; i++) this.vertices[i].sub(o), this.vertices[i].mult(s)
                                }
                                return this
                            }
                        }]), s);
                        var l = F.default.Geometry;
                        r.default = l
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array-buffer.constructor": 152,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.flat": 160,
                        "core-js/modules/es.array.for-each": 161,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.last-index-of": 167,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.unscopables.flat": 173,
                        "core-js/modules/es.map": 175,
                        "core-js/modules/es.number.constructor": 179,
                        "core-js/modules/es.object.entries": 184,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.set": 197,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.sub": 208,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.for-each": 245,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    336: [function(e, t, r) {
                        e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var O = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }
                        var n, s, i = Array,
                            C = function(e) {
                                return Array.isArray(e)
                            },
                            e = ("undefined" != typeof Float32Array && (i = Float32Array, C = function(e) {
                                return Array.isArray(e) || e instanceof Float32Array
                            }), O.default.Matrix = (s = [{
                                key: "identity",
                                value: function(e) {
                                    return new O.default.Matrix(e)
                                }
                            }], o((n = a).prototype, [{
                                key: "reset",
                                value: function() {
                                    return this.mat3 ? this.mat3.set([1, 0, 0, 0, 1, 0, 0, 0, 1]) : this.mat4 && this.mat4.set([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), this
                                }
                            }, {
                                key: "set",
                                value: function(e) {
                                    var t = arguments;
                                    if (e instanceof O.default.Matrix ? t = e.mat4 : C(e) && (t = e), 16 !== t.length) O.default._friendlyError("Expected 16 values but received ".concat(t.length, "."), "p5.Matrix.set");
                                    else
                                        for (var r = 0; r < 16; r++) this.mat4[r] = t[r];
                                    return this
                                }
                            }, {
                                key: "get",
                                value: function() {
                                    return new O.default.Matrix(this.mat4, this.p5)
                                }
                            }, {
                                key: "copy",
                                value: function() {
                                    var e;
                                    return void 0 !== this.mat3 ? ((e = new O.default.Matrix("mat3", this.p5)).mat3[0] = this.mat3[0], e.mat3[1] = this.mat3[1], e.mat3[2] = this.mat3[2], e.mat3[3] = this.mat3[3], e.mat3[4] = this.mat3[4], e.mat3[5] = this.mat3[5], e.mat3[6] = this.mat3[6], e.mat3[7] = this.mat3[7], e.mat3[8] = this.mat3[8]) : ((e = new O.default.Matrix(this.p5)).mat4[0] = this.mat4[0], e.mat4[1] = this.mat4[1], e.mat4[2] = this.mat4[2], e.mat4[3] = this.mat4[3], e.mat4[4] = this.mat4[4], e.mat4[5] = this.mat4[5], e.mat4[6] = this.mat4[6], e.mat4[7] = this.mat4[7], e.mat4[8] = this.mat4[8], e.mat4[9] = this.mat4[9], e.mat4[10] = this.mat4[10], e.mat4[11] = this.mat4[11], e.mat4[12] = this.mat4[12], e.mat4[13] = this.mat4[13], e.mat4[14] = this.mat4[14], e.mat4[15] = this.mat4[15]), e
                                }
                            }, {
                                key: "transpose",
                                value: function(e) {
                                    var t, r, o, n, s, i;
                                    return e instanceof O.default.Matrix ? (t = e.mat4[1], r = e.mat4[2], o = e.mat4[3], n = e.mat4[6], s = e.mat4[7], i = e.mat4[11], this.mat4[0] = e.mat4[0], this.mat4[1] = e.mat4[4], this.mat4[2] = e.mat4[8], this.mat4[3] = e.mat4[12], this.mat4[4] = t, this.mat4[5] = e.mat4[5], this.mat4[6] = e.mat4[9], this.mat4[7] = e.mat4[13], this.mat4[8] = r, this.mat4[9] = n, this.mat4[10] = e.mat4[10], this.mat4[11] = e.mat4[14], this.mat4[12] = o, this.mat4[13] = s, this.mat4[14] = i, this.mat4[15] = e.mat4[15]) : C(e) && (t = e[1], r = e[2], o = e[3], n = e[6], s = e[7], i = e[11], this.mat4[0] = e[0], this.mat4[1] = e[4], this.mat4[2] = e[8], this.mat4[3] = e[12], this.mat4[4] = t, this.mat4[5] = e[5], this.mat4[6] = e[9], this.mat4[7] = e[13], this.mat4[8] = r, this.mat4[9] = n, this.mat4[10] = e[10], this.mat4[11] = e[14], this.mat4[12] = o, this.mat4[13] = s, this.mat4[14] = i, this.mat4[15] = e[15]), this
                                }
                            }, {
                                key: "invert",
                                value: function(e) {
                                    e instanceof O.default.Matrix ? (t = e.mat4[0], r = e.mat4[1], o = e.mat4[2], n = e.mat4[3], s = e.mat4[4], i = e.mat4[5], a = e.mat4[6], l = e.mat4[7], c = e.mat4[8], u = e.mat4[9], d = e.mat4[10], h = e.mat4[11], f = e.mat4[12], p = e.mat4[13], m = e.mat4[14], y = e.mat4[15]) : C(e) && (t = e[0], r = e[1], o = e[2], n = e[3], s = e[4], i = e[5], a = e[6], l = e[7], c = e[8], u = e[9], d = e[10], h = e[11], f = e[12], p = e[13], m = e[14], y = e[15]);
                                    var t, r, o, n, s, i, a, l, c, u, d, h, f, p, m, y, g = t * a - o * s,
                                        v = t * l - n * s,
                                        b = r * a - o * i,
                                        _ = r * l - n * i,
                                        x = o * l - n * a,
                                        w = c * p - u * f,
                                        j = c * m - d * f,
                                        S = c * y - h * f,
                                        T = u * m - d * p,
                                        E = u * y - h * p,
                                        k = d * y - h * m,
                                        M = (e = t * i - r * s) * k - g * E + v * T + b * S - _ * j + x * w;
                                    return M ? (this.mat4[0] = (i * k - a * E + l * T) * (M = 1 / M), this.mat4[1] = (o * E - r * k - n * T) * M, this.mat4[2] = (p * x - m * _ + y * b) * M, this.mat4[3] = (d * _ - u * x - h * b) * M, this.mat4[4] = (a * S - s * k - l * j) * M, this.mat4[5] = (t * k - o * S + n * j) * M, this.mat4[6] = (m * v - f * x - y * g) * M, this.mat4[7] = (c * x - d * v + h * g) * M, this.mat4[8] = (s * E - i * S + l * w) * M, this.mat4[9] = (r * S - t * E - n * w) * M, this.mat4[10] = (f * _ - p * v + y * e) * M, this.mat4[11] = (u * v - c * _ - h * e) * M, this.mat4[12] = (i * j - s * T - a * w) * M, this.mat4[13] = (t * T - r * j + o * w) * M, this.mat4[14] = (p * g - f * b - m * e) * M, this.mat4[15] = (c * b - u * g + d * e) * M, this) : null
                                }
                            }, {
                                key: "invert3x3",
                                value: function() {
                                    var e = this.mat3[0],
                                        t = this.mat3[1],
                                        r = this.mat3[2],
                                        o = this.mat3[3],
                                        n = this.mat3[4],
                                        s = this.mat3[5],
                                        i = this.mat3[6],
                                        a = this.mat3[7],
                                        l = this.mat3[8],
                                        c = l * n - s * a,
                                        u = -l * o + s * i,
                                        d = a * o - n * i,
                                        h = e * c + t * u + r * d;
                                    return h ? (this.mat3[0] = c * (h = 1 / h), this.mat3[1] = (-l * t + r * a) * h, this.mat3[2] = (s * t - r * n) * h, this.mat3[3] = u * h, this.mat3[4] = (l * e - r * i) * h, this.mat3[5] = (-s * e + r * o) * h, this.mat3[6] = d * h, this.mat3[7] = (-a * e + t * i) * h, this.mat3[8] = (n * e - t * o) * h, this) : null
                                }
                            }, {
                                key: "transpose3x3",
                                value: function(e) {
                                    var t = (e = void 0 === e ? this.mat3 : e)[1],
                                        r = e[2],
                                        o = e[5];
                                    return this.mat3[0] = e[0], this.mat3[1] = e[3], this.mat3[2] = e[6], this.mat3[3] = t, this.mat3[4] = e[4], this.mat3[5] = e[7], this.mat3[6] = r, this.mat3[7] = o, this.mat3[8] = e[8], this
                                }
                            }, {
                                key: "inverseTranspose",
                                value: function(e) {
                                    if (e = e.mat4, void 0 === this.mat3 ? O.default._friendlyError("sorry, this function only works with mat3") : (this.mat3[0] = e[0], this.mat3[1] = e[1], this.mat3[2] = e[2], this.mat3[3] = e[4], this.mat3[4] = e[5], this.mat3[5] = e[6], this.mat3[6] = e[8], this.mat3[7] = e[9], this.mat3[8] = e[10]), e = this.invert3x3()) e.transpose3x3(this.mat3);
                                    else
                                        for (var t = 0; t < 9; t++) this.mat3[t] = 0;
                                    return this
                                }
                            }, {
                                key: "determinant",
                                value: function() {
                                    var e = this.mat4[0] * this.mat4[5] - this.mat4[1] * this.mat4[4],
                                        t = this.mat4[0] * this.mat4[6] - this.mat4[2] * this.mat4[4],
                                        r = this.mat4[0] * this.mat4[7] - this.mat4[3] * this.mat4[4],
                                        o = this.mat4[1] * this.mat4[6] - this.mat4[2] * this.mat4[5],
                                        n = this.mat4[1] * this.mat4[7] - this.mat4[3] * this.mat4[5],
                                        s = this.mat4[2] * this.mat4[7] - this.mat4[3] * this.mat4[6],
                                        i = this.mat4[8] * this.mat4[13] - this.mat4[9] * this.mat4[12],
                                        a = this.mat4[8] * this.mat4[14] - this.mat4[10] * this.mat4[12],
                                        l = this.mat4[8] * this.mat4[15] - this.mat4[11] * this.mat4[12],
                                        c = this.mat4[9] * this.mat4[14] - this.mat4[10] * this.mat4[13],
                                        u = this.mat4[9] * this.mat4[15] - this.mat4[11] * this.mat4[13];
                                    return e * (this.mat4[10] * this.mat4[15] - this.mat4[11] * this.mat4[14]) - t * u + r * c + o * l - n * a + s * i
                                }
                            }, {
                                key: "mult",
                                value: function(e) {
                                    var t;
                                    if (e === this || e === this.mat4) t = this.copy().mat4;
                                    else if (e instanceof O.default.Matrix) t = e.mat4;
                                    else if (C(e)) t = e;
                                    else {
                                        if (16 !== arguments.length) return;
                                        t = arguments
                                    }
                                    var e = this.mat4[0],
                                        r = this.mat4[1],
                                        o = this.mat4[2],
                                        n = this.mat4[3];
                                    return this.mat4[0] = e * t[0] + r * t[4] + o * t[8] + n * t[12], this.mat4[1] = e * t[1] + r * t[5] + o * t[9] + n * t[13], this.mat4[2] = e * t[2] + r * t[6] + o * t[10] + n * t[14], this.mat4[3] = e * t[3] + r * t[7] + o * t[11] + n * t[15], e = this.mat4[4], r = this.mat4[5], o = this.mat4[6], n = this.mat4[7], this.mat4[4] = e * t[0] + r * t[4] + o * t[8] + n * t[12], this.mat4[5] = e * t[1] + r * t[5] + o * t[9] + n * t[13], this.mat4[6] = e * t[2] + r * t[6] + o * t[10] + n * t[14], this.mat4[7] = e * t[3] + r * t[7] + o * t[11] + n * t[15], e = this.mat4[8], r = this.mat4[9], o = this.mat4[10], n = this.mat4[11], this.mat4[8] = e * t[0] + r * t[4] + o * t[8] + n * t[12], this.mat4[9] = e * t[1] + r * t[5] + o * t[9] + n * t[13], this.mat4[10] = e * t[2] + r * t[6] + o * t[10] + n * t[14], this.mat4[11] = e * t[3] + r * t[7] + o * t[11] + n * t[15], e = this.mat4[12], r = this.mat4[13], o = this.mat4[14], n = this.mat4[15], this.mat4[12] = e * t[0] + r * t[4] + o * t[8] + n * t[12], this.mat4[13] = e * t[1] + r * t[5] + o * t[9] + n * t[13], this.mat4[14] = e * t[2] + r * t[6] + o * t[10] + n * t[14], this.mat4[15] = e * t[3] + r * t[7] + o * t[11] + n * t[15], this
                                }
                            }, {
                                key: "apply",
                                value: function(e) {
                                    var t;
                                    if (e === this || e === this.mat4) t = this.copy().mat4;
                                    else if (e instanceof O.default.Matrix) t = e.mat4;
                                    else if (C(e)) t = e;
                                    else {
                                        if (16 !== arguments.length) return;
                                        t = arguments
                                    }
                                    var e = this.mat4,
                                        r = e[0],
                                        o = e[4],
                                        n = e[8],
                                        s = e[12],
                                        r = (e[0] = t[0] * r + t[1] * o + t[2] * n + t[3] * s, e[4] = t[4] * r + t[5] * o + t[6] * n + t[7] * s, e[8] = t[8] * r + t[9] * o + t[10] * n + t[11] * s, e[12] = t[12] * r + t[13] * o + t[14] * n + t[15] * s, e[1]),
                                        r = (e[1] = t[0] * r + t[1] * (o = e[5]) + t[2] * (n = e[9]) + t[3] * (s = e[13]), e[5] = t[4] * r + t[5] * o + t[6] * n + t[7] * s, e[9] = t[8] * r + t[9] * o + t[10] * n + t[11] * s, e[13] = t[12] * r + t[13] * o + t[14] * n + t[15] * s, e[2]),
                                        r = (e[2] = t[0] * r + t[1] * (o = e[6]) + t[2] * (n = e[10]) + t[3] * (s = e[14]), e[6] = t[4] * r + t[5] * o + t[6] * n + t[7] * s, e[10] = t[8] * r + t[9] * o + t[10] * n + t[11] * s, e[14] = t[12] * r + t[13] * o + t[14] * n + t[15] * s, e[3]);
                                    return e[3] = t[0] * r + t[1] * (o = e[7]) + t[2] * (n = e[11]) + t[3] * (s = e[15]), e[7] = t[4] * r + t[5] * o + t[6] * n + t[7] * s, e[11] = t[8] * r + t[9] * o + t[10] * n + t[11] * s, e[15] = t[12] * r + t[13] * o + t[14] * n + t[15] * s, this
                                }
                            }, {
                                key: "scale",
                                value: function(e, t, r) {
                                    return e instanceof O.default.Vector ? (t = e.y, r = e.z, e = e.x) : e instanceof Array && (t = e[1], r = e[2], e = e[0]), this.mat4[0] *= e, this.mat4[1] *= e, this.mat4[2] *= e, this.mat4[3] *= e, this.mat4[4] *= t, this.mat4[5] *= t, this.mat4[6] *= t, this.mat4[7] *= t, this.mat4[8] *= r, this.mat4[9] *= r, this.mat4[10] *= r, this.mat4[11] *= r, this
                                }
                            }, {
                                key: "rotate",
                                value: function(e, t, r, o) {
                                    t instanceof O.default.Vector ? (r = t.y, o = t.z, t = t.x) : t instanceof Array && (r = t[1], o = t[2], t = t[0]);
                                    t *= 1 / (n = Math.sqrt(t * t + r * r + o * o)), r *= 1 / n, o *= 1 / n;
                                    var n = this.mat4[0],
                                        s = this.mat4[1],
                                        i = this.mat4[2],
                                        a = this.mat4[3],
                                        l = this.mat4[4],
                                        c = this.mat4[5],
                                        u = this.mat4[6],
                                        d = this.mat4[7],
                                        h = this.mat4[8],
                                        f = this.mat4[9],
                                        p = this.mat4[10],
                                        m = this.mat4[11],
                                        y = Math.sin(e),
                                        g = 1 - (e = Math.cos(e)),
                                        v = t * t * g + e,
                                        b = r * t * g + o * y,
                                        _ = o * t * g - r * y,
                                        x = t * r * g - o * y,
                                        w = r * r * g + e,
                                        j = o * r * g + t * y,
                                        S = t * o * g + r * y,
                                        r = r * o * g - t * y,
                                        t = o * o * g + e;
                                    return this.mat4[0] = n * v + l * b + h * _, this.mat4[1] = s * v + c * b + f * _, this.mat4[2] = i * v + u * b + p * _, this.mat4[3] = a * v + d * b + m * _, this.mat4[4] = n * x + l * w + h * j, this.mat4[5] = s * x + c * w + f * j, this.mat4[6] = i * x + u * w + p * j, this.mat4[7] = a * x + d * w + m * j, this.mat4[8] = n * S + l * r + h * t, this.mat4[9] = s * S + c * r + f * t, this.mat4[10] = i * S + u * r + p * t, this.mat4[11] = a * S + d * r + m * t, this
                                }
                            }, {
                                key: "translate",
                                value: function(e) {
                                    var t = e[0],
                                        r = e[1],
                                        e = e[2] || 0;
                                    this.mat4[12] += this.mat4[0] * t + this.mat4[4] * r + this.mat4[8] * e, this.mat4[13] += this.mat4[1] * t + this.mat4[5] * r + this.mat4[9] * e, this.mat4[14] += this.mat4[2] * t + this.mat4[6] * r + this.mat4[10] * e, this.mat4[15] += this.mat4[3] * t + this.mat4[7] * r + this.mat4[11] * e
                                }
                            }, {
                                key: "rotateX",
                                value: function(e) {
                                    this.rotate(e, 1, 0, 0)
                                }
                            }, {
                                key: "rotateY",
                                value: function(e) {
                                    this.rotate(e, 0, 1, 0)
                                }
                            }, {
                                key: "rotateZ",
                                value: function(e) {
                                    this.rotate(e, 0, 0, 1)
                                }
                            }, {
                                key: "perspective",
                                value: function(e, t, r, o) {
                                    var e = 1 / Math.tan(e / 2),
                                        n = 1 / (r - o);
                                    return this.mat4[0] = e / t, this.mat4[1] = 0, this.mat4[2] = 0, this.mat4[3] = 0, this.mat4[4] = 0, this.mat4[5] = e, this.mat4[6] = 0, this.mat4[7] = 0, this.mat4[8] = 0, this.mat4[9] = 0, this.mat4[10] = (o + r) * n, this.mat4[11] = -1, this.mat4[12] = 0, this.mat4[13] = 0, this.mat4[14] = 2 * o * r * n, this.mat4[15] = 0, this
                                }
                            }, {
                                key: "ortho",
                                value: function(e, t, r, o, n, s) {
                                    var i = 1 / (e - t),
                                        a = 1 / (r - o),
                                        l = 1 / (n - s);
                                    return this.mat4[0] = -2 * i, this.mat4[1] = 0, this.mat4[2] = 0, this.mat4[3] = 0, this.mat4[4] = 0, this.mat4[5] = -2 * a, this.mat4[6] = 0, this.mat4[7] = 0, this.mat4[8] = 0, this.mat4[9] = 0, this.mat4[10] = 2 * l, this.mat4[11] = 0, this.mat4[12] = (e + t) * i, this.mat4[13] = (o + r) * a, this.mat4[14] = (s + n) * l, this.mat4[15] = 1, this
                                }
                            }, {
                                key: "multiplyVec4",
                                value: function(e, t, r, o) {
                                    var n = new Array(4),
                                        s = this.mat4;
                                    return n[0] = s[0] * e + s[4] * t + s[8] * r + s[12] * o, n[1] = s[1] * e + s[5] * t + s[9] * r + s[13] * o, n[2] = s[2] * e + s[6] * t + s[10] * r + s[14] * o, n[3] = s[3] * e + s[7] * t + s[11] * r + s[15] * o, n
                                }
                            }, {
                                key: "multiplyPoint",
                                value: function(e) {
                                    var t = e.x,
                                        r = e.y,
                                        e = e.z,
                                        t = this.multiplyVec4(t, r, e, 1);
                                    return new O.default.Vector(t[0], t[1], t[2])
                                }
                            }, {
                                key: "multiplyAndNormalizePoint",
                                value: function(e) {
                                    var t = e.x,
                                        r = e.y,
                                        e = e.z;
                                    return (t = this.multiplyVec4(t, r, e, 1))[0] /= t[3], t[1] /= t[3], t[2] /= t[3], new O.default.Vector(t[0], t[1], t[2])
                                }
                            }, {
                                key: "multiplyDirection",
                                value: function(e) {
                                    var t = e.x,
                                        r = e.y,
                                        e = e.z,
                                        t = this.multiplyVec4(t, r, e, 0);
                                    return new O.default.Vector(t[0], t[1], t[2])
                                }
                            }, {
                                key: "mult3x3",
                                value: function(e) {
                                    var t;
                                    if (e === this || e === this.mat3) t = this.copy().mat3;
                                    else if (e instanceof O.default.Matrix) t = e.mat3;
                                    else if (C(e)) t = e;
                                    else {
                                        if (9 !== arguments.length) return;
                                        t = arguments
                                    }
                                    var e = this.mat3[0],
                                        r = this.mat3[1],
                                        o = this.mat3[2];
                                    return this.mat3[0] = e * t[0] + r * t[3] + o * t[6], this.mat3[1] = e * t[1] + r * t[4] + o * t[7], this.mat3[2] = e * t[2] + r * t[5] + o * t[8], e = this.mat3[3], r = this.mat3[4], o = this.mat3[5], this.mat3[3] = e * t[0] + r * t[3] + o * t[6], this.mat3[4] = e * t[1] + r * t[4] + o * t[7], this.mat3[5] = e * t[2] + r * t[5] + o * t[8], e = this.mat3[6], r = this.mat3[7], o = this.mat3[8], this.mat3[6] = e * t[0] + r * t[3] + o * t[6], this.mat3[7] = e * t[1] + r * t[4] + o * t[7], this.mat3[8] = e * t[2] + r * t[5] + o * t[8], this
                                }
                            }, {
                                key: "column",
                                value: function(e) {
                                    return new O.default.Vector(this.mat3[3 * e], this.mat3[3 * e + 1], this.mat3[3 * e + 2])
                                }
                            }, {
                                key: "row",
                                value: function(e) {
                                    return new O.default.Vector(this.mat3[e], this.mat3[e + 3], this.mat3[e + 6])
                                }
                            }, {
                                key: "diagonal",
                                value: function() {
                                    return void 0 !== this.mat3 ? [this.mat3[0], this.mat3[4], this.mat3[8]] : [this.mat4[0], this.mat4[5], this.mat4[10], this.mat4[15]]
                                }
                            }, {
                                key: "multiplyVec3",
                                value: function(e, t) {
                                    return (t = void 0 === t ? e.copy() : t).x = this.row(0).dot(e), t.y = this.row(1).dot(e), t.z = this.row(2).dot(e), t
                                }
                            }, {
                                key: "createSubMatrix3x3",
                                value: function() {
                                    var e = new O.default.Matrix("mat3");
                                    return e.mat3[0] = this.mat4[0], e.mat3[1] = this.mat4[1], e.mat3[2] = this.mat4[2], e.mat3[3] = this.mat4[4], e.mat3[4] = this.mat4[5], e.mat3[5] = this.mat4[6], e.mat3[6] = this.mat4[8], e.mat3[7] = this.mat4[9], e.mat3[8] = this.mat4[10], e
                                }
                            }]), o(n, s), a), O.default.Matrix);

                        function a() {
                            var e;
                            if (this instanceof a) return arguments.length && ((e = arguments.length - 1) < 0 || arguments.length <= e ? void 0 : arguments[e]) instanceof O.default && (this.p5 = (e = arguments.length - 1) < 0 || arguments.length <= e ? void 0 : arguments[e]), "mat3" === (arguments.length <= 0 ? void 0 : arguments[0]) ? this.mat3 = Array.isArray(arguments.length <= 1 ? void 0 : arguments[1]) ? arguments.length <= 1 ? void 0 : arguments[1] : new i([1, 0, 0, 0, 1, 0, 0, 0, 1]) : this.mat4 = Array.isArray(arguments.length <= 0 ? void 0 : arguments[0]) ? arguments.length <= 0 ? void 0 : arguments[0] : new i([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]), this;
                            throw new TypeError("Cannot call a class as a function")
                        }
                        r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.float32-array": 219,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239
                    }],
                    337: [function(e, t, r) {
                        Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var o, n, s = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function i(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function a(e, t, r, o) {
                            if (!(this instanceof a)) throw new TypeError("Cannot call a class as a function");
                            this.w = e, this.vec = new s.default.Vector(t, r, o)
                        }
                        s.default.Quat = (n = [{
                            key: "fromAxisAngle",
                            value: function(e, t, r, o) {
                                var n = Math.cos(e / 2),
                                    t = new s.default.Vector(t, r, o).normalize().mult(Math.sin(e / 2));
                                return new s.default.Quat(n, t.x, t.y, t.z)
                            }
                        }], i((o = a).prototype, [{
                            key: "conjugate",
                            value: function() {
                                return new s.default.Quat(this.w, -this.vec.x, -this.vec.y, -this.vec.z)
                            }
                        }, {
                            key: "multiply",
                            value: function(e) {
                                return new s.default.Quat(this.w * e.w - this.vec.x * e.vec.x - this.vec.y * e.vec.y - this.vec.z - e.vec.z, this.w * e.vec.x + this.vec.x * e.w + this.vec.y * e.vec.z - this.vec.z * e.vec.y, this.w * e.vec.y - this.vec.x * e.vec.z + this.vec.y * e.w + this.vec.z * e.vec.x, this.w * e.vec.z + this.vec.x * e.vec.y - this.vec.y * e.vec.x + this.vec.z * e.w)
                            }
                        }, {
                            key: "rotateVector",
                            value: function(e) {
                                return new s.default.Vector.mult(e, this.w * this.w - this.vec.dot(this.vec)).add(s.default.Vector.mult(this.vec, 2 * e.dot(this.vec))).add(s.default.Vector.mult(this.vec, 2 * this.w).cross(e)).clampToZero()
                            }
                        }, {
                            key: "rotateBy",
                            value: function(e) {
                                return e.multiply(this).multiply(e.conjugate()).vec.clampToZero()
                            }
                        }]), i(o, n), a), e = s.default.Quat, r.default = e
                    }, {
                        "../core/main": 283
                    }],
                    338: [function(e, t, r) {
                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function i(e, t, r, o, n, s) {
                            if (!(this instanceof i)) throw new TypeError("Cannot call a class as a function");
                            this.size = e, this.src = t, this.dst = r, this.attr = o, this._renderer = n, this.map = s
                        }
                        e("core-js/modules/es.array.map"), e("core-js/modules/es.array.map"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0, (e = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        }).default.RenderBuffer = (o(i.prototype, [{
                            key: "_prepareBuffer",
                            value: function(e, t) {
                                var r, o, n, s = t.attributes,
                                    i = this._renderer.GL,
                                    a = e.model || e;
                                (s = s[this.attr]) && (r = e[this.dst], 0 < (o = a[this.src]).length ? ((n = !r) && (e[this.dst] = r = i.createBuffer()), i.bindBuffer(i.ARRAY_BUFFER, r), !n && !1 === a.dirtyFlags[this.src] || (n = (e = this.map) ? e(o) : o, this._renderer._bindBuffer(r, i.ARRAY_BUFFER, n), a.dirtyFlags[this.src] = !1), t.enableAttrib(s, this.size)) : -1 !== (e = s.location) && this._renderer.registerEnabled.has(e) && (i.disableVertexAttribArray(e), this._renderer.registerEnabled.delete(e)))
                            }
                        }]), i), e = e.default.RenderBuffer, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.map": 168
                    }],
                    339: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.find-index"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.map"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.find-index"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.map"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var l = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            h = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function f(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }
                        e("./p5.RenderBuffer"), l.default.RendererGL.prototype.beginShape = function(e) {
                            return this.immediateMode.shapeMode = void 0 !== e ? e : h.TESS, this.immediateMode.geometry.reset(), this.immediateMode.contourIndices = [], this
                        };
                        var c = {
                                vertices: 1,
                                vertexNormals: 1,
                                vertexColors: 4,
                                vertexStrokeColors: 4,
                                uvs: 2
                            },
                            n = (l.default.RendererGL.prototype.beginContour = function() {
                                if (this.immediateMode.shapeMode !== h.TESS) throw new Error("WebGL mode can only use contours with beginShape(TESS).");
                                this.immediateMode.contourIndices.push(this.immediateMode.geometry.vertices.length)
                            }, l.default.RendererGL.prototype.vertex = function(e, t) {
                                if (this.immediateMode.shapeMode === h.QUADS && this.immediateMode.geometry.vertices.length % 6 == 3)
                                    for (var r in c) {
                                        var o = c[r];
                                        (r = this.immediateMode.geometry[r]).push.apply(r, f(r.slice(r.length - 3 * o, r.length - 2 * o)).concat(f(r.slice(r.length - o, r.length))))
                                    }
                                var n, s, i = n = s = 0,
                                    a = (3 === arguments.length ? i = arguments[2] : 4 === arguments.length ? (n = arguments[2], s = arguments[3]) : 5 === arguments.length && (i = arguments[2], n = arguments[3], s = arguments[4]), new l.default.Vector(e, t, i)),
                                    a = (this.immediateMode.geometry.vertices.push(a), this.immediateMode.geometry.vertexNormals.push(this._currentNormal), this.curFillColor || [.5, .5, .5, 1]),
                                    a = (this.immediateMode.geometry.vertexColors.push(a[0], a[1], a[2], a[3]), this.curStrokeColor || [.5, .5, .5, 1]);
                                return this.immediateMode.geometry.vertexStrokeColors.push(a[0], a[1], a[2], a[3]), this.textureMode !== h.IMAGE || this.isProcessingVertices || (null !== this._tex ? 0 < this._tex.width && 0 < this._tex.height && (n /= this._tex.width, s /= this._tex.height) : void 0 === this.userFillShader && void 0 === this.userStrokeShader && void 0 === this.userPointShader && null === this._tex && 4 <= arguments.length && console.warn("You must first call texture() before using vertex() with image based u and v coordinates")), this.immediateMode.geometry.uvs.push(n, s), this.immediateMode._bezierVertex[0] = e, this.immediateMode._bezierVertex[1] = t, this.immediateMode._bezierVertex[2] = i, this.immediateMode._quadraticVertex[0] = e, this.immediateMode._quadraticVertex[1] = t, this.immediateMode._quadraticVertex[2] = i, this
                            }, l.default.RendererGL.prototype.normal = function(e, t, r) {
                                return e instanceof l.default.Vector ? this._currentNormal = e : this._currentNormal = new l.default.Vector(e, t, r), this
                            }, l.default.RendererGL.prototype.endShape = function(e, t, r, o, n, s) {
                                var i, a = 6 < arguments.length && void 0 !== arguments[6] ? arguments[6] : 1;
                                return this.immediateMode.shapeMode === h.POINTS ? this._drawPoints(this.immediateMode.geometry.vertices, this.immediateMode.buffers.point) : (3 === this.immediateMode.geometry.vertices.length && this.immediateMode.shapeMode === h.TESS && (this.immediateMode.shapeMode = h.TRIANGLES), this.isProcessingVertices = !0, this._processVertices.apply(this, arguments), i = this.isProcessingVertices = !1, this.immediateMode.shapeMode !== h.LINE_STRIP && this.immediateMode.shapeMode !== h.LINES || (this.immediateMode.shapeMode = h.TRIANGLE_FAN, i = !0), this.immediateMode.shapeMode === h.QUADS ? this.immediateMode.shapeMode = h.TRIANGLES : this.immediateMode.shapeMode === h.QUAD_STRIP && (this.immediateMode.shapeMode = h.TRIANGLE_STRIP), this._doFill && !i && !this.geometryBuilder && 3 <= this.immediateMode.geometry.vertices.length && this._drawImmediateFill(a), this._doStroke && !this.geometryBuilder && 1 <= this.immediateMode.geometry.lineVertices.length && this._drawImmediateStroke(), this.geometryBuilder && this.geometryBuilder.addImmediate(), this.isBezier = !1, this.isQuadratic = !1, this.isCurve = !1, this.immediateMode._bezierVertex.length = 0, this.immediateMode._quadraticVertex.length = 0, this.immediateMode._curveVertex.length = 0), this
                            }, l.default.RendererGL.prototype._processVertices = function(e) {
                                var t;
                                0 !== this.immediateMode.geometry.vertices.length && (t = this._doStroke, e = e === h.CLOSE, t && (this.immediateMode.geometry.edges = this._calculateEdges(this.immediateMode.shapeMode, this.immediateMode.geometry.vertices, e), this.geometryBuilder || this.immediateMode.geometry._edgesToVertices()), t = this.immediateMode.shapeMode === h.TESS, e = 0 < this.immediateMode.contourIndices.length, this._doFill) && (this.isBezier || this.isQuadratic || this.isCurve || t || e) && this.immediateMode.shapeMode !== h.LINES && this._tesselateShape()
                            }, l.default.RendererGL.prototype._calculateEdges = function(e, t, r) {
                                var o = [],
                                    n = 0,
                                    s = this.immediateMode.contourIndices.slice(),
                                    i = 0;
                                switch (e) {
                                    case h.TRIANGLE_STRIP:
                                        for (n = 0; n < t.length - 2; n++) o.push([n, n + 1]), o.push([n, n + 2]);
                                        o.push([n, n + 1]);
                                        break;
                                    case h.TRIANGLE_FAN:
                                        for (n = 1; n < t.length - 1; n++) o.push([0, n]), o.push([n, n + 1]);
                                        o.push([0, t.length - 1]);
                                        break;
                                    case h.TRIANGLES:
                                        for (n = 0; n < t.length - 2; n += 3) o.push([n, n + 1]), o.push([n + 1, n + 2]), o.push([n + 2, n]);
                                        break;
                                    case h.LINES:
                                        for (n = 0; n < t.length - 1; n += 2) o.push([n, n + 1]);
                                        break;
                                    case h.QUADS:
                                        for (n = 0; n < t.length - 5; n += 6) o.push([n, n + 1]), o.push([n + 1, n + 2]), o.push([n + 3, n + 5]), o.push([n + 4, n + 5]);
                                        break;
                                    case h.QUAD_STRIP:
                                        for (n = 0; n < t.length - 2; n += 2) o.push([n, n + 1]), o.push([n, n + 2]), o.push([n + 1, n + 3]);
                                        o.push([n, n + 1]);
                                        break;
                                    default:
                                        for (n = 0; n < t.length; n++) n + 1 < t.length && n + 1 !== s[0] ? o.push([n, n + 1]) : ((r || i) && o.push([n, i]), 0 < s.length && (i = s.shift()))
                                }
                                return e !== h.TESS && r && o.push([t.length - 1, 0]), o
                            }, l.default.RendererGL.prototype._tesselateShape = function() {
                                for (var c = this, e = (this.immediateMode.shapeMode = h.TRIANGLES, [
                                        []
                                    ]), t = 0; t < this.immediateMode.geometry.vertices.length; t++) 0 < this.immediateMode.contourIndices.length && this.immediateMode.contourIndices[0] === t && (this.immediateMode.contourIndices.shift(), e.push([])), e[e.length - 1].push(this.immediateMode.geometry.vertices[t].x, this.immediateMode.geometry.vertices[t].y, this.immediateMode.geometry.vertices[t].z, this.immediateMode.geometry.uvs[2 * t], this.immediateMode.geometry.uvs[2 * t + 1], this.immediateMode.geometry.vertexColors[4 * t], this.immediateMode.geometry.vertexColors[4 * t + 1], this.immediateMode.geometry.vertexColors[4 * t + 2], this.immediateMode.geometry.vertexColors[4 * t + 3], this.immediateMode.geometry.vertexNormals[t].x, this.immediateMode.geometry.vertexNormals[t].y, this.immediateMode.geometry.vertexNormals[t].z);
                                for (var u, r = this._triangulate(e), d = this.immediateMode.geometry.vertices, o = (this.immediateMode.geometry.vertices = [], this.immediateMode.geometry.vertexNormals = [], this.immediateMode.geometry.uvs = [], []), n = 0, s = r.length; n < s; n += l.default.RendererGL.prototype.tessyVertexSize) o.push.apply(o, f(r.slice(n + 5, n + 9))), this.normal.apply(this, f(r.slice(n + 9, n + 12))), this.vertex.apply(this, f(r.slice(n, n + 5)));
                                this.geometryBuilder && (u = new Map, this.immediateMode.geometry.edges = this.immediateMode.geometry.edges.map(function(e) {
                                    return e.map(function(e) {
                                        if (!u.has(e)) {
                                            var t = d[e],
                                                r = c.immediateMode.geometry.vertices.findIndex(function(e) {
                                                    return t.x === e.x && t.y === e.y && t.z === e.z
                                                });
                                            if (-1 === r) {
                                                for (var o = 1 / 0, n = 0, s = 0; s < c.immediateMode.geometry.vertices.length; s++) {
                                                    var i = c.immediateMode.geometry.vertices[s],
                                                        a = t.x - i.x,
                                                        l = t.y - i.y;
                                                    (a = a * a + l * l + (i = t.z - i.z) * i) < o && (o = a, n = s)
                                                }
                                                r = n
                                            }
                                            u.set(e, r)
                                        }
                                        return u.get(e)
                                    })
                                })), this.immediateMode.geometry.vertexColors = o
                            }, l.default.RendererGL.prototype._drawImmediateFill = function() {
                                var e, t = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 1,
                                    r = this.GL,
                                    o = (this._useVertexColor = 0 < this.immediateMode.geometry.vertexColors.length, e = this._getImmediateFillShader(), this._setFillUniforms(e), !0),
                                    n = !1,
                                    s = void 0;
                                try {
                                    for (var i, a = this.immediateMode.buffers.fill[Symbol.iterator](); !(o = (i = a.next()).done); o = !0) i.value._prepareBuffer(this.immediateMode.geometry, e)
                                } catch (e) {
                                    n = !0, s = e
                                } finally {
                                    try {
                                        o || null == a.return || a.return()
                                    } finally {
                                        if (n) throw s
                                    }
                                }
                                if (e.disableRemainingAttributes(), this._applyColorBlend(this.curFillColor, this.immediateMode.geometry.hasFillTransparency()), 1 === t) r.drawArrays(this.immediateMode.shapeMode, 0, this.immediateMode.geometry.vertices.length);
                                else try {
                                    r.drawArraysInstanced(this.immediateMode.shapeMode, 0, this.immediateMode.geometry.vertices.length, t)
                                } catch (e) {
                                    console.log("🌸 p5.js says: Instancing is only supported in WebGL2 mode")
                                }
                                e.unbindShader()
                            }, l.default.RendererGL.prototype._drawImmediateStroke = function() {
                                var e = this.GL,
                                    t = (this._useLineColor = 0 < this.immediateMode.geometry.vertexStrokeColors.length, this._getImmediateStrokeShader()),
                                    r = (this._setStrokeUniforms(t), !0),
                                    o = !1,
                                    n = void 0;
                                try {
                                    for (var s, i = this.immediateMode.buffers.stroke[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) s.value._prepareBuffer(this.immediateMode.geometry, t)
                                } catch (e) {
                                    o = !0, n = e
                                } finally {
                                    try {
                                        r || null == i.return || i.return()
                                    } finally {
                                        if (o) throw n
                                    }
                                }
                                t.disableRemainingAttributes(), this._applyColorBlend(this.curStrokeColor, this.immediateMode.geometry.hasFillTransparency()), e.drawArrays(e.TRIANGLES, 0, this.immediateMode.geometry.lineVertices.length / 3), t.unbindShader()
                            }, l.default.RendererGL);
                        r.default = n
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.RenderBuffer": 338,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.find-index": 158,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.map": 175,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    340: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.some"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.uint16-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.some"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.uint16-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (s = e("../core/main")) && s.__esModule ? s : {
                                default: s
                            },
                            n = (e("./p5.RendererGL"), e("./p5.RenderBuffer"), (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")));

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }
                        a.default.RendererGL.prototype.freeGeometry = function(e) {
                            e.gid ? this._freeBuffers(e.gid) : console.warn("The model you passed to freeGeometry does not have an id!")
                        }, a.default.RendererGL.prototype._initBufferDefaults = function(e) {
                            var t;
                            return this._freeBuffers(e), 1e3 < Object.keys(this.retainedMode.geometry).length && (t = Object.keys(this.retainedMode.geometry)[0], this._freeBuffers(t)), this.retainedMode.geometry[e] = {}
                        }, a.default.RendererGL.prototype._freeBuffers = function(e) {
                            var a, l = this.retainedMode.geometry[e];

                            function t(e) {
                                var t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = e[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value;
                                        l[i.dst] && (a.deleteBuffer(l[i.dst]), l[i.dst] = null)
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }
                            l && (delete this.retainedMode.geometry[e], a = this.GL, l.indexBuffer && a.deleteBuffer(l.indexBuffer), t(this.retainedMode.buffers.stroke), t(this.retainedMode.buffers.fill))
                        }, a.default.RendererGL.prototype.createBuffers = function(e, t) {
                            var r, o, n, s = this.GL,
                                i = ((e = this._initBufferDefaults(e)).model = t, e.indexBuffer);
                            return t.faces.length ? (i = i || (e.indexBuffer = s.createBuffer()), n = (o = (r = a.default.RendererGL.prototype._flatten(t.faces)).some(function(e) {
                                return 65535 < e
                            })) ? Uint32Array : Uint16Array, this._bindBuffer(i, s.ELEMENT_ARRAY_BUFFER, r, n), e.indexBufferType = o ? s.UNSIGNED_INT : s.UNSIGNED_SHORT, e.vertexCount = 3 * t.faces.length) : (i && (s.deleteBuffer(i), e.indexBuffer = null), e.vertexCount = t.vertices ? t.vertices.length : 0), e.lineVertexCount = t.lineVertices ? t.lineVertices.length / 3 : 0, e
                        }, a.default.RendererGL.prototype.drawBuffers = function(e) {
                            var t = this.GL,
                                r = this.retainedMode.geometry[e];
                            if (!this.geometryBuilder && this._doFill && 0 < this.retainedMode.geometry[e].vertexCount) {
                                this._useVertexColor = 0 < r.model.vertexColors.length;
                                var o = this._getRetainedFillShader(),
                                    n = (this._setFillUniforms(o), !0),
                                    s = !1,
                                    i = void 0;
                                try {
                                    for (var a, l = this.retainedMode.buffers.fill[Symbol.iterator](); !(n = (a = l.next()).done); n = !0) a.value._prepareBuffer(r, o)
                                } catch (e) {
                                    s = !0, i = e
                                } finally {
                                    try {
                                        n || null == l.return || l.return()
                                    } finally {
                                        if (s) throw i
                                    }
                                }
                                o.disableRemainingAttributes(), r.indexBuffer && this._bindBuffer(r.indexBuffer, t.ELEMENT_ARRAY_BUFFER), this._applyColorBlend(this.curFillColor, r.model.hasFillTransparency()), this._drawElements(t.TRIANGLES, e), o.unbindShader()
                            }
                            if (!this.geometryBuilder && this._doStroke && 0 < r.lineVertexCount) {
                                this._useLineColor = 0 < r.model.vertexStrokeColors.length;
                                var c = this._getRetainedStrokeShader(),
                                    u = (this._setStrokeUniforms(c), !0),
                                    s = !1,
                                    i = void 0;
                                try {
                                    for (var d, h = this.retainedMode.buffers.stroke[Symbol.iterator](); !(u = (d = h.next()).done); u = !0) d.value._prepareBuffer(r, c)
                                } catch (e) {
                                    s = !0, i = e
                                } finally {
                                    try {
                                        u || null == h.return || h.return()
                                    } finally {
                                        if (s) throw i
                                    }
                                }
                                c.disableRemainingAttributes(), this._applyColorBlend(this.curStrokeColor, r.model.hasStrokeTransparency()), this._drawArrays(t.TRIANGLES, e), c.unbindShader()
                            }
                            return this.geometryBuilder && this.geometryBuilder.addRetained(r), this
                        }, a.default.RendererGL.prototype.drawBuffersScaled = function(e, t, r, o) {
                            var n = this.uModelMatrix.copy();
                            try {
                                this.uModelMatrix.scale(t, r, o), this.drawBuffers(e)
                            } finally {
                                this.uModelMatrix = n
                            }
                        }, a.default.RendererGL.prototype._drawArrays = function(e, t) {
                            return this.GL.drawArrays(e, 0, this.retainedMode.geometry[t].lineVertexCount), this
                        }, a.default.RendererGL.prototype._drawElements = function(e, t) {
                            var t = this.retainedMode.geometry[t],
                                r = this.GL;
                            if (t.indexBuffer) {
                                if (this._pInst.webglVersion !== n.WEBGL2 && t.indexBufferType === r.UNSIGNED_INT && !r.getExtension("OES_element_index_uint")) throw new Error("Unable to render a 3d model with > 65535 triangles. Your web browser does not support the WebGL Extension OES_element_index_uint.");
                                r.drawElements(r.TRIANGLES, t.vertexCount, t.indexBufferType, 0)
                            } else r.drawArrays(e || r.TRIANGLES, 0, t.vertexCount)
                        }, a.default.RendererGL.prototype._drawPoints = function(e, t) {
                            var r = this.GL,
                                o = this._getImmediatePointShader();
                            this._setPointUniforms(o), this._bindBuffer(t, r.ARRAY_BUFFER, this._vToNArray(e), Float32Array, r.STATIC_DRAW), o.enableAttrib(o.attributes.aPosition, 3), this._applyColorBlend(this.curStrokeColor), r.drawArrays(r.Points, 0, e.length), o.unbindShader()
                        };
                        var s = a.default.RendererGL;
                        r.default = s
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.RenderBuffer": 338,
                        "./p5.RendererGL": 341,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.some": 170,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.float32-array": 219,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint16-array": 240,
                        "core-js/modules/es.typed-array.uint32-array": 241,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    341: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.copy-within"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.flat"), e("core-js/modules/es.array.flat-map"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.some"), e("core-js/modules/es.array.unscopables.flat"), e("core-js/modules/es.array.unscopables.flat-map"), e("core-js/modules/es.map"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.reflect.get"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.float64-array"), e("core-js/modules/es.typed-array.int16-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint16-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.copy-within"), e("core-js/modules/es.array.every"), e("core-js/modules/es.array.fill"), e("core-js/modules/es.array.flat"), e("core-js/modules/es.array.flat-map"), e("core-js/modules/es.array.from"), e("core-js/modules/es.array.includes"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.map"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.some"), e("core-js/modules/es.array.unscopables.flat"), e("core-js/modules/es.array.unscopables.flat-map"), e("core-js/modules/es.map"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.set"), e("core-js/modules/es.string.includes"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.float32-array"), e("core-js/modules/es.typed-array.float64-array"), e("core-js/modules/es.typed-array.int16-array"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.uint16-array"), e("core-js/modules/es.typed-array.uint32-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.readPixelsWebGL = M, r.readPixelWebGL = O, r.default = void 0;
                        var g = n(e("../core/main")),
                            l = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = d();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants")),
                            a = n(e("./GeometryBuilder")),
                            c = n(e("libtess")),
                            u = (e("./p5.Shader"), e("./p5.Camera"), e("../core/p5.Renderer"), e("./p5.Matrix"), e("./p5.Framebuffer"), e("path"), e("./p5.Texture"));

                        function d() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, d = function() {
                                return e
                            }, e)
                        }

                        function n(e) {
                            return e && e.__esModule ? e : {
                                default: e
                            }
                        }

                        function h(e) {
                            return (e => {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                            })(e) || (e => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) return Array.from(e)
                            })(e) || (() => {
                                throw new TypeError("Invalid attempt to spread non-iterable instance")
                            })()
                        }

                        function f(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function p(e, t, r) {
                            return (p = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(e, t, r) {
                                if (e = ((e, t) => {
                                        for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = v(e)););
                                        return e
                                    })(e, t)) return (e = Object.getOwnPropertyDescriptor(e, t)).get ? e.get.call(r) : e.value
                            })(e, t, r || e)
                        }

                        function m(e, t) {
                            return (m = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function y(e) {
                            if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                            return e
                        }

                        function v(e) {
                            return (v = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }

                        function b(e, t, r) {
                            t in e ? Object.defineProperty(e, t, {
                                value: r,
                                enumerable: !0,
                                configurable: !0,
                                writable: !0
                            }) : e[t] = r
                        }

                        function s(e, t) {
                            S += "#define STROKE_CAP_".concat(e, " ").concat(t, "\n"), w[l[e]] = t
                        }

                        function _(e, t) {
                            S += "#define STROKE_JOIN_".concat(e, " ").concat(t, "\n"), j[l[e]] = t
                        }
                        var x, w = {},
                            j = {},
                            S = "";
                        s("ROUND", 0), s("PROJECT", 1), s("SQUARE", 2), _("ROUND", 0), _("MITER", 1), _("BEVEL", 2);
                        var T = {
                                sphereMappingFrag: "#define PI 3.141592\n\nprecision highp float;\n  \nuniform sampler2D uSampler;\nuniform mat3 uNewNormalMatrix;\nuniform float uFovY;\nuniform float uAspect;\n\nvarying vec2 vTexCoord;\n  \nvoid main() {\n    float uFovX = uFovY * uAspect; \n    vec4 newTexColor = texture2D(uSampler, vTexCoord);\n    float angleY = mix(uFovY/2.0,  -uFovY/2.0, vTexCoord.y);\n    float angleX = mix(uFovX/2.0, -uFovX/2.0, vTexCoord.x);\n    vec3 rotatedNormal = vec3( angleX, angleY, 1.0 );\n    rotatedNormal = uNewNormalMatrix * normalize(rotatedNormal);\n    float temp = rotatedNormal.z;\n    rotatedNormal.z = rotatedNormal.x;\n    rotatedNormal.x = -temp;\n    vec2 suv;\n    suv.y = 0.5 + 0.5 * (-rotatedNormal.y);\n    suv.x = atan(rotatedNormal.z, rotatedNormal.x) / (2.0 * PI) + 0.5;\n    newTexColor = texture2D(uSampler, suv.xy);\n    gl_FragColor = newTexColor;\n}\n",
                                immediateVert: "IN vec3 aPosition;\nIN vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uResolution;\nuniform float uPointSize;\n\nOUT vec4 vColor;\nvoid main(void) {\n  vec4 positionVec4 = vec4(aPosition, 1.0);\n  gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n  vColor = aVertexColor;\n  gl_PointSize = uPointSize;\n}\n",
                                vertexColorVert: "IN vec3 aPosition;\nIN vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nOUT vec4 vColor;\n\nvoid main(void) {\n  vec4 positionVec4 = vec4(aPosition, 1.0);\n  gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n  vColor = aVertexColor;\n}\n",
                                vertexColorFrag: "IN vec4 vColor;\nvoid main(void) {\n  OUT_COLOR = vec4(vColor.rgb, 1.) * vColor.a;\n}\n",
                                normalVert: "IN vec3 aPosition;\nIN vec3 aNormal;\nIN vec2 aTexCoord;\nIN vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\n\nuniform vec4 uMaterialColor;\nuniform bool uUseVertexColor;\n\nOUT vec3 vVertexNormal;\nOUT highp vec2 vVertTexCoord;\nOUT vec4 vColor;\n\nvoid main(void) {\n  HOOK_beforeVertex();\n  vec4 positionVec4 = vec4(HOOK_getWorldPosition(\n    (uModelViewMatrix * vec4(HOOK_getLocalPosition(aPosition), 1.0)).xyz\n  ), 1.);\n\n  gl_Position = uProjectionMatrix * positionVec4;\n\n  vVertexNormal = HOOK_getWorldNormal(normalize(uNormalMatrix * HOOK_getLocalNormal(aNormal)));\n  vVertTexCoord = HOOK_getUV(aTexCoord);\n  vColor = HOOK_getVertexColor(uUseVertexColor ? aVertexColor : uMaterialColor);\n  HOOK_afterVertex();\n}\n",
                                normalFrag: "IN vec3 vVertexNormal;\nvoid main(void) {\n  HOOK_beforeFragment();\n  OUT_COLOR = HOOK_getFinalColor(vec4(vVertexNormal, 1.0));\n  HOOK_afterFragment();\n}\n",
                                basicFrag: "IN vec4 vColor;\nvoid main(void) {\n  HOOK_beforeFragment();\n  OUT_COLOR = HOOK_getFinalColor(vec4(vColor.rgb, 1.) * vColor.a);\n  HOOK_afterFragment();\n}\n",
                                lightVert: (e = '#define PI 3.141592\n\nprecision highp float;\nprecision highp int;\n\nuniform mat4 uViewMatrix;\n\nuniform bool uUseLighting;\n\nuniform int uAmbientLightCount;\nuniform vec3 uAmbientColor[5];\nuniform mat3 uCameraRotation;\nuniform int uDirectionalLightCount;\nuniform vec3 uLightingDirection[5];\nuniform vec3 uDirectionalDiffuseColors[5];\nuniform vec3 uDirectionalSpecularColors[5];\n\nuniform int uPointLightCount;\nuniform vec3 uPointLightLocation[5];\nuniform vec3 uPointLightDiffuseColors[5];\t\nuniform vec3 uPointLightSpecularColors[5];\n\nuniform int uSpotLightCount;\nuniform float uSpotLightAngle[5];\nuniform float uSpotLightConc[5];\nuniform vec3 uSpotLightDiffuseColors[5];\nuniform vec3 uSpotLightSpecularColors[5];\nuniform vec3 uSpotLightLocation[5];\nuniform vec3 uSpotLightDirection[5];\n\nuniform bool uSpecular;\nuniform float uShininess;\nuniform float uMetallic;\n\nuniform float uConstantAttenuation;\nuniform float uLinearAttenuation;\nuniform float uQuadraticAttenuation;\n\n// setting from  _setImageLightUniforms()\n// boolean to initiate the calculateImageDiffuse and calculateImageSpecular\nuniform bool uUseImageLight;\n// texture for use in calculateImageDiffuse\nuniform sampler2D environmentMapDiffused;\n// texture for use in calculateImageSpecular\nuniform sampler2D environmentMapSpecular;\n\nconst float specularFactor = 2.0;\nconst float diffuseFactor = 0.73;\n\nstruct LightResult {\n  float specular;\n  float diffuse;\n};\n\nfloat _phongSpecular(\n  vec3 lightDirection,\n  vec3 viewDirection,\n  vec3 surfaceNormal,\n  float shininess) {\n\n  vec3 R = reflect(lightDirection, surfaceNormal);\n  return pow(max(0.0, dot(R, viewDirection)), shininess);\n}\n\nfloat _lambertDiffuse(vec3 lightDirection, vec3 surfaceNormal) {\n  return max(0.0, dot(-lightDirection, surfaceNormal));\n}\n\nLightResult _light(vec3 viewDirection, vec3 normal, vec3 lightVector, float shininess, float metallic) {\n\n  vec3 lightDir = normalize(lightVector);\n\n  //compute our diffuse & specular terms\n  LightResult lr;\n  float specularIntensity = mix(1.0, 0.4, metallic);\n  float diffuseIntensity = mix(1.0, 0.1, metallic);\n  if (uSpecular)\n    lr.specular = (_phongSpecular(lightDir, viewDirection, normal, shininess)) * specularIntensity;\n    lr.diffuse = _lambertDiffuse(lightDir, normal) * diffuseIntensity;\n  return lr;\n}\n\n// converts the range of "value" from [min1 to max1] to [min2 to max2]\nfloat map(float value, float min1, float max1, float min2, float max2) {\n  return min2 + (value - min1) * (max2 - min2) / (max1 - min1);\n}\n\nvec2 mapTextureToNormal( vec3 v ){\n  // x = r sin(phi) cos(theta)   \n  // y = r cos(phi)  \n  // z = r sin(phi) sin(theta)\n  float phi = acos( v.y );\n  // if phi is 0, then there are no x, z components\n  float theta = 0.0;\n  // else \n  theta = acos(v.x / sin(phi));\n  float sinTheta = v.z / sin(phi);\n  if (sinTheta < 0.0) {\n    // Turn it into -theta, but in the 0-2PI range\n    theta = 2.0 * PI - theta;\n  }\n  theta = theta / (2.0 * 3.14159);\n  phi = phi / 3.14159 ;\n  \n  vec2 angles = vec2( fract(theta + 0.25), 1.0 - phi );\n  return angles;\n}\n\n\nvec3 calculateImageDiffuse(vec3 vNormal, vec3 vViewPosition, float metallic){\n  // make 2 seperate builds \n  vec3 worldCameraPosition =  vec3(0.0, 0.0, 0.0);  // hardcoded world camera position\n  vec3 worldNormal = normalize(vNormal * uCameraRotation);\n  vec2 newTexCoor = mapTextureToNormal( worldNormal );\n  vec4 texture = TEXTURE( environmentMapDiffused, newTexCoor );\n  // this is to make the darker sections more dark\n  // png and jpg usually flatten the brightness so it is to reverse that\n  return mix(smoothstep(vec3(0.0), vec3(1.0), texture.xyz), vec3(0.0), metallic);\n}\n\nvec3 calculateImageSpecular(vec3 vNormal, vec3 vViewPosition, float shininess, float metallic){\n  vec3 worldCameraPosition =  vec3(0.0, 0.0, 0.0);\n  vec3 worldNormal = normalize(vNormal);\n  vec3 lightDirection = normalize( vViewPosition - worldCameraPosition );\n  vec3 R = reflect(lightDirection, worldNormal) * uCameraRotation;\n  vec2 newTexCoor = mapTextureToNormal( R );\n#ifdef WEBGL2\n  // In p5js the range of shininess is >= 1,\n  // Therefore roughness range will be ([0,1]*8)*20 or [0, 160]\n  // The factor of 8 is because currently the getSpecularTexture\n  // only calculated 8 different levels of roughness\n  // The factor of 20 is just to spread up this range so that,\n  // [1, max] of shininess is converted to [0,160] of roughness\n  float roughness = 20. / shininess;\n  vec4 outColor = textureLod(environmentMapSpecular, newTexCoor, roughness * 8.);\n#else\n  vec4 outColor = TEXTURE(environmentMapSpecular, newTexCoor);\n#endif\n  // this is to make the darker sections more dark\n  // png and jpg usually flatten the brightness so it is to reverse that\n  return mix(\n    pow(outColor.xyz, vec3(10)),\n    pow(outColor.xyz, vec3(1.2)),\n    metallic \n  );\n}\n\nvoid totalLight(\n  vec3 modelPosition,\n  vec3 normal,\n  float shininess,\n  float metallic,\n  out vec3 totalDiffuse,\n  out vec3 totalSpecular\n) {\n\n  totalSpecular = vec3(0.0);\n\n  if (!uUseLighting) {\n    totalDiffuse = vec3(1.0);\n    return;\n  }\n\n  totalDiffuse = vec3(0.0);\n\n  vec3 viewDirection = normalize(-modelPosition);\n\n  for (int j = 0; j < 5; j++) {\n    if (j < uDirectionalLightCount) {\n      vec3 lightVector = (uViewMatrix * vec4(uLightingDirection[j], 0.0)).xyz;\n      vec3 lightColor = uDirectionalDiffuseColors[j];\n      vec3 specularColor = uDirectionalSpecularColors[j];\n      LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic);\n      totalDiffuse += result.diffuse * lightColor;\n      totalSpecular += result.specular * lightColor * specularColor;\n    }\n\n    if (j < uPointLightCount) {\n      vec3 lightPosition = (uViewMatrix * vec4(uPointLightLocation[j], 1.0)).xyz;\n      vec3 lightVector = modelPosition - lightPosition;\n      //calculate attenuation\n      float lightDistance = length(lightVector);\n      float lightFalloff = 1.0 / (uConstantAttenuation + lightDistance * uLinearAttenuation + (lightDistance * lightDistance) * uQuadraticAttenuation);\n      vec3 lightColor = lightFalloff * uPointLightDiffuseColors[j];\n      vec3 specularColor = lightFalloff * uPointLightSpecularColors[j];\n\n      LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic);\n      totalDiffuse += result.diffuse * lightColor;\n      totalSpecular += result.specular * lightColor * specularColor;\n    }\n\n    if(j < uSpotLightCount) {\n      vec3 lightPosition = (uViewMatrix * vec4(uSpotLightLocation[j], 1.0)).xyz;\n      vec3 lightVector = modelPosition - lightPosition;\n    \n      float lightDistance = length(lightVector);\n      float lightFalloff = 1.0 / (uConstantAttenuation + lightDistance * uLinearAttenuation + (lightDistance * lightDistance) * uQuadraticAttenuation);\n\n      vec3 lightDirection = (uViewMatrix * vec4(uSpotLightDirection[j], 0.0)).xyz;\n      float spotDot = dot(normalize(lightVector), normalize(lightDirection));\n      float spotFalloff;\n      if(spotDot < uSpotLightAngle[j]) {\n        spotFalloff = 0.0;\n      }\n      else {\n        spotFalloff = pow(spotDot, uSpotLightConc[j]);\n      }\n      lightFalloff *= spotFalloff;\n\n      vec3 lightColor = uSpotLightDiffuseColors[j];\n      vec3 specularColor = uSpotLightSpecularColors[j];\n     \n      LightResult result = _light(viewDirection, normal, lightVector, shininess, metallic);\n      \n      totalDiffuse += result.diffuse * lightColor * lightFalloff;\n      totalSpecular += result.specular * lightColor * specularColor * lightFalloff;\n    }\n  }\n\n  if( uUseImageLight ){\n    totalDiffuse += calculateImageDiffuse(normal, modelPosition, metallic);\n    totalSpecular += calculateImageSpecular(normal, modelPosition, shininess, metallic);\n  }\n\n  totalDiffuse *= diffuseFactor;\n  totalSpecular *= specularFactor;\n}\n') + "// include lighting.glgl\n\nIN vec3 aPosition;\nIN vec3 aNormal;\nIN vec2 aTexCoord;\nIN vec4 aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\n\nuniform bool uUseVertexColor;\nuniform vec4 uMaterialColor;\n\nOUT highp vec2 vVertTexCoord;\nOUT vec3 vDiffuseColor;\nOUT vec3 vSpecularColor;\nOUT vec4 vColor;\n\nvoid main(void) {\n\n  vec4 viewModelPosition = uModelViewMatrix * vec4(aPosition, 1.0);\n  gl_Position = uProjectionMatrix * viewModelPosition;\n\n  vec3 vertexNormal = normalize(uNormalMatrix * aNormal);\n  vVertTexCoord = aTexCoord;\n\n  totalLight(viewModelPosition.xyz, vertexNormal, vDiffuseColor, vSpecularColor);\n\n  for (int i = 0; i < 8; i++) {\n    if (i < uAmbientLightCount) {\n      vDiffuseColor += uAmbientColor[i];\n    }\n  }\n  \n  vColor = (uUseVertexColor ? aVertexColor : uMaterialColor);\n}\n",
                                lightTextureFrag: "uniform vec4 uTint;\nuniform sampler2D uSampler;\nuniform bool isTexture;\nuniform bool uEmissive;\n\nIN highp vec2 vVertTexCoord;\nIN vec3 vDiffuseColor;\nIN vec3 vSpecularColor;\nIN vec4 vColor;\n\nvoid main(void) {\n  if(uEmissive && !isTexture) {\n    OUT_COLOR = vColor;\n  }\n  else {\n    vec4 baseColor = isTexture\n      // Textures come in with premultiplied alpha. To apply tint and still have\n      // premultiplied alpha output, we need to multiply the RGB channels by the\n      // tint RGB, and all channels by the tint alpha.\n      ? TEXTURE(uSampler, vVertTexCoord) * vec4(uTint.rgb/255., 1.) * (uTint.a/255.)\n      // Colors come in with unmultiplied alpha, so we need to multiply the RGB\n      // channels by alpha to convert it to premultiplied alpha.\n      : vec4(vColor.rgb * vColor.a, vColor.a);\n    OUT_COLOR = vec4(baseColor.rgb * vDiffuseColor + vSpecularColor, baseColor.a);\n  }\n}\n",
                                phongVert: "precision highp int;\n\nIN vec3 aPosition;\nIN vec3 aNormal;\nIN vec2 aTexCoord;\nIN vec4 aVertexColor;\n\nuniform vec3 uAmbientColor[5];\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\nuniform int uAmbientLightCount;\n\nuniform bool uUseVertexColor;\nuniform vec4 uMaterialColor;\n\nOUT vec3 vNormal;\nOUT vec2 vTexCoord;\nOUT vec3 vViewPosition;\nOUT vec3 vAmbientColor;\nOUT vec4 vColor;\n\nvoid main(void) {\n  HOOK_beforeVertex();\n  vec4 viewModelPosition = vec4(HOOK_getWorldPosition(\n    (uModelViewMatrix * vec4(HOOK_getLocalPosition(aPosition), 1.0)).xyz\n  ), 1.);\n\n  // Pass varyings to fragment shader\n  vViewPosition = viewModelPosition.xyz;\n  gl_Position = uProjectionMatrix * viewModelPosition;  \n\n  vNormal = HOOK_getWorldNormal(uNormalMatrix * HOOK_getLocalNormal(aNormal));\n  vTexCoord = HOOK_getUV(aTexCoord);\n\n  // TODO: this should be a uniform\n  vAmbientColor = vec3(0.0);\n  for (int i = 0; i < 5; i++) {\n    if (i < uAmbientLightCount) {\n      vAmbientColor += uAmbientColor[i];\n    }\n  }\n  \n  vColor = HOOK_getVertexColor((uUseVertexColor ? aVertexColor : uMaterialColor));\n  HOOK_afterVertex();\n}\n",
                                phongFrag: e + "// include lighting.glsl\nprecision highp int;\n\nuniform bool uHasSetAmbient;\nuniform vec4 uSpecularMatColor;\nuniform vec4 uAmbientMatColor;\nuniform vec4 uEmissiveMatColor;\n\nuniform vec4 uTint;\nuniform sampler2D uSampler;\nuniform bool isTexture;\n\nIN vec3 vNormal;\nIN vec2 vTexCoord;\nIN vec3 vViewPosition;\nIN vec3 vAmbientColor;\nIN vec4 vColor;\n\nstruct ColorComponents {\n  vec3 baseColor;\n  float opacity;\n  vec3 ambientColor;\n  vec3 specularColor;\n  vec3 diffuse;\n  vec3 ambient;\n  vec3 specular;\n  vec3 emissive;\n};\n\nstruct Inputs {\n  vec3 normal;\n  vec2 texCoord;\n  vec3 ambientLight;\n  vec3 ambientMaterial;\n  vec3 specularMaterial;\n  vec3 emissiveMaterial;\n  vec4 color;\n  float shininess;\n  float metalness;\n};\n\nvoid main(void) {\n  HOOK_beforeFragment();\n\n  Inputs inputs;\n  inputs.normal = normalize(vNormal);\n  inputs.texCoord = vTexCoord;\n  inputs.ambientLight = vAmbientColor;\n  inputs.color = isTexture\n      // Textures come in with premultiplied alpha. To apply tint and still have\n      // premultiplied alpha output, we need to multiply the RGB channels by the\n      // tint RGB, and all channels by the tint alpha.\n      ? TEXTURE(uSampler, vTexCoord) * vec4(uTint.rgb/255., 1.) * (uTint.a/255.)\n      // Colors come in with unmultiplied alpha, so we need to multiply the RGB\n      // channels by alpha to convert it to premultiplied alpha.\n      : vec4(vColor.rgb * vColor.a, vColor.a);\n  inputs.shininess = uShininess;\n  inputs.metalness = uMetallic;\n  inputs.ambientMaterial = uHasSetAmbient ? uAmbientMatColor.rgb : inputs.color.rgb;\n  inputs.specularMaterial = uSpecularMatColor.rgb;\n  inputs.emissiveMaterial = uEmissiveMatColor.rgb;\n  inputs = HOOK_getPixelInputs(inputs);\n\n  vec3 diffuse;\n  vec3 specular;\n  totalLight(vViewPosition, inputs.normal, inputs.shininess, inputs.metalness, diffuse, specular);\n\n  // Calculating final color as result of all lights (plus emissive term).\n\n  vec2 texCoord = inputs.texCoord;\n  vec4 baseColor = inputs.color;\n  ColorComponents c;\n  c.opacity = baseColor.a;\n  c.baseColor = baseColor.rgb;\n  c.ambientColor = inputs.ambientMaterial;\n  c.specularColor = inputs.specularMaterial;\n  c.diffuse = diffuse;\n  c.ambient = inputs.ambientLight;\n  c.specular = specular;\n  c.emissive = inputs.emissiveMaterial;\n  OUT_COLOR = HOOK_getFinalColor(HOOK_combineColors(c));\n  HOOK_afterFragment();\n}\n",
                                fontVert: "IN vec3 aPosition;\nIN vec2 aTexCoord;\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nuniform vec4 uGlyphRect;\nuniform float uGlyphOffset;\n\nOUT vec2 vTexCoord;\nOUT float w;\n\nvoid main() {\n  vec4 positionVec4 = vec4(aPosition, 1.0);\n\n  // scale by the size of the glyph's rectangle\n  positionVec4.xy *= uGlyphRect.zw - uGlyphRect.xy;\n\n  // Expand glyph bounding boxes by 1px on each side to give a bit of room\n  // for antialiasing\n  vec3 newOrigin = (uModelViewMatrix * vec4(0., 0., 0., 1.)).xyz;\n  vec3 newDX = (uModelViewMatrix * vec4(1., 0., 0., 1.)).xyz;\n  vec3 newDY = (uModelViewMatrix * vec4(0., 1., 0., 1.)).xyz;\n  vec2 pixelScale = vec2(\n    1. / length(newOrigin - newDX),\n    1. / length(newOrigin - newDY)\n  );\n  vec2 offset = pixelScale * normalize(aTexCoord - vec2(0.5, 0.5)) * vec2(1., -1.);\n  vec2 textureOffset = offset * (1. / vec2(\n    uGlyphRect.z - uGlyphRect.x,\n    uGlyphRect.w - uGlyphRect.y\n  ));\n\n  // move to the corner of the glyph\n  positionVec4.xy += uGlyphRect.xy;\n\n  // move to the letter's line offset\n  positionVec4.x += uGlyphOffset;\n\n  positionVec4.xy += offset;\n  \n  gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n  vTexCoord = aTexCoord + textureOffset;\n  w = gl_Position.w;\n}\n",
                                fontFrag: "#ifndef WEBGL2\n#extension GL_OES_standard_derivatives : enable\n#endif\n\n#if 0\n  // simulate integer math using floats\n\t#define int float\n\t#define ivec2 vec2\n\t#define INT(x) float(x)\n\n\tint ifloor(float v) { return floor(v); }\n\tivec2 ifloor(vec2 v) { return floor(v); }\n\n#else\n  // use native integer math\n\tprecision highp int;\n\t#define INT(x) x\n\n\tint ifloor(float v) { return int(v); }\n\tint ifloor(int v) { return v; }\n\tivec2 ifloor(vec2 v) { return ivec2(v); }\n\n#endif\n\nuniform sampler2D uSamplerStrokes;\nuniform sampler2D uSamplerRowStrokes;\nuniform sampler2D uSamplerRows;\nuniform sampler2D uSamplerColStrokes;\nuniform sampler2D uSamplerCols;\n\nuniform ivec2 uStrokeImageSize;\nuniform ivec2 uCellsImageSize;\nuniform ivec2 uGridImageSize;\n\nuniform ivec2 uGridOffset;\nuniform ivec2 uGridSize;\nuniform vec4 uMaterialColor;\n\nIN vec2 vTexCoord;\n\n// some helper functions\nint ROUND(float v) { return ifloor(v + 0.5); }\nivec2 ROUND(vec2 v) { return ifloor(v + 0.5); }\nfloat saturate(float v) { return clamp(v, 0.0, 1.0); }\nvec2 saturate(vec2 v) { return clamp(v, 0.0, 1.0); }\n\nint mul(float v1, int v2) {\n  return ifloor(v1 * float(v2));\n}\n\nivec2 mul(vec2 v1, ivec2 v2) {\n  return ifloor(v1 * vec2(v2) + 0.5);\n}\n\n// unpack a 16-bit integer from a float vec2\nint getInt16(vec2 v) {\n  ivec2 iv = ROUND(v * 255.0);\n  return iv.x * INT(128) + iv.y;\n}\n\nvec2 pixelScale;\nvec2 coverage = vec2(0.0);\nvec2 weight = vec2(0.5);\nconst float minDistance = 1.0/8192.0;\nconst float hardness = 1.05; // amount of antialias\n\n// the maximum number of curves in a glyph\nconst int N = INT(250);\n\n// retrieves an indexed pixel from a sampler\nvec4 getTexel(sampler2D sampler, int pos, ivec2 size) {\n  int width = size.x;\n  int y = ifloor(pos / width);\n  int x = pos - y * width;  // pos % width\n\n  return TEXTURE(sampler, (vec2(x, y) + 0.5) / vec2(size));\n}\n\nvoid calulateCrossings(vec2 p0, vec2 p1, vec2 p2, out vec2 C1, out vec2 C2) {\n\n  // get the coefficients of the quadratic in t\n  vec2 a = p0 - p1 * 2.0 + p2;\n  vec2 b = p0 - p1;\n  vec2 c = p0 - vTexCoord;\n\n  // found out which values of 't' it crosses the axes\n  vec2 surd = sqrt(max(vec2(0.0), b * b - a * c));\n  vec2 t1 = ((b - surd) / a).yx;\n  vec2 t2 = ((b + surd) / a).yx;\n\n  // approximate straight lines to avoid rounding errors\n  if (abs(a.y) < 0.001)\n    t1.x = t2.x = c.y / (2.0 * b.y);\n\n  if (abs(a.x) < 0.001)\n    t1.y = t2.y = c.x / (2.0 * b.x);\n\n  // plug into quadratic formula to find the corrdinates of the crossings\n  C1 = ((a * t1 - b * 2.0) * t1 + c) * pixelScale;\n  C2 = ((a * t2 - b * 2.0) * t2 + c) * pixelScale;\n}\n\nvoid coverageX(vec2 p0, vec2 p1, vec2 p2) {\n\n  vec2 C1, C2;\n  calulateCrossings(p0, p1, p2, C1, C2);\n\n  // determine on which side of the x-axis the points lie\n  bool y0 = p0.y > vTexCoord.y;\n  bool y1 = p1.y > vTexCoord.y;\n  bool y2 = p2.y > vTexCoord.y;\n\n  // could web be under the curve (after t1)?\n  if (y1 ? !y2 : y0) {\n    // add the coverage for t1\n    coverage.x += saturate(C1.x + 0.5);\n    // calculate the anti-aliasing for t1\n    weight.x = min(weight.x, abs(C1.x));\n  }\n\n  // are we outside the curve (after t2)?\n  if (y1 ? !y0 : y2) {\n    // subtract the coverage for t2\n    coverage.x -= saturate(C2.x + 0.5);\n    // calculate the anti-aliasing for t2\n    weight.x = min(weight.x, abs(C2.x));\n  }\n}\n\n// this is essentially the same as coverageX, but with the axes swapped\nvoid coverageY(vec2 p0, vec2 p1, vec2 p2) {\n\n  vec2 C1, C2;\n  calulateCrossings(p0, p1, p2, C1, C2);\n\n  bool x0 = p0.x > vTexCoord.x;\n  bool x1 = p1.x > vTexCoord.x;\n  bool x2 = p2.x > vTexCoord.x;\n\n  if (x1 ? !x2 : x0) {\n    coverage.y -= saturate(C1.y + 0.5);\n    weight.y = min(weight.y, abs(C1.y));\n  }\n\n  if (x1 ? !x0 : x2) {\n    coverage.y += saturate(C2.y + 0.5);\n    weight.y = min(weight.y, abs(C2.y));\n  }\n}\n\nvoid main() {\n\n  // calculate the pixel scale based on screen-coordinates\n  pixelScale = hardness / fwidth(vTexCoord);\n\n  // which grid cell is this pixel in?\n  ivec2 gridCoord = ifloor(vTexCoord * vec2(uGridSize));\n\n  // intersect curves in this row\n  {\n    // the index into the row info bitmap\n    int rowIndex = gridCoord.y + uGridOffset.y;\n    // fetch the info texel\n    vec4 rowInfo = getTexel(uSamplerRows, rowIndex, uGridImageSize);\n    // unpack the rowInfo\n    int rowStrokeIndex = getInt16(rowInfo.xy);\n    int rowStrokeCount = getInt16(rowInfo.zw);\n\n    for (int iRowStroke = INT(0); iRowStroke < N; iRowStroke++) {\n      if (iRowStroke >= rowStrokeCount)\n        break;\n\n      // each stroke is made up of 3 points: the start and control point\n      // and the start of the next curve.\n      // fetch the indices of this pair of strokes:\n      vec4 strokeIndices = getTexel(uSamplerRowStrokes, rowStrokeIndex++, uCellsImageSize);\n\n      // unpack the stroke index\n      int strokePos = getInt16(strokeIndices.xy);\n\n      // fetch the two strokes\n      vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n      vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n\n      // calculate the coverage\n      coverageX(stroke0.xy, stroke0.zw, stroke1.xy);\n    }\n  }\n\n  // intersect curves in this column\n  {\n    int colIndex = gridCoord.x + uGridOffset.x;\n    vec4 colInfo = getTexel(uSamplerCols, colIndex, uGridImageSize);\n    int colStrokeIndex = getInt16(colInfo.xy);\n    int colStrokeCount = getInt16(colInfo.zw);\n    \n    for (int iColStroke = INT(0); iColStroke < N; iColStroke++) {\n      if (iColStroke >= colStrokeCount)\n        break;\n\n      vec4 strokeIndices = getTexel(uSamplerColStrokes, colStrokeIndex++, uCellsImageSize);\n\n      int strokePos = getInt16(strokeIndices.xy);\n      vec4 stroke0 = getTexel(uSamplerStrokes, strokePos + INT(0), uStrokeImageSize);\n      vec4 stroke1 = getTexel(uSamplerStrokes, strokePos + INT(1), uStrokeImageSize);\n      coverageY(stroke0.xy, stroke0.zw, stroke1.xy);\n    }\n  }\n\n  weight = saturate(1.0 - weight * 2.0);\n  float distance = max(weight.x + weight.y, minDistance); // manhattan approx.\n  float antialias = abs(dot(coverage, weight) / distance);\n  float cover = min(abs(coverage.x), abs(coverage.y));\n  OUT_COLOR = vec4(uMaterialColor.rgb, 1.) * uMaterialColor.a;\n  OUT_COLOR *= saturate(max(antialias, cover));\n}\n",
                                lineVert: S + "/*\n  Part of the Processing project - http://processing.org\n  Copyright (c) 2012-15 The Processing Foundation\n  Copyright (c) 2004-12 Ben Fry and Casey Reas\n  Copyright (c) 2001-04 Massachusetts Institute of Technology\n  This library is free software; you can redistribute it and/or\n  modify it under the terms of the GNU Lesser General Public\n  License as published by the Free Software Foundation, version 2.1.\n  This library is distributed in the hope that it will be useful,\n  but WITHOUT ANY WARRANTY; without even the implied warranty of\n  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n  Lesser General Public License for more details.\n  You should have received a copy of the GNU Lesser General\n  Public License along with this library; if not, write to the\n  Free Software Foundation, Inc., 59 Temple Place, Suite 330,\n  Boston, MA  02111-1307  USA\n*/\n\n#define PROCESSING_LINE_SHADER\n\nprecision mediump int;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform float uStrokeWeight;\n\nuniform bool uUseLineColor;\nuniform vec4 uMaterialColor;\n\nuniform vec4 uViewport;\nuniform int uPerspective;\nuniform int uStrokeJoin;\n\nIN vec4 aPosition;\nIN vec3 aTangentIn;\nIN vec3 aTangentOut;\nIN float aSide;\nIN vec4 aVertexColor;\n\nOUT vec4 vColor;\nOUT vec2 vTangent;\nOUT vec2 vCenter;\nOUT vec2 vPosition;\nOUT float vMaxDist;\nOUT float vCap;\nOUT float vJoin;\nOUT float vStrokeWeight;\n\nvec2 lineIntersection(vec2 aPoint, vec2 aDir, vec2 bPoint, vec2 bDir) {\n  // Rotate and translate so a starts at the origin and goes out to the right\n  bPoint -= aPoint;\n  vec2 rotatedBFrom = vec2(\n    bPoint.x*aDir.x + bPoint.y*aDir.y,\n    bPoint.y*aDir.x - bPoint.x*aDir.y\n  );\n  vec2 bTo = bPoint + bDir;\n  vec2 rotatedBTo = vec2(\n    bTo.x*aDir.x + bTo.y*aDir.y,\n    bTo.y*aDir.x - bTo.x*aDir.y\n  );\n  float intersectionDistance =\n    rotatedBTo.x + (rotatedBFrom.x - rotatedBTo.x) * rotatedBTo.y /\n    (rotatedBTo.y - rotatedBFrom.y);\n  return aPoint + aDir * intersectionDistance;\n}\n\nvoid main() {\n  HOOK_beforeVertex();\n  // Caps have one of either the in or out tangent set to 0\n  vCap = (aTangentIn == vec3(0.)) != (aTangentOut == (vec3(0.)))\n    ? 1. : 0.;\n\n  // Joins have two unique, defined tangents\n  vJoin = (\n    aTangentIn != vec3(0.) &&\n    aTangentOut != vec3(0.) &&\n    aTangentIn != aTangentOut\n  ) ? 1. : 0.;\n\n  vec4 localPosition = vec4(HOOK_getLocalPosition(aPosition.xyz), 1.);\n  vec4 posp = vec4(HOOK_getWorldPosition((uModelViewMatrix * localPosition).xyz), 1.);\n  vec4 posqIn = posp + uModelViewMatrix * vec4(aTangentIn, 0);\n  vec4 posqOut = posp + uModelViewMatrix * vec4(aTangentOut, 0);\n  float strokeWeight = HOOK_getStrokeWeight(uStrokeWeight);\n  vStrokeWeight = strokeWeight;\n\n  float facingCamera = pow(\n    // The word space tangent's z value is 0 if it's facing the camera\n    abs(normalize(posqIn-posp).z),\n\n    // Using pow() here to ramp `facingCamera` up from 0 to 1 really quickly\n    // so most lines get scaled and don't get clipped\n    0.25\n  );\n\n  // Moving vertices slightly toward the camera\n  // to avoid depth-fighting with the fill triangles.\n  // A mix of scaling and offsetting is used based on distance\n  // Discussion here:\n  // https://github.com/processing/p5.js/issues/7200 \n\n  // using a scale <1 moves the lines towards nearby camera\n  // in order to prevent popping effects due to half of\n  // the line disappearing behind the geometry faces.\n  float zDistance = -posp.z; \n  float distanceFactor = smoothstep(0.0, 800.0, zDistance); \n  \n  // Discussed here:\n  // http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252848  \n  float scale = mix(1., 0.995, facingCamera);\n  float dynamicScale = mix(scale, 1.0, distanceFactor); // Closer = more scale, farther = less\n\n  posp.xyz = posp.xyz * dynamicScale;\n  posqIn.xyz = posqIn.xyz * dynamicScale;\n  posqOut.xyz = posqOut.xyz * dynamicScale;\n\n  // Moving vertices slightly toward camera when far away \n  // https://github.com/processing/p5.js/issues/6956 \n  float zOffset = mix(-0.00045, -1., facingCamera);\n  float dynamicZAdjustment = mix(0.0, zOffset, distanceFactor); // Closer = less zAdjustment, farther = more\n\n  posp.z -= dynamicZAdjustment;\n  posqIn.z -= dynamicZAdjustment;\n  posqOut.z -= dynamicZAdjustment;\n  \n  vec4 p = uProjectionMatrix * posp;\n  vec4 qIn = uProjectionMatrix * posqIn;\n  vec4 qOut = uProjectionMatrix * posqOut;\n  vCenter = HOOK_getLineCenter(p.xy);\n\n  // formula to convert from clip space (range -1..1) to screen space (range 0..[width or height])\n  // screen_p = (p.xy/p.w + <1,1>) * 0.5 * uViewport.zw\n\n  // prevent division by W by transforming the tangent formula (div by 0 causes\n  // the line to disappear, see https://github.com/processing/processing/issues/5183)\n  // t = screen_q - screen_p\n  //\n  // tangent is normalized and we don't care which aDirection it points to (+-)\n  // t = +- normalize( screen_q - screen_p )\n  // t = +- normalize( (q.xy/q.w+<1,1>)*0.5*uViewport.zw - (p.xy/p.w+<1,1>)*0.5*uViewport.zw )\n  //\n  // extract common factor, <1,1> - <1,1> cancels out\n  // t = +- normalize( (q.xy/q.w - p.xy/p.w) * 0.5 * uViewport.zw )\n  //\n  // convert to common divisor\n  // t = +- normalize( ((q.xy*p.w - p.xy*q.w) / (p.w*q.w)) * 0.5 * uViewport.zw )\n  //\n  // remove the common scalar divisor/factor, not needed due to normalize and +-\n  // (keep uViewport - can't remove because it has different components for x and y\n  //  and corrects for aspect ratio, see https://github.com/processing/processing/issues/5181)\n  // t = +- normalize( (q.xy*p.w - p.xy*q.w) * uViewport.zw )\n\n  vec2 tangentIn = normalize((qIn.xy*p.w - p.xy*qIn.w) * uViewport.zw);\n  vec2 tangentOut = normalize((qOut.xy*p.w - p.xy*qOut.w) * uViewport.zw);\n\n  vec2 curPerspScale;\n  if(uPerspective == 1) {\n    // Perspective ---\n    // convert from world to clip by multiplying with projection scaling factor\n    // to get the right thickness (see https://github.com/processing/processing/issues/5182)\n\n    // The y value of the projection matrix may be flipped if rendering to a Framebuffer.\n    // Multiplying again by its sign here negates the flip to get just the scale.\n    curPerspScale = (uProjectionMatrix * vec4(1, sign(uProjectionMatrix[1][1]), 0, 0)).xy;\n  } else {\n    // No Perspective ---\n    // multiply by W (to cancel out division by W later in the pipeline) and\n    // convert from screen to clip (derived from clip to screen above)\n    curPerspScale = p.w / (0.5 * uViewport.zw);\n  }\n\n  vec2 offset;\n  if (vJoin == 1.) {\n    vTangent = normalize(tangentIn + tangentOut);\n    vec2 normalIn = vec2(-tangentIn.y, tangentIn.x);\n    vec2 normalOut = vec2(-tangentOut.y, tangentOut.x);\n    float side = sign(aSide);\n    float sideEnum = abs(aSide);\n\n    // We generate vertices for joins on either side of the centerline, but\n    // the \"elbow\" side is the only one needing a join. By not setting the\n    // offset for the other side, all its vertices will end up in the same\n    // spot and not render, effectively discarding it.\n    if (sign(dot(tangentOut, vec2(-tangentIn.y, tangentIn.x))) != side) {\n      // Side enums:\n      //   1: the side going into the join\n      //   2: the middle of the join\n      //   3: the side going out of the join\n      if (sideEnum == 2.) {\n        // Calculate the position + tangent on either side of the join, and\n        // find where the lines intersect to find the elbow of the join\n        vec2 c = (posp.xy/posp.w + vec2(1.,1.)) * 0.5 * uViewport.zw;\n        vec2 intersection = lineIntersection(\n          c + (side * normalIn * strokeWeight / 2.),\n          tangentIn,\n          c + (side * normalOut * strokeWeight / 2.),\n          tangentOut\n        );\n        offset = (intersection - c);\n\n        // When lines are thick and the angle of the join approaches 180, the\n        // elbow might be really far from the center. We'll apply a limit to\n        // the magnitude to avoid lines going across the whole screen when this\n        // happens.\n        float mag = length(offset);\n        float maxMag = 3. * strokeWeight;\n        if (mag > maxMag) {\n          offset *= maxMag / mag;\n        }\n      } else if (sideEnum == 1.) {\n        offset = side * normalIn * strokeWeight / 2.;\n      } else if (sideEnum == 3.) {\n        offset = side * normalOut * strokeWeight / 2.;\n      }\n    }\n    if (uStrokeJoin == STROKE_JOIN_BEVEL) {\n      vec2 avgNormal = vec2(-vTangent.y, vTangent.x);\n      vMaxDist = abs(dot(avgNormal, normalIn * strokeWeight / 2.));\n    } else {\n      vMaxDist = strokeWeight / 2.;\n    }\n  } else {\n    vec2 tangent = aTangentIn == vec3(0.) ? tangentOut : tangentIn;\n    vTangent = tangent;\n    vec2 normal = vec2(-tangent.y, tangent.x);\n\n    float normalOffset = sign(aSide);\n    // Caps will have side values of -2 or 2 on the edge of the cap that\n    // extends out from the line\n    float tangentOffset = abs(aSide) - 1.;\n    offset = (normal * normalOffset + tangent * tangentOffset) *\n      strokeWeight * 0.5;\n    vMaxDist = strokeWeight / 2.;\n  }\n  vPosition = HOOK_getLinePosition(vCenter + offset);\n\n  gl_Position.xy = p.xy + offset.xy * curPerspScale;\n  gl_Position.zw = p.zw;\n  \n  vColor = HOOK_getVertexColor(uUseLineColor ? aVertexColor : uMaterialColor);\n  HOOK_afterVertex();\n}\n",
                                lineFrag: S + "precision mediump int;\n\nuniform vec4 uMaterialColor;\nuniform int uStrokeCap;\nuniform int uStrokeJoin;\n\nIN vec4 vColor;\nIN vec2 vTangent;\nIN vec2 vCenter;\nIN vec2 vPosition;\nIN float vStrokeWeight;\nIN float vMaxDist;\nIN float vCap;\nIN float vJoin;\n\nfloat distSquared(vec2 a, vec2 b) {\n  vec2 aToB = b - a;\n  return dot(aToB, aToB);\n}\n\nstruct Inputs {\n  vec4 color;\n  vec2 tangent;\n  vec2 center;\n  vec2 position;\n  float strokeWeight;\n};\n\nvoid main() {\n  HOOK_beforeFragment();\n\n  Inputs inputs;\n  inputs.color = vColor;\n  inputs.tangent = vTangent;\n  inputs.center = vCenter;\n  inputs.position = vPosition;\n  inputs.strokeWeight = vStrokeWeight;\n  inputs = HOOK_getPixelInputs(inputs);\n\n  if (vCap > 0.) {\n    if (\n      uStrokeCap == STROKE_CAP_ROUND &&\n      HOOK_shouldDiscard(distSquared(inputs.position, inputs.center) > inputs.strokeWeight * inputs.strokeWeight * 0.25)\n    ) {\n      discard;\n    } else if (\n      uStrokeCap == STROKE_CAP_SQUARE &&\n      HOOK_shouldDiscard(dot(inputs.position - inputs.center, inputs.tangent) > 0.)\n    ) {\n      discard;\n    // Use full area for PROJECT\n    } else if (HOOK_shouldDiscard(false)) {\n      discard;\n    }\n  } else if (vJoin > 0.) {\n    if (\n      uStrokeJoin == STROKE_JOIN_ROUND &&\n      HOOK_shouldDiscard(distSquared(inputs.position, inputs.center) > inputs.strokeWeight * inputs.strokeWeight * 0.25)\n    ) {\n      discard;\n    } else if (uStrokeJoin == STROKE_JOIN_BEVEL) {\n      vec2 normal = vec2(-inputs.tangent.y, inputs.tangent.x);\n      if (HOOK_shouldDiscard(abs(dot(inputs.position - inputs.center, normal)) > vMaxDist)) {\n        discard;\n      }\n    // Use full area for MITER\n    } else if (HOOK_shouldDiscard(false)) {\n      discard;\n    }\n  }\n  OUT_COLOR = HOOK_getFinalColor(vec4(inputs.color.rgb, 1.) * inputs.color.a);\n  HOOK_afterFragment();\n}\n",
                                pointVert: "IN vec3 aPosition;\nuniform float uPointSize;\nOUT float vStrokeWeight;\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nvoid main() {\n  HOOK_beforeVertex();\n  vec4 viewModelPosition = vec4(HOOK_getWorldPosition(\n    (uModelViewMatrix * vec4(HOOK_getLocalPosition(aPosition), 1.0)).xyz\n  ), 1.);\n  gl_Position = uProjectionMatrix * viewModelPosition;  \n\n  float pointSize = HOOK_getPointSize(uPointSize);\n\n\tgl_PointSize = pointSize;\n\tvStrokeWeight = pointSize;\n  HOOK_afterVertex();\n}\n",
                                pointFrag: "precision mediump int;\nuniform vec4 uMaterialColor;\nIN float vStrokeWeight;\n\nvoid main(){\n  HOOK_beforeFragment();\n  float mask = 0.0;\n\n  // make a circular mask using the gl_PointCoord (goes from 0 - 1 on a point)\n  // might be able to get a nicer edge on big strokeweights with smoothstep but slightly less performant\n\n  mask = step(0.98, length(gl_PointCoord * 2.0 - 1.0));\n\n  // if strokeWeight is 1 or less lets just draw a square\n  // this prevents weird artifacting from carving circles when our points are really small\n  // if strokeWeight is larger than 1, we just use it as is\n\n  mask = mix(0.0, mask, clamp(floor(vStrokeWeight - 0.5),0.0,1.0));\n\n  // throw away the borders of the mask\n  // otherwise we get weird alpha blending issues\n\n  if(HOOK_shouldDiscard(mask > 0.98)){\n    discard;\n  }\n\n  OUT_COLOR = HOOK_getFinalColor(vec4(uMaterialColor.rgb, 1.) * uMaterialColor.a);\n  HOOK_afterFragment();\n}\n",
                                imageLightVert: "precision highp float;\nattribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec2 aTexCoord;\n\nvarying vec3 localPos;\nvarying vec3 vWorldNormal;\nvarying vec3 vWorldPosition;\nvarying vec2 vTexCoord;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat3 uNormalMatrix;\n\nvoid main() {\n  // Multiply the position by the matrix.\n  vec4 viewModelPosition = uModelViewMatrix * vec4(aPosition, 1.0);\n  gl_Position = uProjectionMatrix * viewModelPosition;  \n  \n  // orient the normals and pass to the fragment shader\n  vWorldNormal = uNormalMatrix * aNormal;\n  \n  // send the view position to the fragment shader\n  vWorldPosition = (uModelViewMatrix * vec4(aPosition, 1.0)).xyz;\n  \n  localPos = vWorldPosition;\n  vTexCoord = aTexCoord;\n}\n\n\n/*\nin the vertex shader we'll compute the world position and world oriented normal of the vertices and pass those to the fragment shader as varyings.\n*/\n",
                                imageLightDiffusedFrag: "precision highp float;\nvarying vec3 localPos;\n\n// the HDR cubemap converted (can be from an equirectangular environment map.)\nuniform sampler2D environmentMap;\nvarying vec2 vTexCoord;\n\nconst float PI = 3.14159265359;\n\nvec2 nTOE( vec3 v ){\n  // x = r sin(phi) cos(theta)   \n  // y = r cos(phi)  \n  // z = r sin(phi) sin(theta)\n  float phi = acos( v.y );\n  // if phi is 0, then there are no x, z components\n  float theta = 0.0;\n  // else \n  theta = acos(v.x / sin(phi));\n  float sinTheta = v.z / sin(phi);\n  if (sinTheta < 0.0) {\n    // Turn it into -theta, but in the 0-2PI range\n    theta = 2.0 * PI - theta;\n  }\n  theta = theta / (2.0 * 3.14159);\n  phi = phi / 3.14159 ;\n  \n  vec2 angles = vec2( phi, theta );\n  return angles;\n}\n\nfloat random(vec2 p) {\n  vec3 p3  = fract(vec3(p.xyx) * .1031);\n  p3 += dot(p3, p3.yzx + 33.33);\n  return fract((p3.x + p3.y) * p3.z);\n}\n\nvoid main()\n{   \t \n\t// the sample direction equals the hemisphere's orientation\n  float phi = vTexCoord.x * 2.0 * PI;\n  float theta = vTexCoord.y * PI;\n  float x = sin(theta) * cos(phi);\n  float y = sin(theta) * sin(phi);\n  float z = cos(theta);\n  vec3 normal = vec3( x, y, z);\n\n\t// Discretely sampling the hemisphere given the integral's\n  // spherical coordinates translates to the following fragment code:\n\tvec3 irradiance = vec3(0.0);  \n\tvec3 up\t= vec3(0.0, 1.0, 0.0);\n\tvec3 right = normalize(cross(up, normal));\n\tup = normalize(cross(normal, right));\n\n\t//  We specify a fixed sampleDelta delta value to traverse\n  // the hemisphere; decreasing or increasing the sample delta\n  // will increase or decrease the accuracy respectively.\n\tconst float sampleDelta = 0.100;\n\tfloat nrSamples = 0.0;\n  float randomOffset = random(gl_FragCoord.xy) * sampleDelta;\n\tfor(float rawPhi = 0.0; rawPhi < 2.0 * PI; rawPhi += sampleDelta)\n\t{\n    float phi = rawPhi + randomOffset;\n    for(float rawTheta = 0.0; rawTheta < ( 0.5 ) * PI; rawTheta += sampleDelta)\n    {\n      float theta = rawTheta + randomOffset;\n      // spherical to cartesian (in tangent space) // tangent space to world // add each sample result to irradiance\n      float x = sin(theta) * cos(phi);\n      float y = sin(theta) * sin(phi);\n      float z = cos(theta);\n      vec3 tangentSample = vec3( x, y, z);\n      \n      vec3 sampleVec = tangentSample.x * right + tangentSample.y * up + tangentSample.z * normal;\n        irradiance += (texture2D(environmentMap, nTOE(sampleVec)).xyz) * cos(theta) * sin(theta);\n      nrSamples++;\n    }\n\t}\n\t// divide by the total number of samples taken, giving us the average sampled irradiance.\n\tirradiance = PI * irradiance * (1.0 / float(nrSamples )) ;\n  \n \n\tgl_FragColor = vec4(irradiance, 1.0);\n}",
                                imageLightSpecularFrag: "precision highp float;\r\nvarying vec3 localPos;\r\nvarying vec2 vTexCoord;\r\n\r\n// our texture\r\nuniform sampler2D environmentMap;\r\nuniform float roughness;\r\n\r\nconst float PI = 3.14159265359;\r\n\r\nfloat VanDerCorput(int bits);\r\nvec2 HammersleyNoBitOps(int i, int N);\r\nvec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness);\r\n\r\n\r\nvec2 nTOE( vec3 v ){\r\n  // x = r sin(phi) cos(theta)   \r\n  // y = r cos(phi)  \r\n  // z = r sin(phi) sin(theta)\r\n  float phi = acos( v.y );\r\n  // if phi is 0, then there are no x, z components\r\n  float theta = 0.0;\r\n  // else \r\n  theta = acos(v.x / sin(phi));\r\n  float sinTheta = v.z / sin(phi);\r\n  if (sinTheta < 0.0) {\r\n    // Turn it into -theta, but in the 0-2PI range\r\n    theta = 2.0 * PI - theta;\r\n  }\r\n  theta = theta / (2.0 * 3.14159);\r\n  phi = phi / 3.14159 ;\r\n  \r\n  vec2 angles = vec2( phi, theta );\r\n  return angles;\r\n}\r\n\r\n\r\nvoid main(){\r\n  const int SAMPLE_COUNT = 400; // 4096\r\n  int lowRoughnessLimit = int(pow(2.0,(roughness+0.1)*20.0));\r\n  float totalWeight = 0.0;\r\n  vec3 prefilteredColor = vec3(0.0);\r\n  float phi = vTexCoord.x * 2.0 * PI;\r\n  float theta = vTexCoord.y * PI;\r\n  float x = sin(theta) * cos(phi);\r\n  float y = sin(theta) * sin(phi);\r\n  float z = cos(theta);\r\n  vec3 N = vec3(x,y,z);\r\n  vec3 V = N;\r\n  for (int i = 0; i < SAMPLE_COUNT; ++i)\r\n  {\r\n    // break at smaller sample numbers for low roughness levels\r\n    if(i == lowRoughnessLimit)\r\n    {\r\n      break;\r\n    }\r\n    vec2 Xi = HammersleyNoBitOps(i, SAMPLE_COUNT);\r\n    vec3 H = ImportanceSampleGGX(Xi, N, roughness);\r\n    vec3 L = normalize(2.0 * dot(V, H) * H - V);\r\n\r\n    float NdotL = max(dot(N, L), 0.0);\r\n    if (NdotL > 0.0)\r\n    {\r\n      prefilteredColor += texture2D(environmentMap, nTOE(L)).xyz * NdotL;\r\n      totalWeight += NdotL;\r\n    }\r\n  }\r\n  prefilteredColor = prefilteredColor / totalWeight;\r\n\r\n  gl_FragColor = vec4(prefilteredColor, 1.0);\r\n}\r\n\r\nvec3 ImportanceSampleGGX(vec2 Xi, vec3 N, float roughness){\r\n  float a = roughness * roughness;\r\n\r\n  float phi = 2.0 * PI * Xi.x;\r\n  float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (a * a - 1.0) * Xi.y));\r\n  float sinTheta = sqrt(1.0 - cosTheta * cosTheta);\r\n  // from spherical coordinates to cartesian coordinates\r\n  vec3 H;\r\n  H.x = cos(phi) * sinTheta;\r\n  H.y = sin(phi) * sinTheta;\r\n  H.z = cosTheta;\r\n\r\n  // from tangent-space vector to world-space sample vector\r\n  vec3 up = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);\r\n  vec3 tangent = normalize(cross(up, N));\r\n  vec3 bitangent = cross(N, tangent);\r\n\r\n  vec3 sampleVec = tangent * H.x + bitangent * H.y + N * H.z;\r\n  return normalize(sampleVec);\r\n}\r\n\r\n\r\nfloat VanDerCorput(int n, int base)\r\n{\r\n#ifdef WEBGL2\r\n\r\n    uint bits = uint(n);\r\n    bits = (bits << 16u) | (bits >> 16u);\r\n    bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);\r\n    bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);\r\n    bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);\r\n    bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);\r\n    return float(bits) * 2.3283064365386963e-10; // / 0x100000000\r\n\r\n#else\r\n\r\n  float invBase = 1.0 / float(base);\r\n  float denom = 1.0;\r\n  float result = 0.0;\r\n\r\n\r\n  for (int i = 0; i < 32; ++i)\r\n  {\r\n        if (n > 0)\r\n        {\r\n        denom = mod(float(n), 2.0);\r\n        result += denom * invBase;\r\n        invBase = invBase / 2.0;\r\n        n = int(float(n) / 2.0);\r\n        }\r\n  }\r\n\r\n\r\n  return result;\r\n\r\n#endif\r\n}\r\n\r\nvec2 HammersleyNoBitOps(int i, int N)\r\n{\r\n  return vec2(float(i) / float(N), VanDerCorput(i, 2));\r\n}\r\n"
                            },
                            E = T.sphereMappingFrag;
                        for (x in T) T[x] = "#ifdef WEBGL2\n\n#define IN in\n#define OUT out\n\n#ifdef FRAGMENT_SHADER\nout vec4 outColor;\n#define OUT_COLOR outColor\n#endif\n#define TEXTURE texture\n\n#else\n\n#ifdef FRAGMENT_SHADER\n#define IN varying\n#else\n#define IN attribute\n#endif\n#define OUT varying\n#define TEXTURE texture2D\n\n#ifdef FRAGMENT_SHADER\n#define OUT_COLOR gl_FragColor\n#endif\n\n#endif\n" + T[x];
                        b(e = {}, l.GRAY, "precision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\n\nfloat luma(vec3 color) {\n  // weighted grayscale with luminance values\n  return dot(color, vec3(0.2126, 0.7152, 0.0722));\n}\n\nvoid main() {\n  vec4 tex = texture2D(tex0, vTexCoord);\n  float gray = luma(tex.rgb);\n  gl_FragColor = vec4(gray, gray, gray, tex.a);\n}\n"), b(e, l.ERODE, "// Reduces the bright areas in an image\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\nuniform vec2 texelSize;\n\nfloat luma(vec3 color) {\n  // weighted grayscale with luminance values\n  // weights 77, 151, 28 taken from src/image/filters.js\n  return dot(color, vec3(0.300781, 0.589844, 0.109375));\n}\n\nvoid main() {\n  vec4 color = texture2D(tex0, vTexCoord);\n  float lum = luma(color.rgb);\n\n  // set current color as the darkest neighbor color\n\n  vec4 neighbors[4];\n  neighbors[0] = texture2D(tex0, vTexCoord + vec2( texelSize.x, 0.0));\n  neighbors[1] = texture2D(tex0, vTexCoord + vec2(-texelSize.x, 0.0));\n  neighbors[2] = texture2D(tex0, vTexCoord + vec2(0.0,  texelSize.y));\n  neighbors[3] = texture2D(tex0, vTexCoord + vec2(0.0, -texelSize.y));\n\n  for (int i = 0; i < 4; i++) {\n    vec4 neighborColor = neighbors[i];\n    float neighborLum = luma(neighborColor.rgb);\n\n    if (neighborLum < lum) {\n      color = neighborColor;\n      lum = neighborLum;\n    }\n  }\n\n  gl_FragColor = color;\n}\n"), b(e, l.DILATE, "// Increase the bright areas in an image\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\nuniform vec2 texelSize;\n\nfloat luma(vec3 color) {\n  // weighted grayscale with luminance values\n  // weights 77, 151, 28 taken from src/image/filters.js\n  return dot(color, vec3(0.300781, 0.589844, 0.109375));\n}\n\nvoid main() {\n  vec4 color = texture2D(tex0, vTexCoord);\n  float lum = luma(color.rgb);\n\n  // set current color as the brightest neighbor color\n\n  vec4 neighbors[4];\n  neighbors[0] = texture2D(tex0, vTexCoord + vec2( texelSize.x, 0.0));\n  neighbors[1] = texture2D(tex0, vTexCoord + vec2(-texelSize.x, 0.0));\n  neighbors[2] = texture2D(tex0, vTexCoord + vec2(0.0,  texelSize.y));\n  neighbors[3] = texture2D(tex0, vTexCoord + vec2(0.0, -texelSize.y));\n\n  for (int i = 0; i < 4; i++) {\n    vec4 neighborColor = neighbors[i];\n    float neighborLum = luma(neighborColor.rgb);\n\n    if (neighborLum > lum) {\n      color = neighborColor;\n      lum = neighborLum;\n    }\n  }\n\n  gl_FragColor = color;\n}\n"), b(e, l.BLUR, "precision highp float;\n\n// Two-pass blur filter, unweighted kernel.\n// See also a similar blur at Adam Ferriss' repo of shader examples:\n// https://github.com/aferriss/p5jsShaderExamples/blob/gh-pages/4_image-effects/4-9_single-pass-blur/effect.frag\n\n\nuniform sampler2D tex0;\nvarying vec2 vTexCoord;\nuniform vec2 direction;\nuniform vec2 canvasSize;\nuniform float radius;\n\nfloat random(vec2 p) {\n  vec3 p3  = fract(vec3(p.xyx) * .1031);\n  p3 += dot(p3, p3.yzx + 33.33);\n  return fract((p3.x + p3.y) * p3.z);\n}\n\n// This isn't a real Gaussian weight, it's a quadratic weight. It's what the\n// CPU mode's blur uses though, so we also use it here to match.\nfloat quadWeight(float x, float e) {\n  return pow(e-abs(x), 2.);\n}\n\nvoid main(){\n  vec2 uv = vTexCoord;\n\n  // A reasonable maximum number of samples\n  const float maxSamples = 64.0;\n\n  float numSamples = floor(7. * radius);\n  if (fract(numSamples / 2.) == 0.) {\n    numSamples++;\n  }\n  vec4 avg = vec4(0.0);\n  float total = 0.0;\n\n  // Calculate the spacing to avoid skewing if numSamples > maxSamples\n  float spacing = 1.0;\n  if (numSamples > maxSamples) {\n    spacing = numSamples / maxSamples;\n    numSamples = maxSamples;\n  }\n\n  float randomOffset = (spacing - 1.0) * mix(-0.5, 0.5, random(gl_FragCoord.xy));\n  for (float i = 0.0; i < maxSamples; i++) {\n    if (i >= numSamples) break;\n\n    float sample = i * spacing - (numSamples - 1.0) * 0.5 * spacing + randomOffset;\n    vec2 sampleCoord = uv + vec2(sample, sample) / canvasSize * direction;\n    float weight = quadWeight(sample, (numSamples - 1.0) * 0.5 * spacing);\n\n    avg += weight * texture2D(tex0, sampleCoord);\n    total += weight;\n  }\n\n  avg /= total;\n  gl_FragColor = avg;\n}\n"), b(e, l.POSTERIZE, "// Limit color space for a stylized cartoon / poster effect\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\nuniform float filterParameter;\n\nvec3 quantize(vec3 color, float n) {\n  // restrict values to N options/bins\n  // and floor each channel to nearest value\n  //\n  // eg. when N = 5, values = 0.0, 0.25, 0.50, 0.75, 1.0\n  // then quantize (0.1, 0.7, 0.9) -> (0.0, 0.5, 1.0)\n\n  color = color * n;\n  color = floor(color);\n  color = color / (n - 1.0);\n  return color;\n}\n\nvoid main() {\n  vec4 color = texture2D(tex0, vTexCoord);\n\n  vec3 restrictedColor = quantize(color.rgb / color.a, filterParameter);\n\n  gl_FragColor = vec4(restrictedColor.rgb * color.a, color.a);\n}\n"), b(e, l.OPAQUE, "// Set alpha channel to entirely opaque\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\n\nvoid main() {\n  vec4 color = texture2D(tex0, vTexCoord);\n  gl_FragColor = vec4(color.rgb / color.a, 1.0);\n}\n"), b(e, l.INVERT, "// Set each pixel to inverse value\n// Note that original INVERT does not change the opacity, so this follows suit\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\n\nvoid main() {\nvec4 color = texture2D(tex0, vTexCoord);\nvec3 origColor = color.rgb / color.a;\nvec3 invertedColor = vec3(1.0) - origColor;\ngl_FragColor = vec4(invertedColor * color.a, color.a);\n}\n"), b(e, l.THRESHOLD, "// Convert pixels to either white or black, \n// depending on if their luma is above or below filterParameter\n\nprecision highp float;\n\nvarying vec2 vTexCoord;\n\nuniform sampler2D tex0;\nuniform float filterParameter;\n\nfloat luma(vec3 color) {\n  // weighted grayscale with luminance values\n  return dot(color, vec3(0.2126, 0.7152, 0.0722));\n}\n\nvoid main() {\n  vec4 color = texture2D(tex0, vTexCoord);\n  float gray = luma(color.rgb / color.a);\n  // floor() used to match src/image/filters.js\n  float threshold = floor(filterParameter * 255.0) / 255.0;\n  float blackOrWhite = step(threshold, gray);\n  gl_FragColor = vec4(vec3(blackOrWhite) * color.a, color.a);\n}\n");
                        var k = e;

                        function M(e, t, r, o, n, s, i, a, l, c) {
                            var u = t.getParameter(t.FRAMEBUFFER_BINDING);
                            t.bindFramebuffer(t.FRAMEBUFFER, r);
                            var d = s * i * (r = a === t.RGBA ? 4 : 3),
                                h = l === t.UNSIGNED_BYTE ? Uint8Array : Float32Array;
                            if (e instanceof h && e.length === d || (e = new h(d)), t.readPixels(o, c ? c - n - i : n, s, i, a, l, e), t.bindFramebuffer(t.FRAMEBUFFER, u), c)
                                for (var f = Math.floor(i / 2), p = new h(s * r), m = 0; m < f; m++) {
                                    var y = m * s * 4,
                                        g = (i - m - 1) * s * 4;
                                    p.set(e.subarray(y, y + 4 * s)), e.copyWithin(y, g, g + 4 * s), e.set(p, g)
                                }
                            return e
                        }

                        function O(e, t, r, o, n, s, i) {
                            var a = e.getParameter(e.FRAMEBUFFER_BINDING),
                                t = (e.bindFramebuffer(e.FRAMEBUFFER, t), n === e.RGBA ? 4 : 3),
                                t = new(s === e.UNSIGNED_BYTE ? Uint8Array : Float32Array)(t);
                            return e.readPixels(r, i ? i - o - 1 : o, 1, 1, n, s, t), e.bindFramebuffer(e.FRAMEBUFFER, a), Array.from(t)
                        }
                        g.default.prototype.setAttributes = function(e, t) {
                            if (void 0 === this._glAttributes) console.log("You are trying to use setAttributes on a p5.Graphics object that does not use a WEBGL renderer.");
                            else {
                                var r = !0;
                                if (void 0 !== t ? (null === this._glAttributes && (this._glAttributes = {}), this._glAttributes[e] !== t && (this._glAttributes[e] = t, r = !1)) : e instanceof Object && this._glAttributes !== e && (this._glAttributes = e, r = !1), this._renderer.isP3D && !r) {
                                    if (!this._setupDone)
                                        for (var o in this._renderer.retainedMode.geometry)
                                            if (this._renderer.retainedMode.geometry.hasOwnProperty(o)) return void g.default._friendlyError("Sorry, Could not set the attributes, you need to call setAttributes() before calling the other drawing methods in setup()");
                                    this.push(), this._renderer._resetContext(), this.pop(), this._renderer._curCamera && (this._renderer._curCamera._renderer = this._renderer)
                                }
                            }
                        }, g.default.RendererGL = (e => {
                            var t = s;
                            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                            t.prototype = Object.create(e && e.prototype, {
                                constructor: {
                                    value: t,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), e && m(t, e);
                            var r, n = function() {
                                var e = v(r),
                                    t = (() => {
                                        if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                            if ("function" == typeof Proxy) return 1;
                                            try {
                                                return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                            } catch (e) {}
                                        }
                                    })() ? (t = v(this).constructor, Reflect.construct(e, arguments, t)) : e.apply(this, arguments),
                                    e = this;
                                return !(t = t) || "object" !== i(t) && "function" != typeof t ? y(e) : t
                            };

                            function s(e, t, r, o) {
                                if (this instanceof s) return (e = n.call(this, e, t, r))._setAttributeDefaults(t), e._initContext(), e.isP3D = !0, e.geometryBuilder = void 0, e.GL = e.drawingContext, e._pInst._setProperty("drawingContext", e.drawingContext), e._isErasing = !1, e._clipDepths = [], e._isClipApplied = !1, e._stencilTestOn = !1, e._enableLighting = !1, e.ambientLightColors = [], e.mixedAmbientLight = [], e.mixedSpecularColor = [], e.specularColors = [1, 1, 1], e.directionalLightDirections = [], e.directionalLightDiffuseColors = [], e.directionalLightSpecularColors = [], e.pointLightPositions = [], e.pointLightDiffuseColors = [], e.pointLightSpecularColors = [], e.spotLightPositions = [], e.spotLightDirections = [], e.spotLightDiffuseColors = [], e.spotLightSpecularColors = [], e.spotLightAngle = [], e.spotLightConc = [], e.activeImageLight = null, e.diffusedTextures = new Map, e.specularTextures = new Map, e.drawMode = l.FILL, e.curFillColor = e._cachedFillStyle = [1, 1, 1, 1], e.curAmbientColor = e._cachedFillStyle = [1, 1, 1, 1], e.curSpecularColor = e._cachedFillStyle = [0, 0, 0, 0], e.curEmissiveColor = e._cachedFillStyle = [0, 0, 0, 0], e.curStrokeColor = e._cachedStrokeStyle = [0, 0, 0, 1], e.curBlendMode = l.BLEND, e.preEraseBlend = void 0, e._cachedBlendMode = void 0, e.webglVersion === l.WEBGL2 ? e.blendExt = e.GL : e.blendExt = e.GL.getExtension("EXT_blend_minmax"), e._isBlending = !1, e._hasSetAmbient = !1, e._useSpecularMaterial = !1, e._useEmissiveMaterial = !1, e._useNormalMaterial = !1, e._useShininess = 1, e._useMetalness = 0, e._useLineColor = !1, e._useVertexColor = !1, e.registerEnabled = new Set, e._tint = [255, 255, 255, 255], e.constantAttenuation = 1, e.linearAttenuation = 0, e.quadraticAttenuation = 0, e.uModelMatrix = new g.default.Matrix, e.uViewMatrix = new g.default.Matrix, e.uMVMatrix = new g.default.Matrix, e.uPMatrix = new g.default.Matrix, e.uNMatrix = new g.default.Matrix("mat3"), e.curMatrix = new g.default.Matrix("mat3"), e._currentNormal = new g.default.Vector(0, 0, 1), e._curCamera = new g.default.Camera(y(e)), e._curCamera._computeCameraDefaultSettings(), e._curCamera._setDefaultCamera(), e.filterCamera = new g.default.Camera(y(e)), e.filterCamera._computeCameraDefaultSettings(), e.filterCamera._setDefaultCamera(), e.prevTouches = [], e.zoomVelocity = 0, e.rotateVelocity = new g.default.Vector(0, 0), e.moveVelocity = new g.default.Vector(0, 0), e.executeZoom = !1, e.executeRotateAndMove = !1, e.specularShader = void 0, e.sphereMapping = void 0, e.diffusedShader = void 0, e._defaultLightShader = void 0, e._defaultImmediateModeShader = void 0, e._defaultNormalShader = void 0, e._defaultColorShader = void 0, e._defaultPointShader = void 0, e.userFillShader = void 0, e.userStrokeShader = void 0, e.userPointShader = void 0, e.retainedMode = {
                                    geometry: {},
                                    buffers: {
                                        stroke: [new g.default.RenderBuffer(4, "lineVertexColors", "lineColorBuffer", "aVertexColor", y(e)), new g.default.RenderBuffer(3, "lineVertices", "lineVerticesBuffer", "aPosition", y(e)), new g.default.RenderBuffer(3, "lineTangentsIn", "lineTangentsInBuffer", "aTangentIn", y(e)), new g.default.RenderBuffer(3, "lineTangentsOut", "lineTangentsOutBuffer", "aTangentOut", y(e)), new g.default.RenderBuffer(1, "lineSides", "lineSidesBuffer", "aSide", y(e))],
                                        fill: [new g.default.RenderBuffer(3, "vertices", "vertexBuffer", "aPosition", y(e), e._vToNArray), new g.default.RenderBuffer(3, "vertexNormals", "normalBuffer", "aNormal", y(e), e._vToNArray), new g.default.RenderBuffer(4, "vertexColors", "colorBuffer", "aVertexColor", y(e)), new g.default.RenderBuffer(3, "vertexAmbients", "ambientBuffer", "aAmbientColor", y(e)), new g.default.RenderBuffer(2, "uvs", "uvBuffer", "aTexCoord", y(e), e._flatten)],
                                        text: [new g.default.RenderBuffer(3, "vertices", "vertexBuffer", "aPosition", y(e), e._vToNArray), new g.default.RenderBuffer(2, "uvs", "uvBuffer", "aTexCoord", y(e), e._flatten)]
                                    }
                                }, e.immediateMode = {
                                    geometry: new g.default.Geometry,
                                    shapeMode: l.TRIANGLE_FAN,
                                    contourIndices: [],
                                    _bezierVertex: [],
                                    _quadraticVertex: [],
                                    _curveVertex: [],
                                    buffers: {
                                        fill: [new g.default.RenderBuffer(3, "vertices", "vertexBuffer", "aPosition", y(e), e._vToNArray), new g.default.RenderBuffer(3, "vertexNormals", "normalBuffer", "aNormal", y(e), e._vToNArray), new g.default.RenderBuffer(4, "vertexColors", "colorBuffer", "aVertexColor", y(e)), new g.default.RenderBuffer(3, "vertexAmbients", "ambientBuffer", "aAmbientColor", y(e)), new g.default.RenderBuffer(2, "uvs", "uvBuffer", "aTexCoord", y(e), e._flatten)],
                                        stroke: [new g.default.RenderBuffer(4, "lineVertexColors", "lineColorBuffer", "aVertexColor", y(e)), new g.default.RenderBuffer(3, "lineVertices", "lineVerticesBuffer", "aPosition", y(e)), new g.default.RenderBuffer(3, "lineTangentsIn", "lineTangentsInBuffer", "aTangentIn", y(e)), new g.default.RenderBuffer(3, "lineTangentsOut", "lineTangentsOutBuffer", "aTangentOut", y(e)), new g.default.RenderBuffer(1, "lineSides", "lineSidesBuffer", "aSide", y(e))],
                                        point: e.GL.createBuffer()
                                    }
                                }, e.pointSize = 5, e.curStrokeWeight = 1, e.curStrokeCap = l.ROUND, e.curStrokeJoin = l.ROUND, e.textures = new Map, e.framebuffers = new Set, e.activeFramebuffers = [], e.filterShader = void 0, e.filterLayer = void 0, e.filterLayerTemp = void 0, e.defaultFilterShaders = {}, e.textureMode = l.IMAGE, e.textureWrapX = l.CLAMP, e.textureWrapY = l.CLAMP, e._tex = null, e._curveTightness = 6, e._lookUpTableBezier = [], e._lookUpTableQuadratic = [], e._lutBezierDetail = 0, e._lutQuadraticDetail = 0, e.isProcessingVertices = !1, e._tessy = e._initTessy(), e.fontInfos = {}, e._curShader = void 0, e;
                                throw new TypeError("Cannot call a class as a function")
                            }
                            return f((t = r = s).prototype, [{
                                key: "beginGeometry",
                                value: function() {
                                    if (this.geometryBuilder) throw new Error("It looks like `beginGeometry()` is being called while another p5.Geometry is already being build.");
                                    this.geometryBuilder = new a.default(this)
                                }
                            }, {
                                key: "endGeometry",
                                value: function() {
                                    var e;
                                    if (this.geometryBuilder) return e = this.geometryBuilder.finish(), this.geometryBuilder = void 0, e;
                                    throw new Error("Make sure you call beginGeometry() before endGeometry()!")
                                }
                            }, {
                                key: "buildGeometry",
                                value: function(e) {
                                    return this.beginGeometry(), e(), this.endGeometry()
                                }
                            }, {
                                key: "_setAttributeDefaults",
                                value: function(e) {
                                    var t = {
                                        alpha: !0,
                                        depth: !0,
                                        stencil: !0,
                                        antialias: navigator.userAgent.toLowerCase().includes("safari"),
                                        premultipliedAlpha: !0,
                                        preserveDrawingBuffer: !0,
                                        perPixelLighting: !0,
                                        version: 2
                                    };
                                    null === e._glAttributes ? e._glAttributes = t : e._glAttributes = Object.assign(t, e._glAttributes)
                                }
                            }, {
                                key: "_initContext",
                                value: function() {
                                    if (1 !== this._pInst._glAttributes.version && (this.drawingContext = this.canvas.getContext("webgl2", this._pInst._glAttributes)), this.webglVersion = this.drawingContext ? l.WEBGL2 : l.WEBGL, this._pInst._setProperty("webglVersion", this.webglVersion), this.drawingContext || (this.drawingContext = this.canvas.getContext("webgl", this._pInst._glAttributes) || this.canvas.getContext("experimental-webgl", this._pInst._glAttributes)), null === this.drawingContext) throw new Error("Error creating webgl context");
                                    var e = this.drawingContext;
                                    e.enable(e.DEPTH_TEST), e.depthFunc(e.LEQUAL), e.viewport(0, 0, e.drawingBufferWidth, e.drawingBufferHeight), e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0), this._viewport = this.drawingContext.getParameter(this.drawingContext.VIEWPORT)
                                }
                            }, {
                                key: "_getParam",
                                value: function() {
                                    var e = this.drawingContext;
                                    return e.getParameter(e.MAX_TEXTURE_SIZE)
                                }
                            }, {
                                key: "_adjustDimensions",
                                value: function(e, t) {
                                    this._maxTextureSize || (this._maxTextureSize = this._getParam());
                                    var r = this._maxTextureSize,
                                        r = (g.default.prototype._maxAllowedPixelDimensions, Math.floor(r / this.pixelDensity())),
                                        o = Math.min(e, r),
                                        r = Math.min(t, r);
                                    return o === e && r === t || console.warn("Warning: The requested width/height exceeds hardware limits. " + "Adjusting dimensions to width: ".concat(o, ", height: ").concat(r, ".")), {
                                        adjustedWidth: o,
                                        adjustedHeight: r
                                    }
                                }
                            }, {
                                key: "_resetContext",
                                value: function(e, t) {
                                    var r, o = this.width,
                                        n = this.height,
                                        s = this.canvas.id,
                                        i = this._pInst instanceof g.default.Graphics,
                                        s = (i ? ((r = this._pInst).canvas.parentNode.removeChild(r.canvas), r.canvas = document.createElement("canvas"), (r._pInst._userNode || document.body).appendChild(r.canvas), g.default.Element.call(r, r.canvas, r._pInst), r.width = o, r.height = n) : ((r = this.canvas) && r.parentNode.removeChild(r), (r = document.createElement("canvas")).id = s, (this._pInst._userNode || document.body).appendChild(r), this._pInst.canvas = r, this.canvas = r), new g.default.RendererGL(this._pInst.canvas, this._pInst, !i));
                                    this._pInst._setProperty("_renderer", s), s.resize(o, n), s._applyDefaults(), i || this._pInst._elements.push(s), "function" == typeof t && setTimeout(function() {
                                        t.apply(window._renderer, e)
                                    }, 0)
                                }
                            }, {
                                key: "_update",
                                value: function() {
                                    this.uModelMatrix.reset(), this.uViewMatrix.set(this._curCamera.cameraMatrix), this.ambientLightColors.length = 0, this.specularColors = [1, 1, 1], this.directionalLightDirections.length = 0, this.directionalLightDiffuseColors.length = 0, this.directionalLightSpecularColors.length = 0, this.pointLightPositions.length = 0, this.pointLightDiffuseColors.length = 0, this.pointLightSpecularColors.length = 0, this.spotLightPositions.length = 0, this.spotLightDirections.length = 0, this.spotLightDiffuseColors.length = 0, this.spotLightSpecularColors.length = 0, this.spotLightAngle.length = 0, this.spotLightConc.length = 0, this._enableLighting = !1, this._tint = [255, 255, 255, 255], this.GL.clearStencil(0), this.GL.clear(this.GL.DEPTH_BUFFER_BIT | this.GL.STENCIL_BUFFER_BIT), this.GL.disable(this.GL.STENCIL_TEST)
                                }
                            }, {
                                key: "background",
                                value: function() {
                                    var e = (o = (o = this._pInst).color.apply(o, arguments)).levels[0] / 255,
                                        t = o.levels[1] / 255,
                                        r = o.levels[2] / 255,
                                        o = o.levels[3] / 255;
                                    this.clear(e, t, r, o)
                                }
                            }, {
                                key: "fill",
                                value: function(e, t, r, o) {
                                    var n = g.default.prototype.color.apply(this._pInst, arguments);
                                    this.curFillColor = n._array, this.drawMode = l.FILL, this._useNormalMaterial = !1, this._tex = null
                                }
                            }, {
                                key: "stroke",
                                value: function(e, t, r, o) {
                                    var n = g.default.prototype.color.apply(this._pInst, arguments);
                                    this.curStrokeColor = n._array
                                }
                            }, {
                                key: "strokeCap",
                                value: function(e) {
                                    this.curStrokeCap = e
                                }
                            }, {
                                key: "strokeJoin",
                                value: function(e) {
                                    this.curStrokeJoin = e
                                }
                            }, {
                                key: "getFilterLayer",
                                value: function() {
                                    return this.filterLayer || (this.filterLayer = this._pInst.createFramebuffer()), this.filterLayer
                                }
                            }, {
                                key: "getFilterLayerTemp",
                                value: function() {
                                    return this.filterLayerTemp || (this.filterLayerTemp = this._pInst.createFramebuffer()), this.filterLayerTemp
                                }
                            }, {
                                key: "matchSize",
                                value: function(e, t) {
                                    e.width === t.width && e.height === t.height || e.resize(t.width, t.height), e.pixelDensity() !== t.pixelDensity() && e.pixelDensity(t.pixelDensity())
                                }
                            }, {
                                key: "filter",
                                value: function() {
                                    var e, t, r = this,
                                        o = this.getFilterLayer(),
                                        n = void 0,
                                        s = void 0,
                                        i = ("string" == typeof(arguments.length <= 0 ? void 0 : arguments[0]) ? (s = arguments.length <= 0 ? void 0 : arguments[0], b(e = {}, l.BLUR, 3), b(e, l.POSTERIZE, 4), b(e, l.THRESHOLD, .5), n = s in e && void 0 === (arguments.length <= 1 ? void 0 : arguments[1]) ? e[s] : arguments.length <= 1 ? void 0 : arguments[1], s in this.defaultFilterShaders || (this.defaultFilterShaders[s] = new g.default.Shader(o._renderer, "uniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nattribute vec3 aPosition;\n// texcoords only come from p5 to vertex shader\n// so pass texcoords on to the fragment shader in a varying variable\nattribute vec2 aTexCoord;\nvarying vec2 vTexCoord;\n\nvoid main() {\n  // transferring texcoords for the frag shader\n  vTexCoord = aTexCoord;\n\n  // copy position with a fourth coordinate for projection (1.0 is normal)\n  vec4 positionVec4 = vec4(aPosition, 1.0);\n\n  gl_Position = uProjectionMatrix * uModelViewMatrix * positionVec4;\n}\n", k[s])), this.filterShader = this.defaultFilterShaders[s]) : this.filterShader = arguments.length <= 0 ? void 0 : arguments[0], this.activeFramebuffer() || this),
                                        a = (this.matchSize(o, i), o.draw(function() {
                                            return r._pInst.clear()
                                        }), [1 / (i.width * i.pixelDensity()), 1 / (i.height * i.pixelDensity())]);
                                    s === l.BLUR ? (t = this.getFilterLayerTemp(), this.matchSize(t, i), this._pInst.push(), this._pInst.noStroke(), this._pInst.blendMode(l.BLEND), this._pInst.shader(this.filterShader), this.filterShader.setUniform("texelSize", a), this.filterShader.setUniform("canvasSize", [i.width, i.height]), this.filterShader.setUniform("radius", Math.max(1, n)), t.draw(function() {
                                        r.filterShader.setUniform("direction", [1, 0]), r.filterShader.setUniform("tex0", i), r._pInst.clear(), r._pInst.shader(r.filterShader), r._pInst.noLights(), r._pInst.plane(i.width, i.height)
                                    }), o.draw(function() {
                                        r.filterShader.setUniform("direction", [0, 1]), r.filterShader.setUniform("tex0", t), r._pInst.clear(), r._pInst.shader(r.filterShader), r._pInst.noLights(), r._pInst.plane(i.width, i.height)
                                    }), this._pInst.pop()) : o.draw(function() {
                                        r._pInst.noStroke(), r._pInst.blendMode(l.BLEND), r._pInst.shader(r.filterShader), r.filterShader.setUniform("tex0", i), r.filterShader.setUniform("texelSize", a), r.filterShader.setUniform("canvasSize", [i.width, i.height]), r.filterShader.setUniform("filterParameter", n), r._pInst.noLights(), r._pInst.plane(i.width, i.height)
                                    }), this._pInst.push(), this._pInst.noStroke(), this.clear(), this._pInst.push(), this._pInst.imageMode(l.CORNER), this._pInst.blendMode(l.BLEND), i.filterCamera._resize(), this._pInst.setCamera(i.filterCamera), this._pInst.resetMatrix(), this._pInst.image(o, -i.width / 2, -i.height / 2, i.width, i.height), this._pInst.clearDepth(), this._pInst.pop(), this._pInst.pop()
                                }
                            }, {
                                key: "pixelDensity",
                                value: function(e) {
                                    return e ? this._pInst.pixelDensity(e) : this._pInst.pixelDensity()
                                }
                            }, {
                                key: "blendMode",
                                value: function(e) {
                                    e === l.DARKEST || e === l.LIGHTEST || e === l.ADD || e === l.BLEND || e === l.SUBTRACT || e === l.SCREEN || e === l.EXCLUSION || e === l.REPLACE || e === l.MULTIPLY || e === l.REMOVE ? this.curBlendMode = e : e !== l.BURN && e !== l.OVERLAY && e !== l.HARD_LIGHT && e !== l.SOFT_LIGHT && e !== l.DODGE || console.warn("BURN, OVERLAY, HARD_LIGHT, SOFT_LIGHT, and DODGE only work for blendMode in 2D mode.")
                                }
                            }, {
                                key: "erase",
                                value: function(e, t) {
                                    this._isErasing || (this.preEraseBlend = this.curBlendMode, this._isErasing = !0, this.blendMode(l.REMOVE), this._cachedFillStyle = this.curFillColor.slice(), this.curFillColor = [1, 1, 1, e / 255], this._cachedStrokeStyle = this.curStrokeColor.slice(), this.curStrokeColor = [1, 1, 1, t / 255])
                                }
                            }, {
                                key: "noErase",
                                value: function() {
                                    this._isErasing && (this.curFillColor = this._cachedFillStyle.slice(), this.curStrokeColor = this._cachedStrokeStyle.slice(), this.curBlendMode = this.preEraseBlend, this.blendMode(this.preEraseBlend), this._isErasing = !1, this._applyBlendMode())
                                }
                            }, {
                                key: "drawTarget",
                                value: function() {
                                    return this.activeFramebuffers[this.activeFramebuffers.length - 1] || this
                                }
                            }, {
                                key: "beginClip",
                                value: function() {
                                    var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : {};
                                    p(v(s.prototype), "beginClip", this).call(this, e), this.drawTarget()._isClipApplied = !0, (e = this.GL).clearStencil(0), e.clear(e.STENCIL_BUFFER_BIT), e.enable(e.STENCIL_TEST), this._stencilTestOn = !0, e.stencilFunc(e.ALWAYS, 1, 255), e.stencilOp(e.KEEP, e.KEEP, e.REPLACE), e.disable(e.DEPTH_TEST), this._pInst.push(), this._pInst.resetShader(), this._doFill && this._pInst.fill(0, 0), this._doStroke && this._pInst.stroke(0, 0)
                                }
                            }, {
                                key: "endClip",
                                value: function() {
                                    this._pInst.pop();
                                    var e = this.GL;
                                    e.stencilOp(e.KEEP, e.KEEP, e.KEEP), e.stencilFunc(this._clipInvert ? e.EQUAL : e.NOTEQUAL, 0, 255), e.enable(e.DEPTH_TEST), this._clipDepths.push(this._pushPopDepth), p(v(s.prototype), "endClip", this).call(this)
                                }
                            }, {
                                key: "_clearClip",
                                value: function() {
                                    this.GL.clearStencil(1), this.GL.clear(this.GL.STENCIL_BUFFER_BIT), 0 < this._clipDepths.length && this._clipDepths.pop(), this.drawTarget()._isClipApplied = !1
                                }
                            }, {
                                key: "strokeWeight",
                                value: function(e) {
                                    this.curStrokeWeight !== e && (this.pointSize = e, this.curStrokeWeight = e)
                                }
                            }, {
                                key: "_getPixel",
                                value: function(e, t) {
                                    var r = this.GL;
                                    return O(r, null, e, t, r.RGBA, r.UNSIGNED_BYTE, this._pInst.height * this._pInst.pixelDensity())
                                }
                            }, {
                                key: "loadPixels",
                                value: function() {
                                    var e, t, r = this._pixelsState;
                                    !0 !== this._pInst._glAttributes.preserveDrawingBuffer ? console.log("loadPixels only works in WebGL when preserveDrawingBuffer is true.") : (e = this._pInst._pixelDensity, t = this.GL, r._setProperty("pixels", M(r.pixels, t, null, 0, 0, this.width * e, this.height * e, t.RGBA, t.UNSIGNED_BYTE, this.height * e)))
                                }
                            }, {
                                key: "updatePixels",
                                value: function() {
                                    var e = this._getTempFramebuffer();
                                    e.pixels = this._pixelsState.pixels, e.updatePixels(), this._pInst.push(), this._pInst.resetMatrix(), this._pInst.clear(), this._pInst.imageMode(l.CENTER), this._pInst.image(e, 0, 0), this._pInst.pop(), this.GL.clearDepth(1), this.GL.clear(this.GL.DEPTH_BUFFER_BIT)
                                }
                            }, {
                                key: "_getTempFramebuffer",
                                value: function() {
                                    return this._tempFramebuffer || (this._tempFramebuffer = this._pInst.createFramebuffer({
                                        format: l.UNSIGNED_BYTE,
                                        useDepth: this._pInst._glAttributes.depth,
                                        depthFormat: l.UNSIGNED_INT,
                                        antialias: this._pInst._glAttributes.antialias
                                    })), this._tempFramebuffer
                                }
                            }, {
                                key: "geometryInHash",
                                value: function(e) {
                                    return void 0 !== this.retainedMode.geometry[e]
                                }
                            }, {
                                key: "viewport",
                                value: function(e, t) {
                                    this._viewport = [0, 0, e, t], this.GL.viewport(0, 0, e, t)
                                }
                            }, {
                                key: "resize",
                                value: function(e, t) {
                                    g.default.Renderer.prototype.resize.call(this, e, t), this._origViewport = {
                                        width: this.GL.drawingBufferWidth,
                                        height: this.GL.drawingBufferHeight
                                    }, this.viewport(this._origViewport.width, this._origViewport.height), this._curCamera._resize();
                                    void 0 !== (e = this._pixelsState).pixels && e._setProperty("pixels", new Uint8Array(this.GL.drawingBufferWidth * this.GL.drawingBufferHeight * 4));
                                    var r = !0,
                                        t = !1,
                                        e = void 0;
                                    try {
                                        for (var o, n = this.framebuffers[Symbol.iterator](); !(r = (o = n.next()).done); r = !0) o.value._canvasSizeChanged()
                                    } catch (r) {
                                        t = !0, e = r
                                    } finally {
                                        try {
                                            r || null == n.return || n.return()
                                        } finally {
                                            if (t) throw e
                                        }
                                    }
                                }
                            }, {
                                key: "clear",
                                value: function() {
                                    var e = (arguments.length <= 0 ? void 0 : arguments[0]) || 0,
                                        t = (arguments.length <= 1 ? void 0 : arguments[1]) || 0,
                                        r = (arguments.length <= 2 ? void 0 : arguments[2]) || 0,
                                        o = (arguments.length <= 3 ? void 0 : arguments[3]) || 0,
                                        n = this.activeFramebuffer();
                                    n && n.format === l.UNSIGNED_BYTE && !n.antialias && 0 === o && (o = 1e-10), this.GL.clearColor(e * o, t * o, r * o, o), this.GL.clearDepth(1), this.GL.clear(this.GL.COLOR_BUFFER_BIT | this.GL.DEPTH_BUFFER_BIT)
                                }
                            }, {
                                key: "clearDepth",
                                value: function() {
                                    this.GL.clearDepth(0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 1), this.GL.clear(this.GL.DEPTH_BUFFER_BIT)
                                }
                            }, {
                                key: "applyMatrix",
                                value: function(e, t, r, o, n, s) {
                                    16 === arguments.length ? g.default.Matrix.prototype.apply.apply(this.uModelMatrix, arguments) : this.uModelMatrix.apply([e, t, 0, 0, r, o, 0, 0, 0, 0, 1, 0, n, s, 0, 1])
                                }
                            }, {
                                key: "translate",
                                value: function(e, t, r) {
                                    return e instanceof g.default.Vector && (r = e.z, t = e.y, e = e.x), this.uModelMatrix.translate([e, t, r]), this
                                }
                            }, {
                                key: "scale",
                                value: function(e, t, r) {
                                    return this.uModelMatrix.scale(e, t, r), this
                                }
                            }, {
                                key: "rotate",
                                value: function(e, t) {
                                    return void 0 === t ? this.rotateZ(e) : (g.default.Matrix.prototype.rotate.apply(this.uModelMatrix, arguments), this)
                                }
                            }, {
                                key: "rotateX",
                                value: function(e) {
                                    return this.rotate(e, 1, 0, 0), this
                                }
                            }, {
                                key: "rotateY",
                                value: function(e) {
                                    return this.rotate(e, 0, 1, 0), this
                                }
                            }, {
                                key: "rotateZ",
                                value: function(e) {
                                    return this.rotate(e, 0, 0, 1), this
                                }
                            }, {
                                key: "push",
                                value: function() {
                                    var e = g.default.Renderer.prototype.push.apply(this),
                                        t = e.properties;
                                    return t.uModelMatrix = this.uModelMatrix.copy(), t.uViewMatrix = this.uViewMatrix.copy(), t.uPMatrix = this.uPMatrix.copy(), t._curCamera = this._curCamera, this._curCamera = this._curCamera.copy(), t.ambientLightColors = this.ambientLightColors.slice(), t.specularColors = this.specularColors.slice(), t.directionalLightDirections = this.directionalLightDirections.slice(), t.directionalLightDiffuseColors = this.directionalLightDiffuseColors.slice(), t.directionalLightSpecularColors = this.directionalLightSpecularColors.slice(), t.pointLightPositions = this.pointLightPositions.slice(), t.pointLightDiffuseColors = this.pointLightDiffuseColors.slice(), t.pointLightSpecularColors = this.pointLightSpecularColors.slice(), t.spotLightPositions = this.spotLightPositions.slice(), t.spotLightDirections = this.spotLightDirections.slice(), t.spotLightDiffuseColors = this.spotLightDiffuseColors.slice(), t.spotLightSpecularColors = this.spotLightSpecularColors.slice(), t.spotLightAngle = this.spotLightAngle.slice(), t.spotLightConc = this.spotLightConc.slice(), t.userFillShader = this.userFillShader, t.userStrokeShader = this.userStrokeShader, t.userPointShader = this.userPointShader, t.pointSize = this.pointSize, t.curStrokeWeight = this.curStrokeWeight, t.curStrokeColor = this.curStrokeColor, t.curFillColor = this.curFillColor, t.curAmbientColor = this.curAmbientColor, t.curSpecularColor = this.curSpecularColor, t.curEmissiveColor = this.curEmissiveColor, t._hasSetAmbient = this._hasSetAmbient, t._useSpecularMaterial = this._useSpecularMaterial, t._useEmissiveMaterial = this._useEmissiveMaterial, t._useShininess = this._useShininess, t._useMetalness = this._useMetalness, t.constantAttenuation = this.constantAttenuation, t.linearAttenuation = this.linearAttenuation, t.quadraticAttenuation = this.quadraticAttenuation, t._enableLighting = this._enableLighting, t._useNormalMaterial = this._useNormalMaterial, t._tex = this._tex, t.drawMode = this.drawMode, t._currentNormal = this._currentNormal, t.curBlendMode = this.curBlendMode, t.activeImageLight = this.activeImageLight, t.textureMode = this.textureMode, e
                                }
                            }, {
                                key: "pop",
                                value: function() {
                                    var e;
                                    0 < this._clipDepths.length && this._pushPopDepth === this._clipDepths[this._clipDepths.length - 1] && this._clearClip();
                                    for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o];
                                    (e = p(v(s.prototype), "pop", this)).call.apply(e, [this].concat(r)), this._applyStencilTestIfClipping()
                                }
                            }, {
                                key: "_applyStencilTestIfClipping",
                                value: function() {
                                    var e = this.drawTarget();
                                    e._isClipApplied !== this._stencilTestOn && (e._isClipApplied ? (this.GL.enable(this.GL.STENCIL_TEST), this._stencilTestOn = !0) : (this.GL.disable(this.GL.STENCIL_TEST), this._stencilTestOn = !1))
                                }
                            }, {
                                key: "resetMatrix",
                                value: function() {
                                    return this.uModelMatrix.reset(), this.uViewMatrix.set(this._curCamera.cameraMatrix), this
                                }
                            }, {
                                key: "_getImmediateStrokeShader",
                                value: function() {
                                    var e = this.userStrokeShader;
                                    return e && e.isStrokeShader() ? e : this._getLineShader()
                                }
                            }, {
                                key: "_getRetainedStrokeShader",
                                value: function() {
                                    return this._getImmediateStrokeShader()
                                }
                            }, {
                                key: "_getSphereMapping",
                                value: function(e) {
                                    return this.sphereMapping || (this.sphereMapping = this._pInst.createFilterShader(E)), this.uNMatrix.inverseTranspose(this.uViewMatrix), this.uNMatrix.invert3x3(this.uNMatrix), this.sphereMapping.setUniform("uFovY", this._curCamera.cameraFOV), this.sphereMapping.setUniform("uAspect", this._curCamera.aspectRatio), this.sphereMapping.setUniform("uNewNormalMatrix", this.uNMatrix.mat3), this.sphereMapping.setUniform("uSampler", e), this.sphereMapping
                                }
                            }, {
                                key: "_getImmediateFillShader",
                                value: function() {
                                    var e = this.userFillShader;
                                    if (this._useNormalMaterial && (!e || !e.isNormalShader())) return this._getNormalShader();
                                    if (this._enableLighting) {
                                        if (!e || !e.isLightShader()) return this._getLightShader()
                                    } else if (this._tex) {
                                        if (!e || !e.isTextureShader()) return this._getLightShader()
                                    } else if (!e) return this._getImmediateModeShader();
                                    return e
                                }
                            }, {
                                key: "_getRetainedFillShader",
                                value: function() {
                                    if (this._useNormalMaterial) return this._getNormalShader();
                                    var e = this.userFillShader;
                                    if (this._enableLighting) {
                                        if (!e || !e.isLightShader()) return this._getLightShader()
                                    } else if (this._tex) {
                                        if (!e || !e.isTextureShader()) return this._getLightShader()
                                    } else if (!e) return this._getColorShader();
                                    return e
                                }
                            }, {
                                key: "_getImmediatePointShader",
                                value: function() {
                                    var e = this.userPointShader;
                                    return e && e.isPointShader() ? e : this._getPointShader()
                                }
                            }, {
                                key: "_getRetainedLineShader",
                                value: function() {
                                    return this._getImmediateLineShader()
                                }
                            }, {
                                key: "baseMaterialShader",
                                value: function() {
                                    if (this._pInst._glAttributes.perPixelLighting) return this._getLightShader();
                                    throw new Error("The material shader does not support hooks without perPixelLighting. Try turning it back on.")
                                }
                            }, {
                                key: "_getLightShader",
                                value: function() {
                                    return this._defaultLightShader || (this._pInst._glAttributes.perPixelLighting ? this._defaultLightShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "highp") + T.phongVert, this._webGL2CompatibilityPrefix("frag", "highp") + T.phongFrag, {
                                        vertex: {
                                            "void beforeVertex": "() {}",
                                            "vec3 getLocalPosition": "(vec3 position) { return position; }",
                                            "vec3 getWorldPosition": "(vec3 position) { return position; }",
                                            "vec3 getLocalNormal": "(vec3 normal) { return normal; }",
                                            "vec3 getWorldNormal": "(vec3 normal) { return normal; }",
                                            "vec2 getUV": "(vec2 uv) { return uv; }",
                                            "vec4 getVertexColor": "(vec4 color) { return color; }",
                                            "void afterVertex": "() {}"
                                        },
                                        fragment: {
                                            "void beforeFragment": "() {}",
                                            "Inputs getPixelInputs": "(Inputs inputs) { return inputs; }",
                                            "vec4 combineColors": "(ColorComponents components) {\n                vec4 color = vec4(0.);\n                color.rgb += components.diffuse * components.baseColor;\n                color.rgb += components.ambient * components.ambientColor;\n                color.rgb += components.specular * components.specularColor;\n                color.rgb += components.emissive;\n                color.a = components.opacity;\n                return color;\n              }",
                                            "vec4 getFinalColor": "(vec4 color) { return color; }",
                                            "void afterFragment": "() {}"
                                        }
                                    }) : this._defaultLightShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "highp") + T.lightVert, this._webGL2CompatibilityPrefix("frag", "highp") + T.lightTextureFrag)), this._defaultLightShader
                                }
                            }, {
                                key: "_getImmediateModeShader",
                                value: function() {
                                    return this._defaultImmediateModeShader || (this._defaultImmediateModeShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "mediump") + T.immediateVert, this._webGL2CompatibilityPrefix("frag", "mediump") + T.vertexColorFrag)), this._defaultImmediateModeShader
                                }
                            }, {
                                key: "baseNormalShader",
                                value: function() {
                                    return this._getNormalShader()
                                }
                            }, {
                                key: "_getNormalShader",
                                value: function() {
                                    return this._defaultNormalShader || (this._defaultNormalShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "mediump") + T.normalVert, this._webGL2CompatibilityPrefix("frag", "mediump") + T.normalFrag, {
                                        vertex: {
                                            "void beforeVertex": "() {}",
                                            "vec3 getLocalPosition": "(vec3 position) { return position; }",
                                            "vec3 getWorldPosition": "(vec3 position) { return position; }",
                                            "vec3 getLocalNormal": "(vec3 normal) { return normal; }",
                                            "vec3 getWorldNormal": "(vec3 normal) { return normal; }",
                                            "vec2 getUV": "(vec2 uv) { return uv; }",
                                            "vec4 getVertexColor": "(vec4 color) { return color; }",
                                            "void afterVertex": "() {}"
                                        },
                                        fragment: {
                                            "void beforeFragment": "() {}",
                                            "vec4 getFinalColor": "(vec4 color) { return color; }",
                                            "void afterFragment": "() {}"
                                        }
                                    })), this._defaultNormalShader
                                }
                            }, {
                                key: "baseColorShader",
                                value: function() {
                                    return this._getColorShader()
                                }
                            }, {
                                key: "_getColorShader",
                                value: function() {
                                    return this._defaultColorShader || (this._defaultColorShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "mediump") + T.normalVert, this._webGL2CompatibilityPrefix("frag", "mediump") + T.basicFrag, {
                                        vertex: {
                                            "void beforeVertex": "() {}",
                                            "vec3 getLocalPosition": "(vec3 position) { return position; }",
                                            "vec3 getWorldPosition": "(vec3 position) { return position; }",
                                            "vec3 getLocalNormal": "(vec3 normal) { return normal; }",
                                            "vec3 getWorldNormal": "(vec3 normal) { return normal; }",
                                            "vec2 getUV": "(vec2 uv) { return uv; }",
                                            "vec4 getVertexColor": "(vec4 color) { return color; }",
                                            "void afterVertex": "() {}"
                                        },
                                        fragment: {
                                            "void beforeFragment": "() {}",
                                            "vec4 getFinalColor": "(vec4 color) { return color; }",
                                            "void afterFragment": "() {}"
                                        }
                                    })), this._defaultColorShader
                                }
                            }, {
                                key: "pointShader",
                                value: function() {
                                    return this._getPointShader()
                                }
                            }, {
                                key: "_getPointShader",
                                value: function() {
                                    return this._defaultPointShader || (this._defaultPointShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "mediump") + T.pointVert, this._webGL2CompatibilityPrefix("frag", "mediump") + T.pointFrag, {
                                        vertex: {
                                            "void beforeVertex": "() {}",
                                            "vec3 getLocalPosition": "(vec3 position) { return position; }",
                                            "vec3 getWorldPosition": "(vec3 position) { return position; }",
                                            "float getPointSize": "(float size) { return size; }",
                                            "void afterVertex": "() {}"
                                        },
                                        fragment: {
                                            "void beforeFragment": "() {}",
                                            "vec4 getFinalColor": "(vec4 color) { return color; }",
                                            "bool shouldDiscard": "(bool outside) { return outside; }",
                                            "void afterFragment": "() {}"
                                        }
                                    })), this._defaultPointShader
                                }
                            }, {
                                key: "baseStrokeShader",
                                value: function() {
                                    return this._getLineShader()
                                }
                            }, {
                                key: "_getLineShader",
                                value: function() {
                                    return this._defaultLineShader || (this._defaultLineShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "mediump") + T.lineVert, this._webGL2CompatibilityPrefix("frag", "mediump") + T.lineFrag, {
                                        vertex: {
                                            "void beforeVertex": "() {}",
                                            "vec3 getLocalPosition": "(vec3 position) { return position; }",
                                            "vec3 getWorldPosition": "(vec3 position) { return position; }",
                                            "float getStrokeWeight": "(float weight) { return weight; }",
                                            "vec2 getLineCenter": "(vec2 center) { return center; }",
                                            "vec2 getLinePosition": "(vec2 position) { return position; }",
                                            "vec4 getVertexColor": "(vec4 color) { return color; }",
                                            "void afterVertex": "() {}"
                                        },
                                        fragment: {
                                            "void beforeFragment": "() {}",
                                            "Inputs getPixelInputs": "(Inputs inputs) { return inputs; }",
                                            "vec4 getFinalColor": "(vec4 color) { return color; }",
                                            "bool shouldDiscard": "(bool outside) { return outside; }",
                                            "void afterFragment": "() {}"
                                        }
                                    })), this._defaultLineShader
                                }
                            }, {
                                key: "_getFontShader",
                                value: function() {
                                    return this._defaultFontShader || (this.webglVersion === l.WEBGL && this.GL.getExtension("OES_standard_derivatives"), this._defaultFontShader = new g.default.Shader(this, this._webGL2CompatibilityPrefix("vert", "highp") + T.fontVert, this._webGL2CompatibilityPrefix("frag", "highp") + T.fontFrag)), this._defaultFontShader
                                }
                            }, {
                                key: "_webGL2CompatibilityPrefix",
                                value: function(e, t) {
                                    var r = "";
                                    return this.webglVersion === l.WEBGL2 && (r += "#version 300 es\n#define WEBGL2\n"), "vert" === e ? r += "#define VERTEX_SHADER\n" : "frag" === e && (r += "#define FRAGMENT_SHADER\n"), t && (r += "precision ".concat(t, " float;\n")), r
                                }
                            }, {
                                key: "_getEmptyTexture",
                                value: function() {
                                    var e;
                                    return this._emptyTexture || ((e = new g.default.Image(1, 1)).set(0, 0, 255), this._emptyTexture = new g.default.Texture(this, e)), this._emptyTexture
                                }
                            }, {
                                key: "getTexture",
                                value: function(e) {
                                    var t;
                                    return e instanceof g.default.Framebuffer && (e = e.color), this.textures.get(e) || (t = new g.default.Texture(this, e), this.textures.set(e, t), t)
                                }
                            }, {
                                key: "getDiffusedTexture",
                                value: function(e) {
                                    var t, r, o = this;
                                    return null != this.diffusedTextures.get(e) ? this.diffusedTextures.get(e) : (t = Math.floor(e.height / e.width * 200), r = this._pInst.createFramebuffer({
                                        width: 200,
                                        height: t,
                                        density: 1
                                    }), this.diffusedShader || (this.diffusedShader = this._pInst.createShader(T.imageLightVert, T.imageLightDiffusedFrag)), r.draw(function() {
                                        o._pInst.shader(o.diffusedShader), o.diffusedShader.setUniform("environmentMap", e), o._pInst.noStroke(), o._pInst.rectMode(l.CENTER), o._pInst.noLights(), o._pInst.rect(0, 0, 200, t)
                                    }), this.diffusedTextures.set(e, r), r)
                                }
                            }, {
                                key: "getSpecularTexture",
                                value: function(r) {
                                    var o = this;
                                    if (null != this.specularTextures.get(r)) return this.specularTextures.get(r);
                                    for (var e, n = [], s = this._pInst.createFramebuffer({
                                            width: 512,
                                            height: 512,
                                            density: 1
                                        }), i = Math.log(512) / Math.log(2), t = (this.specularShader || (this.specularShader = this._pInst.createShader(T.imageLightVert, T.imageLightSpecularFrag)), 512); 1 <= t; t /= 2)(e => {
                                        s.resize(e, e);
                                        var t = 1 - Math.log(e) / Math.log(2) / i;
                                        s.draw(function() {
                                            o._pInst.shader(o.specularShader), o._pInst.clear(), o.specularShader.setUniform("environmentMap", r), o.specularShader.setUniform("roughness", t), o._pInst.noStroke(), o._pInst.noLights(), o._pInst.plane(e, e)
                                        }), n.push(s.get().drawingContext.getImageData(0, 0, e, e))
                                    })(t);
                                    return s.remove(), e = new u.MipmapTexture(this, n, {}), this.specularTextures.set(r, e), e
                                }
                            }, {
                                key: "activeFramebuffer",
                                value: function() {
                                    return this.activeFramebuffers[this.activeFramebuffers.length - 1] || null
                                }
                            }, {
                                key: "createFramebuffer",
                                value: function(e) {
                                    return new g.default.Framebuffer(this, e)
                                }
                            }, {
                                key: "_setStrokeUniforms",
                                value: function(e) {
                                    e.bindShader(), e.setUniform("uUseLineColor", this._useLineColor), e.setUniform("uMaterialColor", this.curStrokeColor), e.setUniform("uStrokeWeight", this.curStrokeWeight), e.setUniform("uStrokeCap", w[this.curStrokeCap]), e.setUniform("uStrokeJoin", j[this.curStrokeJoin])
                                }
                            }, {
                                key: "_setFillUniforms",
                                value: function(e) {
                                    var r = this,
                                        t = (e.bindShader(), this.mixedSpecularColor = h(this.curSpecularColor), 0 < this._useMetalness && (this.mixedSpecularColor = this.mixedSpecularColor.map(function(e, t) {
                                            return r.curFillColor[t] * r._useMetalness + e * (1 - r._useMetalness)
                                        })), e.setUniform("uUseVertexColor", this._useVertexColor), e.setUniform("uMaterialColor", this.curFillColor), e.setUniform("isTexture", !!this._tex), this._tex && e.setUniform("uSampler", this._tex), e.setUniform("uTint", this._tint), e.setUniform("uHasSetAmbient", this._hasSetAmbient), e.setUniform("uAmbientMatColor", this.curAmbientColor), e.setUniform("uSpecularMatColor", this.mixedSpecularColor), e.setUniform("uEmissiveMatColor", this.curEmissiveColor), e.setUniform("uSpecular", this._useSpecularMaterial), e.setUniform("uEmissive", this._useEmissiveMaterial), e.setUniform("uShininess", this._useShininess), e.setUniform("uMetallic", this._useMetalness), this._setImageLightUniforms(e), e.setUniform("uUseLighting", this._enableLighting), this.pointLightDiffuseColors.length / 3),
                                        t = (e.setUniform("uPointLightCount", t), e.setUniform("uPointLightLocation", this.pointLightPositions), e.setUniform("uPointLightDiffuseColors", this.pointLightDiffuseColors), e.setUniform("uPointLightSpecularColors", this.pointLightSpecularColors), this.directionalLightDiffuseColors.length / 3),
                                        t = (e.setUniform("uDirectionalLightCount", t), e.setUniform("uLightingDirection", this.directionalLightDirections), e.setUniform("uDirectionalDiffuseColors", this.directionalLightDiffuseColors), e.setUniform("uDirectionalSpecularColors", this.directionalLightSpecularColors), this.ambientLightColors.length / 3),
                                        t = (this.mixedAmbientLight = h(this.ambientLightColors), 0 < this._useMetalness && (this.mixedAmbientLight = this.mixedAmbientLight.map(function(e) {
                                            return e -= r._useMetalness, Math.max(0, e)
                                        })), e.setUniform("uAmbientLightCount", t), e.setUniform("uAmbientColor", this.mixedAmbientLight), this.spotLightDiffuseColors.length / 3);
                                    e.setUniform("uSpotLightCount", t), e.setUniform("uSpotLightAngle", this.spotLightAngle), e.setUniform("uSpotLightConc", this.spotLightConc), e.setUniform("uSpotLightDiffuseColors", this.spotLightDiffuseColors), e.setUniform("uSpotLightSpecularColors", this.spotLightSpecularColors), e.setUniform("uSpotLightLocation", this.spotLightPositions), e.setUniform("uSpotLightDirection", this.spotLightDirections), e.setUniform("uConstantAttenuation", this.constantAttenuation), e.setUniform("uLinearAttenuation", this.linearAttenuation), e.setUniform("uQuadraticAttenuation", this.quadraticAttenuation), e.bindTextures()
                                }
                            }, {
                                key: "_setImageLightUniforms",
                                value: function(e) {
                                    var t;
                                    e.setUniform("uUseImageLight", null != this.activeImageLight), this.activeImageLight && (t = this.getDiffusedTexture(this.activeImageLight), e.setUniform("environmentMapDiffused", t), t = this.getSpecularTexture(this.activeImageLight), e.setUniform("environmentMapSpecular", t))
                                }
                            }, {
                                key: "_setPointUniforms",
                                value: function(e) {
                                    e.bindShader(), e.setUniform("uMaterialColor", this.curStrokeColor), e.setUniform("uPointSize", this.pointSize * this._pInst._pixelDensity)
                                }
                            }, {
                                key: "_bindBuffer",
                                value: function(e, t, r, o, n) {
                                    t = t || this.GL.ARRAY_BUFFER, this.GL.bindBuffer(t, e), void 0 !== r && ((e = r) instanceof g.default.DataArray ? e = r.dataArray() : e instanceof(o || Float32Array) || (e = new(o || Float32Array)(e)), this.GL.bufferData(t, e, n || this.GL.STATIC_DRAW))
                                }
                            }, {
                                key: "_arraysEqual",
                                value: function(e, r) {
                                    return e.length === r.length && e.every(function(e, t) {
                                        return e === r[t]
                                    })
                                }
                            }, {
                                key: "_isTypedArray",
                                value: function(t) {
                                    return [Float32Array, Float64Array, Int16Array, Uint16Array, Uint32Array].some(function(e) {
                                        return t instanceof e
                                    })
                                }
                            }, {
                                key: "_flatten",
                                value: function(e) {
                                    return e.flat()
                                }
                            }, {
                                key: "_vToNArray",
                                value: function(e) {
                                    return e.flatMap(function(e) {
                                        return [e.x, e.y, e.z]
                                    })
                                }
                            }, {
                                key: "_bezierCoefficients",
                                value: function(e) {
                                    var t = e * e,
                                        r = 1 - e,
                                        o = r * r;
                                    return [o * r, 3 * o * e, 3 * r * t, t * e]
                                }
                            }, {
                                key: "_quadraticCoefficients",
                                value: function(e) {
                                    var t = 1 - e;
                                    return [t * t, 2 * t * e, e * e]
                                }
                            }, {
                                key: "_bezierToCatmull",
                                value: function(e) {
                                    return [e[1], e[1] + (e[2] - e[0]) / this._curveTightness, e[2] - (e[3] - e[1]) / this._curveTightness, e[2]]
                                }
                            }, {
                                key: "_initTessy",
                                value: function() {
                                    var e = new c.default.GluTesselator;
                                    return e.gluTessCallback(c.default.gluEnum.GLU_TESS_VERTEX_DATA, function(e, t) {
                                        var r = !0,
                                            o = !1,
                                            n = void 0;
                                        try {
                                            for (var s, i = e[Symbol.iterator](); !(r = (s = i.next()).done); r = !0) {
                                                var a = s.value;
                                                t.push(a)
                                            }
                                        } catch (e) {
                                            o = !0, n = e
                                        } finally {
                                            try {
                                                r || null == i.return || i.return()
                                            } finally {
                                                if (o) throw n
                                            }
                                        }
                                    }), e.gluTessCallback(c.default.gluEnum.GLU_TESS_BEGIN, function(e) {
                                        e !== c.default.primitiveType.GL_TRIANGLES && console.log("expected TRIANGLES but got type: ".concat(e))
                                    }), e.gluTessCallback(c.default.gluEnum.GLU_TESS_ERROR, function(e) {
                                        console.log("error callback"), console.log("error number: ".concat(e))
                                    }), e.gluTessCallback(c.default.gluEnum.GLU_TESS_COMBINE, function(e, t, r) {
                                        for (var o = new Array(g.default.RendererGL.prototype.tessyVertexSize).fill(0), n = 0; n < r.length; n++)
                                            for (var s = 0; s < o.length; s++) 0 !== r[n] && t[n] && (o[s] += t[n][s] * r[n]);
                                        return o
                                    }), e.gluTessCallback(c.default.gluEnum.GLU_TESS_EDGE_FLAG, function(e) {}), e.gluTessProperty(c.default.gluEnum.GLU_TESS_WINDING_RULE, c.default.windingRule.GLU_TESS_WINDING_NONZERO), e
                                }
                            }, {
                                key: "_triangulate",
                                value: function(e) {
                                    var t = e[0] ? e[0][2] : void 0,
                                        r = !0,
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = e[Symbol.iterator](); !(o = (i = a.next()).done); o = !0)
                                            for (var l = i.value, c = 0; c < l.length; c += g.default.RendererGL.prototype.tessyVertexSize)
                                                if (l[c + 2] !== t) {
                                                    r = !1;
                                                    break
                                                }
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    r ? this._tessy.gluTessNormal(0, 0, 1) : this._tessy.gluTessNormal(0, 0, 0);
                                    var n = [],
                                        u = (this._tessy.gluTessBeginPolygon(n), !0),
                                        s = !1,
                                        d = void 0;
                                    try {
                                        for (var h, f = e[Symbol.iterator](); !(u = (h = f.next()).done); u = !0) {
                                            var p = h.value;
                                            this._tessy.gluTessBeginContour();
                                            for (var m = 0; m < p.length; m += g.default.RendererGL.prototype.tessyVertexSize) {
                                                var y = p.slice(m, m + g.default.RendererGL.prototype.tessyVertexSize);
                                                this._tessy.gluTessVertex(y, y)
                                            }
                                            this._tessy.gluTessEndContour()
                                        }
                                    } catch (e) {
                                        s = !0, d = e
                                    } finally {
                                        try {
                                            u || null == f.return || f.return()
                                        } finally {
                                            if (s) throw d
                                        }
                                    }
                                    return this._tessy.gluTessEndPolygon(), n
                                }
                            }]), s
                        })(g.default.Renderer), g.default.prototype._assert3d = function(e) {
                            if (!this._renderer.isP3D) throw new Error("".concat(e, "() is only supported in WEBGL mode. If you'd like to use 3D graphics and WebGL, see  https://p5js.org/examples/form-3d-primitives.html for more information."))
                        }, g.default.RendererGL.prototype.tessyVertexSize = 12, e = g.default.RendererGL, r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "../core/p5.Renderer": 286,
                        "./GeometryBuilder": 327,
                        "./p5.Camera": 332,
                        "./p5.Framebuffer": 334,
                        "./p5.Matrix": 336,
                        "./p5.Shader": 342,
                        "./p5.Texture": 343,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.copy-within": 154,
                        "core-js/modules/es.array.every": 155,
                        "core-js/modules/es.array.fill": 156,
                        "core-js/modules/es.array.flat": 160,
                        "core-js/modules/es.array.flat-map": 159,
                        "core-js/modules/es.array.from": 162,
                        "core-js/modules/es.array.includes": 163,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.map": 168,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.some": 170,
                        "core-js/modules/es.array.unscopables.flat": 173,
                        "core-js/modules/es.array.unscopables.flat-map": 172,
                        "core-js/modules/es.map": 175,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.reflect.get": 193,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.set": 197,
                        "core-js/modules/es.string.includes": 199,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.float32-array": 219,
                        "core-js/modules/es.typed-array.float64-array": 220,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.int16-array": 224,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint16-array": 240,
                        "core-js/modules/es.typed-array.uint32-array": 241,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246,
                        libtess: 255,
                        path: 258
                    }],
                    342: [function(e, t, r) {
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.some"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.concat"), e("core-js/modules/es.array.index-of"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.array.slice"), e("core-js/modules/es.array.some"), e("core-js/modules/es.function.name"), e("core-js/modules/es.object.assign"), e("core-js/modules/es.object.keys"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/web.dom-collections.iterator"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.default = void 0;
                        var a = (e = e("../core/main")) && e.__esModule ? e : {
                            default: e
                        };

                        function c(e, t) {
                            return (e => {
                                if (Array.isArray(e)) return e
                            })(e) || ((e, t) => {
                                if (Symbol.iterator in Object(e) || "[object Arguments]" === Object.prototype.toString.call(e)) {
                                    var r = [],
                                        o = !0,
                                        n = !1,
                                        s = void 0;
                                    try {
                                        for (var i, a = e[Symbol.iterator](); !(o = (i = a.next()).done) && (r.push(i.value), !t || r.length !== t); o = !0);
                                    } catch (e) {
                                        n = !0, s = e
                                    } finally {
                                        try {
                                            o || null == a.return || a.return()
                                        } finally {
                                            if (n) throw s
                                        }
                                    }
                                    return r
                                }
                            })(e, t) || (() => {
                                throw new TypeError("Invalid attempt to destructure non-iterable instance")
                            })()
                        }

                        function o(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function n(e, t, r) {
                            var o = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : {};
                            if (!(this instanceof n)) throw new TypeError("Cannot call a class as a function");
                            this._renderer = e, this._vertSrc = t, this._fragSrc = r, this._vertShader = -1, this._fragShader = -1, this._glProgram = 0, this._loadedAttributes = !1, this.attributes = {}, this._loadedUniforms = !1, this.uniforms = {}, this._bound = !1, this.samplers = [], this.hooks = {
                                uniforms: o.uniforms || {},
                                declarations: o.declarations,
                                helpers: o.helpers || {},
                                vertex: o.vertex || {},
                                fragment: o.fragment || {},
                                modified: {
                                    vertex: o.modified && o.modified.vertex || {},
                                    fragment: o.modified && o.modified.fragment || {}
                                }
                            }
                        }
                        a.default.Shader = (o(n.prototype, [{
                            key: "shaderSrc",
                            value: function(e, t) {
                                var r, o, n, s, i, a = (e = c(e.split("void main"), 2))[0],
                                    e = e[1],
                                    l = "";
                                for (r in this.hooks.uniforms) l += "uniform ".concat(r, ";\n");
                                for (o in this.hooks.declarations && (l += this.hooks.declarations + "\n"), this.hooks[t].declarations && (l += this.hooks[t].declarations + "\n"), this.hooks.helpers) l += "".concat(o).concat(this.hooks.helpers[o], "\n");
                                for (n in this.hooks[t]) "declarations" !== n && (s = (i = c(n.split(" "), 2))[0], i = i[1], this.hooks.modified[t][n] && (l += "#define AUGMENTED_HOOK_" + i + "\n"), l += s + " HOOK_" + i + this.hooks[t][n] + "\n");
                                return a + l + "void main" + e
                            }
                        }, {
                            key: "version",
                            value: function() {
                                var e = /#version (.+)$/.exec(this.vertSrc());
                                return e ? e[1] : "100 es"
                            }
                        }, {
                            key: "vertSrc",
                            value: function() {
                                return this.shaderSrc(this._vertSrc, "vertex")
                            }
                        }, {
                            key: "fragSrc",
                            value: function() {
                                return this.shaderSrc(this._fragSrc, "fragment")
                            }
                        }, {
                            key: "inspectHooks",
                            value: function() {
                                for (var e in console.log("==== Vertex shader hooks: ===="), this.hooks.vertex) console.log((this.hooks.modified.vertex[e] ? "[MODIFIED] " : "") + e + this.hooks.vertex[e]);
                                for (var t in console.log(""), console.log("==== Fragment shader hooks: ===="), this.hooks.fragment) console.log((this.hooks.modified.fragment[t] ? "[MODIFIED] " : "") + t + this.hooks.fragment[t]);
                                for (var r in console.log(""), console.log("==== Helper functions: ===="), this.hooks.helpers) console.log(r + this.hooks.helpers[r])
                            }
                        }, {
                            key: "modify",
                            value: function(e) {
                                a.default._validateParameters("p5.Shader.modify", arguments);
                                var t, r = {
                                    vertex: {},
                                    fragment: {},
                                    helpers: {}
                                };
                                for (t in e) "declarations" !== t && "uniforms" !== t && ("vertexDeclarations" === t ? r.vertex.declarations = (r.vertex.declarations || "") + "\n" + e[t] : "fragmentDeclarations" === t ? r.fragment.declarations = (r.fragment.declarations || "") + "\n" + e[t] : this.hooks.vertex[t] ? r.vertex[t] = e[t] : this.hooks.fragment[t] ? r.fragment[t] = e[t] : r.helpers[t] = e[t]);
                                var o, n, s = Object.assign({}, this.hooks.modified.vertex),
                                    i = Object.assign({}, this.hooks.modified.fragment);
                                for (o in r.vertex || {}) "declarations" !== o && (s[o] = !0);
                                for (n in r.fragment || {}) "declarations" !== n && (i[n] = !0);
                                return new a.default.Shader(this._renderer, this._vertSrc, this._fragSrc, {
                                    declarations: (this.hooks.declarations || "") + "\n" + (e.declarations || ""),
                                    uniforms: Object.assign({}, this.hooks.uniforms, e.uniforms || {}),
                                    fragment: Object.assign({}, this.hooks.fragment, r.fragment || {}),
                                    vertex: Object.assign({}, this.hooks.vertex, r.vertex || {}),
                                    helpers: Object.assign({}, this.hooks.helpers, r.helpers || {}),
                                    modified: {
                                        vertex: s,
                                        fragment: i
                                    }
                                })
                            }
                        }, {
                            key: "init",
                            value: function() {
                                if (0 === this._glProgram) {
                                    var e, t = this._renderer.GL;
                                    if (this._vertShader = t.createShader(t.VERTEX_SHADER), t.shaderSource(this._vertShader, this.vertSrc()), t.compileShader(this._vertShader), !t.getShaderParameter(this._vertShader, t.COMPILE_STATUS)) return e = t.getShaderInfoLog(this._vertShader), console.error(e), null;
                                    if (this._fragShader = t.createShader(t.FRAGMENT_SHADER), t.shaderSource(this._fragShader, this.fragSrc()), t.compileShader(this._fragShader), !t.getShaderParameter(this._fragShader, t.COMPILE_STATUS)) return e = t.getShaderInfoLog(this._fragShader), console.error(e), null;
                                    this._glProgram = t.createProgram(), t.attachShader(this._glProgram, this._vertShader), t.attachShader(this._glProgram, this._fragShader), t.linkProgram(this._glProgram), t.getProgramParameter(this._glProgram, t.LINK_STATUS) || a.default._friendlyError("Snap! Error linking shader program: ".concat(t.getProgramInfoLog(this._glProgram))), this._loadAttributes(), this._loadUniforms()
                                }
                                return this
                            }
                        }, {
                            key: "setDefaultUniforms",
                            value: function() {
                                for (var e in this.hooks.uniforms) {
                                    var t = c(e.split(" "), 2)[1];
                                    null != (e = (e = this.hooks.uniforms[e]) instanceof Function ? e() : e) && this.setUniform(t, e)
                                }
                            }
                        }, {
                            key: "copyToContext",
                            value: function(e) {
                                var t = new a.default.Shader(e._renderer, this._vertSrc, this._fragSrc);
                                return t.ensureCompiledOnContext(e), t
                            }
                        }, {
                            key: "ensureCompiledOnContext",
                            value: function(e) {
                                if (0 !== this._glProgram && this._renderer !== e._renderer) throw new Error("The shader being run is attached to a different context. Do you need to copy it to this context first with .copyToContext()?");
                                0 === this._glProgram && (this._renderer = e._renderer, this.init())
                            }
                        }, {
                            key: "_loadAttributes",
                            value: function() {
                                if (!this._loadedAttributes) {
                                    this.attributes = {};
                                    for (var e = this._renderer.GL, t = e.getProgramParameter(this._glProgram, e.ACTIVE_ATTRIBUTES), r = 0; r < t; ++r) {
                                        var o = e.getActiveAttrib(this._glProgram, r),
                                            n = o.name,
                                            s = e.getAttribLocation(this._glProgram, n),
                                            i = {};
                                        i.name = n, i.location = s, i.index = r, i.type = o.type, i.size = o.size, this.attributes[n] = i
                                    }
                                    this._loadedAttributes = !0
                                }
                            }
                        }, {
                            key: "_loadUniforms",
                            value: function() {
                                if (!this._loadedUniforms) {
                                    for (var e = this._renderer.GL, t = e.getProgramParameter(this._glProgram, e.ACTIVE_UNIFORMS), r = 0, o = 0; o < t; ++o) {
                                        var n = e.getActiveUniform(this._glProgram, o),
                                            s = {},
                                            i = (s.location = e.getUniformLocation(this._glProgram, n.name), s.size = n.size, n.name);
                                        1 < n.size && (i = i.substring(0, i.indexOf("[0]"))), s.name = i, s.type = n.type, s._cachedData = void 0, s.type === e.SAMPLER_2D && (s.samplerIndex = r, r++, this.samplers.push(s)), s.isArray = 1 < n.size || s.type === e.FLOAT_MAT3 || s.type === e.FLOAT_MAT4 || s.type === e.FLOAT_VEC2 || s.type === e.FLOAT_VEC3 || s.type === e.FLOAT_VEC4 || s.type === e.INT_VEC2 || s.type === e.INT_VEC4 || s.type === e.INT_VEC3, this.uniforms[i] = s
                                    }
                                    this._loadedUniforms = !0
                                }
                            }
                        }, {
                            key: "compile",
                            value: function() {}
                        }, {
                            key: "bindShader",
                            value: function() {
                                this.init(), this._bound || (this.useProgram(), this._bound = !0, this._setMatrixUniforms(), this.setUniform("uViewport", this._renderer._viewport))
                            }
                        }, {
                            key: "unbindShader",
                            value: function() {
                                return this._bound && (this.unbindTextures(), this._bound = !1), this
                            }
                        }, {
                            key: "bindTextures",
                            value: function() {
                                var e = this._renderer.GL,
                                    t = !0,
                                    r = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = this.samplers[Symbol.iterator](); !(t = (n = s.next()).done); t = !0) {
                                        var i = n.value,
                                            a = i.texture;
                                        void 0 === a && (a = this._renderer._getEmptyTexture()), e.activeTexture(e.TEXTURE0 + i.samplerIndex), a.bindTexture(), a.update(), e.uniform1i(i.location, i.samplerIndex)
                                    }
                                } catch (e) {
                                    r = !0, o = e
                                } finally {
                                    try {
                                        t || null == s.return || s.return()
                                    } finally {
                                        if (r) throw o
                                    }
                                }
                            }
                        }, {
                            key: "updateTextures",
                            value: function() {
                                var e = !0,
                                    t = !1,
                                    r = void 0;
                                try {
                                    for (var o, n = this.samplers[Symbol.iterator](); !(e = (o = n.next()).done); e = !0) {
                                        var s = o.value.texture;
                                        s && s.update()
                                    }
                                } catch (e) {
                                    t = !0, r = e
                                } finally {
                                    try {
                                        e || null == n.return || n.return()
                                    } finally {
                                        if (t) throw r
                                    }
                                }
                            }
                        }, {
                            key: "unbindTextures",
                            value: function() {
                                var e = !0,
                                    t = !1,
                                    r = void 0;
                                try {
                                    for (var o, n = this.samplers[Symbol.iterator](); !(e = (o = n.next()).done); e = !0) {
                                        var s = o.value;
                                        this.setUniform(s.name, this._renderer._getEmptyTexture())
                                    }
                                } catch (e) {
                                    t = !0, r = e
                                } finally {
                                    try {
                                        e || null == n.return || n.return()
                                    } finally {
                                        if (t) throw r
                                    }
                                }
                            }
                        }, {
                            key: "_setMatrixUniforms",
                            value: function() {
                                var e = this._renderer.uModelMatrix,
                                    t = this._renderer.uViewMatrix,
                                    r = this._renderer.uPMatrix,
                                    o = e.copy().mult(t),
                                    n = (this._renderer.uMVMatrix = o).copy();
                                n.mult(r), this.isStrokeShader() && this.setUniform("uPerspective", this._renderer._curCamera.useLinePerspective ? 1 : 0), this.setUniform("uViewMatrix", t.mat4), this.setUniform("uProjectionMatrix", r.mat4), this.setUniform("uModelMatrix", e.mat4), this.setUniform("uModelViewMatrix", o.mat4), this.setUniform("uModelViewProjectionMatrix", n.mat4), this.uniforms.uNormalMatrix && (this._renderer.uNMatrix.inverseTranspose(this._renderer.uMVMatrix), this.setUniform("uNormalMatrix", this._renderer.uNMatrix.mat3)), this.uniforms.uCameraRotation && (this._renderer.curMatrix.inverseTranspose(this._renderer.uViewMatrix), this.setUniform("uCameraRotation", this._renderer.curMatrix.mat3))
                            }
                        }, {
                            key: "useProgram",
                            value: function() {
                                var e = this._renderer.GL;
                                return this._renderer._curShader !== this && (e.useProgram(this._glProgram), this._renderer._curShader = this), this
                            }
                        }, {
                            key: "setUniform",
                            value: function(e, t) {
                                var r = this.uniforms[e];
                                if (r) {
                                    var o = this._renderer.GL;
                                    if (r.isArray) {
                                        if (r._cachedData && this._renderer._arraysEqual(r._cachedData, t)) return;
                                        r._cachedData = t.slice(0)
                                    } else {
                                        if (r._cachedData && r._cachedData === t) return;
                                        Array.isArray(t) ? r._cachedData = t.slice(0) : r._cachedData = t
                                    }
                                    var n = r.location;
                                    switch (this.useProgram(), r.type) {
                                        case o.BOOL:
                                            !0 === t ? o.uniform1i(n, 1) : o.uniform1i(n, 0);
                                            break;
                                        case o.INT:
                                            1 < r.size ? t.length && o.uniform1iv(n, t) : o.uniform1i(n, t);
                                            break;
                                        case o.FLOAT:
                                            1 < r.size ? t.length && o.uniform1fv(n, t) : o.uniform1f(n, t);
                                            break;
                                        case o.FLOAT_MAT3:
                                            o.uniformMatrix3fv(n, !1, t);
                                            break;
                                        case o.FLOAT_MAT4:
                                            o.uniformMatrix4fv(n, !1, t);
                                            break;
                                        case o.FLOAT_VEC2:
                                            1 < r.size ? t.length && o.uniform2fv(n, t) : o.uniform2f(n, t[0], t[1]);
                                            break;
                                        case o.FLOAT_VEC3:
                                            1 < r.size ? t.length && o.uniform3fv(n, t) : o.uniform3f(n, t[0], t[1], t[2]);
                                            break;
                                        case o.FLOAT_VEC4:
                                            1 < r.size ? t.length && o.uniform4fv(n, t) : o.uniform4f(n, t[0], t[1], t[2], t[3]);
                                            break;
                                        case o.INT_VEC2:
                                            1 < r.size ? t.length && o.uniform2iv(n, t) : o.uniform2i(n, t[0], t[1]);
                                            break;
                                        case o.INT_VEC3:
                                            1 < r.size ? t.length && o.uniform3iv(n, t) : o.uniform3i(n, t[0], t[1], t[2]);
                                            break;
                                        case o.INT_VEC4:
                                            1 < r.size ? t.length && o.uniform4iv(n, t) : o.uniform4i(n, t[0], t[1], t[2], t[3]);
                                            break;
                                        case o.SAMPLER_2D:
                                            if ("number" == typeof t) {
                                                if (t < o.TEXTURE0 || t > o.TEXTURE31 || t !== Math.ceil(t)) return console.log("🌸 p5.js says: You're trying to use a number as the data for a texture.Please use a texture."), this;
                                                o.activeTexture(t), o.uniform1i(n, t)
                                            } else o.activeTexture(o.TEXTURE0 + r.samplerIndex), r.texture = t instanceof a.default.Texture ? t : this._renderer.getTexture(t), o.uniform1i(n, r.samplerIndex), r.texture.src.gifProperties && r.texture.src._animateGif(this._renderer._pInst);
                                            break;
                                        case o.SAMPLER_CUBE:
                                        case o.SAMPLER_3D:
                                        case o.SAMPLER_2D_SHADOW:
                                        case o.SAMPLER_2D_ARRAY:
                                        case o.SAMPLER_2D_ARRAY_SHADOW:
                                        case o.SAMPLER_CUBE_SHADOW:
                                        case o.INT_SAMPLER_2D:
                                        case o.INT_SAMPLER_3D:
                                        case o.INT_SAMPLER_CUBE:
                                        case o.INT_SAMPLER_2D_ARRAY:
                                        case o.UNSIGNED_INT_SAMPLER_2D:
                                        case o.UNSIGNED_INT_SAMPLER_3D:
                                        case o.UNSIGNED_INT_SAMPLER_CUBE:
                                        case o.UNSIGNED_INT_SAMPLER_2D_ARRAY:
                                            "number" == typeof t && (t < o.TEXTURE0 || t > o.TEXTURE31 || t !== Math.ceil(t) ? console.log("🌸 p5.js says: You're trying to use a number as the data for a texture.Please use a texture.") : (o.activeTexture(t), o.uniform1i(n, t)))
                                    }
                                    return this
                                }
                            }
                        }, {
                            key: "isLightShader",
                            value: function() {
                                return [this.attributes.aNormal, this.uniforms.uUseLighting, this.uniforms.uAmbientLightCount, this.uniforms.uDirectionalLightCount, this.uniforms.uPointLightCount, this.uniforms.uAmbientColor, this.uniforms.uDirectionalDiffuseColors, this.uniforms.uDirectionalSpecularColors, this.uniforms.uPointLightLocation, this.uniforms.uPointLightDiffuseColors, this.uniforms.uPointLightSpecularColors, this.uniforms.uLightingDirection, this.uniforms.uSpecular].some(function(e) {
                                    return void 0 !== e
                                })
                            }
                        }, {
                            key: "isNormalShader",
                            value: function() {
                                return void 0 !== this.attributes.aNormal
                            }
                        }, {
                            key: "isTextureShader",
                            value: function() {
                                return 0 < this.samplers.length
                            }
                        }, {
                            key: "isColorShader",
                            value: function() {
                                return void 0 !== this.attributes.aVertexColor || void 0 !== this.uniforms.uMaterialColor
                            }
                        }, {
                            key: "isTexLightShader",
                            value: function() {
                                return this.isLightShader() && this.isTextureShader()
                            }
                        }, {
                            key: "isStrokeShader",
                            value: function() {
                                return void 0 !== this.uniforms.uStrokeWeight
                            }
                        }, {
                            key: "enableAttrib",
                            value: function(e, t, r, o, n, s) {
                                var i;
                                return e && -1 !== (e = e.location) && (i = this._renderer.GL, this._renderer.registerEnabled.has(e) || (i.enableVertexAttribArray(e), this._renderer.registerEnabled.add(e)), this._renderer.GL.vertexAttribPointer(e, t, r || i.FLOAT, o || !1, n || 0, s || 0)), this
                            }
                        }, {
                            key: "disableRemainingAttributes",
                            value: function() {
                                var r = this,
                                    e = !0,
                                    t = !1,
                                    o = void 0;
                                try {
                                    for (var n, s = this._renderer.registerEnabled.values()[Symbol.iterator](); !(e = (n = s.next()).done); e = !0)(() => {
                                        var t = n.value;
                                        Object.keys(r.attributes).some(function(e) {
                                            return r.attributes[e].location === t
                                        }) || (r._renderer.GL.disableVertexAttribArray(t), r._renderer.registerEnabled.delete(t))
                                    })()
                                } catch (e) {
                                    t = !0, o = e
                                } finally {
                                    try {
                                        e || null == s.return || s.return()
                                    } finally {
                                        if (t) throw o
                                    }
                                }
                            }
                        }]), n), e = a.default.Shader, r.default = e
                    }, {
                        "../core/main": 283,
                        "core-js/modules/es.array.concat": 153,
                        "core-js/modules/es.array.index-of": 164,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.array.slice": 169,
                        "core-js/modules/es.array.some": 170,
                        "core-js/modules/es.function.name": 174,
                        "core-js/modules/es.object.assign": 183,
                        "core-js/modules/es.object.keys": 189,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    343: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.get-prototype-of"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.reflect.construct"), e("core-js/modules/es.regexp.to-string"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.typed-array.uint8-array"), e("core-js/modules/es.typed-array.copy-within"), e("core-js/modules/es.typed-array.every"), e("core-js/modules/es.typed-array.fill"), e("core-js/modules/es.typed-array.filter"), e("core-js/modules/es.typed-array.find"), e("core-js/modules/es.typed-array.find-index"), e("core-js/modules/es.typed-array.for-each"), e("core-js/modules/es.typed-array.includes"), e("core-js/modules/es.typed-array.index-of"), e("core-js/modules/es.typed-array.iterator"), e("core-js/modules/es.typed-array.join"), e("core-js/modules/es.typed-array.last-index-of"), e("core-js/modules/es.typed-array.map"), e("core-js/modules/es.typed-array.reduce"), e("core-js/modules/es.typed-array.reduce-right"), e("core-js/modules/es.typed-array.reverse"), e("core-js/modules/es.typed-array.set"), e("core-js/modules/es.typed-array.slice"), e("core-js/modules/es.typed-array.some"), e("core-js/modules/es.typed-array.sort"), e("core-js/modules/es.typed-array.subarray"), e("core-js/modules/es.typed-array.to-locale-string"), e("core-js/modules/es.typed-array.to-string"), Object.defineProperty(r, "__esModule", {
                            value: !0
                        }), r.checkWebGLCapabilities = m, r.default = r.MipmapTexture = void 0;
                        var n = (p = e("../core/main")) && p.__esModule ? p : {
                                default: p
                            },
                            a = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = l();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function l() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, l = function() {
                                return e
                            }, e)
                        }

                        function s(e, t) {
                            return (s = Object.setPrototypeOf || function(e, t) {
                                return e.__proto__ = t, e
                            })(e, t)
                        }

                        function c(e) {
                            return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(e) {
                                return e.__proto__ || Object.getPrototypeOf(e)
                            })(e)
                        }

                        function u(e, t) {
                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                        }

                        function d(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function h(e, t, r) {
                            t && d(e.prototype, t), r && d(e, r)
                        }

                        function f(e, t, r) {
                            u(this, f), this._renderer = e;
                            var o = this._renderer.GL,
                                r = (r = r || {}, this.src = t, this.glTex = void 0, this.glTarget = o.TEXTURE_2D, this.glFormat = r.format || o.RGBA, this.mipmaps = !1, this.glMinFilter = r.minFilter || o.LINEAR, this.glMagFilter = r.magFilter || o.LINEAR, this.glWrapS = r.wrapS || o.CLAMP_TO_EDGE, this.glWrapT = r.wrapT || o.CLAMP_TO_EDGE, this.glDataType = r.dataType || o.UNSIGNED_BYTE, m(e)),
                                e = (this.glFormat !== o.HALF_FLOAT || r.halfFloat || (console.log("This device does not support dataType HALF_FLOAT. Falling back to FLOAT."), this.glDataType = o.FLOAT), this.glFormat !== o.HALF_FLOAT || this.glMinFilter !== o.LINEAR && this.glMagFilter !== o.LINEAR || r.halfFloatLinear || (console.log("This device does not support linear filtering for dataType FLOAT. Falling back to NEAREST."), this.glMinFilter === o.LINEAR && (this.glMinFilter = o.NEAREST), this.glMagFilter === o.LINEAR && (this.glMagFilter = o.NEAREST)), this.glFormat !== o.FLOAT || r.float || (console.log("This device does not support dataType FLOAT. Falling back to UNSIGNED_BYTE."), this.glDataType = o.UNSIGNED_BYTE), this.glFormat !== o.FLOAT || this.glMinFilter !== o.LINEAR && this.glMagFilter !== o.LINEAR || r.floatLinear || (console.log("This device does not support linear filtering for dataType FLOAT. Falling back to NEAREST."), this.glMinFilter === o.LINEAR && (this.glMinFilter = o.NEAREST), this.glMagFilter === o.LINEAR && (this.glMagFilter = o.NEAREST)), this.isSrcMediaElement = void 0 !== n.default.MediaElement && t instanceof n.default.MediaElement, this._videoPrevUpdateTime = 0, this.isSrcHTMLElement = void 0 !== n.default.Element && t instanceof n.default.Element && !(t instanceof n.default.Graphics) && !(t instanceof n.default.Renderer), this.isSrcP5Image = t instanceof n.default.Image, this.isSrcP5Graphics = t instanceof n.default.Graphics, this.isSrcP5Renderer = t instanceof n.default.Renderer, this.isImageData = "undefined" != typeof ImageData && t instanceof ImageData, this.isFramebufferTexture = t instanceof n.default.FramebufferTexture, this._getTextureDataFromSource());
                            return this.width = e.width, this.height = e.height, this.init(e), this
                        }
                        n.default.Texture = (h(f, [{
                            key: "_getTextureDataFromSource",
                            value: function() {
                                var e;
                                return this.isFramebufferTexture ? e = this.src.rawTexture() : this.isSrcP5Image ? e = this.src.canvas : this.isSrcMediaElement || this.isSrcP5Graphics || this.isSrcP5Renderer || this.isSrcHTMLElement ? (this.src._ensureCanvas && this.src._ensureCanvas(), e = this.src.canvas || this.src.elt) : this.isImageData && (e = this.src), e
                            }
                        }, {
                            key: "init",
                            value: function(e) {
                                var t, r = this._renderer.GL;
                                this.isFramebufferTexture || (this.glTex = r.createTexture()), this.glWrapS = this._renderer.textureWrapX, this.glWrapT = this._renderer.textureWrapY, this.setWrapMode(this.glWrapS, this.glWrapT), this.bindTexture(), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MAG_FILTER, this.glMagFilter), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, this.glMinFilter), this.isFramebufferTexture || (0 === this.width || 0 === this.height || this.isSrcMediaElement && !this.src.loadedmetadata ? (t = new Uint8Array([1, 1, 1, 1]), r.texImage2D(this.glTarget, 0, r.RGBA, 1, 1, 0, this.glFormat, this.glDataType, t)) : r.texImage2D(this.glTarget, 0, this.glFormat, this.glFormat, this.glDataType, e))
                            }
                        }, {
                            key: "update",
                            value: function() {
                                var e, t, r, o = this.src;
                                return 0 !== o.width && 0 !== o.height && !this.isFramebufferTexture && (e = this._getTextureDataFromSource(), t = !1, r = this._renderer.GL, e.width !== this.width || e.height !== this.height ? (t = !0, this.width = e.width || o.width, this.height = e.height || o.height, this.isSrcP5Image ? o.setModified(!1) : (this.isSrcMediaElement || this.isSrcHTMLElement) && o.setModified(!0)) : this.isSrcP5Image ? o.isModified() && o.setModified(!(t = !0)) : this.isSrcMediaElement ? o.isModified() ? o.setModified(!(t = !0)) : o.loadedmetadata && this._videoPrevUpdateTime !== o.time() && (this._videoPrevUpdateTime = o.time(), t = !0) : this.isImageData ? o._dirty && (t = !(o._dirty = !1)) : t = !0, t && (this.bindTexture(), r.texImage2D(this.glTarget, 0, this.glFormat, this.glFormat, this.glDataType, e)), t)
                            }
                        }, {
                            key: "bindTexture",
                            value: function() {
                                return this._renderer.GL.bindTexture(this.glTarget, this.getTexture()), this
                            }
                        }, {
                            key: "unbindTexture",
                            value: function() {
                                this._renderer.GL.bindTexture(this.glTarget, null)
                            }
                        }, {
                            key: "getTexture",
                            value: function() {
                                return this.isFramebufferTexture ? this.src.rawTexture() : this.glTex
                            }
                        }, {
                            key: "setInterpolation",
                            value: function(e, t) {
                                var r = this._renderer.GL;
                                this.glMinFilter = this.glFilter(e), this.glMagFilter = this.glFilter(t), this.bindTexture(), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, this.glMinFilter), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MAG_FILTER, this.glMagFilter), this.unbindTexture()
                            }
                        }, {
                            key: "glFilter",
                            value: function(e) {
                                var t = this._renderer.GL;
                                return e === a.NEAREST ? t.NEAREST : t.LINEAR
                            }
                        }, {
                            key: "setWrapMode",
                            value: function(e, t) {
                                function r(e) {
                                    return 0 == (e & e - 1)
                                }
                                var o = this._renderer.GL,
                                    n = (n = this._getTextureDataFromSource()).naturalWidth && n.naturalHeight ? (s = n.naturalWidth, n.naturalHeight) : (s = this.width, this.height),
                                    s = r(s),
                                    n = r(n);
                                e === a.REPEAT ? this._renderer.webglVersion === a.WEBGL2 || s && n ? this.glWrapS = o.REPEAT : (console.warn("You tried to set the wrap mode to REPEAT but the texture size is not a power of two. Setting to CLAMP instead"), this.glWrapS = o.CLAMP_TO_EDGE) : e === a.MIRROR ? this._renderer.webglVersion === a.WEBGL2 || s && n ? this.glWrapS = o.MIRRORED_REPEAT : (console.warn("You tried to set the wrap mode to MIRROR but the texture size is not a power of two. Setting to CLAMP instead"), this.glWrapS = o.CLAMP_TO_EDGE) : this.glWrapS = o.CLAMP_TO_EDGE, t === a.REPEAT ? this._renderer.webglVersion === a.WEBGL2 || s && n ? this.glWrapT = o.REPEAT : (console.warn("You tried to set the wrap mode to REPEAT but the texture size is not a power of two. Setting to CLAMP instead"), this.glWrapT = o.CLAMP_TO_EDGE) : t === a.MIRROR ? this._renderer.webglVersion === a.WEBGL2 || s && n ? this.glWrapT = o.MIRRORED_REPEAT : (console.warn("You tried to set the wrap mode to MIRROR but the texture size is not a power of two. Setting to CLAMP instead"), this.glWrapT = o.CLAMP_TO_EDGE) : this.glWrapT = o.CLAMP_TO_EDGE, this.bindTexture(), o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_S, this.glWrapS), o.texParameteri(o.TEXTURE_2D, o.TEXTURE_WRAP_T, this.glWrapT), this.unbindTexture()
                            }
                        }]), f);
                        var p = (e => {
                            var t = n;
                            if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
                            t.prototype = Object.create(e && e.prototype, {
                                constructor: {
                                    value: t,
                                    writable: !0,
                                    configurable: !0
                                }
                            }), e && s(t, e);
                            var r, o = function() {
                                var e, t = c(r),
                                    t = (e = (() => {
                                        if ("undefined" != typeof Reflect && Reflect.construct && !Reflect.construct.sham) {
                                            if ("function" == typeof Proxy) return 1;
                                            try {
                                                return Date.prototype.toString.call(Reflect.construct(Date, [], function() {})), 1
                                            } catch (e) {}
                                        }
                                    })() ? (e = c(this).constructor, Reflect.construct(t, arguments, e)) : t.apply(this, arguments), this);
                                if (!e || "object" !== i(e) && "function" != typeof e) {
                                    if (void 0 !== t) return t;
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                }
                                return e
                            };

                            function n(e, t, r) {
                                return u(this, n), t = (e = o.call(this, e, t, r))._renderer.GL, e.glMinFilter === t.LINEAR && (e.glMinFilter = t.LINEAR_MIPMAP_LINEAR), e
                            }
                            return h(r = n, [{
                                key: "glFilter",
                                value: function(e) {
                                    return this._renderer.GL.LINEAR_MIPMAP_LINEAR
                                }
                            }, {
                                key: "_getTextureDataFromSource",
                                value: function() {
                                    return this.src
                                }
                            }, {
                                key: "init",
                                value: function(e) {
                                    var t = this._renderer.GL;
                                    this.glTex = t.createTexture(), this.bindTexture();
                                    for (var r = 0; r < e.length; r++) t.texImage2D(this.glTarget, r, this.glFormat, this.glFormat, this.glDataType, e[r]);
                                    this.glMinFilter = t.LINEAR_MIPMAP_LINEAR, t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, this.glMagFilter), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, this.glMinFilter), this.unbindTexture()
                                }
                            }, {
                                key: "update",
                                value: function() {}
                            }]), n
                        })(n.default.Texture);

                        function m(e) {
                            var t = e.GL,
                                r = (e = e.webglVersion) === a.WEBGL2 ? t.getExtension("EXT_color_buffer_float") && t.getExtension("EXT_float_blend") : t.getExtension("OES_texture_float");
                            return {
                                float: r,
                                floatLinear: r && t.getExtension("OES_texture_float_linear"),
                                halfFloat: e = e === a.WEBGL2 ? t.getExtension("EXT_color_buffer_float") : t.getExtension("OES_texture_half_float"),
                                halfFloatLinear: e && t.getExtension("OES_texture_half_float_linear")
                            }
                        }
                        r.MipmapTexture = p, e = n.default.Texture, r.default = e
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.get-prototype-of": 188,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.reflect.construct": 192,
                        "core-js/modules/es.regexp.to-string": 196,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.typed-array.copy-within": 213,
                        "core-js/modules/es.typed-array.every": 214,
                        "core-js/modules/es.typed-array.fill": 215,
                        "core-js/modules/es.typed-array.filter": 216,
                        "core-js/modules/es.typed-array.find": 218,
                        "core-js/modules/es.typed-array.find-index": 217,
                        "core-js/modules/es.typed-array.for-each": 221,
                        "core-js/modules/es.typed-array.includes": 222,
                        "core-js/modules/es.typed-array.index-of": 223,
                        "core-js/modules/es.typed-array.iterator": 226,
                        "core-js/modules/es.typed-array.join": 227,
                        "core-js/modules/es.typed-array.last-index-of": 228,
                        "core-js/modules/es.typed-array.map": 229,
                        "core-js/modules/es.typed-array.reduce": 231,
                        "core-js/modules/es.typed-array.reduce-right": 230,
                        "core-js/modules/es.typed-array.reverse": 232,
                        "core-js/modules/es.typed-array.set": 233,
                        "core-js/modules/es.typed-array.slice": 234,
                        "core-js/modules/es.typed-array.some": 235,
                        "core-js/modules/es.typed-array.sort": 236,
                        "core-js/modules/es.typed-array.subarray": 237,
                        "core-js/modules/es.typed-array.to-locale-string": 238,
                        "core-js/modules/es.typed-array.to-string": 239,
                        "core-js/modules/es.typed-array.uint8-array": 242,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }],
                    344: [function(e, t, r) {
                        function o(e) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) {
                                return typeof e
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
                            })(e)
                        }

                        function i(e) {
                            return (i = "function" == typeof Symbol && "symbol" === o(Symbol.iterator) ? function(e) {
                                return o(e)
                            } : function(e) {
                                return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : o(e)
                            })(e)
                        }
                        e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.get-own-property-descriptor"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.sub"), e("core-js/modules/es.weak-map"), e("core-js/modules/web.dom-collections.iterator"), e("core-js/modules/es.symbol"), e("core-js/modules/es.symbol.description"), e("core-js/modules/es.symbol.iterator"), e("core-js/modules/es.array.iterator"), e("core-js/modules/es.object.to-string"), e("core-js/modules/es.regexp.exec"), e("core-js/modules/es.string.iterator"), e("core-js/modules/es.string.split"), e("core-js/modules/es.string.sub"), e("core-js/modules/web.dom-collections.iterator");
                        var n, G = (n = e("../core/main")) && n.__esModule ? n : {
                                default: n
                            },
                            E = (e => {
                                if (e && e.__esModule) return e;
                                if (null === e || "object" !== i(e) && "function" != typeof e) return {
                                    default: e
                                };
                                var t = a();
                                if (t && t.has(e)) return t.get(e);
                                var r, o, n = {},
                                    s = Object.defineProperty && Object.getOwnPropertyDescriptor;
                                for (r in e) Object.prototype.hasOwnProperty.call(e, r) && ((o = s ? Object.getOwnPropertyDescriptor(e, r) : null) && (o.get || o.set) ? Object.defineProperty(n, r, o) : n[r] = e[r]);
                                return n.default = e, t && t.set(e, n), n
                            })(e("../core/constants"));

                        function a() {
                            var e;
                            return "function" != typeof WeakMap ? null : (e = new WeakMap, a = function() {
                                return e
                            }, e)
                        }

                        function V(e, t) {
                            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
                        }

                        function s(e, t) {
                            for (var r = 0; r < t.length; r++) {
                                var o = t[r];
                                o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
                            }
                        }

                        function z(e, t, r) {
                            t && s(e.prototype, t), r && s(e, r)
                        }
                        e("./p5.Shader"), e("./p5.RendererGL.Retained"), G.default.RendererGL.prototype._applyTextProperties = function() {
                            this._setProperty("_textAscent", null), this._setProperty("_textDescent", null)
                        }, G.default.RendererGL.prototype.textWidth = function(e) {
                            return this._isOpenType() ? this._textFont._textWidth(e, this._textSize) : 0
                        };
                        z(c, [{
                            key: "findImage",
                            value: function(e) {
                                var t, r, o = this.width * this.height;
                                if (o < e) throw new Error("font is too complex to render in 3D");
                                for (var n = this.infos.length - 1; 0 <= n; --n) {
                                    var s = this.infos[n];
                                    if (s.index + e < o) {
                                        r = (t = s).imageData;
                                        break
                                    }
                                }
                                if (!t) {
                                    try {
                                        r = new ImageData(this.width, this.height)
                                    } catch (e) {
                                        var i = document.getElementsByTagName("canvas")[0],
                                            a = !i,
                                            l = (i || ((i = document.createElement("canvas")).style.display = "none", document.body.appendChild(i)), i.getContext("2d"));
                                        l && (r = l.createImageData(this.width, this.height)), a && document.body.removeChild(i)
                                    }
                                    this.infos.push(t = {
                                        index: 0,
                                        imageData: r
                                    })
                                }
                                return l = t.index, t.index += e, r._dirty = !0, {
                                    imageData: r,
                                    index: l
                                }
                            }
                        }]);
                        var l = c;

                        function c(e, t) {
                            V(this, c), this.width = e, this.height = t, this.infos = []
                        }

                        function H(e, t, r, o, n) {
                            var s = e.imageData.data,
                                e = 4 * e.index++;
                            s[e++] = t, s[e++] = r, s[e++] = o, s[+e] = n
                        }
                        var W = Math.sqrt(3),
                            k = (z(u, [{
                                key: "getGlyphInfo",
                                value: function(e) {
                                    var t = this.glyphInfos[e.index];
                                    if (!t) {
                                        var r = e.getBoundingBox(),
                                            o = r.x1,
                                            n = r.y1,
                                            s = r.x2 - o,
                                            i = r.y2 - n,
                                            a = e.path.commands;
                                        if (0 == s || 0 == i || !a.length) return this.glyphInfos[e.index] = {};
                                        for (var c = [], u = [], d = [], l = 8; 0 <= l; --l) d.push([]);
                                        for (l = 8; 0 <= l; --l) u.push([]);
                                        z(P, [{
                                            key: "toQuadratic",
                                            value: function() {
                                                return {
                                                    x: this.p0.x,
                                                    y: this.p0.y,
                                                    x1: this.p1.x,
                                                    y1: this.p1.y,
                                                    cx: (3 * (this.c0.x + this.c1.x) - (this.p0.x + this.p1.x)) / 4,
                                                    cy: (3 * (this.c0.y + this.c1.y) - (this.p0.y + this.p1.y)) / 4
                                                }
                                            }
                                        }, {
                                            key: "quadError",
                                            value: function() {
                                                return G.default.Vector.sub(G.default.Vector.sub(this.p1, this.p0), G.default.Vector.mult(G.default.Vector.sub(this.c1, this.c0), 3)).mag() / 2
                                            }
                                        }, {
                                            key: "split",
                                            value: function(e) {
                                                var t = G.default.Vector.lerp(this.p0, this.c0, e),
                                                    r = G.default.Vector.lerp(this.c0, this.c1, e),
                                                    o = G.default.Vector.lerp(t, r, e),
                                                    r = (this.c1 = G.default.Vector.lerp(this.c1, this.p1, e), this.c0 = G.default.Vector.lerp(r, this.c1, e), G.default.Vector.lerp(o, this.c0, e)),
                                                    e = new P(this.p0, t, o, r);
                                                return this.p0 = r, e
                                            }
                                        }, {
                                            key: "splitInflections",
                                            value: function() {
                                                var e = G.default.Vector.sub(this.c0, this.p0),
                                                    t = G.default.Vector.sub(G.default.Vector.sub(this.c1, this.c0), e),
                                                    r = G.default.Vector.sub(G.default.Vector.sub(G.default.Vector.sub(this.p1, this.c1), e), G.default.Vector.mult(t, 2)),
                                                    o = [],
                                                    n = t.x * r.y - t.y * r.x;
                                                return 0 !== n && 0 <= (e = (r = e.x * r.y - e.y * r.x) * r - 4 * n * (e.x * t.y - e.y * t.x)) && (n < 0 && (n = -n, r = -r), e = (-r + (t = Math.sqrt(e))) / (2 * n), 0 < (r = (-r - t) / (2 * n)) && r < 1 && (o.push(this.split(r)), e = 1 - (1 - e) / (1 - r)), 0 < e) && e < 1 && o.push(this.split(e)), o.push(this), o
                                            }
                                        }]);
                                        var h, f, p, m, D = P,
                                            y = !0,
                                            g = !1,
                                            v = void 0;
                                        try {
                                            for (var b, _ = a[Symbol.iterator](); !(y = (b = _.next()).done); y = !0) {
                                                var x = b.value,
                                                    w = (x.x - o) / s,
                                                    j = (x.y - n) / i;
                                                if (!U(h, f, w, j)) {
                                                    switch (x.type) {
                                                        case "M":
                                                            p = w, m = j;
                                                            break;
                                                        case "L":
                                                            N(h, f, w, j);
                                                            break;
                                                        case "Q":
                                                            var S = (x.x1 - o) / s,
                                                                T = (x.y1 - n) / i;
                                                            I([h, w, S], [f, j, T], {
                                                                x: h,
                                                                y: f,
                                                                cx: S,
                                                                cy: T
                                                            });
                                                            break;
                                                        case "Z":
                                                            U(h, f, p, m) ? c.push({
                                                                x: h,
                                                                y: f
                                                            }) : (N(h, f, p, m), c.push({
                                                                x: p,
                                                                y: m
                                                            }));
                                                            break;
                                                        case "C":
                                                            for (var E = ((e, t, r, o, n, s, i, a) => {
                                                                    var e = new D(new G.default.Vector(e, t), new G.default.Vector(r, o), new G.default.Vector(n, s), new G.default.Vector(i, a)).splitInflections(),
                                                                        l = [],
                                                                        c = 30 / W,
                                                                        u = !0,
                                                                        t = !1,
                                                                        r = void 0;
                                                                    try {
                                                                        for (var d, h = e[Symbol.iterator](); !(u = (d = h.next()).done); u = !0) {
                                                                            for (var f = d.value, p = [], m = void 0; !(.125 <= (m = c / f.quadError()));) {
                                                                                var y = Math.pow(m, 1 / 3),
                                                                                    g = f.split(y),
                                                                                    v = f.split(1 - y / (1 - y));
                                                                                l.push(g), p.push(f), f = v
                                                                            }
                                                                            m < 1 && l.push(f.split(.5)), l.push(f), Array.prototype.push.apply(l, p.reverse())
                                                                        }
                                                                    } catch (e) {
                                                                        t = !0, r = e
                                                                    } finally {
                                                                        try {
                                                                            u || null == h.return || h.return()
                                                                        } finally {
                                                                            if (t) throw r
                                                                        }
                                                                    }
                                                                    return l
                                                                })(h, f, (x.x1 - o) / s, (x.y1 - n) / i, (x.x2 - o) / s, (x.y2 - n) / i, w, j), k = 0; k < E.length; k++) {
                                                                var M = E[k].toQuadratic();
                                                                I([M.x, M.x1, M.cx], [M.y, M.y1, M.cy], M)
                                                            }
                                                            break;
                                                        default:
                                                            throw new Error("unknown command type: ".concat(x.type))
                                                    }
                                                    h = w, f = j
                                                }
                                            }
                                        } catch (e) {
                                            g = !0, v = e
                                        } finally {
                                            try {
                                                y || null == _.return || _.return()
                                            } finally {
                                                if (g) throw v
                                            }
                                        }
                                        for (var O = c.length, C = this.strokeImageInfos.findImage(O), F = C.index, A = 0; A < O; ++A) {
                                            var L = c[A];
                                            H(C, R(L.x), R(L.y), R(L.cx), R(L.cy))
                                        }(t = this.glyphInfos[e.index] = {
                                            glyph: e,
                                            uGlyphRect: [r.x1, -r.y1, r.x2, -r.y2],
                                            strokeImageInfo: C,
                                            strokes: c,
                                            colInfo: B(d, this.colDimImageInfos, this.colCellImageInfos),
                                            rowInfo: B(u, this.rowDimImageInfos, this.rowCellImageInfos)
                                        }).uGridOffset = [t.colInfo.dimOffset, t.rowInfo.dimOffset]
                                    }

                                    function P(e, t, r, o) {
                                        V(this, P), this.p0 = e, this.c0 = t, this.c1 = r, this.p1 = o
                                    }
                                    return t;

                                    function I(e, t, r) {
                                        var o = c.length;

                                        function n(e, t, r) {
                                            for (var o = e.length; 0 < o--;) {
                                                var n = e[o];
                                                n < t && (t = n), r < n && (r = n)
                                            }
                                            return {
                                                min: t,
                                                max: r
                                            }
                                        }
                                        c.push(r);
                                        for (var r = n(e, 1, 0), e = Math.max(Math.floor(9 * r.min - .5), 0), s = Math.min(Math.ceil(9 * r.max + .5), 9), i = e; i < s; ++i) d[i].push(o);
                                        for (var r = n(t, 1, 0), e = Math.max(Math.floor(9 * r.min - .5), 0), a = Math.min(Math.ceil(9 * r.max + .5), 9), l = e; l < a; ++l) u[l].push(o)
                                    }

                                    function R(e) {
                                        return (e = 255 * e) < 0 ? 0 : 255 < e ? 255 : e
                                    }

                                    function N(e, t, r, o) {
                                        I([e, r], [t, o], {
                                            x: e,
                                            y: t,
                                            cx: (e + r) / 2,
                                            cy: (t + o) / 2
                                        })
                                    }

                                    function U(e, t, r, o) {
                                        return Math.abs(r - e) < 1e-5 && Math.abs(o - t) < 1e-5
                                    }

                                    function B(e, t, r) {
                                        for (var o = e.length, n = t.findImage(o), t = n.index, s = 0, i = 0; i < o; ++i) s += e[i].length;
                                        for (var a = r.findImage(s), l = 0; l < o; ++l) {
                                            var c = e[l],
                                                u = c.length,
                                                d = a.index;
                                            H(n, d >> 7, 127 & d, u >> 7, 127 & u);
                                            for (var h = 0; h < u; ++h) {
                                                var f = c[h] + F;
                                                H(a, f >> 7, 127 & f, 0, 0)
                                            }
                                        }
                                        return {
                                            cellImageInfo: a,
                                            dimOffset: t,
                                            dimImageInfo: n
                                        }
                                    }
                                }
                            }]), u);

                        function u(e) {
                            V(this, u), this.font = e, this.strokeImageInfos = new l(64, 64), this.colDimImageInfos = new l(64, 64), this.rowDimImageInfos = new l(64, 64), this.colCellImageInfos = new l(64, 64), this.rowCellImageInfos = new l(64, 64), this.glyphInfos = {}
                        }
                        G.default.RendererGL.prototype._renderText = function(e, t, r, o, n) {
                            if (this._textFont && "string" != typeof this._textFont) {
                                if (!(n <= o) && this._doFill) {
                                    if (this._isOpenType()) {
                                        e.push();
                                        var n = this._doStroke,
                                            s = this.drawMode,
                                            i = (this._doStroke = !1, this.drawMode = E.TEXTURE, this._textFont.font),
                                            a = (a = this._textFont._fontInfo) || (this._textFont._fontInfo = new k(i)),
                                            r = this._textFont._handleAlignment(this, t, r, o),
                                            o = this._textSize / i.unitsPerEm,
                                            l = (this.translate(r.x, r.y, 0), this.scale(o, o, 1), this.GL),
                                            r = !this._defaultFontShader,
                                            c = this._getFontShader(),
                                            u = (c.init(), c.bindShader(), r && (c.setUniform("uGridImageSize", [64, 64]), c.setUniform("uCellsImageSize", [64, 64]), c.setUniform("uStrokeImageSize", [64, 64]), c.setUniform("uGridSize", [9, 9])), this._applyColorBlend(this.curFillColor), this.retainedMode.geometry.glyph),
                                            d = (u || ((o = this._textGeom = new G.default.Geometry(1, 1, function() {
                                                for (var e = 0; e <= 1; e++)
                                                    for (var t = 0; t <= 1; t++) this.vertices.push(new G.default.Vector(t, e, 0)), this.uvs.push(t, e)
                                            })).computeFaces().computeNormals(), u = this.createBuffers("glyph", o)), !0),
                                            r = !1,
                                            o = void 0;
                                        try {
                                            for (var h, f = this.retainedMode.buffers.text[Symbol.iterator](); !(d = (h = f.next()).done); d = !0) h.value._prepareBuffer(u, c)
                                        } catch (e) {
                                            r = !0, o = e
                                        } finally {
                                            try {
                                                d || null == f.return || f.return()
                                            } finally {
                                                if (r) throw o
                                            }
                                        }
                                        this._bindBuffer(u.indexBuffer, l.ELEMENT_ARRAY_BUFFER), c.setUniform("uMaterialColor", this.curFillColor), l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1);
                                        try {
                                            var p = 0,
                                                m = null,
                                                y = i.stringToGlyphs(t),
                                                g = !0,
                                                v = !1,
                                                b = void 0;
                                            try {
                                                for (var _, x = y[Symbol.iterator](); !(g = (_ = x.next()).done); g = !0) {
                                                    var w, j, S = _.value,
                                                        T = (m && (p += i.getKerningValue(m, S)), a.getGlyphInfo(S));
                                                    T.uGlyphRect && (w = T.rowInfo, j = T.colInfo, c.setUniform("uSamplerStrokes", T.strokeImageInfo.imageData), c.setUniform("uSamplerRowStrokes", w.cellImageInfo.imageData), c.setUniform("uSamplerRows", w.dimImageInfo.imageData), c.setUniform("uSamplerColStrokes", j.cellImageInfo.imageData), c.setUniform("uSamplerCols", j.dimImageInfo.imageData), c.setUniform("uGridOffset", T.uGridOffset), c.setUniform("uGlyphRect", T.uGlyphRect), c.setUniform("uGlyphOffset", p), c.bindTextures(), l.drawElements(l.TRIANGLES, 6, this.GL.UNSIGNED_SHORT, 0)), p += S.advanceWidth, m = S
                                                }
                                            } catch (e) {
                                                v = !0, b = e
                                            } finally {
                                                try {
                                                    g || null == x.return || x.return()
                                                } finally {
                                                    if (v) throw b
                                                }
                                            }
                                        } finally {
                                            c.unbindShader(), this._doStroke = n, this.drawMode = s, l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0), e.pop()
                                        }
                                    } else console.log("WEBGL: only Opentype (.otf) and Truetype (.ttf) fonts are supported");
                                    return e
                                }
                            } else console.log("WEBGL: you must load and set a font before drawing text. See `loadFont` and `textFont` for more details.")
                        }
                    }, {
                        "../core/constants": 272,
                        "../core/main": 283,
                        "./p5.RendererGL.Retained": 340,
                        "./p5.Shader": 342,
                        "core-js/modules/es.array.iterator": 165,
                        "core-js/modules/es.object.get-own-property-descriptor": 186,
                        "core-js/modules/es.object.to-string": 190,
                        "core-js/modules/es.regexp.exec": 195,
                        "core-js/modules/es.string.iterator": 200,
                        "core-js/modules/es.string.split": 206,
                        "core-js/modules/es.string.sub": 208,
                        "core-js/modules/es.symbol": 212,
                        "core-js/modules/es.symbol.description": 210,
                        "core-js/modules/es.symbol.iterator": 211,
                        "core-js/modules/es.weak-map": 244,
                        "core-js/modules/web.dom-collections.iterator": 246
                    }]
                }, {}, [267])(267)
            }, t.exports = n()
        }, (e, t, r) => {
            r.d(t, {
                $e: () => function() {
                    {
                        var e, t, r;
                        0 < state.rightTank.valveRotation && 0 < state.leftTank.valveRotation && 0 < state.valvePosition && (e = state.solution.Tf1, t = state.solution.Tf2, r = state.solution.P, state.leftTank.temperature = .005 * (e - state.leftTank.temperature) + state.leftTank.temperature, state.rightTank.temperature = .005 * (t - state.rightTank.temperature) + state.rightTank.temperature, state.leftTank.pressure = .005 * (r - state.leftTank.pressure) + state.leftTank.pressure, state.rightTank.pressure = .005 * (r - state.rightTank.pressure) + state.rightTank.pressure)
                    }
                },
                Pj: () => function() {
                    (state = {
                        ...state,
                        leftTank: {
                            volume: 100,
                            pressure: 3e6,
                            temperature: 227,
                            valveRotation: 0,
                            xCoord: 30,
                            yCoord: 30,
                            width: 20,
                            height: 80,
                            open: !1
                        },
                        rightTank: {
                            volume: 100,
                            pressure: 0,
                            temperature: 22,
                            valveRotation: 0,
                            xCoord: 100,
                            yCoord: 30,
                            width: 20,
                            height: 80,
                            open: !1
                        },
                        valvePosition: 0,
                        valveOpen: !1,
                        solution: {
                            Tf1: 0,
                            Tf2: 0,
                            P: 0
                        },
                        maxTemperature: 600
                    }).valveLocation = {
                        x: 75,
                        y: state.leftTank.yCoord - 10,
                        width: 5,
                        height: 1
                    };
                    var e = document.getElementById("pressure-slider"),
                        t = document.getElementById("temperature-slider"),
                        e = Number(e.value),
                        t = Number(t.value);
                    state.leftTank.pressure = 1e6 * e, state.leftTank.temperature = t
                },
                kH: () => function() {
                    let e = state.leftTank.temperature,
                        t = state.rightTank.temperature,
                        r = state.leftTank.pressure,
                        o = state.leftTank.volume,
                        n = state.rightTank.volume,
                        s = state.leftTank.pressure / 1e3,
                        i = state.leftTank.temperature + 273.15,
                        a, l, c, u = 1e12;
                    for (let r = i; 173 < r; r -= .5)
                        for (let t = i; t < 783; t += .5)
                            for (let e = 0; e < state.leftTank.pressure / 1e3; e += 100) {
                                var d = s * o / i - e * o / r - e * n / t,
                                    h = r / i - (e / s) ** (2 / 7),
                                    f = s * o - e * o - e * n,
                                    d = abs(d) + abs(h) + abs(f);
                                d < u && (u = d, a = r, l = t, c = e)
                            }
                    for (let r = a + 20; r > a - 20; --r)
                        for (let t = l + 20; t > l - 20; --t)
                            for (let e = c - 50; e < c + 50; e++) {
                                var p = s * o / i - e * o / r - e * n / t,
                                    m = r / i - (e / s) ** (2 / 7),
                                    y = s * o - e * o - e * n,
                                    p = abs(p) + abs(m) + abs(y);
                                p < u && (u = p, a = r, l = t, c = e)
                            }
                    var g = [.95 - .04 * (state.leftTank.pressure - 5e5) / 45e5 - .03 * (state.leftTank.temperature - 25) / 275, .98 - .02 * (state.leftTank.pressure - 5e5) / 45e5 - .01 * (state.leftTank.temperature - 25) / 275],
                        v = random(2 - g[0], 2 - g[1]),
                        g = random(g[0], g[1]),
                        b = [min(2 - v, 2 - g), max(2 - v, 2 - g)],
                        b = random(b[0], b[1]);
                    a -= 273.15, l -= 273.15, a = e + (a - e) * v, l = t + (l - t) * g, c *= 1e3, c = r + b * (c - r), state.solution = {
                        Tf1: a,
                        Tf2: l,
                        P: c
                    }
                }
            })
        }, , (e, t, r) => {
            r.r(t), r.d(t, {
                default: () => o
            });
            let o = '<?xml version="1.0" encoding="utf-8"?> <svg id="hamburger-svg" width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M4 18L20 18" stroke="#000000" stroke-width="2" stroke-linecap="round"/> <path d="M4 12L20 12" stroke="#000000" stroke-width="2" stroke-linecap="round"/> <path d="M4 6L20 6" stroke="#000000" stroke-width="2" stroke-linecap="round"/> </svg>'
        }, (e, t, r) => {
            r.r(t);
            var g = r(2);

            function v() {
                document.getElementById("left-25").classList.add("disabled"), document.getElementById("left-50").classList.add("disabled"), document.getElementById("left-100").classList.add("disabled"), document.getElementById("right-25").classList.add("disabled"), document.getElementById("right-50").classList.add("disabled"), document.getElementById("right-100").classList.add("disabled"), document.getElementById("pressure-slider").classList.add("disabled"), document.getElementById("temperature-slider").classList.add("disabled")
            }
            window.mousePressed = function() {
                let t = state.leftTank,
                    r = state.rightTank;
                var e = state.valveLocation,
                    o = (-state.zoomTarget[0] + mouseX / relativeSize()) / state.zoom,
                    n = (-state.zoomTarget[1] + mouseY / relativeSize()) / state.zoom,
                    s = t.knobCoords,
                    i = r.knobCoords,
                    a = s[0],
                    l = s[1],
                    c = s[2],
                    s = s[3],
                    u = i[0],
                    d = i[1],
                    h = i[2],
                    i = i[3],
                    f = e.x,
                    p = e.y,
                    m = e.width,
                    e = e.height,
                    y = abs(state.leftTank.pressure - state.rightTank.pressure) < 4e4,
                    a = [a - c / 2, l - s / 2, a + 3 * c / 2, l + 3 * s];
                if (a[0] < o && o < a[2] && a[1] < n && n < a[3])
                    if (v(), 0 !== t.valveRotation || y) {
                        if (1 === t.valveRotation && y) {
                            state.leftTank.open = !1;
                            let e = setInterval(() => {
                                0 === t.valveRotation ? clearInterval(e) : t.valveRotation = max(0, t.valveRotation - .005)
                            }, 1e3 / state.frameRate)
                        }
                    } else {
                        state.leftTank.open = !0, (0 < r.valveRotation && 0 < state.valvePosition ? ((0, g.kH)(), gasTransferSound.currentTime = 0, gasTransferSound) : (gasReleaseSound.currentTime = 0, gasReleaseSound)).play();
                        let e = setInterval(() => {
                            1 === t.valveRotation ? clearInterval(e) : t.valveRotation = min(1, t.valveRotation + .005)
                        }, 1e3 / state.frameRate)
                    } c = [u - h / 2, d - i / 2, u + 3 * h / 2, d + 2 * i];
                if (c[0] < o && o < c[2] && c[1] < n && n < c[3])
                    if (v(), 0 !== r.valveRotation || y) {
                        if (1 === r.valveRotation && y) {
                            state.rightTank.open = !1;
                            let e = setInterval(() => {
                                0 === r.valveRotation ? clearInterval(e) : r.valveRotation = max(0, r.valveRotation - .005)
                            }, 1e3 / state.frameRate)
                        }
                    } else {
                        state.rightTank.open = !0, 0 < t.valveRotation && 0 < state.valvePosition && ((0, g.kH)(), gasTransferSound.currentTime = 0, gasTransferSound.play());
                        let e = setInterval(() => {
                            1 === r.valveRotation ? clearInterval(e) : r.valveRotation = min(1, r.valveRotation + .005)
                        }, 1e3 / state.frameRate)
                    } l = [f - m, p - 2 * e, f + m, p + 7 * e];
                if (l[0] < o && o < l[2] && l[1] < n && n < l[3])
                    if (v(), 0 !== state.valvePosition || y) {
                        if (1 === state.valvePosition && y) {
                            state.valveOpen = !1;
                            let e = setInterval(() => {
                                0 === state.valvePosition ? clearInterval(e) : state.valvePosition = max(0, state.valvePosition - .005)
                            }, 1e3 / state.frameRate)
                        }
                    } else {
                        state.valveOpen = !0, 0 < t.valveRotation && 0 < r.valveRotation ? ((0, g.kH)(), gasTransferSound.curentTime = 0, gasTransferSound.play()) : 0 < t.valveRotation && (gasReleaseSound.currentTime = 0, gasReleaseSound.play());
                        let e = setInterval(() => {
                            1 === state.valvePosition ? clearInterval(e) : state.valvePosition = min(1, state.valvePosition + .005)
                        }, 1e3 / state.frameRate)
                    }
            }, window.mouseWheel = function(e) {
                e.preventDefault();
                var t = mouseX / relativeSize(),
                    r = mouseY / relativeSize();
                e.deltaY < 0 ? (state.zoom *= 1.02, state.zoomTarget[0] = t - 1.02 * (t - state.zoomTarget[0]), state.zoomTarget[1] = r - 1.02 * (r - state.zoomTarget[1])) : (state.zoom /= 1.02, state.zoom = Math.max(1, state.zoom), state.zoomTarget[0] = t - (t - state.zoomTarget[0]) / 1.02, state.zoomTarget[1] = r - (r - state.zoomTarget[1]) / 1.02, state.zoomTarget[0] = constrain(state.zoomTarget[0], -150 * (state.zoom - 1), 0), state.zoomTarget[1] = constrain(state.zoomTarget[1], -150 * (state.zoom - 1), 0))
            }, window.mouseDragged = function() {
                state.zoomTarget[0] += (mouseX - pmouseX) / relativeSize(), state.zoomTarget[1] += (mouseY - pmouseY) / relativeSize(), state.zoomTarget[0] = constrain(state.zoomTarget[0], -150 * (state.zoom - 1), 0), state.zoomTarget[1] = constrain(state.zoomTarget[1], -150 * (state.zoom - 1), 0)
            }
        }],
        o = {};

    function St(e) {
        var t = o[e];
        return void 0 !== t || (t = o[e] = {
            exports: {}
        }, r[e](t, t.exports, St)), t.exports
    }
    St.n = e => {
        var t = e && e.__esModule ? () => e.default : () => e;
        return St.d(t, {
            a: t
        }), t
    }, St.d = (e, t) => {
        for (var r in t) St.o(t, r) && !St.o(e, r) && Object.defineProperty(e, r, {
            enumerable: !0,
            get: t[r]
        })
    }, St.g = function() {
        if ("object" == typeof globalThis) return globalThis;
        try {
            return this || new Function("return this")()
        } catch (e) {
            if ("object" == typeof window) return window
        }
    }(), St.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), St.r = e => {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }), Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }, St.g.importScripts && (t = St.g.location + "");
    var t, Tt = St.g.document;
    if (!t && Tt && !(t = Tt.currentScript && "SCRIPT" === Tt.currentScript.tagName.toUpperCase() ? Tt.currentScript.src : t)) {
        var n = Tt.getElementsByTagName("script");
        if (n.length)
            for (var s = n.length - 1; - 1 < s && (!t || !/^http(s?):/.test(t));) t = n[s--].src
    }
    if (!t) throw new Error("Automatic publicPath is not supported in this browser");
    t = t.replace(/^blob:/, "").replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/"), St.p = t;
    {
        var sr = {},
            Et = (St.r(sr), St.d(sr, {
                afterMain: () => gr,
                afterRead: () => pr,
                afterWrite: () => _r,
                applyStyles: () => D,
                arrow: () => F,
                auto: () => ir,
                basePlacements: () => Ct,
                beforeMain: () => mr,
                beforeRead: () => hr,
                beforeWrite: () => vr,
                bottom: () => kt,
                clippingParents: () => ar,
                computeStyles: () => N,
                createPopper: () => ro,
                createPopperBase: () => to,
                createPopperLite: () => oo,
                detectOverflow: () => Yt,
                end: () => Lt,
                eventListeners: () => U,
                flip: () => B,
                hide: () => G,
                left: () => Ot,
                main: () => yr,
                modifierPhases: () => xr,
                offset: () => V,
                placements: () => dr,
                popper: () => Pt,
                popperGenerator: () => eo,
                popperOffsets: () => z,
                preventOverflow: () => H,
                read: () => fr,
                reference: () => cr,
                right: () => Mt,
                start: () => At,
                top: () => Et,
                variationPlacements: () => ur,
                viewport: () => lr,
                write: () => br
            }), "top"),
            kt = "bottom",
            Mt = "right",
            Ot = "left",
            ir = "auto",
            Ct = [Et, kt, Mt, Ot],
            At = "start",
            Lt = "end",
            ar = "clippingParents",
            lr = "viewport",
            Pt = "popper",
            cr = "reference",
            ur = Ct.reduce(function(e, t) {
                return e.concat([t + "-" + At, t + "-" + Lt])
            }, []),
            dr = [].concat(Ct, [ir]).reduce(function(e, t) {
                return e.concat([t, t + "-" + At, t + "-" + Lt])
            }, []),
            hr = "beforeRead",
            fr = "read",
            pr = "afterRead",
            mr = "beforeMain",
            yr = "main",
            gr = "afterMain",
            vr = "beforeWrite",
            br = "write",
            _r = "afterWrite",
            xr = [hr, fr, pr, mr, yr, gr, vr, br, _r];

        function It(e) {
            return e ? (e.nodeName || "").toLowerCase() : null
        }

        function Rt(e) {
            var t;
            return null == e ? window : "[object Window]" !== e.toString() ? (t = e.ownerDocument) && t.defaultView || window : e
        }

        function Dt(e) {
            return e instanceof Rt(e).Element || e instanceof Element
        }

        function Ft(e) {
            return e instanceof Rt(e).HTMLElement || e instanceof HTMLElement
        }

        function wr(e) {
            return "undefined" != typeof ShadowRoot && (e instanceof Rt(e).ShadowRoot || e instanceof ShadowRoot)
        }
        let D = {
            name: "applyStyles",
            enabled: !0,
            phase: "write",
            fn: function(e) {
                var n = e.state;
                Object.keys(n.elements).forEach(function(e) {
                    var t = n.styles[e] || {},
                        r = n.attributes[e] || {},
                        o = n.elements[e];
                    Ft(o) && It(o) && (Object.assign(o.style, t), Object.keys(r).forEach(function(e) {
                        var t = r[e];
                        !1 === t ? o.removeAttribute(e) : o.setAttribute(e, !0 === t ? "" : t)
                    }))
                })
            },
            effect: function(e) {
                var o = e.state,
                    n = {
                        popper: {
                            position: o.options.strategy,
                            left: "0",
                            top: "0",
                            margin: "0"
                        },
                        arrow: {
                            position: "absolute"
                        },
                        reference: {}
                    };
                return Object.assign(o.elements.popper.style, n.popper), o.styles = n, o.elements.arrow && Object.assign(o.elements.arrow.style, n.arrow),
                    function() {
                        Object.keys(o.elements).forEach(function(e) {
                            var t = o.elements[e],
                                r = o.attributes[e] || {},
                                e = Object.keys((o.styles.hasOwnProperty(e) ? o.styles : n)[e]).reduce(function(e, t) {
                                    return e[t] = "", e
                                }, {});
                            Ft(t) && It(t) && (Object.assign(t.style, e), Object.keys(r).forEach(function(e) {
                                t.removeAttribute(e)
                            }))
                        })
                    }
            },
            requires: ["computeStyles"]
        };

        function Nt(e) {
            return e.split("-")[0]
        }
        var Ut = Math.max,
            jr = Math.min,
            Bt = Math.round;

        function Sr() {
            var e = navigator.userAgentData;
            return null != e && e.brands && Array.isArray(e.brands) ? e.brands.map(function(e) {
                return e.brand + "/" + e.version
            }).join(" ") : navigator.userAgent
        }

        function Tr() {
            return !/^((?!chrome|android).)*safari/i.test(Sr())
        }

        function Gt(e, t, r) {
            void 0 === t && (t = !1), void 0 === r && (r = !1);
            var o = e.getBoundingClientRect(),
                n = 1,
                s = 1;
            t && Ft(e) && (n = 0 < e.offsetWidth && Bt(o.width) / e.offsetWidth || 1, s = 0 < e.offsetHeight && Bt(o.height) / e.offsetHeight || 1);
            t = (Dt(e) ? Rt(e) : window).visualViewport, e = !Tr() && r, r = (o.left + (e && t ? t.offsetLeft : 0)) / n, e = (o.top + (e && t ? t.offsetTop : 0)) / s, t = o.width / n, n = o.height / s;
            return {
                width: t,
                height: n,
                top: e,
                right: r + t,
                bottom: e + n,
                left: r,
                x: r,
                y: e
            }
        }

        function Er(e) {
            var t = Gt(e),
                r = e.offsetWidth,
                o = e.offsetHeight;
            return Math.abs(t.width - r) <= 1 && (r = t.width), Math.abs(t.height - o) <= 1 && (o = t.height), {
                x: e.offsetLeft,
                y: e.offsetTop,
                width: r,
                height: o
            }
        }

        function kr(e, t) {
            var r = t.getRootNode && t.getRootNode();
            if (e.contains(t)) return !0;
            if (r && wr(r)) {
                var o = t;
                do {
                    if (o && e.isSameNode(o)) return !0
                } while (o = o.parentNode || o.host)
            }
            return !1
        }

        function Vt(e) {
            return Rt(e).getComputedStyle(e)
        }

        function zt(e) {
            return ((Dt(e) ? e.ownerDocument : e.document) || window.document).documentElement
        }

        function Mr(e) {
            return "html" === It(e) ? e : e.assignedSlot || e.parentNode || (wr(e) ? e.host : null) || zt(e)
        }

        function Or(e) {
            return Ft(e) && "fixed" !== Vt(e).position ? e.offsetParent : null
        }

        function Ht(e) {
            for (var t, r = Rt(e), o = Or(e); o && (t = o, 0 <= ["table", "td", "th"].indexOf(It(t))) && "static" === Vt(o).position;) o = Or(o);
            return (!o || "html" !== It(o) && ("body" !== It(o) || "static" !== Vt(o).position)) && (o || (e => {
                var t = /firefox/i.test(Sr()),
                    r = /Trident/i.test(Sr());
                if (!r || !Ft(e) || "fixed" !== Vt(e).position) {
                    var o = Mr(e);
                    for (wr(o) && (o = o.host); Ft(o) && ["html", "body"].indexOf(It(o)) < 0;) {
                        var n = Vt(o);
                        if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || t && "filter" === n.willChange || t && n.filter && "none" !== n.filter) return o;
                        o = o.parentNode
                    }
                }
                return null
            })(e)) || r
        }

        function Cr(e) {
            return 0 <= ["top", "bottom"].indexOf(e) ? "x" : "y"
        }

        function Wt(e, t, r) {
            return Ut(e, jr(t, r))
        }

        function Ar() {
            return {
                top: 0,
                right: 0,
                bottom: 0,
                left: 0
            }
        }

        function Lr(e) {
            return Object.assign({}, Ar(), e)
        }

        function Pr(r, e) {
            return e.reduce(function(e, t) {
                return e[t] = r, e
            }, {})
        }
        let F = {
            name: "arrow",
            enabled: !0,
            phase: "main",
            fn: function(e) {
                var t, r, o, n, s = e.state,
                    i = e.name,
                    e = e.options,
                    a = s.elements.arrow,
                    l = s.modifiersData.popperOffsets,
                    c = Cr(u = Nt(s.placement)),
                    u = 0 <= [Ot, Mt].indexOf(u) ? "height" : "width";
                a && l && (e = e.padding, r = s, r = Lr("number" != typeof(e = "function" == typeof e ? e(Object.assign({}, r.rects, {
                    placement: r.placement
                })) : e) ? e : Pr(e, Ct)), e = Er(a), n = "y" === c ? Et : Ot, o = "y" === c ? kt : Mt, t = s.rects.reference[u] + s.rects.reference[c] - l[c] - s.rects.popper[u], l = l[c] - s.rects.reference[c], a = (a = Ht(a)) ? "y" === c ? a.clientHeight || 0 : a.clientWidth || 0 : 0, n = r[n], r = a - e[u] - r[o], n = Wt(n, o = a / 2 - e[u] / 2 + (t / 2 - l / 2), r), s.modifiersData[i] = ((a = {})[c] = n, a.centerOffset = n - o, a))
            },
            effect: function(e) {
                var t = e.state;
                null != (e = void 0 === (e = e.options.element) ? "[data-popper-arrow]" : e) && ("string" != typeof e || (e = t.elements.popper.querySelector(e))) && kr(t.elements.popper, e) && (t.elements.arrow = e)
            },
            requires: ["popperOffsets"],
            requiresIfExists: ["preventOverflow"]
        };

        function qt(e) {
            return e.split("-")[1]
        }
        var Ir = {
            top: "auto",
            right: "auto",
            bottom: "auto",
            left: "auto"
        };

        function Rr(e) {
            var t, r = e.popper,
                o = e.popperRect,
                n = e.placement,
                s = e.variation,
                i = e.offsets,
                a = e.position,
                l = e.gpuAcceleration,
                c = e.adaptive,
                u = e.roundOffsets,
                e = e.isFixed,
                d = i.x,
                d = void 0 === d ? 0 : d,
                h = i.y,
                h = void 0 === h ? 0 : h,
                f = "function" == typeof u ? u({
                    x: d,
                    y: h
                }) : {
                    x: d,
                    y: h
                },
                f = (d = f.x, h = f.y, i.hasOwnProperty("x")),
                i = i.hasOwnProperty("y"),
                p = Ot,
                m = Et,
                y = window,
                g = (c && (g = "clientHeight", t = "clientWidth", (v = Ht(r)) === Rt(r) && "static" !== Vt(v = zt(r)).position && "absolute" === a && (g = "scrollHeight", t = "scrollWidth"), n !== Et && (n !== Ot && n !== Mt || s !== Lt) || (m = kt, h = (h - ((e && v === y && y.visualViewport ? y.visualViewport.height : v[g]) - o.height)) * (l ? 1 : -1)), n !== Ot && (n !== Et && n !== kt || s !== Lt) || (p = Mt, d = (d - ((e && v === y && y.visualViewport ? y.visualViewport.width : v[t]) - o.width)) * (l ? 1 : -1))), Object.assign({
                    position: a
                }, c && Ir)),
                v = !0 === u ? (n = {
                    x: d,
                    y: h
                }, s = Rt(r), e = n.x, n = n.y, s = s.devicePixelRatio || 1, {
                    x: Bt(e * s) / s || 0,
                    y: Bt(n * s) / s || 0
                }) : {
                    x: d,
                    y: h
                };
            return d = v.x, h = v.y, l ? Object.assign({}, g, ((t = {})[m] = i ? "0" : "", t[p] = f ? "0" : "", t.transform = (y.devicePixelRatio || 1) <= 1 ? "translate(" + d + "px, " + h + "px)" : "translate3d(" + d + "px, " + h + "px, 0)", t)) : Object.assign({}, g, ((o = {})[m] = i ? h + "px" : "", o[p] = f ? d + "px" : "", o.transform = "", o))
        }
        let N = {
            name: "computeStyles",
            enabled: !0,
            phase: "beforeWrite",
            fn: function(e) {
                var t = e.state,
                    r = void 0 === (r = (e = e.options).gpuAcceleration) || r,
                    o = void 0 === (o = e.adaptive) || o,
                    e = void 0 === (e = e.roundOffsets) || e,
                    r = {
                        placement: Nt(t.placement),
                        variation: qt(t.placement),
                        popper: t.elements.popper,
                        popperRect: t.rects.popper,
                        gpuAcceleration: r,
                        isFixed: "fixed" === t.options.strategy
                    };
                null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, Rr(Object.assign({}, r, {
                    offsets: t.modifiersData.popperOffsets,
                    position: t.options.strategy,
                    adaptive: o,
                    roundOffsets: e
                })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, Rr(Object.assign({}, r, {
                    offsets: t.modifiersData.arrow,
                    position: "absolute",
                    adaptive: !1,
                    roundOffsets: e
                })))), t.attributes.popper = Object.assign({}, t.attributes.popper, {
                    "data-popper-placement": t.placement
                })
            },
            data: {}
        };
        var Dr = {
            passive: !0
        };
        let U = {
            name: "eventListeners",
            enabled: !0,
            phase: "write",
            fn: function() {},
            effect: function(e) {
                var t = e.state,
                    r = e.instance,
                    o = (e = e.options).scroll,
                    n = void 0 === o || o,
                    s = void 0 === (o = e.resize) || o,
                    i = Rt(t.elements.popper),
                    a = [].concat(t.scrollParents.reference, t.scrollParents.popper);
                return n && a.forEach(function(e) {
                        e.addEventListener("scroll", r.update, Dr)
                    }), s && i.addEventListener("resize", r.update, Dr),
                    function() {
                        n && a.forEach(function(e) {
                            e.removeEventListener("scroll", r.update, Dr)
                        }), s && i.removeEventListener("resize", r.update, Dr)
                    }
            },
            data: {}
        };
        var Fr = {
            left: "right",
            right: "left",
            bottom: "top",
            top: "bottom"
        };

        function Nr(e) {
            return e.replace(/left|right|bottom|top/g, function(e) {
                return Fr[e]
            })
        }
        var Ur = {
            start: "end",
            end: "start"
        };

        function Br(e) {
            return e.replace(/start|end/g, function(e) {
                return Ur[e]
            })
        }

        function Gr(e) {
            e = Rt(e);
            return {
                scrollLeft: e.pageXOffset,
                scrollTop: e.pageYOffset
            }
        }

        function Vr(e) {
            return Gt(zt(e)).left + Gr(e).scrollLeft
        }

        function zr(e) {
            var e = Vt(e),
                t = e.overflow;
            return /auto|scroll|overlay|hidden/.test(t + e.overflowY + e.overflowX)
        }

        function Xt(e, t) {
            void 0 === t && (t = []);
            var r = function e(t) {
                    return 0 <= ["html", "body", "#document"].indexOf(It(t)) ? t.ownerDocument.body : Ft(t) && zr(t) ? t : e(Mr(t))
                }(e),
                e = r === (null == (e = e.ownerDocument) ? void 0 : e.body),
                o = Rt(r),
                o = e ? [o].concat(o.visualViewport || [], zr(r) ? r : []) : r,
                r = t.concat(o);
            return e ? r : r.concat(Xt(Mr(o)))
        }

        function Hr(e) {
            return Object.assign({}, e, {
                left: e.x,
                top: e.y,
                right: e.x + e.width,
                bottom: e.y + e.height
            })
        }

        function Wr(e, t, r) {
            return t === lr ? Hr((n = r, i = Rt(o = e), a = zt(o), i = i.visualViewport, l = a.clientWidth, a = a.clientHeight, u = c = 0, i && (l = i.width, a = i.height, (s = Tr()) || !s && "fixed" === n) && (c = i.offsetLeft, u = i.offsetTop), {
                width: l,
                height: a,
                x: c + Vr(o),
                y: u
            })) : Dt(t) ? ((n = Gt(s = t, !1, "fixed" === (n = r))).top = n.top + s.clientTop, n.left = n.left + s.clientLeft, n.bottom = n.top + s.clientHeight, n.right = n.left + s.clientWidth, n.width = s.clientWidth, n.height = s.clientHeight, n.x = n.left, n.y = n.top, n) : Hr((i = zt(e), l = zt(i), a = Gr(i), c = null == (c = i.ownerDocument) ? void 0 : c.body, o = Ut(l.scrollWidth, l.clientWidth, c ? c.scrollWidth : 0, c ? c.clientWidth : 0), u = Ut(l.scrollHeight, l.clientHeight, c ? c.scrollHeight : 0, c ? c.clientHeight : 0), i = -a.scrollLeft + Vr(i), a = -a.scrollTop, "rtl" === Vt(c || l).direction && (i += Ut(l.clientWidth, c ? c.clientWidth : 0) - o), {
                width: o,
                height: u,
                x: i,
                y: a
            }));
            var o, n, s, i, a, l, c, u
        }

        function qr(r, e, t, o) {
            var n, s = "clippingParents" === e ? (i = Xt(Mr(s = r)), Dt(n = 0 <= ["absolute", "fixed"].indexOf(Vt(s).position) && Ft(s) ? Ht(s) : s) ? i.filter(function(e) {
                    return Dt(e) && kr(e, n) && "body" !== It(e)
                }) : []) : [].concat(e),
                i = [].concat(s, [t]),
                e = i[0],
                t = i.reduce(function(e, t) {
                    t = Wr(r, t, o);
                    return e.top = Ut(t.top, e.top), e.right = jr(t.right, e.right), e.bottom = jr(t.bottom, e.bottom), e.left = Ut(t.left, e.left), e
                }, Wr(r, e, o));
            return t.width = t.right - t.left, t.height = t.bottom - t.top, t.x = t.left, t.y = t.top, t
        }

        function Xr(e) {
            var t, r = e.reference,
                o = e.element,
                e = e.placement,
                n = e ? Nt(e) : null,
                e = e ? qt(e) : null,
                s = r.x + r.width / 2 - o.width / 2,
                i = r.y + r.height / 2 - o.height / 2;
            switch (n) {
                case Et:
                    t = {
                        x: s,
                        y: r.y - o.height
                    };
                    break;
                case kt:
                    t = {
                        x: s,
                        y: r.y + r.height
                    };
                    break;
                case Mt:
                    t = {
                        x: r.x + r.width,
                        y: i
                    };
                    break;
                case Ot:
                    t = {
                        x: r.x - o.width,
                        y: i
                    };
                    break;
                default:
                    t = {
                        x: r.x,
                        y: r.y
                    }
            }
            var a = n ? Cr(n) : null;
            if (null != a) {
                var l = "y" === a ? "height" : "width";
                switch (e) {
                    case At:
                        t[a] = t[a] - (r[l] / 2 - o[l] / 2);
                        break;
                    case Lt:
                        t[a] = t[a] + (r[l] / 2 - o[l] / 2)
                }
            }
            return t
        }

        function Yt(e, t) {
            var o, t = t = void 0 === t ? {} : t,
                r = t.placement,
                r = void 0 === r ? e.placement : r,
                n = t.strategy,
                n = void 0 === n ? e.strategy : n,
                s = t.boundary,
                s = void 0 === s ? ar : s,
                i = t.rootBoundary,
                i = void 0 === i ? lr : i,
                a = t.elementContext,
                a = void 0 === a ? Pt : a,
                l = t.altBoundary,
                l = void 0 !== l && l,
                t = t.padding,
                t = void 0 === t ? 0 : t,
                t = Lr("number" != typeof t ? t : Pr(t, Ct)),
                c = e.rects.popper,
                l = e.elements[l ? a === Pt ? cr : Pt : a],
                l = qr(Dt(l) ? l : l.contextElement || zt(e.elements.popper), s, i, n),
                s = Gt(e.elements.reference),
                i = Xr({
                    reference: s,
                    element: c,
                    strategy: "absolute",
                    placement: r
                }),
                n = Hr(Object.assign({}, c, i)),
                c = a === Pt ? n : s,
                u = {
                    top: l.top - c.top + t.top,
                    bottom: c.bottom - l.bottom + t.bottom,
                    left: l.left - c.left + t.left,
                    right: c.right - l.right + t.right
                },
                i = e.modifiersData.offset;
            return a === Pt && i && (o = i[r], Object.keys(u).forEach(function(e) {
                var t = 0 <= [Mt, kt].indexOf(e) ? 1 : -1,
                    r = 0 <= [Et, kt].indexOf(e) ? "y" : "x";
                u[e] += o[r] * t
            })), u
        }
        let B = {
            name: "flip",
            enabled: !0,
            phase: "main",
            fn: function(e) {
                var d = e.state,
                    t = e.options,
                    e = e.name;
                if (!d.modifiersData[e]._skip) {
                    for (var r = t.mainAxis, o = void 0 === r || r, r = t.altAxis, n = void 0 === r || r, r = t.fallbackPlacements, h = t.padding, f = t.boundary, p = t.rootBoundary, s = t.altBoundary, i = t.flipVariations, m = void 0 === i || i, y = t.allowedAutoPlacements, i = d.options.placement, t = Nt(i), r = r || (t === i || !m ? [Nr(i)] : Nt(r = i) === ir ? [] : (t = Nr(r), [Br(r), t, Br(t)])), a = [i].concat(r).reduce(function(e, t) {
                            return e.concat(Nt(t) === ir ? (r = d, o = (e = e = void 0 === (e = {
                                placement: t,
                                boundary: f,
                                rootBoundary: p,
                                padding: h,
                                flipVariations: m,
                                allowedAutoPlacements: y
                            }) ? {} : e).placement, n = e.boundary, s = e.rootBoundary, i = e.padding, a = e.flipVariations, l = void 0 === (e = e.allowedAutoPlacements) ? dr : e, c = qt(o), e = c ? a ? ur : ur.filter(function(e) {
                                return qt(e) === c
                            }) : Ct, u = (o = 0 === (o = e.filter(function(e) {
                                return 0 <= l.indexOf(e)
                            })).length ? e : o).reduce(function(e, t) {
                                return e[t] = Yt(r, {
                                    placement: t,
                                    boundary: n,
                                    rootBoundary: s,
                                    padding: i
                                })[Nt(t)], e
                            }, {}), Object.keys(u).sort(function(e, t) {
                                return u[e] - u[t]
                            })) : t);
                            var r, o, n, s, i, a, l, c, u
                        }, []), l = d.rects.reference, c = d.rects.popper, u = new Map, g = !0, v = a[0], b = 0; b < a.length; b++) {
                        var _ = a[b],
                            x = Nt(_),
                            w = qt(_) === At,
                            j = 0 <= [Et, kt].indexOf(x),
                            S = j ? "width" : "height",
                            T = Yt(d, {
                                placement: _,
                                boundary: f,
                                rootBoundary: p,
                                altBoundary: s,
                                padding: h
                            }),
                            j = j ? w ? Mt : Ot : w ? kt : Et,
                            w = (l[S] > c[S] && (j = Nr(j)), Nr(j)),
                            S = [];
                        if (o && S.push(T[x] <= 0), n && S.push(T[j] <= 0, T[w] <= 0), S.every(function(e) {
                                return e
                            })) {
                            v = _, g = !1;
                            break
                        }
                        u.set(_, S)
                    }
                    if (g)
                        for (var E = m ? 3 : 1; 0 < E; E--)
                            if ("break" === (t => {
                                    var e = a.find(function(e) {
                                        e = u.get(e);
                                        if (e) return e.slice(0, t).every(function(e) {
                                            return e
                                        })
                                    });
                                    if (e) return v = e, "break"
                                })(E)) break;
                    d.placement !== v && (d.modifiersData[e]._skip = !0, d.placement = v, d.reset = !0)
                }
            },
            requiresIfExists: ["offset"],
            data: {
                _skip: !1
            }
        };

        function Yr(e, t, r) {
            return {
                top: e.top - t.height - (r = void 0 === r ? {
                    x: 0,
                    y: 0
                } : r).y,
                right: e.right - t.width + r.x,
                bottom: e.bottom - t.height + r.y,
                left: e.left - t.width - r.x
            }
        }

        function Zr(t) {
            return [Et, Mt, kt, Ot].some(function(e) {
                return 0 <= t[e]
            })
        }
        let G = {
                name: "hide",
                enabled: !0,
                phase: "main",
                requiresIfExists: ["preventOverflow"],
                fn: function(e) {
                    var t = e.state,
                        e = e.name,
                        r = t.rects.reference,
                        o = t.rects.popper,
                        n = t.modifiersData.preventOverflow,
                        s = Yt(t, {
                            elementContext: "reference"
                        }),
                        i = Yt(t, {
                            altBoundary: !0
                        }),
                        s = Yr(s, r),
                        r = Yr(i, o, n),
                        i = Zr(s),
                        o = Zr(r);
                    t.modifiersData[e] = {
                        referenceClippingOffsets: s,
                        popperEscapeOffsets: r,
                        isReferenceHidden: i,
                        hasPopperEscaped: o
                    }, t.attributes.popper = Object.assign({}, t.attributes.popper, {
                        "data-popper-reference-hidden": i,
                        "data-popper-escaped": o
                    })
                }
            },
            V = {
                name: "offset",
                enabled: !0,
                phase: "main",
                requires: ["popperOffsets"],
                fn: function(e) {
                    var i = e.state,
                        t = e.name,
                        a = void 0 === (e = e.options.offset) ? [0, 0] : e,
                        e = dr.reduce(function(e, t) {
                            var r, o, n, s;
                            return e[t] = (t = t, r = i.rects, o = a, n = Nt(t), s = 0 <= [Ot, Et].indexOf(n) ? -1 : 1, t = (r = "function" == typeof o ? o(Object.assign({}, r, {
                                placement: t
                            })) : o)[0] || 0, o = (r[1] || 0) * s, 0 <= [Ot, Mt].indexOf(n) ? {
                                x: o,
                                y: t
                            } : {
                                x: t,
                                y: o
                            }), e
                        }, {}),
                        r = (o = e[i.placement]).x,
                        o = o.y;
                    null != i.modifiersData.popperOffsets && (i.modifiersData.popperOffsets.x += r, i.modifiersData.popperOffsets.y += o), i.modifiersData[t] = e
                }
            },
            z = {
                name: "popperOffsets",
                enabled: !0,
                phase: "read",
                fn: function(e) {
                    var t = e.state;
                    t.modifiersData[e.name] = Xr({
                        reference: t.rects.reference,
                        element: t.rects.popper,
                        strategy: "absolute",
                        placement: t.placement
                    })
                },
                data: {}
            },
            H = {
                name: "preventOverflow",
                enabled: !0,
                phase: "main",
                fn: function(e) {
                    var t, r, o, n, s, i, a, l, c, u = e.state,
                        d = e.options,
                        e = e.name,
                        h = void 0 === (h = d.mainAxis) || h,
                        f = void 0 !== (f = d.altAxis) && f,
                        p = void 0 === (p = d.tether) || p,
                        m = void 0 === (m = d.tetherOffset) ? 0 : m,
                        d = Yt(u, {
                            boundary: d.boundary,
                            rootBoundary: d.rootBoundary,
                            padding: d.padding,
                            altBoundary: d.altBoundary
                        }),
                        y = Nt(u.placement),
                        g = qt(u.placement),
                        v = !g,
                        b = Cr(y),
                        _ = "x" === b ? "y" : "x",
                        x = u.modifiersData.popperOffsets,
                        w = u.rects.reference,
                        j = u.rects.popper,
                        m = "number" == typeof(m = "function" == typeof m ? m(Object.assign({}, u.rects, {
                            placement: u.placement
                        })) : m) ? {
                            mainAxis: m,
                            altAxis: m
                        } : Object.assign({
                            mainAxis: 0,
                            altAxis: 0
                        }, m),
                        S = u.modifiersData.offset ? u.modifiersData.offset[u.placement] : null,
                        T = {
                            x: 0,
                            y: 0
                        };
                    x && (h && (h = "y" === b ? "height" : "width", i = (a = x[b]) + d[r = "y" === b ? Et : Ot], l = a - d[c = "y" === b ? kt : Mt], t = p ? -j[h] / 2 : 0, n = (g === At ? w : j)[h], g = g === At ? -j[h] : -w[h], s = u.elements.arrow, s = p && s ? Er(s) : {
                        width: 0,
                        height: 0
                    }, r = (o = u.modifiersData["arrow#persistent"] ? u.modifiersData["arrow#persistent"].padding : Ar())[r], o = o[c], c = Wt(0, w[h], s[h]), s = v ? w[h] / 2 - t - c - r - m.mainAxis : n - c - r - m.mainAxis, n = v ? -w[h] / 2 + t + c + o + m.mainAxis : g + c + o + m.mainAxis, v = (r = u.elements.arrow && Ht(u.elements.arrow)) ? "y" === b ? r.clientTop || 0 : r.clientLeft || 0 : 0, g = a + n - (t = null != (h = null == S ? void 0 : S[b]) ? h : 0), c = Wt(p ? jr(i, a + s - t - v) : i, a, p ? Ut(l, g) : l), x[b] = c, T[b] = c - a), f && (o = "y" == _ ? "height" : "width", n = (r = x[_]) + d["x" === b ? Et : Ot], h = r - d["x" === b ? kt : Mt], s = -1 !== [Et, Ot].indexOf(y), v = null != (t = null == S ? void 0 : S[_]) ? t : 0, i = s ? n : r - w[o] - j[o] - v + m.altAxis, g = s ? r + w[o] + j[o] - v - m.altAxis : h, a = p && s ? (l = Wt(l = i, r, c = g), c < l ? c : l) : Wt(p ? i : n, r, p ? g : h), x[_] = a, T[_] = a - r), u.modifiersData[e] = T)
                },
                requiresIfExists: ["offset"]
            };

        function Kr(e, t, r) {
            void 0 === r && (r = !1);
            var o = Ft(t),
                n = Ft(t) && (i = (n = t).getBoundingClientRect(), s = Bt(i.width) / n.offsetWidth || 1, i = Bt(i.height) / n.offsetHeight || 1, 1 !== s || 1 !== i),
                s = zt(t),
                i = Gt(e, n, r),
                e = {
                    scrollLeft: 0,
                    scrollTop: 0
                },
                a = {
                    x: 0,
                    y: 0
                };
            return !o && r || ("body" === It(t) && !zr(s) || (e = (o = t) !== Rt(o) && Ft(o) ? {
                scrollLeft: o.scrollLeft,
                scrollTop: o.scrollTop
            } : Gr(o)), Ft(t) ? ((a = Gt(t, !0)).x += t.clientLeft, a.y += t.clientTop) : s && (a.x = Vr(s))), {
                x: i.left + e.scrollLeft - a.x,
                y: i.top + e.scrollTop - a.y,
                width: i.width,
                height: i.height
            }
        }

        function Qr(e) {
            var r = new Map,
                o = new Set,
                n = [];
            return e.forEach(function(e) {
                r.set(e.name, e)
            }), e.forEach(function(e) {
                o.has(e.name) || ! function t(e) {
                    o.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach(function(e) {
                        o.has(e) || (e = r.get(e)) && t(e)
                    }), n.push(e)
                }(e)
            }), n
        }
        var Jr = {
            placement: "bottom",
            modifiers: [],
            strategy: "absolute"
        };

        function $r() {
            for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
            return !t.some(function(e) {
                return !(e && "function" == typeof e.getBoundingClientRect)
            })
        }

        function eo(e) {
            var e = e = void 0 === e ? {} : e,
                t = e.defaultModifiers,
                d = void 0 === t ? [] : t,
                t = e.defaultOptions,
                h = void 0 === t ? Jr : t;
            return function(o, n, t) {
                void 0 === t && (t = h);
                var r, s, i = {
                        placement: "bottom",
                        orderedModifiers: [],
                        options: Object.assign({}, Jr, h),
                        modifiersData: {},
                        elements: {
                            reference: o,
                            popper: n
                        },
                        attributes: {},
                        styles: {}
                    },
                    a = [],
                    l = !1,
                    c = {
                        state: i,
                        setOptions: function(e) {
                            var r, t, e = "function" == typeof e ? e(i.options) : e,
                                e = (u(), i.options = Object.assign({}, h, i.options, e), i.scrollParents = {
                                    reference: Dt(o) ? Xt(o) : o.contextElement ? Xt(o.contextElement) : [],
                                    popper: Xt(n)
                                }, e = [].concat(d, i.options.modifiers), t = e.reduce(function(e, t) {
                                    var r = e[t.name];
                                    return e[t.name] = r ? Object.assign({}, r, t, {
                                        options: Object.assign({}, r.options, t.options),
                                        data: Object.assign({}, r.data, t.data)
                                    }) : t, e
                                }, {}), e = Object.keys(t).map(function(e) {
                                    return t[e]
                                }), r = Qr(e), xr.reduce(function(e, t) {
                                    return e.concat(r.filter(function(e) {
                                        return e.phase === t
                                    }))
                                }, []));
                            return i.orderedModifiers = e.filter(function(e) {
                                return e.enabled
                            }), i.orderedModifiers.forEach(function(e) {
                                var t = e.name,
                                    r = e.options,
                                    e = e.effect;
                                "function" == typeof e && (e = e({
                                    state: i,
                                    name: t,
                                    instance: c,
                                    options: void 0 === r ? {} : r
                                }), a.push(e || function() {}))
                            }), c.update()
                        },
                        forceUpdate: function() {
                            if (!l) {
                                var e = i.elements,
                                    t = e.reference,
                                    e = e.popper;
                                if ($r(t, e)) {
                                    i.rects = {
                                        reference: Kr(t, Ht(e), "fixed" === i.options.strategy),
                                        popper: Er(e)
                                    }, i.reset = !1, i.placement = i.options.placement, i.orderedModifiers.forEach(function(e) {
                                        return i.modifiersData[e.name] = Object.assign({}, e.data)
                                    });
                                    for (var r, o, n, s = 0; s < i.orderedModifiers.length; s++) !0 === i.reset ? (i.reset = !1, s = -1) : (o = (r = i.orderedModifiers[s]).fn, n = r.options, "function" == typeof o && (i = o({
                                        state: i,
                                        options: void 0 === n ? {} : n,
                                        name: r.name,
                                        instance: c
                                    }) || i))
                                }
                            }
                        },
                        update: (r = function() {
                            return new Promise(function(e) {
                                c.forceUpdate(), e(i)
                            })
                        }, function() {
                            return s = s || new Promise(function(e) {
                                Promise.resolve().then(function() {
                                    s = void 0, e(r())
                                })
                            })
                        }),
                        destroy: function() {
                            u(), l = !0
                        }
                    };
                return $r(o, n) && c.setOptions(t).then(function(e) {
                    !l && t.onFirstUpdate && t.onFirstUpdate(e)
                }), c;

                function u() {
                    a.forEach(function(e) {
                        return e()
                    }), a = []
                }
            }
        }
        var to = eo(),
            ro = eo({
                defaultModifiers: [U, z, N, D, V, B, H, F, G]
            }),
            oo = eo({
                defaultModifiers: [U, z, N, D]
            });
        let o = new Map,
            W = {
                set(e, t, r) {
                    o.has(e) || o.set(e, new Map);
                    e = o.get(e);
                    e.has(t) || 0 === e.size ? e.set(t, r) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(e.keys())[0]}.`)
                },
                get(e, t) {
                    return o.has(e) && o.get(e).get(t) || null
                },
                remove(e, t) {
                    var r;
                    o.has(e) && ((r = o.get(e)).delete(t), 0 === r.size) && o.delete(e)
                }
            },
            q = 1e3,
            X = "transitionend",
            Y = e => e = e && window.CSS && window.CSS.escape ? e.replace(/#([^\s"#']+)/g, (e, t) => "#" + CSS.escape(t)) : e,
            Z = e => {
                e.dispatchEvent(new Event(X))
            },
            s = e => !(!e || "object" != typeof e) && void 0 !== (e = void 0 !== e.jquery ? e[0] : e).nodeType,
            n = e => s(e) ? e.jquery ? e[0] : e : "string" == typeof e && 0 < e.length ? document.querySelector(Y(e)) : null,
            i = e => {
                if (!s(e) || 0 === e.getClientRects().length) return !1;
                var t = "visible" === getComputedStyle(e).getPropertyValue("visibility"),
                    r = e.closest("details:not([open])");
                if (r && r !== e) {
                    e = e.closest("summary");
                    if (e && e.parentNode !== r) return !1;
                    if (null === e) return !1
                }
                return t
            },
            a = e => !e || e.nodeType !== Node.ELEMENT_NODE || !!e.classList.contains("disabled") || (void 0 !== e.disabled ? e.disabled : e.hasAttribute("disabled") && "false" !== e.getAttribute("disabled")),
            K = e => {
                var t;
                return document.documentElement.attachShadow ? "function" == typeof e.getRootNode ? (t = e.getRootNode()) instanceof ShadowRoot ? t : null : e instanceof ShadowRoot ? e : e.parentNode ? K(e.parentNode) : null : null
            },
            l = () => {},
            c = e => {
                e.offsetHeight
            },
            Q = () => window.jQuery && !document.body.hasAttribute("data-bs-no-jquery") ? window.jQuery : null,
            J = [],
            u = () => "rtl" === document.documentElement.dir,
            d = (Tt = o => {
                var e;
                e = () => {
                    let r = Q();
                    if (r) {
                        let e = o.NAME,
                            t = r.fn[e];
                        r.fn[e] = o.jQueryInterface, r.fn[e].Constructor = o, r.fn[e].noConflict = () => (r.fn[e] = t, o.jQueryInterface)
                    }
                }, "loading" === document.readyState ? (J.length || document.addEventListener("DOMContentLoaded", () => {
                    for (var e of J) e()
                }), J.push(e)) : e()
            }, (e, t = [], r = e) => "function" == typeof e ? e(...t) : r),
            $ = (o, n, e = !0) => {
                if (e) {
                    e = (e => {
                        if (!e) return 0;
                        let {
                            transitionDuration: t,
                            transitionDelay: r
                        } = window.getComputedStyle(e);
                        var e = Number.parseFloat(t),
                            o = Number.parseFloat(r);
                        return e || o ? (t = t.split(",")[0], r = r.split(",")[0], (Number.parseFloat(t) + Number.parseFloat(r)) * q) : 0
                    })(n) + 5;
                    let t = !1,
                        r = ({
                            target: e
                        }) => {
                            e === n && (t = !0, n.removeEventListener(X, r), d(o))
                        };
                    n.addEventListener(X, r), setTimeout(() => {
                        t || Z(n)
                    }, e)
                } else d(o)
            },
            ee = (e, t, r, o) => {
                var n = e.length;
                let s = e.indexOf(t);
                return -1 === s ? !r && o ? e[n - 1] : e[0] : (s += r ? 1 : -1, o && (s = (s + n) % n), e[Math.max(0, Math.min(s, n - 1))])
            },
            te = /[^.]*(?=\..*)\.|.*/,
            re = /\..*/,
            oe = /::\d+$/,
            ne = {},
            se = 1,
            ie = {
                mouseenter: "mouseover",
                mouseleave: "mouseout"
            },
            ae = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]);

        function no(e, t) {
            return t && t + "::" + se++ || e.uidEvent || se++
        }

        function so(e) {
            var t = no(e);
            return e.uidEvent = t, ne[t] = ne[t] || {}, ne[t]
        }

        function io(e, t, r = null) {
            return Object.values(e).find(e => e.callable === t && e.delegationSelector === r)
        }

        function ao(e, t, r) {
            var o = "string" == typeof t,
                t = !o && t || r;
            let n = uo(e);
            return [o, t, n = ae.has(n) ? n : e]
        }

        function lo(o, n, s, i, a) {
            if ("string" == typeof n && o) {
                let [e, t, r] = ao(n, s, i);
                n in ie && (t = (l = t, function(e) {
                    if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget)) return l.call(this, e)
                }));
                var l, c, u, d, h, f, i = so(o),
                    i = i[r] || (i[r] = {}),
                    p = io(i, t, e ? s : null);
                p ? p.oneOff = p.oneOff && a : (p = no(t, n.replace(te, "")), (n = e ? (d = o, h = s, f = t, function t(r) {
                    var o = d.querySelectorAll(h);
                    for (let e = r.target; e && e !== this; e = e.parentNode)
                        for (var n of o)
                            if (n === e) return ho(r, {
                                delegateTarget: e
                            }), t.oneOff && m.off(d, r.type, h, f), f.apply(e, [r])
                }) : (c = o, u = t, function e(t) {
                    return ho(t, {
                        delegateTarget: c
                    }), e.oneOff && m.off(c, t.type, u), u.apply(c, [t])
                })).delegationSelector = e ? s : null, n.callable = t, n.oneOff = a, i[n.uidEvent = p] = n, o.addEventListener(r, n, e))
            }
        }

        function co(e, t, r, o, n) {
            o = io(t[r], o, n);
            o && (e.removeEventListener(r, o, Boolean(n)), delete t[r][o.uidEvent])
        }

        function uo(e) {
            return e = e.replace(re, ""), ie[e] || e
        }
        let m = {
            on(e, t, r, o) {
                lo(e, t, r, o, !1)
            },
            one(e, t, r, o) {
                lo(e, t, r, o, !0)
            },
            off(e, t, r, o) {
                if ("string" == typeof t && e) {
                    var n, s, [o, i, a] = ao(t, r, o),
                        l = a !== t,
                        c = so(e),
                        u = c[a] || {},
                        d = t.startsWith(".");
                    if (void 0 !== i) return Object.keys(u).length ? void co(e, c, a, i, o ? r : null) : void 0;
                    if (d)
                        for (var h of Object.keys(c)) {
                            p = f = b = v = g = y = m = void 0;
                            var f, p, m = e,
                                y = c,
                                g = h,
                                v = t.slice(1),
                                b = y[g] || {};
                            for ([f, p] of Object.entries(b)) f.includes(v) && co(m, y, g, p.callable, p.delegationSelector)
                        }
                    for ([n, s] of Object.entries(u)) {
                        var _ = n.replace(oe, "");
                        l && !t.includes(_) || co(e, c, a, s.callable, s.delegationSelector)
                    }
                }
            },
            trigger(e, t, r) {
                if ("string" != typeof t || !e) return null;
                var o = Q();
                let n = null,
                    s = !0,
                    i = !0,
                    a = !1;
                t !== uo(t) && o && (n = o.Event(t, r), o(e).trigger(n), s = !n.isPropagationStopped(), i = !n.isImmediatePropagationStopped(), a = n.isDefaultPrevented());
                o = ho(new Event(t, {
                    bubbles: s,
                    cancelable: !0
                }), r);
                return a && o.preventDefault(), i && e.dispatchEvent(o), o.defaultPrevented && n && n.preventDefault(), o
            }
        };

        function ho(o, e = {}) {
            for (let [t, r] of Object.entries(e)) try {
                o[t] = r
            } catch (e) {
                Object.defineProperty(o, t, {
                    configurable: !0,
                    get() {
                        return r
                    }
                })
            }
            return o
        }

        function fo(t) {
            if ("true" === t) return !0;
            if ("false" === t) return !1;
            if (t === Number(t).toString()) return Number(t);
            if ("" === t || "null" === t) return null;
            if ("string" != typeof t) return t;
            try {
                return JSON.parse(decodeURIComponent(t))
            } catch (e) {
                return t
            }
        }

        function po(e) {
            return e.replace(/[A-Z]/g, e => "-" + e.toLowerCase())
        }
        let h = {
            setDataAttribute(e, t, r) {
                e.setAttribute("data-bs-" + po(t), r)
            },
            removeDataAttribute(e, t) {
                e.removeAttribute("data-bs-" + po(t))
            },
            getDataAttributes(t) {
                if (!t) return {};
                var r, o = {};
                for (r of Object.keys(t.dataset).filter(e => e.startsWith("bs") && !e.startsWith("bsConfig"))) {
                    let e = r.replace(/^bs/, "");
                    o[e = e.charAt(0).toLowerCase() + e.slice(1, e.length)] = fo(t.dataset[r])
                }
                return o
            },
            getDataAttribute(e, t) {
                return fo(e.getAttribute("data-bs-" + po(t)))
            }
        };
        class Qt {
            static get Default() {
                return {}
            }
            static get DefaultType() {
                return {}
            }
            static get NAME() {
                throw new Error('You have to implement the static method "NAME", for each component!')
            }
            _getConfig(e) {
                return e = this._mergeConfigObj(e), e = this._configAfterMerge(e), this._typeCheckConfig(e), e
            }
            _configAfterMerge(e) {
                return e
            }
            _mergeConfigObj(e, t) {
                var r = s(t) ? h.getDataAttribute(t, "config") : {};
                return {
                    ...this.constructor.Default,
                    ..."object" == typeof r ? r : {},
                    ...s(t) ? h.getDataAttributes(t) : {},
                    ..."object" == typeof e ? e : {}
                }
            }
            _typeCheckConfig(e, t = this.constructor.DefaultType) {
                for (var [r, o] of Object.entries(t)) {
                    var n = e[r],
                        n = s(n) ? "element" : null == (n = n) ? "" + n : Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();
                    if (!new RegExp(o).test(n)) throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${r}" provided type "${n}" but expected type "${o}".`)
                }
            }
        }
        class Jt extends Qt {
            constructor(e, t) {
                super(), (e = n(e)) && (this._element = e, this._config = this._getConfig(t), W.set(this._element, this.constructor.DATA_KEY, this))
            }
            dispose() {
                W.remove(this._element, this.constructor.DATA_KEY), m.off(this._element, this.constructor.EVENT_KEY);
                for (var e of Object.getOwnPropertyNames(this)) this[e] = null
            }
            _queueCallback(e, t, r = !0) {
                $(e, t, r)
            }
            _getConfig(e) {
                return e = this._mergeConfigObj(e, this._element), e = this._configAfterMerge(e), this._typeCheckConfig(e), e
            }
            static getInstance(e) {
                return W.get(n(e), this.DATA_KEY)
            }
            static getOrCreateInstance(e, t = {}) {
                return this.getInstance(e) || new this(e, "object" == typeof t ? t : null)
            }
            static get VERSION() {
                return "5.3.3"
            }
            static get DATA_KEY() {
                return "bs." + this.NAME
            }
            static get EVENT_KEY() {
                return "." + this.DATA_KEY
            }
            static eventName(e) {
                return "" + e + this.EVENT_KEY
            }
        }
        let le = t => {
                let r = t.getAttribute("data-bs-target");
                if (!r || "#" === r) {
                    let e = t.getAttribute("href");
                    if (!e || !e.includes("#") && !e.startsWith(".")) return null;
                    e.includes("#") && !e.startsWith("#") && (e = "#" + e.split("#")[1]), r = e && "#" !== e ? e.trim() : null
                }
                return r ? r.split(",").map(e => Y(e)).join(",") : null
            },
            f = {
                find(e, t = document.documentElement) {
                    return [].concat(...Element.prototype.querySelectorAll.call(t, e))
                },
                findOne(e, t = document.documentElement) {
                    return Element.prototype.querySelector.call(t, e)
                },
                children(e, t) {
                    return [].concat(...e.children).filter(e => e.matches(t))
                },
                parents(e, t) {
                    var r = [];
                    let o = e.parentNode.closest(t);
                    for (; o;) r.push(o), o = o.parentNode.closest(t);
                    return r
                },
                prev(e, t) {
                    let r = e.previousElementSibling;
                    for (; r;) {
                        if (r.matches(t)) return [r];
                        r = r.previousElementSibling
                    }
                    return []
                },
                next(e, t) {
                    let r = e.nextElementSibling;
                    for (; r;) {
                        if (r.matches(t)) return [r];
                        r = r.nextElementSibling
                    }
                    return []
                },
                focusableChildren(e) {
                    var t = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map(e => e + ':not([tabindex^="-"])').join(",");
                    return this.find(t, e).filter(e => !a(e) && i(e))
                },
                getSelectorFromElement(e) {
                    e = le(e);
                    return e && f.findOne(e) ? e : null
                },
                getElementFromSelector(e) {
                    e = le(e);
                    return e ? f.findOne(e) : null
                },
                getMultipleElementsFromSelector(e) {
                    e = le(e);
                    return e ? f.find(e) : []
                }
            };
        var mo = (t, r = "hide") => {
                var e = "click.dismiss" + t.EVENT_KEY;
                let o = t.NAME;
                m.on(document, e, `[data-bs-dismiss="${o}"]`, function(e) {
                    ["A", "AREA"].includes(this.tagName) && e.preventDefault(), a(this) || (e = f.getElementFromSelector(this) || this.closest("." + o), t.getOrCreateInstance(e)[r]())
                })
            },
            Zt;
        class Mo extends Jt {
            static get NAME() {
                return "alert"
            }
            close() {
                var e;
                m.trigger(this._element, "close.bs.alert").defaultPrevented || (this._element.classList.remove("show"), e = this._element.classList.contains("fade"), this._queueCallback(() => this._destroyElement(), this._element, e))
            }
            _destroyElement() {
                this._element.remove(), m.trigger(this._element, "closed.bs.alert"), this.dispose()
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = Mo.getOrCreateInstance(this);
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
                        e[t](this)
                    }
                })
            }
        }
        mo(Mo, "close"), Tt(Mo);
        let ce = '[data-bs-toggle="button"]';
        class Oo extends Jt {
            static get NAME() {
                return "button"
            }
            toggle() {
                this._element.setAttribute("aria-pressed", this._element.classList.toggle("active"))
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = Oo.getOrCreateInstance(this);
                    "toggle" === t && e[t]()
                })
            }
        }
        m.on(document, "click.bs.button.data-api", ce, e => {
            e.preventDefault();
            e = e.target.closest(ce);
            Oo.getOrCreateInstance(e).toggle()
        }), Tt(Oo);
        let e = ".bs.swipe",
            ue = (e, e, e, e, e, {
                endCallback: null,
                leftCallback: null,
                rightCallback: null
            }),
            de = {
                endCallback: "(function|null)",
                leftCallback: "(function|null)",
                rightCallback: "(function|null)"
            };
        class Co extends Qt {
            constructor(e, t) {
                super(), (this._element = e) && Co.isSupported() && (this._config = this._getConfig(t), this._deltaX = 0, this._supportPointerEvents = Boolean(window.PointerEvent), this._initEvents())
            }
            static get Default() {
                return ue
            }
            static get DefaultType() {
                return de
            }
            static get NAME() {
                return "swipe"
            }
            dispose() {
                m.off(this._element, e)
            }
            _start(e) {
                this._supportPointerEvents ? this._eventIsPointerPenTouch(e) && (this._deltaX = e.clientX) : this._deltaX = e.touches[0].clientX
            }
            _end(e) {
                this._eventIsPointerPenTouch(e) && (this._deltaX = e.clientX - this._deltaX), this._handleSwipe(), d(this._config.endCallback)
            }
            _move(e) {
                this._deltaX = e.touches && 1 < e.touches.length ? 0 : e.touches[0].clientX - this._deltaX
            }
            _handleSwipe() {
                var e = Math.abs(this._deltaX);
                e <= 40 || (e = e / this._deltaX, this._deltaX = 0, e && d(0 < e ? this._config.rightCallback : this._config.leftCallback))
            }
            _initEvents() {
                this._supportPointerEvents ? (m.on(this._element, "pointerdown.bs.swipe", e => this._start(e)), m.on(this._element, "pointerup.bs.swipe", e => this._end(e)), this._element.classList.add("pointer-event")) : (m.on(this._element, "touchstart.bs.swipe", e => this._start(e)), m.on(this._element, "touchmove.bs.swipe", e => this._move(e)), m.on(this._element, "touchend.bs.swipe", e => this._end(e)))
            }
            _eventIsPointerPenTouch(e) {
                return this._supportPointerEvents && ("pen" === e.pointerType || "touch" === e.pointerType)
            }
            static isSupported() {
                return "ontouchstart" in document.documentElement || 0 < navigator.maxTouchPoints
            }
        }
        let p = "next",
            y = "prev",
            r = "left",
            g = "right",
            he = "slid" + (Zt = ".bs.carousel"),
            v = "active",
            fe = ".carousel-item",
            pe = (fe, {
                ArrowLeft: g,
                ArrowRight: r
            }),
            me = {
                interval: 5e3,
                keyboard: !0,
                pause: "hover",
                ride: !1,
                touch: !0,
                wrap: !0
            },
            ye = {
                interval: "(number|boolean)",
                keyboard: "boolean",
                pause: "(string|boolean)",
                ride: "(boolean|string)",
                touch: "boolean",
                wrap: "boolean"
            };
        class $t extends Jt {
            constructor(e, t) {
                super(e, t), this._interval = null, this._activeElement = null, this._isSliding = !1, this.touchTimeout = null, this._swipeHelper = null, this._indicatorsElement = f.findOne(".carousel-indicators", this._element), this._addEventListeners(), "carousel" === this._config.ride && this.cycle()
            }
            static get Default() {
                return me
            }
            static get DefaultType() {
                return ye
            }
            static get NAME() {
                return "carousel"
            }
            next() {
                this._slide(p)
            }
            nextWhenVisible() {
                !document.hidden && i(this._element) && this.next()
            }
            prev() {
                this._slide(y)
            }
            pause() {
                this._isSliding && Z(this._element), this._clearInterval()
            }
            cycle() {
                this._clearInterval(), this._updateInterval(), this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)
            }
            _maybeEnableCycle() {
                this._config.ride && (this._isSliding ? m.one(this._element, he, () => this.cycle()) : this.cycle())
            }
            to(e) {
                var t, r = this._getItems();
                e > r.length - 1 || e < 0 || (this._isSliding ? m.one(this._element, he, () => this.to(e)) : (t = this._getItemIndex(this._getActive())) !== e && (t = t < e ? p : y, this._slide(t, r[e])))
            }
            dispose() {
                this._swipeHelper && this._swipeHelper.dispose(), super.dispose()
            }
            _configAfterMerge(e) {
                return e.defaultInterval = e.interval, e
            }
            _addEventListeners() {
                this._config.keyboard && m.on(this._element, "keydown.bs.carousel", e => this._keydown(e)), "hover" === this._config.pause && (m.on(this._element, "mouseenter.bs.carousel", () => this.pause()), m.on(this._element, "mouseleave.bs.carousel", () => this._maybeEnableCycle())), this._config.touch && Co.isSupported() && this._addTouchEventListeners()
            }
            _addTouchEventListeners() {
                for (var e of f.find(".carousel-item img", this._element)) m.on(e, "dragstart.bs.carousel", e => e.preventDefault());
                var t = {
                    leftCallback: () => this._slide(this._directionToOrder(r)),
                    rightCallback: () => this._slide(this._directionToOrder(g)),
                    endCallback: () => {
                        "hover" === this._config.pause && (this.pause(), this.touchTimeout && clearTimeout(this.touchTimeout), this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), 500 + this._config.interval))
                    }
                };
                this._swipeHelper = new Co(this._element, t)
            }
            _keydown(e) {
                var t;
                /input|textarea/i.test(e.target.tagName) || (t = pe[e.key]) && (e.preventDefault(), this._slide(this._directionToOrder(t)))
            }
            _getItemIndex(e) {
                return this._getItems().indexOf(e)
            }
            _setActiveIndicatorElement(e) {
                var t;
                this._indicatorsElement && ((t = f.findOne(".active", this._indicatorsElement)).classList.remove(v), t.removeAttribute("aria-current"), t = f.findOne(`[data-bs-slide-to="${e}"]`, this._indicatorsElement)) && (t.classList.add(v), t.setAttribute("aria-current", "true"))
            }
            _updateInterval() {
                var e = this._activeElement || this._getActive();
                e && (e = Number.parseInt(e.getAttribute("data-bs-interval"), 10), this._config.interval = e || this._config.defaultInterval)
            }
            _slide(t, i = null) {
                if (!this._isSliding) {
                    let n = this._getActive();
                    var a = t === p;
                    let s = i || ee(this._getItems(), n, a, this._config.wrap);
                    if (s !== n) {
                        let r = this._getItemIndex(s),
                            o = e => m.trigger(this._element, e, {
                                relatedTarget: s,
                                direction: this._orderToDirection(t),
                                from: this._getItemIndex(n),
                                to: r
                            });
                        i = o("slide.bs.carousel");
                        if (!i.defaultPrevented && n && s) {
                            i = Boolean(this._interval);
                            this.pause(), this._isSliding = !0, this._setActiveIndicatorElement(r), this._activeElement = s;
                            let e = a ? "carousel-item-start" : "carousel-item-end",
                                t = a ? "carousel-item-next" : "carousel-item-prev";
                            s.classList.add(t), c(s), n.classList.add(e), s.classList.add(e);
                            this._queueCallback(() => {
                                s.classList.remove(e, t), s.classList.add(v), n.classList.remove(v, t, e), this._isSliding = !1, o(he)
                            }, n, this._isAnimated()), i && this.cycle()
                        }
                    }
                }
            }
            _isAnimated() {
                return this._element.classList.contains("slide")
            }
            _getActive() {
                return f.findOne(".active.carousel-item", this._element)
            }
            _getItems() {
                return f.find(fe, this._element)
            }
            _clearInterval() {
                this._interval && (clearInterval(this._interval), this._interval = null)
            }
            _directionToOrder(e) {
                return u() ? e === r ? y : p : e === r ? p : y
            }
            _orderToDirection(e) {
                return u() ? e === y ? r : g : e === y ? g : r
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = $t.getOrCreateInstance(this, t);
                    if ("number" == typeof t) e.to(t);
                    else if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        m.on(document, "click.bs.carousel.data-api", "[data-bs-slide], [data-bs-slide-to]", function(e) {
            var t = f.getElementFromSelector(this);
            t && t.classList.contains("carousel") && (e.preventDefault(), e = $t.getOrCreateInstance(t), (t = this.getAttribute("data-bs-slide-to")) ? e.to(t) : "next" === h.getDataAttribute(this, "slide") ? e.next() : e.prev(), e._maybeEnableCycle())
        }), m.on(window, "load.bs.carousel.data-api", () => {
            var e;
            for (e of f.find('[data-bs-ride="carousel"]')) $t.getOrCreateInstance(e)
        }), Tt($t);
        let b = "collapse",
            _ = "collapsing",
            ge = (b, b, '[data-bs-toggle="collapse"]'),
            ve = {
                parent: null,
                toggle: !0
            },
            be = {
                parent: "(null|element)",
                toggle: "boolean"
            };
        class Ao extends Jt {
            constructor(e, t) {
                var r;
                super(e, t), this._isTransitioning = !1, this._triggerArray = [];
                for (r of f.find(ge)) {
                    var o = f.getSelectorFromElement(r),
                        n = f.find(o).filter(e => e === this._element);
                    null !== o && n.length && this._triggerArray.push(r)
                }
                this._initializeChildren(), this._config.parent || this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), this._config.toggle && this.toggle()
            }
            static get Default() {
                return ve
            }
            static get DefaultType() {
                return be
            }
            static get NAME() {
                return "collapse"
            }
            toggle() {
                this._isShown() ? this.hide() : this.show()
            }
            show() {
                if (!this._isTransitioning && !this._isShown()) {
                    let t = [];
                    if (!(t = this._config.parent ? this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(e => e !== this._element).map(e => Ao.getOrCreateInstance(e, {
                            toggle: !1
                        })) : t).length || !t[0]._isTransitioning) {
                        var r = m.trigger(this._element, "show.bs.collapse");
                        if (!r.defaultPrevented) {
                            for (var o of t) o.hide();
                            let e = this._getDimension();
                            this._element.classList.remove(b), this._element.classList.add(_), this._element.style[e] = 0, this._addAriaAndCollapsedClass(this._triggerArray, !0), this._isTransitioning = !0;
                            r = "scroll" + (e[0].toUpperCase() + e.slice(1));
                            this._queueCallback(() => {
                                this._isTransitioning = !1, this._element.classList.remove(_), this._element.classList.add(b, "show"), this._element.style[e] = "", m.trigger(this._element, "shown.bs.collapse")
                            }, this._element, !0), this._element.style[e] = this._element[r] + "px"
                        }
                    }
                }
            }
            hide() {
                if (!this._isTransitioning && this._isShown()) {
                    var e = m.trigger(this._element, "hide.bs.collapse");
                    if (!e.defaultPrevented) {
                        var t, e = this._getDimension();
                        this._element.style[e] = this._element.getBoundingClientRect()[e] + "px", c(this._element), this._element.classList.add(_), this._element.classList.remove(b, "show");
                        for (t of this._triggerArray) {
                            var r = f.getElementFromSelector(t);
                            r && !this._isShown(r) && this._addAriaAndCollapsedClass([t], !1)
                        }
                        this._isTransitioning = !0;
                        this._element.style[e] = "", this._queueCallback(() => {
                            this._isTransitioning = !1, this._element.classList.remove(_), this._element.classList.add(b), m.trigger(this._element, "hidden.bs.collapse")
                        }, this._element, !0)
                    }
                }
            }
            _isShown(e = this._element) {
                return e.classList.contains("show")
            }
            _configAfterMerge(e) {
                return e.toggle = Boolean(e.toggle), e.parent = n(e.parent), e
            }
            _getDimension() {
                return this._element.classList.contains("collapse-horizontal") ? "width" : "height"
            }
            _initializeChildren() {
                var e;
                if (this._config.parent)
                    for (e of this._getFirstLevelChildren(ge)) {
                        var t = f.getElementFromSelector(e);
                        t && this._addAriaAndCollapsedClass([e], this._isShown(t))
                    }
            }
            _getFirstLevelChildren(e) {
                let t = f.find(":scope .collapse .collapse", this._config.parent);
                return f.find(e, this._config.parent).filter(e => !t.includes(e))
            }
            _addAriaAndCollapsedClass(e, t) {
                if (e.length)
                    for (var r of e) r.classList.toggle("collapsed", !t), r.setAttribute("aria-expanded", t)
            }
            static jQueryInterface(t) {
                let r = {};
                return "string" == typeof t && /show|hide/.test(t) && (r.toggle = !1), this.each(function() {
                    var e = Ao.getOrCreateInstance(this, r);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        m.on(document, "click.bs.collapse.data-api", ge, function(e) {
            ("A" === e.target.tagName || e.delegateTarget && "A" === e.delegateTarget.tagName) && e.preventDefault();
            for (var t of f.getMultipleElementsFromSelector(this)) Ao.getOrCreateInstance(t, {
                toggle: !1
            }).toggle()
        }), Tt(Ao);
        var Zt, Kt = ".data-api",
            yo = "click" + (Zt = ".bs.dropdown") + Kt,
            Zt = "keydown" + Zt + Kt;
        let x = "show",
            w = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',
            j = (w, ".dropdown-menu"),
            _e = u() ? "top-end" : "top-start",
            xe = u() ? "top-start" : "top-end",
            we = u() ? "bottom-end" : "bottom-start",
            je = u() ? "bottom-start" : "bottom-end",
            Se = u() ? "left-start" : "right-start",
            Te = u() ? "right-start" : "left-start",
            Ee = {
                autoClose: !0,
                boundary: "clippingParents",
                display: "dynamic",
                offset: [0, 2],
                popperConfig: null,
                reference: "toggle"
            },
            ke = {
                autoClose: "(boolean|string)",
                boundary: "(string|element)",
                display: "string",
                offset: "(array|string|function)",
                popperConfig: "(null|object|function)",
                reference: "(string|element|object)"
            };
        class er extends Jt {
            constructor(e, t) {
                super(e, t), this._popper = null, this._parent = this._element.parentNode, this._menu = f.next(this._element, j)[0] || f.prev(this._element, j)[0] || f.findOne(j, this._parent), this._inNavbar = this._detectNavbar()
            }
            static get Default() {
                return Ee
            }
            static get DefaultType() {
                return ke
            }
            static get NAME() {
                return "dropdown"
            }
            toggle() {
                return this._isShown() ? this.hide() : this.show()
            }
            show() {
                if (!a(this._element) && !this._isShown()) {
                    var e = {
                            relatedTarget: this._element
                        },
                        t = m.trigger(this._element, "show.bs.dropdown", e);
                    if (!t.defaultPrevented) {
                        if (this._createPopper(), "ontouchstart" in document.documentElement && !this._parent.closest(".navbar-nav"))
                            for (var r of [].concat(...document.body.children)) m.on(r, "mouseover", l);
                        this._element.focus(), this._element.setAttribute("aria-expanded", !0), this._menu.classList.add(x), this._element.classList.add(x), m.trigger(this._element, "shown.bs.dropdown", e)
                    }
                }
            }
            hide() {
                var e;
                !a(this._element) && this._isShown() && (e = {
                    relatedTarget: this._element
                }, this._completeHide(e))
            }
            dispose() {
                this._popper && this._popper.destroy(), super.dispose()
            }
            update() {
                this._inNavbar = this._detectNavbar(), this._popper && this._popper.update()
            }
            _completeHide(e) {
                var t = m.trigger(this._element, "hide.bs.dropdown", e);
                if (!t.defaultPrevented) {
                    if ("ontouchstart" in document.documentElement)
                        for (var r of [].concat(...document.body.children)) m.off(r, "mouseover", l);
                    this._popper && this._popper.destroy(), this._menu.classList.remove(x), this._element.classList.remove(x), this._element.setAttribute("aria-expanded", "false"), h.removeDataAttribute(this._menu, "popper"), m.trigger(this._element, "hidden.bs.dropdown", e)
                }
            }
            _getConfig(e) {
                if ("object" != typeof(e = super._getConfig(e)).reference || s(e.reference) || "function" == typeof e.reference.getBoundingClientRect) return e;
                throw new TypeError("dropdown".toUpperCase() + ': Option "reference" provided type "object" without a required "getBoundingClientRect" method.')
            }
            _createPopper() {
                if (void 0 === sr) throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
                let e = this._element;
                "parent" === this._config.reference ? e = this._parent : s(this._config.reference) ? e = n(this._config.reference) : "object" == typeof this._config.reference && (e = this._config.reference);
                var t = this._getPopperConfig();
                this._popper = ro(e, this._menu, t)
            }
            _isShown() {
                return this._menu.classList.contains(x)
            }
            _getPlacement() {
                var e, t = this._parent;
                return t.classList.contains("dropend") ? Se : t.classList.contains("dropstart") ? Te : t.classList.contains("dropup-center") ? "top" : t.classList.contains("dropdown-center") ? "bottom" : (e = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim(), t.classList.contains("dropup") ? e ? xe : _e : e ? je : we)
            }
            _detectNavbar() {
                return null !== this._element.closest(".navbar")
            }
            _getOffset() {
                let t = this._config.offset;
                return "string" == typeof t ? t.split(",").map(e => Number.parseInt(e, 10)) : "function" == typeof t ? e => t(e, this._element) : t
            }
            _getPopperConfig() {
                var e = {
                    placement: this._getPlacement(),
                    modifiers: [{
                        name: "preventOverflow",
                        options: {
                            boundary: this._config.boundary
                        }
                    }, {
                        name: "offset",
                        options: {
                            offset: this._getOffset()
                        }
                    }]
                };
                return !this._inNavbar && "static" !== this._config.display || (h.setDataAttribute(this._menu, "popper", "static"), e.modifiers = [{
                    name: "applyStyles",
                    enabled: !1
                }]), {
                    ...e,
                    ...d(this._config.popperConfig, [e])
                }
            }
            _selectMenuItem({
                key: e,
                target: t
            }) {
                var r = f.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", this._menu).filter(e => i(e));
                r.length && ee(r, t, "ArrowDown" === e, !r.includes(t)).focus()
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = er.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
            static clearMenus(e) {
                var t;
                if (2 !== e.button && ("keyup" !== e.type || "Tab" === e.key))
                    for (t of f.find('[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled).show')) {
                        var r, o, n = er.getInstance(t);
                        n && !1 !== n._config.autoClose && (r = (o = e.composedPath()).includes(n._menu), o.includes(n._element) || "inside" === n._config.autoClose && !r || "outside" === n._config.autoClose && r || n._menu.contains(e.target) && ("keyup" === e.type && "Tab" === e.key || /input|select|option|textarea|form/i.test(e.target.tagName)) || (o = {
                            relatedTarget: n._element
                        }, "click" === e.type && (o.clickEvent = e), n._completeHide(o)))
                    }
            }
            static dataApiKeydownHandler(e) {
                var t = /input|textarea/i.test(e.target.tagName),
                    r = "Escape" === e.key,
                    o = ["ArrowUp", "ArrowDown"].includes(e.key);
                !o && !r || t && !r || (e.preventDefault(), t = this.matches(w) ? this : f.prev(this, w)[0] || f.next(this, w)[0] || f.findOne(w, e.delegateTarget.parentNode), r = er.getOrCreateInstance(t), o ? (e.stopPropagation(), r.show(), r._selectMenuItem(e)) : r._isShown() && (e.stopPropagation(), r.hide(), t.focus()))
            }
        }
        m.on(document, Zt, w, er.dataApiKeydownHandler), m.on(document, Zt, j, er.dataApiKeydownHandler), m.on(document, yo, er.clearMenus), m.on(document, "keyup.bs.dropdown.data-api", er.clearMenus), m.on(document, yo, w, function(e) {
            e.preventDefault(), er.getOrCreateInstance(this).toggle()
        }), Tt(er);
        let Me = "mousedown.bs.backdrop",
            Oe = {
                className: "modal-backdrop",
                clickCallback: null,
                isAnimated: !1,
                isVisible: !0,
                rootElement: "body"
            },
            Ce = {
                className: "string",
                clickCallback: "(function|null)",
                isAnimated: "boolean",
                isVisible: "boolean",
                rootElement: "(element|string)"
            };
        class Lo extends Qt {
            constructor(e) {
                super(), this._config = this._getConfig(e), this._isAppended = !1, this._element = null
            }
            static get Default() {
                return Oe
            }
            static get DefaultType() {
                return Ce
            }
            static get NAME() {
                return "backdrop"
            }
            show(e) {
                var t;
                this._config.isVisible ? (this._append(), t = this._getElement(), this._config.isAnimated && c(t), t.classList.add("show"), this._emulateAnimation(() => {
                    d(e)
                })) : d(e)
            }
            hide(e) {
                this._config.isVisible ? (this._getElement().classList.remove("show"), this._emulateAnimation(() => {
                    this.dispose(), d(e)
                })) : d(e)
            }
            dispose() {
                this._isAppended && (m.off(this._element, Me), this._element.remove(), this._isAppended = !1)
            }
            _getElement() {
                var e;
                return this._element || ((e = document.createElement("div")).className = this._config.className, this._config.isAnimated && e.classList.add("fade"), this._element = e), this._element
            }
            _configAfterMerge(e) {
                return e.rootElement = n(e.rootElement), e
            }
            _append() {
                var e;
                this._isAppended || (e = this._getElement(), this._config.rootElement.append(e), m.on(e, Me, () => {
                    d(this._config.clickCallback)
                }), this._isAppended = !0)
            }
            _emulateAnimation(e) {
                $(e, this._getElement(), this._config.isAnimated)
            }
        }
        let t = ".bs.focustrap",
            Ae = (t, t, {
                autofocus: !0,
                trapElement: null
            }),
            Le = {
                autofocus: "boolean",
                trapElement: "element"
            };
        class Po extends Qt {
            constructor(e) {
                super(), this._config = this._getConfig(e), this._isActive = !1, this._lastTabNavDirection = null
            }
            static get Default() {
                return Ae
            }
            static get DefaultType() {
                return Le
            }
            static get NAME() {
                return "focustrap"
            }
            activate() {
                this._isActive || (this._config.autofocus && this._config.trapElement.focus(), m.off(document, t), m.on(document, "focusin.bs.focustrap", e => this._handleFocusin(e)), m.on(document, "keydown.tab.bs.focustrap", e => this._handleKeydown(e)), this._isActive = !0)
            }
            deactivate() {
                this._isActive && (this._isActive = !1, m.off(document, t))
            }
            _handleFocusin(e) {
                var t = this._config.trapElement;
                e.target === document || e.target === t || t.contains(e.target) || (0 === (e = f.focusableChildren(t)).length ? t : "backward" === this._lastTabNavDirection ? e[e.length - 1] : e[0]).focus()
            }
            _handleKeydown(e) {
                "Tab" === e.key && (this._lastTabNavDirection = e.shiftKey ? "backward" : "forward")
            }
        }
        let Pe = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",
            Ie = ".sticky-top",
            S = "padding-right",
            Re = "margin-right";
        class Io {
            constructor() {
                this._element = document.body
            }
            getWidth() {
                var e = document.documentElement.clientWidth;
                return Math.abs(window.innerWidth - e)
            }
            hide() {
                let t = this.getWidth();
                this._disableOverFlow(), this._setElementAttributes(this._element, S, e => e + t), this._setElementAttributes(Pe, S, e => e + t), this._setElementAttributes(Ie, Re, e => e - t)
            }
            reset() {
                this._resetElementAttributes(this._element, "overflow"), this._resetElementAttributes(this._element, S), this._resetElementAttributes(Pe, S), this._resetElementAttributes(Ie, Re)
            }
            isOverflowing() {
                return 0 < this.getWidth()
            }
            _disableOverFlow() {
                this._saveInitialAttribute(this._element, "overflow"), this._element.style.overflow = "hidden"
            }
            _setElementAttributes(e, r, o) {
                let n = this.getWidth();
                this._applyManipulationCallback(e, e => {
                    var t;
                    e !== this._element && window.innerWidth > e.clientWidth + n || (this._saveInitialAttribute(e, r), t = window.getComputedStyle(e).getPropertyValue(r), e.style.setProperty(r, o(Number.parseFloat(t)) + "px"))
                })
            }
            _saveInitialAttribute(e, t) {
                var r = e.style.getPropertyValue(t);
                r && h.setDataAttribute(e, t, r)
            }
            _resetElementAttributes(e, r) {
                this._applyManipulationCallback(e, e => {
                    var t = h.getDataAttribute(e, r);
                    null === t ? e.style.removeProperty(r) : (h.removeDataAttribute(e, r), e.style.setProperty(r, t))
                })
            }
            _applyManipulationCallback(e, t) {
                if (s(e)) t(e);
                else
                    for (var r of f.find(e, this._element)) t(r)
            }
        }
        let T = ".bs.modal",
            De = (T, T, "hidden" + T),
            Fe = "show" + T,
            Ne = (T, T, T, T, T, T, "modal-open"),
            Ue = "modal-static",
            Be = {
                backdrop: !0,
                focus: !0,
                keyboard: !0
            },
            Ge = {
                backdrop: "(boolean|string)",
                focus: "boolean",
                keyboard: "boolean"
            };
        class tr extends Jt {
            constructor(e, t) {
                super(e, t), this._dialog = f.findOne(".modal-dialog", this._element), this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._isShown = !1, this._isTransitioning = !1, this._scrollBar = new Io, this._addEventListeners()
            }
            static get Default() {
                return Be
            }
            static get DefaultType() {
                return Ge
            }
            static get NAME() {
                return "modal"
            }
            toggle(e) {
                return this._isShown ? this.hide() : this.show(e)
            }
            show(e) {
                this._isShown || this._isTransitioning || m.trigger(this._element, Fe, {
                    relatedTarget: e
                }).defaultPrevented || (this._isShown = !0, this._isTransitioning = !0, this._scrollBar.hide(), document.body.classList.add(Ne), this._adjustDialog(), this._backdrop.show(() => this._showElement(e)))
            }
            hide() {
                !this._isShown || this._isTransitioning || m.trigger(this._element, "hide.bs.modal").defaultPrevented || (this._isShown = !1, this._isTransitioning = !0, this._focustrap.deactivate(), this._element.classList.remove("show"), this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()))
            }
            dispose() {
                m.off(window, T), m.off(this._dialog, T), this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose()
            }
            handleUpdate() {
                this._adjustDialog()
            }
            _initializeBackDrop() {
                return new Lo({
                    isVisible: Boolean(this._config.backdrop),
                    isAnimated: this._isAnimated()
                })
            }
            _initializeFocusTrap() {
                return new Po({
                    trapElement: this._element
                })
            }
            _showElement(e) {
                document.body.contains(this._element) || document.body.append(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), this._element.scrollTop = 0;
                var t = f.findOne(".modal-body", this._dialog);
                t && (t.scrollTop = 0), c(this._element), this._element.classList.add("show");
                this._queueCallback(() => {
                    this._config.focus && this._focustrap.activate(), this._isTransitioning = !1, m.trigger(this._element, "shown.bs.modal", {
                        relatedTarget: e
                    })
                }, this._dialog, this._isAnimated())
            }
            _addEventListeners() {
                m.on(this._element, "keydown.dismiss.bs.modal", e => {
                    "Escape" === e.key && (this._config.keyboard ? this.hide() : this._triggerBackdropTransition())
                }), m.on(window, "resize.bs.modal", () => {
                    this._isShown && !this._isTransitioning && this._adjustDialog()
                }), m.on(this._element, "mousedown.dismiss.bs.modal", t => {
                    m.one(this._element, "click.dismiss.bs.modal", e => {
                        this._element === t.target && this._element === e.target && ("static" === this._config.backdrop ? this._triggerBackdropTransition() : this._config.backdrop && this.hide())
                    })
                })
            }
            _hideModal() {
                this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._isTransitioning = !1, this._backdrop.hide(() => {
                    document.body.classList.remove(Ne), this._resetAdjustments(), this._scrollBar.reset(), m.trigger(this._element, De)
                })
            }
            _isAnimated() {
                return this._element.classList.contains("fade")
            }
            _triggerBackdropTransition() {
                var t = m.trigger(this._element, "hidePrevented.bs.modal");
                if (!t.defaultPrevented) {
                    t = this._element.scrollHeight > document.documentElement.clientHeight;
                    let e = this._element.style.overflowY;
                    "hidden" === e || this._element.classList.contains(Ue) || (t || (this._element.style.overflowY = "hidden"), this._element.classList.add(Ue), this._queueCallback(() => {
                        this._element.classList.remove(Ue), this._queueCallback(() => {
                            this._element.style.overflowY = e
                        }, this._dialog)
                    }, this._dialog), this._element.focus())
                }
            }
            _adjustDialog() {
                var e, t = this._element.scrollHeight > document.documentElement.clientHeight,
                    r = this._scrollBar.getWidth(),
                    o = 0 < r;
                o && !t && (e = u() ? "paddingLeft" : "paddingRight", this._element.style[e] = r + "px"), !o && t && (e = u() ? "paddingRight" : "paddingLeft", this._element.style[e] = r + "px")
            }
            _resetAdjustments() {
                this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
            }
            static jQueryInterface(t, r) {
                return this.each(function() {
                    var e = tr.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t](r)
                    }
                })
            }
        }
        m.on(document, "click.bs.modal.data-api", '[data-bs-toggle="modal"]', function(e) {
            let t = f.getElementFromSelector(this);
            ["A", "AREA"].includes(this.tagName) && e.preventDefault(), m.one(t, Fe, e => {
                e.defaultPrevented || m.one(t, De, () => {
                    i(this) && this.focus()
                })
            });
            e = f.findOne(".modal.show");
            e && tr.getInstance(e).hide(), tr.getOrCreateInstance(t).toggle(this)
        }), mo(tr), Tt(tr);
        let Ve = ".offcanvas.show",
            ze = "hidePrevented" + (Kt = ".bs.offcanvas"),
            He = "hidden" + Kt,
            We = {
                backdrop: !0,
                keyboard: !0,
                scroll: !1
            },
            qe = {
                backdrop: "(boolean|string)",
                keyboard: "boolean",
                scroll: "boolean"
            };
        class rr extends Jt {
            constructor(e, t) {
                super(e, t), this._isShown = !1, this._backdrop = this._initializeBackDrop(), this._focustrap = this._initializeFocusTrap(), this._addEventListeners()
            }
            static get Default() {
                return We
            }
            static get DefaultType() {
                return qe
            }
            static get NAME() {
                return "offcanvas"
            }
            toggle(e) {
                return this._isShown ? this.hide() : this.show(e)
            }
            show(e) {
                this._isShown || m.trigger(this._element, "show.bs.offcanvas", {
                    relatedTarget: e
                }).defaultPrevented || (this._isShown = !0, this._backdrop.show(), this._config.scroll || (new Io).hide(), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), this._element.classList.add("showing"), this._queueCallback(() => {
                    this._config.scroll && !this._config.backdrop || this._focustrap.activate(), this._element.classList.add("show"), this._element.classList.remove("showing"), m.trigger(this._element, "shown.bs.offcanvas", {
                        relatedTarget: e
                    })
                }, this._element, !0))
            }
            hide() {
                this._isShown && !m.trigger(this._element, "hide.bs.offcanvas").defaultPrevented && (this._focustrap.deactivate(), this._element.blur(), this._isShown = !1, this._element.classList.add("hiding"), this._backdrop.hide(), this._queueCallback(() => {
                    this._element.classList.remove("show", "hiding"), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._config.scroll || (new Io).reset(), m.trigger(this._element, He)
                }, this._element, !0))
            }
            dispose() {
                this._backdrop.dispose(), this._focustrap.deactivate(), super.dispose()
            }
            _initializeBackDrop() {
                var e = Boolean(this._config.backdrop);
                return new Lo({
                    className: "offcanvas-backdrop",
                    isVisible: e,
                    isAnimated: !0,
                    rootElement: this._element.parentNode,
                    clickCallback: e ? () => {
                        "static" === this._config.backdrop ? m.trigger(this._element, ze) : this.hide()
                    } : null
                })
            }
            _initializeFocusTrap() {
                return new Po({
                    trapElement: this._element
                })
            }
            _addEventListeners() {
                m.on(this._element, "keydown.dismiss.bs.offcanvas", e => {
                    "Escape" === e.key && (this._config.keyboard ? this.hide() : m.trigger(this._element, ze))
                })
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = rr.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
                        e[t](this)
                    }
                })
            }
        }
        m.on(document, "click.bs.offcanvas.data-api", '[data-bs-toggle="offcanvas"]', function(e) {
            var t = f.getElementFromSelector(this);
            ["A", "AREA"].includes(this.tagName) && e.preventDefault(), a(this) || (m.one(t, He, () => {
                i(this) && this.focus()
            }), (e = f.findOne(Ve)) && e !== t && rr.getInstance(e).hide(), rr.getOrCreateInstance(t).toggle(this))
        }), m.on(window, "load.bs.offcanvas.data-api", () => {
            for (var e of f.find(Ve)) rr.getOrCreateInstance(e).show()
        }), m.on(window, "resize.bs.offcanvas", () => {
            for (var e of f.find("[aria-modal][class*=show][class*=offcanvas-]")) "fixed" !== getComputedStyle(e).position && rr.getOrCreateInstance(e).hide()
        }), mo(rr), Tt(rr), Zt = {
            "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
            a: ["target", "href", "title", "rel"],
            area: [],
            b: [],
            br: [],
            col: [],
            code: [],
            dd: [],
            div: [],
            dl: [],
            dt: [],
            em: [],
            hr: [],
            h1: [],
            h2: [],
            h3: [],
            h4: [],
            h5: [],
            h6: [],
            i: [],
            img: ["src", "srcset", "alt", "title", "width", "height"],
            li: [],
            ol: [],
            p: [],
            pre: [],
            s: [],
            small: [],
            span: [],
            sub: [],
            sup: [],
            strong: [],
            u: [],
            ul: []
        };
        let Xe = new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]),
            Ye = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;

        function go(e, t, r) {
            if (!e.length) return e;
            if (r && "function" == typeof r) return r(e);
            var o, r = (new window.DOMParser).parseFromString(e, "text/html");
            for (o of [].concat(...r.body.querySelectorAll("*"))) {
                var n = o.nodeName.toLowerCase();
                if (Object.keys(t).includes(n)) {
                    var s, i = [].concat(...o.attributes),
                        a = [].concat(t["*"] || [], t[n] || []);
                    for (s of i)((e, t) => {
                        let r = e.nodeName.toLowerCase();
                        return t.includes(r) ? !Xe.has(r) || Boolean(Ye.test(e.nodeValue)) : t.filter(e => e instanceof RegExp).some(e => e.test(r))
                    })(s, a) || o.removeAttribute(s.nodeName)
                } else o.remove()
            }
            return r.body.innerHTML
        }
        let Ze = {
                allowList: Zt,
                content: {},
                extraClass: "",
                html: !1,
                sanitize: !0,
                sanitizeFn: null,
                template: "<div></div>"
            },
            Ke = {
                allowList: "object",
                content: "object",
                extraClass: "(string|function)",
                html: "boolean",
                sanitize: "boolean",
                sanitizeFn: "(null|function)",
                template: "string"
            },
            Qe = {
                entry: "(string|element|function|null)",
                selector: "(string|element)"
            };
        class Ro extends Qt {
            constructor(e) {
                super(), this._config = this._getConfig(e)
            }
            static get Default() {
                return Ze
            }
            static get DefaultType() {
                return Ke
            }
            static get NAME() {
                return "TemplateFactory"
            }
            getContent() {
                return Object.values(this._config.content).map(e => this._resolvePossibleFunction(e)).filter(Boolean)
            }
            hasContent() {
                return 0 < this.getContent().length
            }
            changeContent(e) {
                return this._checkContent(e), this._config.content = {
                    ...this._config.content,
                    ...e
                }, this
            }
            toHtml() {
                var e, t, r = document.createElement("div");
                r.innerHTML = this._maybeSanitize(this._config.template);
                for ([e, t] of Object.entries(this._config.content)) this._setContent(r, t, e);
                var o = r.children[0],
                    n = this._resolvePossibleFunction(this._config.extraClass);
                return n && o.classList.add(...n.split(" ")), o
            }
            _typeCheckConfig(e) {
                super._typeCheckConfig(e), this._checkContent(e.content)
            }
            _checkContent(e) {
                for (var [t, r] of Object.entries(e)) super._typeCheckConfig({
                    selector: t,
                    entry: r
                }, Qe)
            }
            _setContent(e, t, r) {
                r = f.findOne(r, e);
                r && ((t = this._resolvePossibleFunction(t)) ? s(t) ? this._putElementInTemplate(n(t), r) : this._config.html ? r.innerHTML = this._maybeSanitize(t) : r.textContent = t : r.remove())
            }
            _maybeSanitize(e) {
                return this._config.sanitize ? go(e, this._config.allowList, this._config.sanitizeFn) : e
            }
            _resolvePossibleFunction(e) {
                return d(e, [this])
            }
            _putElementInTemplate(e, t) {
                this._config.html ? (t.innerHTML = "", t.append(e)) : t.textContent = e.textContent
            }
        }
        let Je = new Set(["sanitize", "allowList", "sanitizeFn"]),
            E = "show",
            $e = "hide.bs.modal",
            k = "hover",
            et = {
                AUTO: "auto",
                TOP: "top",
                RIGHT: u() ? "left" : "right",
                BOTTOM: "bottom",
                LEFT: u() ? "right" : "left"
            },
            tt = {
                allowList: Zt,
                animation: !0,
                boundary: "clippingParents",
                container: !1,
                customClass: "",
                delay: 0,
                fallbackPlacements: ["top", "right", "bottom", "left"],
                html: !1,
                offset: [0, 6],
                placement: "top",
                popperConfig: null,
                sanitize: !0,
                sanitizeFn: null,
                selector: !1,
                template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
                title: "",
                trigger: "hover focus"
            },
            rt = {
                allowList: "object",
                animation: "boolean",
                boundary: "(string|element)",
                container: "(string|element|boolean)",
                customClass: "(string|function)",
                delay: "(number|object)",
                fallbackPlacements: "array",
                html: "boolean",
                offset: "(array|string|function)",
                placement: "(string|function)",
                popperConfig: "(null|object|function)",
                sanitize: "boolean",
                sanitizeFn: "(null|function)",
                selector: "(string|boolean)",
                template: "string",
                title: "(string|element|function)",
                trigger: "string"
            };
        class or extends Jt {
            constructor(e, t) {
                if (void 0 === sr) throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
                super(e, t), this._isEnabled = !0, this._timeout = 0, this._isHovered = null, this._activeTrigger = {}, this._popper = null, this._templateFactory = null, this._newContent = null, this.tip = null, this._setListeners(), this._config.selector || this._fixTitle()
            }
            static get Default() {
                return tt
            }
            static get DefaultType() {
                return rt
            }
            static get NAME() {
                return "tooltip"
            }
            enable() {
                this._isEnabled = !0
            }
            disable() {
                this._isEnabled = !1
            }
            toggleEnabled() {
                this._isEnabled = !this._isEnabled
            }
            toggle() {
                this._isEnabled && (this._activeTrigger.click = !this._activeTrigger.click, this._isShown() ? this._leave() : this._enter())
            }
            dispose() {
                clearTimeout(this._timeout), m.off(this._element.closest(".modal"), $e, this._hideModalHandler), this._element.getAttribute("data-bs-original-title") && this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")), this._disposePopper(), super.dispose()
            }
            show() {
                if ("none" === this._element.style.display) throw new Error("Please use show on visible elements");
                if (this._isWithContent() && this._isEnabled) {
                    var e = m.trigger(this._element, this.constructor.eventName("show")),
                        t = (K(this._element) || this._element.ownerDocument.documentElement).contains(this._element);
                    if (!e.defaultPrevented && t) {
                        this._disposePopper();
                        e = this._getTipElement(), t = (this._element.setAttribute("aria-describedby", e.getAttribute("id")), this._config).container;
                        if (this._element.ownerDocument.documentElement.contains(this.tip) || (t.append(e), m.trigger(this._element, this.constructor.eventName("inserted"))), this._popper = this._createPopper(e), e.classList.add(E), "ontouchstart" in document.documentElement)
                            for (var r of [].concat(...document.body.children)) m.on(r, "mouseover", l);
                        this._queueCallback(() => {
                            m.trigger(this._element, this.constructor.eventName("shown")), !1 === this._isHovered && this._leave(), this._isHovered = !1
                        }, this.tip, this._isAnimated())
                    }
                }
            }
            hide() {
                if (this._isShown()) {
                    var e = m.trigger(this._element, this.constructor.eventName("hide"));
                    if (!e.defaultPrevented) {
                        if (this._getTipElement().classList.remove(E), "ontouchstart" in document.documentElement)
                            for (var t of [].concat(...document.body.children)) m.off(t, "mouseover", l);
                        this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger[k] = !1, this._isHovered = null;
                        this._queueCallback(() => {
                            this._isWithActiveTrigger() || (this._isHovered || this._disposePopper(), this._element.removeAttribute("aria-describedby"), m.trigger(this._element, this.constructor.eventName("hidden")))
                        }, this.tip, this._isAnimated())
                    }
                }
            }
            update() {
                this._popper && this._popper.update()
            }
            _isWithContent() {
                return Boolean(this._getTitle())
            }
            _getTipElement() {
                return this.tip || (this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())), this.tip
            }
            _createTipElement(e) {
                e = this._getTemplateFactory(e).toHtml();
                if (!e) return null;
                e.classList.remove("fade", E), e.classList.add(`bs-${this.constructor.NAME}-auto`);
                var t = (e => {
                    for (; e += Math.floor(1e6 * Math.random()), document.getElementById(e););
                    return e
                })(this.constructor.NAME).toString();
                return e.setAttribute("id", t), this._isAnimated() && e.classList.add("fade"), e
            }
            setContent(e) {
                this._newContent = e, this._isShown() && (this._disposePopper(), this.show())
            }
            _getTemplateFactory(e) {
                return this._templateFactory ? this._templateFactory.changeContent(e) : this._templateFactory = new Ro({
                    ...this._config,
                    content: e,
                    extraClass: this._resolvePossibleFunction(this._config.customClass)
                }), this._templateFactory
            }
            _getContentForTemplate() {
                return {
                    ".tooltip-inner": this._getTitle()
                }
            }
            _getTitle() {
                return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title")
            }
            _initializeOnDelegatedTarget(e) {
                return this.constructor.getOrCreateInstance(e.delegateTarget, this._getDelegateConfig())
            }
            _isAnimated() {
                return this._config.animation || this.tip && this.tip.classList.contains("fade")
            }
            _isShown() {
                return this.tip && this.tip.classList.contains(E)
            }
            _createPopper(e) {
                var t = d(this._config.placement, [this, e, this._element]),
                    t = et[t.toUpperCase()];
                return ro(this._element, e, this._getPopperConfig(t))
            }
            _getOffset() {
                let t = this._config.offset;
                return "string" == typeof t ? t.split(",").map(e => Number.parseInt(e, 10)) : "function" == typeof t ? e => t(e, this._element) : t
            }
            _resolvePossibleFunction(e) {
                return d(e, [this._element])
            }
            _getPopperConfig(e) {
                e = {
                    placement: e,
                    modifiers: [{
                        name: "flip",
                        options: {
                            fallbackPlacements: this._config.fallbackPlacements
                        }
                    }, {
                        name: "offset",
                        options: {
                            offset: this._getOffset()
                        }
                    }, {
                        name: "preventOverflow",
                        options: {
                            boundary: this._config.boundary
                        }
                    }, {
                        name: "arrow",
                        options: {
                            element: `.${this.constructor.NAME}-arrow`
                        }
                    }, {
                        name: "preSetPlacement",
                        enabled: !0,
                        phase: "beforeMain",
                        fn: e => {
                            this._getTipElement().setAttribute("data-popper-placement", e.state.placement)
                        }
                    }]
                };
                return {
                    ...e,
                    ...d(this._config.popperConfig, [e])
                }
            }
            _setListeners() {
                var e, t, r;
                for (e of this._config.trigger.split(" ")) "click" === e ? m.on(this._element, this.constructor.eventName("click"), this._config.selector, e => {
                    this._initializeOnDelegatedTarget(e).toggle()
                }) : "manual" !== e && (t = e === k ? this.constructor.eventName("mouseenter") : this.constructor.eventName("focusin"), r = e === k ? this.constructor.eventName("mouseleave") : this.constructor.eventName("focusout"), m.on(this._element, t, this._config.selector, e => {
                    var t = this._initializeOnDelegatedTarget(e);
                    t._activeTrigger["focusin" === e.type ? "focus" : k] = !0, t._enter()
                }), m.on(this._element, r, this._config.selector, e => {
                    var t = this._initializeOnDelegatedTarget(e);
                    t._activeTrigger["focusout" === e.type ? "focus" : k] = t._element.contains(e.relatedTarget), t._leave()
                }));
                this._hideModalHandler = () => {
                    this._element && this.hide()
                }, m.on(this._element.closest(".modal"), $e, this._hideModalHandler)
            }
            _fixTitle() {
                var e = this._element.getAttribute("title");
                e && (this._element.getAttribute("aria-label") || this._element.textContent.trim() || this._element.setAttribute("aria-label", e), this._element.setAttribute("data-bs-original-title", e), this._element.removeAttribute("title"))
            }
            _enter() {
                this._isShown() || this._isHovered ? this._isHovered = !0 : (this._isHovered = !0, this._setTimeout(() => {
                    this._isHovered && this.show()
                }, this._config.delay.show))
            }
            _leave() {
                this._isWithActiveTrigger() || (this._isHovered = !1, this._setTimeout(() => {
                    this._isHovered || this.hide()
                }, this._config.delay.hide))
            }
            _setTimeout(e, t) {
                clearTimeout(this._timeout), this._timeout = setTimeout(e, t)
            }
            _isWithActiveTrigger() {
                return Object.values(this._activeTrigger).includes(!0)
            }
            _getConfig(e) {
                var t, r = h.getDataAttributes(this._element);
                for (t of Object.keys(r)) Je.has(t) && delete r[t];
                return e = {
                    ...r,
                    ..."object" == typeof e && e ? e : {}
                }, e = this._mergeConfigObj(e), e = this._configAfterMerge(e), this._typeCheckConfig(e), e
            }
            _configAfterMerge(e) {
                return e.container = !1 === e.container ? document.body : n(e.container), "number" == typeof e.delay && (e.delay = {
                    show: e.delay,
                    hide: e.delay
                }), "number" == typeof e.title && (e.title = e.title.toString()), "number" == typeof e.content && (e.content = e.content.toString()), e
            }
            _getDelegateConfig() {
                var e, t, r = {};
                for ([e, t] of Object.entries(this._config)) this.constructor.Default[e] !== t && (r[e] = t);
                return r.selector = !1, r.trigger = "manual", r
            }
            _disposePopper() {
                this._popper && (this._popper.destroy(), this._popper = null), this.tip && (this.tip.remove(), this.tip = null)
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = or.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        Tt(or);
        let ot = {
                ...or.Default,
                content: "",
                offset: [0, 8],
                placement: "right",
                template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
                trigger: "click"
            },
            nt = {
                ...or.DefaultType,
                content: "(null|string|element|function)"
            };
        class Do extends or {
            static get Default() {
                return ot
            }
            static get DefaultType() {
                return nt
            }
            static get NAME() {
                return "popover"
            }
            _isWithContent() {
                return this._getTitle() || this._getContent()
            }
            _getContentForTemplate() {
                return {
                    ".popover-header": this._getTitle(),
                    ".popover-body": this._getContent()
                }
            }
            _getContent() {
                return this._resolvePossibleFunction(this._config.content)
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = Do.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        Tt(Do);
        let st = "click" + (yo = ".bs.scrollspy"),
            M = "active",
            it = "[href]",
            at = {
                offset: null,
                rootMargin: "0px 0px -25%",
                smoothScroll: !1,
                target: null,
                threshold: [.1, .5, 1]
            },
            lt = {
                offset: "(number|null)",
                rootMargin: "string",
                smoothScroll: "boolean",
                target: "element",
                threshold: "array"
            };
        class Fo extends Jt {
            constructor(e, t) {
                super(e, t), this._targetLinks = new Map, this._observableSections = new Map, this._rootElement = "visible" === getComputedStyle(this._element).overflowY ? null : this._element, this._activeTarget = null, this._observer = null, this._previousScrollData = {
                    visibleEntryTop: 0,
                    parentScrollTop: 0
                }, this.refresh()
            }
            static get Default() {
                return at
            }
            static get DefaultType() {
                return lt
            }
            static get NAME() {
                return "scrollspy"
            }
            refresh() {
                this._initializeTargetsAndObservables(), this._maybeEnableSmoothScroll(), this._observer ? this._observer.disconnect() : this._observer = this._getNewObserver();
                for (var e of this._observableSections.values()) this._observer.observe(e)
            }
            dispose() {
                this._observer.disconnect(), super.dispose()
            }
            _configAfterMerge(e) {
                return e.target = n(e.target) || document.body, e.rootMargin = e.offset ? e.offset + "px 0px -30%" : e.rootMargin, "string" == typeof e.threshold && (e.threshold = e.threshold.split(",").map(e => Number.parseFloat(e))), e
            }
            _maybeEnableSmoothScroll() {
                this._config.smoothScroll && (m.off(this._config.target, st), m.on(this._config.target, st, it, e => {
                    var t = this._observableSections.get(e.target.hash);
                    t && (e.preventDefault(), e = this._rootElement || window, t = t.offsetTop - this._element.offsetTop, e.scrollTo ? e.scrollTo({
                        top: t,
                        behavior: "smooth"
                    }) : e.scrollTop = t)
                }))
            }
            _getNewObserver() {
                var e = {
                    root: this._rootElement,
                    threshold: this._config.threshold,
                    rootMargin: this._config.rootMargin
                };
                return new IntersectionObserver(e => this._observerCallback(e), e)
            }
            _observerCallback(e) {
                let t = e => this._targetLinks.get("#" + e.target.id);
                var r, o = e => {
                        this._previousScrollData.visibleEntryTop = e.target.offsetTop, this._process(t(e))
                    },
                    n = (this._rootElement || document.documentElement).scrollTop,
                    s = n >= this._previousScrollData.parentScrollTop;
                this._previousScrollData.parentScrollTop = n;
                for (r of e)
                    if (r.isIntersecting) {
                        var i = r.target.offsetTop >= this._previousScrollData.visibleEntryTop;
                        if (s && i) {
                            if (o(r), n) continue;
                            return
                        }
                        s || i || o(r)
                    } else this._activeTarget = null, this._clearActiveClass(t(r))
            }
            _initializeTargetsAndObservables() {
                var e, t;
                this._targetLinks = new Map, this._observableSections = new Map;
                for (e of f.find(it, this._config.target)) e.hash && !a(e) && (t = f.findOne(decodeURI(e.hash), this._element), i(t)) && (this._targetLinks.set(decodeURI(e.hash), e), this._observableSections.set(e.hash, t))
            }
            _process(e) {
                this._activeTarget !== e && (this._clearActiveClass(this._config.target), (this._activeTarget = e).classList.add(M), this._activateParents(e), m.trigger(this._element, "activate.bs.scrollspy", {
                    relatedTarget: e
                }))
            }
            _activateParents(e) {
                if (e.classList.contains("dropdown-item")) f.findOne(".dropdown-toggle", e.closest(".dropdown")).classList.add(M);
                else
                    for (var t of f.parents(e, ".nav, .list-group"))
                        for (var r of f.prev(t, ".nav-link, .nav-item > .nav-link, .list-group-item")) r.classList.add(M)
            }
            _clearActiveClass(e) {
                var t;
                e.classList.remove(M);
                for (t of f.find("[href].active", e)) t.classList.remove(M)
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = Fo.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        m.on(window, "load.bs.scrollspy.data-api", () => {
            for (var e of f.find('[data-bs-spy="scroll"]')) Fo.getOrCreateInstance(e)
        }), Tt(Fo);
        let ct = "ArrowRight",
            ut = "active",
            dt = ".dropdown-toggle",
            ht = (dt, '.nav-link:not(.dropdown-toggle), .list-group-item:not(.dropdown-toggle), [role="tab"]:not(.dropdown-toggle), ' + (Kt = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'));
        class nr extends Jt {
            constructor(e) {
                super(e), this._parent = this._element.closest('.list-group, .nav, [role="tablist"]'), this._parent && (this._setInitialAttributes(this._parent, this._getChildren()), m.on(this._element, "keydown.bs.tab", e => this._keydown(e)))
            }
            static get NAME() {
                return "tab"
            }
            show() {
                var e, t, r = this._element;
                this._elemIsActive(r) || (t = (e = this._getActiveElem()) ? m.trigger(e, "hide.bs.tab", {
                    relatedTarget: r
                }) : null, m.trigger(r, "show.bs.tab", {
                    relatedTarget: e
                }).defaultPrevented) || t && t.defaultPrevented || (this._deactivate(e, r), this._activate(r, e))
            }
            _activate(e, t) {
                e && (e.classList.add(ut), this._activate(f.getElementFromSelector(e)), this._queueCallback(() => {
                    "tab" !== e.getAttribute("role") ? e.classList.add("show") : (e.removeAttribute("tabindex"), e.setAttribute("aria-selected", !0), this._toggleDropDown(e, !0), m.trigger(e, "shown.bs.tab", {
                        relatedTarget: t
                    }))
                }, e, e.classList.contains("fade")))
            }
            _deactivate(e, t) {
                e && (e.classList.remove(ut), e.blur(), this._deactivate(f.getElementFromSelector(e)), this._queueCallback(() => {
                    "tab" !== e.getAttribute("role") ? e.classList.remove("show") : (e.setAttribute("aria-selected", !1), e.setAttribute("tabindex", "-1"), this._toggleDropDown(e, !1), m.trigger(e, "hidden.bs.tab", {
                        relatedTarget: t
                    }))
                }, e, e.classList.contains("fade")))
            }
            _keydown(t) {
                if (["ArrowLeft", ct, "ArrowUp", "ArrowDown", "Home", "End"].includes(t.key)) {
                    t.stopPropagation(), t.preventDefault();
                    var r, o = this._getChildren().filter(e => !a(e));
                    let e;
                    (e = ["Home", "End"].includes(t.key) ? o["Home" === t.key ? 0 : o.length - 1] : (r = [ct, "ArrowDown"].includes(t.key), ee(o, t.target, r, !0))) && (e.focus({
                        preventScroll: !0
                    }), nr.getOrCreateInstance(e).show())
                }
            }
            _getChildren() {
                return f.find(ht, this._parent)
            }
            _getActiveElem() {
                return this._getChildren().find(e => this._elemIsActive(e)) || null
            }
            _setInitialAttributes(e, t) {
                this._setAttributeIfNotExists(e, "role", "tablist");
                for (var r of t) this._setInitialAttributesOnChild(r)
            }
            _setInitialAttributesOnChild(e) {
                e = this._getInnerElement(e);
                var t = this._elemIsActive(e),
                    r = this._getOuterElement(e);
                e.setAttribute("aria-selected", t), r !== e && this._setAttributeIfNotExists(r, "role", "presentation"), t || e.setAttribute("tabindex", "-1"), this._setAttributeIfNotExists(e, "role", "tab"), this._setInitialAttributesOnTargetPanel(e)
            }
            _setInitialAttributesOnTargetPanel(e) {
                var t = f.getElementFromSelector(e);
                t && (this._setAttributeIfNotExists(t, "role", "tabpanel"), e.id) && this._setAttributeIfNotExists(t, "aria-labelledby", "" + e.id)
            }
            _toggleDropDown(e, r) {
                let o = this._getOuterElement(e);
                o.classList.contains("dropdown") && ((e = (e, t) => {
                    e = f.findOne(e, o);
                    e && e.classList.toggle(t, r)
                })(dt, ut), e(".dropdown-menu", "show"), o.setAttribute("aria-expanded", r))
            }
            _setAttributeIfNotExists(e, t, r) {
                e.hasAttribute(t) || e.setAttribute(t, r)
            }
            _elemIsActive(e) {
                return e.classList.contains(ut)
            }
            _getInnerElement(e) {
                return e.matches(ht) ? e : f.findOne(ht, e)
            }
            _getOuterElement(e) {
                return e.closest(".nav-item, .list-group-item") || e
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = nr.getOrCreateInstance(this);
                    if ("string" == typeof t) {
                        if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
                        e[t]()
                    }
                })
            }
        }
        m.on(document, "click.bs.tab", Kt, function(e) {
            ["A", "AREA"].includes(this.tagName) && e.preventDefault(), a(this) || nr.getOrCreateInstance(this).show()
        }), m.on(window, "load.bs.tab", () => {
            for (var e of f.find('.active[data-bs-toggle="tab"], .active[data-bs-toggle="pill"], .active[data-bs-toggle="list"]')) nr.getOrCreateInstance(e)
        }), Tt(nr);
        let ft = "show",
            pt = "showing",
            mt = {
                animation: "boolean",
                autohide: "boolean",
                delay: "number"
            },
            yt = {
                animation: !0,
                autohide: !0,
                delay: 5e3
            };
        class No extends Jt {
            constructor(e, t) {
                super(e, t), this._timeout = null, this._hasMouseInteraction = !1, this._hasKeyboardInteraction = !1, this._setListeners()
            }
            static get Default() {
                return yt
            }
            static get DefaultType() {
                return mt
            }
            static get NAME() {
                return "toast"
            }
            show() {
                m.trigger(this._element, "show.bs.toast").defaultPrevented || (this._clearTimeout(), this._config.animation && this._element.classList.add("fade"), this._element.classList.remove("hide"), c(this._element), this._element.classList.add(ft, pt), this._queueCallback(() => {
                    this._element.classList.remove(pt), m.trigger(this._element, "shown.bs.toast"), this._maybeScheduleHide()
                }, this._element, this._config.animation))
            }
            hide() {
                this.isShown() && !m.trigger(this._element, "hide.bs.toast").defaultPrevented && (this._element.classList.add(pt), this._queueCallback(() => {
                    this._element.classList.add("hide"), this._element.classList.remove(pt, ft), m.trigger(this._element, "hidden.bs.toast")
                }, this._element, this._config.animation))
            }
            dispose() {
                this._clearTimeout(), this.isShown() && this._element.classList.remove(ft), super.dispose()
            }
            isShown() {
                return this._element.classList.contains(ft)
            }
            _maybeScheduleHide() {
                !this._config.autohide || this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout(() => {
                    this.hide()
                }, this._config.delay))
            }
            _onInteraction(e, t) {
                switch (e.type) {
                    case "mouseover":
                    case "mouseout":
                        this._hasMouseInteraction = t;
                        break;
                    case "focusin":
                    case "focusout":
                        this._hasKeyboardInteraction = t
                }
                t ? this._clearTimeout() : this._element === (e = e.relatedTarget) || this._element.contains(e) || this._maybeScheduleHide()
            }
            _setListeners() {
                m.on(this._element, "mouseover.bs.toast", e => this._onInteraction(e, !0)), m.on(this._element, "mouseout.bs.toast", e => this._onInteraction(e, !1)), m.on(this._element, "focusin.bs.toast", e => this._onInteraction(e, !0)), m.on(this._element, "focusout.bs.toast", e => this._onInteraction(e, !1))
            }
            _clearTimeout() {
                clearTimeout(this._timeout), this._timeout = null
            }
            static jQueryInterface(t) {
                return this.each(function() {
                    var e = No.getOrCreateInstance(this, t);
                    if ("string" == typeof t) {
                        if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
                        e[t](this)
                    }
                })
            }
        }

        function vo(e, t, r, o, n) {
            push();
            var s = e + r / 2,
                i = t,
                a = 5,
                l = (push(), translate(s, i), "rgb(215, 215, 215)"),
                c = "rgb(180, 180, 180)",
                u = "rgb(230, 230, 230)",
                d = (push(), fill(u), stroke("gray"), strokeWeight(.1), translate(0, -a), rectMode(CENTER), n === state.rightTank ? (rect(1.1 * -a, 0, 2 * a, a / 3, a / 10), fill(240), rect(-a / 3.5, 0, a / 6, a / 2, a / 20), rect(a / 1.2, 0, a, a / 8), rect(1.4 * a, -a / 4, a / 16, a / 2, a / 40), rect(1.4 * a, 0, a / 6, a / 6, a / 40)) : (rect(1.1 * a, 0, 2 * a, a / 3, a / 10), fill(240), rect(-a / 1.2, 0, a, a / 8), rect(1.4 * -a, -a / 4, a / 16, a / 2, a / 40), rect(1.4 * -a, 0, a / 6, a / 6, a / 40), rect(-a / 3.5, 0, a / 6, a / 2, a / 20)), rect(a / 3.5, 0, a / 6, a / 2, a / 20), pop(), fill(l), stroke(c), strokeWeight(.1), n.valveRotation),
                h = -3 * a / 2 - 1.05 * a / 4,
                f = 1.1 * a / 4;
            for (let e = 0; e < 6; e++) {
                var p = (d + .16667 * e) % 1,
                    m = +cos(p * TWO_PI) * a / 2,
                    y = a / 10 * abs(sin((.25 - (p - .25) % .25) * TWO_PI)) + a / 20;
                0 < p && p < .5 && rect(m - y / 2, h, a / 3 * y, f, a / 40)
            }
            fill(u), stroke("gray"), rect(-a / 2, -a / 2, a, a, a / 10, a / 10, a / 10, a / 10), rect(-a / 4, -a / 2, a / 2, -a, a / 20), n.knobCoords = [s - a / 2, i - 31 * a / 16, a, a / 2], rect(-a / 2, -3 * a / 2, a, -a / 4, a / 20), fill(l), stroke(c);
            for (let e = 0; e < 3; e++) {
                var g = (d + .16667 * e + .5) % .5,
                    v = -1 * cos(g * TWO_PI) * a / 2,
                    b = a / 10 * abs(sin((.25 - (g - .25) % .25) * TWO_PI)) + a / 20;
                g < .5 && 0 < g && rect(v - b / 2, h, a / 3 * b, f, a / 40)
            }
            translate(0, -a), n === state.rightTank ? bo(1.4 * a, -a, a, n.pressure, 5e6, "MPa") : bo(1.4 * -a, -a, a, n.pressure, 5e6, "MPa"), pop();
            fill("rgb(190, 190, 190)"), stroke("rgb(100, 100, 100)"), strokeWeight(.1), rect(e, t, r, o, r / 2, r / 2, r / 10, r / 10), pop()
        }

        function bo(e, t, o, r, n, s) {
            push(), translate(e, t);
            var i, a, l, e = r / n;
            fill("rgb(255, 255, 255)"), stroke("rgb(110, 110, 110)"), strokeWeight(.15), circle(0, 0, o);
            for (let r = 54; - 210 <= r; r -= 4.8) {
                r = round(10 * r) / 10;
                let e = o * cos(radians(r)) / 2,
                    t = o * sin(radians(r)) / 2;
                stroke(0), noFill(), (r - 30) % 48 == 0 ? (strokeWeight(.05), line(e / 1.4, t / 1.4, e / 1.12, t / 1.12)) : (r - 30) % 24 == 0 ? (strokeWeight(.04), line(e / 1.3, t / 1.3, e / 1.12, t / 1.12)) : (r - 30) % 12 == 0 ? (strokeWeight(.03), line(e / 1.23, t / 1.23, e / 1.12, t / 1.12)) : (strokeWeight(.02), line(e / 1.2, t / 1.2, e / 1.12, t / 1.12)), (r - 30) % 48 == 0 && (noStroke(), fill(0), textSize(1), textAlign(CENTER, CENTER), i = o / 1.5 * cos(radians(r)), a = o / 1.5 * sin(radians(r)), l = round(10 * (1 + (r - 30) / 240)) / 10, "MPa" === s) && (l = round(l * n / 1e6), text(l, i, a))
            }
            push(), textAlign(CENTER, CENTER), textSize(.75), fill(0), noStroke(), text(s, 0, o / 3), pop(), stroke("rgb(200, 0, 0)"), strokeWeight(.05), fill("rgb(255, 0, 0)"), rotate(radians(240 * e - 30)), line(0, 0, -o / 3.2, 0), triangle(-o / 8, -o / 35, -o / 8, o / 35, -o / 3.2, 0), noStroke(), fill(150), circle(0, 0, o / 15), pop()
        }

        function _o(e, t, r, o, n) {
            push(), translate(e, t);
            e = color(200), t = color(255, 100, 100);
            strokeWeight(.5), stroke(e), fill(e), beginShape(), vertex(-r * sqrt(2) / 2, -r * sqrt(2) / 2), vertex(-r * sqrt(2) / 2, 13 * -r);
            for (let e = 0; e < 180; e += 10) {
                var s = -r * sqrt(2) * cos(radians(e)) / 2,
                    i = 15.5 * -r - r * sqrt(2) / 2 - r * sqrt(2) * sin(radians(e)) / 2;
                vertex(s, i)
            }
            vertex(r * sqrt(2) / 2, 13 * -r), vertex(r * sqrt(2) / 2, -r * sqrt(2) / 2), beginContour(), vertex(.42333 * r, -r * sqrt(2) / 2);
            for (let e = 180; 0 <= e; e -= 10) {
                var a = -.4324 * r * cos(radians(e)),
                    l = 15.7 * -r - .42333 * r - .42333 * r * sin(radians(e));
                vertex(a, l)
            }
            vertex(-.42333 * r, -r * sqrt(2) / 2), endContour(), endShape(), fill(t), stroke(e), strokeWeight(2), circle(0, 0, 2 * r), fill(t), noStroke(), rectMode(CORNER), rect(-r / 3, 0, 2 * r / 3, -2 * r - (o + 100) / state.maxTemperature * r * 12), fill(0), strokeWeight(.6 / relativeSize()), textAlign(RIGHT, CENTER), textSize(1.9);
            for (let t = 0; t <= 140; t += 1) {
                let e;
                t % 20 == 0 ? (strokeWeight(.1), e = 4 * r / 15, noStroke(), text(state.maxTemperature * (t / 120) - 100, 18 * -r / 15, -2 * r - t * r / 10)) : e = t % 10 == 0 ? (strokeWeight(.1), r / 5) : t % 5 == 0 ? (strokeWeight(.075), r / 7) : (strokeWeight(.05), r / 10), stroke(0), line(11.5 * -r / 15, -2 * r - t * r / 10, 11.5 * -r / 15 + e, 2 * -r - t * r / 10)
            }
            noStroke(), textAlign(CENTER, TOP), textSize(3), text(n, 0, 24 * r / 15), pop()
        }

        function xo() {
            var e;
            push(), translate(width / 2, state.leftTank.yCoord - 5), rectMode(CENTER), fill("rgb(220, 220, 220)"), stroke("rgb(100, 100, 100)"), strokeWeight(.1), e = state.rightTank.xCoord - state.leftTank.xCoord, rect(0, 0, e, .5), rect(-4, 0, 1.5, 1.5), rect(4, 0, 1.5, 1.5), fill("#DDA520"), stroke("#885510"), strokeWeight(.05), beginShape(), [
                [-3.5, 1.1],
                [-3.5, 1.3],
                [-4, 1.3],
                [-4, -1.3],
                [-3.5, -1.3],
                [-3.5, -1.1],
                [-1, -1.1],
                [-1, -2],
                [-1.5, -2],
                [-1.5, -2.8],
                [1.5, -2.8],
                [1.5, -2],
                [1, -2],
                [1, -1.1],
                [3.5, -1.1],
                [3.5, -1.3],
                [4, -1.3],
                [4, 1.3],
                [3.5, 1.3],
                [3.5, 1.1]
            ].forEach(e => {
                vertex(e[0], e[1])
            }), endShape(CLOSE), fill(200), stroke(120), rect(0, -4, .5, 2.5), fill("rgb(80, 80, 80)"), stroke("rgb(50, 50, 50)"), e = 2 * state.valvePosition, rect(0, -5.25, 4 * abs(cos(e * TWO_PI)) + 1, 1, .25), pop(), vo(state.leftTank.xCoord, state.leftTank.yCoord, state.leftTank.width, state.leftTank.height, state.leftTank), _o(62, 100, 4, state.leftTank.temperature, "°C"), vo(state.rightTank.xCoord, state.rightTank.yCoord, state.rightTank.width, state.rightTank.height, state.rightTank), _o(90, 100, 4, state.rightTank.temperature, "°C"), push(), translate(2, height - 10), noStroke(), fill(0), textSize(3), textAlign(LEFT, CENTER), text("Κάντε ζουμ χρησιμοποιώντας τον τροχό κύλισης και σύρετε το ποντίκι για να μετακινήσετε την εικόνα", 0, -15, 29, 50), pop()
        }
        mo(No), Tt(No), St(1);
        var Zt = St(0),
            wo = St.n(Zt),
            jo = St(2);
        let O = document.getElementById("left-25"),
            C = document.getElementById("left-50"),
            A = document.getElementById("left-100"),
            L = document.getElementById("right-25"),
            P = document.getElementById("right-50"),
            I = document.getElementById("right-100"),
            gt = document.getElementById("pressure-slider"),
            vt = document.getElementById("pressure-value"),
            bt = document.getElementById("temperature-slider"),
            _t = document.getElementById("temperature-value"),
            xt = document.getElementById("sounds"),
            wt = document.getElementById("sound-on"),
            jt = document.getElementById("sound-off");

        function So() {
            [O, C, A].forEach(e => {
                e.classList.remove("active")
            })
        }

        function To() {
            [L, P, I].forEach(e => {
                e.classList.remove("active")
            })
        }

        function Eo() {
            {
                let r = document.getElementById("reset");
                r.addEventListener("click", () => {
                    r.style.backgroundColor = "rgb(255, 120, 120)", setTimeout(() => {
                        r.style.backgroundColor = ""
                    }, 50), [O, C, A, L, P, I, gt, bt].forEach(e => {
                        e.classList.remove("disabled")
                    });
                    var e = state.leftTank.volume,
                        t = state.rightTank.volume;
                    switch ((0, jo.Pj)(), e) {
                        case 25:
                            O.click();
                            break;
                        case 50:
                            C.click();
                            break;
                        case 100:
                            A.click()
                    }
                    switch (t) {
                        case 25:
                            L.click();
                            break;
                        case 50:
                            P.click();
                            break;
                        case 100:
                            I.click()
                    }
                    gasReleaseSound.paused && gasTransferSound.paused || (gasReleaseSound.pause(), gasTransferSound.pause(), gasReleaseSound.currentTime = 0, gasTransferSound.currentTime = 0)
                })
            }
            O.addEventListener("click", () => {
                O.classList.add("clicked"), So(), O.classList.add("active"), setTimeout(() => {
                    O.classList.remove("clicked")
                }, 50), state.leftTank.volume = 25, state.leftTank.width = 12, state.leftTank.height = 30, state.leftTank.xCoord = 34
            }), C.addEventListener("click", () => {
                C.classList.add("clicked"), So(), C.classList.add("active"), setTimeout(() => {
                    C.classList.remove("clicked")
                }, 50), state.leftTank.volume = 50, state.leftTank.width = 15, state.leftTank.height = 60, state.leftTank.xCoord = 32.5
            }), A.addEventListener("click", () => {
                A.classList.add("clicked"), So(), A.classList.add("active"), setTimeout(() => {
                    A.classList.remove("clicked")
                }, 50), state.leftTank.volume = 100, state.leftTank.width = 20, state.leftTank.height = 80, state.leftTank.xCoord = 30
            }), L.addEventListener("click", () => {
                L.classList.add("clicked"), To(), L.classList.add("active"), setTimeout(() => {
                    L.classList.remove("clicked")
                }, 50), state.rightTank.volume = 25, state.rightTank.width = 12, state.rightTank.height = 30, state.rightTank.xCoord = 104
            }), P.addEventListener("click", () => {
                P.classList.add("clicked"), To(), P.classList.add("active"), setTimeout(() => {
                    P.classList.remove("clicked")
                }, 50), state.rightTank.volume = 50, state.rightTank.width = 15, state.rightTank.height = 60, state.rightTank.xCoord = 102.5
            }), I.addEventListener("click", () => {
                I.classList.add("clicked"), To(), I.classList.add("active"), setTimeout(() => {
                    I.classList.remove("clicked")
                }, 50), state.rightTank.volume = 100, state.rightTank.width = 20, state.rightTank.height = 80, state.rightTank.xCoord = 100
            }), gt.addEventListener("input", () => {
                var e = Number(gt.value);
                state.leftTank.pressure = 1e6 * e, vt.innerHTML = e.toFixed(1)
            }), bt.addEventListener("input", () => {
                var e = Number(bt.value);
                state.leftTank.temperature = e, _t.innerHTML = e
            }), xt.addEventListener("click", () => {
                state.sounds ? (state.sounds = !1, gasReleaseSound.volume = 0, gasTransferSound.volume = 0, wt.style.display = "block", jt.style.display = "none", window.localStorage.setItem("sounds", "false")) : (state.sounds = !0, gasReleaseSound.volume = 1, gasTransferSound.volume = 1, wt.style.display = "none", jt.style.display = "block", window.localStorage.setItem("sounds", "true"))
            })
        }

        function ko() {
            document.getElementById("hamburger-icon").innerHTML = wo();
            {
                var o = document.getElementById("hamburger");
                let t = document.getElementById("hamburger-icon"),
                    r = document.getElementById("buttons"),
                    e = (t.style.transitionProperty = "background-color", t.style.transitionDuration = "0.5s", setInterval(() => {
                        state.hamburgerHasBeenClicked ? (t.style.backgroundColor = "", t.style.transitionProperty = "", t.style.transitionDuration = "", clearInterval(e)) : (t.style.backgroundColor = "rgba(255, 255, 255, 0.5)", setTimeout(() => {
                            t.style.backgroundColor = ""
                        }, 800))
                    }, 1600));
                o.addEventListener("click", e => {
                    "controls" === e.target.id || "buttons" === e.target.id || e.target.classList.contains("btn") || (state.showButtons ? (r.style.display = "none", state.showButtons = !1, t.classList.remove("active")) : (r.style.display = "grid", state.showButtons = !0, t.classList.add("active"), state.hamburgerHasBeenClicked = !0, window.localStorage.setItem("hamburgerHasBeenClicked", "true")))
                }), document.addEventListener("click", e => {
                    "controls" === e.target.id || "buttons" === e.target.id || e.target.classList.contains("btn") || "hamburger" === e.target.id || "hamburger-icon" === e.target.id || "hamburger-svg" === e.target.id || "path" === e.target.tagName || e.target.classList.contains("modal") || e.target.classList.contains("modal-dialog") || e.target.classList.contains("modal-content") || e.target.classList.contains("modal-body") || e.target.classList.contains("modal-header") || "HTML" !== e.target.tagName && (e.target.parentElement.classList.contains("modal-body") || e.target.parentElement.classList.contains("modal-header")) || (r.style.display = "none", state.showButtons = !1, t.classList.remove("active"))
                })
            }
        }
        document.querySelector("canvas"), window.state = {
            frameRate: 60,
            pixelDensity: 4,
            showButtons: !1,
            hamburgerHasBeenClicked: "true" === window.localStorage.getItem("hamburgerHasBeenClicked"),
            sounds: "true" === window.localStorage.getItem("sounds") || null === window.localStorage.getItem("sounds"),
            isRetina: 2 === window.devicePixelRatio,
            zoom: 1,
            zoomTarget: [0, 0]
        };
        let R = document.getElementById("p5-container");
        window.preload = function() {
            window.gasReleaseSound = new Audio("./assets/gas_release.wav"), window.gasReleaseSound.loop = !1, window.gasTransferSound = new Audio("./assets/gas_transfer.wav"), window.gasTransferSound.loop = !1
        }, window.setup = function() {
            !1 === state.sounds && (document.getElementById("sound-off").style.display = "none", document.getElementById("sound-on").style.display = "block", gasReleaseSound.volume = 0, gasTransferSound.volume = 0), createCanvas(R.offsetWidth, R.offsetHeight).parent(R), Eo(), ko(), (0, jo.Pj)(), (0, jo.$e)(), pixelDensity(state.pixelDensity), frameRate(state.frameRate)
        }, window.draw = function() {
            window.width = 150, window.height = 100, scale(relativeSize()), translate(state.zoomTarget[0], state.zoomTarget[1]), scale(state.zoom), background(255), (0, jo.$e)(), xo()
        }, window.windowResized = () => {
            resizeCanvas(R.offsetWidth, R.offsetHeight)
        }, window.relativeSize = () => R.offsetWidth / 150, St(5)
    }
})();