您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
-
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://updategreasyfork.deno.dev/scripts/484816/1316319/bundlejs%20override.js
(() => { window.NEWEST_VERSION = 5; const timeoutMs = 30; let canPlace = true; let buildings = new Map(); let missingBuildings = new Map(); let buildingsToUpgrade = new Map(); const towers = ["RocketTower", "SawTower", "MageTower", "CannonTower", "ArrowTower", "Drill", "LightningTower", "Wall", "Door"]; window.autoRebuilder = true; window.saveBuildings = () => { for (let building in game.ui.buildings) { let { x, y, tier, type } = game.ui.buildings[building]; if (type !== "Factory") buildings.set(`${x}, ${y}, ${type}`, { tier: tier, type: type, x: x, y: y }); }; }; let sendMsg = (msg) => { console.log(msg) const b = document.createElement("div"); b.className = "hud-chat-message"; b.innerHTML = "<strong style=\"" + ("color:#00FF00;") + "\">[Script] </strong><strong><span id=\"name\"></span>: </strong><span id=\"message\"></span>"; const d = document.createTextNode(msg); b.querySelector("#message").appendChild(d); game.ui.components.uiChat.messagesElem.appendChild(b); b.addEventListener("mousedown", a => { a.stopPropagation(); }); b.addEventListener("mouseup", a => { a.stopPropagation(); }); }; let recordBase = () => { let buildCode = ""; for (let building of Object.values(game.ui.buildings)) { const { factory } = game.ui; const { x, y, type } = building; const towercode = `${x - factory.x}, ${y - factory.y}, ${towers.indexOf(type)};`; if (type == "Factory") continue; buildCode += towercode; }; return new Promise((resolve, reject) => { resolve(buildCode); }) }; let buildBase = (buildCode) => { if (!game.ui?.factory) throw new Error("Cant place without a stash"); const buildings = buildCode.split(";"); let buildingPackets = []; for (const building of buildings.slice(0, buildings.length - 1)) { const { x, y } = game.ui.factory; const properties = building.replaceAll(",", "").split(" "); //split into properties of different towers const packet = { name: "PlaceBuilding", x: (parseInt(properties[0]) + x), y: (parseInt(properties[1]) + y), type: towers[properties[2]], yaw: 0 }; buildingPackets.push(packet) } for (let i = 0; i < buildingPackets.length; i++) { setTimeout(() => { const { x, y } = buildingPackets[i]; game.network.sendInput({ x: x, y: y }) game.network.sendRpc(buildingPackets[i]) }, i * 100) }; } !localStorage.recordedBase && (localStorage.recordedBase = "{}"); var a = { 779: function (a, b, c) { var d; var e; var f; e = [c(514)]; d = function (a) { 'use strict'; function b(a, c, e) { if (a === undefined) { a = b.DEFAULT_CAPACITY; } if (c === undefined) { c = b.DEFAULT_ENDIAN; } if (e === undefined) { e = b.DEFAULT_NOASSERT; } if (!e) { if ((a |= 0) < 0) { throw RangeError("Illegal capacity"); } c = !!c; e = !!e; } this.buffer = a === 0 ? d : new ArrayBuffer(a); this.view = a === 0 ? null : new Uint8Array(this.buffer); this.offset = 0; this.markedOffset = -1; this.limit = a; this.littleEndian = c; this.noAssert = e; } b.VERSION = "5.0.1"; b.LITTLE_ENDIAN = true; b.BIG_ENDIAN = false; b.DEFAULT_CAPACITY = 16; b.DEFAULT_ENDIAN = b.BIG_ENDIAN; b.DEFAULT_NOASSERT = false; b.Long = a || null; var c = b.prototype; c.__isByteBuffer__; Object.defineProperty(c, "__isByteBuffer__", { value: true, enumerable: false, configurable: false }); var d = new ArrayBuffer(0); var e = String.fromCharCode; function f(a) { var b = 0; return function () { if (b < a.length) { return a.charCodeAt(b++); } else { return null; } }; } function g() { var a = []; var b = []; return function () { if (arguments.length === 0) { return b.join("") + e.apply(String, a); } if (a.length + arguments.length > 1024) { b.push(e.apply(String, a)); a.length = 0; } Array.prototype.push.apply(a, arguments); }; } function h(a, b, c, d, e) { var f; var g; var h = e * 8 - d - 1; var i = (1 << h) - 1; var j = i >> 1; var k = -7; var l = c ? e - 1 : 0; var m = c ? -1 : 1; var n = a[b + l]; l += m; f = n & (1 << -k) - 1; n >>= -k; k += h; for (; k > 0; k -= 8) { f = f * 256 + a[b + l]; l += m; } g = f & (1 << -k) - 1; f >>= -k; k += d; for (; k > 0; k -= 8) { g = g * 256 + a[b + l]; l += m; } if (f === 0) { f = 1 - j; } else { if (f === i) { if (g) { return NaN; } else { return (n ? -1 : 1) * Infinity; } } g += Math.pow(2, d); f -= j; } return (n ? -1 : 1) * g * Math.pow(2, f - d); } function i(a, b, c, d, e, f) { var g; var h; var i; var j = f * 8 - e - 1; var k = (1 << j) - 1; var l = k >> 1; var m = e === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; var n = d ? 0 : f - 1; var o = d ? 1 : -1; var p = b < 0 || b === 0 && 1 / b < 0 ? 1 : 0; b = Math.abs(b); if (isNaN(b) || b === Infinity) { h = isNaN(b) ? 1 : 0; g = k; } else { g = Math.floor(Math.log(b) / Math.LN2); if (b * (i = Math.pow(2, -g)) < 1) { g--; i *= 2; } if ((b += g + l >= 1 ? m / i : m * Math.pow(2, 1 - l)) * i >= 2) { g++; i /= 2; } if (g + l >= k) { h = 0; g = k; } else if (g + l >= 1) { h = (b * i - 1) * Math.pow(2, e); g += l; } else { h = b * Math.pow(2, l - 1) * Math.pow(2, e); g = 0; } } for (; e >= 8; e -= 8) { a[c + n] = h & 255; n += o; h /= 256; } g = g << e | h; j += e; for (; j > 0; j -= 8) { a[c + n] = g & 255; n += o; g /= 256; } a[c + n - o] |= p * 128; } b.accessor = function () { return Uint8Array; }; b.allocate = function (a, c, d) { return new b(a, c, d); }; b.concat = function (a, c, d, e) { if (typeof c == "boolean" || typeof c != "string") { e = d; d = c; c = undefined; } for (var f, g = 0, h = 0, i = a.length; h < i; ++h) { if (!b.isByteBuffer(a[h])) { a[h] = b.wrap(a[h], c); } if ((f = a[h].limit - a[h].offset) > 0) { g += f; } } if (g === 0) { return new b(0, d, e); } var j; var k = new b(g, d, e); for (h = 0; h < i;) { if ((f = (j = a[h++]).limit - j.offset) > 0) { k.view.set(j.view.subarray(j.offset, j.limit), k.offset); k.offset += f; } } k.limit = k.offset; k.offset = 0; return k; }; b.isByteBuffer = function (a) { return (a && a.__isByteBuffer__) === true; }; b.type = function () { return ArrayBuffer; }; b.wrap = function (a, d, e, f) { if (typeof d != "string") { f = e; e = d; d = undefined; } if (typeof a == "string") { if (d === undefined) { d = "utf8"; } switch (d) { case "base64": return b.fromBase64(a, e); case "hex": return b.fromHex(a, e); case "binary": return b.fromBinary(a, e); case "utf8": return b.fromUTF8(a, e); case "debug": return b.fromDebug(a, e); default: throw Error("Unsupported encoding: " + d); } } if (a === null || typeof a != "object") { throw TypeError("Illegal buffer"); } var g; if (b.isByteBuffer(a)) { (g = c.clone.call(a)).markedOffset = -1; return g; } if (a instanceof Uint8Array) { g = new b(0, e, f); if (a.length > 0) { g.buffer = a.buffer; g.offset = a.byteOffset; g.limit = a.byteOffset + a.byteLength; g.view = new Uint8Array(a.buffer); } } else if (a instanceof ArrayBuffer) { g = new b(0, e, f); if (a.byteLength > 0) { g.buffer = a; g.offset = 0; g.limit = a.byteLength; g.view = a.byteLength > 0 ? new Uint8Array(a) : null; } } else { if (Object.prototype.toString.call(a) !== "[object Array]") { throw TypeError("Illegal buffer"); } (g = new b(a.length, e, f)).limit = a.length; for (var h = 0; h < a.length; ++h) { g.view[h] = a[h]; } } return g; }; c.writeBitSet = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (!(a instanceof Array)) { throw TypeError("Illegal BitSet: Not an array"); } if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } var d; var e = b; var f = a.length; var g = f >> 3; var h = 0; for (b += this.writeVarint32(f, b); g--;) { d = !!a[h++] & 1 | (!!a[h++] & 1) << 1 | (!!a[h++] & 1) << 2 | (!!a[h++] & 1) << 3 | (!!a[h++] & 1) << 4 | (!!a[h++] & 1) << 5 | (!!a[h++] & 1) << 6 | (!!a[h++] & 1) << 7; this.writeByte(d, b++); } if (h < f) { var i = 0; for (d = 0; h < f;) { d |= (!!a[h++] & 1) << i++; } this.writeByte(d, b++); } if (c) { this.offset = b; return this; } else { return b - e; } }; c.readBitSet = function (a) { var b = a === undefined; if (b) { a = this.offset; } var c; var d = this.readVarint32(a); var e = d.value; var f = e >> 3; var g = 0; var h = []; for (a += d.length; f--;) { c = this.readByte(a++); h[g++] = !!(c & 1); h[g++] = !!(c & 2); h[g++] = !!(c & 4); h[g++] = !!(c & 8); h[g++] = !!(c & 16); h[g++] = !!(c & 32); h[g++] = !!(c & 64); h[g++] = !!(c & 128); } if (g < e) { var i = 0; for (c = this.readByte(a++); g < e;) { h[g++] = !!(c >> i++ & 1); } } if (b) { this.offset = a; } return h; }; c.readBytes = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + a > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+" + a + ") <= " + this.buffer.byteLength); } } var d = this.slice(b, b + a); if (c) { this.offset += a; } return d; }; c.writeBytes = c.append; c.writeInt8 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a |= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 1; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 1; this.view[b] = a; if (c) { this.offset += 1; } return this; }; c.writeByte = c.writeInt8; c.readInt8 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength); } } var c = this.view[a]; if ((c & 128) == 128) { c = -(255 - c + 1); } if (b) { this.offset += 1; } return c; }; c.readByte = c.readInt8; c.writeUint8 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 1; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 1; this.view[b] = a; if (c) { this.offset += 1; } return this; }; c.writeUInt8 = c.writeUint8; c.readUint8 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength); } } var c = this.view[a]; if (b) { this.offset += 1; } return c; }; c.readUInt8 = c.readUint8; c.writeInt16 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a |= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 2; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 2; if (this.littleEndian) { this.view[b + 1] = (a & 65280) >>> 8; this.view[b] = a & 255; } else { this.view[b] = (a & 65280) >>> 8; this.view[b + 1] = a & 255; } if (c) { this.offset += 2; } return this; }; c.writeShort = c.writeInt16; c.readInt16 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 2 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+2) <= " + this.buffer.byteLength); } } var c = 0; if (this.littleEndian) { c = this.view[a]; c |= this.view[a + 1] << 8; } else { c = this.view[a] << 8; c |= this.view[a + 1]; } if ((c & 32768) == 32768) { c = -(65535 - c + 1); } if (b) { this.offset += 2; } return c; }; c.readShort = c.readInt16; c.writeUint16 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 2; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 2; if (this.littleEndian) { this.view[b + 1] = (a & 65280) >>> 8; this.view[b] = a & 255; } else { this.view[b] = (a & 65280) >>> 8; this.view[b + 1] = a & 255; } if (c) { this.offset += 2; } return this; }; c.writeUInt16 = c.writeUint16; c.readUint16 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 2 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+2) <= " + this.buffer.byteLength); } } var c = 0; if (this.littleEndian) { c = this.view[a]; c |= this.view[a + 1] << 8; } else { c = this.view[a] << 8; c |= this.view[a + 1]; } if (b) { this.offset += 2; } return c; }; c.readUInt16 = c.readUint16; c.writeInt32 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a |= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 4; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 4; if (this.littleEndian) { this.view[b + 3] = a >>> 24 & 255; this.view[b + 2] = a >>> 16 & 255; this.view[b + 1] = a >>> 8 & 255; this.view[b] = a & 255; } else { this.view[b] = a >>> 24 & 255; this.view[b + 1] = a >>> 16 & 255; this.view[b + 2] = a >>> 8 & 255; this.view[b + 3] = a & 255; } if (c) { this.offset += 4; } return this; }; c.writeInt = c.writeInt32; c.readInt32 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength); } } var c = 0; if (this.littleEndian) { c = this.view[a + 2] << 16; c |= this.view[a + 1] << 8; c |= this.view[a]; c += this.view[a + 3] << 24 >>> 0; } else { c = this.view[a + 1] << 16; c |= this.view[a + 2] << 8; c |= this.view[a + 3]; c += this.view[a] << 24 >>> 0; } c |= 0; if (b) { this.offset += 4; } return c; }; c.readInt = c.readInt32; c.writeUint32 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 4; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 4; if (this.littleEndian) { this.view[b + 3] = a >>> 24 & 255; this.view[b + 2] = a >>> 16 & 255; this.view[b + 1] = a >>> 8 & 255; this.view[b] = a & 255; } else { this.view[b] = a >>> 24 & 255; this.view[b + 1] = a >>> 16 & 255; this.view[b + 2] = a >>> 8 & 255; this.view[b + 3] = a & 255; } if (c) { this.offset += 4; } return this; }; c.writeUInt32 = c.writeUint32; c.readUint32 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength); } } var c = 0; if (this.littleEndian) { c = this.view[a + 2] << 16; c |= this.view[a + 1] << 8; c |= this.view[a]; c += this.view[a + 3] << 24 >>> 0; } else { c = this.view[a + 1] << 16; c |= this.view[a + 2] << 8; c |= this.view[a + 3]; c += this.view[a] << 24 >>> 0; } if (b) { this.offset += 4; } return c; }; c.readUInt32 = c.readUint32; if (a) { c.writeInt64 = function (b, c) { var d = c === undefined; if (d) { c = this.offset; } if (!this.noAssert) { if (typeof b == "number") { b = a.fromNumber(b); } else if (typeof b == "string") { b = a.fromString(b); } else if (!b || !(b instanceof a)) { throw TypeError("Illegal value: " + b + " (not an integer or Long)"); } if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal offset: " + c + " (not an integer)"); } if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength); } } if (typeof b == "number") { b = a.fromNumber(b); } else if (typeof b == "string") { b = a.fromString(b); } c += 8; var e = this.buffer.byteLength; if (c > e) { this.resize((e *= 2) > c ? e : c); } c -= 8; var f = b.low; var g = b.high; if (this.littleEndian) { this.view[c + 3] = f >>> 24 & 255; this.view[c + 2] = f >>> 16 & 255; this.view[c + 1] = f >>> 8 & 255; this.view[c] = f & 255; c += 4; this.view[c + 3] = g >>> 24 & 255; this.view[c + 2] = g >>> 16 & 255; this.view[c + 1] = g >>> 8 & 255; this.view[c] = g & 255; } else { this.view[c] = g >>> 24 & 255; this.view[c + 1] = g >>> 16 & 255; this.view[c + 2] = g >>> 8 & 255; this.view[c + 3] = g & 255; c += 4; this.view[c] = f >>> 24 & 255; this.view[c + 1] = f >>> 16 & 255; this.view[c + 2] = f >>> 8 & 255; this.view[c + 3] = f & 255; } if (d) { this.offset += 8; } return this; }; c.writeLong = c.writeInt64; c.readInt64 = function (b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 8 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+8) <= " + this.buffer.byteLength); } } var d = 0; var e = 0; if (this.littleEndian) { d = this.view[b + 2] << 16; d |= this.view[b + 1] << 8; d |= this.view[b]; d += this.view[b + 3] << 24 >>> 0; b += 4; e = this.view[b + 2] << 16; e |= this.view[b + 1] << 8; e |= this.view[b]; e += this.view[b + 3] << 24 >>> 0; } else { e = this.view[b + 1] << 16; e |= this.view[b + 2] << 8; e |= this.view[b + 3]; e += this.view[b] << 24 >>> 0; b += 4; d = this.view[b + 1] << 16; d |= this.view[b + 2] << 8; d |= this.view[b + 3]; d += this.view[b] << 24 >>> 0; } var f = new a(d, e, false); if (c) { this.offset += 8; } return f; }; c.readLong = c.readInt64; c.writeUint64 = function (b, c) { var d = c === undefined; if (d) { c = this.offset; } if (!this.noAssert) { if (typeof b == "number") { b = a.fromNumber(b); } else if (typeof b == "string") { b = a.fromString(b); } else if (!b || !(b instanceof a)) { throw TypeError("Illegal value: " + b + " (not an integer or Long)"); } if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal offset: " + c + " (not an integer)"); } if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength); } } if (typeof b == "number") { b = a.fromNumber(b); } else if (typeof b == "string") { b = a.fromString(b); } c += 8; var e = this.buffer.byteLength; if (c > e) { this.resize((e *= 2) > c ? e : c); } c -= 8; var f = b.low; var g = b.high; if (this.littleEndian) { this.view[c + 3] = f >>> 24 & 255; this.view[c + 2] = f >>> 16 & 255; this.view[c + 1] = f >>> 8 & 255; this.view[c] = f & 255; c += 4; this.view[c + 3] = g >>> 24 & 255; this.view[c + 2] = g >>> 16 & 255; this.view[c + 1] = g >>> 8 & 255; this.view[c] = g & 255; } else { this.view[c] = g >>> 24 & 255; this.view[c + 1] = g >>> 16 & 255; this.view[c + 2] = g >>> 8 & 255; this.view[c + 3] = g & 255; c += 4; this.view[c] = f >>> 24 & 255; this.view[c + 1] = f >>> 16 & 255; this.view[c + 2] = f >>> 8 & 255; this.view[c + 3] = f & 255; } if (d) { this.offset += 8; } return this; }; c.writeUInt64 = c.writeUint64; c.readUint64 = function (b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 8 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+8) <= " + this.buffer.byteLength); } } var d = 0; var e = 0; if (this.littleEndian) { d = this.view[b + 2] << 16; d |= this.view[b + 1] << 8; d |= this.view[b]; d += this.view[b + 3] << 24 >>> 0; b += 4; e = this.view[b + 2] << 16; e |= this.view[b + 1] << 8; e |= this.view[b]; e += this.view[b + 3] << 24 >>> 0; } else { e = this.view[b + 1] << 16; e |= this.view[b + 2] << 8; e |= this.view[b + 3]; e += this.view[b] << 24 >>> 0; b += 4; d = this.view[b + 1] << 16; d |= this.view[b + 2] << 8; d |= this.view[b + 3]; d += this.view[b] << 24 >>> 0; } var f = new a(d, e, true); if (c) { this.offset += 8; } return f; }; c.readUInt64 = c.readUint64; } c.writeFloat32 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number") { throw TypeError("Illegal value: " + a + " (not a number)"); } if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 4; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 4; i(this.view, a, b, this.littleEndian, 23, 4); if (c) { this.offset += 4; } return this; }; c.writeFloat = c.writeFloat32; c.readFloat32 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength); } } var c = h(this.view, a, this.littleEndian, 23, 4); if (b) { this.offset += 4; } return c; }; c.readFloat = c.readFloat32; c.writeFloat64 = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "number") { throw TypeError("Illegal value: " + a + " (not a number)"); } if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } b += 8; var d = this.buffer.byteLength; if (b > d) { this.resize((d *= 2) > b ? d : b); } b -= 8; i(this.view, a, b, this.littleEndian, 52, 8); if (c) { this.offset += 8; } return this; }; c.writeDouble = c.writeFloat64; c.readFloat64 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 8 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+8) <= " + this.buffer.byteLength); } } var c = h(this.view, a, this.littleEndian, 52, 8); if (b) { this.offset += 8; } return c; }; c.readDouble = c.readFloat64; b.MAX_VARINT32_BYTES = 5; b.calculateVarint32 = function (a) { if ((a >>>= 0) < 128) { return 1; } else if (a < 16384) { return 2; } else if (a < 1 << 21) { return 3; } else if (a < 1 << 28) { return 4; } else { return 5; } }; b.zigZagEncode32 = function (a) { return ((a |= 0) << 1 ^ a >> 31) >>> 0; }; b.zigZagDecode32 = function (a) { return a >>> 1 ^ -(a & 1) | 0; }; c.writeVarint32 = function (a, c) { var d = c === undefined; if (d) { c = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a |= 0; if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal offset: " + c + " (not an integer)"); } if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength); } } var e; var f = b.calculateVarint32(a); c += f; var g = this.buffer.byteLength; if (c > g) { this.resize((g *= 2) > c ? g : c); } c -= f; a >>>= 0; while (a >= 128) { e = a & 127 | 128; this.view[c++] = e; a >>>= 7; } this.view[c++] = a; if (d) { this.offset = c; return this; } else { return f; } }; c.writeVarint32ZigZag = function (a, c) { return this.writeVarint32(b.zigZagEncode32(a), c); }; c.readVarint32 = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength); } } var c; var d = 0; var e = 0; do { if (!this.noAssert && a > this.limit) { var f = Error("Truncated"); f.truncated = true; throw f; } c = this.view[a++]; if (d < 5) { e |= (c & 127) << d * 7; } ++d; } while ((c & 128) != 0); e |= 0; if (b) { this.offset = a; return e; } else { return { value: e, length: d }; } }; c.readVarint32ZigZag = function (a) { var c = this.readVarint32(a); if (typeof c == "object") { c.value = b.zigZagDecode32(c.value); } else { c = b.zigZagDecode32(c); } return c; }; if (a) { b.MAX_VARINT64_BYTES = 10; b.calculateVarint64 = function (b) { if (typeof b == "number") { b = a.fromNumber(b); } else if (typeof b == "string") { b = a.fromString(b); } var c = b.toInt() >>> 0; var d = b.shiftRightUnsigned(28).toInt() >>> 0; var e = b.shiftRightUnsigned(56).toInt() >>> 0; if (e == 0) { if (d == 0) { if (c < 16384) { if (c < 128) { return 1; } else { return 2; } } else if (c < 1 << 21) { return 3; } else { return 4; } } else if (d < 16384) { if (d < 128) { return 5; } else { return 6; } } else if (d < 1 << 21) { return 7; } else { return 8; } } else if (e < 128) { return 9; } else { return 10; } }; b.zigZagEncode64 = function (b) { if (typeof b == "number") { b = a.fromNumber(b, false); } else if (typeof b == "string") { b = a.fromString(b, false); } else if (b.unsigned !== false) { b = b.toSigned(); } return b.shiftLeft(1).xor(b.shiftRight(63)).toUnsigned(); }; b.zigZagDecode64 = function (b) { if (typeof b == "number") { b = a.fromNumber(b, false); } else if (typeof b == "string") { b = a.fromString(b, false); } else if (b.unsigned !== false) { b = b.toSigned(); } return b.shiftRightUnsigned(1).xor(b.and(a.ONE).toSigned().negate()).toSigned(); }; c.writeVarint64 = function (c, d) { var e = d === undefined; if (e) { d = this.offset; } if (!this.noAssert) { if (typeof c == "number") { c = a.fromNumber(c); } else if (typeof c == "string") { c = a.fromString(c); } else if (!c || !(c instanceof a)) { throw TypeError("Illegal value: " + c + " (not an integer or Long)"); } if (typeof d != "number" || d % 1 != 0) { throw TypeError("Illegal offset: " + d + " (not an integer)"); } if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength); } } if (typeof c == "number") { c = a.fromNumber(c, false); } else if (typeof c == "string") { c = a.fromString(c, false); } else if (c.unsigned !== false) { c = c.toSigned(); } var f = b.calculateVarint64(c); var g = c.toInt() >>> 0; var h = c.shiftRightUnsigned(28).toInt() >>> 0; var i = c.shiftRightUnsigned(56).toInt() >>> 0; d += f; var j = this.buffer.byteLength; if (d > j) { this.resize((j *= 2) > d ? j : d); } d -= f; switch (f) { case 10: this.view[d + 9] = i >>> 7 & 1; case 9: this.view[d + 8] = f !== 9 ? i | 128 : i & 127; case 8: this.view[d + 7] = f !== 8 ? h >>> 21 | 128 : h >>> 21 & 127; case 7: this.view[d + 6] = f !== 7 ? h >>> 14 | 128 : h >>> 14 & 127; case 6: this.view[d + 5] = f !== 6 ? h >>> 7 | 128 : h >>> 7 & 127; case 5: this.view[d + 4] = f !== 5 ? h | 128 : h & 127; case 4: this.view[d + 3] = f !== 4 ? g >>> 21 | 128 : g >>> 21 & 127; case 3: this.view[d + 2] = f !== 3 ? g >>> 14 | 128 : g >>> 14 & 127; case 2: this.view[d + 1] = f !== 2 ? g >>> 7 | 128 : g >>> 7 & 127; case 1: this.view[d] = f !== 1 ? g | 128 : g & 127; } if (e) { this.offset += f; return this; } else { return f; } }; c.writeVarint64ZigZag = function (a, c) { return this.writeVarint64(b.zigZagEncode64(a), c); }; c.readVarint64 = function (b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+1) <= " + this.buffer.byteLength); } } var d = b; var e = 0; var f = 0; var g = 0; var h = 0; e = (h = this.view[b++]) & 127; if (h & 128 && (e |= ((h = this.view[b++]) & 127) << 7, (h & 128 || this.noAssert && h === undefined) && (e |= ((h = this.view[b++]) & 127) << 14, (h & 128 || this.noAssert && h === undefined) && (e |= ((h = this.view[b++]) & 127) << 21, (h & 128 || this.noAssert && h === undefined) && (f = (h = this.view[b++]) & 127, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 7, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 14, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 21, (h & 128 || this.noAssert && h === undefined) && (g = (h = this.view[b++]) & 127, (h & 128 || this.noAssert && h === undefined) && (g |= ((h = this.view[b++]) & 127) << 7, h & 128 || this.noAssert && h === undefined)))))))))) { throw Error("Buffer overrun"); } var i = a.fromBits(e | f << 28, f >>> 4 | g << 24, false); if (c) { this.offset = b; return i; } else { return { value: i, length: b - d }; } }; c.readVarint64ZigZag = function (c) { var d = this.readVarint64(c); if (d && d.value instanceof a) { d.value = b.zigZagDecode64(d.value); } else { d = b.zigZagDecode64(d); } return d; }; } c.writeCString = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } var d; var e = a.length; if (!this.noAssert) { if (typeof a != "string") { throw TypeError("Illegal str: Not a string"); } for (d = 0; d < e; ++d) { if (a.charCodeAt(d) === 0) { throw RangeError("Illegal str: Contains NULL-characters"); } } if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } e = k.calculateUTF16asUTF8(f(a))[1]; b += e + 1; var g = this.buffer.byteLength; if (b > g) { this.resize((g *= 2) > b ? g : b); } b -= e + 1; k.encodeUTF16toUTF8(f(a), function (a) { this.view[b++] = a; }.bind(this)); this.view[b++] = 0; if (c) { this.offset = b; return this; } else { return e; } }; c.readCString = function (a) { var b = a === undefined; if (b) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength); } } var c; var d = a; var e = -1; k.decodeUTF8toUTF16(function () { if (e === 0) { return null; } if (a >= this.limit) { throw RangeError("Illegal range: Truncated data, " + a + " < " + this.limit); } if ((e = this.view[a++]) === 0) { return null; } else { return e; } }.bind(this), c = g(), true); if (b) { this.offset = a; return c(); } else { return { string: c(), length: a - d }; } }; c.writeIString = function (a, b) { var c = b === undefined; if (c) { b = this.offset; } if (!this.noAssert) { if (typeof a != "string") { throw TypeError("Illegal str: Not a string"); } if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } var d; var e = b; d = k.calculateUTF16asUTF8(f(a), this.noAssert)[1]; b += 4 + d; var g = this.buffer.byteLength; if (b > g) { this.resize((g *= 2) > b ? g : b); } b -= 4 + d; if (this.littleEndian) { this.view[b + 3] = d >>> 24 & 255; this.view[b + 2] = d >>> 16 & 255; this.view[b + 1] = d >>> 8 & 255; this.view[b] = d & 255; } else { this.view[b] = d >>> 24 & 255; this.view[b + 1] = d >>> 16 & 255; this.view[b + 2] = d >>> 8 & 255; this.view[b + 3] = d & 255; } b += 4; k.encodeUTF16toUTF8(f(a), function (a) { this.view[b++] = a; }.bind(this)); if (b !== e + 4 + d) { throw RangeError("Illegal range: Truncated data, " + b + " == " + (b + 4 + d)); } if (c) { this.offset = b; return this; } else { return b - e; } }; c.readIString = function (a) { var c = a === undefined; if (c) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength); } } var d = a; var e = this.readUint32(a); var f = this.readUTF8String(e, b.METRICS_BYTES, a += 4); a += f.length; if (c) { this.offset = a; return f.string; } else { return { string: f.string, length: a - d }; } }; b.METRICS_CHARS = "c"; b.METRICS_BYTES = "b"; c.writeUTF8String = function (a, b) { var c; var d = b === undefined; if (d) { b = this.offset; } if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: " + b + " (not an integer)"); } if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength); } } var e = b; c = k.calculateUTF16asUTF8(f(a))[1]; b += c; var g = this.buffer.byteLength; if (b > g) { this.resize((g *= 2) > b ? g : b); } b -= c; k.encodeUTF16toUTF8(f(a), function (a) { this.view[b++] = a; }.bind(this)); if (d) { this.offset = b; return this; } else { return b - e; } }; c.writeString = c.writeUTF8String; b.calculateUTF8Chars = function (a) { return k.calculateUTF16asUTF8(f(a))[0]; }; b.calculateUTF8Bytes = function (a) { return k.calculateUTF16asUTF8(f(a))[1]; }; b.calculateString = b.calculateUTF8Bytes; c.readUTF8String = function (a, c, d) { if (typeof c == "number") { d = c; c = undefined; } var e = d === undefined; if (e) { d = this.offset; } if (c === undefined) { c = b.METRICS_CHARS; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal length: " + a + " (not an integer)"); } a |= 0; if (typeof d != "number" || d % 1 != 0) { throw TypeError("Illegal offset: " + d + " (not an integer)"); } if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength); } } var f; var h = 0; var i = d; if (c === b.METRICS_CHARS) { f = g(); k.decodeUTF8(function () { if (h < a && d < this.limit) { return this.view[d++]; } else { return null; } }.bind(this), function (a) { ++h; k.UTF8toUTF16(a, f); }); if (h !== a) { throw RangeError("Illegal range: Truncated data, " + h + " == " + a); } if (e) { this.offset = d; return f(); } else { return { string: f(), length: d - i }; } } if (c === b.METRICS_BYTES) { if (!this.noAssert) { if (typeof d != "number" || d % 1 != 0) { throw TypeError("Illegal offset: " + d + " (not an integer)"); } if ((d >>>= 0) < 0 || d + a > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + d + " (+" + a + ") <= " + this.buffer.byteLength); } } var j = d + a; k.decodeUTF8toUTF16(function () { if (d < j) { return this.view[d++]; } else { return null; } }.bind(this), f = g(), this.noAssert); if (d !== j) { throw RangeError("Illegal range: Truncated data, " + d + " == " + j); } if (e) { this.offset = d; return f(); } else { return { string: f(), length: d - i }; } } throw TypeError("Unsupported metrics: " + c); }; c.readString = c.readUTF8String; c.writeVString = function (a, c) { var d = c === undefined; if (d) { c = this.offset; } if (!this.noAssert) { if (typeof a != "string") { throw TypeError("Illegal str: Not a string"); } if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal offset: " + c + " (not an integer)"); } if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength); } } var e; var g; var h = c; e = k.calculateUTF16asUTF8(f(a), this.noAssert)[1]; g = b.calculateVarint32(e); c += g + e; var i = this.buffer.byteLength; if (c > i) { this.resize((i *= 2) > c ? i : c); } c -= g + e; c += this.writeVarint32(e, c); k.encodeUTF16toUTF8(f(a), function (a) { this.view[c++] = a; }.bind(this)); if (c !== h + e + g) { throw RangeError("Illegal range: Truncated data, " + c + " == " + (c + e + g)); } if (d) { this.offset = c; return this; } else { return c - h; } }; c.readVString = function (a) { var c = a === undefined; if (c) { a = this.offset; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength); } } var d = a; var e = this.readVarint32(a); var f = this.readUTF8String(e.value, b.METRICS_BYTES, a += e.length); a += f.length; if (c) { this.offset = a; return f.string; } else { return { string: f.string, length: a - d }; } }; c.append = function (a, c, d) { if (typeof c == "number" || typeof c != "string") { d = c; c = undefined; } var e = d === undefined; if (e) { d = this.offset; } if (!this.noAssert) { if (typeof d != "number" || d % 1 != 0) { throw TypeError("Illegal offset: " + d + " (not an integer)"); } if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength); } } if (!(a instanceof b)) { a = b.wrap(a, c); } var f = a.limit - a.offset; if (f <= 0) { return this; } d += f; var g = this.buffer.byteLength; if (d > g) { this.resize((g *= 2) > d ? g : d); } d -= f; this.view.set(a.view.subarray(a.offset, a.limit), d); a.offset += f; if (e) { this.offset += f; } return this; }; c.appendTo = function (a, b) { a.append(this, b); return this; }; c.assert = function (a) { this.noAssert = !a; return this; }; c.capacity = function () { return this.buffer.byteLength; }; c.clear = function () { this.offset = 0; this.limit = this.buffer.byteLength; this.markedOffset = -1; return this; }; c.clone = function (a) { var c = new b(0, this.littleEndian, this.noAssert); if (a) { c.buffer = new ArrayBuffer(this.buffer.byteLength); c.view = new Uint8Array(c.buffer); } else { c.buffer = this.buffer; c.view = this.view; } c.offset = this.offset; c.markedOffset = this.markedOffset; c.limit = this.limit; return c; }; c.compact = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } b >>>= 0; if (a < 0 || a > b || b > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength); } } if (a === 0 && b === this.buffer.byteLength) { return this; } var c = b - a; if (c === 0) { this.buffer = d; this.view = null; if (this.markedOffset >= 0) { this.markedOffset -= a; } this.offset = 0; this.limit = 0; return this; } var e = new ArrayBuffer(c); var f = new Uint8Array(e); f.set(this.view.subarray(a, b)); this.buffer = e; this.view = f; if (this.markedOffset >= 0) { this.markedOffset -= a; } this.offset = 0; this.limit = c; return this; }; c.copy = function (a, c) { if (a === undefined) { a = this.offset; } if (c === undefined) { c = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } c >>>= 0; if (a < 0 || a > c || c > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + c + " <= " + this.buffer.byteLength); } } if (a === c) { return new b(0, this.littleEndian, this.noAssert); } var d = c - a; var e = new b(d, this.littleEndian, this.noAssert); e.offset = 0; e.limit = d; if (e.markedOffset >= 0) { e.markedOffset -= a; } this.copyTo(e, 0, a, c); return e; }; c.copyTo = function (a, c, d, e) { var f; var g; if (!this.noAssert && !b.isByteBuffer(a)) { throw TypeError("Illegal target: Not a ByteBuffer"); } c = (g = c === undefined) ? a.offset : c | 0; d = (f = d === undefined) ? this.offset : d | 0; e = e === undefined ? this.limit : e | 0; if (c < 0 || c > a.buffer.byteLength) { throw RangeError("Illegal target range: 0 <= " + c + " <= " + a.buffer.byteLength); } if (d < 0 || e > this.buffer.byteLength) { throw RangeError("Illegal source range: 0 <= " + d + " <= " + this.buffer.byteLength); } var h = e - d; if (h === 0) { return a; } else { a.ensureCapacity(c + h); a.view.set(this.view.subarray(d, e), c); if (f) { this.offset += h; } if (g) { a.offset += h; } return this; } }; c.ensureCapacity = function (a) { var b = this.buffer.byteLength; if (b < a) { return this.resize((b *= 2) > a ? b : a); } else { return this; } }; c.fill = function (a, b, c) { var d = b === undefined; if (d) { b = this.offset; } if (typeof a == "string" && a.length > 0) { a = a.charCodeAt(0); } if (b === undefined) { b = this.offset; } if (c === undefined) { c = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal value: " + a + " (not an integer)"); } a |= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } b >>>= 0; if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } c >>>= 0; if (b < 0 || b > c || c > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + b + " <= " + c + " <= " + this.buffer.byteLength); } } if (b >= c) { return this; } while (b < c) { this.view[b++] = a; } if (d) { this.offset = b; } return this; }; c.flip = function () { this.limit = this.offset; this.offset = 0; return this; }; c.mark = function (a) { a = a === undefined ? this.offset : a; if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal offset: " + a + " (not an integer)"); } if ((a >>>= 0) < 0 || a + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + a + " (+0) <= " + this.buffer.byteLength); } } this.markedOffset = a; return this; }; c.order = function (a) { if (!this.noAssert && typeof a != "boolean") { throw TypeError("Illegal littleEndian: Not a boolean"); } this.littleEndian = !!a; return this; }; c.LE = function (a) { this.littleEndian = a === undefined || !!a; return this; }; c.BE = function (a) { this.littleEndian = a !== undefined && !a; return this; }; c.prepend = function (a, c, d) { if (typeof c == "number" || typeof c != "string") { d = c; c = undefined; } var e = d === undefined; if (e) { d = this.offset; } if (!this.noAssert) { if (typeof d != "number" || d % 1 != 0) { throw TypeError("Illegal offset: " + d + " (not an integer)"); } if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) { throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength); } } if (!(a instanceof b)) { a = b.wrap(a, c); } var f = a.limit - a.offset; if (f <= 0) { return this; } var g = f - d; if (g > 0) { var h = new ArrayBuffer(this.buffer.byteLength + g); var i = new Uint8Array(h); i.set(this.view.subarray(d, this.buffer.byteLength), f); this.buffer = h; this.view = i; this.offset += g; if (this.markedOffset >= 0) { this.markedOffset += g; } this.limit += g; d += g; } else { new Uint8Array(this.buffer); } this.view.set(a.view.subarray(a.offset, a.limit), d - f); a.offset = a.limit; if (e) { this.offset -= f; } return this; }; c.prependTo = function (a, b) { a.prepend(this, b); return this; }; c.printDebug = function (a) { if (typeof a != "function") { a = console.log.bind(console); } a(this.toString() + "\n-------------------------------------------------------------------\n" + this.toDebug(true)); }; c.remaining = function () { return this.limit - this.offset; }; c.reset = function () { if (this.markedOffset >= 0) { this.offset = this.markedOffset; this.markedOffset = -1; } else { this.offset = 0; } return this; }; c.resize = function (a) { if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal capacity: " + a + " (not an integer)"); } if ((a |= 0) < 0) { throw RangeError("Illegal capacity: 0 <= " + a); } } if (this.buffer.byteLength < a) { var b = new ArrayBuffer(a); var c = new Uint8Array(b); c.set(this.view); this.buffer = b; this.view = c; } return this; }; c.reverse = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } b >>>= 0; if (a < 0 || a > b || b > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength); } } if (a !== b) { Array.prototype.reverse.call(this.view.subarray(a, b)); } return this; }; c.skip = function (a) { if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal length: " + a + " (not an integer)"); } a |= 0; } var b = this.offset + a; if (!this.noAssert && (b < 0 || b > this.buffer.byteLength)) { throw RangeError("Illegal length: 0 <= " + this.offset + " + " + a + " <= " + this.buffer.byteLength); } this.offset = b; return this; }; c.slice = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } b >>>= 0; if (a < 0 || a > b || b > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength); } } var c = this.clone(); c.offset = a; c.limit = b; return c; }; c.toBuffer = function (a) { var b = this.offset; var c = this.limit; if (!this.noAssert) { if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal offset: Not an integer"); } b >>>= 0; if (typeof c != "number" || c % 1 != 0) { throw TypeError("Illegal limit: Not an integer"); } c >>>= 0; if (b < 0 || b > c || c > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + b + " <= " + c + " <= " + this.buffer.byteLength); } } if (!a && b === 0 && c === this.buffer.byteLength) { return this.buffer; } if (b === c) { return d; } var e = new ArrayBuffer(c - b); new Uint8Array(e).set(new Uint8Array(this.buffer).subarray(b, c), 0); return e; }; c.toArrayBuffer = c.toBuffer; c.toString = function (a, b, c) { if (a === undefined) { return "ByteBufferAB(offset=" + this.offset + ",markedOffset=" + this.markedOffset + ",limit=" + this.limit + ",capacity=" + this.capacity() + ")"; } if (typeof a == "number") { c = b = a = "utf8"; } switch (a) { case "utf8": return this.toUTF8(b, c); case "base64": return this.toBase64(b, c); case "hex": return this.toHex(b, c); case "binary": return this.toBinary(b, c); case "debug": return this.toDebug(); case "columns": return this.toColumns(); default: throw Error("Unsupported encoding: " + a); } }; var j = function () { for (var a = {}, b = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47], c = [], d = 0, e = b.length; d < e; ++d) { c[b[d]] = d; } a.encode = function (a, c) { for (var d, e; (d = a()) !== null;) { c(b[d >> 2 & 63]); e = (d & 3) << 4; if ((d = a()) !== null) { c(b[((e |= d >> 4 & 15) | d >> 4 & 15) & 63]); e = (d & 15) << 2; if ((d = a()) !== null) { c(b[(e | d >> 6 & 3) & 63]); c(b[d & 63]); } else { c(b[e & 63]); c(61); } } else { c(b[e & 63]); c(61); c(61); } } }; a.decode = function (a, b) { var d; var e; var f; function g(a) { throw Error("Illegal character code: " + a); } while ((d = a()) !== null) { if ((e = c[d]) === undefined) { g(d); } if ((d = a()) !== null && ((f = c[d]) === undefined && g(d), b(e << 2 >>> 0 | (f & 48) >> 4), (d = a()) !== null)) { if ((e = c[d]) === undefined) { if (d === 61) { break; } g(d); } b((f & 15) << 4 >>> 0 | (e & 60) >> 2); if ((d = a()) !== null) { if ((f = c[d]) === undefined) { if (d === 61) { break; } g(d); } b((e & 3) << 6 >>> 0 | f); } } } }; a.test = function (a) { return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a); }; return a; }(); c.toBase64 = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } b |= 0; if ((a |= 0) < 0 || b > this.capacity || a > b) { throw RangeError("begin, end"); } var c; j.encode(function () { if (a < b) { return this.view[a++]; } else { return null; } }.bind(this), c = g()); return c(); }; b.fromBase64 = function (a, c) { if (typeof a != "string") { throw TypeError("str"); } var d = new b(a.length / 4 * 3, c); var e = 0; j.decode(f(a), function (a) { d.view[e++] = a; }); d.limit = e; return d; }; b.btoa = function (a) { return b.fromBinary(a).toBase64(); }; b.atob = function (a) { return b.fromBase64(a).toBinary(); }; c.toBinary = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } b |= 0; if ((a |= 0) < 0 || b > this.capacity() || a > b) { throw RangeError("begin, end"); } if (a === b) { return ""; } for (var c = [], d = []; a < b;) { c.push(this.view[a++]); if (c.length >= 1024) { d.push(String.fromCharCode.apply(String, c)); c = []; } } return d.join("") + String.fromCharCode.apply(String, c); }; b.fromBinary = function (a, c) { if (typeof a != "string") { throw TypeError("str"); } for (var d, e = 0, f = a.length, g = new b(f, c); e < f;) { if ((d = a.charCodeAt(e)) > 255) { throw RangeError("illegal char code: " + d); } g.view[e++] = d; } g.limit = f; return g; }; c.toDebug = function (a) { for (var b, c = -1, d = this.buffer.byteLength, e = "", f = "", g = ""; c < d;) { if (c !== -1) { e += (b = this.view[c]) < 16 ? "0" + b.toString(16).toUpperCase() : b.toString(16).toUpperCase(); if (a) { f += b > 32 && b < 127 ? String.fromCharCode(b) : "."; } } ++c; if (a && c > 0 && c % 16 == 0 && c !== d) { while (e.length < 51) { e += " "; } g += e + f + "\n"; e = f = ""; } if (c === this.offset && c === this.limit) { e += c === this.markedOffset ? "!" : "|"; } else if (c === this.offset) { e += c === this.markedOffset ? "[" : "<"; } else if (c === this.limit) { e += c === this.markedOffset ? "]" : ">"; } else { e += c === this.markedOffset ? "'" : a || c !== 0 && c !== d ? " " : ""; } } if (a && e !== " ") { while (e.length < 51) { e += " "; } g += e + f + "\n"; } if (a) { return g; } else { return e; } }; b.fromDebug = function (a, c, d) { for (var e, f, g = a.length, h = new b((g + 1) / 3 | 0, c, d), i = 0, j = 0, k = false, l = false, m = false, n = false, o = false; i < g;) { switch (e = a.charAt(i++)) { case "!": if (!d) { if (l || m || n) { o = true; break; } l = m = n = true; } h.offset = h.markedOffset = h.limit = j; k = false; break; case "|": if (!d) { if (l || n) { o = true; break; } l = n = true; } h.offset = h.limit = j; k = false; break; case "[": if (!d) { if (l || m) { o = true; break; } l = m = true; } h.offset = h.markedOffset = j; k = false; break; case "<": if (!d) { if (l) { o = true; break; } l = true; } h.offset = j; k = false; break; case "]": if (!d) { if (n || m) { o = true; break; } n = m = true; } h.limit = h.markedOffset = j; k = false; break; case ">": if (!d) { if (n) { o = true; break; } n = true; } h.limit = j; k = false; break; case "'": if (!d) { if (m) { o = true; break; } m = true; } h.markedOffset = j; k = false; break; case " ": k = false; break; default: if (!d && k) { o = true; break; } f = parseInt(e + a.charAt(i++), 16); if (!d && (isNaN(f) || f < 0 || f > 255)) { throw TypeError("Illegal str: Not a debug encoded string"); } h.view[j++] = f; k = true; } if (o) { throw TypeError("Illegal str: Invalid symbol at " + i); } } if (!d) { if (!l || !n) { throw TypeError("Illegal str: Missing offset or limit"); } if (j < h.buffer.byteLength) { throw TypeError("Illegal str: Not a debug encoded string (is it hex?) " + j + " < " + g); } } return h; }; c.toHex = function (a, b) { a = a === undefined ? this.offset : a; b = b === undefined ? this.limit : b; if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } b >>>= 0; if (a < 0 || a > b || b > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength); } } for (var c, d = new Array(b - a); a < b;) { if ((c = this.view[a++]) < 16) { d.push("0", c.toString(16)); } else { d.push(c.toString(16)); } } return d.join(""); }; b.fromHex = function (a, c, d) { if (!d) { if (typeof a != "string") { throw TypeError("Illegal str: Not a string"); } if (a.length % 2 != 0) { throw TypeError("Illegal str: Length not a multiple of 2"); } } for (var e, f = a.length, g = new b(f / 2 | 0, c), h = 0, i = 0; h < f; h += 2) { e = parseInt(a.substring(h, h + 2), 16); if (!d && (!isFinite(e) || e < 0 || e > 255)) { throw TypeError("Illegal str: Contains non-hex characters"); } g.view[i++] = e; } g.limit = i; return g; }; var k = function () { var a = { MAX_CODEPOINT: 1114111, encodeUTF8: function (a, b) { var c = null; for (typeof a == "number" && (c = a, a = function () { return null; }); c !== null || (c = a()) !== null;) { if (c < 128) { b(c & 127); } else if (c < 2048) { b(c >> 6 & 31 | 192); b(c & 63 | 128); } else if (c < 65536) { b(c >> 12 & 15 | 224); b(c >> 6 & 63 | 128); b(c & 63 | 128); } else { b(c >> 18 & 7 | 240); b(c >> 12 & 63 | 128); b(c >> 6 & 63 | 128); b(c & 63 | 128); } c = null; } }, decodeUTF8: function (a, b) { for (var c, d, e, f, g = function (a) { a = a.slice(0, a.indexOf(null)); var b = Error(a.toString()); b.name = "TruncatedError"; b.bytes = a; throw b; }; (c = a()) !== null;) { if ((c & 128) == 0) { b(c); } else if ((c & 224) == 192) { if ((d = a()) === null) { g([c, d]); } b((c & 31) << 6 | d & 63); } else if ((c & 240) == 224) { if ((d = a()) === null || (e = a()) === null) { g([c, d, e]); } b((c & 15) << 12 | (d & 63) << 6 | e & 63); } else { if ((c & 248) != 240) { throw RangeError("Illegal starting byte: " + c); } if ((d = a()) === null || (e = a()) === null || (f = a()) === null) { g([c, d, e, f]); } b((c & 7) << 18 | (d & 63) << 12 | (e & 63) << 6 | f & 63); } } }, UTF16toUTF8: function (a, b) { for (var c, d = null; (c = d !== null ? d : a()) !== null;) { if (c >= 55296 && c <= 57343 && (d = a()) !== null && d >= 56320 && d <= 57343) { b((c - 55296) * 1024 + d - 56320 + 65536); d = null; } else { b(c); } } if (d !== null) { b(d); } }, UTF8toUTF16: function (a, b) { var c = null; for (typeof a == "number" && (c = a, a = function () { return null; }); c !== null || (c = a()) !== null;) { if (c <= 65535) { b(c); } else { b(55296 + ((c -= 65536) >> 10)); b(c % 1024 + 56320); } c = null; } }, encodeUTF16toUTF8: function (b, c) { a.UTF16toUTF8(b, function (b) { a.encodeUTF8(b, c); }); }, decodeUTF8toUTF16: function (b, c) { a.decodeUTF8(b, function (b) { a.UTF8toUTF16(b, c); }); }, calculateCodePoint: function (a) { if (a < 128) { return 1; } else if (a < 2048) { return 2; } else if (a < 65536) { return 3; } else { return 4; } }, calculateUTF8: function (a) { for (var b, c = 0; (b = a()) !== null;) { c += b < 128 ? 1 : b < 2048 ? 2 : b < 65536 ? 3 : 4; } return c; }, calculateUTF16asUTF8: function (b) { var c = 0; var d = 0; a.UTF16toUTF8(b, function (a) { ++c; d += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; }); return [c, d]; } }; return a; }(); c.toUTF8 = function (a, b) { if (a === undefined) { a = this.offset; } if (b === undefined) { b = this.limit; } if (!this.noAssert) { if (typeof a != "number" || a % 1 != 0) { throw TypeError("Illegal begin: Not an integer"); } a >>>= 0; if (typeof b != "number" || b % 1 != 0) { throw TypeError("Illegal end: Not an integer"); } b >>>= 0; if (a < 0 || a > b || b > this.buffer.byteLength) { throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength); } } var c; try { k.decodeUTF8toUTF16(function () { if (a < b) { return this.view[a++]; } else { return null; } }.bind(this), c = g()); } catch (c) { if (a !== b) { throw RangeError("Illegal range: Truncated data, " + a + " != " + b); } } return c(); }; b.fromUTF8 = function (a, c, d) { if (!d && typeof a != "string") { throw TypeError("Illegal str: Not a string"); } var e = new b(k.calculateUTF16asUTF8(f(a), true)[1], c, d); var g = 0; k.encodeUTF16toUTF8(f(a), function (a) { e.view[g++] = a; }); e.limit = g; return e; }; return b; }; if ((f = d.apply(b, e)) !== undefined) { a.exports = f; } }, 924: (a, b, c) => { 'use strict'; var d = c(210); var e = c(559); var f = e(d("String.prototype.indexOf")); a.exports = function (a, b) { var c = d(a, !!b); if (typeof c == "function" && f(a, ".prototype.") > -1) { return e(c); } else { return c; } }; }, 559: (a, b, c) => { 'use strict'; var d = c(612); var e = c(210); var f = e("%Function.prototype.apply%"); var g = e("%Function.prototype.call%"); var h = e("%Reflect.apply%", true) || d.call(g, f); var i = e("%Object.getOwnPropertyDescriptor%", true); var j = e("%Object.defineProperty%", true); var k = e("%Math.max%"); if (j) { try { j({}, "a", { value: 1 }); } catch (a) { j = null; } } a.exports = function (a) { var b = h(d, g, arguments); if (i && j && i(b, "length").configurable) { j(b, "length", { value: 1 + k(0, a.length - (arguments.length - 1)) }); } return b; }; function l() { return h(d, f, arguments); } if (j) { j(a.exports, "apply", { value: l }); } else { a.exports.apply = l; } }, 187: a => { 'use strict'; function b(a, b, d) { d = d || 2; var f; var g; var h; var i; var l; var m; var o; var p = b && b.length; var q = p ? b[0] * d : a.length; var r = c(a, 0, q, d, true); var s = []; if (!r || r.next === r.prev) { return s; } if (p) { r = function (a, b, d, e) { var f; var g; var h; var i = []; f = 0; g = b.length; for (; f < g; f++) { if ((h = c(a, b[f] * e, f < g - 1 ? b[f + 1] * e : a.length, e, false)) === h.next) { h.steiner = true; } i.push(n(h)); } i.sort(j); f = 0; for (; f < i.length; f++) { d = k(i[f], d); } return d; }(a, b, r, d); } if (a.length > d * 80) { f = h = a[0]; g = i = a[1]; for (var t = d; t < q; t += d) { if ((l = a[t]) < f) { f = l; } if ((m = a[t + 1]) < g) { g = m; } if (l > h) { h = l; } if (m > i) { i = m; } } o = (o = Math.max(h - f, i - g)) !== 0 ? 32767 / o : 0; } e(r, s, d, f, g, o, 0); return s; } function c(a, b, c, d, e) { var f; var g; if (e === A(a, b, c, d) > 0) { for (f = b; f < c; f += d) { g = x(f, a[f], a[f + 1], g); } } else { for (f = c - d; f >= b; f -= d) { g = x(f, a[f], a[f + 1], g); } } if (g && r(g, g.next)) { y(g); g = g.next; } return g; } function d(a, b) { if (!a) { return a; } b ||= a; var c; var d = a; do { c = false; if (d.steiner || !r(d, d.next) && q(d.prev, d, d.next) !== 0) { d = d.next; } else { y(d); if ((d = b = d.prev) === d.next) { break; } c = true; } } while (c || d !== b); return b; } function e(a, b, c, j, k, l, n) { if (a) { if (!n && l) { (function (a, b, c, d) { var e = a; do { if (e.z === 0) { e.z = m(e.x, e.y, b, c, d); } e.prevZ = e.prev; e.nextZ = e.next; e = e.next; } while (e !== a); e.prevZ.nextZ = null; e.prevZ = null; (function (a) { var b; var c; var d; var e; var f; var g; var h; var i; var j = 1; do { c = a; a = null; f = null; g = 0; while (c) { g++; d = c; h = 0; b = 0; for (; b < j && (h++, d = d.nextZ); b++); for (i = j; h > 0 || i > 0 && d;) { if (h !== 0 && (i === 0 || !d || c.z <= d.z)) { e = c; c = c.nextZ; h--; } else { e = d; d = d.nextZ; i--; } if (f) { f.nextZ = e; } else { a = e; } e.prevZ = f; f = e; } c = d; } f.nextZ = null; j *= 2; } while (g > 1); })(e); })(a, j, k, l); } for (var o, p, q = a; a.prev !== a.next;) { o = a.prev; p = a.next; if (l ? g(a, j, k, l) : f(a)) { b.push(o.i / c | 0); b.push(a.i / c | 0); b.push(p.i / c | 0); y(a); a = p.next; q = p.next; } else if ((a = p) === q) { if (n) { if (n === 1) { e(a = h(d(a), b, c), b, c, j, k, l, 2); } else if (n === 2) { i(a, b, c, j, k, l); } } else { e(d(a), b, c, j, k, l, 1); } break; } } } } function f(a) { var b = a.prev; var c = a; var d = a.next; if (q(b, c, d) >= 0) { return false; } for (var e = b.x, f = c.x, g = d.x, h = b.y, i = c.y, j = d.y, k = e < f ? e < g ? e : g : f < g ? f : g, l = h < i ? h < j ? h : j : i < j ? i : j, m = e > f ? e > g ? e : g : f > g ? f : g, n = h > i ? h > j ? h : j : i > j ? i : j, p = d.next; p !== b;) { if (p.x >= k && p.x <= m && p.y >= l && p.y <= n && o(e, h, f, i, g, j, p.x, p.y) && q(p.prev, p, p.next) >= 0) { return false; } p = p.next; } return true; } function g(a, b, c, d) { var e = a.prev; var f = a; var g = a.next; if (q(e, f, g) >= 0) { return false; } for (var h = e.x, i = f.x, j = g.x, k = e.y, l = f.y, n = g.y, p = h < i ? h < j ? h : j : i < j ? i : j, r = k < l ? k < n ? k : n : l < n ? l : n, s = h > i ? h > j ? h : j : i > j ? i : j, t = k > l ? k > n ? k : n : l > n ? l : n, u = m(p, r, b, c, d), v = m(s, t, b, c, d), w = a.prevZ, x = a.nextZ; w && w.z >= u && x && x.z <= v;) { if (w.x >= p && w.x <= s && w.y >= r && w.y <= t && w !== e && w !== g && o(h, k, i, l, j, n, w.x, w.y) && q(w.prev, w, w.next) >= 0) { return false; } w = w.prevZ; if (x.x >= p && x.x <= s && x.y >= r && x.y <= t && x !== e && x !== g && o(h, k, i, l, j, n, x.x, x.y) && q(x.prev, x, x.next) >= 0) { return false; } x = x.nextZ; } while (w && w.z >= u) { if (w.x >= p && w.x <= s && w.y >= r && w.y <= t && w !== e && w !== g && o(h, k, i, l, j, n, w.x, w.y) && q(w.prev, w, w.next) >= 0) { return false; } w = w.prevZ; } while (x && x.z <= v) { if (x.x >= p && x.x <= s && x.y >= r && x.y <= t && x !== e && x !== g && o(h, k, i, l, j, n, x.x, x.y) && q(x.prev, x, x.next) >= 0) { return false; } x = x.nextZ; } return true; } function h(a, b, c) { var e = a; do { var f = e.prev; var g = e.next.next; if (!r(f, g) && s(f, e, e.next, g) && v(f, g) && v(g, f)) { b.push(f.i / c | 0); b.push(e.i / c | 0); b.push(g.i / c | 0); y(e); y(e.next); e = a = g; } e = e.next; } while (e !== a); return d(e); } function i(a, b, c, f, g, h) { var i = a; do { for (var j = i.next.next; j !== i.prev;) { if (i.i !== j.i && p(i, j)) { var k = w(i, j); i = d(i, i.next); k = d(k, k.next); e(i, b, c, f, g, h, 0); e(k, b, c, f, g, h, 0); return; } j = j.next; } i = i.next; } while (i !== a); } function j(a, b) { return a.x - b.x; } function k(a, b) { var c = function (a, b) { var c; var d = b; var e = a.x; var f = a.y; var g = -Infinity; do { if (f <= d.y && f >= d.next.y && d.next.y !== d.y) { var h = d.x + (f - d.y) * (d.next.x - d.x) / (d.next.y - d.y); if (h <= e && h > g && (g = h, c = d.x < d.next.x ? d : d.next, h === e)) { return c; } } d = d.next; } while (d !== b); if (!c) { return null; } var i; var j = c; var k = c.x; var m = c.y; var n = Infinity; d = c; do { if (e >= d.x && d.x >= k && e !== d.x && o(f < m ? e : g, f, k, m, f < m ? g : e, f, d.x, d.y)) { i = Math.abs(f - d.y) / (e - d.x); if (v(d, a) && (i < n || i === n && (d.x > c.x || d.x === c.x && l(c, d)))) { c = d; n = i; } } d = d.next; } while (d !== j); return c; }(a, b); if (!c) { return b; } var e = w(c, a); d(e, e.next); return d(c, c.next); } function l(a, b) { return q(a.prev, a, b.prev) < 0 && q(b.next, a, a.next) < 0; } function m(a, b, c, d, e) { return (a = ((a = ((a = ((a = ((a = (a - c) * e | 0) | a << 8) & 16711935) | a << 4) & 252645135) | a << 2) & 858993459) | a << 1) & 1431655765) | (b = ((b = ((b = ((b = ((b = (b - d) * e | 0) | b << 8) & 16711935) | b << 4) & 252645135) | b << 2) & 858993459) | b << 1) & 1431655765) << 1; } function n(a) { var b = a; var c = a; do { if (b.x < c.x || b.x === c.x && b.y < c.y) { c = b; } b = b.next; } while (b !== a); return c; } function o(a, b, c, d, e, f, g, h) { return (e - g) * (b - h) >= (a - g) * (f - h) && (a - g) * (d - h) >= (c - g) * (b - h) && (c - g) * (f - h) >= (e - g) * (d - h); } function p(a, b) { return a.next.i !== b.i && a.prev.i !== b.i && ! function (a, b) { var c = a; do { if (c.i !== a.i && c.next.i !== a.i && c.i !== b.i && c.next.i !== b.i && s(c, c.next, a, b)) { return true; } c = c.next; } while (c !== a); return false; }(a, b) && (v(a, b) && v(b, a) && function (a, b) { var c = a; var d = false; var e = (a.x + b.x) / 2; var f = (a.y + b.y) / 2; do { if (c.y > f != c.next.y > f && c.next.y !== c.y && e < (c.next.x - c.x) * (f - c.y) / (c.next.y - c.y) + c.x) { d = !d; } c = c.next; } while (c !== a); return d; }(a, b) && (q(a.prev, a, b.prev) || q(a, b.prev, b)) || r(a, b) && q(a.prev, a, a.next) > 0 && q(b.prev, b, b.next) > 0); } function q(a, b, c) { return (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y); } function r(a, b) { return a.x === b.x && a.y === b.y; } function s(a, b, c, d) { var e = u(q(a, b, c)); var f = u(q(a, b, d)); var g = u(q(c, d, a)); var h = u(q(c, d, b)); return e !== f && g !== h || e === 0 && !!t(a, c, b) || f === 0 && !!t(a, d, b) || g === 0 && !!t(c, a, d) || h === 0 && !!t(c, b, d); } function t(a, b, c) { return b.x <= Math.max(a.x, c.x) && b.x >= Math.min(a.x, c.x) && b.y <= Math.max(a.y, c.y) && b.y >= Math.min(a.y, c.y); } function u(a) { if (a > 0) { return 1; } else if (a < 0) { return -1; } else { return 0; } } function v(a, b) { if (q(a.prev, a, a.next) < 0) { return q(a, b, a.next) >= 0 && q(a, a.prev, b) >= 0; } else { return q(a, b, a.prev) < 0 || q(a, a.next, b) < 0; } } function w(a, b) { var c = new z(a.i, a.x, a.y); var d = new z(b.i, b.x, b.y); var e = a.next; var f = b.prev; a.next = b; b.prev = a; c.next = e; e.prev = c; d.next = c; c.prev = d; f.next = d; d.prev = f; return d; } function x(a, b, c, d) { var e = new z(a, b, c); if (d) { e.next = d.next; e.prev = d; d.next.prev = e; d.next = e; } else { e.prev = e; e.next = e; } return e; } function y(a) { a.next.prev = a.prev; a.prev.next = a.next; if (a.prevZ) { a.prevZ.nextZ = a.nextZ; } if (a.nextZ) { a.nextZ.prevZ = a.prevZ; } } function z(a, b, c) { this.i = a; this.x = b; this.y = c; this.prev = null; this.next = null; this.z = 0; this.prevZ = null; this.nextZ = null; this.steiner = false; } function A(a, b, c, d) { for (var e = 0, f = b, g = c - d; f < c; f += d) { e += (a[g] - a[f]) * (a[f + 1] + a[g + 1]); g = f; } return e; } a.exports = b; a.exports.default = b; b.deviation = function (a, b, c, d) { var e = b && b.length; var f = e ? b[0] * c : a.length; var g = Math.abs(A(a, 0, f, c)); if (e) { for (var h = 0, i = b.length; h < i; h++) { var j = b[h] * c; var k = h < i - 1 ? b[h + 1] * c : a.length; g -= Math.abs(A(a, j, k, c)); } } var l = 0; for (h = 0; h < d.length; h += 3) { var m = d[h] * c; var n = d[h + 1] * c; var o = d[h + 2] * c; l += Math.abs((a[m] - a[o]) * (a[n + 1] - a[m + 1]) - (a[m] - a[n]) * (a[o + 1] - a[m + 1])); } if (g === 0 && l === 0) { return 0; } else { return Math.abs((l - g) / g); } }; b.flatten = function (a) { for (var b = a[0][0].length, c = { vertices: [], holes: [], dimensions: b }, d = 0, e = 0; e < a.length; e++) { for (var f = 0; f < a[e].length; f++) { for (var g = 0; g < b; g++) { c.vertices.push(a[e][f][g]); } } if (e > 0) { d += a[e - 1].length; c.holes.push(d); } } return c; }; }, 729: a => { 'use strict'; var b = Object.prototype.hasOwnProperty; var c = "~"; function d() {} function e(a, b, c) { this.fn = a; this.context = b; this.once = c || false; } function f(a, b, d, f, g) { if (typeof d != "function") { throw new TypeError("The listener must be a function"); } var h = new e(d, f || a, g); var i = c ? c + b : b; if (a._events[i]) { if (a._events[i].fn) { a._events[i] = [a._events[i], h]; } else { a._events[i].push(h); } } else { a._events[i] = h; a._eventsCount++; } return a; } function g(a, b) { if (--a._eventsCount == 0) { a._events = new d(); } else { delete a._events[b]; } } function h() { this._events = new d(); this._eventsCount = 0; } if (Object.create) { d.prototype = Object.create(null); if (!new d().__proto__) { c = false; } } h.prototype.eventNames = function () { var a; var d; var e = []; if (this._eventsCount === 0) { return e; } for (d in a = this._events) { if (b.call(a, d)) { e.push(c ? d.slice(1) : d); } } if (Object.getOwnPropertySymbols) { return e.concat(Object.getOwnPropertySymbols(a)); } else { return e; } }; h.prototype.listeners = function (a) { var b = c ? c + a : a; var d = this._events[b]; if (!d) { return []; } if (d.fn) { return [d.fn]; } for (var e = 0, f = d.length, g = new Array(f); e < f; e++) { g[e] = d[e].fn; } return g; }; h.prototype.listenerCount = function (a) { var b = c ? c + a : a; var d = this._events[b]; if (d) { if (d.fn) { return 1; } else { return d.length; } } else { return 0; } }; h.prototype.emit = function (a, b, d, e, f, g) { var h = c ? c + a : a; if (!this._events[h]) { return false; } var i; var j; var k = this._events[h]; var l = arguments.length; if (k.fn) { if (k.once) { this.removeListener(a, k.fn, undefined, true); } switch (l) { case 1: k.fn.call(k.context); return true; case 2: k.fn.call(k.context, b); return true; case 3: k.fn.call(k.context, b, d); return true; case 4: k.fn.call(k.context, b, d, e); return true; case 5: k.fn.call(k.context, b, d, e, f); return true; case 6: k.fn.call(k.context, b, d, e, f, g); return true; } j = 1; i = new Array(l - 1); for (; j < l; j++) { i[j - 1] = arguments[j]; } k.fn.apply(k.context, i); } else { var m; var n = k.length; for (j = 0; j < n; j++) { if (k[j].once) { this.removeListener(a, k[j].fn, undefined, true); } switch (l) { case 1: k[j].fn.call(k[j].context); break; case 2: k[j].fn.call(k[j].context, b); break; case 3: k[j].fn.call(k[j].context, b, d); break; case 4: k[j].fn.call(k[j].context, b, d, e); break; default: if (!i) { m = 1; i = new Array(l - 1); for (; m < l; m++) { i[m - 1] = arguments[m]; } } k[j].fn.apply(k[j].context, i); } } } return true; }; h.prototype.on = function (a, b, c) { return f(this, a, b, c, false); }; h.prototype.once = function (a, b, c) { return f(this, a, b, c, true); }; h.prototype.removeListener = function (a, b, d, e) { var f = c ? c + a : a; if (!this._events[f]) { return this; } if (!b) { g(this, f); return this; } var h = this._events[f]; if (h.fn) { if (h.fn === b && (!e || !!h.once) && (!d || h.context === d)) { g(this, f); } } else { for (var i = 0, j = [], k = h.length; i < k; i++) { if (h[i].fn !== b || e && !h[i].once || d && h[i].context !== d) { j.push(h[i]); } } if (j.length) { this._events[f] = j.length === 1 ? j[0] : j; } else { g(this, f); } } return this; }; h.prototype.removeAllListeners = function (a) { var b; if (a) { b = c ? c + a : a; if (this._events[b]) { g(this, b); } } else { this._events = new d(); this._eventsCount = 0; } return this; }; h.prototype.off = h.prototype.removeListener; h.prototype.addListener = h.prototype.on; h.prefixed = c; h.EventEmitter = h; a.exports = h; }, 370: a => { 'use strict'; var b; var c = typeof Reflect == "object" ? Reflect : null; var d = c && typeof c.apply == "function" ? c.apply : function (a, b, c) { return Function.prototype.apply.call(a, b, c); }; b = c && typeof c.ownKeys == "function" ? c.ownKeys : Object.getOwnPropertySymbols ? function (a) { return Object.getOwnPropertyNames(a).concat(Object.getOwnPropertySymbols(a)); } : function (a) { return Object.getOwnPropertyNames(a); }; var e = Number.isNaN || function (a) { return a != a; }; function f() { f.init.call(this); } a.exports = f; a.exports.once = function (a, b) { return new Promise(function (c, d) { function e(c) { a.removeListener(b, f); d(c); } function f() { if (typeof a.removeListener == "function") { a.removeListener("error", e); } c([].slice.call(arguments)); } p(a, b, f, { once: true }); if (b !== "error") { (function (a, b, c) { if (typeof a.on == "function") { p(a, "error", b, { once: true }); } })(a, e); } }); }; f.EventEmitter = f; f.prototype._events = undefined; f.prototype._eventsCount = 0; f.prototype._maxListeners = undefined; var g = 10; function h(a) { if (typeof a != "function") { throw new TypeError("The \"listener\" argument must be of type Function. Received type " + typeof a); } } function i(a) { if (a._maxListeners === undefined) { return f.defaultMaxListeners; } else { return a._maxListeners; } } function j(a, b, c, d) { var e; var f; var g; var j; h(c); if ((f = a._events) === undefined) { f = a._events = Object.create(null); a._eventsCount = 0; } else { if (f.newListener !== undefined) { a.emit("newListener", b, c.listener ? c.listener : c); f = a._events; } g = f[b]; } if (g === undefined) { g = f[b] = c; ++a._eventsCount; } else { if (typeof g == "function") { g = f[b] = d ? [c, g] : [g, c]; } else if (d) { g.unshift(c); } else { g.push(c); } if ((e = i(a)) > 0 && g.length > e && !g.warned) { g.warned = true; var k = new Error("Possible EventEmitter memory leak detected. " + g.length + " " + String(b) + " listeners added. Use emitter.setMaxListeners() to increase limit"); k.name = "MaxListenersExceededWarning"; k.emitter = a; k.type = b; k.count = g.length; j = k; if (console && console.warn) { console.warn(j); } } } return a; } function k() { if (!this.fired) { this.target.removeListener(this.type, this.wrapFn); this.fired = true; if (arguments.length === 0) { return this.listener.call(this.target); } else { return this.listener.apply(this.target, arguments); } } } function l(a, b, c) { var d = { fired: false, wrapFn: undefined, target: a, type: b, listener: c }; var e = k.bind(d); e.listener = c; d.wrapFn = e; return e; } function m(a, b, c) { var d = a._events; if (d === undefined) { return []; } var e = d[b]; if (e === undefined) { return []; } else if (typeof e == "function") { if (c) { return [e.listener || e]; } else { return [e]; } } else if (c) { return function (a) { for (var b = new Array(a.length), c = 0; c < b.length; ++c) { b[c] = a[c].listener || a[c]; } return b; }(e); } else { return o(e, e.length); } } function n(a) { var b = this._events; if (b !== undefined) { var c = b[a]; if (typeof c == "function") { return 1; } if (c !== undefined) { return c.length; } } return 0; } function o(a, b) { for (var c = new Array(b), d = 0; d < b; ++d) { c[d] = a[d]; } return c; } function p(a, b, c, d) { if (typeof a.on == "function") { if (d.once) { a.once(b, c); } else { a.on(b, c); } } else { if (typeof a.addEventListener != "function") { throw new TypeError("The \"emitter\" argument must be of type EventEmitter. Received type " + typeof a); } a.addEventListener(b, function f(e) { if (d.once) { a.removeEventListener(b, f); } c(e); }); } } Object.defineProperty(f, "defaultMaxListeners", { enumerable: true, get: function () { return g; }, set: function (a) { if (typeof a != "number" || a < 0 || e(a)) { throw new RangeError("The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received " + a + "."); } g = a; } }); f.init = function () { if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) { this._events = Object.create(null); this._eventsCount = 0; } this._maxListeners = this._maxListeners || undefined; }; f.prototype.setMaxListeners = function (a) { if (typeof a != "number" || a < 0 || e(a)) { throw new RangeError("The value of \"n\" is out of range. It must be a non-negative number. Received " + a + "."); } this._maxListeners = a; return this; }; f.prototype.getMaxListeners = function () { return i(this); }; f.prototype.emit = function (a) { for (var b = [], c = 1; c < arguments.length; c++) { b.push(arguments[c]); } var e = a === "error"; var f = this._events; if (f !== undefined) { e = e && f.error === undefined; } else if (!e) { return false; } if (e) { var g; if (b.length > 0) { g = b[0]; } if (g instanceof Error) { throw g; } var h = new Error("Unhandled error." + (g ? " (" + g.message + ")" : "")); h.context = g; throw h; } var i = f[a]; if (i === undefined) { return false; } if (typeof i == "function") { d(i, this, b); } else { var j = i.length; var k = o(i, j); for (c = 0; c < j; ++c) { d(k[c], this, b); } } return true; }; f.prototype.addListener = function (a, b) { return j(this, a, b, false); }; f.prototype.on = f.prototype.addListener; f.prototype.prependListener = function (a, b) { return j(this, a, b, true); }; f.prototype.once = function (a, b) { h(b); this.on(a, l(this, a, b)); return this; }; f.prototype.prependOnceListener = function (a, b) { h(b); this.prependListener(a, l(this, a, b)); return this; }; f.prototype.removeListener = function (a, b) { var c; var d; var e; var f; var g; h(b); if ((d = this._events) === undefined) { return this; } if ((c = d[a]) === undefined) { return this; } if (c === b || c.listener === b) { if (--this._eventsCount == 0) { this._events = Object.create(null); } else { delete d[a]; if (d.removeListener) { this.emit("removeListener", a, c.listener || b); } } } else if (typeof c != "function") { e = -1; f = c.length - 1; for (; f >= 0; f--) { if (c[f] === b || c[f].listener === b) { g = c[f].listener; e = f; break; } } if (e < 0) { return this; } if (e === 0) { c.shift(); } else { (function (a, b) { for (; b + 1 < a.length; b++) { a[b] = a[b + 1]; } a.pop(); })(c, e); } if (c.length === 1) { d[a] = c[0]; } if (d.removeListener !== undefined) { this.emit("removeListener", a, g || b); } } return this; }; f.prototype.off = f.prototype.removeListener; f.prototype.removeAllListeners = function (a) { var b; var c; var d; if ((c = this._events) === undefined) { return this; } if (c.removeListener === undefined) { if (arguments.length === 0) { this._events = Object.create(null); this._eventsCount = 0; } else if (c[a] !== undefined) { if (--this._eventsCount == 0) { this._events = Object.create(null); } else { delete c[a]; } } return this; } if (arguments.length === 0) { var e; var f = Object.keys(c); for (d = 0; d < f.length; ++d) { if ((e = f[d]) !== "removeListener") { this.removeAllListeners(e); } } this.removeAllListeners("removeListener"); this._events = Object.create(null); this._eventsCount = 0; return this; } if (typeof (b = c[a]) == "function") { this.removeListener(a, b); } else if (b !== undefined) { for (d = b.length - 1; d >= 0; d--) { this.removeListener(a, b[d]); } } return this; }; f.prototype.listeners = function (a) { return m(this, a, true); }; f.prototype.rawListeners = function (a) { return m(this, a, false); }; f.listenerCount = function (a, b) { if (typeof a.listenerCount == "function") { return a.listenerCount(b); } else { return n.call(a, b); } }; f.prototype.listenerCount = n; f.prototype.eventNames = function () { if (this._eventsCount > 0) { return b(this._events); } else { return []; } }; }, 648: a => { 'use strict'; var b = Array.prototype.slice; var c = Object.prototype.toString; a.exports = function (a) { var d = this; if (typeof d != "function" || c.call(d) !== "[object Function]") { throw new TypeError("Function.prototype.bind called on incompatible " + d); } for (var e, f = b.call(arguments, 1), g = Math.max(0, d.length - f.length), h = [], i = 0; i < g; i++) { h.push("$" + i); } e = Function("binder", "return function (" + h.join(",") + "){ return binder.apply(this,arguments); }")(function () { if (this instanceof e) { var c = d.apply(this, f.concat(b.call(arguments))); if (Object(c) === c) { return c; } else { return this; } } return d.apply(a, f.concat(b.call(arguments))); }); if (d.prototype) { function a() {} a.prototype = d.prototype; e.prototype = new a(); a.prototype = null; } return e; }; }, 612: (a, b, c) => { 'use strict'; var d = c(648); a.exports = Function.prototype.bind || d; }, 210: (a, b, c) => { 'use strict'; var d; var e = SyntaxError; var f = Function; var g = TypeError; function h(a) { try { return f("\"use strict\"; return (" + a + ").constructor;")(); } catch (a) {} } var i = Object.getOwnPropertyDescriptor; if (i) { try { i({}, ""); } catch (a) { i = null; } } function j() { throw new g(); } var k = i ? function () { try { return j; } catch (a) { try { return i(arguments, "callee").get; } catch (a) { return j; } } }() : j; var l = c(405)(); var m = Object.getPrototypeOf || function (a) { return a.__proto__; }; var n = {}; var o = typeof Uint8Array == "undefined" ? d : m(Uint8Array); var p = { "%AggregateError%": typeof AggregateError == "undefined" ? d : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer == "undefined" ? d : ArrayBuffer, "%ArrayIteratorPrototype%": l ? m([][Symbol.iterator]()) : d, "%AsyncFromSyncIteratorPrototype%": d, "%AsyncFunction%": n, "%AsyncGenerator%": n, "%AsyncGeneratorFunction%": n, "%AsyncIteratorPrototype%": n, "%Atomics%": typeof Atomics == "undefined" ? d : Atomics, "%BigInt%": typeof BigInt == "undefined" ? d : BigInt, "%Boolean%": Boolean, "%DataView%": typeof DataView == "undefined" ? d : DataView, "%Date%": Date, "%decodeURI%": decodeURI, "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, "%Error%": Error, "%eval%": eval, "%EvalError%": EvalError, "%Float32Array%": typeof Float32Array == "undefined" ? d : Float32Array, "%Float64Array%": typeof Float64Array == "undefined" ? d : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry == "undefined" ? d : FinalizationRegistry, "%Function%": f, "%GeneratorFunction%": n, "%Int8Array%": typeof Int8Array == "undefined" ? d : Int8Array, "%Int16Array%": typeof Int16Array == "undefined" ? d : Int16Array, "%Int32Array%": typeof Int32Array == "undefined" ? d : Int32Array, "%isFinite%": isFinite, "%isNaN%": isNaN, "%IteratorPrototype%": l ? m(m([][Symbol.iterator]())) : d, "%JSON%": typeof JSON == "object" ? JSON : d, "%Map%": typeof Map == "undefined" ? d : Map, "%MapIteratorPrototype%": typeof Map != "undefined" && l ? m(new Map()[Symbol.iterator]()) : d, "%Math%": Math, "%Number%": Number, "%Object%": Object, "%parseFloat%": parseFloat, "%parseInt%": parseInt, "%Promise%": typeof Promise == "undefined" ? d : Promise, "%Proxy%": typeof Proxy == "undefined" ? d : Proxy, "%RangeError%": RangeError, "%ReferenceError%": ReferenceError, "%Reflect%": typeof Reflect == "undefined" ? d : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set == "undefined" ? d : Set, "%SetIteratorPrototype%": typeof Set != "undefined" && l ? m(new Set()[Symbol.iterator]()) : d, "%SharedArrayBuffer%": typeof SharedArrayBuffer == "undefined" ? d : SharedArrayBuffer, "%String%": String, "%StringIteratorPrototype%": l ? m("" [Symbol.iterator]()) : d, "%Symbol%": l ? Symbol : d, "%SyntaxError%": e, "%ThrowTypeError%": k, "%TypedArray%": o, "%TypeError%": g, "%Uint8Array%": typeof Uint8Array == "undefined" ? d : Uint8Array, "%Uint8ClampedArray%": typeof Uint8ClampedArray == "undefined" ? d : Uint8ClampedArray, "%Uint16Array%": typeof Uint16Array == "undefined" ? d : Uint16Array, "%Uint32Array%": typeof Uint32Array == "undefined" ? d : Uint32Array, "%URIError%": URIError, "%WeakMap%": typeof WeakMap == "undefined" ? d : WeakMap, "%WeakRef%": typeof WeakRef == "undefined" ? d : WeakRef, "%WeakSet%": typeof WeakSet == "undefined" ? d : WeakSet }; var q = function b(a) { var c; if (a === "%AsyncFunction%") { c = h("async function () {}"); } else if (a === "%GeneratorFunction%") { c = h("function* () {}"); } else if (a === "%AsyncGeneratorFunction%") { c = h("async function* () {}"); } else if (a === "%AsyncGenerator%") { var d = b("%AsyncGeneratorFunction%"); if (d) { c = d.prototype; } } else if (a === "%AsyncIteratorPrototype%") { var e = b("%AsyncGenerator%"); if (e) { c = m(e.prototype); } } p[a] = c; return c; }; var r = { "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], "%ArrayPrototype%": ["Array", "prototype"], "%ArrayProto_entries%": ["Array", "prototype", "entries"], "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], "%ArrayProto_keys%": ["Array", "prototype", "keys"], "%ArrayProto_values%": ["Array", "prototype", "values"], "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], "%BooleanPrototype%": ["Boolean", "prototype"], "%DataViewPrototype%": ["DataView", "prototype"], "%DatePrototype%": ["Date", "prototype"], "%ErrorPrototype%": ["Error", "prototype"], "%EvalErrorPrototype%": ["EvalError", "prototype"], "%Float32ArrayPrototype%": ["Float32Array", "prototype"], "%Float64ArrayPrototype%": ["Float64Array", "prototype"], "%FunctionPrototype%": ["Function", "prototype"], "%Generator%": ["GeneratorFunction", "prototype"], "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], "%Int8ArrayPrototype%": ["Int8Array", "prototype"], "%Int16ArrayPrototype%": ["Int16Array", "prototype"], "%Int32ArrayPrototype%": ["Int32Array", "prototype"], "%JSONParse%": ["JSON", "parse"], "%JSONStringify%": ["JSON", "stringify"], "%MapPrototype%": ["Map", "prototype"], "%NumberPrototype%": ["Number", "prototype"], "%ObjectPrototype%": ["Object", "prototype"], "%ObjProto_toString%": ["Object", "prototype", "toString"], "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], "%PromisePrototype%": ["Promise", "prototype"], "%PromiseProto_then%": ["Promise", "prototype", "then"], "%Promise_all%": ["Promise", "all"], "%Promise_reject%": ["Promise", "reject"], "%Promise_resolve%": ["Promise", "resolve"], "%RangeErrorPrototype%": ["RangeError", "prototype"], "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], "%RegExpPrototype%": ["RegExp", "prototype"], "%SetPrototype%": ["Set", "prototype"], "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], "%StringPrototype%": ["String", "prototype"], "%SymbolPrototype%": ["Symbol", "prototype"], "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], "%TypedArrayPrototype%": ["TypedArray", "prototype"], "%TypeErrorPrototype%": ["TypeError", "prototype"], "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], "%URIErrorPrototype%": ["URIError", "prototype"], "%WeakMapPrototype%": ["WeakMap", "prototype"], "%WeakSetPrototype%": ["WeakSet", "prototype"] }; var s = c(612); var t = c(642); var u = s.call(Function.call, Array.prototype.concat); var v = s.call(Function.apply, Array.prototype.splice); var w = s.call(Function.call, String.prototype.replace); var x = s.call(Function.call, String.prototype.slice); var y = s.call(Function.call, RegExp.prototype.exec); var z = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; var A = /\\(\\)?/g; function B(a, b) { var c; var d = a; if (t(r, d)) { d = "%" + (c = r[d])[0] + "%"; } if (t(p, d)) { var f = p[d]; if (f === n) { f = q(d); } if (f === undefined && !b) { throw new g("intrinsic " + a + " exists, but is not available. Please file an issue!"); } return { alias: c, name: d, value: f }; } throw new e("intrinsic " + a + " does not exist!"); } a.exports = function (a, b) { if (typeof a != "string" || a.length === 0) { throw new g("intrinsic name must be a non-empty string"); } if (arguments.length > 1 && typeof b != "boolean") { throw new g("\"allowMissing\" argument must be a boolean"); } if (y(/^%?[^%]*%?$/g, a) === null) { throw new e("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); } var c = function (a) { var b = x(a, 0, 1); var c = x(a, -1); if (b === "%" && c !== "%") { throw new e("invalid intrinsic syntax, expected closing `%`"); } if (c === "%" && b !== "%") { throw new e("invalid intrinsic syntax, expected opening `%`"); } var d = []; w(a, z, function (a, b, c, e) { d[d.length] = c ? w(e, A, "$1") : b || a; }); return d; }(a); var d = c.length > 0 ? c[0] : ""; var f = B("%" + d + "%", b); var h = f.name; var j = f.value; var k = false; var l = f.alias; if (l) { d = l[0]; v(c, u([0, 1], l)); } for (var m = 1, n = true; m < c.length; m += 1) { var o = c[m]; var q = x(o, 0, 1); var r = x(o, -1); if ((q === "\"" || q === "'" || q === "`" || r === "\"" || r === "'" || r === "`") && q !== r) { throw new e("property names with quotes must have matching quotes"); } if (o === "constructor" || !n) { k = true; } if (t(p, h = "%" + (d += "." + o) + "%")) { j = p[h]; } else if (j != null) { if (!(o in j)) { if (!b) { throw new g("base intrinsic for " + a + " exists, but the property is not available."); } return; } if (i && m + 1 >= c.length) { var s = i(j, o); j = (n = !!s) && "get" in s && !("originalValue" in s.get) ? s.get : j[o]; } else { n = t(j, o); j = j[o]; } if (n && !k) { p[h] = j; } } } return j; }; }, 573: (a, b, c) => { 'use strict'; const d = c(6).GrawlixPlugin; const e = c(6).FilterTemplate; const f = c(50); const g = { style: "nazi" }; var h = [{ word: "niggas", pattern: /n+[i1]+gg+[a@]+[s\$z]+/i, priority: 0, expandable: true }, { word: "niggers", pattern: /n+[i1]+gg+e+r+[s\$z]+/i, priority: 0, expandable: true }, { word: "nigga", pattern: /n+[\W023456789_]{0,42}[i1]+[\W023456789_]{0,42}g[\W\d_]{0,42}g+[\W\d_]{0,42}[a@]+(?!rd)/i, priority: 1, expandable: true }, { word: "nigger", pattern: /(\b|^|[^s])n+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}g[\W\d_]{0,42}g+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}r+/i, priority: 1, expandable: true, template: e.PRE }, { word: "migger", pattern: /m+[i1]+gg+[e3]+r+/i, priority: 1, expandable: true }, { word: "yigger", pattern: /y+[i1]+gg+[e3]+r+/i, priority: 1, expandable: true }, { word: "darkies", pattern: /d+[a@]+r+k+[i1]+[e3]+s+/i, priority: 0, expandable: true }, { word: "darkie", pattern: /d+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}r+[\W\d_]{0,42}k+[\W02-9_]{0,42}[i1]+[\W024-9_]{0,42}[e3]+/i, priority: 1, expandable: true }, { word: "shvatsas", pattern: /[s$z]+h+v+[a@]+t+[s$z]+[a@]+[s$z]+/i, priority: 0, expandable: true }, { word: "shvatsa", pattern: /[s$z]+h+v+[a@]+t+[s$z]+[a@]+/i, priority: 1, expandable: true }, { word: "spics", pattern: /(\b|^)[s$]+p+[i1]+c+k{0,32}[s$]+/i, priority: 0, expandable: true, template: e.PRE }, { word: "spic", pattern: /(\b|^)[s$]+[\W\d_]{0,42}p+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}c+(\b|$)/i, priority: 1, expandable: true, template: e.BETWEEN }, { word: "wetbacks", pattern: /w+[e3]+t+b+[a@]+c+k+[s$z]+/i, priority: 0, expandable: true }, { word: "wetback", pattern: /w+[e3]+t+b+[a@]+c+k+/i, priority: 1, expandable: true }, { word: "kikes", pattern: /k+[i1]+k+[e3]+[s$z]+/i, priority: 0, expandable: true }, { word: "kike", pattern: /k+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}k+[\W0124-9_]{0,42}[e3]+(\b|$)/i, priority: 1, expandable: true, template: e.POST }, { word: "gooks", pattern: /g+[\W1-9_]{0,42}[o0][\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}k+[\W\d_]{0,42}[s$]+/i, priority: 0, expandable: true }, { word: "gook", pattern: /(\b|^)g+[\W1-9_]{0,42}[o0][\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}k+(?!y)/i, priority: 1, expandable: true, template: e.PRE }, { word: "ragheads", pattern: /r+[a@]+g+[\W\d_]{0,42}h+[e3]+[a@]+d+[s$]+/i, priority: 0, expandable: true }, { word: "raghead", pattern: /r+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}g+[\W\d_]{0,42}h+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}[a@]+[\W\d_]{0,42}d+/i, priority: 1, expandable: true }, { word: "towelheads", pattern: /t+[o0]+w+[e3]+[l1]+[\W02-9_]{0,42}h+[e3]+[a@]+d+[s$]+/i, priority: 0, expandable: true }, { word: "towelhead", pattern: /t+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}w+[\W0-24-9_]{0,42}[e3]+[\W024-9_]{0,42}[l1]+[\W02-9_]{0,42}h+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}[a@]+[\W\d_]{0,42}d+/i, priority: 1, expandable: true }, { word: "injuns", pattern: /[i1]+n+j+u+n+[s$]+/i, priority: 0, expandable: true }, { word: "injun", pattern: /[i1]+[\W02-9_]{0,42}n+[\W\d_]{0,42}j+[\W\d_]{0,42}u+[\W\d_]{0,42}n+(\b|$)/i, priority: 1, expandable: true, template: e.POST }, { word: "squaws", pattern: /(\b|^)[s$]+q+u+[a@]+w+s+/i, priority: 0, expandable: true, template: e.PRE }, { word: "squaw", pattern: /(\b|^)[s$]+q+u+[a@]+w+(\b|$)/i, priority: 1, expandable: true, template: e.BETWEEN }, { word: "golliwogs", pattern: /g[o0][l1][l1][i1y]w[o0]g+[s$]/i, priority: 0, expandable: true }, { word: "golliwog", pattern: /g[o0][l1][l1][i1y]w[o0]g+/i, priority: 1, expandable: true }, { word: "wogs", pattern: /w+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}g+[\W\d_]{0,42}[s$]+/i, priority: 1, expandable: true }, { word: "wog", pattern: /(\b|^)w+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}g+(\b|$)/i, priority: 2, expandable: true, template: e.BETWEEN }, { word: "kaffirs", pattern: /[ck][a@]ff[ie3]r[s$z]/i, priority: 0 }, { word: "caffres", pattern: /[ck][a@]ffr[e3][s$z]/i, priority: 0 }, { word: "caffre", pattern: /[ck][\W\d_]{0,42}[a@][\W\d_]{0,42}f[\W\d_]{0,42}f[\W\d_]{0,42}r[\W0-24-9_]{0,42}[e3]/i, priority: 1, expandable: true }, { word: "kaffir", pattern: /[ck]+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}(?:f[\W024-9_]{0,42})+[i1e3]+[\W024-9_]{0,42}r+/i, priority: 2, expandable: true }, { word: "shitskins", pattern: /[s$]h[i1]t[s$]k[i1]n[s$]/i, priority: 0 }, { word: "shitskin", pattern: /[s$]h[i1]t[s$]k[i1]n/i, priority: 1 }, { word: "shit", minPriority: 2 }, { word: "latrinos", pattern: /[l1][a@]tr[i1]n[o0][s$z]/i, priority: 0 }, { word: "latrino", pattern: /[l1][a@]tr[i1]n[o0]/i, priority: 1 }, { word: "chinkerbell", pattern: /ch[i1]nk[e3]rb[e3][l1][l1]+/i, priority: 0, expandable: true }, { word: "shvoogas", pattern: /[s$]hv[o0][o0]g[a@][s$]/i, priority: 0 }, { word: "shvooga", pattern: /[s$]hv[o0][o0]g[a@]/i, priority: 1 }, { word: "negress", pattern: /n[e3]gr[e3][s$z][s$z]+/i, priority: 0, expandable: true }, { word: "sambos", pattern: /[s$][a@]mb[o0][e3]*[s$]/i, priority: 0 }, { word: "sambo", pattern: /[s$][\W\d_]{0,42}[a@][\W\d_]{0,42}m[\W\d_]{0,42}b[\W1-9_]{0,42}[o0]/i, priority: 1 }]; a.exports = new d({ name: "grawlix-racism", filters: h, styles: [{ name: "nazi", char: "卐" }], init: function (a) { f.defaults(a, g); if (a.style === false || f.isEmpty(a.style)) { f.each(this.filters, function (a) { if (f.has(a, "style")) { delete a.style; } }); } else { f.each(this.filters, function (b) { if (f.has(b, "pattern")) { b.style = a.style; } }); } } }); }, 17: (a, b, c) => { 'use strict'; const d = c(50); const e = { PRE: "$1<%= word %>", POST: "<%= word %>$1", BETWEEN: "$1<%= word %>$2" }; const f = function (a, b, c) { this.word = a; this.regex = b; this.priority = 0; this.template = null; this.isExpandable = false; this.style = null; this.isValid = function () { return !d.isEmpty(this.word) && d.isRegExp(this.regex); }; this.isMatch = function (a) { return a.search(this.regex) > -1; }; this.getMatch = function (a) { return this.regex.exec(a); }; this.getMatchLen = function (a) { var b = this.getMatch(a); if (b === null || b.length === 0) { return 0; } var c = b[0].length; if (b.length > 1) { for (var d = 1; d < b.length; d++) { c -= b[d].length; } } return c; }; this.hasTemplate = function () { return this.template !== null && d.isFunction(this.template); }; this.hasStyle = function () { return this.style !== null; }; this.configure = function (a) { if (!d.isUndefined(a)) { if (d.has(a, "priority") && d.isNumber(a.priority)) { this.priority = a.priority; } else if (d.has(a, "minPriority") && d.isNumber(a.minPriority) && this.priority < a.minPriority) { this.priority = a.minPriority; } if (d.has(a, "template") && d.isString(a.template)) { this.template = d.template(a.template, { variable: "word" }); } if (d.has(a, "expandable") && d.isBoolean(a.expandable)) { this.isExpandable = a.expandable; } if (d.has(a, "style") && d.isString(a.style)) { this.style = a.style; } } }; this.clone = function () { var a = new f(this.word, this.regex); a.priority = this.priority; a.template = this.template; a.isExpandable = this.isExpandable; a.style = this.style; return a; }; this.configure(c); }; f.prototype = {}; const g = function (a) { this.name = "GrawlixFilterError"; this.filter = d.has(a, "filter") ? a.filter : null; this.plugin = d.has(a, "plugin") ? a.plugin : null; if (d.has(a, "trace") && a.trace instanceof Error) { this.stack = a.trace.stack; } else { this.stack = new Error().stack; } if (d.has(a, "msg")) { this.message = a.msg; } else if (d.has(a, "message")) { this.message = a.message; } else { this.message = a; } }; (g.prototype = Object.create(Error.prototype)).constructor = g; var h = [new f("motherfucker", /m[o0u]th(?:er|a)f+u+c+k+[e3]r/i, { expandable: true }), new f("motherfuck", /m[o0u]th(?:er|a)f+u+c+k+/i, { priority: 1, expandable: true }), new f("fuck", /f+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}u+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}c+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}k+/i, { priority: 2, expandable: true }), new f("shit", /[s$]+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}h+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s023456789_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t+(?!ake)/i, { expandable: true }), new f("cocksucker", /c+[o0]+c+k+s+u+c+k+[e3]+r+/i, { expandable: true }), new f("cocksuck", /c+[o0]+c+k+s+u+c+k+/i, { priority: 1, expandable: true }), new f("assholes", /[a@][s\$][s\$]h[o0]l[e3][s\$]/i), new f("asshole", /[a@][s\$][s\$]h[o0]+l[e3]/i, { priority: 1, expandable: true }), new f("asses", /(\b|^|[^glmp])[a@][s\$][s\$][e3][s\$](?:\b|$)/i, { template: e.PRE }), new f("dumbass", /\b(dumb)[a@][s\$][s\$]+/i, { priority: 1, expandable: true, template: e.PRE }), new f("ass", /(\b|^|\s|[^bcglmprstvu])[a@][\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$][\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$]+(?:\b|$)/i, { priority: 2, template: e.PRE, expandable: true }), new f("titties", /\bt[i1]tt[i1]e[s\$]/i), new f("tittie", /\bt[i1]tt[i1]e/i, { priority: 1 }), new f("titty", /\bt[i1]tty/i), new f("tits", /\bt+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$]+/i, { priority: 1, expandable: true }), new f("tit", /\bt+[i1]+t([^ahilmrtu])/i, { priority: 2, template: e.POST, expandable: true }), new f("piss", /p[i1]+ss+(?!ant)/i, { expandable: true }), new f("dick", /d[i1]+c+k+(?!e|i)/i, { expandable: true }), new f("cunt", /(\b|[^s])c+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}u+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}n+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t/i, { template: e.PRE, expandable: true }), new f("bastard", /\bb[a@]+st[a@]+r+d(?!ise|ize)/i, { expandable: true }), new f("bitch", /b+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}c[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}h/i, { expandable: true })]; function i(a, b) { if (a.priority === b.priority) { return 0; } else if (a.priority < b.priority) { return -1; } else { return 1; } } a.exports = { GrawlixFilter: f, GrawlixFilterError: g, FilterSort: i, FilterTemplate: e, filters: h.sort(i), toGrawlixFilter: function (a) { if (!d.has(a, "word") || !d.isString(a.word)) { throw new g({ msg: "word parameter is required", filter: a }); } if (!d.has(a, "pattern") || !d.isRegExp(a.pattern)) { throw new g({ msg: "pattern parameter is required", filter: a }); } return new f(a.word, a.pattern, a); } }; }, 6: (a, b, c) => { 'use strict'; const d = c(50); const e = c(2); const f = c(13).Style; const g = c(434).GrawlixPlugin; const h = c(434).GrawlixPluginError; var i = { style: f.ASCII, randomize: true, plugins: [], filters: [], styles: [], allowed: [] }; var j = null; function k(a, b) { var c; if (d.isUndefined(b) && j !== null) { c = j; } else if (d.isUndefined(b)) { c = e.parseOptions(i); j = c; } else { c = e.parseOptions(b, i); } return e.replaceMatches(a, c); } k.getDefaults = function () { return i; }; k.setDefaults = function (a) { i = d.extend({}, i, a); j = null; }; k.isObscene = function (a, b, c) { var f; if (d.isUndefined(b) && d.isUndefined(c) && j !== null) { f = j; } else if (d.isArray(b) || d.isArray(c)) { f = e.parseOptions({ filters: d.isUndefined(b) || b === null ? [] : b, allowed: d.isUndefined(c) || c === null ? [] : c }, i); } else { f = e.parseOptions(i); j = f; } return e.isMatch(a, f); }; k.loadPlugin = function (a, b) { var c = {}; if (a instanceof g || d.isFunction(a)) { c.plugin = a; } else { if (!d.isString(a)) { throw new h({ message: "invalid plugin", plugin: a, trace: new Error() }); } c.module = a; } c.options = d.isUndefined(b) ? {} : b; i.plugins.push(c); return k; }; k.hasPlugin = function (a) { return e.hasPlugin(a, i); }; k.Style = f; k.GrawlixPlugin = g; k.FilterTemplate = c(17).FilterTemplate; k.error = { GrawlixFilterError: c(17).GrawlixFilterError, GrawlixPluginError: h, GrawlixStyleError: c(13).GrawlixStyleError }; a.exports = k; }, 434: (a, b, c) => { 'use strict'; const d = c(50); const e = function (a) { this.name = null; this.filters = []; this.styles = []; this.init = function (a) {}; if (!d.isUndefined(a)) { if (d.has(a, "name") && d.isString(a.name)) { this.name = a.name; } else if (d.isString(a)) { this.name = a; } if (d.has(a, "filters") && d.isArray(a.filters)) { this.filters = a.filters; } if (d.has(a, "styles") && d.isArray(a.styles)) { this.styles = a.styles; } if (d.has(a, "init") && d.isFunction(a.init)) { this.init = d.bind(a.init, this); } } }; e.prototype = {}; const f = function (a) { var b; this.name = "GrawlixPluginError"; this.plugin = d.has(a, "plugin") ? a.plugin : null; if (d.has(a, "trace") && a.trace instanceof Error) { this.stack = a.trace.stack; } else { this.stack = new Error().stack; } b = d.has(a, "msg") ? a.msg : d.has(a, "message") ? a.message : a; if (this.plugin !== null && d.has(this.plugin, "name")) { this.message = "[plugin " + this.plugin.name + "] " + b; } else { this.message = b; } }; (f.prototype = Object.create(Error.prototype)).constructor = f; a.exports = { GrawlixPlugin: e, GrawlixPluginError: f }; }, 13: (a, b, c) => { 'use strict'; const d = c(50); const e = { ASCII: "ascii", ASTERIX: "asterix", DINGBATS: "dingbats", NEXTWAVE: "nextwave", REDACTED: "redacted", UNICODE: "unicode", UNDERSCORE: "underscore" }; const f = function (a, b) { this.name = a; this.chars = null; this.fixed = {}; this.isOverrideAllowed = true; this.isValid = function () { return d.isString(this.name) && !d.isEmpty(this.name) && (d.isString(this.chars) && !d.isEmpty(this.chars) || d.isFunction(this.chars) || !d.isEmpty(this.fixed) && d.keys(this.fixed).length > 0); }; this.canRandomize = function () { return d.isFunction(this.chars) || d.isString(this.chars) && this.chars.length > 1; }; this.getRandomGrawlix = function (a) { if (!this.canRandomize()) { throw new g({ msg: "Random grawlixes not supported", style: this, styleName: this.name }); } if (d.isFunction(this.chars)) { return this.chars(a); } for (var b, c, e = []; e.length < a;) { if ((b = this.chars.charAt(d.random(this.chars.length - 1))) !== c) { if (b !== "!" || e.length !== a - 1) { e.push(b); c = b; } } } return e.join(""); }; this.getFillGrawlix = function (a) { var b; b = this.chars.length > 1 ? this.chars.charAt(0) : this.chars; for (var c = [], d = 0; d < a; d++) { c.push(b); } return c.join(""); }; this.hasFixed = function (a) { return d.has(this.fixed, a) && !d.isEmpty(this.fixed[a]); }; this.getFixed = function (a) { return this.fixed[a]; }; this.addChars = function (a) { var b = this; var c = d.isArray(a) ? a : a.split(""); var e = 0; d.each(c, function (a) { if (b.chars.indexOf(a) === -1) { b.chars += a; e++; } }); return e; }; this.removeChars = function (a) { var b = this.chars.split(""); var c = d.filter(b, function (b) { return a.indexOf(b) === -1; }); this.chars = c.join(""); return b.length - c.length; }; this.replaceChars = function (a) { var b = this.chars.split(""); var c = 0; var e = d.map(b, function (b) { if (d.has(a, b) && d.isString(a[b])) { c++; return a[b]; } else { return b; } }); this.chars = e.join(""); return c; }; this.configure = function (a) { if (d.has(a, "char") && d.isString(a.char)) { this.chars = a.char; } else if (d.has(a, "randomChars") && (d.isString(a.randomChars) || d.isFunction(a.randomChars))) { this.chars = a.randomChars; } if (d.isString(this.chars) && d.has(a, "randomChars") && d.isObject(a.randomChars)) { if (d.has(a.randomChars, "add")) { this.addChars(a.randomChars.add); } if (d.has(a.randomChars, "remove")) { this.removeChars(a.randomChars.remove); } if (d.has(a.randomChars, "replace") && d.isObject(a.randomChars.replace)) { this.replaceChars(a.randomChars.replace); } } if (d.has(a, "fixed") && d.isObject(a.fixed)) { d.each(a.fixed, function (a, b) { if (!d.has(this.fixed, b) || a !== false && d.isString(a)) { this.fixed[b] = a; } else { delete this.fixed[b]; } }, this); } if (d.has(a, "allowOverride") && d.isBoolean(a.allowOverride)) { this.isOverrideAllowed = a.allowOverride; } }; this.clone = function () { var a = new f(this.name); a.chars = this.chars; a.fixed = d.clone(this.fixed); a.isOverrideAllowed = this.isOverrideAllowed; return a; }; if (!d.isUndefined(b)) { this.configure(b); } }; f.prototype = {}; const g = function (a) { var b; this.name = "GrawlixStyleError"; this.styleName = d.has(a, "styleName") ? a.styleName : null; this.style = d.has(a, "style") ? a.style : null; this.plugin = d.has(a, "plugin") ? a.plugin : null; if (d.has(a, "trace") && a.trace instanceof Error) { this.stack = a.trace.stack; } else { this.stack = new Error().stack; } b = d.has(a, "msg") ? a.msg : d.has(a, "message") ? a.message : a; if (this.styleName !== null) { this.message = "[style " + this.styleName + "] " + b; } else if (this.style !== null && d.has(this.style, "name")) { this.styleName = this.style.name; this.message = "[style " + this.style.name + "] " + b; } else { this.message = b; } }; g.prototype = Object.create(Error.prototype); g.prototype.constructor = g; const h = [new f(e.ASCII, { randomChars: "@!#$%^&*", fixed: { fuck: "%!&#", motherfuck: "%*^##*%!&#", motherfucker: "%*^##*%!&##&", shit: "$$#!%", dick: "%!&#", piss: "&!$$$$", cunt: "#^&%", cocksuck: "#*#%$$!#%", cocksucker: "#*#%$$!#%#&", ass: "@**", asses: "@**#*", asshole: "@**#%!&", assholes: "@**#%!&*", dumbass: "@**", bastard: "%@$$%@*#", bitch: "%!#*%", tit: "%!%", tits: "%!%$$", titty: "%!%%^", tittie: "%!%%!#", titties: "%!%%!#$$" } }), new f(e.DINGBATS, { randomChars: "★☒☎☠☢☣☹♡♢♤♧⚓⚔⚑⚡♯✓☝", fixed: { fuck: "⚑☠♧⚔", motherfuck: "★☹⚓♯⚡☢⚑☠♧⚔", motherfucker: "★☹⚓♯⚡☢⚑☠♧⚔⚡☢", shit: "☠♯☝⚓", dick: "♢☝♧⚔", piss: "☣☝☠☠", cunt: "♧♡⚔⚓", cocksuck: "♧☹♧⚔☠♡♧⚔", cocksucker: "♧☹♧⚔☠♡♧⚔⚡☢", ass: "☹☠☠", asses: "☹☠☠♯☠", asshole: "☹☠☠♯☢✓⚡", assholes: "☹☠☠♯☢✓⚡☠", dumbass: "☹☠☠", bastard: "☣☹☠⚓@☢♢", bitch: "☣☝⚓♧♯", tit: "⚓☝⚓", tits: "⚓☝⚓☠", titty: "⚓☝⚓⚓⚔", tittie: "⚓☝⚓⚓☝♯", titties: "⚓☝⚓⚓☝♯☠" } }), new f(e.UNICODE, { randomChars: "!@#$%★☒☎☠☢☣☹♡♢♤♧⚓⚔⚑⚡", fixed: { fuck: "⚑☠♧⚔", motherfuck: "★☹⚓#⚡☢⚑☠♧⚔", motherfucker: "★☹⚓#⚡☢⚑☠♧⚔⚡☢", shit: "$$#!⚓", dick: "♢!♧⚔", piss: "☣!$$$$", cunt: "♧♡⚔⚓", cocksuck: "♧☹♧⚔$$♡♧⚔", cocksucker: "♧☹♧⚔$$♡♧⚔⚡☢", ass: "@$$$$", asses: "@$$$$#$$", asshole: "@$$$$#☢!⚡", assholes: "@$$$$#☢!⚡$$", dumbass: "@$$$$", bastard: "☣@$$⚓@☢♢", bitch: "☣!⚓♧#", tit: "⚓!⚓", tits: "⚓!⚓$$", titty: "⚓!⚓⚓⚔", tittie: "⚓!⚓⚓!#", titties: "⚓!⚓⚓!#$$" } }), new f(e.ASTERIX, { char: "*" }), new f(e.NEXTWAVE, { char: "☠" }), new f(e.REDACTED, { char: "█" }), new f(e.UNDERSCORE, { char: "_" })]; a.exports = { styles: h, Style: e, GrawlixStyle: f, GrawlixStyleError: g, toGrawlixStyle: function (a) { if (!d.has(a, "name") || !d.isString(a.name) || d.isEmpty(a.name)) { throw new g({ msg: "name parameter is required", style: a, trace: new Error() }); } if (!d.has(a, "char") && !d.has(a, "randomChars") && !d.has(a, "fixed")) { throw new g({ msg: "char, randomChars or fixed parameter required", style: a, trace: new Error() }); } return new f(a.name, a); } }; }, 2: (a, b, c) => { 'use strict'; const d = c(50); const e = c(17).filters; const f = c(13).styles; const g = c(17).FilterSort; c(17).GrawlixFilter; const h = c(17).toGrawlixFilter; const i = c(13).GrawlixStyle; const j = c(13).toGrawlixStyle; const k = c(13).GrawlixStyleError; const l = c(434).GrawlixPlugin; const m = c(434).GrawlixPluginError; b.parseOptions = function (a, b) { if (!d.isUndefined(b)) { d.defaults(a, b); } var c; var h = new n(); h.isRandom = a.randomize; d.each(e, function (b) { var c = d.contains(a.allowed, b.word); var e = d.some(a.filters, function (a) { return d.has(a, "word") && a.word === b.word && d.has(a, "pattern"); }); if (!c && !e) { h.filters.push(b.clone()); } }); d.each(f, function (a) { h.styles.push(a.clone()); }); if (a.plugins.length > 0) { d.each(a.plugins, function (b) { o(h, b, a); }); } p(h, a.filters, a.allowed); h.filters.sort(g); q(h, a.styles); if (!d.has(a, "style") || a.style === null) { throw new k({ msg: "main style not found", style: a.style, trace: new Error() }); } if (d.has(a.style, "name")) { c = d.findWhere(h.styles, { name: a.style.name }); if (d.isUndefined(c)) { c = j(a.style); } else { c.configure(a.style); } } else { c = d.findWhere(h.styles, { name: a.style }); } if (!(c instanceof i)) { throw new k({ msg: "main style not found", styleName: a.style, style: a.style, trace: new Error() }); } h.style = c; return h; }; function n() { this.isRandom = true; this.filters = []; this.style = null; this.styles = []; this.loadedPlugins = []; this.loadedModules = []; } n.prototype = {}; b.GrawlixSettings = n; function o(a, b, e) { var f; if (d.has(b, "plugin")) { f = b.plugin; } else if (d.has(b, "module")) { if (d.contains(a.loadedModules, b.module)) { return a; } try { f = c(717)(b.module); } catch (a) { throw new m({ msg: "cannot find module '" + b.module + "'", plugin: b, trace: new Error() }); } a.loadedModules.push(b.module); } else { f = b; } var g = d.has(b, "options") ? b.options : {}; if (d.isFunction(f)) { f = f(g, e); } if (!(f instanceof l)) { throw new m({ msg: "invalid plugin", plugin: b }); } if (f.name === null || d.isEmpty(f.name)) { throw new m({ msg: "invalid plugin - name property not provided", plugin: b }); } if (d.contains(a.loadedPlugins, f.name)) { return a; } f.init(g); if (!d.isUndefined(f.filters) && d.isArray(f.filters)) { try { p(a, f.filters, e.allowed); } catch (a) { a.plugin = b; throw a; } } if (!d.isUndefined(f.styles) && d.isArray(f.styles)) { try { q(a, f.styles); } catch (a) { a.plugin = b; throw a; } } a.loadedPlugins.push(f.name); return a; } b.loadPlugin = o; function p(a, b, c) { if (b.length > 0) { d.each(b, function (b) { if (d.has(b, "word")) { if (d.has(b, "pattern")) { if (!d.contains(c, b.word)) { a.filters.push(h(b)); } } else { var e = d.findWhere(a.filters, { word: b.word }); if (!d.isUndefined(e)) { e.configure(b); } } } }); } return a; } b.loadFilters = p; function q(a, b) { if (d.isArray(b) && b.length > 0) { d.each(b, function (b) { if (d.has(b, "name")) { var c = d.findWhere(a.styles, { name: b.name }); if (d.isUndefined(c)) { a.styles.push(j(b)); } else { c.configure(b); } } }); } return a; } b.loadStyles = q; b.hasPlugin = function (a, b) { if (d.has(b, "plugins") && d.isArray(b.plugins)) { if (a instanceof l) { return d.some(b.plugins, function (b) { return d.has(b, "plugin") && b.plugin instanceof l && (b.plugin === a || b.plugin.name === a.name); }); } if (d.isFunction(a)) { return d.some(b.plugins, function (b) { return d.has(b, "plugin") && b.plugin === a; }); } if (d.isString(a)) { return d.some(b.plugins, function (b) { return d.has(b, "module") && b.module === a || d.has(b, "plugin") && b.plugin instanceof l && b.plugin.name === a; }); } } return false; }; b.isMatch = function (a, b) { return b.filters.length !== 0 && d.some(b.filters, function (b) { return b.isMatch(a); }); }; b.replaceMatches = function (a, b) { d.each(b.filters, function (c) { while (c.isMatch(a)) { a = r(a, c, b); } }); return a; }; function r(a, b, c) { var e; var f; if (b.hasStyle() && c.style.isOverrideAllowed) { e = d.findWhere(c.styles, { name: b.style }); } if (d.isUndefined(e)) { e = c.style; } f = !c.isRandom && e.hasFixed(b.word) ? e.getFixed(b.word) : s(a, b, e); if (b.hasTemplate()) { f = b.template(f); } return a.replace(b.regex, f); } b.replaceMatch = r; function s(a, b, c) { var d; d = b.isExpandable ? b.getMatchLen(a) : b.word.length; if (c.canRandomize()) { return c.getRandomGrawlix(d); } else { return c.getFillGrawlix(d); } } b.generateGrawlix = s; }, 717: a => { function b(a) { var b = new Error("Cannot find module '" + a + "'"); b.code = "MODULE_NOT_FOUND"; throw b; } b.keys = () => []; b.resolve = b; b.id = 717; a.exports = b; }, 405: (a, b, c) => { 'use strict'; var d = typeof Symbol != "undefined" && Symbol; var e = c(419); a.exports = function () { return typeof d == "function" && typeof Symbol == "function" && typeof d("foo") == "symbol" && typeof Symbol("bar") == "symbol" && e(); }; }, 419: a => { 'use strict'; a.exports = function () { if (typeof Symbol != "function" || typeof Object.getOwnPropertySymbols != "function") { return false; } if (typeof Symbol.iterator == "symbol") { return true; } var a = {}; var b = Symbol("test"); var c = Object(b); if (typeof b == "string") { return false; } if (Object.prototype.toString.call(b) !== "[object Symbol]") { return false; } if (Object.prototype.toString.call(c) !== "[object Symbol]") { return false; } a[b] = 42; for (b in a) { return false; } if (typeof Object.keys == "function" && Object.keys(a).length !== 0) { return false; } if (typeof Object.getOwnPropertyNames == "function" && Object.getOwnPropertyNames(a).length !== 0) { return false; } var d = Object.getOwnPropertySymbols(a); if (d.length !== 1 || d[0] !== b) { return false; } if (!Object.prototype.propertyIsEnumerable.call(a, b)) { return false; } if (typeof Object.getOwnPropertyDescriptor == "function") { var e = Object.getOwnPropertyDescriptor(a, b); if (e.value !== 42 || e.enumerable !== true) { return false; } } return true; }; }, 642: (a, b, c) => { 'use strict'; var d = c(612); a.exports = d.call(Function.call, Object.prototype.hasOwnProperty); }, 514: function (a, b) { var c; var d; if ((d = typeof (c = function () { 'use strict'; function a(a, b, c) { this.low = a | 0; this.high = b | 0; this.unsigned = !!c; } function b(a) { return (a && a.__isLong__) === true; } a.prototype.__isLong__; Object.defineProperty(a.prototype, "__isLong__", { value: true, enumerable: false, configurable: false }); a.isLong = b; var c = {}; var d = {}; function e(a, b) { var e; var f; var h; if (b) { if ((h = (a >>>= 0) >= 0 && a < 256) && (f = d[a])) { return f; } else { e = g(a, (a | 0) < 0 ? -1 : 0, true); if (h) { d[a] = e; } return e; } } else if ((h = (a |= 0) >= -128 && a < 128) && (f = c[a])) { return f; } else { e = g(a, a < 0 ? -1 : 0, false); if (h) { c[a] = e; } return e; } } function f(a, b) { if (isNaN(a) || !isFinite(a)) { if (b) { return p; } else { return o; } } if (b) { if (a < 0) { return p; } if (a >= l) { return u; } } else { if (a <= -m) { return v; } if (a + 1 >= m) { return t; } } if (a < 0) { return f(-a, b).neg(); } else { return g(a % k | 0, a / k | 0, b); } } function g(b, c, d) { return new a(b, c, d); } a.fromInt = e; a.fromNumber = f; a.fromBits = g; var h = Math.pow; function i(a, b, c) { if (a.length === 0) { throw Error("empty string"); } if (a === "NaN" || a === "Infinity" || a === "+Infinity" || a === "-Infinity") { return o; } if (typeof b == "number") { c = b; b = false; } else { b = !!b; } if ((c = c || 10) < 2 || c > 36) { throw RangeError("radix"); } var d; if ((d = a.indexOf("-")) > 0) { throw Error("interior hyphen"); } if (d === 0) { return i(a.substring(1), b, c).neg(); } for (var e = f(h(c, 8)), g = o, j = 0; j < a.length; j += 8) { var k = Math.min(8, a.length - j); var l = parseInt(a.substring(j, j + k), c); if (k < 8) { var m = f(h(c, k)); g = g.mul(m).add(f(l)); } else { g = (g = g.mul(e)).add(f(l)); } } g.unsigned = b; return g; } function j(b) { if (b instanceof a) { return b; } else if (typeof b == "number") { return f(b); } else if (typeof b == "string") { return i(b); } else { return g(b.low, b.high, b.unsigned); } } a.fromString = i; a.fromValue = j; var k = 4294967296; var l = k * k; var m = l / 2; var n = e(1 << 24); var o = e(0); a.ZERO = o; var p = e(0, true); a.UZERO = p; var q = e(1); a.ONE = q; var r = e(1, true); a.UONE = r; var s = e(-1); a.NEG_ONE = s; var t = g(-1, 2147483647, false); a.MAX_VALUE = t; var u = g(-1, -1, true); a.MAX_UNSIGNED_VALUE = u; var v = g(0, -2147483648, false); a.MIN_VALUE = v; var w = a.prototype; w.toInt = function () { if (this.unsigned) { return this.low >>> 0; } else { return this.low; } }; w.toNumber = function () { if (this.unsigned) { return (this.high >>> 0) * k + (this.low >>> 0); } else { return this.high * k + (this.low >>> 0); } }; w.toString = function (a) { if ((a = a || 10) < 2 || a > 36) { throw RangeError("radix"); } if (this.isZero()) { return "0"; } if (this.isNegative()) { if (this.eq(v)) { var b = f(a); var c = this.div(b); var d = c.mul(b).sub(this); return c.toString(a) + d.toInt().toString(a); } return "-" + this.neg().toString(a); } var e = f(h(a, 6), this.unsigned); var g = this; var i = ""; while (true) { var j = g.div(e); var k = (g.sub(j.mul(e)).toInt() >>> 0).toString(a); if ((g = j).isZero()) { return k + i; } while (k.length < 6) { k = "0" + k; } i = "" + k + i; } }; w.getHighBits = function () { return this.high; }; w.getHighBitsUnsigned = function () { return this.high >>> 0; }; w.getLowBits = function () { return this.low; }; w.getLowBitsUnsigned = function () { return this.low >>> 0; }; w.getNumBitsAbs = function () { if (this.isNegative()) { if (this.eq(v)) { return 64; } else { return this.neg().getNumBitsAbs(); } } for (var a = this.high != 0 ? this.high : this.low, b = 31; b > 0 && (a & 1 << b) == 0; b--); if (this.high != 0) { return b + 33; } else { return b + 1; } }; w.isZero = function () { return this.high === 0 && this.low === 0; }; w.isNegative = function () { return !this.unsigned && this.high < 0; }; w.isPositive = function () { return this.unsigned || this.high >= 0; }; w.isOdd = function () { return (this.low & 1) == 1; }; w.isEven = function () { return (this.low & 1) == 0; }; w.equals = function (a) { if (!b(a)) { a = j(a); } return (this.unsigned === a.unsigned || this.high >>> 31 != 1 || a.high >>> 31 != 1) && this.high === a.high && this.low === a.low; }; w.eq = w.equals; w.notEquals = function (a) { return !this.eq(a); }; w.neq = w.notEquals; w.lessThan = function (a) { return this.comp(a) < 0; }; w.lt = w.lessThan; w.lessThanOrEqual = function (a) { return this.comp(a) <= 0; }; w.lte = w.lessThanOrEqual; w.greaterThan = function (a) { return this.comp(a) > 0; }; w.gt = w.greaterThan; w.greaterThanOrEqual = function (a) { return this.comp(a) >= 0; }; w.gte = w.greaterThanOrEqual; w.compare = function (a) { if (!b(a)) { a = j(a); } if (this.eq(a)) { return 0; } var c = this.isNegative(); var d = a.isNegative(); if (c && !d) { return -1; } else if (!c && d) { return 1; } else if (this.unsigned) { if (a.high >>> 0 > this.high >>> 0 || a.high === this.high && a.low >>> 0 > this.low >>> 0) { return -1; } else { return 1; } } else if (this.sub(a).isNegative()) { return -1; } else { return 1; } }; w.comp = w.compare; w.negate = function () { if (!this.unsigned && this.eq(v)) { return v; } else { return this.not().add(q); } }; w.neg = w.negate; w.add = function (a) { if (!b(a)) { a = j(a); } var c = this.high >>> 16; var d = this.high & 65535; var e = this.low >>> 16; var f = this.low & 65535; var h = a.high >>> 16; var i = a.high & 65535; var k = a.low >>> 16; var l = 0; var m = 0; var n = 0; var o = 0; n += (o += f + (a.low & 65535)) >>> 16; m += (n += e + k) >>> 16; l += (m += d + i) >>> 16; l += c + h; return g((n &= 65535) << 16 | (o &= 65535), (l &= 65535) << 16 | (m &= 65535), this.unsigned); }; w.subtract = function (a) { if (!b(a)) { a = j(a); } return this.add(a.neg()); }; w.sub = w.subtract; w.multiply = function (a) { if (this.isZero()) { return o; } if (!b(a)) { a = j(a); } if (a.isZero()) { return o; } if (this.eq(v)) { if (a.isOdd()) { return v; } else { return o; } } if (a.eq(v)) { if (this.isOdd()) { return v; } else { return o; } } if (this.isNegative()) { if (a.isNegative()) { return this.neg().mul(a.neg()); } else { return this.neg().mul(a).neg(); } } if (a.isNegative()) { return this.mul(a.neg()).neg(); } if (this.lt(n) && a.lt(n)) { return f(this.toNumber() * a.toNumber(), this.unsigned); } var c = this.high >>> 16; var d = this.high & 65535; var e = this.low >>> 16; var h = this.low & 65535; var i = a.high >>> 16; var k = a.high & 65535; var l = a.low >>> 16; var m = a.low & 65535; var p = 0; var q = 0; var r = 0; var s = 0; r += (s += h * m) >>> 16; q += (r += e * m) >>> 16; r &= 65535; q += (r += h * l) >>> 16; p += (q += d * m) >>> 16; q &= 65535; p += (q += e * l) >>> 16; q &= 65535; p += (q += h * k) >>> 16; p += c * m + d * l + e * k + h * i; return g((r &= 65535) << 16 | (s &= 65535), (p &= 65535) << 16 | (q &= 65535), this.unsigned); }; w.mul = w.multiply; w.divide = function (a) { if (!b(a)) { a = j(a); } if (a.isZero()) { throw Error("division by zero"); } if (this.isZero()) { if (this.unsigned) { return p; } else { return o; } } var c; var d; var e; if (this.unsigned) { if (!a.unsigned) { a = a.toUnsigned(); } if (a.gt(this)) { return p; } if (a.gt(this.shru(1))) { return r; } e = p; } else { if (this.eq(v)) { if (a.eq(q) || a.eq(s)) { return v; } else if (a.eq(v)) { return q; } else if ((c = this.shr(1).div(a).shl(1)).eq(o)) { if (a.isNegative()) { return q; } else { return s; } } else { d = this.sub(a.mul(c)); return e = c.add(d.div(a)); } } if (a.eq(v)) { if (this.unsigned) { return p; } else { return o; } } if (this.isNegative()) { if (a.isNegative()) { return this.neg().div(a.neg()); } else { return this.neg().div(a).neg(); } } if (a.isNegative()) { return this.div(a.neg()).neg(); } e = o; } for (d = this; d.gte(a);) { c = Math.max(1, Math.floor(d.toNumber() / a.toNumber())); for (var g = Math.ceil(Math.log(c) / Math.LN2), i = g <= 48 ? 1 : h(2, g - 48), k = f(c), l = k.mul(a); l.isNegative() || l.gt(d);) { l = (k = f(c -= i, this.unsigned)).mul(a); } if (k.isZero()) { k = q; } e = e.add(k); d = d.sub(l); } return e; }; w.div = w.divide; w.modulo = function (a) { if (!b(a)) { a = j(a); } return this.sub(this.div(a).mul(a)); }; w.mod = w.modulo; w.not = function () { return g(~this.low, ~this.high, this.unsigned); }; w.and = function (a) { if (!b(a)) { a = j(a); } return g(this.low & a.low, this.high & a.high, this.unsigned); }; w.or = function (a) { if (!b(a)) { a = j(a); } return g(this.low | a.low, this.high | a.high, this.unsigned); }; w.xor = function (a) { if (!b(a)) { a = j(a); } return g(this.low ^ a.low, this.high ^ a.high, this.unsigned); }; w.shiftLeft = function (a) { if (b(a)) { a = a.toInt(); } if ((a &= 63) == 0) { return this; } else if (a < 32) { return g(this.low << a, this.high << a | this.low >>> 32 - a, this.unsigned); } else { return g(0, this.low << a - 32, this.unsigned); } }; w.shl = w.shiftLeft; w.shiftRight = function (a) { if (b(a)) { a = a.toInt(); } if ((a &= 63) == 0) { return this; } else if (a < 32) { return g(this.low >>> a | this.high << 32 - a, this.high >> a, this.unsigned); } else { return g(this.high >> a - 32, this.high >= 0 ? 0 : -1, this.unsigned); } }; w.shr = w.shiftRight; w.shiftRightUnsigned = function (a) { if (b(a)) { a = a.toInt(); } if ((a &= 63) == 0) { return this; } var c = this.high; if (a < 32) { return g(this.low >>> a | c << 32 - a, c >>> a, this.unsigned); } else { return g(a === 32 ? c : c >>> a - 32, 0, this.unsigned); } }; w.shru = w.shiftRightUnsigned; w.toSigned = function () { if (this.unsigned) { return g(this.low, this.high, false); } else { return this; } }; w.toUnsigned = function () { if (this.unsigned) { return this; } else { return g(this.low, this.high, true); } }; w.toBytes = function (a) { if (a) { return this.toBytesLE(); } else { return this.toBytesBE(); } }; w.toBytesLE = function () { var a = this.high; var b = this.low; return [b & 255, b >>> 8 & 255, b >>> 16 & 255, b >>> 24 & 255, a & 255, a >>> 8 & 255, a >>> 16 & 255, a >>> 24 & 255]; }; w.toBytesBE = function () { var a = this.high; var b = this.low; return [a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, a & 255, b >>> 24 & 255, b >>> 16 & 255, b >>> 8 & 255, b & 255]; }; return a; }) == "function" ? c.apply(b, []) : c) !== undefined) { a.exports = d; } }, 418: a => { 'use strict'; var b = Object.getOwnPropertySymbols; var c = Object.prototype.hasOwnProperty; var d = Object.prototype.propertyIsEnumerable; a.exports = function () { try { if (!Object.assign) { return false; } var a = new String("abc"); a[5] = "de"; if (Object.getOwnPropertyNames(a)[0] === "5") { return false; } for (var b = {}, c = 0; c < 10; c++) { b["_" + String.fromCharCode(c)] = c; } if (Object.getOwnPropertyNames(b).map(function (a) { return b[a]; }).join("") !== "0123456789") { return false; } var d = {}; "abcdefghijklmnopqrst".split("").forEach(function (a) { d[a] = a; }); return Object.keys(Object.assign({}, d)).join("") === "abcdefghijklmnopqrst"; } catch (a) { return false; } }() ? Object.assign : function (a, e) { for (var f, g, h = function (a) { if (a == null) { throw new TypeError("Object.assign cannot be called with null or undefined"); } return Object(a); }(a), i = 1; i < arguments.length; i++) { for (var j in f = Object(arguments[i])) { if (c.call(f, j)) { h[j] = f[j]; } } if (b) { g = b(f); for (var k = 0; k < g.length; k++) { if (d.call(f, g[k])) { h[g[k]] = f[g[k]]; } } } } return h; }; }, 631: (a, b, c) => { var d = typeof Map == "function" && Map.prototype; var e = Object.getOwnPropertyDescriptor && d ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; var f = d && e && typeof e.get == "function" ? e.get : null; var g = d && Map.prototype.forEach; var h = typeof Set == "function" && Set.prototype; var i = Object.getOwnPropertyDescriptor && h ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; var j = h && i && typeof i.get == "function" ? i.get : null; var k = h && Set.prototype.forEach; var l = typeof WeakMap == "function" && WeakMap.prototype ? WeakMap.prototype.has : null; var m = typeof WeakSet == "function" && WeakSet.prototype ? WeakSet.prototype.has : null; var n = typeof WeakRef == "function" && WeakRef.prototype ? WeakRef.prototype.deref : null; var o = Boolean.prototype.valueOf; var p = Object.prototype.toString; var q = Function.prototype.toString; var r = String.prototype.match; var s = String.prototype.slice; var t = String.prototype.replace; var u = String.prototype.toUpperCase; var v = String.prototype.toLowerCase; var w = RegExp.prototype.test; var x = Array.prototype.concat; var y = Array.prototype.join; var z = Array.prototype.slice; var A = Math.floor; var B = typeof BigInt == "function" ? BigInt.prototype.valueOf : null; var C = Object.getOwnPropertySymbols; var D = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? Symbol.prototype.toString : null; var E = typeof Symbol == "function" && typeof Symbol.iterator == "object"; var F = typeof Symbol == "function" && Symbol.toStringTag && (Symbol.toStringTag, 1) ? Symbol.toStringTag : null; var G = Object.prototype.propertyIsEnumerable; var H = (typeof Reflect == "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function (a) { return a.__proto__; } : null); function I(a, b) { if (a === Infinity || a === -Infinity || a != a || a && a > -1000 && a < 1000 || w.call(/e/, b)) { return b; } var c = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; if (typeof a == "number") { var d = a < 0 ? -A(-a) : A(a); if (d !== a) { var e = String(d); var f = s.call(b, e.length + 1); return t.call(e, c, "$&_") + "." + t.call(t.call(f, /([0-9]{3})/g, "$&_"), /_$/, ""); } } return t.call(b, c, "$&_"); } var J = c(654); var K = J.custom; var L = Q(K) ? K : null; function M(a, b, c) { var d = (c.quoteStyle || b) === "double" ? "\"" : "'"; return d + a + d; } function N(a) { return t.call(String(a), /"/g, """); } function O(a) { return T(a) === "[object Array]" && (!F || typeof a != "object" || !(F in a)); } function P(a) { return T(a) === "[object RegExp]" && (!F || typeof a != "object" || !(F in a)); } function Q(a) { if (E) { return a && typeof a == "object" && a instanceof Symbol; } if (typeof a == "symbol") { return true; } if (!a || typeof a != "object" || !D) { return false; } try { D.call(a); return true; } catch (a) {} return false; } a.exports = function e(a, b, c, d) { var h = b || {}; if (S(h, "quoteStyle") && h.quoteStyle !== "single" && h.quoteStyle !== "double") { throw new TypeError("option \"quoteStyle\" must be \"single\" or \"double\""); } if (S(h, "maxStringLength") && (typeof h.maxStringLength == "number" ? h.maxStringLength < 0 && h.maxStringLength !== Infinity : h.maxStringLength !== null)) { throw new TypeError("option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`"); } var i = !S(h, "customInspect") || h.customInspect; if (typeof i != "boolean" && i !== "symbol") { throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); } if (S(h, "indent") && h.indent !== null && h.indent !== "\t" && (parseInt(h.indent, 10) !== h.indent || h.indent <= 0)) { throw new TypeError("option \"indent\" must be \"\\t\", an integer > 0, or `null`"); } if (S(h, "numericSeparator") && typeof h.numericSeparator != "boolean") { throw new TypeError("option \"numericSeparator\", if provided, must be `true` or `false`"); } var p = h.numericSeparator; if (a === undefined) { return "undefined"; } if (a === null) { return "null"; } if (typeof a == "boolean") { if (a) { return "true"; } else { return "false"; } } if (typeof a == "string") { return V(a, h); } if (typeof a == "number") { if (a === 0) { if (Infinity / a > 0) { return "0"; } else { return "-0"; } } var u = String(a); if (p) { return I(a, u); } else { return u; } } if (typeof a == "bigint") { var w = String(a) + "n"; if (p) { return I(a, w); } else { return w; } } var A = h.depth === undefined ? 5 : h.depth; if (c === undefined) { c = 0; } if (c >= A && A > 0 && typeof a == "object") { if (O(a)) { return "[Array]"; } else { return "[Object]"; } } var C; var K = function (a, b) { var c; if (a.indent === "\t") { c = "\t"; } else { if (typeof a.indent != "number" || a.indent <= 0) { return null; } c = y.call(Array(a.indent + 1), " "); } return { base: c, prev: y.call(Array(b + 1), c) }; }(h, c); if (d === undefined) { d = []; } else if (U(d, a) >= 0) { return "[Circular]"; } function R(a, b, f) { if (b) { (d = z.call(d)).push(b); } if (f) { var g = { depth: h.depth }; if (S(h, "quoteStyle")) { g.quoteStyle = h.quoteStyle; } return e(a, g, c + 1, d); } return e(a, h, c + 1, d); } if (typeof a == "function" && !P(a)) { var W = function (a) { if (a.name) { return a.name; } var b = r.call(q.call(a), /^function\s*([\w$]+)/); if (b) { return b[1]; } else { return null; } }(a); var aa = _(a, R); return "[Function" + (W ? ": " + W : " (anonymous)") + "]" + (aa.length > 0 ? " { " + y.call(aa, ", ") + " }" : ""); } if (Q(a)) { var ba = E ? t.call(String(a), /^(Symbol\(.*\))_[^)]*$/, "$1") : D.call(a); if (typeof a != "object" || E) { return ba; } else { return X(ba); } } if ((C = a) && typeof C == "object" && (typeof HTMLElement != "undefined" && C instanceof HTMLElement || typeof C.nodeName == "string" && typeof C.getAttribute == "function")) { for (var ca = "<" + v.call(String(a.nodeName)), da = a.attributes || [], ea = 0; ea < da.length; ea++) { ca += " " + da[ea].name + "=" + M(N(da[ea].value), "double", h); } ca += ">"; if (a.childNodes && a.childNodes.length) { ca += "..."; } return ca + "</" + v.call(String(a.nodeName)) + ">"; } if (O(a)) { if (a.length === 0) { return "[]"; } var fa = _(a, R); if (K && ! function (a) { for (var b = 0; b < a.length; b++) { if (U(a[b], "\n") >= 0) { return false; } } return true; }(fa)) { return "[" + $(fa, K) + "]"; } else { return "[ " + y.call(fa, ", ") + " ]"; } } if (function (a) { return T(a) === "[object Error]" && (!F || typeof a != "object" || !(F in a)); }(a)) { var ga = _(a, R); if ("cause" in Error.prototype || !("cause" in a) || G.call(a, "cause")) { if (ga.length === 0) { return "[" + String(a) + "]"; } else { return "{ [" + String(a) + "] " + y.call(ga, ", ") + " }"; } } else { return "{ [" + String(a) + "] " + y.call(x.call("[cause]: " + R(a.cause), ga), ", ") + " }"; } } if (typeof a == "object" && i) { if (L && typeof a[L] == "function" && J) { return J(a, { depth: A - c }); } if (i !== "symbol" && typeof a.inspect == "function") { return a.inspect(); } } if (function (a) { if (!f || !a || typeof a != "object") { return false; } try { f.call(a); try { j.call(a); } catch (a) { return true; } return a instanceof Map; } catch (a) {} return false; }(a)) { var ha = []; g.call(a, function (b, c) { ha.push(R(c, a, true) + " => " + R(b, a)); }); return Z("Map", f.call(a), ha, K); } if (function (a) { if (!j || !a || typeof a != "object") { return false; } try { j.call(a); try { f.call(a); } catch (a) { return true; } return a instanceof Set; } catch (a) {} return false; }(a)) { var ia = []; k.call(a, function (b) { ia.push(R(b, a)); }); return Z("Set", j.call(a), ia, K); } if (function (a) { if (!l || !a || typeof a != "object") { return false; } try { l.call(a, l); try { m.call(a, m); } catch (a) { return true; } return a instanceof WeakMap; } catch (a) {} return false; }(a)) { return Y("WeakMap"); } if (function (a) { if (!m || !a || typeof a != "object") { return false; } try { m.call(a, m); try { l.call(a, l); } catch (a) { return true; } return a instanceof WeakSet; } catch (a) {} return false; }(a)) { return Y("WeakSet"); } if (function (a) { if (!n || !a || typeof a != "object") { return false; } try { n.call(a); return true; } catch (a) {} return false; }(a)) { return Y("WeakRef"); } if (function (a) { return T(a) === "[object Number]" && (!F || typeof a != "object" || !(F in a)); }(a)) { return X(R(Number(a))); } if (function (a) { if (!a || typeof a != "object" || !B) { return false; } try { B.call(a); return true; } catch (a) {} return false; }(a)) { return X(R(B.call(a))); } if (function (a) { return T(a) === "[object Boolean]" && (!F || typeof a != "object" || !(F in a)); }(a)) { return X(o.call(a)); } if (function (a) { return T(a) === "[object String]" && (!F || typeof a != "object" || !(F in a)); }(a)) { return X(R(String(a))); } if (! function (a) { return T(a) === "[object Date]" && (!F || typeof a != "object" || !(F in a)); }(a) && !P(a)) { var ja = _(a, R); var ka = H ? H(a) === Object.prototype : a instanceof Object || a.constructor === Object; var la = a instanceof Object ? "" : "null prototype"; var ma = !ka && F && Object(a) === a && F in a ? s.call(T(a), 8, -1) : la ? "Object" : ""; var na = (ka || typeof a.constructor != "function" ? "" : a.constructor.name ? a.constructor.name + " " : "") + (ma || la ? "[" + y.call(x.call([], ma || [], la || []), ": ") + "] " : ""); if (ja.length === 0) { return na + "{}"; } else if (K) { return na + "{" + $(ja, K) + "}"; } else { return na + "{ " + y.call(ja, ", ") + " }"; } } return String(a); }; var R = Object.prototype.hasOwnProperty || function (a) { return a in this; }; function S(a, b) { return R.call(a, b); } function T(a) { return p.call(a); } function U(a, b) { if (a.indexOf) { return a.indexOf(b); } for (var c = 0, d = a.length; c < d; c++) { if (a[c] === b) { return c; } } return -1; } function V(a, b) { if (a.length > b.maxStringLength) { var c = a.length - b.maxStringLength; var d = "... " + c + " more character" + (c > 1 ? "s" : ""); return V(s.call(a, 0, b.maxStringLength), b) + d; } return M(t.call(t.call(a, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, W), "single", b); } function W(a) { var b = a.charCodeAt(0); var c = { 8: "b", 9: "t", 10: "n", 12: "f", 13: "r" } [b]; if (c) { return "\\" + c; } else { return "\\x" + (b < 16 ? "0" : "") + u.call(b.toString(16)); } } function X(a) { return "Object(" + a + ")"; } function Y(a) { return a + " { ? }"; } function Z(a, b, c, d) { return a + " (" + b + ") {" + (d ? $(c, d) : y.call(c, ", ")) + "}"; } function $(a, b) { if (a.length === 0) { return ""; } var c = "\n" + b.prev + b.base; return c + y.call(a, "," + c) + "\n" + b.prev; } function _(a, b) { var c = O(a); var d = []; if (c) { d.length = a.length; for (var e = 0; e < a.length; e++) { d[e] = S(a, e) ? b(a[e], a) : ""; } } var f; var g = typeof C == "function" ? C(a) : []; if (E) { f = {}; for (var h = 0; h < g.length; h++) { f["$" + g[h]] = g[h]; } } for (var i in a) { if (S(a, i)) { if ((!c || String(Number(i)) !== i || i >= a.length) && (!E || !(f["$" + i] instanceof Symbol))) { if (w.call(/[^\w$]/, i)) { d.push(b(i, a) + ": " + b(a[i], a)); } else { d.push(i + ": " + b(a[i], a)); } } } } if (typeof C == "function") { for (var j = 0; j < g.length; j++) { if (G.call(a, g[j])) { d.push("[" + b(g[j]) + "]: " + b(a[g[j]], a)); } } } return d; } }, 478: (a, b, c) => { 'use strict'; var d = c(210); var e = c(924); var f = c(631); var g = d("%TypeError%"); var h = d("%WeakMap%", true); var i = d("%Map%", true); var j = e("WeakMap.prototype.get", true); var k = e("WeakMap.prototype.set", true); var l = e("WeakMap.prototype.has", true); var m = e("Map.prototype.get", true); var n = e("Map.prototype.set", true); var o = e("Map.prototype.has", true); function p(a, b) { for (var c, d = a; (c = d.next) !== null; d = c) { if (c.key === b) { d.next = c.next; c.next = a.next; a.next = c; return c; } } } a.exports = function () { var a; var b; var c; var d = { assert: function (a) { if (!d.has(a)) { throw new g("Side channel does not contain " + f(a)); } }, get: function (d) { if (h && d && (typeof d == "object" || typeof d == "function")) { if (a) { return j(a, d); } } else if (i) { if (b) { return m(b, d); } } else if (c) { return function (a, b) { var c = p(a, b); return c && c.value; }(c, d); } }, has: function (d) { if (h && d && (typeof d == "object" || typeof d == "function")) { if (a) { return l(a, d); } } else if (i) { if (b) { return o(b, d); } } else if (c) { return function (a, b) { return !!p(a, b); }(c, d); } return false; }, set: function (d, e) { if (h && d && (typeof d == "object" || typeof d == "function")) { a ||= new h(); k(a, d, e); } else if (i) { b ||= new i(); n(b, d, e); } else { c ||= { key: {}, next: null }; (function (a, b, c) { var d = p(a, b); if (d) { d.value = c; } else { a.next = { key: b, next: a.next, value: c }; } })(c, d, e); } } }; return d; }; }, 511: function (a, b, c) { var d; a = c.nmd(a); (function (e) { if (b) { b.nodeType; } if (a) { a.nodeType; } var f = typeof c.g == "object" && c.g; if (f.global !== f && f.window !== f) { f.self; } var g; var h = 2147483647; var i = 36; var j = 26; var k = 38; var l = 700; var m = /^xn--/; var n = /[^\x20-\x7E]/; var o = /[\x2E\u3002\uFF0E\uFF61]/g; var p = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" }; var q = i - 1; var r = Math.floor; var s = String.fromCharCode; function t(a) { throw new RangeError(p[a]); } function u(a, b) { for (var c = a.length, d = []; c--;) { d[c] = b(a[c]); } return d; } function v(a, b) { var c = a.split("@"); var d = ""; if (c.length > 1) { d = c[0] + "@"; a = c[1]; } return d + u((a = a.replace(o, ".")).split("."), b).join("."); } function w(a) { for (var b, c, d = [], e = 0, f = a.length; e < f;) { if ((b = a.charCodeAt(e++)) >= 55296 && b <= 56319 && e < f) { if (((c = a.charCodeAt(e++)) & 64512) == 56320) { d.push(((b & 1023) << 10) + (c & 1023) + 65536); } else { d.push(b); e--; } } else { d.push(b); } } return d; } function x(a) { return u(a, function (a) { var b = ""; if (a > 65535) { b += s((a -= 65536) >>> 10 & 1023 | 55296); a = a & 1023 | 56320; } return b + s(a); }).join(""); } function y(a, b) { return a + 22 + (a < 26) * 75 - ((b != 0) << 5); } function z(a, b, c) { var d = 0; a = c ? r(a / l) : a >> 1; a += r(a / b); for (; a > q * j >> 1; d += i) { a = r(a / q); } return r(d + (q + 1) * a / (a + k)); } function A(a) { var b; var c; var d; var e; var f; var g; var k; var l; var m; var n; var o; var p = []; var q = a.length; var s = 0; var u = 128; var v = 72; if ((c = a.lastIndexOf("-")) < 0) { c = 0; } d = 0; for (; d < c; ++d) { if (a.charCodeAt(d) >= 128) { t("not-basic"); } p.push(a.charCodeAt(d)); } for (e = c > 0 ? c + 1 : 0; e < q;) { f = s; g = 1; k = i; for (; e >= q && t("invalid-input"), ((l = (o = a.charCodeAt(e++)) - 48 < 10 ? o - 22 : o - 65 < 26 ? o - 65 : o - 97 < 26 ? o - 97 : i) >= i || l > r((h - s) / g)) && t("overflow"), s += l * g, l >= (m = k <= v ? 1 : k >= v + j ? j : k - v); k += i) { if (g > r(h / (n = i - m))) { t("overflow"); } g *= n; } v = z(s - f, b = p.length + 1, f == 0); if (r(s / b) > h - u) { t("overflow"); } u += r(s / b); s %= b; p.splice(s++, 0, u); } return x(p); } function B(a) { var b; var c; var d; var e; var f; var g; var k; var l; var m; var n; var o; var p; var q; var u; var v; var x = []; p = (a = w(a)).length; b = 128; c = 0; f = 72; g = 0; for (; g < p; ++g) { if ((o = a[g]) < 128) { x.push(s(o)); } } d = e = x.length; if (e) { x.push("-"); } while (d < p) { k = h; g = 0; for (; g < p; ++g) { if ((o = a[g]) >= b && o < k) { k = o; } } if (k - b > r((h - c) / (q = d + 1))) { t("overflow"); } c += (k - b) * q; b = k; g = 0; for (; g < p; ++g) { if ((o = a[g]) < b && ++c > h) { t("overflow"); } if (o == b) { l = c; m = i; for (; l >= (n = m <= f ? 1 : m >= f + j ? j : m - f); m += i) { v = l - n; u = i - n; x.push(s(y(n + v % u, 0))); l = r(v / u); } x.push(s(y(l, 0))); f = z(c, q, d == e); c = 0; ++d; } } ++c; ++b; } return x.join(""); } g = { version: "1.4.1", ucs2: { decode: w, encode: x }, decode: A, encode: B, toASCII: function (a) { return v(a, function (a) { if (n.test(a)) { return "xn--" + B(a); } else { return a; } }); }, toUnicode: function (a) { return v(a, function (a) { if (m.test(a)) { return A(a.slice(4).toLowerCase()); } else { return a; } }); } }; if ((d = function () { return g; }.call(b, c, b, a)) !== undefined) { a.exports = d; } })(); }, 532: a => { 'use strict'; var b = String.prototype.replace; var c = /%20/g; var d = "RFC3986"; a.exports = { default: d, formatters: { RFC1738: function (a) { return b.call(a, c, "+"); }, RFC3986: function (a) { return String(a); } }, RFC1738: "RFC1738", RFC3986: d }; }, 984: (a, b, c) => { 'use strict'; var d = c(730); var e = c(325); var f = c(532); a.exports = { formats: f, parse: e, stringify: d }; }, 325: (a, b, c) => { 'use strict'; var d = c(368); var e = Object.prototype.hasOwnProperty; var f = Array.isArray; var g = { allowDots: false, allowPrototypes: false, allowSparse: false, arrayLimit: 20, charset: "utf-8", charsetSentinel: false, comma: false, decoder: d.decode, delimiter: "&", depth: 5, ignoreQueryPrefix: false, interpretNumericEntities: false, parameterLimit: 1000, parseArrays: true, plainObjects: false, strictNullHandling: false }; function h(a) { return a.replace(/&#(\d+);/g, function (a, b) { return String.fromCharCode(parseInt(b, 10)); }); } function i(a, b) { if (a && typeof a == "string" && b.comma && a.indexOf(",") > -1) { return a.split(","); } else { return a; } } function j(a, b, c, d) { if (a) { var f = c.allowDots ? a.replace(/\.([^.[]+)/g, "[$1]") : a; var g = /(\[[^[\]]*])/g; var h = c.depth > 0 && /(\[[^[\]]*])/.exec(f); var j = h ? f.slice(0, h.index) : f; var k = []; if (j) { if (!c.plainObjects && e.call(Object.prototype, j) && !c.allowPrototypes) { return; } k.push(j); } for (var l = 0; c.depth > 0 && (h = g.exec(f)) !== null && l < c.depth;) { l += 1; if (!c.plainObjects && e.call(Object.prototype, h[1].slice(1, -1)) && !c.allowPrototypes) { return; } k.push(h[1]); } if (h) { k.push("[" + f.slice(h.index) + "]"); } return function (a, b, c, d) { for (var e = d ? b : i(b, c), f = a.length - 1; f >= 0; --f) { var g; var h = a[f]; if (h === "[]" && c.parseArrays) { g = [].concat(e); } else { g = c.plainObjects ? Object.create(null) : {}; var j = h.charAt(0) === "[" && h.charAt(h.length - 1) === "]" ? h.slice(1, -1) : h; var k = parseInt(j, 10); if (c.parseArrays || j !== "") { if (!isNaN(k) && h !== j && String(k) === j && k >= 0 && c.parseArrays && k <= c.arrayLimit) { (g = [])[k] = e; } else if (j !== "__proto__") { g[j] = e; } } else { g = { 0: e }; } } e = g; } return e; }(k, b, c, d); } } a.exports = function (a, b) { var c = function (a) { if (!a) { return g; } if (a.decoder !== null && a.decoder !== undefined && typeof a.decoder != "function") { throw new TypeError("Decoder has to be a function."); } if (a.charset !== undefined && a.charset !== "utf-8" && a.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } var b = a.charset === undefined ? g.charset : a.charset; return { allowDots: a.allowDots === undefined ? g.allowDots : !!a.allowDots, allowPrototypes: typeof a.allowPrototypes == "boolean" ? a.allowPrototypes : g.allowPrototypes, allowSparse: typeof a.allowSparse == "boolean" ? a.allowSparse : g.allowSparse, arrayLimit: typeof a.arrayLimit == "number" ? a.arrayLimit : g.arrayLimit, charset: b, charsetSentinel: typeof a.charsetSentinel == "boolean" ? a.charsetSentinel : g.charsetSentinel, comma: typeof a.comma == "boolean" ? a.comma : g.comma, decoder: typeof a.decoder == "function" ? a.decoder : g.decoder, delimiter: typeof a.delimiter == "string" || d.isRegExp(a.delimiter) ? a.delimiter : g.delimiter, depth: typeof a.depth == "number" || a.depth === false ? +a.depth : g.depth, ignoreQueryPrefix: a.ignoreQueryPrefix === true, interpretNumericEntities: typeof a.interpretNumericEntities == "boolean" ? a.interpretNumericEntities : g.interpretNumericEntities, parameterLimit: typeof a.parameterLimit == "number" ? a.parameterLimit : g.parameterLimit, parseArrays: a.parseArrays !== false, plainObjects: typeof a.plainObjects == "boolean" ? a.plainObjects : g.plainObjects, strictNullHandling: typeof a.strictNullHandling == "boolean" ? a.strictNullHandling : g.strictNullHandling }; }(b); if (a === "" || a == null) { if (c.plainObjects) { return Object.create(null); } else { return {}; } } for (var k = typeof a == "string" ? function (a, b) { var c; var j = { "__proto__": null }; var k = b.ignoreQueryPrefix ? a.replace(/^\?/, "") : a; var l = b.parameterLimit === Infinity ? undefined : b.parameterLimit; var m = k.split(b.delimiter, l); var n = -1; var o = b.charset; if (b.charsetSentinel) { for (c = 0; c < m.length; ++c) { if (m[c].indexOf("utf8=") === 0) { if (m[c] === "utf8=%E2%9C%93") { o = "utf-8"; } else if (m[c] === "utf8=%26%2310003%3B") { o = "iso-8859-1"; } n = c; c = m.length; } } } for (c = 0; c < m.length; ++c) { if (c !== n) { var p; var q; var r = m[c]; var s = r.indexOf("]="); var t = s === -1 ? r.indexOf("=") : s + 1; if (t === -1) { p = b.decoder(r, g.decoder, o, "key"); q = b.strictNullHandling ? null : ""; } else { p = b.decoder(r.slice(0, t), g.decoder, o, "key"); q = d.maybeMap(i(r.slice(t + 1), b), function (a) { return b.decoder(a, g.decoder, o, "value"); }); } if (q && b.interpretNumericEntities && o === "iso-8859-1") { q = h(q); } if (r.indexOf("[]=") > -1) { q = f(q) ? [q] : q; } if (e.call(j, p)) { j[p] = d.combine(j[p], q); } else { j[p] = q; } } } return j; }(a, c) : a, l = c.plainObjects ? Object.create(null) : {}, m = Object.keys(k), n = 0; n < m.length; ++n) { var o = m[n]; var p = j(o, k[o], c, typeof a == "string"); l = d.merge(l, p, c); } if (c.allowSparse === true) { return l; } else { return d.compact(l); } }; }, 730: (a, b, c) => { 'use strict'; var d = c(478); var e = c(368); var f = c(532); var g = Object.prototype.hasOwnProperty; var h = { brackets: function (a) { return a + "[]"; }, comma: "comma", indices: function (a, b) { return a + "[" + b + "]"; }, repeat: function (a) { return a; } }; var i = Array.isArray; var j = Array.prototype.push; function k(a, b) { j.apply(a, i(b) ? b : [b]); } var l = Date.prototype.toISOString; var m = f.default; var n = { addQueryPrefix: false, allowDots: false, charset: "utf-8", charsetSentinel: false, delimiter: "&", encode: true, encoder: e.encode, encodeValuesOnly: false, format: m, formatter: f.formatters[m], indices: false, serializeDate: function (a) { return l.call(a); }, skipNulls: false, strictNullHandling: false }; var o = {}; var p = function w(a, b, c, f, g, h, j, l, m, p, q, r, s, t, u, v) { for (var x, y = a, z = v, A = 0, B = false; (z = z.get(o)) !== undefined && !B;) { var C = z.get(a); A += 1; if (C !== undefined) { if (C === A) { throw new RangeError("Cyclic object value"); } B = true; } if (z.get(o) === undefined) { A = 0; } } if (typeof l == "function") { y = l(b, y); } else if (y instanceof Date) { y = q(y); } else if (c === "comma" && i(y)) { y = e.maybeMap(y, function (a) { if (a instanceof Date) { return q(a); } else { return a; } }); } if (y === null) { if (g) { if (j && !t) { return j(b, n.encoder, u, "key", r); } else { return b; } } y = ""; } if (typeof (x = y) == "string" || typeof x == "number" || typeof x == "boolean" || typeof x == "symbol" || typeof x == "bigint" || e.isBuffer(y)) { if (j) { return [s(t ? b : j(b, n.encoder, u, "key", r)) + "=" + s(j(y, n.encoder, u, "value", r))]; } else { return [s(b) + "=" + s(String(y))]; } } var D; var E = []; if (y === undefined) { return E; } if (c === "comma" && i(y)) { if (t && j) { y = e.maybeMap(y, j); } D = [{ value: y.length > 0 ? y.join(",") || null : undefined }]; } else if (i(l)) { D = l; } else { var F = Object.keys(y); D = m ? F.sort(m) : F; } for (var G = f && i(y) && y.length === 1 ? b + "[]" : b, H = 0; H < D.length; ++H) { var I = D[H]; var J = typeof I == "object" && I.value !== undefined ? I.value : y[I]; if (!h || J !== null) { var K = i(y) ? typeof c == "function" ? c(G, I) : G : G + (p ? "." + I : "[" + I + "]"); v.set(a, A); var L = d(); L.set(o, v); k(E, w(J, K, c, f, g, h, c === "comma" && t && i(y) ? null : j, l, m, p, q, r, s, t, u, L)); } } return E; }; a.exports = function (a, b) { var c; var e = a; var j = function (a) { if (!a) { return n; } if (a.encoder !== null && a.encoder !== undefined && typeof a.encoder != "function") { throw new TypeError("Encoder has to be a function."); } var b = a.charset || n.charset; if (a.charset !== undefined && a.charset !== "utf-8" && a.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } var c = f.default; if (a.format !== undefined) { if (!g.call(f.formatters, a.format)) { throw new TypeError("Unknown format option provided."); } c = a.format; } var d = f.formatters[c]; var e = n.filter; if (typeof a.filter == "function" || i(a.filter)) { e = a.filter; } return { addQueryPrefix: typeof a.addQueryPrefix == "boolean" ? a.addQueryPrefix : n.addQueryPrefix, allowDots: a.allowDots === undefined ? n.allowDots : !!a.allowDots, charset: b, charsetSentinel: typeof a.charsetSentinel == "boolean" ? a.charsetSentinel : n.charsetSentinel, delimiter: a.delimiter === undefined ? n.delimiter : a.delimiter, encode: typeof a.encode == "boolean" ? a.encode : n.encode, encoder: typeof a.encoder == "function" ? a.encoder : n.encoder, encodeValuesOnly: typeof a.encodeValuesOnly == "boolean" ? a.encodeValuesOnly : n.encodeValuesOnly, filter: e, format: c, formatter: d, serializeDate: typeof a.serializeDate == "function" ? a.serializeDate : n.serializeDate, skipNulls: typeof a.skipNulls == "boolean" ? a.skipNulls : n.skipNulls, sort: typeof a.sort == "function" ? a.sort : null, strictNullHandling: typeof a.strictNullHandling == "boolean" ? a.strictNullHandling : n.strictNullHandling }; }(b); if (typeof j.filter == "function") { e = (0, j.filter)("", e); } else if (i(j.filter)) { c = j.filter; } var l; var m = []; if (typeof e != "object" || e === null) { return ""; } l = b && b.arrayFormat in h ? b.arrayFormat : b && "indices" in b ? b.indices ? "indices" : "repeat" : "indices"; var o = h[l]; if (b && "commaRoundTrip" in b && typeof b.commaRoundTrip != "boolean") { throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); } var q = o === "comma" && b && b.commaRoundTrip; c ||= Object.keys(e); if (j.sort) { c.sort(j.sort); } for (var r = d(), s = 0; s < c.length; ++s) { var t = c[s]; if (!j.skipNulls || e[t] !== null) { k(m, p(e[t], t, o, q, j.strictNullHandling, j.skipNulls, j.encode ? j.encoder : null, j.filter, j.sort, j.allowDots, j.serializeDate, j.format, j.formatter, j.encodeValuesOnly, j.charset, r)); } } var u = m.join(j.delimiter); var v = j.addQueryPrefix === true ? "?" : ""; if (j.charsetSentinel) { if (j.charset === "iso-8859-1") { v += "utf8=%26%2310003%3B&"; } else { v += "utf8=%E2%9C%93&"; } } if (u.length > 0) { return v + u; } else { return ""; } }; }, 368: (a, b, c) => { 'use strict'; var d = c(532); var e = Object.prototype.hasOwnProperty; var f = Array.isArray; var g = function () { for (var a = [], b = 0; b < 256; ++b) { a.push("%" + ((b < 16 ? "0" : "") + b.toString(16)).toUpperCase()); } return a; }(); function h(a, b) { for (var c = b && b.plainObjects ? Object.create(null) : {}, d = 0; d < a.length; ++d) { if (a[d] !== undefined) { c[d] = a[d]; } } return c; } a.exports = { arrayToObject: h, assign: function (a, b) { return Object.keys(b).reduce(function (a, c) { a[c] = b[c]; return a; }, a); }, combine: function (a, b) { return [].concat(a, b); }, compact: function (a) { for (var b = [{ obj: { o: a }, prop: "o" }], c = [], d = 0; d < b.length; ++d) { for (var e = b[d], g = e.obj[e.prop], h = Object.keys(g), i = 0; i < h.length; ++i) { var j = h[i]; var k = g[j]; if (typeof k == "object" && k !== null && c.indexOf(k) === -1) { b.push({ obj: g, prop: j }); c.push(k); } } } (function (a) { while (a.length > 1) { var b = a.pop(); var c = b.obj[b.prop]; if (f(c)) { for (var d = [], e = 0; e < c.length; ++e) { if (c[e] !== undefined) { d.push(c[e]); } } b.obj[b.prop] = d; } } })(b); return a; }, decode: function (a, b, c) { var d = a.replace(/\+/g, " "); if (c === "iso-8859-1") { return d.replace(/%[0-9a-f]{2}/gi, unescape); } try { return decodeURIComponent(d); } catch (a) { return d; } }, encode: function (a, b, c, e, f) { if (a.length === 0) { return a; } var h = a; if (typeof a == "symbol") { h = Symbol.prototype.toString.call(a); } else if (typeof a != "string") { h = String(a); } if (c === "iso-8859-1") { return escape(h).replace(/%u[0-9a-f]{4}/gi, function (a) { return "%26%23" + parseInt(a.slice(2), 16) + "%3B"; }); } for (var i = "", j = 0; j < h.length; ++j) { var k = h.charCodeAt(j); if (k === 45 || k === 46 || k === 95 || k === 126 || k >= 48 && k <= 57 || k >= 65 && k <= 90 || k >= 97 && k <= 122 || f === d.RFC1738 && (k === 40 || k === 41)) { i += h.charAt(j); } else if (k < 128) { i += g[k]; } else if (k < 2048) { i += g[k >> 6 | 192] + g[k & 63 | 128]; } else if (k < 55296 || k >= 57344) { i += g[k >> 12 | 224] + g[k >> 6 & 63 | 128] + g[k & 63 | 128]; } else { j += 1; k = 65536 + ((k & 1023) << 10 | h.charCodeAt(j) & 1023); i += g[k >> 18 | 240] + g[k >> 12 & 63 | 128] + g[k >> 6 & 63 | 128] + g[k & 63 | 128]; } } return i; }, isBuffer: function (a) { return !!a && typeof a == "object" && !!a.constructor && !!a.constructor.isBuffer && !!a.constructor.isBuffer(a); }, isRegExp: function (a) { return Object.prototype.toString.call(a) === "[object RegExp]"; }, maybeMap: function (a, b) { if (f(a)) { for (var c = [], d = 0; d < a.length; d += 1) { c.push(b(a[d])); } return c; } return b(a); }, merge: function d(a, b, c) { if (!b) { return a; } if (typeof b != "object") { if (f(a)) { a.push(b); } else { if (!a || typeof a != "object") { return [a, b]; } if (c && (c.plainObjects || c.allowPrototypes) || !e.call(Object.prototype, b)) { a[b] = true; } } return a; } if (!a || typeof a != "object") { return [a].concat(b); } var g = a; if (f(a) && !f(b)) { g = h(a, c); } if (f(a) && f(b)) { b.forEach(function (b, f) { if (e.call(a, f)) { var g = a[f]; if (g && typeof g == "object" && b && typeof b == "object") { a[f] = d(g, b, c); } else { a.push(b); } } else { a[f] = b; } }); return a; } else { return Object.keys(b).reduce(function (a, f) { var g = b[f]; if (e.call(a, f)) { a[f] = d(a[f], g, c); } else { a[f] = g; } return a; }, g); } } }; }, 575: (a, b, c) => { 'use strict'; var d = c(511); function e() { this.protocol = null; this.slashes = null; this.auth = null; this.host = null; this.port = null; this.hostname = null; this.hash = null; this.search = null; this.query = null; this.pathname = null; this.path = null; this.href = null; } var f = /^([a-z0-9.+-]+:)/i; var g = /:[0-9]*$/; var h = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/; var i = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", "\"", "`", " ", "\r", "\n", "\t"]); var j = ["'"].concat(i); var k = ["%", "/", "?", ";", "#"].concat(j); var l = ["/", "?", "#"]; var m = /^[+a-z0-9A-Z_-]{0,63}$/; var n = /^([+a-z0-9A-Z_-]{0,63})(.*)$/; var o = { javascript: true, "javascript:": true }; var p = { javascript: true, "javascript:": true }; var q = { http: true, https: true, ftp: true, gopher: true, file: true, "http:": true, "https:": true, "ftp:": true, "gopher:": true, "file:": true }; var r = c(984); function s(a, b, c) { if (a && typeof a == "object" && a instanceof e) { return a; } var d = new e(); d.parse(a, b, c); return d; } e.prototype.parse = function (a, b, c) { if (typeof a != "string") { throw new TypeError("Parameter 'url' must be a string, not " + typeof a); } var e = a.indexOf("?"); var g = e !== -1 && e < a.indexOf("#") ? "?" : "#"; var i = a.split(g); i[0] = i[0].replace(/\\/g, "/"); var s = a = i.join(g); s = s.trim(); if (!c && a.split("#").length === 1) { var t = h.exec(s); if (t) { this.path = s; this.href = s; this.pathname = t[1]; if (t[2]) { this.search = t[2]; this.query = b ? r.parse(this.search.substr(1)) : this.search.substr(1); } else if (b) { this.search = ""; this.query = {}; } return this; } } var u = f.exec(s); if (u) { var v = (u = u[0]).toLowerCase(); this.protocol = v; s = s.substr(u.length); } if (c || u || s.match(/^\/\/[^@/]+@[^@/]+/)) { var w = s.substr(0, 2) === "//"; if (!!w && (!u || !p[u])) { s = s.substr(2); this.slashes = true; } } if (!p[u] && (w || u && !q[u])) { for (var x, y, z = -1, A = 0; A < l.length; A++) { if ((B = s.indexOf(l[A])) !== -1 && (z === -1 || B < z)) { z = B; } } if ((y = z === -1 ? s.lastIndexOf("@") : s.lastIndexOf("@", z)) !== -1) { x = s.slice(0, y); s = s.slice(y + 1); this.auth = decodeURIComponent(x); } z = -1; A = 0; for (; A < k.length; A++) { var B; if ((B = s.indexOf(k[A])) !== -1 && (z === -1 || B < z)) { z = B; } } if (z === -1) { z = s.length; } this.host = s.slice(0, z); s = s.slice(z); this.parseHost(); this.hostname = this.hostname || ""; var C = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]"; if (!C) { for (var D = this.hostname.split(/\./), E = (A = 0, D.length); A < E; A++) { var F = D[A]; if (F && !F.match(m)) { for (var G = "", H = 0, I = F.length; H < I; H++) { if (F.charCodeAt(H) > 127) { G += "x"; } else { G += F[H]; } } if (!G.match(m)) { var J = D.slice(0, A); var K = D.slice(A + 1); var L = F.match(n); if (L) { J.push(L[1]); K.unshift(L[2]); } if (K.length) { s = "/" + K.join(".") + s; } this.hostname = J.join("."); break; } } } } if (this.hostname.length > 255) { this.hostname = ""; } else { this.hostname = this.hostname.toLowerCase(); } if (!C) { this.hostname = d.toASCII(this.hostname); } var M = this.port ? ":" + this.port : ""; var N = this.hostname || ""; this.host = N + M; this.href += this.host; if (C) { this.hostname = this.hostname.substr(1, this.hostname.length - 2); if (s[0] !== "/") { s = "/" + s; } } } if (!o[v]) { A = 0; E = j.length; A = 0; E = j.length; for (; A < E; A++) { var O = j[A]; if (s.indexOf(O) !== -1) { var P = encodeURIComponent(O); if (P === O) { P = escape(O); } s = s.split(O).join(P); } } } var Q = s.indexOf("#"); if (Q !== -1) { this.hash = s.substr(Q); s = s.slice(0, Q); } var R = s.indexOf("?"); if (R !== -1) { this.search = s.substr(R); this.query = s.substr(R + 1); if (b) { this.query = r.parse(this.query); } s = s.slice(0, R); } else if (b) { this.search = ""; this.query = {}; } if (s) { this.pathname = s; } if (q[v] && this.hostname && !this.pathname) { this.pathname = "/"; } if (this.pathname || this.search) { M = this.pathname || ""; var S = this.search || ""; this.path = M + S; } this.href = this.format(); return this; }; e.prototype.format = function () { var a = this.auth || ""; if (a) { a = (a = encodeURIComponent(a)).replace(/%3A/i, ":"); a += "@"; } var b = this.protocol || ""; var c = this.pathname || ""; var d = this.hash || ""; var e = false; var f = ""; if (this.host) { e = a + this.host; } else if (this.hostname) { e = a + (this.hostname.indexOf(":") === -1 ? this.hostname : "[" + this.hostname + "]"); if (this.port) { e += ":" + this.port; } } if (this.query && typeof this.query == "object" && Object.keys(this.query).length) { f = r.stringify(this.query, { arrayFormat: "repeat", addQueryPrefix: false }); } var g = this.search || f && "?" + f || ""; if (b && b.substr(-1) !== ":") { b += ":"; } if (this.slashes || (!b || q[b]) && e !== false) { e = "//" + (e || ""); if (c && c.charAt(0) !== "/") { c = "/" + c; } } else { e ||= ""; } if (d && d.charAt(0) !== "#") { d = "#" + d; } if (g && g.charAt(0) !== "?") { g = "?" + g; } return b + e + (c = c.replace(/[?#]/g, function (a) { return encodeURIComponent(a); })) + (g = g.replace("#", "%23")) + d; }; e.prototype.resolve = function (a) { return this.resolveObject(s(a, false, true)).format(); }; e.prototype.resolveObject = function (a) { if (typeof a == "string") { var b = new e(); b.parse(a, false, true); a = b; } for (var c = new e(), d = Object.keys(this), f = 0; f < d.length; f++) { var g = d[f]; c[g] = this[g]; } c.hash = a.hash; if (a.href === "") { c.href = c.format(); return c; } if (a.slashes && !a.protocol) { for (var h = Object.keys(a), i = 0; i < h.length; i++) { var j = h[i]; if (j !== "protocol") { c[j] = a[j]; } } if (q[c.protocol] && c.hostname && !c.pathname) { c.pathname = "/"; c.path = c.pathname; } c.href = c.format(); return c; } if (a.protocol && a.protocol !== c.protocol) { if (!q[a.protocol]) { for (var k = Object.keys(a), l = 0; l < k.length; l++) { var m = k[l]; c[m] = a[m]; } c.href = c.format(); return c; } c.protocol = a.protocol; if (a.host || p[a.protocol]) { c.pathname = a.pathname; } else { for (var n = (a.pathname || "").split("/"); n.length && !(a.host = n.shift());); a.host ||= ""; a.hostname ||= ""; if (n[0] !== "") { n.unshift(""); } if (n.length < 2) { n.unshift(""); } c.pathname = n.join("/"); } c.search = a.search; c.query = a.query; c.host = a.host || ""; c.auth = a.auth; c.hostname = a.hostname || a.host; c.port = a.port; if (c.pathname || c.search) { var o = c.pathname || ""; var r = c.search || ""; c.path = o + r; } c.slashes = c.slashes || a.slashes; c.href = c.format(); return c; } var s = c.pathname && c.pathname.charAt(0) === "/"; var t = a.host || a.pathname && a.pathname.charAt(0) === "/"; var u = t || s || c.host && a.pathname; var v = u; var w = c.pathname && c.pathname.split("/") || []; n = a.pathname && a.pathname.split("/") || []; var x = c.protocol && !q[c.protocol]; if (x) { c.hostname = ""; c.port = null; if (c.host) { if (w[0] === "") { w[0] = c.host; } else { w.unshift(c.host); } } c.host = ""; if (a.protocol) { a.hostname = null; a.port = null; if (a.host) { if (n[0] === "") { n[0] = a.host; } else { n.unshift(a.host); } } a.host = null; } u = u && (n[0] === "" || w[0] === ""); } if (t) { c.host = a.host || a.host === "" ? a.host : c.host; c.hostname = a.hostname || a.hostname === "" ? a.hostname : c.hostname; c.search = a.search; c.query = a.query; w = n; } else if (n.length) { w ||= []; w.pop(); w = w.concat(n); c.search = a.search; c.query = a.query; } else if (a.search != null) { if (x) { c.host = w.shift(); c.hostname = c.host; if (C = !!c.host && c.host.indexOf("@") > 0 && c.host.split("@")) { c.auth = C.shift(); c.hostname = C.shift(); c.host = c.hostname; } } c.search = a.search; c.query = a.query; if (c.pathname !== null || c.search !== null) { c.path = (c.pathname ? c.pathname : "") + (c.search ? c.search : ""); } c.href = c.format(); return c; } if (!w.length) { c.pathname = null; if (c.search) { c.path = "/" + c.search; } else { c.path = null; } c.href = c.format(); return c; } for (var y = w.slice(-1)[0], z = (c.host || a.host || w.length > 1) && (y === "." || y === "..") || y === "", A = 0, B = w.length; B >= 0; B--) { if ((y = w[B]) === ".") { w.splice(B, 1); } else if (y === "..") { w.splice(B, 1); A++; } else if (A) { w.splice(B, 1); A--; } } if (!u && !v) { for (; A--; A) { w.unshift(".."); } } if (!!u && w[0] !== "" && (!w[0] || w[0].charAt(0) !== "/")) { w.unshift(""); } if (z && w.join("/").substr(-1) !== "/") { w.push(""); } var C; var D = w[0] === "" || w[0] && w[0].charAt(0) === "/"; if (x) { c.hostname = D ? "" : w.length ? w.shift() : ""; c.host = c.hostname; if (C = !!c.host && c.host.indexOf("@") > 0 && c.host.split("@")) { c.auth = C.shift(); c.hostname = C.shift(); c.host = c.hostname; } } if ((u = u || c.host && w.length) && !D) { w.unshift(""); } if (w.length > 0) { c.pathname = w.join("/"); } else { c.pathname = null; c.path = null; } if (c.pathname !== null || c.search !== null) { c.path = (c.pathname ? c.pathname : "") + (c.search ? c.search : ""); } c.auth = a.auth || c.auth; c.slashes = c.slashes || a.slashes; c.href = c.format(); return c; }; e.prototype.parseHost = function () { var a = this.host; var b = g.exec(a); if (b) { if ((b = b[0]) !== ":") { this.port = b.substr(1); } a = a.substr(0, a.length - b.length); } if (a) { this.hostname = a; } }; b.Qc = s; b.DB = function (a, b) { return s(a, false, true).resolve(b); }; b.WU = function (a) { if (typeof a == "string") { a = s(a); } if (a instanceof e) { return a.format(); } else { return e.prototype.format.call(a); } }; }, 241: (a, b, c) => { 'use strict'; c.d(b, { c: () => f }); var d = c(911); var e = c(42); class f { constructor() { this.visible = false; this.ticks = 0; this.averageServerFrameTime = 0; this.lastByteSizes = []; } init() { document.body.insertAdjacentHTML("beforeend", "<div id=\"hud-debug-container\" class=\"hud-debug-container\"></div>"); this.stats = new e.j(); this.stats.domElement.addEventListener("mousedown", this.onMouseClick); this.stats.domElement.style = "position: relative; transform: scale(1.5); transform-origin: 0 0; cursor:pointer; width: min-content;"; document.getElementById("hud-debug-container").appendChild(this.stats.domElement); this.debugElem = document.createElement("div"); this.debugElem.id = "hud-debug"; this.debugElem.className = "hud-debug"; this.debugElem.style = "color:#ffffff;font-family:sans-serif;background-color:rgba(0,0,0,0.8); margin-top: 30px;"; document.getElementById("hud-debug-container").appendChild(this.debugElem); this.debugElem.addEventListener("mousedown", this.onMouseClick); d.l.eventEmitter.on("RendererUpdated", this.onRendererTick.bind(this)); d.l.eventEmitter.on("117Up", this.onKeyRelease.bind(this)); d.l.eventEmitter.on("EntityUpdate", this.onEntityUpdate.bind(this)); if (this.visible) { this.show(); } else { this.hide(); } } onEntityUpdate(a) { this.averageServerFrameTime = a.averageServerFrameTime; this.lastByteSize = a.byteSize; this.lastByteSizes.push(this.lastByteSize); if (this.lastByteSizes.length > 1000 / d.l.renderer.replicator.msPerTick) { this.lastByteSizes.shift(); } } onMouseClick(a) { a.stopPropagation(); a.preventDefault(); } begin() { if (this.stats && this.visible) { this.stats.begin(); } } end() { if (this.stats && this.visible) { this.stats.end(); } } show() { this.visible = true; document.getElementById("hud-debug-container").style.display = "block"; } hide() { this.visible = false; document.getElementById("hud-debug-container").style.display = "none"; } onRendererTick() { if (!this.visible) { return; } if (this.ticks >= 20) { this.ticks = 0; } this.ticks++; if (this.ticks % 20 != 0) { return; } const a = d.l.renderer.world.entities[d.l.renderer.world.localPlayer]?.targetTick; this.debugElem.innerHTML = "\n Ping: " + d.l.network.getPing() + " ms<br>\n FPS: " + Math.round(d.l.renderer.replicator.getFps()) + "<br>\n X: " + a?.position.x + "<br>\n Y: " + a?.position.y + "<br>\n Server Uptime: " + Math.floor(d.l.renderer.replicator.getServerTime()).toLocaleString() + " ms<br>\n Entities shared with client: " + Object.keys(d.l.renderer.world.entities).length + "<br>\n Tick flow rate: " + Math.floor(d.l.network.entityUpdateTimeDelta) + " ms<br>\n Average server frame time: " + this.averageServerFrameTime + " ms<br>\n Last byte size: " + this.lastByteSize + " bytes (" + g(eval(this.lastByteSizes.join("+")), 3) + "b/sec)<br>\n Frame stutters: " + d.l.renderer.replicator.frameStutters + "<br>\n "; } onKeyRelease() { if (this.visible) { this.hide(); } else { this.show(); } } } const g = (a, b) => { const c = ["k", "m", "g"]; b = Math.pow(10, b); for (let d = c.length - 1; d >= 0; d--) { const e = Math.pow(10, (d + 1) * 3); if (e <= a) { if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) { a = 1; d++; } a += " " + c[d]; break; } } return a; }; }, 911: (a, b, c) => { 'use strict'; c.d(b, { l: () => Jj }); class d { constructor(a) { this.element = a; } show() { this.element.style.display = "block"; } hide() { this.element.style.display = "none"; } isVisible() { return window.getComputedStyle(this.element).display !== "none"; } } class e extends d { constructor() { super(document.getElementById("hud-intro")); this.nameElem = this.element.querySelector(".hud-intro-name"); this.serversElem = this.element.querySelector(".hud-intro-servers"); this.playElem = this.element.querySelector(".hud-intro-play"); this.errorElem = this.element.querySelector(".hud-intro-error"); this.partyKey = ""; this.socketIntentionallyClosed = false; window.addEventListener("load", this.onPageLoad.bind(this)); const a = ["tree", "stone"]; const b = Math.floor(Math.random() * 15) + 7; for (let c = 0; c < b; c++) { let b = document.createElement("span"); b.className = "hud-intro-" + a[Math.floor(Math.random() * a.length)] + "-" + (Math.floor(Math.random() * 2) + 1); b.style = "top:" + Math.floor(Math.random() * 100) + "%;\n left: " + Math.floor(Math.random() * 100) + "%;\n transform: rotate(" + Math.floor(Math.random() * 360) + "deg);"; this.element.appendChild(b); } this.servers = JSON.parse(window.servers); if (this.servers.length == 0) { this.servers = [{ id: "v1001", country: "Local", city: "Local", status: "Low" }]; } let c = {}; for (let a of this.servers) { if (!(a.country in c)) { c[a.country] = {}; } c[a.country][a.id] = a; } for (let a in c) { let b = document.createElement("optgroup"); b.label = a; this.serversElem.appendChild(b); let d = 1; for (let e in c[a]) { const f = document.createElement("option"); f.value = e; const g = c[a][e]; f.textContent = a + " (" + g.city + ") #" + d++ + " [" + g.status + "]"; b.appendChild(f); } } this.playElem.addEventListener("mouseup", this.connect.bind(this)); this.nameElem.addEventListener("keyup", a => { if (a.key == "Enter") { this.connect(); } }); if (document.location.hash !== "") { const [a, b] = document.location.hash.substring(2).split("/"); this.partyKey = b || ""; if (this.servers.find(b => b.id == a) !== undefined) { this.serversElem.querySelector("option[value=" + a + "]").setAttribute("selected", "true"); } } if (window.storage.getItem("settings-preload") == null) { window.storage.setItem("settings-preload", "true"); } document.getElementsByClassName("hud-settings-preload")[0].checked = window.storage.getItem("settings-preload") === "true"; } init() { Jj.eventEmitter.on("SocketClosed", this.onSocketClosed.bind(this)); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorldResponse.bind(this)); } connect() { if (!this.playElem.classList.contains("disabled")) { this.playElem.innerHTML = "<span class='hud-loading'></span>"; Jj.network.setConnectionData(this.nameElem.value, this.partyKey, this.servers.find(a => a.id == this.serversElem.value)); Jj.network.connect(); } } onPageLoad() { this.nameElem.value = window.storage.getItem("displayName") || ""; } onSocketClosed() { if (this.socketIntentionallyClosed !== true) { if (!Jj.getInWorld()) { this.playElem.innerHTML = "Play"; this.serversElem.classList.add("has-error"); this.errorElem.style.display = "block"; this.errorElem.innerText = "You were not able to connect to this server for unknown reasons. Check your internet connection then try again."; } } else { this.socketIntentionallyClosed = false; } } onEnterWorldResponse(a) { window.storage.setItem("displayName", a.name); this.hide(); } setFailure(a) { this.socketIntentionallyClosed = true; let b = "Unknown reason."; if (a.reason) { switch (a.reason) { case "MaxPlayerCount": b = "This server is currently full. Please try again later or select another server."; break; case "MaxIpLimit": b = "You've reached the maximum number of tabs."; } } this.playElem.innerHTML = "Play"; this.errorElem.innerText = b; this.serversElem.classList.add("has-error"); this.errorElem.style.display = "block"; } } class f extends d { constructor() { super(document.getElementsByClassName("hud-intro-leaderboard")[0]); this.leaderboardToggle = document.getElementsByClassName("hud-intro-leaderboard-toggle")[0]; this.leaderboardWrapper = this.element.querySelector(".hud-intro-leaderboard-wrapper"); this.categoryElem = this.element.querySelector(".hud-intro-leaderboard-category"); this.timeElem = this.element.querySelector(".hud-intro-leaderboard-time"); this.leaderboardToggle.addEventListener("click", () => { this.element.classList.add("visible"); this.leaderboardToggle.style.display = "none"; }); this.element.querySelector(".hud-grid-exit").addEventListener("click", () => { this.element.classList.remove("visible"); this.leaderboardToggle.style.display = "block"; }); this.categoryElem.addEventListener("change", this.requestLeaderboard.bind(this)); this.timeElem.addEventListener("change", this.requestLeaderboard.bind(this)); this.requestLeaderboard(); this.element.addEventListener("click", a => { if (a.target == this.element) { this.element.classList.remove("visible"); this.leaderboardToggle.style.display = "block"; } }); } requestLeaderboard() { this.leaderboardWrapper.innerHTML = "<div class='hud-loading'></div>"; const a = new XMLHttpRequest(); a.open("GET", "http://zombia.io/leaderboard/data?category=" + this.categoryElem.value + "&time=" + this.timeElem.value); a.onreadystatechange = () => { if (a.readyState !== 4) { return; } const b = JSON.parse(a.responseText); if (b.length == 0) { this.leaderboardWrapper.innerHTML = "<span>We couldn't find any entries with that query.</span>"; return; } let c = "<div class='hud-intro-leaderboard-results'>"; const d = new Intl.ListFormat("en", { style: "long", type: "conjunction" }); for (let a = 0; a < b.length; a++) { const e = b[a]; if (this.categoryElem.value == "wave") { c += "<div class=\"hud-intro-leaderboard-result\"><strong style=\"float: left; font-style: italic;\">" + (a + 1) + "</strong><div>" + d.format(e.players) + " — <strong>" + e.wave.toLocaleString() + "</strong></div></div>"; } else if (this.categoryElem.value == "score") { c += "<div class=\"hud-intro-leaderboard-result\"><strong style=\"float: left; font-style: italic;\">" + (a + 1) + "</strong><div>" + d.format(e.players) + " — <strong>" + e.score.toLocaleString() + "</strong></div></div>"; } } c += "</div>"; this.leaderboardWrapper.innerHTML = c; }; a.send(); } } class g extends d { constructor() { let a = document.createElement("div"); a.className = "hud-reconnect"; document.getElementById("hud").appendChild(a); super(a); } updateReconnectionText() { this.element.innerHTML = "\n <div class=\"hud-reconnect-wrapper\">\n <div class=\"hud-reconnect-main\">\n <span class=\"hud-loading\"></span>\n <p>You've lost connection to the server.</p>\n <small>Not your internet? Report to the <a target=\"_blank\" href=\"https://discord.gg/4cxREnV4WE\">Discord server</a>.</small>\n <p style=\"position:absolute;bottom:0;left:50%;transform:translateX(-50%);\">Server ID: " + Jj.network.options.serverData.id + "</p>\n </div>\n </div>\n "; } show() { if (!this.isVisible()) { this.updateReconnectionText(); } super.show(); } } class h extends d { constructor(a) { const b = document.createElement("div"); b.className = "hud-buildingbar-building"; if (a !== "Factory") { b.textContent = Jj.ui.buildingData[a].hotkey; } else { b.classList.add("gold-stash"); } super(b); this.type = a; this.element.setAttribute("BuildingType", a); this.element.addEventListener("mouseenter", () => { this.element.style.cursor = "pointer"; Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element); }); this.element.addEventListener("mouseleave", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.hide(); }); this.element.addEventListener("mouseup", this.onMouseUp.bind(this)); this.tier = null; this.update(); } init() { Jj.eventEmitter.on("BuildingsUpdated", this.updateBuildingData.bind(this)); if (Jj.ui.buildingData[this.type].hotkey) { Jj.eventEmitter.on(Jj.ui.buildingData[this.type].hotkey.toString().charCodeAt(0) + "Up", () => { this.onMouseUp(); }); } Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.updateBuildingData.bind(this)); } updateBuildingData() { if (Jj.ui.factory !== null) { this.update(Jj.ui.factory.tier); } else { this.update(); } } update(a = 1) { if (this.type !== "Factory") { if (Jj.ui.factory !== null) { const a = Jj.ui.buildingData[this.type]; this.element.classList[a.built >= a.limit ? "add" : "remove"]("disabled"); this.show(); Jj.ui.components.uiBuildingBar.unlock(); } else { this.hide(); Jj.ui.components.uiBuildingBar.lock(); } } else if (Jj.ui.factory !== null) { this.hide(); } else { this.show(); } if (a !== this.tier) { this.tier = a; this.element.style["background-image"] = "url('http://zombia.io/asset/images/Ui/Buildings/" + this.type + "/" + this.type + "Tier" + a + ".svg')"; } } onMouseUp(a) { for (let b in Jj.ui.components.uiTopBar.menuIcons) { Jj.ui.components.uiTopBar.menuIcons[b].hide(); } if (Jj.network.connected === true && Jj.ui.playerTick.health > 0 && Jj.ui.buildingData[this.type].built < Jj.ui.buildingData[this.type].limit && (Jj.ui.factory == null && this.type == "Factory" || Jj.ui.factory !== null && this.type !== "Factory")) { Jj.ui.components.uiPlacementOverlay.startPlacing(this.type); Jj.ui.components.uiBuildingBar.buildingTooltip.hide(); } } } const i = new class { constructor() { this.checkedIfMobile = false; this.actuallyIsMobile = false; } lerp(a, b, c) { return a * (1 - c) + b * c; } mod(a, b) { return (a % b + b) % b; } interpolateYaw(a, b) { const c = Math.min(1, Jj.renderer.replicator.getMsInThisTick() / Jj.renderer.replicator.msPerTick); let d = a + this.lerp(0, this.mod(b - a + 180, 360) - 180, c); if (d < 0) { d += 360; } if (d >= 360) { d -= 360; } return d; } angleTo(a, b) { return (Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI + 90 + 360) % 360; } measureDistance(a, b) { if (a.x === undefined || a.y === undefined || b.x === undefined || b.y === undefined) { return Infinity; } let c = b.x - a.x; let d = b.y - a.y; return Math.abs(c ** 2 + d ** 2); } isMobile() { if (!this.checkedIfMobile) { this.actuallyIsMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); this.checkedIfMobile = true; } return this.actuallyIsMobile; } hexToRgb(a) { a = a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (a, b, c, d) { return b + b + c + c + d + d; }); var b = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a); if (b) { return { r: parseInt(b[1], 16), g: parseInt(b[2], 16), b: parseInt(b[3], 16) }; } else { return null; } } createResourceCostString(a, b = 1, c = 1, d = true) { const e = ["wood", "stone", "gold", "tokens"]; const f = []; const g = Jj.ui.getPlayerTick(); for (const h of e) { const e = h + "Costs"; if (e in a) { const i = a[e][b - 1] * c; if (i === 0) { continue; } f.push("<span class=\"" + (g !== null && d === true ? g[h] >= i ? "" : "hud-resource-low" : "") + "\">" + this.abbreviateNumber(i, 3).toLocaleString() + " " + h + "</span>"); } } if (f.length > 0) { return { elem: f.join(", ") }; } else { return { elem: "<span class='hud-resource-free'>Free</span>", lowResource: false }; } } createResourceRefundString(a, b = 1, c = 0) { const d = ["wood", "stone", "gold", "tokens"]; const e = []; for (const f of d) { const d = f + "Costs"; if (a[d]) { const g = Math.floor(a[d].slice(0, b).reduce((a, b) => a + b) * c * 0.75); if (g > 0) { e.push(this.abbreviateNumber(g, 3).toLocaleString() + " " + f); } } } if (e.length > 0) { return "" + e.join(", "); } else { return "<span class='hud-resource-free'>None</span>"; } } abbreviateNumber(a, b) { const c = ["K", "M", "B", "T", "q", "Q", "s", "S", "O", "N", "D"]; b = Math.pow(10, b); for (let d = c.length - 1; d >= 0; d--) { const e = Math.pow(10, (d + 1) * 3); if (e <= a) { if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) { a = 1; d++; } a += c[d]; break; } } return a; } }(); class j extends d { constructor(a) { document.body.insertAdjacentHTML("beforeend", "<div id=\"hud-tooltip\" class=\"hud-tooltip\"></div>"); super(document.getElementById("hud-tooltip")); this.direction = a; this.element.classList.add("hud-tooltip-" + a); } moveTo(a) { this.show(); this.element.classList.remove("hud-tooltip-" + this.direction); if (a.getAttribute("BuildingType") !== null) { this.direction = "top"; const b = Jj.ui.buildingData[a.getAttribute("BuildingType")]; if (b !== undefined) { this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <span class=\"hud-tooltip-built\"><strong " + (b.built >= b.limit ? "class='hud-resource-low'" : "") + ">" + b.built + "</strong>/" + b.limit + "</span>\n <div class=\"hud-tooltip-body\">" + b.description + "</div>\n <div class=\"hud-tooltip-body\">" + i.createResourceCostString(b).elem + "</div>\n </div>"; } } else if (a.getAttribute("potion-type") !== null) { this.direction = "top"; const b = Jj.ui.toolData[a.getAttribute("potion-type")]; if (b !== undefined) { this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <span>" + b.description + "</span>\n <div class=\"hud-tooltip-body\">" + i.createResourceCostString(b).elem + "</div>\n </div>"; } } else if (a.getAttribute("item-type") !== null) { this.direction = "top"; const b = Jj.ui.toolData[a.getAttribute("item-type")]; if (b.name === "ZombieShield") { this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <h3>Tier " + Jj.ui.components.uiArmourIndicator.tier + "</h3>\n <h3>" + b.description + "</h3>\n </div>"; } } else if (a.getAttribute("icon-type") !== undefined) { this.direction = "bottom"; const b = a.getAttribute("icon-type"); this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b + "</h2>\n </div>\n "; } this.element.classList.add("hud-tooltip-" + this.direction); const b = a.getBoundingClientRect(); const c = { left: 0, top: 0 }; if (this.direction == "top") { c.left = b.left + b.width / 2 - this.element.offsetWidth / 2; c.top = b.top - this.element.offsetHeight - 30; } else if (this.direction == "bottom") { c.left = b.left + b.width / 2 - this.element.offsetWidth / 2; c.top = b.top + b.height + 70; } else if (this.direction == "left") { c.left = b.left - this.element.offsetWidth - 30; c.top = b.top + b.height / 2 - this.element.offsetHeight / 2; } else if (this.direction == "right") { c.left = b.left + b.width + 30; c.top = b.top + b.height / 2 - this.element.offsetHeight / 2; } this.element.style.left = c.left + "px"; this.element.style.top = c.top + "px"; } } class k extends d { constructor() { let a = document.createElement("div"); a.className = "hud-buildingbar"; a.id = "hud-buildingbar"; document.getElementById("hud-bottom").appendChild(a); super(a); this.buildingButtons = []; this.buildingTooltip = new j("top"); this.element.addEventListener("mouseenter", () => { window.storage.setItem("walkthrough_BuildingBar", "true"); Jj.ui.components.uiWalkthrough.hideBuildingBarIndicator(); }); this.element.addEventListener("mousedown", a => { a.stopPropagation(); }); } init() { Jj.eventEmitter.on("BuildingDataReceived", this.onDataReceived.bind(this)); } unlock() { this.element.classList.remove("locked"); } lock() { this.element.classList.add("locked"); } onDataReceived() { const a = Jj.ui.buildingData; for (let a = 0; a < this.buildingButtons.length; a++) { this.buildingButtons[a].element.remove(); this.buildingButtons.shift(); a--; } for (const b in a) { const c = new h(a[b].name); this.element.appendChild(c.element); this.buildingButtons.push(c); c.init(); } } } function l(a, b) { this.name = "AggregateError"; this.errors = a; this.message = b || ""; } l.prototype = Error.prototype; var m = setTimeout; function n(a) { return Boolean(a && a.length !== undefined); } function o() {} function p(a) { if (!(this instanceof p)) { throw new TypeError("Promises must be constructed via new"); } if (typeof a != "function") { throw new TypeError("not a function"); } this._state = 0; this._handled = false; this._value = undefined; this._deferreds = []; v(a, this); } function q(a, b) { while (a._state === 3) { a = a._value; } if (a._state !== 0) { a._handled = true; p._immediateFn(function () { var c = a._state === 1 ? b.onFulfilled : b.onRejected; if (c !== null) { var d; try { d = c(a._value); } catch (a) { s(b.promise, a); return; } r(b.promise, d); } else { (a._state === 1 ? r : s)(b.promise, a._value); } }); } else { a._deferreds.push(b); } } function r(a, b) { try { if (b === a) { throw new TypeError("A promise cannot be resolved with itself."); } if (b && (typeof b == "object" || typeof b == "function")) { var c = b.then; if (b instanceof p) { a._state = 3; a._value = b; t(a); return; } if (typeof c == "function") { v((d = c, e = b, function () { d.apply(e, arguments); }), a); return; } } a._state = 1; a._value = b; t(a); } catch (b) { s(a, b); } var d; var e; } function s(a, b) { a._state = 2; a._value = b; t(a); } function t(a) { if (a._state === 2 && a._deferreds.length === 0) { p._immediateFn(function () { if (!a._handled) { p._unhandledRejectionFn(a._value); } }); } for (var b = 0, c = a._deferreds.length; b < c; b++) { q(a, a._deferreds[b]); } a._deferreds = null; } function u(a, b, c) { this.onFulfilled = typeof a == "function" ? a : null; this.onRejected = typeof b == "function" ? b : null; this.promise = c; } function v(a, b) { var c = false; try { a(function (a) { if (!c) { c = true; r(b, a); } }, function (a) { if (!c) { c = true; s(b, a); } }); } catch (a) { if (c) { return; } c = true; s(b, a); } } p.prototype.catch = function (a) { return this.then(null, a); }; p.prototype.then = function (a, b) { var c = new this.constructor(o); q(this, new u(a, b, c)); return c; }; p.prototype.finally = function (a) { var b = this.constructor; return this.then(function (c) { return b.resolve(a()).then(function () { return c; }); }, function (c) { return b.resolve(a()).then(function () { return b.reject(c); }); }); }; p.all = function (a) { return new p(function (b, c) { if (!n(a)) { return c(new TypeError("Promise.all accepts an array")); } var d = Array.prototype.slice.call(a); if (d.length === 0) { return b([]); } var e = d.length; function f(a, g) { try { if (g && (typeof g == "object" || typeof g == "function")) { var h = g.then; if (typeof h == "function") { h.call(g, function (b) { f(a, b); }, c); return; } } d[a] = g; if (--e == 0) { b(d); } } catch (a) { c(a); } } for (var g = 0; g < d.length; g++) { f(g, d[g]); } }); }; p.any = function (a) { var b = this; return new b(function (c, d) { if (!a || a.length === undefined) { return d(new TypeError("Promise.any accepts an array")); } var e = Array.prototype.slice.call(a); if (e.length === 0) { return d(); } for (var f = [], g = 0; g < e.length; g++) { try { b.resolve(e[g]).then(c).catch(function (a) { f.push(a); if (f.length === e.length) { d(new l(f, "All promises were rejected")); } }); } catch (a) { d(a); } } }); }; p.allSettled = function (a) { return new this(function (b, c) { if (!a || a.length === undefined) { return c(new TypeError(typeof a + " " + a + " is not iterable(cannot read property Symbol(Symbol.iterator))")); } var d = Array.prototype.slice.call(a); if (d.length === 0) { return b([]); } var e = d.length; function f(a, c) { if (c && (typeof c == "object" || typeof c == "function")) { var g = c.then; if (typeof g == "function") { g.call(c, function (b) { f(a, b); }, function (c) { d[a] = { status: "rejected", reason: c }; if (--e == 0) { b(d); } }); return; } } d[a] = { status: "fulfilled", value: c }; if (--e == 0) { b(d); } } for (var g = 0; g < d.length; g++) { f(g, d[g]); } }); }; p.resolve = function (a) { if (a && typeof a == "object" && a.constructor === p) { return a; } else { return new p(function (b) { b(a); }); } }; p.reject = function (a) { return new p(function (b, c) { c(a); }); }; p.race = function (a) { return new p(function (b, c) { if (!n(a)) { return c(new TypeError("Promise.race accepts an array")); } for (var d = 0, e = a.length; d < e; d++) { p.resolve(a[d]).then(b, c); } }); }; p._immediateFn = typeof setImmediate == "function" && function (a) { setImmediate(a); } || function (a) { m(a, 0); }; p._unhandledRejectionFn = function (a) { if (typeof console != "undefined" && console) { console.warn("Possible Unhandled Promise Rejection:", a); } }; const w = p; var x = c(418); var y = c.n(x); if (typeof globalThis == "undefined") { if (typeof self != "undefined") { self.globalThis = self; } else if (c.g !== undefined) { c.g.globalThis = c.g; } } globalThis.Promise ||= w; Object.assign ||= y(); if (!Date.now || !Date.prototype.getTime) { Date.now = function () { return new Date().getTime(); }; } if (!globalThis.performance || !globalThis.performance.now) { var z = Date.now(); globalThis.performance ||= {}; globalThis.performance.now = function () { return Date.now() - z; }; } for (var A = Date.now(), B = ["ms", "moz", "webkit", "o"], C = 0; C < B.length && !globalThis.requestAnimationFrame; ++C) { var D = B[C]; globalThis.requestAnimationFrame = globalThis[D + "RequestAnimationFrame"]; globalThis.cancelAnimationFrame = globalThis[D + "CancelAnimationFrame"] || globalThis[D + "CancelRequestAnimationFrame"]; } globalThis.requestAnimationFrame ||= function (a) { if (typeof a != "function") { throw new TypeError(a + "is not a function"); } var b = Date.now(); var c = 16 + A - b; if (c < 0) { c = 0; } A = b; return globalThis.self.setTimeout(function () { A = Date.now(); a(performance.now()); }, c); }; globalThis.cancelAnimationFrame ||= function (a) { return clearTimeout(a); }; Math.sign ||= function (a) { if ((a = Number(a)) === 0 || isNaN(a)) { return a; } else if (a > 0) { return 1; } else { return -1; } }; Number.isInteger ||= function (a) { return typeof a == "number" && isFinite(a) && Math.floor(a) === a; }; globalThis.ArrayBuffer ||= Array; globalThis.Float32Array ||= Array; globalThis.Uint32Array ||= Array; globalThis.Uint16Array ||= Array; globalThis.Uint8Array ||= Array; globalThis.Int32Array ||= Array; var E; var F; var G; var H; var I; var J; var K; var L; var M; var N; var O; var P; var Q; var R; var S; var T; var U; var V; var W; var X = /iPhone/i; var Y = /iPod/i; var Z = /iPad/i; var $ = /\biOS-universal(?:.+)Mac\b/i; var _ = /\bAndroid(?:.+)Mobile\b/i; var aa = /Android/i; var ba = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i; var ca = /Silk/i; var da = /Windows Phone/i; var ea = /\bWindows(?:.+)ARM\b/i; var fa = /BlackBerry/i; var ga = /BB10/i; var ha = /Opera Mini/i; var ia = /\b(CriOS|Chrome)(?:.+)Mobile/i; var ja = /Mobile(?:.+)Firefox\b/i; function ka(a) { return a !== undefined && a.platform === "MacIntel" && typeof a.maxTouchPoints == "number" && a.maxTouchPoints > 1 && typeof MSStream == "undefined"; } var la = function (a) { var b = { userAgent: "", platform: "", maxTouchPoints: 0 }; if (a || typeof navigator == "undefined") { if (typeof a == "string") { b.userAgent = a; } else if (a && a.userAgent) { b = { userAgent: a.userAgent, platform: a.platform, maxTouchPoints: a.maxTouchPoints || 0 }; } } else { b = { userAgent: navigator.userAgent, platform: navigator.platform, maxTouchPoints: navigator.maxTouchPoints || 0 }; } var c = b.userAgent; var d = c.split("[FBAN"); if (d[1] !== undefined) { c = d[0]; } if ((d = c.split("Twitter"))[1] !== undefined) { c = d[0]; } var e = function (a) { return function (b) { return b.test(a); }; }(c); var f = { apple: { phone: e(X) && !e(da), ipod: e(Y), tablet: !e(X) && (e(Z) || ka(b)) && !e(da), universal: e($), device: (e(X) || e(Y) || e(Z) || e($) || ka(b)) && !e(da) }, amazon: { phone: e(ba), tablet: !e(ba) && e(ca), device: e(ba) || e(ca) }, android: { phone: !e(da) && e(ba) || !e(da) && e(_), tablet: !e(da) && !e(ba) && !e(_) && (e(ca) || e(aa)), device: !e(da) && (e(ba) || e(ca) || e(_) || e(aa)) || e(/\bokhttp\b/i) }, windows: { phone: e(da), tablet: e(ea), device: e(da) || e(ea) }, other: { blackberry: e(fa), blackberry10: e(ga), opera: e(ha), firefox: e(ja), chrome: e(ia), device: e(fa) || e(ga) || e(ha) || e(ja) || e(ia) }, any: false, phone: false, tablet: false }; f.any = f.apple.device || f.android.device || f.windows.device || f.other.device; f.phone = f.apple.phone || f.android.phone || f.windows.phone; f.tablet = f.apple.tablet || f.android.tablet || f.windows.tablet; return f; }(globalThis.navigator); (function (a) { a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY"; a[a.WEBGL = 1] = "WEBGL"; a[a.WEBGL2 = 2] = "WEBGL2"; })(E ||= {}); (function (a) { a[a.UNKNOWN = 0] = "UNKNOWN"; a[a.WEBGL = 1] = "WEBGL"; a[a.CANVAS = 2] = "CANVAS"; })(F ||= {}); (function (a) { a[a.COLOR = 16384] = "COLOR"; a[a.DEPTH = 256] = "DEPTH"; a[a.STENCIL = 1024] = "STENCIL"; })(G ||= {}); (function (a) { a[a.NORMAL = 0] = "NORMAL"; a[a.ADD = 1] = "ADD"; a[a.MULTIPLY = 2] = "MULTIPLY"; a[a.SCREEN = 3] = "SCREEN"; a[a.OVERLAY = 4] = "OVERLAY"; a[a.DARKEN = 5] = "DARKEN"; a[a.LIGHTEN = 6] = "LIGHTEN"; a[a.COLOR_DODGE = 7] = "COLOR_DODGE"; a[a.COLOR_BURN = 8] = "COLOR_BURN"; a[a.HARD_LIGHT = 9] = "HARD_LIGHT"; a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT"; a[a.DIFFERENCE = 11] = "DIFFERENCE"; a[a.EXCLUSION = 12] = "EXCLUSION"; a[a.HUE = 13] = "HUE"; a[a.SATURATION = 14] = "SATURATION"; a[a.COLOR = 15] = "COLOR"; a[a.LUMINOSITY = 16] = "LUMINOSITY"; a[a.NORMAL_NPM = 17] = "NORMAL_NPM"; a[a.ADD_NPM = 18] = "ADD_NPM"; a[a.SCREEN_NPM = 19] = "SCREEN_NPM"; a[a.NONE = 20] = "NONE"; a[a.SRC_OVER = 0] = "SRC_OVER"; a[a.SRC_IN = 21] = "SRC_IN"; a[a.SRC_OUT = 22] = "SRC_OUT"; a[a.SRC_ATOP = 23] = "SRC_ATOP"; a[a.DST_OVER = 24] = "DST_OVER"; a[a.DST_IN = 25] = "DST_IN"; a[a.DST_OUT = 26] = "DST_OUT"; a[a.DST_ATOP = 27] = "DST_ATOP"; a[a.ERASE = 26] = "ERASE"; a[a.SUBTRACT = 28] = "SUBTRACT"; a[a.XOR = 29] = "XOR"; })(H ||= {}); (function (a) { a[a.POINTS = 0] = "POINTS"; a[a.LINES = 1] = "LINES"; a[a.LINE_LOOP = 2] = "LINE_LOOP"; a[a.LINE_STRIP = 3] = "LINE_STRIP"; a[a.TRIANGLES = 4] = "TRIANGLES"; a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP"; a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN"; })(I ||= {}); (function (a) { a[a.RGBA = 6408] = "RGBA"; a[a.RGB = 6407] = "RGB"; a[a.RG = 33319] = "RG"; a[a.RED = 6403] = "RED"; a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER"; a[a.RGB_INTEGER = 36248] = "RGB_INTEGER"; a[a.RG_INTEGER = 33320] = "RG_INTEGER"; a[a.RED_INTEGER = 36244] = "RED_INTEGER"; a[a.ALPHA = 6406] = "ALPHA"; a[a.LUMINANCE = 6409] = "LUMINANCE"; a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA"; a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT"; a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL"; })(J ||= {}); (function (a) { a[a.TEXTURE_2D = 3553] = "TEXTURE_2D"; a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP"; a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY"; a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; })(K ||= {}); (function (a) { a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE"; a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT"; a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5"; a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4"; a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1"; a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT"; a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8"; a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; a[a.BYTE = 5120] = "BYTE"; a[a.SHORT = 5122] = "SHORT"; a[a.INT = 5124] = "INT"; a[a.FLOAT = 5126] = "FLOAT"; a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; a[a.HALF_FLOAT = 36193] = "HALF_FLOAT"; })(L ||= {}); (function (a) { a[a.FLOAT = 0] = "FLOAT"; a[a.INT = 1] = "INT"; a[a.UINT = 2] = "UINT"; })(M ||= {}); (function (a) { a[a.NEAREST = 0] = "NEAREST"; a[a.LINEAR = 1] = "LINEAR"; })(N ||= {}); (function (a) { a[a.CLAMP = 33071] = "CLAMP"; a[a.REPEAT = 10497] = "REPEAT"; a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT"; })(O ||= {}); (function (a) { a[a.OFF = 0] = "OFF"; a[a.POW2 = 1] = "POW2"; a[a.ON = 2] = "ON"; a[a.ON_MANUAL = 3] = "ON_MANUAL"; })(P ||= {}); (function (a) { a[a.NPM = 0] = "NPM"; a[a.UNPACK = 1] = "UNPACK"; a[a.PMA = 2] = "PMA"; a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA"; a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD"; a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA"; a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA"; })(Q ||= {}); (function (a) { a[a.NO = 0] = "NO"; a[a.YES = 1] = "YES"; a[a.AUTO = 2] = "AUTO"; a[a.BLEND = 0] = "BLEND"; a[a.CLEAR = 1] = "CLEAR"; a[a.BLIT = 2] = "BLIT"; })(R ||= {}); (function (a) { a[a.AUTO = 0] = "AUTO"; a[a.MANUAL = 1] = "MANUAL"; })(S ||= {}); (function (a) { a.LOW = "lowp"; a.MEDIUM = "mediump"; a.HIGH = "highp"; })(T ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.SCISSOR = 1] = "SCISSOR"; a[a.STENCIL = 2] = "STENCIL"; a[a.SPRITE = 3] = "SPRITE"; })(U ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.LOW = 2] = "LOW"; a[a.MEDIUM = 4] = "MEDIUM"; a[a.HIGH = 8] = "HIGH"; })(V ||= {}); (function (a) { a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER"; a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER"; a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER"; })(W ||= {}); var ma; var na; var oa; var pa; var qa; var ra; var sa; var ta; var ua; var va; var wa; var xa; var ya; var za; var Aa; var Ba; var Ca; var Da; var Ea; var Fa = { MIPMAP_TEXTURES: P.POW2, ANISOTROPIC_LEVEL: 0, RESOLUTION: 1, FILTER_RESOLUTION: 1, FILTER_MULTISAMPLE: V.NONE, SPRITE_MAX_TEXTURES: function (a) { var b; var c = true; if (la.tablet || la.phone) { if (la.apple.device && (b = navigator.userAgent.match(/OS (\d+)_(\d+)?/)) && parseInt(b[1], 10) < 11) { c = false; } if (la.android.device && (b = navigator.userAgent.match(/Android\s([0-9.]*)/)) && parseInt(b[1], 10) < 7) { c = false; } } if (c) { return 32; } else { return 4; } }(), SPRITE_BATCH_SIZE: 4096, RENDER_OPTIONS: { view: null, antialias: false, autoDensity: false, backgroundColor: 0, backgroundAlpha: 1, useContextAlpha: true, clearBeforeRender: true, preserveDrawingBuffer: false, width: 800, height: 600, legacy: false }, GC_MODE: S.AUTO, GC_MAX_IDLE: 3600, GC_MAX_CHECK_COUNT: 600, WRAP_MODE: O.CLAMP, SCALE_MODE: N.LINEAR, PRECISION_VERTEX: T.HIGH, PRECISION_FRAGMENT: la.apple.device ? T.HIGH : T.MEDIUM, CAN_UPLOAD_SAME_BUFFER: !la.apple.device, CREATE_IMAGE_BITMAP: false, ROUND_PIXELS: false }; var Ga = c(729); var Ha = c.n(Ga); var Ia = c(187); var Ja = c.n(Ia); var Ka = c(575); (function (a) { a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY"; a[a.WEBGL = 1] = "WEBGL"; a[a.WEBGL2 = 2] = "WEBGL2"; })(ma ||= {}); (function (a) { a[a.UNKNOWN = 0] = "UNKNOWN"; a[a.WEBGL = 1] = "WEBGL"; a[a.CANVAS = 2] = "CANVAS"; })(na ||= {}); (function (a) { a[a.COLOR = 16384] = "COLOR"; a[a.DEPTH = 256] = "DEPTH"; a[a.STENCIL = 1024] = "STENCIL"; })(oa ||= {}); (function (a) { a[a.NORMAL = 0] = "NORMAL"; a[a.ADD = 1] = "ADD"; a[a.MULTIPLY = 2] = "MULTIPLY"; a[a.SCREEN = 3] = "SCREEN"; a[a.OVERLAY = 4] = "OVERLAY"; a[a.DARKEN = 5] = "DARKEN"; a[a.LIGHTEN = 6] = "LIGHTEN"; a[a.COLOR_DODGE = 7] = "COLOR_DODGE"; a[a.COLOR_BURN = 8] = "COLOR_BURN"; a[a.HARD_LIGHT = 9] = "HARD_LIGHT"; a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT"; a[a.DIFFERENCE = 11] = "DIFFERENCE"; a[a.EXCLUSION = 12] = "EXCLUSION"; a[a.HUE = 13] = "HUE"; a[a.SATURATION = 14] = "SATURATION"; a[a.COLOR = 15] = "COLOR"; a[a.LUMINOSITY = 16] = "LUMINOSITY"; a[a.NORMAL_NPM = 17] = "NORMAL_NPM"; a[a.ADD_NPM = 18] = "ADD_NPM"; a[a.SCREEN_NPM = 19] = "SCREEN_NPM"; a[a.NONE = 20] = "NONE"; a[a.SRC_OVER = 0] = "SRC_OVER"; a[a.SRC_IN = 21] = "SRC_IN"; a[a.SRC_OUT = 22] = "SRC_OUT"; a[a.SRC_ATOP = 23] = "SRC_ATOP"; a[a.DST_OVER = 24] = "DST_OVER"; a[a.DST_IN = 25] = "DST_IN"; a[a.DST_OUT = 26] = "DST_OUT"; a[a.DST_ATOP = 27] = "DST_ATOP"; a[a.ERASE = 26] = "ERASE"; a[a.SUBTRACT = 28] = "SUBTRACT"; a[a.XOR = 29] = "XOR"; })(pa ||= {}); (function (a) { a[a.POINTS = 0] = "POINTS"; a[a.LINES = 1] = "LINES"; a[a.LINE_LOOP = 2] = "LINE_LOOP"; a[a.LINE_STRIP = 3] = "LINE_STRIP"; a[a.TRIANGLES = 4] = "TRIANGLES"; a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP"; a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN"; })(qa ||= {}); (function (a) { a[a.RGBA = 6408] = "RGBA"; a[a.RGB = 6407] = "RGB"; a[a.RG = 33319] = "RG"; a[a.RED = 6403] = "RED"; a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER"; a[a.RGB_INTEGER = 36248] = "RGB_INTEGER"; a[a.RG_INTEGER = 33320] = "RG_INTEGER"; a[a.RED_INTEGER = 36244] = "RED_INTEGER"; a[a.ALPHA = 6406] = "ALPHA"; a[a.LUMINANCE = 6409] = "LUMINANCE"; a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA"; a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT"; a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL"; })(ra ||= {}); (function (a) { a[a.TEXTURE_2D = 3553] = "TEXTURE_2D"; a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP"; a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY"; a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; })(sa ||= {}); (function (a) { a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE"; a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT"; a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5"; a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4"; a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1"; a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT"; a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8"; a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; a[a.BYTE = 5120] = "BYTE"; a[a.SHORT = 5122] = "SHORT"; a[a.INT = 5124] = "INT"; a[a.FLOAT = 5126] = "FLOAT"; a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; a[a.HALF_FLOAT = 36193] = "HALF_FLOAT"; })(ta ||= {}); (function (a) { a[a.FLOAT = 0] = "FLOAT"; a[a.INT = 1] = "INT"; a[a.UINT = 2] = "UINT"; })(ua ||= {}); (function (a) { a[a.NEAREST = 0] = "NEAREST"; a[a.LINEAR = 1] = "LINEAR"; })(va ||= {}); (function (a) { a[a.CLAMP = 33071] = "CLAMP"; a[a.REPEAT = 10497] = "REPEAT"; a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT"; })(wa ||= {}); (function (a) { a[a.OFF = 0] = "OFF"; a[a.POW2 = 1] = "POW2"; a[a.ON = 2] = "ON"; a[a.ON_MANUAL = 3] = "ON_MANUAL"; })(xa ||= {}); (function (a) { a[a.NPM = 0] = "NPM"; a[a.UNPACK = 1] = "UNPACK"; a[a.PMA = 2] = "PMA"; a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA"; a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD"; a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA"; a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA"; })(ya ||= {}); (function (a) { a[a.NO = 0] = "NO"; a[a.YES = 1] = "YES"; a[a.AUTO = 2] = "AUTO"; a[a.BLEND = 0] = "BLEND"; a[a.CLEAR = 1] = "CLEAR"; a[a.BLIT = 2] = "BLIT"; })(za ||= {}); (function (a) { a[a.AUTO = 0] = "AUTO"; a[a.MANUAL = 1] = "MANUAL"; })(Aa ||= {}); (function (a) { a.LOW = "lowp"; a.MEDIUM = "mediump"; a.HIGH = "highp"; })(Ba ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.SCISSOR = 1] = "SCISSOR"; a[a.STENCIL = 2] = "STENCIL"; a[a.SPRITE = 3] = "SPRITE"; })(Ca ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.LOW = 2] = "LOW"; a[a.MEDIUM = 4] = "MEDIUM"; a[a.HIGH = 8] = "HIGH"; })(Da ||= {}); (function (a) { a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER"; a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER"; a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER"; })(Ea ||= {}); var La = { parse: Ka.Qc, format: Ka.WU, resolve: Ka.DB }; Fa.RETINA_PREFIX = /@([0-9\.]+)x/; Fa.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false; var Ma; var Na = false; var Oa = { 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", goldenrod: "#daa520", gold: "#ffd700", gray: "#808080", green: "#008000", greenyellow: "#adff2f", grey: "#808080", honeydew: "#f0fff0", hotpink: "#ff69b4", indianred: "#cd5c5c", indigo: "#4b0082", ivory: "#fffff0", khaki: "#f0e68c", lavenderblush: "#fff0f5", lavender: "#e6e6fa", 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" }; function Pa(a, b) { if (b === undefined) { b = []; } b[0] = (a >> 16 & 255) / 255; b[1] = (a >> 8 & 255) / 255; b[2] = (a & 255) / 255; return b; } function Qa(a) { var b = a.toString(16); return "#" + ("000000".substring(0, 6 - b.length) + b); } function Ra(a) { if (typeof a == "string" && (a = Oa[a.toLowerCase()] || a)[0] === "#") { a = a.slice(1); } return parseInt(a, 16); } var Sa = function () { for (var a = [], b = [], c = 0; c < 32; c++) { a[c] = c; b[c] = c; } a[pa.NORMAL_NPM] = pa.NORMAL; a[pa.ADD_NPM] = pa.ADD; a[pa.SCREEN_NPM] = pa.SCREEN; b[pa.NORMAL] = pa.NORMAL_NPM; b[pa.ADD] = pa.ADD_NPM; b[pa.SCREEN] = pa.SCREEN_NPM; var d = []; d.push(b); d.push(a); return d; }(); function Ta(a, b) { return Sa[b ? 1 : 0][a]; } function Ua(a, b) { if (b === 1) { return (b * 255 << 24) + a; } if (b === 0) { return 0; } var c = a >> 16 & 255; var d = a >> 8 & 255; var e = a & 255; return (b * 255 << 24) + ((c = c * b + 0.5 | 0) << 16) + ((d = d * b + 0.5 | 0) << 8) + (e * b + 0.5 | 0); } function Va(a, b, c, d) { (c = c || new Float32Array(4))[0] = (a >> 16 & 255) / 255; c[1] = (a >> 8 & 255) / 255; c[2] = (a & 255) / 255; if (d || d === undefined) { c[0] *= b; c[1] *= b; c[2] *= b; } c[3] = b; return c; } function Wa(a) { if (a.BYTES_PER_ELEMENT === 4) { if (a instanceof Float32Array) { return "Float32Array"; } else if (a instanceof Uint32Array) { return "Uint32Array"; } else { return "Int32Array"; } } if (a.BYTES_PER_ELEMENT === 2) { if (a instanceof Uint16Array) { return "Uint16Array"; } } else if (a.BYTES_PER_ELEMENT === 1 && a instanceof Uint8Array) { return "Uint8Array"; } return null; } function Xa(a) { a += a === 0 ? 1 : 0; --a; a |= a >>> 1; a |= a >>> 2; a |= a >>> 4; a |= a >>> 8; return 1 + (a |= a >>> 16); } function Ya(a) { return !(a & a - 1) && !!a; } function Za(a) { var b = (a > 65535 ? 1 : 0) << 4; var c = ((a >>>= b) > 255 ? 1 : 0) << 3; b |= c; b |= c = ((a >>>= c) > 15 ? 1 : 0) << 2; return (b |= c = ((a >>>= c) > 3 ? 1 : 0) << 1) | (a >>>= c) >> 1; } function $a(a, b, c) { var d; var e = a.length; if (b < e && c !== 0) { var f = e - (c = b + c > e ? e - b : c); for (d = b; d < f; ++d) { a[d] = a[d + c]; } a.length = f; } } function _a(a) { if (a === 0) { return 0; } else if (a < 0) { return -1; } else { return 1; } } Float32Array; Uint32Array; Int32Array; Uint8Array; var ab = 0; function bb() { return ++ab; } var cb = {}; function db(a, b, c) { if (c === undefined) { c = 3; } if (!cb[b]) { var d = new Error().stack; if (d === undefined) { console.warn("PixiJS Deprecation Warning: ", b + "\nDeprecated since v" + a); } else { d = d.split("\n").splice(c).join("\n"); if (console.groupCollapsed) { console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s", "color:#614108;background:#fffbe6", "font-weight:normal;color:#614108;background:#fffbe6", b + "\nDeprecated since v" + a); console.warn(d); console.groupEnd(); } else { console.warn("PixiJS Deprecation Warning: ", b + "\nDeprecated since v" + a); console.warn(d); } } cb[b] = true; } } var eb; var fb = {}; var gb = Object.create(null); var hb = Object.create(null); var ib = function () { function a(a, b, c) { this.canvas = document.createElement("canvas"); this.context = this.canvas.getContext("2d"); this.resolution = c || Fa.RESOLUTION; this.resize(a, b); } a.prototype.clear = function () { this.context.setTransform(1, 0, 0, 1, 0, 0); this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); }; a.prototype.resize = function (a, b) { this.canvas.width = Math.round(a * this.resolution); this.canvas.height = Math.round(b * this.resolution); }; a.prototype.destroy = function () { this.context = null; this.canvas = null; }; Object.defineProperty(a.prototype, "width", { get: function () { return this.canvas.width; }, set: function (a) { this.canvas.width = Math.round(a); }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "height", { get: function () { return this.canvas.height; }, set: function (a) { this.canvas.height = Math.round(a); }, enumerable: false, configurable: true }); return a; }(); function jb(a, b) { var c = Fa.RETINA_PREFIX.exec(a); if (c) { return parseFloat(c[1]); } else if (b !== undefined) { return b; } else { return 1; } } var kb; var lb = Math.PI * 2; var mb = 180 / Math.PI; var nb = Math.PI / 180; (function (a) { a[a.POLY = 0] = "POLY"; a[a.RECT = 1] = "RECT"; a[a.CIRC = 2] = "CIRC"; a[a.ELIP = 3] = "ELIP"; a[a.RREC = 4] = "RREC"; })(kb ||= {}); var ob = function () { function a(a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } this.x = 0; this.y = 0; this.x = a; this.y = b; } a.prototype.clone = function () { return new a(this.x, this.y); }; a.prototype.copyFrom = function (a) { this.set(a.x, a.y); return this; }; a.prototype.copyTo = function (a) { a.set(this.x, this.y); return a; }; a.prototype.equals = function (a) { return a.x === this.x && a.y === this.y; }; a.prototype.set = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = a; } this.x = a; this.y = b; return this; }; a.prototype.toString = function () { return "[@pixi/math:Point x=" + this.x + " y=" + this.y + "]"; }; return a; }(); var pb = [new ob(), new ob(), new ob(), new ob()]; var qb = function () { function a(a, b, c, d) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (c === undefined) { c = 0; } if (d === undefined) { d = 0; } this.x = Number(a); this.y = Number(b); this.width = Number(c); this.height = Number(d); this.type = kb.RECT; } Object.defineProperty(a.prototype, "left", { get: function () { return this.x; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "right", { get: function () { return this.x + this.width; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "top", { get: function () { return this.y; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "bottom", { get: function () { return this.y + this.height; }, enumerable: false, configurable: true }); Object.defineProperty(a, "EMPTY", { get: function () { return new a(0, 0, 0, 0); }, enumerable: false, configurable: true }); a.prototype.clone = function () { return new a(this.x, this.y, this.width, this.height); }; a.prototype.copyFrom = function (a) { this.x = a.x; this.y = a.y; this.width = a.width; this.height = a.height; return this; }; a.prototype.copyTo = function (a) { a.x = this.x; a.y = this.y; a.width = this.width; a.height = this.height; return a; }; a.prototype.contains = function (a, b) { return this.width > 0 && this.height > 0 && a >= this.x && a < this.x + this.width && b >= this.y && b < this.y + this.height; }; a.prototype.intersects = function (a, b) { if (!b) { var c = this.x < a.x ? a.x : this.x; if ((this.right > a.right ? a.right : this.right) <= c) { return false; } var d = this.y < a.y ? a.y : this.y; return (this.bottom > a.bottom ? a.bottom : this.bottom) > d; } var e = this.left; var f = this.right; var g = this.top; var h = this.bottom; if (f <= e || h <= g) { return false; } var i = pb[0].set(a.left, a.top); var j = pb[1].set(a.left, a.bottom); var k = pb[2].set(a.right, a.top); var l = pb[3].set(a.right, a.bottom); if (k.x <= i.x || j.y <= i.y) { return false; } var m = Math.sign(b.a * b.d - b.b * b.c); if (m === 0) { return false; } b.apply(i, i); b.apply(j, j); b.apply(k, k); b.apply(l, l); if (Math.max(i.x, j.x, k.x, l.x) <= e || Math.min(i.x, j.x, k.x, l.x) >= f || Math.max(i.y, j.y, k.y, l.y) <= g || Math.min(i.y, j.y, k.y, l.y) >= h) { return false; } var n = m * (j.y - i.y); var o = m * (i.x - j.x); var p = n * e + o * g; var q = n * f + o * g; var r = n * e + o * h; var s = n * f + o * h; if (Math.max(p, q, r, s) <= n * i.x + o * i.y || Math.min(p, q, r, s) >= n * l.x + o * l.y) { return false; } var t = m * (i.y - k.y); var u = m * (k.x - i.x); var v = t * e + u * g; var w = t * f + u * g; var x = t * e + u * h; var y = t * f + u * h; return Math.max(v, w, x, y) > t * i.x + u * i.y && Math.min(v, w, x, y) < t * l.x + u * l.y; }; a.prototype.pad = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = a; } this.x -= a; this.y -= b; this.width += a * 2; this.height += b * 2; return this; }; a.prototype.fit = function (a) { var b = Math.max(this.x, a.x); var c = Math.min(this.x + this.width, a.x + a.width); var d = Math.max(this.y, a.y); var e = Math.min(this.y + this.height, a.y + a.height); this.x = b; this.width = Math.max(c - b, 0); this.y = d; this.height = Math.max(e - d, 0); return this; }; a.prototype.ceil = function (a, b) { if (a === undefined) { a = 1; } if (b === undefined) { b = 0.001; } var c = Math.ceil((this.x + this.width - b) * a) / a; var d = Math.ceil((this.y + this.height - b) * a) / a; this.x = Math.floor((this.x + b) * a) / a; this.y = Math.floor((this.y + b) * a) / a; this.width = c - this.x; this.height = d - this.y; return this; }; a.prototype.enlarge = function (a) { var b = Math.min(this.x, a.x); var c = Math.max(this.x + this.width, a.x + a.width); var d = Math.min(this.y, a.y); var e = Math.max(this.y + this.height, a.y + a.height); this.x = b; this.width = c - b; this.y = d; this.height = e - d; return this; }; a.prototype.toString = function () { return "[@pixi/math:Rectangle x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + "]"; }; return a; }(); var rb = function () { function a(a, b, c) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (c === undefined) { c = 0; } this.x = a; this.y = b; this.radius = c; this.type = kb.CIRC; } a.prototype.clone = function () { return new a(this.x, this.y, this.radius); }; a.prototype.contains = function (a, b) { if (this.radius <= 0) { return false; } var c = this.radius * this.radius; var d = this.x - a; var e = this.y - b; return (d *= d) + (e *= e) <= c; }; a.prototype.getBounds = function () { return new qb(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2); }; a.prototype.toString = function () { return "[@pixi/math:Circle x=" + this.x + " y=" + this.y + " radius=" + this.radius + "]"; }; return a; }(); var sb = function () { function a(a, b, c, d) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (c === undefined) { c = 0; } if (d === undefined) { d = 0; } this.x = a; this.y = b; this.width = c; this.height = d; this.type = kb.ELIP; } a.prototype.clone = function () { return new a(this.x, this.y, this.width, this.height); }; a.prototype.contains = function (a, b) { if (this.width <= 0 || this.height <= 0) { return false; } var c = (a - this.x) / this.width; var d = (b - this.y) / this.height; return (c *= c) + (d *= d) <= 1; }; a.prototype.getBounds = function () { return new qb(this.x - this.width, this.y - this.height, this.width, this.height); }; a.prototype.toString = function () { return "[@pixi/math:Ellipse x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + "]"; }; return a; }(); var tb = function () { function a() { for (var a = arguments, b = [], c = 0; c < arguments.length; c++) { b[c] = a[c]; } var d = Array.isArray(b[0]) ? b[0] : b; if (typeof d[0] != "number") { for (var e = [], f = 0, g = d.length; f < g; f++) { e.push(d[f].x, d[f].y); } d = e; } this.points = d; this.type = kb.POLY; this.closeStroke = true; } a.prototype.clone = function () { var b = new a(this.points.slice()); b.closeStroke = this.closeStroke; return b; }; a.prototype.contains = function (a, b) { for (var c = false, d = this.points.length / 2, e = 0, f = d - 1; e < d; f = e++) { var g = this.points[e * 2]; var h = this.points[e * 2 + 1]; var i = this.points[f * 2]; var j = this.points[f * 2 + 1]; if (h > b != j > b && a < (b - h) / (j - h) * (i - g) + g) { c = !c; } } return c; }; a.prototype.toString = function () { return "[@pixi/math:PolygoncloseStroke=" + this.closeStroke + "points=" + this.points.reduce(function (a, b) { return a + ", " + b; }, "") + "]"; }; return a; }(); var ub = function () { function a(a, b, c, d, e) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (c === undefined) { c = 0; } if (d === undefined) { d = 0; } if (e === undefined) { e = 20; } this.x = a; this.y = b; this.width = c; this.height = d; this.radius = e; this.type = kb.RREC; } a.prototype.clone = function () { return new a(this.x, this.y, this.width, this.height, this.radius); }; a.prototype.contains = function (a, b) { if (this.width <= 0 || this.height <= 0) { return false; } if (a >= this.x && a <= this.x + this.width && b >= this.y && b <= this.y + this.height) { var c = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2)); if (b >= this.y + c && b <= this.y + this.height - c || a >= this.x + c && a <= this.x + this.width - c) { return true; } var d = a - (this.x + c); var e = b - (this.y + c); var f = c * c; if (d * d + e * e <= f) { return true; } if ((d = a - (this.x + this.width - c)) * d + e * e <= f) { return true; } if (d * d + (e = b - (this.y + this.height - c)) * e <= f) { return true; } if ((d = a - (this.x + c)) * d + e * e <= f) { return true; } } return false; }; a.prototype.toString = function () { return "[@pixi/math:RoundedRectangle x=" + this.x + " y=" + this.y + "width=" + this.width + " height=" + this.height + " radius=" + this.radius + "]"; }; return a; }(); var vb = function () { function a(a, b, c, d) { if (c === undefined) { c = 0; } if (d === undefined) { d = 0; } this._x = c; this._y = d; this.cb = a; this.scope = b; } a.prototype.clone = function (b, c) { if (b === undefined) { b = this.cb; } if (c === undefined) { c = this.scope; } return new a(b, c, this._x, this._y); }; a.prototype.set = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = a; } if (this._x !== a || this._y !== b) { this._x = a; this._y = b; this.cb.call(this.scope); } return this; }; a.prototype.copyFrom = function (a) { if (this._x !== a.x || this._y !== a.y) { this._x = a.x; this._y = a.y; this.cb.call(this.scope); } return this; }; a.prototype.copyTo = function (a) { a.set(this._x, this._y); return a; }; a.prototype.equals = function (a) { return a.x === this._x && a.y === this._y; }; a.prototype.toString = function () { return "[@pixi/math:ObservablePoint x=0 y=0 scope=" + this.scope + "]"; }; Object.defineProperty(a.prototype, "x", { get: function () { return this._x; }, set: function (a) { if (this._x !== a) { this._x = a; this.cb.call(this.scope); } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "y", { get: function () { return this._y; }, set: function (a) { if (this._y !== a) { this._y = a; this.cb.call(this.scope); } }, enumerable: false, configurable: true }); return a; }(); var wb = function () { function a(a, b, c, d, e, f) { if (a === undefined) { a = 1; } if (b === undefined) { b = 0; } if (c === undefined) { c = 0; } if (d === undefined) { d = 1; } if (e === undefined) { e = 0; } if (f === undefined) { f = 0; } this.array = null; this.a = a; this.b = b; this.c = c; this.d = d; this.tx = e; this.ty = f; } a.prototype.fromArray = function (a) { this.a = a[0]; this.b = a[1]; this.c = a[3]; this.d = a[4]; this.tx = a[2]; this.ty = a[5]; }; a.prototype.set = function (a, b, c, d, e, f) { this.a = a; this.b = b; this.c = c; this.d = d; this.tx = e; this.ty = f; return this; }; a.prototype.toArray = function (a, b) { this.array ||= new Float32Array(9); var c = b || this.array; if (a) { c[0] = this.a; c[1] = this.b; c[2] = 0; c[3] = this.c; c[4] = this.d; c[5] = 0; c[6] = this.tx; c[7] = this.ty; c[8] = 1; } else { c[0] = this.a; c[1] = this.c; c[2] = this.tx; c[3] = this.b; c[4] = this.d; c[5] = this.ty; c[6] = 0; c[7] = 0; c[8] = 1; } return c; }; a.prototype.apply = function (a, b) { b = b || new ob(); var c = a.x; var d = a.y; b.x = this.a * c + this.c * d + this.tx; b.y = this.b * c + this.d * d + this.ty; return b; }; a.prototype.applyInverse = function (a, b) { b = b || new ob(); var c = 1 / (this.a * this.d + this.c * -this.b); var d = a.x; var e = a.y; b.x = this.d * c * d + -this.c * c * e + (this.ty * this.c - this.tx * this.d) * c; b.y = this.a * c * e + -this.b * c * d + (-this.ty * this.a + this.tx * this.b) * c; return b; }; a.prototype.translate = function (a, b) { this.tx += a; this.ty += b; return this; }; a.prototype.scale = function (a, b) { this.a *= a; this.d *= b; this.c *= a; this.b *= b; this.tx *= a; this.ty *= b; return this; }; a.prototype.rotate = function (a) { var b = Math.cos(a); var c = Math.sin(a); var d = this.a; var e = this.c; var f = this.tx; this.a = d * b - this.b * c; this.b = d * c + this.b * b; this.c = e * b - this.d * c; this.d = e * c + this.d * b; this.tx = f * b - this.ty * c; this.ty = f * c + this.ty * b; return this; }; a.prototype.append = function (a) { var b = this.a; var c = this.b; var d = this.c; var e = this.d; this.a = a.a * b + a.b * d; this.b = a.a * c + a.b * e; this.c = a.c * b + a.d * d; this.d = a.c * c + a.d * e; this.tx = a.tx * b + a.ty * d + this.tx; this.ty = a.tx * c + a.ty * e + this.ty; return this; }; a.prototype.setTransform = function (a, b, c, d, e, f, g, h, i) { this.a = Math.cos(g + i) * e; this.b = Math.sin(g + i) * e; this.c = -Math.sin(g - h) * f; this.d = Math.cos(g - h) * f; this.tx = a - (c * this.a + d * this.c); this.ty = b - (c * this.b + d * this.d); return this; }; a.prototype.prepend = function (a) { var b = this.tx; if (a.a !== 1 || a.b !== 0 || a.c !== 0 || a.d !== 1) { var c = this.a; var d = this.c; this.a = c * a.a + this.b * a.c; this.b = c * a.b + this.b * a.d; this.c = d * a.a + this.d * a.c; this.d = d * a.b + this.d * a.d; } this.tx = b * a.a + this.ty * a.c + a.tx; this.ty = b * a.b + this.ty * a.d + a.ty; return this; }; a.prototype.decompose = function (a) { var b = this.a; var c = this.b; var d = this.c; var e = this.d; var f = a.pivot; var g = -Math.atan2(-d, e); var h = Math.atan2(c, b); var i = Math.abs(g + h); if (i < 0.00001 || Math.abs(lb - i) < 0.00001) { a.rotation = h; a.skew.x = a.skew.y = 0; } else { a.rotation = 0; a.skew.x = g; a.skew.y = h; } a.scale.x = Math.sqrt(b * b + c * c); a.scale.y = Math.sqrt(d * d + e * e); a.position.x = this.tx + (f.x * b + f.y * d); a.position.y = this.ty + (f.x * c + f.y * e); return a; }; a.prototype.invert = function () { var a = this.a; var b = this.b; var c = this.c; var d = this.d; var e = this.tx; var f = a * d - b * c; this.a = d / f; this.b = -b / f; this.c = -c / f; this.d = a / f; this.tx = (c * this.ty - d * e) / f; this.ty = -(a * this.ty - b * e) / f; return this; }; a.prototype.identity = function () { this.a = 1; this.b = 0; this.c = 0; this.d = 1; this.tx = 0; this.ty = 0; return this; }; a.prototype.clone = function () { var b = new a(); b.a = this.a; b.b = this.b; b.c = this.c; b.d = this.d; b.tx = this.tx; b.ty = this.ty; return b; }; a.prototype.copyTo = function (a) { a.a = this.a; a.b = this.b; a.c = this.c; a.d = this.d; a.tx = this.tx; a.ty = this.ty; return a; }; a.prototype.copyFrom = function (a) { this.a = a.a; this.b = a.b; this.c = a.c; this.d = a.d; this.tx = a.tx; this.ty = a.ty; return this; }; a.prototype.toString = function () { return "[@pixi/math:Matrix a=" + this.a + " b=" + this.b + " c=" + this.c + " d=" + this.d + " tx=" + this.tx + " ty=" + this.ty + "]"; }; Object.defineProperty(a, "IDENTITY", { get: function () { return new a(); }, enumerable: false, configurable: true }); Object.defineProperty(a, "TEMP_MATRIX", { get: function () { return new a(); }, enumerable: false, configurable: true }); return a; }(); var xb = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1]; var yb = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1]; var zb = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1]; var Ab = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1]; var Bb = []; var Cb = []; var Db = Math.sign; (function () { for (var a = 0; a < 16; a++) { var b = []; Bb.push(b); for (var c = 0; c < 16; c++) { for (var d = Db(xb[a] * xb[c] + zb[a] * yb[c]), e = Db(yb[a] * xb[c] + Ab[a] * yb[c]), f = Db(xb[a] * zb[c] + zb[a] * Ab[c]), g = Db(yb[a] * zb[c] + Ab[a] * Ab[c]), h = 0; h < 16; h++) { if (xb[h] === d && yb[h] === e && zb[h] === f && Ab[h] === g) { b.push(h); break; } } } } for (a = 0; a < 16; a++) { var i = new wb(); i.set(xb[a], yb[a], zb[a], Ab[a], 0, 0); Cb.push(i); } })(); var Eb = { E: 0, SE: 1, S: 2, SW: 3, W: 4, NW: 5, N: 6, NE: 7, MIRROR_VERTICAL: 8, MAIN_DIAGONAL: 10, MIRROR_HORIZONTAL: 12, REVERSE_DIAGONAL: 14, uX: function (a) { return xb[a]; }, uY: function (a) { return yb[a]; }, vX: function (a) { return zb[a]; }, vY: function (a) { return Ab[a]; }, inv: function (a) { if (a & 8) { return a & 15; } else { return -a & 7; } }, add: function (a, b) { return Bb[a][b]; }, sub: function (a, b) { return Bb[a][Eb.inv(b)]; }, rotate180: function (a) { return a ^ 4; }, isVertical: function (a) { return (a & 3) == 2; }, byDirection: function (a, b) { if (Math.abs(a) * 2 <= Math.abs(b)) { if (b >= 0) { return Eb.S; } else { return Eb.N; } } else if (Math.abs(b) * 2 <= Math.abs(a)) { if (a > 0) { return Eb.E; } else { return Eb.W; } } else if (b > 0) { if (a > 0) { return Eb.SE; } else { return Eb.SW; } } else if (a > 0) { return Eb.NE; } else { return Eb.NW; } }, matrixAppendRotationInv: function (a, b, c, d) { if (c === undefined) { c = 0; } if (d === undefined) { d = 0; } var e = Cb[Eb.inv(b)]; e.tx = c; e.ty = d; a.append(e); } }; var Fb = function () { function a() { this.worldTransform = new wb(); this.localTransform = new wb(); this.position = new vb(this.onChange, this, 0, 0); this.scale = new vb(this.onChange, this, 1, 1); this.pivot = new vb(this.onChange, this, 0, 0); this.skew = new vb(this.updateSkew, this, 0, 0); this._rotation = 0; this._cx = 1; this._sx = 0; this._cy = 0; this._sy = 1; this._localID = 0; this._currentLocalID = 0; this._worldID = 0; this._parentID = 0; } a.prototype.onChange = function () { this._localID++; }; a.prototype.updateSkew = function () { this._cx = Math.cos(this._rotation + this.skew.y); this._sx = Math.sin(this._rotation + this.skew.y); this._cy = -Math.sin(this._rotation - this.skew.x); this._sy = Math.cos(this._rotation - this.skew.x); this._localID++; }; a.prototype.toString = function () { return "[@pixi/math:Transform position=(" + this.position.x + ", " + this.position.y + ") rotation=" + this.rotation + " scale=(" + this.scale.x + ", " + this.scale.y + ") skew=(" + this.skew.x + ", " + this.skew.y + ") ]"; }; a.prototype.updateLocalTransform = function () { var a = this.localTransform; if (this._localID !== this._currentLocalID) { a.a = this._cx * this.scale.x; a.b = this._sx * this.scale.x; a.c = this._cy * this.scale.y; a.d = this._sy * this.scale.y; a.tx = this.position.x - (this.pivot.x * a.a + this.pivot.y * a.c); a.ty = this.position.y - (this.pivot.x * a.b + this.pivot.y * a.d); this._currentLocalID = this._localID; this._parentID = -1; } }; a.prototype.updateTransform = function (a) { var b = this.localTransform; if (this._localID !== this._currentLocalID) { b.a = this._cx * this.scale.x; b.b = this._sx * this.scale.x; b.c = this._cy * this.scale.y; b.d = this._sy * this.scale.y; b.tx = this.position.x - (this.pivot.x * b.a + this.pivot.y * b.c); b.ty = this.position.y - (this.pivot.x * b.b + this.pivot.y * b.d); this._currentLocalID = this._localID; this._parentID = -1; } if (this._parentID !== a._worldID) { var c = a.worldTransform; var d = this.worldTransform; d.a = b.a * c.a + b.b * c.c; d.b = b.a * c.b + b.b * c.d; d.c = b.c * c.a + b.d * c.c; d.d = b.c * c.b + b.d * c.d; d.tx = b.tx * c.a + b.ty * c.c + c.tx; d.ty = b.tx * c.b + b.ty * c.d + c.ty; this._parentID = a._worldID; this._worldID++; } }; a.prototype.setFromMatrix = function (a) { a.decompose(this); this._localID++; }; Object.defineProperty(a.prototype, "rotation", { get: function () { return this._rotation; }, set: function (a) { if (this._rotation !== a) { this._rotation = a; this.updateSkew(); } }, enumerable: false, configurable: true }); a.IDENTITY = new a(); return a; }(); Fa.SORTABLE_CHILDREN = false; var Gb = function () { function a() { this.minX = Infinity; this.minY = Infinity; this.maxX = -Infinity; this.maxY = -Infinity; this.rect = null; this.updateID = -1; } a.prototype.isEmpty = function () { return this.minX > this.maxX || this.minY > this.maxY; }; a.prototype.clear = function () { this.minX = Infinity; this.minY = Infinity; this.maxX = -Infinity; this.maxY = -Infinity; }; a.prototype.getRectangle = function (a) { if (this.minX > this.maxX || this.minY > this.maxY) { return qb.EMPTY; } else { (a = a || new qb(0, 0, 1, 1)).x = this.minX; a.y = this.minY; a.width = this.maxX - this.minX; a.height = this.maxY - this.minY; return a; } }; a.prototype.addPoint = function (a) { this.minX = Math.min(this.minX, a.x); this.maxX = Math.max(this.maxX, a.x); this.minY = Math.min(this.minY, a.y); this.maxY = Math.max(this.maxY, a.y); }; a.prototype.addPointMatrix = function (a, b) { var c = a.a; var d = a.b; var e = a.c; var f = a.d; var g = a.tx; var h = a.ty; var i = c * b.x + e * b.y + g; var j = d * b.x + f * b.y + h; this.minX = Math.min(this.minX, i); this.maxX = Math.max(this.maxX, i); this.minY = Math.min(this.minY, j); this.maxY = Math.max(this.maxY, j); }; a.prototype.addQuad = function (a) { var b = this.minX; var c = this.minY; var d = this.maxX; var e = this.maxY; var f = a[0]; var g = a[1]; b = f < b ? f : b; c = g < c ? g : c; d = f > d ? f : d; e = g > e ? g : e; b = (f = a[2]) < b ? f : b; c = (g = a[3]) < c ? g : c; d = f > d ? f : d; e = g > e ? g : e; b = (f = a[4]) < b ? f : b; c = (g = a[5]) < c ? g : c; d = f > d ? f : d; e = g > e ? g : e; b = (f = a[6]) < b ? f : b; c = (g = a[7]) < c ? g : c; d = f > d ? f : d; e = g > e ? g : e; this.minX = b; this.minY = c; this.maxX = d; this.maxY = e; }; a.prototype.addFrame = function (a, b, c, d, e) { this.addFrameMatrix(a.worldTransform, b, c, d, e); }; a.prototype.addFrameMatrix = function (a, b, c, d, e) { var f = a.a; var g = a.b; var h = a.c; var i = a.d; var j = a.tx; var k = a.ty; var l = this.minX; var m = this.minY; var n = this.maxX; var o = this.maxY; var p = f * b + h * c + j; var q = g * b + i * c + k; l = p < l ? p : l; m = q < m ? q : m; n = p > n ? p : n; o = q > o ? q : o; l = (p = f * d + h * c + j) < l ? p : l; m = (q = g * d + i * c + k) < m ? q : m; n = p > n ? p : n; o = q > o ? q : o; l = (p = f * b + h * e + j) < l ? p : l; m = (q = g * b + i * e + k) < m ? q : m; n = p > n ? p : n; o = q > o ? q : o; l = (p = f * d + h * e + j) < l ? p : l; m = (q = g * d + i * e + k) < m ? q : m; n = p > n ? p : n; o = q > o ? q : o; this.minX = l; this.minY = m; this.maxX = n; this.maxY = o; }; a.prototype.addVertexData = function (a, b, c) { for (var d = this.minX, e = this.minY, f = this.maxX, g = this.maxY, h = b; h < c; h += 2) { var i = a[h]; var j = a[h + 1]; d = i < d ? i : d; e = j < e ? j : e; f = i > f ? i : f; g = j > g ? j : g; } this.minX = d; this.minY = e; this.maxX = f; this.maxY = g; }; a.prototype.addVertices = function (a, b, c, d) { this.addVerticesMatrix(a.worldTransform, b, c, d); }; a.prototype.addVerticesMatrix = function (a, b, c, d, e, f) { if (e === undefined) { e = 0; } if (f === undefined) { f = e; } for (var g = a.a, h = a.b, i = a.c, j = a.d, k = a.tx, l = a.ty, m = this.minX, n = this.minY, o = this.maxX, p = this.maxY, q = c; q < d; q += 2) { var r = b[q]; var s = b[q + 1]; var t = g * r + i * s + k; var u = j * s + h * r + l; m = Math.min(m, t - e); o = Math.max(o, t + e); n = Math.min(n, u - f); p = Math.max(p, u + f); } this.minX = m; this.minY = n; this.maxX = o; this.maxY = p; }; a.prototype.addBounds = function (a) { var b = this.minX; var c = this.minY; var d = this.maxX; var e = this.maxY; this.minX = a.minX < b ? a.minX : b; this.minY = a.minY < c ? a.minY : c; this.maxX = a.maxX > d ? a.maxX : d; this.maxY = a.maxY > e ? a.maxY : e; }; a.prototype.addBoundsMask = function (a, b) { var c = a.minX > b.minX ? a.minX : b.minX; var d = a.minY > b.minY ? a.minY : b.minY; var e = a.maxX < b.maxX ? a.maxX : b.maxX; var f = a.maxY < b.maxY ? a.maxY : b.maxY; if (c <= e && d <= f) { var g = this.minX; var h = this.minY; var i = this.maxX; var j = this.maxY; this.minX = c < g ? c : g; this.minY = d < h ? d : h; this.maxX = e > i ? e : i; this.maxY = f > j ? f : j; } }; a.prototype.addBoundsMatrix = function (a, b) { this.addFrameMatrix(b, a.minX, a.minY, a.maxX, a.maxY); }; a.prototype.addBoundsArea = function (a, b) { var c = a.minX > b.x ? a.minX : b.x; var d = a.minY > b.y ? a.minY : b.y; var e = a.maxX < b.x + b.width ? a.maxX : b.x + b.width; var f = a.maxY < b.y + b.height ? a.maxY : b.y + b.height; if (c <= e && d <= f) { var g = this.minX; var h = this.minY; var i = this.maxX; var j = this.maxY; this.minX = c < g ? c : g; this.minY = d < h ? d : h; this.maxX = e > i ? e : i; this.maxY = f > j ? f : j; } }; a.prototype.pad = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = a; } if (!this.isEmpty()) { this.minX -= a; this.maxX += a; this.minY -= b; this.maxY += b; } }; a.prototype.addFramePad = function (a, b, c, d, e, f) { a -= e; b -= f; c += e; d += f; this.minX = this.minX < a ? this.minX : a; this.maxX = this.maxX > c ? this.maxX : c; this.minY = this.minY < b ? this.minY : b; this.maxY = this.maxY > d ? this.maxY : d; }; return a; }(); function Hb(a, b) { Hb = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Hb(a, b); } function Ib(a, b) { function c() { this.constructor = a; } Hb(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var Jb; var Kb; var Lb; var Mb; var Nb; var Ob; var Pb; var Qb; var Rb; var Sb; var Tb; var Ub; var Vb; var Wb; var Xb; var Yb; var Zb; var $b; var _b; var ac = function (a) { function b() { var b = a.call(this) || this; b.tempDisplayObjectParent = null; b.transform = new Fb(); b.alpha = 1; b.visible = true; b.renderable = true; b.cullable = false; b.cullArea = null; b.parent = null; b.worldAlpha = 1; b._lastSortedIndex = 0; b._zIndex = 0; b.filterArea = null; b.filters = null; b._enabledFilters = null; b._bounds = new Gb(); b._localBounds = null; b._boundsID = 0; b._boundsRect = null; b._localBoundsRect = null; b._mask = null; b._maskRefCount = 0; b._destroyed = false; b.isSprite = false; b.isMask = false; return b; } Ib(b, a); b.mixin = function (a) { for (var c = Object.keys(a), d = 0; d < c.length; ++d) { var e = c[d]; Object.defineProperty(b.prototype, e, Object.getOwnPropertyDescriptor(a, e)); } }; Object.defineProperty(b.prototype, "destroyed", { get: function () { return this._destroyed; }, enumerable: false, configurable: true }); b.prototype._recursivePostUpdateTransform = function () { if (this.parent) { this.parent._recursivePostUpdateTransform(); this.transform.updateTransform(this.parent.transform); } else { this.transform.updateTransform(this._tempDisplayObjectParent.transform); } }; b.prototype.updateTransform = function () { this._boundsID++; this.transform.updateTransform(this.parent.transform); this.worldAlpha = this.alpha * this.parent.worldAlpha; }; b.prototype.getBounds = function (a, b) { if (!a) { if (this.parent) { this._recursivePostUpdateTransform(); this.updateTransform(); } else { this.parent = this._tempDisplayObjectParent; this.updateTransform(); this.parent = null; } } if (this._bounds.updateID !== this._boundsID) { this.calculateBounds(); this._bounds.updateID = this._boundsID; } if (!b) { this._boundsRect ||= new qb(); b = this._boundsRect; } return this._bounds.getRectangle(b); }; b.prototype.getLocalBounds = function (a) { if (!a) { this._localBoundsRect ||= new qb(); a = this._localBoundsRect; } this._localBounds ||= new Gb(); var b = this.transform; var c = this.parent; this.parent = null; this.transform = this._tempDisplayObjectParent.transform; var d = this._bounds; var e = this._boundsID; this._bounds = this._localBounds; var f = this.getBounds(false, a); this.parent = c; this.transform = b; this._bounds = d; this._bounds.updateID += this._boundsID - e; return f; }; b.prototype.toGlobal = function (a, b, c) { if (c === undefined) { c = false; } if (!c) { this._recursivePostUpdateTransform(); if (this.parent) { this.displayObjectUpdateTransform(); } else { this.parent = this._tempDisplayObjectParent; this.displayObjectUpdateTransform(); this.parent = null; } } return this.worldTransform.apply(a, b); }; b.prototype.toLocal = function (a, b, c, d) { if (b) { a = b.toGlobal(a, c, d); } if (!d) { this._recursivePostUpdateTransform(); if (this.parent) { this.displayObjectUpdateTransform(); } else { this.parent = this._tempDisplayObjectParent; this.displayObjectUpdateTransform(); this.parent = null; } } return this.worldTransform.applyInverse(a, c); }; b.prototype.setParent = function (a) { if (!a || !a.addChild) { throw new Error("setParent: Argument must be a Container"); } a.addChild(this); return a; }; b.prototype.setTransform = function (a, b, c, d, e, f, g, h, i) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (c === undefined) { c = 1; } if (d === undefined) { d = 1; } if (e === undefined) { e = 0; } if (f === undefined) { f = 0; } if (g === undefined) { g = 0; } if (h === undefined) { h = 0; } if (i === undefined) { i = 0; } this.position.x = a; this.position.y = b; this.scale.x = c || 1; this.scale.y = d || 1; this.rotation = e; this.skew.x = f; this.skew.y = g; this.pivot.x = h; this.pivot.y = i; return this; }; b.prototype.destroy = function (a) { if (this.parent) { this.parent.removeChild(this); } this.emit("destroyed"); this.removeAllListeners(); this.transform = null; this.parent = null; this._bounds = null; this.mask = null; this.cullArea = null; this.filters = null; this.filterArea = null; this.hitArea = null; this.interactive = false; this.interactiveChildren = false; this._destroyed = true; }; Object.defineProperty(b.prototype, "_tempDisplayObjectParent", { get: function () { if (this.tempDisplayObjectParent === null) { this.tempDisplayObjectParent = new bc(); } return this.tempDisplayObjectParent; }, enumerable: false, configurable: true }); b.prototype.enableTempParent = function () { var a = this.parent; this.parent = this._tempDisplayObjectParent; return a; }; b.prototype.disableTempParent = function (a) { this.parent = a; }; Object.defineProperty(b.prototype, "x", { get: function () { return this.position.x; }, set: function (a) { this.transform.position.x = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "y", { get: function () { return this.position.y; }, set: function (a) { this.transform.position.y = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "worldTransform", { get: function () { return this.transform.worldTransform; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "localTransform", { get: function () { return this.transform.localTransform; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "position", { get: function () { return this.transform.position; }, set: function (a) { this.transform.position.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "scale", { get: function () { return this.transform.scale; }, set: function (a) { this.transform.scale.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "pivot", { get: function () { return this.transform.pivot; }, set: function (a) { this.transform.pivot.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "skew", { get: function () { return this.transform.skew; }, set: function (a) { this.transform.skew.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "rotation", { get: function () { return this.transform.rotation; }, set: function (a) { this.transform.rotation = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "angle", { get: function () { return this.transform.rotation * mb; }, set: function (a) { this.transform.rotation = a * nb; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "zIndex", { get: function () { return this._zIndex; }, set: function (a) { this._zIndex = a; if (this.parent) { this.parent.sortDirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "worldVisible", { get: function () { var a = this; do { if (!a.visible) { return false; } a = a.parent; } while (a); return true; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "mask", { get: function () { return this._mask; }, set: function (a) { var b; if (this._mask !== a) { if (this._mask) { (b = this._mask.maskObject || this._mask)._maskRefCount--; if (b._maskRefCount === 0) { b.renderable = true; b.isMask = false; } } this._mask = a; if (this._mask) { if ((b = this._mask.maskObject || this._mask)._maskRefCount === 0) { b.renderable = false; b.isMask = true; } b._maskRefCount++; } } }, enumerable: false, configurable: true }); return b; }(Ha()); var bc = function (a) { function b() { var b = a !== null && a.apply(this, arguments) || this; b.sortDirty = null; return b; } Ib(b, a); return b; }(ac); function cc(a, b) { if (a.zIndex === b.zIndex) { return a._lastSortedIndex - b._lastSortedIndex; } else { return a.zIndex - b.zIndex; } } ac.prototype.displayObjectUpdateTransform = ac.prototype.updateTransform; (function (a) { a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY"; a[a.WEBGL = 1] = "WEBGL"; a[a.WEBGL2 = 2] = "WEBGL2"; })(Jb ||= {}); (function (a) { a[a.UNKNOWN = 0] = "UNKNOWN"; a[a.WEBGL = 1] = "WEBGL"; a[a.CANVAS = 2] = "CANVAS"; })(Kb ||= {}); (function (a) { a[a.COLOR = 16384] = "COLOR"; a[a.DEPTH = 256] = "DEPTH"; a[a.STENCIL = 1024] = "STENCIL"; })(Lb ||= {}); (function (a) { a[a.NORMAL = 0] = "NORMAL"; a[a.ADD = 1] = "ADD"; a[a.MULTIPLY = 2] = "MULTIPLY"; a[a.SCREEN = 3] = "SCREEN"; a[a.OVERLAY = 4] = "OVERLAY"; a[a.DARKEN = 5] = "DARKEN"; a[a.LIGHTEN = 6] = "LIGHTEN"; a[a.COLOR_DODGE = 7] = "COLOR_DODGE"; a[a.COLOR_BURN = 8] = "COLOR_BURN"; a[a.HARD_LIGHT = 9] = "HARD_LIGHT"; a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT"; a[a.DIFFERENCE = 11] = "DIFFERENCE"; a[a.EXCLUSION = 12] = "EXCLUSION"; a[a.HUE = 13] = "HUE"; a[a.SATURATION = 14] = "SATURATION"; a[a.COLOR = 15] = "COLOR"; a[a.LUMINOSITY = 16] = "LUMINOSITY"; a[a.NORMAL_NPM = 17] = "NORMAL_NPM"; a[a.ADD_NPM = 18] = "ADD_NPM"; a[a.SCREEN_NPM = 19] = "SCREEN_NPM"; a[a.NONE = 20] = "NONE"; a[a.SRC_OVER = 0] = "SRC_OVER"; a[a.SRC_IN = 21] = "SRC_IN"; a[a.SRC_OUT = 22] = "SRC_OUT"; a[a.SRC_ATOP = 23] = "SRC_ATOP"; a[a.DST_OVER = 24] = "DST_OVER"; a[a.DST_IN = 25] = "DST_IN"; a[a.DST_OUT = 26] = "DST_OUT"; a[a.DST_ATOP = 27] = "DST_ATOP"; a[a.ERASE = 26] = "ERASE"; a[a.SUBTRACT = 28] = "SUBTRACT"; a[a.XOR = 29] = "XOR"; })(Mb ||= {}); (function (a) { a[a.POINTS = 0] = "POINTS"; a[a.LINES = 1] = "LINES"; a[a.LINE_LOOP = 2] = "LINE_LOOP"; a[a.LINE_STRIP = 3] = "LINE_STRIP"; a[a.TRIANGLES = 4] = "TRIANGLES"; a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP"; a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN"; })(Nb ||= {}); (function (a) { a[a.RGBA = 6408] = "RGBA"; a[a.RGB = 6407] = "RGB"; a[a.RG = 33319] = "RG"; a[a.RED = 6403] = "RED"; a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER"; a[a.RGB_INTEGER = 36248] = "RGB_INTEGER"; a[a.RG_INTEGER = 33320] = "RG_INTEGER"; a[a.RED_INTEGER = 36244] = "RED_INTEGER"; a[a.ALPHA = 6406] = "ALPHA"; a[a.LUMINANCE = 6409] = "LUMINANCE"; a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA"; a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT"; a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL"; })(Ob ||= {}); (function (a) { a[a.TEXTURE_2D = 3553] = "TEXTURE_2D"; a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP"; a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY"; a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; })(Pb ||= {}); (function (a) { a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE"; a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT"; a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5"; a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4"; a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1"; a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT"; a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8"; a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; a[a.BYTE = 5120] = "BYTE"; a[a.SHORT = 5122] = "SHORT"; a[a.INT = 5124] = "INT"; a[a.FLOAT = 5126] = "FLOAT"; a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; a[a.HALF_FLOAT = 36193] = "HALF_FLOAT"; })(Qb ||= {}); (function (a) { a[a.FLOAT = 0] = "FLOAT"; a[a.INT = 1] = "INT"; a[a.UINT = 2] = "UINT"; })(Rb ||= {}); (function (a) { a[a.NEAREST = 0] = "NEAREST"; a[a.LINEAR = 1] = "LINEAR"; })(Sb ||= {}); (function (a) { a[a.CLAMP = 33071] = "CLAMP"; a[a.REPEAT = 10497] = "REPEAT"; a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT"; })(Tb ||= {}); (function (a) { a[a.OFF = 0] = "OFF"; a[a.POW2 = 1] = "POW2"; a[a.ON = 2] = "ON"; a[a.ON_MANUAL = 3] = "ON_MANUAL"; })(Ub ||= {}); (function (a) { a[a.NPM = 0] = "NPM"; a[a.UNPACK = 1] = "UNPACK"; a[a.PMA = 2] = "PMA"; a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA"; a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD"; a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA"; a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA"; })(Vb ||= {}); (function (a) { a[a.NO = 0] = "NO"; a[a.YES = 1] = "YES"; a[a.AUTO = 2] = "AUTO"; a[a.BLEND = 0] = "BLEND"; a[a.CLEAR = 1] = "CLEAR"; a[a.BLIT = 2] = "BLIT"; })(Wb ||= {}); (function (a) { a[a.AUTO = 0] = "AUTO"; a[a.MANUAL = 1] = "MANUAL"; })(Xb ||= {}); (function (a) { a.LOW = "lowp"; a.MEDIUM = "mediump"; a.HIGH = "highp"; })(Yb ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.SCISSOR = 1] = "SCISSOR"; a[a.STENCIL = 2] = "STENCIL"; a[a.SPRITE = 3] = "SPRITE"; })(Zb ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.LOW = 2] = "LOW"; a[a.MEDIUM = 4] = "MEDIUM"; a[a.HIGH = 8] = "HIGH"; })($b ||= {}); (function (a) { a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER"; a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER"; a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER"; })(_b ||= {}); var dc = function (a) { function b() { var b = a.call(this) || this; b.children = []; b.sortableChildren = Fa.SORTABLE_CHILDREN; b.sortDirty = false; return b; } Ib(b, a); b.prototype.onChildrenChange = function (a) {}; b.prototype.addChild = function () { for (var a = arguments, b = [], c = 0; c < arguments.length; c++) { b[c] = a[c]; } if (b.length > 1) { for (var d = 0; d < b.length; d++) { this.addChild(b[d]); } } else { var e = b[0]; if (e.parent) { e.parent.removeChild(e); } e.parent = this; this.sortDirty = true; e.transform._parentID = -1; this.children.push(e); this._boundsID++; this.onChildrenChange(this.children.length - 1); this.emit("childAdded", e, this, this.children.length - 1); e.emit("added", this); } return b[0]; }; b.prototype.addChildAt = function (a, b) { if (b < 0 || b > this.children.length) { throw new Error(a + "addChildAt: The index " + b + " supplied is out of bounds " + this.children.length); } if (a.parent) { a.parent.removeChild(a); } a.parent = this; this.sortDirty = true; a.transform._parentID = -1; this.children.splice(b, 0, a); this._boundsID++; this.onChildrenChange(b); a.emit("added", this); this.emit("childAdded", a, this, b); return a; }; b.prototype.swapChildren = function (a, b) { if (a !== b) { var c = this.getChildIndex(a); var d = this.getChildIndex(b); this.children[c] = b; this.children[d] = a; this.onChildrenChange(c < d ? c : d); } }; b.prototype.getChildIndex = function (a) { var b = this.children.indexOf(a); if (b === -1) { throw new Error("The supplied DisplayObject must be a child of the caller"); } return b; }; b.prototype.setChildIndex = function (a, b) { if (b < 0 || b >= this.children.length) { throw new Error("The index " + b + " supplied is out of bounds " + this.children.length); } var c = this.getChildIndex(a); $a(this.children, c, 1); this.children.splice(b, 0, a); this.onChildrenChange(b); }; b.prototype.getChildAt = function (a) { if (a < 0 || a >= this.children.length) { throw new Error("getChildAt: Index (" + a + ") does not exist."); } return this.children[a]; }; b.prototype.removeChild = function () { for (var a = arguments, b = [], c = 0; c < arguments.length; c++) { b[c] = a[c]; } if (b.length > 1) { for (var d = 0; d < b.length; d++) { this.removeChild(b[d]); } } else { var e = b[0]; var f = this.children.indexOf(e); if (f === -1) { return null; } e.parent = null; e.transform._parentID = -1; $a(this.children, f, 1); this._boundsID++; this.onChildrenChange(f); e.emit("removed", this); this.emit("childRemoved", e, this, f); } return b[0]; }; b.prototype.removeChildAt = function (a) { var b = this.getChildAt(a); b.parent = null; b.transform._parentID = -1; $a(this.children, a, 1); this._boundsID++; this.onChildrenChange(a); b.emit("removed", this); this.emit("childRemoved", b, this, a); return b; }; b.prototype.removeChildren = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = this.children.length; } var c; var d = a; var e = b - d; if (e > 0 && e <= b) { c = this.children.splice(d, e); for (var f = 0; f < c.length; ++f) { c[f].parent = null; if (c[f].transform) { c[f].transform._parentID = -1; } } this._boundsID++; this.onChildrenChange(a); f = 0; for (; f < c.length; ++f) { c[f].emit("removed", this); this.emit("childRemoved", c[f], this, f); } return c; } if (e === 0 && this.children.length === 0) { return []; } throw new RangeError("removeChildren: numeric values are outside the acceptable range."); }; b.prototype.sortChildren = function () { for (var a = false, b = 0, c = this.children.length; b < c; ++b) { var d = this.children[b]; d._lastSortedIndex = b; if (!a && d.zIndex !== 0) { a = true; } } if (a && this.children.length > 1) { this.children.sort(cc); } this.sortDirty = false; }; b.prototype.updateTransform = function () { if (this.sortableChildren && this.sortDirty) { this.sortChildren(); } this._boundsID++; this.transform.updateTransform(this.parent.transform); this.worldAlpha = this.alpha * this.parent.worldAlpha; for (var a = 0, b = this.children.length; a < b; ++a) { var c = this.children[a]; if (c.visible) { c.updateTransform(); } } }; b.prototype.calculateBounds = function () { this._bounds.clear(); this._calculateBounds(); for (var a = 0; a < this.children.length; a++) { var b = this.children[a]; if (b.visible && b.renderable) { b.calculateBounds(); if (b._mask) { var c = b._mask.maskObject || b._mask; c.calculateBounds(); this._bounds.addBoundsMask(b._bounds, c._bounds); } else if (b.filterArea) { this._bounds.addBoundsArea(b._bounds, b.filterArea); } else { this._bounds.addBounds(b._bounds); } } } this._bounds.updateID = this._boundsID; }; b.prototype.getLocalBounds = function (b, c) { if (c === undefined) { c = false; } var d = a.prototype.getLocalBounds.call(this, b); if (!c) { for (var e = 0, f = this.children.length; e < f; ++e) { var g = this.children[e]; if (g.visible) { g.updateTransform(); } } } return d; }; b.prototype._calculateBounds = function () {}; b.prototype._renderWithCulling = function (a) { var c = a.renderTexture.sourceFrame; if (c.width > 0 && c.height > 0) { var d; var e; if (this.cullArea) { d = this.cullArea; e = this.worldTransform; } else if (this._render !== b.prototype._render) { d = this.getBounds(true); } if (d && c.intersects(d, e)) { this._render(a); } else if (this.cullArea) { return; } for (var f = 0, g = this.children.length; f < g; ++f) { var h = this.children[f]; var i = h.cullable; h.cullable = i || !this.cullArea; h.render(a); h.cullable = i; } } }; b.prototype.render = function (a) { if (this.visible && this.worldAlpha > 0 && this.renderable) { if (this._mask || this.filters && this.filters.length) { this.renderAdvanced(a); } else if (this.cullable) { this._renderWithCulling(a); } else { this._render(a); for (var b = 0, c = this.children.length; b < c; ++b) { this.children[b].render(a); } } } }; b.prototype.renderAdvanced = function (a) { var b = this.filters; var c = this._mask; if (b) { this._enabledFilters ||= []; this._enabledFilters.length = 0; for (var d = 0; d < b.length; d++) { if (b[d].enabled) { this._enabledFilters.push(b[d]); } } } var e = b && this._enabledFilters && this._enabledFilters.length || c && (!c.isMaskData || c.enabled && (c.autoDetect || c.type !== Zb.NONE)); if (e) { a.batch.flush(); } if (b && this._enabledFilters && this._enabledFilters.length) { a.filter.push(this, this._enabledFilters); } if (c) { a.mask.push(this, this._mask); } if (this.cullable) { this._renderWithCulling(a); } else { this._render(a); d = 0; for (var f = this.children.length; d < f; ++d) { this.children[d].render(a); } } if (e) { a.batch.flush(); } if (c) { a.mask.pop(this); } if (b && this._enabledFilters && this._enabledFilters.length) { a.filter.pop(); } }; b.prototype._render = function (a) {}; b.prototype.destroy = function (b) { a.prototype.destroy.call(this); this.sortDirty = false; var c = typeof b == "boolean" ? b : b && b.children; var d = this.removeChildren(0, this.children.length); if (c) { for (var e = 0; e < d.length; ++e) { d[e].destroy(b); } } }; Object.defineProperty(b.prototype, "width", { get: function () { return this.scale.x * this.getLocalBounds().width; }, set: function (a) { var b = this.getLocalBounds().width; this.scale.x = b !== 0 ? a / b : 1; this._width = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return this.scale.y * this.getLocalBounds().height; }, set: function (a) { var b = this.getLocalBounds().height; this.scale.y = b !== 0 ? a / b : 1; this._height = a; }, enumerable: false, configurable: true }); return b; }(ac); dc.prototype.containerUpdateTransform = dc.prototype.updateTransform; ac.mixin({ accessible: false, accessibleTitle: null, accessibleHint: null, tabIndex: 0, _accessibleActive: false, _accessibleDiv: null, accessibleType: "button", accessiblePointerEvents: "auto", accessibleChildren: true, renderId: -1 }); var ec; var fc = 100; var gc = function () { function a(a) { this.debug = false; this._isActive = false; this._isMobileAccessibility = false; this.pool = []; this.renderId = 0; this.children = []; this.androidUpdateCount = 0; this.androidUpdateFrequency = 500; this._hookDiv = null; if (la.tablet || la.phone) { this.createTouchHook(); } var b = document.createElement("div"); b.style.width = fc + "px"; b.style.height = fc + "px"; b.style.position = "absolute"; b.style.top = "0px"; b.style.left = "0px"; b.style.zIndex = 2 .toString(); this.div = b; this.renderer = a; this._onKeyDown = this._onKeyDown.bind(this); this._onMouseMove = this._onMouseMove.bind(this); globalThis.addEventListener("keydown", this._onKeyDown, false); } Object.defineProperty(a.prototype, "isActive", { get: function () { return this._isActive; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "isMobileAccessibility", { get: function () { return this._isMobileAccessibility; }, enumerable: false, configurable: true }); a.prototype.createTouchHook = function () { var a = this; var b = document.createElement("button"); b.style.width = "1px"; b.style.height = "1px"; b.style.position = "absolute"; b.style.top = "-1000px"; b.style.left = "-1000px"; b.style.zIndex = 2 .toString(); b.style.backgroundColor = "#FF0000"; b.title = "select to enable accessibility for this content"; b.addEventListener("focus", function () { a._isMobileAccessibility = true; a.activate(); a.destroyTouchHook(); }); document.body.appendChild(b); this._hookDiv = b; }; a.prototype.destroyTouchHook = function () { if (this._hookDiv) { document.body.removeChild(this._hookDiv); this._hookDiv = null; } }; a.prototype.activate = function () { var a; if (!this._isActive) { this._isActive = true; globalThis.document.addEventListener("mousemove", this._onMouseMove, true); globalThis.removeEventListener("keydown", this._onKeyDown, false); this.renderer.on("postrender", this.update, this); if ((a = this.renderer.view.parentNode) !== null && a !== undefined) { a.appendChild(this.div); } } }; a.prototype.deactivate = function () { var a; if (this._isActive && !this._isMobileAccessibility) { this._isActive = false; globalThis.document.removeEventListener("mousemove", this._onMouseMove, true); globalThis.addEventListener("keydown", this._onKeyDown, false); this.renderer.off("postrender", this.update); if ((a = this.div.parentNode) !== null && a !== undefined) { a.removeChild(this.div); } } }; a.prototype.updateAccessibleObjects = function (a) { if (a.visible && a.accessibleChildren) { if (a.accessible && a.interactive) { if (!a._accessibleActive) { this.addChild(a); } a.renderId = this.renderId; } var b = a.children; if (b) { for (var c = 0; c < b.length; c++) { this.updateAccessibleObjects(b[c]); } } } }; a.prototype.update = function () { var a = performance.now(); if ((!la.android.device || a >= this.androidUpdateCount) && (this.androidUpdateCount = a + this.androidUpdateFrequency, this.renderer.renderingToScreen)) { if (this.renderer._lastObjectRendered) { this.updateAccessibleObjects(this.renderer._lastObjectRendered); } var b = this.renderer.view.getBoundingClientRect(); var c = b.left; var d = b.top; var e = b.width; var f = b.height; var g = this.renderer; var h = g.width; var i = g.height; var j = g.resolution; var k = e / h * j; var l = f / i * j; var m = this.div; m.style.left = c + "px"; m.style.top = d + "px"; m.style.width = h + "px"; m.style.height = i + "px"; for (var n = 0; n < this.children.length; n++) { var o = this.children[n]; if (o.renderId !== this.renderId) { o._accessibleActive = false; $a(this.children, n, 1); this.div.removeChild(o._accessibleDiv); this.pool.push(o._accessibleDiv); o._accessibleDiv = null; n--; } else { m = o._accessibleDiv; var p = o.hitArea; var q = o.worldTransform; if (o.hitArea) { m.style.left = (q.tx + p.x * q.a) * k + "px"; m.style.top = (q.ty + p.y * q.d) * l + "px"; m.style.width = p.width * q.a * k + "px"; m.style.height = p.height * q.d * l + "px"; } else { p = o.getBounds(); this.capHitArea(p); m.style.left = p.x * k + "px"; m.style.top = p.y * l + "px"; m.style.width = p.width * k + "px"; m.style.height = p.height * l + "px"; if (m.title !== o.accessibleTitle && o.accessibleTitle !== null) { m.title = o.accessibleTitle; } if (m.getAttribute("aria-label") !== o.accessibleHint && o.accessibleHint !== null) { m.setAttribute("aria-label", o.accessibleHint); } } if (o.accessibleTitle !== m.title || o.tabIndex !== m.tabIndex) { m.title = o.accessibleTitle; m.tabIndex = o.tabIndex; if (this.debug) { this.updateDebugHTML(m); } } } } this.renderId++; } }; a.prototype.updateDebugHTML = function (a) { a.innerHTML = "type: " + a.type + "</br> title : " + a.title + "</br> tabIndex: " + a.tabIndex; }; a.prototype.capHitArea = function (a) { if (a.x < 0) { a.width += a.x; a.x = 0; } if (a.y < 0) { a.height += a.y; a.y = 0; } var b = this.renderer; var c = b.width; var d = b.height; if (a.x + a.width > c) { a.width = c - a.x; } if (a.y + a.height > d) { a.height = d - a.y; } }; a.prototype.addChild = function (a) { var b = this.pool.pop(); if (!b) { (b = document.createElement("button")).style.width = fc + "px"; b.style.height = fc + "px"; b.style.backgroundColor = this.debug ? "rgba(255,255,255,0.5)" : "transparent"; b.style.position = "absolute"; b.style.zIndex = 2 .toString(); b.style.borderStyle = "none"; if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { b.setAttribute("aria-live", "off"); } else { b.setAttribute("aria-live", "polite"); } if (navigator.userAgent.match(/rv:.*Gecko\//)) { b.setAttribute("aria-relevant", "additions"); } else { b.setAttribute("aria-relevant", "text"); } b.addEventListener("click", this._onClick.bind(this)); b.addEventListener("focus", this._onFocus.bind(this)); b.addEventListener("focusout", this._onFocusOut.bind(this)); } b.style.pointerEvents = a.accessiblePointerEvents; b.type = a.accessibleType; if (a.accessibleTitle && a.accessibleTitle !== null) { b.title = a.accessibleTitle; } else if (!a.accessibleHint || a.accessibleHint === null) { b.title = "displayObject " + a.tabIndex; } if (a.accessibleHint && a.accessibleHint !== null) { b.setAttribute("aria-label", a.accessibleHint); } if (this.debug) { this.updateDebugHTML(b); } a._accessibleActive = true; a._accessibleDiv = b; b.displayObject = a; this.children.push(a); this.div.appendChild(a._accessibleDiv); a._accessibleDiv.tabIndex = a.tabIndex; }; a.prototype._onClick = function (a) { var b = this.renderer.plugins.interaction; var c = a.target.displayObject; var d = b.eventData; b.dispatchEvent(c, "click", d); b.dispatchEvent(c, "pointertap", d); b.dispatchEvent(c, "tap", d); }; a.prototype._onFocus = function (a) { if (!a.target.getAttribute("aria-live")) { a.target.setAttribute("aria-live", "assertive"); } var b = this.renderer.plugins.interaction; var c = a.target.displayObject; var d = b.eventData; b.dispatchEvent(c, "mouseover", d); }; a.prototype._onFocusOut = function (a) { if (!a.target.getAttribute("aria-live")) { a.target.setAttribute("aria-live", "polite"); } var b = this.renderer.plugins.interaction; var c = a.target.displayObject; var d = b.eventData; b.dispatchEvent(c, "mouseout", d); }; a.prototype._onKeyDown = function (a) { if (a.keyCode === 9) { this.activate(); } }; a.prototype._onMouseMove = function (a) { if (a.movementX !== 0 || a.movementY !== 0) { this.deactivate(); } }; a.prototype.destroy = function () { this.destroyTouchHook(); this.div = null; globalThis.document.removeEventListener("mousemove", this._onMouseMove, true); globalThis.removeEventListener("keydown", this._onKeyDown); this.pool = null; this.children = null; this.renderer = null; }; return a; }(); Fa.TARGET_FPMS = 0.06; (function (a) { a[a.INTERACTION = 50] = "INTERACTION"; a[a.HIGH = 25] = "HIGH"; a[a.NORMAL = 0] = "NORMAL"; a[a.LOW = -25] = "LOW"; a[a.UTILITY = -50] = "UTILITY"; })(ec ||= {}); var hc = function () { function a(a, b, c, d) { if (b === undefined) { b = null; } if (c === undefined) { c = 0; } if (d === undefined) { d = false; } this.next = null; this.previous = null; this._destroyed = false; this.fn = a; this.context = b; this.priority = c; this.once = d; } a.prototype.match = function (a, b) { if (b === undefined) { b = null; } return this.fn === a && this.context === b; }; a.prototype.emit = function (a) { if (this.fn) { if (this.context) { this.fn.call(this.context, a); } else { this.fn(a); } } var b = this.next; if (this.once) { this.destroy(true); } if (this._destroyed) { this.next = null; } return b; }; a.prototype.connect = function (a) { this.previous = a; if (a.next) { a.next.previous = this; } this.next = a.next; a.next = this; }; a.prototype.destroy = function (a) { if (a === undefined) { a = false; } this._destroyed = true; this.fn = null; this.context = null; if (this.previous) { this.previous.next = this.next; } if (this.next) { this.next.previous = this.previous; } var b = this.next; this.next = a ? null : b; this.previous = null; return b; }; return a; }(); var ic = function () { function a() { var a = this; this.autoStart = false; this.deltaTime = 1; this.lastTime = -1; this.speed = 1; this.started = false; this._requestId = null; this._maxElapsedMS = 100; this._minElapsedMS = 0; this._protected = false; this._lastFrame = -1; this._head = new hc(null, null, Infinity); this.deltaMS = 1 / Fa.TARGET_FPMS; this.elapsedMS = 1 / Fa.TARGET_FPMS; this._tick = function (b) { a._requestId = null; if (a.started) { a.update(b); if (a.started && a._requestId === null && a._head.next) { a._requestId = requestAnimationFrame(a._tick); } } }; } a.prototype._requestIfNeeded = function () { if (this._requestId === null && this._head.next) { this.lastTime = performance.now(); this._lastFrame = this.lastTime; this._requestId = requestAnimationFrame(this._tick); } }; a.prototype._cancelIfNeeded = function () { if (this._requestId !== null) { cancelAnimationFrame(this._requestId); this._requestId = null; } }; a.prototype._startIfPossible = function () { if (this.started) { this._requestIfNeeded(); } else if (this.autoStart) { this.start(); } }; a.prototype.add = function (a, b, c) { if (c === undefined) { c = ec.NORMAL; } return this._addListener(new hc(a, b, c)); }; a.prototype.addOnce = function (a, b, c) { if (c === undefined) { c = ec.NORMAL; } return this._addListener(new hc(a, b, c, true)); }; a.prototype._addListener = function (a) { var b = this._head.next; var c = this._head; if (b) { while (b) { if (a.priority > b.priority) { a.connect(c); break; } c = b; b = b.next; } if (!a.previous) { a.connect(c); } } else { a.connect(c); } this._startIfPossible(); return this; }; a.prototype.remove = function (a, b) { for (var c = this._head.next; c;) { c = c.match(a, b) ? c.destroy() : c.next; } if (!this._head.next) { this._cancelIfNeeded(); } return this; }; Object.defineProperty(a.prototype, "count", { get: function () { if (!this._head) { return 0; } for (var a = 0, b = this._head; b = b.next;) { a++; } return a; }, enumerable: false, configurable: true }); a.prototype.start = function () { if (!this.started) { this.started = true; this._requestIfNeeded(); } }; a.prototype.stop = function () { if (this.started) { this.started = false; this._cancelIfNeeded(); } }; a.prototype.destroy = function () { if (!this._protected) { this.stop(); for (var a = this._head.next; a;) { a = a.destroy(true); } this._head.destroy(); this._head = null; } }; a.prototype.update = function (a) { var b; if (a === undefined) { a = performance.now(); } if (a > this.lastTime) { if ((b = this.elapsedMS = a - this.lastTime) > this._maxElapsedMS) { b = this._maxElapsedMS; } b *= this.speed; if (this._minElapsedMS) { var c = a - this._lastFrame | 0; if (c < this._minElapsedMS) { return; } this._lastFrame = a - c % this._minElapsedMS; } this.deltaMS = b; this.deltaTime = this.deltaMS * Fa.TARGET_FPMS; for (var d = this._head, e = d.next; e;) { e = e.emit(this.deltaTime); } if (!d.next) { this._cancelIfNeeded(); } } else { this.deltaTime = this.deltaMS = this.elapsedMS = 0; } this.lastTime = a; }; Object.defineProperty(a.prototype, "FPS", { get: function () { return 1000 / this.elapsedMS; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "minFPS", { get: function () { return 1000 / this._maxElapsedMS; }, set: function (a) { var b = Math.min(this.maxFPS, a); var c = Math.min(Math.max(0, b) / 1000, Fa.TARGET_FPMS); this._maxElapsedMS = 1 / c; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "maxFPS", { get: function () { if (this._minElapsedMS) { return Math.round(1000 / this._minElapsedMS); } else { return 0; } }, set: function (a) { if (a === 0) { this._minElapsedMS = 0; } else { var b = Math.max(this.minFPS, a); this._minElapsedMS = 1 / (b / 1000); } }, enumerable: false, configurable: true }); Object.defineProperty(a, "shared", { get: function () { if (!a._shared) { var b = a._shared = new a(); b.autoStart = true; b._protected = true; } return a._shared; }, enumerable: false, configurable: true }); Object.defineProperty(a, "system", { get: function () { if (!a._system) { var b = a._system = new a(); b.autoStart = true; b._protected = true; } return a._system; }, enumerable: false, configurable: true }); return a; }(); var jc = function () { function a() {} a.init = function (a) { var b = this; a = Object.assign({ autoStart: true, sharedTicker: false }, a); Object.defineProperty(this, "ticker", { set: function (a) { if (this._ticker) { this._ticker.remove(this.render, this); } this._ticker = a; if (a) { a.add(this.render, this, ec.LOW); } }, get: function () { return this._ticker; } }); this.stop = function () { b._ticker.stop(); }; this.start = function () { b._ticker.start(); }; this._ticker = null; this.ticker = a.sharedTicker ? ic.shared : new ic(); if (a.autoStart) { this.start(); } }; a.destroy = function () { if (this._ticker) { var a = this._ticker; this.ticker = null; a.destroy(); } }; return a; }(); var kc = function () { function a() { this.pressure = 0; this.rotationAngle = 0; this.twist = 0; this.tangentialPressure = 0; this.global = new ob(); this.target = null; this.originalEvent = null; this.identifier = null; this.isPrimary = false; this.button = 0; this.buttons = 0; this.width = 0; this.height = 0; this.tiltX = 0; this.tiltY = 0; this.pointerType = null; this.pressure = 0; this.rotationAngle = 0; this.twist = 0; this.tangentialPressure = 0; } Object.defineProperty(a.prototype, "pointerId", { get: function () { return this.identifier; }, enumerable: false, configurable: true }); a.prototype.getLocalPosition = function (a, b, c) { return a.worldTransform.applyInverse(c || this.global, b); }; a.prototype.copyEvent = function (a) { if ("isPrimary" in a && a.isPrimary) { this.isPrimary = true; } this.button = "button" in a && a.button; var b = "buttons" in a && a.buttons; this.buttons = Number.isInteger(b) ? b : "which" in a && a.which; this.width = "width" in a && a.width; this.height = "height" in a && a.height; this.tiltX = "tiltX" in a && a.tiltX; this.tiltY = "tiltY" in a && a.tiltY; this.pointerType = "pointerType" in a && a.pointerType; this.pressure = "pressure" in a && a.pressure; this.rotationAngle = "rotationAngle" in a && a.rotationAngle; this.twist = "twist" in a && a.twist || 0; this.tangentialPressure = "tangentialPressure" in a && a.tangentialPressure || 0; }; a.prototype.reset = function () { this.isPrimary = false; }; return a; }(); function lc(a, b) { lc = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return lc(a, b); } var mc = function () { function a() { this.stopped = false; this.stopsPropagatingAt = null; this.stopPropagationHint = false; this.target = null; this.currentTarget = null; this.type = null; this.data = null; } a.prototype.stopPropagation = function () { this.stopped = true; this.stopPropagationHint = true; this.stopsPropagatingAt = this.currentTarget; }; a.prototype.reset = function () { this.stopped = false; this.stopsPropagatingAt = null; this.stopPropagationHint = false; this.currentTarget = null; this.target = null; }; return a; }(); var nc = function () { function a(b) { this._pointerId = b; this._flags = a.FLAGS.NONE; } a.prototype._doSet = function (a, b) { this._flags = b ? this._flags | a : this._flags & ~a; }; Object.defineProperty(a.prototype, "pointerId", { get: function () { return this._pointerId; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "flags", { get: function () { return this._flags; }, set: function (a) { this._flags = a; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "none", { get: function () { return this._flags === a.FLAGS.NONE; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "over", { get: function () { return (this._flags & a.FLAGS.OVER) != 0; }, set: function (b) { this._doSet(a.FLAGS.OVER, b); }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "rightDown", { get: function () { return (this._flags & a.FLAGS.RIGHT_DOWN) != 0; }, set: function (b) { this._doSet(a.FLAGS.RIGHT_DOWN, b); }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "leftDown", { get: function () { return (this._flags & a.FLAGS.LEFT_DOWN) != 0; }, set: function (b) { this._doSet(a.FLAGS.LEFT_DOWN, b); }, enumerable: false, configurable: true }); a.FLAGS = Object.freeze({ NONE: 0, OVER: 1, LEFT_DOWN: 2, RIGHT_DOWN: 4 }); return a; }(); var oc = function () { function a() { this._tempPoint = new ob(); } a.prototype.recursiveFindHit = function (a, b, c, d, e) { if (!b || !b.visible) { return false; } var f = a.data.global; var g = false; var h = e = b.interactive || e; var i = true; if (b.hitArea) { if (d) { b.worldTransform.applyInverse(f, this._tempPoint); if (b.hitArea.contains(this._tempPoint.x, this._tempPoint.y)) { g = true; } else { d = false; i = false; } } h = false; } else if (b._mask && d) { if (!b._mask.containsPoint || !b._mask.containsPoint(f)) { d = false; } } if (i && b.interactiveChildren && b.children) { for (var j = b.children, k = j.length - 1; k >= 0; k--) { var l = j[k]; var m = this.recursiveFindHit(a, l, c, d, h); if (m) { if (!l.parent) { continue; } h = false; if (m) { if (a.target) { d = false; } g = true; } } } } if (e) { if (d && !a.target && !b.hitArea && b.containsPoint && b.containsPoint(f)) { g = true; } if (b.interactive) { if (g && !a.target) { a.target = b; } if (c) { c(a, b, !!g); } } } return g; }; a.prototype.findHit = function (a, b, c, d) { this.recursiveFindHit(a, b, c, d, false); }; return a; }(); var pc = { interactive: false, interactiveChildren: true, hitArea: null, get buttonMode() { return this.cursor === "pointer"; }, set buttonMode(a) { if (a) { this.cursor = "pointer"; } else if (this.cursor === "pointer") { this.cursor = null; } }, cursor: null, get trackedPointers() { if (this._trackedPointers === undefined) { this._trackedPointers = {}; } return this._trackedPointers; }, _trackedPointers: undefined }; ac.mixin(pc); var qc = { target: null, data: { global: null } }; var rc = function (a) { function b(b, c) { var d = a.call(this) || this; c = c || {}; d.renderer = b; d.autoPreventDefault = c.autoPreventDefault === undefined || c.autoPreventDefault; d.interactionFrequency = c.interactionFrequency || 10; d.mouse = new kc(); d.mouse.identifier = 1; d.mouse.global.set(-999999); d.activeInteractionData = {}; d.activeInteractionData[1] = d.mouse; d.interactionDataPool = []; d.eventData = new mc(); d.interactionDOMElement = null; d.moveWhenInside = false; d.eventsAdded = false; d.tickerAdded = false; d.mouseOverRenderer = !("PointerEvent" in globalThis); d.supportsTouchEvents = "ontouchstart" in globalThis; d.supportsPointerEvents = !!globalThis.PointerEvent; d.onPointerUp = d.onPointerUp.bind(d); d.processPointerUp = d.processPointerUp.bind(d); d.onPointerCancel = d.onPointerCancel.bind(d); d.processPointerCancel = d.processPointerCancel.bind(d); d.onPointerDown = d.onPointerDown.bind(d); d.processPointerDown = d.processPointerDown.bind(d); d.onPointerMove = d.onPointerMove.bind(d); d.processPointerMove = d.processPointerMove.bind(d); d.onPointerOut = d.onPointerOut.bind(d); d.processPointerOverOut = d.processPointerOverOut.bind(d); d.onPointerOver = d.onPointerOver.bind(d); d.cursorStyles = { default: "inherit", pointer: "pointer" }; d.currentCursorMode = null; d.cursor = null; d.resolution = 1; d.delayedEvents = []; d.search = new oc(); d._tempDisplayObject = new bc(); d._eventListenerOptions = { capture: true, passive: false }; d._useSystemTicker = c.useSystemTicker === undefined || c.useSystemTicker; d.setTargetElement(d.renderer.view, d.renderer.resolution); return d; } (function (a, b) { function c() { this.constructor = a; } lc(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); Object.defineProperty(b.prototype, "useSystemTicker", { get: function () { return this._useSystemTicker; }, set: function (a) { this._useSystemTicker = a; if (a) { this.addTickerListener(); } else { this.removeTickerListener(); } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "lastObjectRendered", { get: function () { return this.renderer._lastObjectRendered || this._tempDisplayObject; }, enumerable: false, configurable: true }); b.prototype.hitTest = function (a, b) { qc.target = null; qc.data.global = a; b ||= this.lastObjectRendered; this.processInteractive(qc, b, null, true); return qc.target; }; b.prototype.setTargetElement = function (a, b) { if (b === undefined) { b = 1; } this.removeTickerListener(); this.removeEvents(); this.interactionDOMElement = a; this.resolution = b; this.addEvents(); this.addTickerListener(); }; b.prototype.addTickerListener = function () { if (!this.tickerAdded && this.interactionDOMElement && this._useSystemTicker) { ic.system.add(this.tickerUpdate, this, ec.INTERACTION); this.tickerAdded = true; } }; b.prototype.removeTickerListener = function () { if (this.tickerAdded) { ic.system.remove(this.tickerUpdate, this); this.tickerAdded = false; } }; b.prototype.addEvents = function () { if (!this.eventsAdded && this.interactionDOMElement) { var a = this.interactionDOMElement.style; if (globalThis.navigator.msPointerEnabled) { a.msContentZooming = "none"; a.msTouchAction = "none"; } else if (this.supportsPointerEvents) { a.touchAction = "none"; } if (this.supportsPointerEvents) { globalThis.document.addEventListener("pointermove", this.onPointerMove, this._eventListenerOptions); this.interactionDOMElement.addEventListener("pointerdown", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.addEventListener("pointerleave", this.onPointerOut, this._eventListenerOptions); this.interactionDOMElement.addEventListener("pointerover", this.onPointerOver, this._eventListenerOptions); globalThis.addEventListener("pointercancel", this.onPointerCancel, this._eventListenerOptions); globalThis.addEventListener("pointerup", this.onPointerUp, this._eventListenerOptions); } else { globalThis.document.addEventListener("mousemove", this.onPointerMove, this._eventListenerOptions); this.interactionDOMElement.addEventListener("mousedown", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.addEventListener("mouseout", this.onPointerOut, this._eventListenerOptions); this.interactionDOMElement.addEventListener("mouseover", this.onPointerOver, this._eventListenerOptions); globalThis.addEventListener("mouseup", this.onPointerUp, this._eventListenerOptions); } if (this.supportsTouchEvents) { this.interactionDOMElement.addEventListener("touchstart", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.addEventListener("touchcancel", this.onPointerCancel, this._eventListenerOptions); this.interactionDOMElement.addEventListener("touchend", this.onPointerUp, this._eventListenerOptions); this.interactionDOMElement.addEventListener("touchmove", this.onPointerMove, this._eventListenerOptions); } this.eventsAdded = true; } }; b.prototype.removeEvents = function () { if (this.eventsAdded && this.interactionDOMElement) { var a = this.interactionDOMElement.style; if (globalThis.navigator.msPointerEnabled) { a.msContentZooming = ""; a.msTouchAction = ""; } else if (this.supportsPointerEvents) { a.touchAction = ""; } if (this.supportsPointerEvents) { globalThis.document.removeEventListener("pointermove", this.onPointerMove, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("pointerdown", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("pointerleave", this.onPointerOut, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("pointerover", this.onPointerOver, this._eventListenerOptions); globalThis.removeEventListener("pointercancel", this.onPointerCancel, this._eventListenerOptions); globalThis.removeEventListener("pointerup", this.onPointerUp, this._eventListenerOptions); } else { globalThis.document.removeEventListener("mousemove", this.onPointerMove, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("mousedown", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("mouseout", this.onPointerOut, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("mouseover", this.onPointerOver, this._eventListenerOptions); globalThis.removeEventListener("mouseup", this.onPointerUp, this._eventListenerOptions); } if (this.supportsTouchEvents) { this.interactionDOMElement.removeEventListener("touchstart", this.onPointerDown, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("touchcancel", this.onPointerCancel, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("touchend", this.onPointerUp, this._eventListenerOptions); this.interactionDOMElement.removeEventListener("touchmove", this.onPointerMove, this._eventListenerOptions); } this.interactionDOMElement = null; this.eventsAdded = false; } }; b.prototype.tickerUpdate = function (a) { this._deltaTime += a; if (this._deltaTime >= this.interactionFrequency) { this._deltaTime = 0; this.update(); } }; b.prototype.update = function () { if (this.interactionDOMElement) { if (this._didMove) { this._didMove = false; } else { this.cursor = null; for (var a in this.activeInteractionData) { if (this.activeInteractionData.hasOwnProperty(a)) { var b = this.activeInteractionData[a]; if (b.originalEvent && b.pointerType !== "touch") { var c = this.configureInteractionEventForDOMEvent(this.eventData, b.originalEvent, b); this.processInteractive(c, this.lastObjectRendered, this.processPointerOverOut, true); } } } this.setCursorMode(this.cursor); } } }; b.prototype.setCursorMode = function (a) { a = a || "default"; var b = true; if (globalThis.OffscreenCanvas && this.interactionDOMElement instanceof OffscreenCanvas) { b = false; } if (this.currentCursorMode !== a) { this.currentCursorMode = a; var c = this.cursorStyles[a]; if (c) { switch (typeof c) { case "string": if (b) { this.interactionDOMElement.style.cursor = c; } break; case "function": c(a); break; case "object": if (b) { Object.assign(this.interactionDOMElement.style, c); } } } else if (b && typeof a == "string" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, a)) { this.interactionDOMElement.style.cursor = a; } } }; b.prototype.dispatchEvent = function (a, b, c) { if (!c.stopPropagationHint || a === c.stopsPropagatingAt) { c.currentTarget = a; c.type = b; a.emit(b, c); if (a[b]) { a[b](c); } } }; b.prototype.delayDispatchEvent = function (a, b, c) { this.delayedEvents.push({ displayObject: a, eventString: b, eventData: c }); }; b.prototype.mapPositionToPoint = function (a, b, c) { var d; d = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : { x: 0, y: 0, width: this.interactionDOMElement.width, height: this.interactionDOMElement.height, left: 0, top: 0 }; var e = 1 / this.resolution; a.x = (b - d.left) * (this.interactionDOMElement.width / d.width) * e; a.y = (c - d.top) * (this.interactionDOMElement.height / d.height) * e; }; b.prototype.processInteractive = function (a, b, c, d) { var e = this.search.findHit(a, b, c, d); var f = this.delayedEvents; if (!f.length) { return e; } a.stopPropagationHint = false; var g = f.length; this.delayedEvents = []; for (var h = 0; h < g; h++) { var i = f[h]; var j = i.displayObject; var k = i.eventString; var l = i.eventData; if (l.stopsPropagatingAt === j) { l.stopPropagationHint = true; } this.dispatchEvent(j, k, l); } return e; }; b.prototype.onPointerDown = function (a) { if (!this.supportsTouchEvents || a.pointerType !== "touch") { var b = this.normalizeToPointerData(a); if (this.autoPreventDefault && b[0].isNormalized && (a.cancelable || !("cancelable" in a))) { a.preventDefault(); } for (var c = b.length, d = 0; d < c; d++) { var e = b[d]; var f = this.getInteractionDataForPointerId(e); var g = this.configureInteractionEventForDOMEvent(this.eventData, e, f); g.data.originalEvent = a; this.processInteractive(g, this.lastObjectRendered, this.processPointerDown, true); this.emit("pointerdown", g); if (e.pointerType === "touch") { this.emit("touchstart", g); } else if (e.pointerType === "mouse" || e.pointerType === "pen") { var h = e.button === 2; this.emit(h ? "rightdown" : "mousedown", this.eventData); } } } }; b.prototype.processPointerDown = function (a, b, c) { var d = a.data; var e = a.data.identifier; if (c) { b.trackedPointers[e] ||= new nc(e); this.dispatchEvent(b, "pointerdown", a); if (d.pointerType === "touch") { this.dispatchEvent(b, "touchstart", a); } else if (d.pointerType === "mouse" || d.pointerType === "pen") { var f = d.button === 2; if (f) { b.trackedPointers[e].rightDown = true; } else { b.trackedPointers[e].leftDown = true; } this.dispatchEvent(b, f ? "rightdown" : "mousedown", a); } } }; b.prototype.onPointerComplete = function (a, b, c) { for (var d = this.normalizeToPointerData(a), e = d.length, f = a.target !== this.interactionDOMElement ? "outside" : "", g = 0; g < e; g++) { var h = d[g]; var i = this.getInteractionDataForPointerId(h); var j = this.configureInteractionEventForDOMEvent(this.eventData, h, i); j.data.originalEvent = a; this.processInteractive(j, this.lastObjectRendered, c, b || !f); this.emit(b ? "pointercancel" : "pointerup" + f, j); if (h.pointerType === "mouse" || h.pointerType === "pen") { var k = h.button === 2; this.emit(k ? "rightup" + f : "mouseup" + f, j); } else if (h.pointerType === "touch") { this.emit(b ? "touchcancel" : "touchend" + f, j); this.releaseInteractionDataForPointerId(h.pointerId); } } }; b.prototype.onPointerCancel = function (a) { if (!this.supportsTouchEvents || a.pointerType !== "touch") { this.onPointerComplete(a, true, this.processPointerCancel); } }; b.prototype.processPointerCancel = function (a, b) { var c = a.data; var d = a.data.identifier; if (b.trackedPointers[d] !== undefined) { delete b.trackedPointers[d]; this.dispatchEvent(b, "pointercancel", a); if (c.pointerType === "touch") { this.dispatchEvent(b, "touchcancel", a); } } }; b.prototype.onPointerUp = function (a) { if (!this.supportsTouchEvents || a.pointerType !== "touch") { this.onPointerComplete(a, false, this.processPointerUp); } }; b.prototype.processPointerUp = function (a, b, c) { var d = a.data; var e = a.data.identifier; var f = b.trackedPointers[e]; var g = d.pointerType === "touch"; var h = d.pointerType === "mouse" || d.pointerType === "pen"; var i = false; if (h) { var j = d.button === 2; var k = nc.FLAGS; var l = j ? k.RIGHT_DOWN : k.LEFT_DOWN; var m = f !== undefined && f.flags & l; if (c) { this.dispatchEvent(b, j ? "rightup" : "mouseup", a); if (m) { this.dispatchEvent(b, j ? "rightclick" : "click", a); i = true; } } else if (m) { this.dispatchEvent(b, j ? "rightupoutside" : "mouseupoutside", a); } if (f) { if (j) { f.rightDown = false; } else { f.leftDown = false; } } } if (c) { this.dispatchEvent(b, "pointerup", a); if (g) { this.dispatchEvent(b, "touchend", a); } if (f) { if (!h || !!i) { this.dispatchEvent(b, "pointertap", a); } if (g) { this.dispatchEvent(b, "tap", a); f.over = false; } } } else if (f) { this.dispatchEvent(b, "pointerupoutside", a); if (g) { this.dispatchEvent(b, "touchendoutside", a); } } if (f && f.none) { delete b.trackedPointers[e]; } }; b.prototype.onPointerMove = function (a) { if (!this.supportsTouchEvents || a.pointerType !== "touch") { var b = this.normalizeToPointerData(a); if (b[0].pointerType === "mouse" || b[0].pointerType === "pen") { this._didMove = true; this.cursor = null; } for (var c = b.length, d = 0; d < c; d++) { var e = b[d]; var f = this.getInteractionDataForPointerId(e); var g = this.configureInteractionEventForDOMEvent(this.eventData, e, f); g.data.originalEvent = a; this.processInteractive(g, this.lastObjectRendered, this.processPointerMove, true); this.emit("pointermove", g); if (e.pointerType === "touch") { this.emit("touchmove", g); } if (e.pointerType === "mouse" || e.pointerType === "pen") { this.emit("mousemove", g); } } if (b[0].pointerType === "mouse") { this.setCursorMode(this.cursor); } } }; b.prototype.processPointerMove = function (a, b, c) { var d = a.data; var e = d.pointerType === "touch"; var f = d.pointerType === "mouse" || d.pointerType === "pen"; if (f) { this.processPointerOverOut(a, b, c); } if (!this.moveWhenInside || !!c) { this.dispatchEvent(b, "pointermove", a); if (e) { this.dispatchEvent(b, "touchmove", a); } if (f) { this.dispatchEvent(b, "mousemove", a); } } }; b.prototype.onPointerOut = function (a) { if (!this.supportsTouchEvents || a.pointerType !== "touch") { var b = this.normalizeToPointerData(a)[0]; if (b.pointerType === "mouse") { this.mouseOverRenderer = false; this.setCursorMode(null); } var c = this.getInteractionDataForPointerId(b); var d = this.configureInteractionEventForDOMEvent(this.eventData, b, c); d.data.originalEvent = b; this.processInteractive(d, this.lastObjectRendered, this.processPointerOverOut, false); this.emit("pointerout", d); if (b.pointerType === "mouse" || b.pointerType === "pen") { this.emit("mouseout", d); } else { this.releaseInteractionDataForPointerId(c.identifier); } } }; b.prototype.processPointerOverOut = function (a, b, c) { var d = a.data; var e = a.data.identifier; var f = d.pointerType === "mouse" || d.pointerType === "pen"; var g = b.trackedPointers[e]; if (c && !g) { g = b.trackedPointers[e] = new nc(e); } if (g !== undefined) { if (c && this.mouseOverRenderer) { if (!g.over) { g.over = true; this.delayDispatchEvent(b, "pointerover", a); if (f) { this.delayDispatchEvent(b, "mouseover", a); } } if (f && this.cursor === null) { this.cursor = b.cursor; } } else if (g.over) { g.over = false; this.dispatchEvent(b, "pointerout", this.eventData); if (f) { this.dispatchEvent(b, "mouseout", a); } if (g.none) { delete b.trackedPointers[e]; } } } }; b.prototype.onPointerOver = function (a) { var b = this.normalizeToPointerData(a)[0]; var c = this.getInteractionDataForPointerId(b); var d = this.configureInteractionEventForDOMEvent(this.eventData, b, c); d.data.originalEvent = b; if (b.pointerType === "mouse") { this.mouseOverRenderer = true; } this.emit("pointerover", d); if (b.pointerType === "mouse" || b.pointerType === "pen") { this.emit("mouseover", d); } }; b.prototype.getInteractionDataForPointerId = function (a) { var b; var c = a.pointerId; if (c === 1 || a.pointerType === "mouse") { b = this.mouse; } else if (this.activeInteractionData[c]) { b = this.activeInteractionData[c]; } else { (b = this.interactionDataPool.pop() || new kc()).identifier = c; this.activeInteractionData[c] = b; } b.copyEvent(a); return b; }; b.prototype.releaseInteractionDataForPointerId = function (a) { var b = this.activeInteractionData[a]; if (b) { delete this.activeInteractionData[a]; b.reset(); this.interactionDataPool.push(b); } }; b.prototype.configureInteractionEventForDOMEvent = function (a, b, c) { a.data = c; this.mapPositionToPoint(c.global, b.clientX, b.clientY); if (b.pointerType === "touch") { b.globalX = c.global.x; b.globalY = c.global.y; } c.originalEvent = b; a.reset(); return a; }; b.prototype.normalizeToPointerData = function (a) { var b = []; if (this.supportsTouchEvents && a instanceof TouchEvent) { for (var c = 0, d = a.changedTouches.length; c < d; c++) { var e = a.changedTouches[c]; if (e.button === undefined) { e.button = a.touches.length ? 1 : 0; } if (e.buttons === undefined) { e.buttons = a.touches.length ? 1 : 0; } if (e.isPrimary === undefined) { e.isPrimary = a.touches.length === 1 && a.type === "touchstart"; } if (e.width === undefined) { e.width = e.radiusX || 1; } if (e.height === undefined) { e.height = e.radiusY || 1; } if (e.tiltX === undefined) { e.tiltX = 0; } if (e.tiltY === undefined) { e.tiltY = 0; } if (e.pointerType === undefined) { e.pointerType = "touch"; } if (e.pointerId === undefined) { e.pointerId = e.identifier || 0; } if (e.pressure === undefined) { e.pressure = e.force || 0.5; } if (e.twist === undefined) { e.twist = 0; } if (e.tangentialPressure === undefined) { e.tangentialPressure = 0; } if (e.layerX === undefined) { e.layerX = e.offsetX = e.clientX; } if (e.layerY === undefined) { e.layerY = e.offsetY = e.clientY; } e.isNormalized = true; b.push(e); } } else if (!globalThis.MouseEvent || a instanceof MouseEvent && (!this.supportsPointerEvents || !(a instanceof globalThis.PointerEvent))) { var f = a; if (f.isPrimary === undefined) { f.isPrimary = true; } if (f.width === undefined) { f.width = 1; } if (f.height === undefined) { f.height = 1; } if (f.tiltX === undefined) { f.tiltX = 0; } if (f.tiltY === undefined) { f.tiltY = 0; } if (f.pointerType === undefined) { f.pointerType = "mouse"; } if (f.pointerId === undefined) { f.pointerId = 1; } if (f.pressure === undefined) { f.pressure = 0.5; } if (f.twist === undefined) { f.twist = 0; } if (f.tangentialPressure === undefined) { f.tangentialPressure = 0; } f.isNormalized = true; b.push(f); } else { b.push(a); } return b; }; b.prototype.destroy = function () { this.removeEvents(); this.removeTickerListener(); this.removeAllListeners(); this.renderer = null; this.mouse = null; this.eventData = null; this.interactionDOMElement = null; this.onPointerDown = null; this.processPointerDown = null; this.onPointerUp = null; this.processPointerUp = null; this.onPointerCancel = null; this.processPointerCancel = null; this.onPointerMove = null; this.processPointerMove = null; this.onPointerOut = null; this.processPointerOverOut = null; this.onPointerOver = null; this.search = null; }; return b; }(Ha()); var sc = function () { function a(a) { this.items = []; this._name = a; this._aliasCount = 0; } a.prototype.emit = function (a, b, c, d, e, f, g, h) { if (arguments.length > 8) { throw new Error("max arguments reached"); } var i = this.name; var j = this.items; this._aliasCount++; for (var k = 0, l = j.length; k < l; k++) { j[k][i](a, b, c, d, e, f, g, h); } if (j === this.items) { this._aliasCount--; } return this; }; a.prototype.ensureNonAliasedItems = function () { if (this._aliasCount > 0 && this.items.length > 1) { this._aliasCount = 0; this.items = this.items.slice(0); } }; a.prototype.add = function (a) { if (a[this._name]) { this.ensureNonAliasedItems(); this.remove(a); this.items.push(a); } return this; }; a.prototype.remove = function (a) { var b = this.items.indexOf(a); if (b !== -1) { this.ensureNonAliasedItems(); this.items.splice(b, 1); } return this; }; a.prototype.contains = function (a) { return this.items.indexOf(a) !== -1; }; a.prototype.removeAll = function () { this.ensureNonAliasedItems(); this.items.length = 0; return this; }; a.prototype.destroy = function () { this.removeAll(); this.items = null; this._name = null; }; Object.defineProperty(a.prototype, "empty", { get: function () { return this.items.length === 0; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "name", { get: function () { return this._name; }, enumerable: false, configurable: true }); return a; }(); Object.defineProperties(sc.prototype, { dispatch: { value: sc.prototype.emit }, run: { value: sc.prototype.emit } }); Fa.PREFER_ENV = la.any ? ma.WEBGL : ma.WEBGL2; Fa.STRICT_TEXTURE_CACHE = false; var tc = []; function uc(a, b) { if (!a) { return null; } var c = ""; if (typeof a == "string") { var d = /\.(\w{3,4})(?:$|\?|#)/i.exec(a); if (d) { c = d[1].toLowerCase(); } } for (var e = tc.length - 1; e >= 0; --e) { var f = tc[e]; if (f.test && f.test(a, c)) { return new f(a, b); } } throw new Error("Unrecognized source type to auto-detect Resource"); } function vc(a, b) { vc = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return vc(a, b); } function wc(a, b) { function c() { this.constructor = a; } vc(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } function xc() { xc = Object.assign || function (a) { for (var b, c = arguments, d = 1, e = arguments.length; d < e; d++) { for (var f in b = c[d]) { if (Object.prototype.hasOwnProperty.call(b, f)) { a[f] = b[f]; } } } return a; }; return xc.apply(this, arguments); } var yc = function () { function a(a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } this._width = a; this._height = b; this.destroyed = false; this.internal = false; this.onResize = new sc("setRealSize"); this.onUpdate = new sc("update"); this.onError = new sc("onError"); } a.prototype.bind = function (a) { this.onResize.add(a); this.onUpdate.add(a); this.onError.add(a); if (this._width || this._height) { this.onResize.emit(this._width, this._height); } }; a.prototype.unbind = function (a) { this.onResize.remove(a); this.onUpdate.remove(a); this.onError.remove(a); }; a.prototype.resize = function (a, b) { if (a !== this._width || b !== this._height) { this._width = a; this._height = b; this.onResize.emit(a, b); } }; Object.defineProperty(a.prototype, "valid", { get: function () { return !!this._width && !!this._height; }, enumerable: false, configurable: true }); a.prototype.update = function () { if (!this.destroyed) { this.onUpdate.emit(); } }; a.prototype.load = function () { return Promise.resolve(this); }; Object.defineProperty(a.prototype, "width", { get: function () { return this._width; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "height", { get: function () { return this._height; }, enumerable: false, configurable: true }); a.prototype.style = function (a, b, c) { return false; }; a.prototype.dispose = function () {}; a.prototype.destroy = function () { if (!this.destroyed) { this.destroyed = true; this.dispose(); this.onError.removeAll(); this.onError = null; this.onResize.removeAll(); this.onResize = null; this.onUpdate.removeAll(); this.onUpdate = null; } }; a.test = function (a, b) { return false; }; return a; }(); var zc = function (a) { function b(b, c) { var d = this; var e = c || {}; var f = e.width; var g = e.height; if (!f || !g) { throw new Error("BufferResource width or height invalid"); } (d = a.call(this, f, g) || this).data = b; return d; } wc(b, a); b.prototype.upload = function (a, b, c) { var d = a.gl; d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK); var e = b.realWidth; var f = b.realHeight; if (c.width === e && c.height === f) { d.texSubImage2D(b.target, 0, 0, 0, e, f, b.format, c.type, this.data); } else { c.width = e; c.height = f; d.texImage2D(b.target, 0, c.internalFormat, e, f, 0, b.format, c.type, this.data); } return true; }; b.prototype.dispose = function () { this.data = null; }; b.test = function (a) { return a instanceof Float32Array || a instanceof Uint8Array || a instanceof Uint32Array; }; return b; }(yc); var Ac = { scaleMode: va.NEAREST, format: ra.RGBA, alphaMode: ya.NPM }; var Bc = function (a) { function b(b, c) { if (b === undefined) { b = null; } if (c === undefined) { c = null; } var d = a.call(this) || this; var e = (c = c || {}).alphaMode; var f = c.mipmap; var g = c.anisotropicLevel; var h = c.scaleMode; var i = c.width; var j = c.height; var k = c.wrapMode; var l = c.format; var m = c.type; var n = c.target; var o = c.resolution; var p = c.resourceOptions; if (!!b && !(b instanceof yc)) { (b = uc(b, p)).internal = true; } d.resolution = o || Fa.RESOLUTION; d.width = Math.round((i || 0) * d.resolution) / d.resolution; d.height = Math.round((j || 0) * d.resolution) / d.resolution; d._mipmap = f !== undefined ? f : Fa.MIPMAP_TEXTURES; d.anisotropicLevel = g !== undefined ? g : Fa.ANISOTROPIC_LEVEL; d._wrapMode = k || Fa.WRAP_MODE; d._scaleMode = h !== undefined ? h : Fa.SCALE_MODE; d.format = l || ra.RGBA; d.type = m || ta.UNSIGNED_BYTE; d.target = n || sa.TEXTURE_2D; d.alphaMode = e !== undefined ? e : ya.UNPACK; d.uid = bb(); d.touched = 0; d.isPowerOfTwo = false; d._refreshPOT(); d._glTextures = {}; d.dirtyId = 0; d.dirtyStyleId = 0; d.cacheId = null; d.valid = i > 0 && j > 0; d.textureCacheIds = []; d.destroyed = false; d.resource = null; d._batchEnabled = 0; d._batchLocation = 0; d.parentTextureArray = null; d.setResource(b); return d; } wc(b, a); Object.defineProperty(b.prototype, "realWidth", { get: function () { return Math.round(this.width * this.resolution); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "realHeight", { get: function () { return Math.round(this.height * this.resolution); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "mipmap", { get: function () { return this._mipmap; }, set: function (a) { if (this._mipmap !== a) { this._mipmap = a; this.dirtyStyleId++; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "scaleMode", { get: function () { return this._scaleMode; }, set: function (a) { if (this._scaleMode !== a) { this._scaleMode = a; this.dirtyStyleId++; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "wrapMode", { get: function () { return this._wrapMode; }, set: function (a) { if (this._wrapMode !== a) { this._wrapMode = a; this.dirtyStyleId++; } }, enumerable: false, configurable: true }); b.prototype.setStyle = function (a, b) { var c; if (a !== undefined && a !== this.scaleMode) { this.scaleMode = a; c = true; } if (b !== undefined && b !== this.mipmap) { this.mipmap = b; c = true; } if (c) { this.dirtyStyleId++; } return this; }; b.prototype.setSize = function (a, b, c) { c = c || this.resolution; return this.setRealSize(a * c, b * c, c); }; b.prototype.setRealSize = function (a, b, c) { this.resolution = c || this.resolution; this.width = Math.round(a) / this.resolution; this.height = Math.round(b) / this.resolution; this._refreshPOT(); this.update(); return this; }; b.prototype._refreshPOT = function () { this.isPowerOfTwo = Ya(this.realWidth) && Ya(this.realHeight); }; b.prototype.setResolution = function (a) { var b = this.resolution; if (b !== a) { this.resolution = a; if (this.valid) { this.width = Math.round(this.width * b) / a; this.height = Math.round(this.height * b) / a; this.emit("update", this); } this._refreshPOT(); } return this; }; b.prototype.setResource = function (a) { if (this.resource === a) { return this; } if (this.resource) { throw new Error("Resource can be set only once"); } a.bind(this); this.resource = a; return this; }; b.prototype.update = function () { if (this.valid) { this.dirtyId++; this.dirtyStyleId++; this.emit("update", this); } else if (this.width > 0 && this.height > 0) { this.valid = true; this.emit("loaded", this); this.emit("update", this); } }; b.prototype.onError = function (a) { this.emit("error", this, a); }; b.prototype.destroy = function () { if (this.resource) { this.resource.unbind(this); if (this.resource.internal) { this.resource.destroy(); } this.resource = null; } if (this.cacheId) { delete hb[this.cacheId]; delete gb[this.cacheId]; this.cacheId = null; } this.dispose(); b.removeFromCache(this); this.textureCacheIds = null; this.destroyed = true; }; b.prototype.dispose = function () { this.emit("dispose", this); }; b.prototype.castToBaseTexture = function () { return this; }; b.from = function (a, c, d) { if (d === undefined) { d = Fa.STRICT_TEXTURE_CACHE; } var e = typeof a == "string"; var f = null; if (e) { f = a; } else { if (!a._pixiId) { var g = c && c.pixiIdPrefix || "pixiid"; a._pixiId = g + "_" + bb(); } f = a._pixiId; } var h = hb[f]; if (e && d && !h) { throw new Error("The cacheId \"" + f + "\" does not exist in BaseTextureCache."); } if (!h) { (h = new b(a, c)).cacheId = f; b.addToCache(h, f); } return h; }; b.fromBuffer = function (a, c, d, e) { a = a || new Float32Array(c * d * 4); var f = new zc(a, { width: c, height: d }); var g = a instanceof Float32Array ? ta.FLOAT : ta.UNSIGNED_BYTE; return new b(f, Object.assign(Ac, e || { width: c, height: d, type: g })); }; b.addToCache = function (a, b) { if (b) { if (a.textureCacheIds.indexOf(b) === -1) { a.textureCacheIds.push(b); } if (hb[b]) { console.warn("BaseTexture added to the cache with an id [" + b + "] that already had an entry"); } hb[b] = a; } }; b.removeFromCache = function (a) { if (typeof a == "string") { var b = hb[a]; if (b) { var c = b.textureCacheIds.indexOf(a); if (c > -1) { b.textureCacheIds.splice(c, 1); } delete hb[a]; return b; } } else if (a && a.textureCacheIds) { for (var d = 0; d < a.textureCacheIds.length; ++d) { delete hb[a.textureCacheIds[d]]; } a.textureCacheIds.length = 0; return a; } return null; }; b._globalBatch = 0; return b; }(Ha()); var Cc = function (a) { function b(b, c) { var d = this; var e = c || {}; var f = e.width; var g = e.height; (d = a.call(this, f, g) || this).items = []; d.itemDirtyIds = []; for (var h = 0; h < b; h++) { var i = new Bc(); d.items.push(i); d.itemDirtyIds.push(-2); } d.length = b; d._load = null; d.baseTexture = null; return d; } wc(b, a); b.prototype.initFromArray = function (a, b) { for (var c = 0; c < this.length; c++) { if (a[c]) { if (a[c].castToBaseTexture) { this.addBaseTextureAt(a[c].castToBaseTexture(), c); } else if (a[c] instanceof yc) { this.addResourceAt(a[c], c); } else { this.addResourceAt(uc(a[c], b), c); } } } }; b.prototype.dispose = function () { for (var a = 0, b = this.length; a < b; a++) { this.items[a].destroy(); } this.items = null; this.itemDirtyIds = null; this._load = null; }; b.prototype.addResourceAt = function (a, b) { if (!this.items[b]) { throw new Error("Index " + b + " is out of bounds"); } if (a.valid && !this.valid) { this.resize(a.width, a.height); } this.items[b].setResource(a); return this; }; b.prototype.bind = function (b) { if (this.baseTexture !== null) { throw new Error("Only one base texture per TextureArray is allowed"); } a.prototype.bind.call(this, b); for (var c = 0; c < this.length; c++) { this.items[c].parentTextureArray = b; this.items[c].on("update", b.update, b); } }; b.prototype.unbind = function (b) { a.prototype.unbind.call(this, b); for (var c = 0; c < this.length; c++) { this.items[c].parentTextureArray = null; this.items[c].off("update", b.update, b); } }; b.prototype.load = function () { var a = this; if (this._load) { return this._load; } var b = this.items.map(function (a) { return a.resource; }).filter(function (a) { return a; }).map(function (a) { return a.load(); }); this._load = Promise.all(b).then(function () { var b = a.items[0]; var c = b.realWidth; var d = b.realHeight; a.resize(c, d); return Promise.resolve(a); }); return this._load; }; return b; }(yc); var Dc = function (a) { function b(b, c) { var d; var e; var f = this; var g = c || {}; var h = g.width; var i = g.height; if (Array.isArray(b)) { d = b; e = b.length; } else { e = b; } f = a.call(this, e, { width: h, height: i }) || this; if (d) { f.initFromArray(d, c); } return f; } wc(b, a); b.prototype.addBaseTextureAt = function (a, b) { if (!a.resource) { throw new Error("ArrayResource does not support RenderTexture"); } this.addResourceAt(a.resource, b); return this; }; b.prototype.bind = function (b) { a.prototype.bind.call(this, b); b.target = sa.TEXTURE_2D_ARRAY; }; b.prototype.upload = function (a, b, c) { var d = this; var e = d.length; var f = d.itemDirtyIds; var g = d.items; var h = a.gl; if (c.dirtyId < 0) { h.texImage3D(h.TEXTURE_2D_ARRAY, 0, c.internalFormat, this._width, this._height, e, 0, b.format, c.type, null); } for (var i = 0; i < e; i++) { var j = g[i]; if (f[i] < j.dirtyId) { f[i] = j.dirtyId; if (j.valid) { h.texSubImage3D(h.TEXTURE_2D_ARRAY, 0, 0, 0, i, j.resource.width, j.resource.height, 1, b.format, c.type, j.resource.source); } } } return true; }; return b; }(Cc); var Ec = function (a) { function b(b) { var c = this; var d = b; var e = d.naturalWidth || d.videoWidth || d.width; var f = d.naturalHeight || d.videoHeight || d.height; (c = a.call(this, e, f) || this).source = b; c.noSubImage = false; return c; } wc(b, a); b.crossOrigin = function (a, b, c) { if (c === undefined && b.indexOf("data:") !== 0) { a.crossOrigin = function (a, b) { if (b === undefined) { b = globalThis.location; } if (a.indexOf("data:") === 0) { return ""; } b = b || globalThis.location; eb ||= document.createElement("a"); eb.href = a; var c = La.parse(eb.href); var d = !c.port && b.port === "" || c.port === b.port; if (c.hostname === b.hostname && d && c.protocol === b.protocol) { return ""; } else { return "anonymous"; } }(b); } else if (c !== false) { a.crossOrigin = typeof c == "string" ? c : "anonymous"; } }; b.prototype.upload = function (a, b, c, d) { var e = a.gl; var f = b.realWidth; var g = b.realHeight; if ((d = d || this.source) instanceof HTMLImageElement) { if (!d.complete || d.naturalWidth === 0) { return false; } } else if (d instanceof HTMLVideoElement && d.readyState <= 1) { return false; } e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK); if (this.noSubImage || b.target !== e.TEXTURE_2D || c.width !== f || c.height !== g) { c.width = f; c.height = g; e.texImage2D(b.target, 0, c.internalFormat, b.format, c.type, d); } else { e.texSubImage2D(e.TEXTURE_2D, 0, 0, 0, b.format, c.type, d); } return true; }; b.prototype.update = function () { if (!this.destroyed) { var b = this.source; var c = b.naturalWidth || b.videoWidth || b.width; var d = b.naturalHeight || b.videoHeight || b.height; this.resize(c, d); a.prototype.update.call(this); } }; b.prototype.dispose = function () { this.source = null; }; return b; }(yc); var Fc = function (a) { function b(b) { return a.call(this, b) || this; } wc(b, a); b.test = function (a) { var b = globalThis.OffscreenCanvas; return !!b && !!(a instanceof b) || globalThis.HTMLCanvasElement && a instanceof HTMLCanvasElement; }; return b; }(Ec); var Gc = function (a) { function b(c, d) { var e = this; var f = d || {}; var g = f.width; var h = f.height; var i = f.autoLoad; var j = f.linkBaseTexture; if (c && c.length !== b.SIDES) { throw new Error("Invalid length. Got " + c.length + ", expected 6"); } e = a.call(this, 6, { width: g, height: h }) || this; for (var k = 0; k < b.SIDES; k++) { e.items[k].target = sa.TEXTURE_CUBE_MAP_POSITIVE_X + k; } e.linkBaseTexture = j !== false; if (c) { e.initFromArray(c, d); } if (i !== false) { e.load(); } return e; } wc(b, a); b.prototype.bind = function (b) { a.prototype.bind.call(this, b); b.target = sa.TEXTURE_CUBE_MAP; }; b.prototype.addBaseTextureAt = function (a, b, c) { if (!this.items[b]) { throw new Error("Index " + b + " is out of bounds"); } if (!this.linkBaseTexture || a.parentTextureArray || Object.keys(a._glTextures).length > 0) { if (!a.resource) { throw new Error("CubeResource does not support copying of renderTexture."); } this.addResourceAt(a.resource, b); } else { a.target = sa.TEXTURE_CUBE_MAP_POSITIVE_X + b; a.parentTextureArray = this.baseTexture; this.items[b] = a; } if (a.valid && !this.valid) { this.resize(a.realWidth, a.realHeight); } this.items[b] = a; return this; }; b.prototype.upload = function (a, c, d) { for (var e = this.itemDirtyIds, f = 0; f < b.SIDES; f++) { var g = this.items[f]; if (e[f] < g.dirtyId) { if (g.valid && g.resource) { g.resource.upload(a, g, d); e[f] = g.dirtyId; } else if (e[f] < -1) { a.gl.texImage2D(g.target, 0, d.internalFormat, c.realWidth, c.realHeight, 0, c.format, d.type, null); e[f] = -1; } } } return true; }; b.test = function (a) { return Array.isArray(a) && a.length === b.SIDES; }; b.SIDES = 6; return b; }(Cc); var Hc = function (a) { function b(b, c) { var d = this; c = c || {}; if (!(b instanceof HTMLImageElement)) { var e = new Image(); Ec.crossOrigin(e, b, c.crossorigin); e.src = b; b = e; } d = a.call(this, b) || this; if (!b.complete && d._width && d._height) { d._width = 0; d._height = 0; } d.url = b.src; d._process = null; d.preserveBitmap = false; d.createBitmap = (c.createBitmap !== undefined ? c.createBitmap : Fa.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap; d.alphaMode = typeof c.alphaMode == "number" ? c.alphaMode : null; d.bitmap = null; d._load = null; if (c.autoLoad !== false) { d.load(); } return d; } wc(b, a); b.prototype.load = function (a) { var b = this; if (!this._load) { if (a !== undefined) { this.createBitmap = a; } this._load = new Promise(function (a, c) { var d = b.source; b.url = d.src; function e() { if (!b.destroyed) { d.onload = null; d.onerror = null; b.resize(d.width, d.height); b._load = null; if (b.createBitmap) { a(b.process()); } else { a(b); } } } if (d.complete && d.src) { e(); } else { d.onload = e; d.onerror = function (a) { c(a); b.onError.emit(a); }; } }); } return this._load; }; b.prototype.process = function () { var a = this; var b = this.source; if (this._process !== null) { return this._process; } if (this.bitmap !== null || !globalThis.createImageBitmap) { return Promise.resolve(this); } var c = globalThis.createImageBitmap; var d = !b.crossOrigin || b.crossOrigin === "anonymous"; this._process = fetch(b.src, { mode: d ? "cors" : "no-cors" }).then(function (a) { return a.blob(); }).then(function (d) { return c(d, 0, 0, b.width, b.height, { premultiplyAlpha: a.alphaMode === ya.UNPACK ? "premultiply" : "none" }); }).then(function (b) { if (a.destroyed) { return Promise.reject(); } else { a.bitmap = b; a.update(); a._process = null; return Promise.resolve(a); } }); return this._process; }; b.prototype.upload = function (b, c, d) { if (typeof this.alphaMode == "number") { c.alphaMode = this.alphaMode; } if (!this.createBitmap) { return a.prototype.upload.call(this, b, c, d); } if (!this.bitmap && (this.process(), !this.bitmap)) { return false; } a.prototype.upload.call(this, b, c, d, this.bitmap); if (!this.preserveBitmap) { var e = true; var f = c._glTextures; for (var g in f) { var h = f[g]; if (h !== d && h.dirtyId !== c.dirtyId) { e = false; break; } } if (e) { if (this.bitmap.close) { this.bitmap.close(); } this.bitmap = null; } } return true; }; b.prototype.dispose = function () { this.source.onload = null; this.source.onerror = null; a.prototype.dispose.call(this); if (this.bitmap) { this.bitmap.close(); this.bitmap = null; } this._process = null; this._load = null; }; b.test = function (a) { return typeof a == "string" || a instanceof HTMLImageElement; }; return b; }(Ec); var Ic = function (a) { function b(b, c) { var d = this; c = c || {}; (d = a.call(this, document.createElement("canvas")) || this)._width = 0; d._height = 0; d.svg = b; d.scale = c.scale || 1; d._overrideWidth = c.width; d._overrideHeight = c.height; d._resolve = null; d._crossorigin = c.crossorigin; d._load = null; if (c.autoLoad !== false) { d.load(); } return d; } wc(b, a); b.prototype.load = function () { var a = this; this._load ||= new Promise(function (c) { a._resolve = function () { a.resize(a.source.width, a.source.height); c(a); }; if (b.SVG_XML.test(a.svg.trim())) { if (!btoa) { throw new Error("Your browser doesn't support base64 conversions."); } a.svg = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(a.svg))); } a._loadSvg(); }); return this._load; }; b.prototype._loadSvg = function () { var a = this; var b = new Image(); Ec.crossOrigin(b, this.svg, this._crossorigin); b.src = this.svg; b.onerror = function (c) { if (a._resolve) { b.onerror = null; a.onError.emit(c); } }; b.onload = function () { if (a._resolve) { var c = b.width; var d = b.height; if (!c || !d) { throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them."); } var e = c * a.scale; var f = d * a.scale; if (a._overrideWidth || a._overrideHeight) { e = a._overrideWidth || a._overrideHeight / d * c; f = a._overrideHeight || a._overrideWidth / c * d; } e = Math.round(e); f = Math.round(f); var g = a.source; g.width = e; g.height = f; g._pixiId = "canvas_" + bb(); g.getContext("2d").drawImage(b, 0, 0, c, d, 0, 0, e, f); a._resolve(); a._resolve = null; } }; }; b.getSize = function (a) { var c = b.SVG_SIZE.exec(a); var d = {}; if (c) { d[c[1]] = Math.round(parseFloat(c[3])); d[c[5]] = Math.round(parseFloat(c[7])); } return d; }; b.prototype.dispose = function () { a.prototype.dispose.call(this); this._resolve = null; this._crossorigin = null; }; b.test = function (a, c) { return c === "svg" || typeof a == "string" && /^data:image\/svg\+xml(;(charset=utf8|utf8))?;base64/.test(a) || typeof a == "string" && b.SVG_XML.test(a); }; b.SVG_XML = /^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m; b.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i; return b; }(Ec); var Jc = function (a) { function b(c, d) { var e = this; d = d || {}; if (!(c instanceof HTMLVideoElement)) { var f = document.createElement("video"); f.setAttribute("preload", "auto"); f.setAttribute("webkit-playsinline", ""); f.setAttribute("playsinline", ""); if (typeof c == "string") { c = [c]; } var g = c[0].src || c[0]; Ec.crossOrigin(f, g, d.crossorigin); for (var h = 0; h < c.length; ++h) { var i = document.createElement("source"); var j = c[h]; var k = j.src; var l = j.mime; var m = (k = k || c[h]).split("?").shift().toLowerCase(); var n = m.slice(m.lastIndexOf(".") + 1); l = l || b.MIME_TYPES[n] || "video/" + n; i.src = k; i.type = l; f.appendChild(i); } c = f; } (e = a.call(this, c) || this).noSubImage = true; e._autoUpdate = true; e._isConnectedToTicker = false; e._updateFPS = d.updateFPS || 0; e._msToNextUpdate = 0; e.autoPlay = d.autoPlay !== false; e._load = null; e._resolve = null; e._onCanPlay = e._onCanPlay.bind(e); e._onError = e._onError.bind(e); if (d.autoLoad !== false) { e.load(); } return e; } wc(b, a); b.prototype.update = function (b) { if (!this.destroyed) { var c = ic.shared.elapsedMS * this.source.playbackRate; this._msToNextUpdate = Math.floor(this._msToNextUpdate - c); if (!this._updateFPS || this._msToNextUpdate <= 0) { a.prototype.update.call(this); this._msToNextUpdate = this._updateFPS ? Math.floor(1000 / this._updateFPS) : 0; } } }; b.prototype.load = function () { var a = this; if (this._load) { return this._load; } var b = this.source; if ((b.readyState === b.HAVE_ENOUGH_DATA || b.readyState === b.HAVE_FUTURE_DATA) && b.width && b.height) { b.complete = true; } b.addEventListener("play", this._onPlayStart.bind(this)); b.addEventListener("pause", this._onPlayStop.bind(this)); if (this._isSourceReady()) { this._onCanPlay(); } else { b.addEventListener("canplay", this._onCanPlay); b.addEventListener("canplaythrough", this._onCanPlay); b.addEventListener("error", this._onError, true); } this._load = new Promise(function (c) { if (a.valid) { c(a); } else { a._resolve = c; b.load(); } }); return this._load; }; b.prototype._onError = function (a) { this.source.removeEventListener("error", this._onError, true); this.onError.emit(a); }; b.prototype._isSourcePlaying = function () { var a = this.source; return a.currentTime > 0 && a.paused === false && a.ended === false && a.readyState > 2; }; b.prototype._isSourceReady = function () { var a = this.source; return a.readyState === 3 || a.readyState === 4; }; b.prototype._onPlayStart = function () { if (!this.valid) { this._onCanPlay(); } if (this.autoUpdate && !this._isConnectedToTicker) { ic.shared.add(this.update, this); this._isConnectedToTicker = true; } }; b.prototype._onPlayStop = function () { if (this._isConnectedToTicker) { ic.shared.remove(this.update, this); this._isConnectedToTicker = false; } }; b.prototype._onCanPlay = function () { var a = this.source; a.removeEventListener("canplay", this._onCanPlay); a.removeEventListener("canplaythrough", this._onCanPlay); var b = this.valid; this.resize(a.videoWidth, a.videoHeight); if (!b && this._resolve) { this._resolve(this); this._resolve = null; } if (this._isSourcePlaying()) { this._onPlayStart(); } else if (this.autoPlay) { a.play(); } }; b.prototype.dispose = function () { if (this._isConnectedToTicker) { ic.shared.remove(this.update, this); this._isConnectedToTicker = false; } var b = this.source; if (b) { b.removeEventListener("error", this._onError, true); b.pause(); b.src = ""; b.load(); } a.prototype.dispose.call(this); }; Object.defineProperty(b.prototype, "autoUpdate", { get: function () { return this._autoUpdate; }, set: function (a) { if (a !== this._autoUpdate) { this._autoUpdate = a; if (!this._autoUpdate && this._isConnectedToTicker) { ic.shared.remove(this.update, this); this._isConnectedToTicker = false; } else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) { ic.shared.add(this.update, this); this._isConnectedToTicker = true; } } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "updateFPS", { get: function () { return this._updateFPS; }, set: function (a) { if (a !== this._updateFPS) { this._updateFPS = a; } }, enumerable: false, configurable: true }); b.test = function (a, c) { return globalThis.HTMLVideoElement && a instanceof HTMLVideoElement || b.TYPES.indexOf(c) > -1; }; b.TYPES = ["mp4", "m4v", "webm", "ogg", "ogv", "h264", "avi", "mov"]; b.MIME_TYPES = { ogv: "video/ogg", mov: "video/quicktime", m4v: "video/mp4" }; return b; }(Ec); var Kc = function (a) { function b(b) { return a.call(this, b) || this; } wc(b, a); b.test = function (a) { return !!globalThis.createImageBitmap && a instanceof ImageBitmap; }; return b; }(Ec); tc.push(Hc, Kc, Fc, Jc, Ic, zc, Gc, Dc); var Lc = { "__proto__": null, Resource: yc, BaseImageResource: Ec, INSTALLED: tc, autoDetectResource: uc, AbstractMultiResource: Cc, ArrayResource: Dc, BufferResource: zc, CanvasResource: Fc, CubeResource: Gc, ImageResource: Hc, SVGResource: Ic, VideoResource: Jc, ImageBitmapResource: Kc }; var Mc = function (a) { function b() { return a !== null && a.apply(this, arguments) || this; } wc(b, a); b.prototype.upload = function (a, b, c) { var d = a.gl; d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK); var e = b.realWidth; var f = b.realHeight; if (c.width === e && c.height === f) { d.texSubImage2D(b.target, 0, 0, 0, e, f, b.format, c.type, this.data); } else { c.width = e; c.height = f; d.texImage2D(b.target, 0, c.internalFormat, e, f, 0, b.format, c.type, this.data); } return true; }; return b; }(zc); var Nc = function () { function a(a, b) { this.width = Math.round(a || 100); this.height = Math.round(b || 100); this.stencil = false; this.depth = false; this.dirtyId = 0; this.dirtyFormat = 0; this.dirtySize = 0; this.depthTexture = null; this.colorTextures = []; this.glFramebuffers = {}; this.disposeRunner = new sc("disposeFramebuffer"); this.multisample = Da.NONE; } Object.defineProperty(a.prototype, "colorTexture", { get: function () { return this.colorTextures[0]; }, enumerable: false, configurable: true }); a.prototype.addColorTexture = function (a, b) { if (a === undefined) { a = 0; } this.colorTextures[a] = b || new Bc(null, { scaleMode: va.NEAREST, resolution: 1, mipmap: xa.OFF, width: this.width, height: this.height }); this.dirtyId++; this.dirtyFormat++; return this; }; a.prototype.addDepthTexture = function (a) { this.depthTexture = a || new Bc(new Mc(null, { width: this.width, height: this.height }), { scaleMode: va.NEAREST, resolution: 1, width: this.width, height: this.height, mipmap: xa.OFF, format: ra.DEPTH_COMPONENT, type: ta.UNSIGNED_SHORT }); this.dirtyId++; this.dirtyFormat++; return this; }; a.prototype.enableDepth = function () { this.depth = true; this.dirtyId++; this.dirtyFormat++; return this; }; a.prototype.enableStencil = function () { this.stencil = true; this.dirtyId++; this.dirtyFormat++; return this; }; a.prototype.resize = function (a, b) { a = Math.round(a); b = Math.round(b); if (a !== this.width || b !== this.height) { this.width = a; this.height = b; this.dirtyId++; this.dirtySize++; for (var c = 0; c < this.colorTextures.length; c++) { var d = this.colorTextures[c]; var e = d.resolution; d.setSize(a / e, b / e); } if (this.depthTexture) { e = this.depthTexture.resolution; this.depthTexture.setSize(a / e, b / e); } } }; a.prototype.dispose = function () { this.disposeRunner.emit(this, false); }; a.prototype.destroyDepthTexture = function () { if (this.depthTexture) { this.depthTexture.destroy(); this.depthTexture = null; ++this.dirtyId; ++this.dirtyFormat; } }; return a; }(); var Oc = function (a) { function b(b) { if (b === undefined) { b = {}; } var c = this; if (typeof b == "number") { b = { width: arguments[0], height: arguments[1], scaleMode: arguments[2], resolution: arguments[3] }; } b.width = b.width || 100; b.height = b.height || 100; b.multisample = b.multisample !== undefined ? b.multisample : Da.NONE; (c = a.call(this, null, b) || this).mipmap = xa.OFF; c.valid = true; c.clearColor = [0, 0, 0, 0]; c.framebuffer = new Nc(c.realWidth, c.realHeight).addColorTexture(0, c); c.framebuffer.multisample = b.multisample; c.maskStack = []; c.filterStack = [{}]; return c; } wc(b, a); b.prototype.resize = function (a, b) { this.framebuffer.resize(a * this.resolution, b * this.resolution); this.setRealSize(this.framebuffer.width, this.framebuffer.height); }; b.prototype.dispose = function () { this.framebuffer.dispose(); a.prototype.dispose.call(this); }; b.prototype.destroy = function () { a.prototype.destroy.call(this); this.framebuffer.destroyDepthTexture(); this.framebuffer = null; }; return b; }(Bc); var Pc = function () { function a() { this.x0 = 0; this.y0 = 0; this.x1 = 1; this.y1 = 0; this.x2 = 1; this.y2 = 1; this.x3 = 0; this.y3 = 1; this.uvsFloat32 = new Float32Array(8); } a.prototype.set = function (a, b, c) { var d = b.width; var e = b.height; if (c) { var f = a.width / 2 / d; var g = a.height / 2 / e; var h = a.x / d + f; var i = a.y / e + g; c = Eb.add(c, Eb.NW); this.x0 = h + f * Eb.uX(c); this.y0 = i + g * Eb.uY(c); c = Eb.add(c, 2); this.x1 = h + f * Eb.uX(c); this.y1 = i + g * Eb.uY(c); c = Eb.add(c, 2); this.x2 = h + f * Eb.uX(c); this.y2 = i + g * Eb.uY(c); c = Eb.add(c, 2); this.x3 = h + f * Eb.uX(c); this.y3 = i + g * Eb.uY(c); } else { this.x0 = a.x / d; this.y0 = a.y / e; this.x1 = (a.x + a.width) / d; this.y1 = a.y / e; this.x2 = (a.x + a.width) / d; this.y2 = (a.y + a.height) / e; this.x3 = a.x / d; this.y3 = (a.y + a.height) / e; } this.uvsFloat32[0] = this.x0; this.uvsFloat32[1] = this.y0; this.uvsFloat32[2] = this.x1; this.uvsFloat32[3] = this.y1; this.uvsFloat32[4] = this.x2; this.uvsFloat32[5] = this.y2; this.uvsFloat32[6] = this.x3; this.uvsFloat32[7] = this.y3; }; a.prototype.toString = function () { return "[@pixi/core:TextureUvs x0=" + this.x0 + " y0=" + this.y0 + " x1=" + this.x1 + " y1=" + this.y1 + " x2=" + this.x2 + " y2=" + this.y2 + " x3=" + this.x3 + " y3=" + this.y3 + "]"; }; return a; }(); var Qc = new Pc(); function Rc(a) { a.destroy = function () {}; a.on = function () {}; a.once = function () {}; a.emit = function () {}; } var Sc = function (a) { function b(c, d, e, f, g, h) { var i = a.call(this) || this; i.noFrame = false; if (!d) { i.noFrame = true; d = new qb(0, 0, 1, 1); } if (c instanceof b) { c = c.baseTexture; } i.baseTexture = c; i._frame = d; i.trim = f; i.valid = false; i._uvs = Qc; i.uvMatrix = null; i.orig = e || d; i._rotate = Number(g || 0); if (g === true) { i._rotate = 2; } else if (i._rotate % 2 != 0) { throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually"); } i.defaultAnchor = h ? new ob(h.x, h.y) : new ob(0, 0); i._updateID = 0; i.textureCacheIds = []; if (c.valid) { if (i.noFrame) { if (c.valid) { i.onBaseTextureUpdated(c); } } else { i.frame = d; } } else { c.once("loaded", i.onBaseTextureUpdated, i); } if (i.noFrame) { c.on("update", i.onBaseTextureUpdated, i); } return i; } wc(b, a); b.prototype.update = function () { if (this.baseTexture.resource) { this.baseTexture.resource.update(); } }; b.prototype.onBaseTextureUpdated = function (a) { if (this.noFrame) { if (!this.baseTexture.valid) { return; } this._frame.width = a.width; this._frame.height = a.height; this.valid = true; this.updateUvs(); } else { this.frame = this._frame; } this.emit("update", this); }; b.prototype.destroy = function (a) { if (this.baseTexture) { if (a) { var c = this.baseTexture.resource; if (c && c.url && gb[c.url]) { b.removeFromCache(c.url); } this.baseTexture.destroy(); } this.baseTexture.off("loaded", this.onBaseTextureUpdated, this); this.baseTexture.off("update", this.onBaseTextureUpdated, this); this.baseTexture = null; } this._frame = null; this._uvs = null; this.trim = null; this.orig = null; this.valid = false; b.removeFromCache(this); this.textureCacheIds = null; }; b.prototype.clone = function () { var a = this._frame.clone(); var c = this._frame === this.orig ? a : this.orig.clone(); var d = new b(this.baseTexture, !this.noFrame && a, c, this.trim && this.trim.clone(), this.rotate, this.defaultAnchor); if (this.noFrame) { d._frame = a; } return d; }; b.prototype.updateUvs = function () { if (this._uvs === Qc) { this._uvs = new Pc(); } this._uvs.set(this._frame, this.baseTexture, this.rotate); this._updateID++; }; b.from = function (a, c, d) { if (c === undefined) { c = {}; } if (d === undefined) { d = Fa.STRICT_TEXTURE_CACHE; } var e = typeof a == "string"; var f = null; if (e) { f = a; } else if (a instanceof Bc) { if (!a.cacheId) { var g = c && c.pixiIdPrefix || "pixiid"; a.cacheId = g + "-" + bb(); Bc.addToCache(a, a.cacheId); } f = a.cacheId; } else { if (!a._pixiId) { g = c && c.pixiIdPrefix || "pixiid"; a._pixiId = g + "_" + bb(); } f = a._pixiId; } var h = gb[f]; if (e && d && !h) { throw new Error("The cacheId \"" + f + "\" does not exist in TextureCache."); } if (h || a instanceof Bc) { if (!h && a instanceof Bc) { h = new b(a); b.addToCache(h, f); } } else { c.resolution ||= jb(a); (h = new b(new Bc(a, c))).baseTexture.cacheId = f; Bc.addToCache(h.baseTexture, f); b.addToCache(h, f); } return h; }; b.fromURL = function (a, c) { var d = Object.assign({ autoLoad: false }, c == null ? undefined : c.resourceOptions); var e = b.from(a, Object.assign({ resourceOptions: d }, c), false); var f = e.baseTexture.resource; if (e.baseTexture.valid) { return Promise.resolve(e); } else { return f.load().then(function () { return Promise.resolve(e); }); } }; b.fromBuffer = function (a, c, d, e) { return new b(Bc.fromBuffer(a, c, d, e)); }; b.fromLoader = function (a, c, d, e) { var f = new Bc(a, Object.assign({ scaleMode: Fa.SCALE_MODE, resolution: jb(c) }, e)); var g = f.resource; if (g instanceof Hc) { g.url = c; } var h = new b(f); d ||= c; Bc.addToCache(h.baseTexture, d); b.addToCache(h, d); if (d !== c) { Bc.addToCache(h.baseTexture, c); b.addToCache(h, c); } if (h.baseTexture.valid) { return Promise.resolve(h); } else { return new Promise(function (a) { h.baseTexture.once("loaded", function () { return a(h); }); }); } }; b.addToCache = function (a, b) { if (b) { if (a.textureCacheIds.indexOf(b) === -1) { a.textureCacheIds.push(b); } if (gb[b]) { console.warn("Texture added to the cache with an id [" + b + "] that already had an entry"); } gb[b] = a; } }; b.removeFromCache = function (a) { if (typeof a == "string") { var b = gb[a]; if (b) { var c = b.textureCacheIds.indexOf(a); if (c > -1) { b.textureCacheIds.splice(c, 1); } delete gb[a]; return b; } } else if (a && a.textureCacheIds) { for (var d = 0; d < a.textureCacheIds.length; ++d) { if (gb[a.textureCacheIds[d]] === a) { delete gb[a.textureCacheIds[d]]; } } a.textureCacheIds.length = 0; return a; } return null; }; Object.defineProperty(b.prototype, "resolution", { get: function () { return this.baseTexture.resolution; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "frame", { get: function () { return this._frame; }, set: function (a) { this._frame = a; this.noFrame = false; var b = a.x; var c = a.y; var d = a.width; var e = a.height; var f = b + d > this.baseTexture.width; var g = c + e > this.baseTexture.height; if (f || g) { var h = f && g ? "and" : "or"; var i = "X: " + b + " + " + d + " = " + (b + d) + " > " + this.baseTexture.width; var j = "Y: " + c + " + " + e + " = " + (c + e) + " > " + this.baseTexture.height; throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: " + i + " " + h + " " + j); } this.valid = d && e && this.baseTexture.valid; if (!this.trim && !this.rotate) { this.orig = a; } if (this.valid) { this.updateUvs(); } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "rotate", { get: function () { return this._rotate; }, set: function (a) { this._rotate = a; if (this.valid) { this.updateUvs(); } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "width", { get: function () { return this.orig.width; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return this.orig.height; }, enumerable: false, configurable: true }); b.prototype.castToBaseTexture = function () { return this.baseTexture; }; Object.defineProperty(b, "EMPTY", { get: function () { if (!b._EMPTY) { b._EMPTY = new b(new Bc()); Rc(b._EMPTY); Rc(b._EMPTY.baseTexture); } return b._EMPTY; }, enumerable: false, configurable: true }); Object.defineProperty(b, "WHITE", { get: function () { if (!b._WHITE) { var a = document.createElement("canvas"); var c = a.getContext("2d"); a.width = 16; a.height = 16; c.fillStyle = "white"; c.fillRect(0, 0, 16, 16); b._WHITE = new b(new Bc(new Fc(a))); Rc(b._WHITE); Rc(b._WHITE.baseTexture); } return b._WHITE; }, enumerable: false, configurable: true }); return b; }(Ha()); var Tc = function (a) { function b(b, c) { var d = a.call(this, b, c) || this; d.valid = true; d.filterFrame = null; d.filterPoolKey = null; d.updateUvs(); return d; } wc(b, a); Object.defineProperty(b.prototype, "framebuffer", { get: function () { return this.baseTexture.framebuffer; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "multisample", { get: function () { return this.framebuffer.multisample; }, set: function (a) { this.framebuffer.multisample = a; }, enumerable: false, configurable: true }); b.prototype.resize = function (a, b, c) { if (c === undefined) { c = true; } var d = this.baseTexture.resolution; var e = Math.round(a * d) / d; var f = Math.round(b * d) / d; this.valid = e > 0 && f > 0; this._frame.width = this.orig.width = e; this._frame.height = this.orig.height = f; if (c) { this.baseTexture.resize(e, f); } this.updateUvs(); }; b.prototype.setResolution = function (a) { var b = this.baseTexture; if (b.resolution !== a) { b.setResolution(a); this.resize(b.width, b.height, false); } }; b.create = function (a) { for (var c = arguments, d = [], e = 1; e < arguments.length; e++) { d[e - 1] = c[e]; } if (typeof a == "number") { db("6.0.0", "Arguments (width, height, scaleMode, resolution) have been deprecated."); a = { width: a, height: d[0], scaleMode: d[1], resolution: d[2] }; } return new b(new Oc(a)); }; return b; }(Sc); var Uc = function () { function a(a) { this.texturePool = {}; this.textureOptions = a || {}; this.enableFullScreen = false; this._pixelsWidth = 0; this._pixelsHeight = 0; } a.prototype.createTexture = function (a, b, c) { if (c === undefined) { c = Da.NONE; } var d = new Oc(Object.assign({ width: a, height: b, resolution: 1, multisample: c }, this.textureOptions)); return new Tc(d); }; a.prototype.getOptimalTexture = function (a, b, c, d) { var e; if (c === undefined) { c = 1; } if (d === undefined) { d = Da.NONE; } a = Math.ceil(a * c - 0.000001); b = Math.ceil(b * c - 0.000001); if (this.enableFullScreen && a === this._pixelsWidth && b === this._pixelsHeight) { e = d > 1 ? -d : -1; } else { e = (((a = Xa(a)) & 65535) << 16 | (b = Xa(b)) & 65535) >>> 0; if (d > 1) { e += d * 4294967296; } } this.texturePool[e] ||= []; var f = this.texturePool[e].pop(); f ||= this.createTexture(a, b, d); f.filterPoolKey = e; f.setResolution(c); return f; }; a.prototype.getFilterTexture = function (a, b, c) { var d = this.getOptimalTexture(a.width, a.height, b || a.resolution, c || Da.NONE); d.filterFrame = a.filterFrame; return d; }; a.prototype.returnTexture = function (a) { var b = a.filterPoolKey; a.filterFrame = null; this.texturePool[b].push(a); }; a.prototype.returnFilterTexture = function (a) { this.returnTexture(a); }; a.prototype.clear = function (a) { if (a = a !== false) { for (var b in this.texturePool) { var c = this.texturePool[b]; if (c) { for (var d = 0; d < c.length; d++) { c[d].destroy(true); } } } } this.texturePool = {}; }; a.prototype.setScreenSize = function (a) { if (a.width !== this._pixelsWidth || a.height !== this._pixelsHeight) { this.enableFullScreen = a.width > 0 && a.height > 0; for (var b in this.texturePool) { if (Number(b) < 0) { var c = this.texturePool[b]; if (c) { for (var d = 0; d < c.length; d++) { c[d].destroy(true); } } this.texturePool[b] = []; } } this._pixelsWidth = a.width; this._pixelsHeight = a.height; } }; a.SCREEN_KEY = -1; return a; }(); var Vc = function () { function a(a, b, c, d, e, f, g) { if (b === undefined) { b = 0; } if (c === undefined) { c = false; } if (d === undefined) { d = ta.FLOAT; } this.buffer = a; this.size = b; this.normalized = c; this.type = d; this.stride = e; this.start = f; this.instance = g; } a.prototype.destroy = function () { this.buffer = null; }; a.from = function (b, c, d, e, f) { return new a(b, c, d, e, f); }; return a; }(); var Wc = 0; var Xc = function () { function a(a, b, c) { if (b === undefined) { b = true; } if (c === undefined) { c = false; } this.data = a || new Float32Array(1); this._glBuffers = {}; this._updateID = 0; this.index = c; this.static = b; this.id = Wc++; this.disposeRunner = new sc("disposeBuffer"); } a.prototype.update = function (a) { if (a instanceof Array) { a = new Float32Array(a); } this.data = a || this.data; this._updateID++; }; a.prototype.dispose = function () { this.disposeRunner.emit(this, false); }; a.prototype.destroy = function () { this.dispose(); this.data = null; }; Object.defineProperty(a.prototype, "index", { get: function () { return this.type === Ea.ELEMENT_ARRAY_BUFFER; }, set: function (a) { this.type = a ? Ea.ELEMENT_ARRAY_BUFFER : Ea.ARRAY_BUFFER; }, enumerable: false, configurable: true }); a.from = function (b) { if (b instanceof Array) { b = new Float32Array(b); } return new a(b); }; return a; }(); var Yc = { Float32Array: Float32Array, Uint32Array: Uint32Array, Int32Array: Int32Array, Uint8Array: Uint8Array }; var Zc = { 5126: 4, 5123: 2, 5121: 1 }; var $c = 0; var _c = { Float32Array: Float32Array, Uint32Array: Uint32Array, Int32Array: Int32Array, Uint8Array: Uint8Array, Uint16Array: Uint16Array }; var ad = function () { function a(a, b) { if (a === undefined) { a = []; } if (b === undefined) { b = {}; } this.buffers = a; this.indexBuffer = null; this.attributes = b; this.glVertexArrayObjects = {}; this.id = $c++; this.instanced = false; this.instanceCount = 1; this.disposeRunner = new sc("disposeGeometry"); this.refCount = 0; } a.prototype.addAttribute = function (a, b, c, d, e, f, g, h) { if (c === undefined) { c = 0; } if (d === undefined) { d = false; } if (h === undefined) { h = false; } if (!b) { throw new Error("You must pass a buffer when creating an attribute"); } if (!(b instanceof Xc)) { if (b instanceof Array) { b = new Float32Array(b); } b = new Xc(b); } var i = a.split("|"); if (i.length > 1) { for (var j = 0; j < i.length; j++) { this.addAttribute(i[j], b, c, d, e); } return this; } var k = this.buffers.indexOf(b); if (k === -1) { this.buffers.push(b); k = this.buffers.length - 1; } this.attributes[a] = new Vc(k, c, d, e, f, g, h); this.instanced = this.instanced || h; return this; }; a.prototype.getAttribute = function (a) { return this.attributes[a]; }; a.prototype.getBuffer = function (a) { return this.buffers[this.getAttribute(a).buffer]; }; a.prototype.addIndex = function (a) { if (!(a instanceof Xc)) { if (a instanceof Array) { a = new Uint16Array(a); } a = new Xc(a); } a.type = Ea.ELEMENT_ARRAY_BUFFER; this.indexBuffer = a; if (this.buffers.indexOf(a) === -1) { this.buffers.push(a); } return this; }; a.prototype.getIndex = function () { return this.indexBuffer; }; a.prototype.interleave = function () { if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer) { return this; } var a; var b = []; var c = []; var d = new Xc(); for (a in this.attributes) { var e = this.attributes[a]; var f = this.buffers[e.buffer]; b.push(f.data); c.push(e.size * Zc[e.type] / 4); e.buffer = 0; } d.data = function (a, b) { for (var c = 0, d = 0, e = {}, f = 0; f < a.length; f++) { d += b[f]; c += a[f].length; } var g = new ArrayBuffer(c * 4); var h = null; var i = 0; for (f = 0; f < a.length; f++) { var j = b[f]; var k = a[f]; var l = Wa(k); e[l] ||= new Yc[l](g); h = e[l]; for (var m = 0; m < k.length; m++) { h[(m / j | 0) * d + i + m % j] = k[m]; } i += j; } return new Float32Array(g); }(b, c); a = 0; for (; a < this.buffers.length; a++) { if (this.buffers[a] !== this.indexBuffer) { this.buffers[a].destroy(); } } this.buffers = [d]; if (this.indexBuffer) { this.buffers.push(this.indexBuffer); } return this; }; a.prototype.getSize = function () { for (var a in this.attributes) { var b = this.attributes[a]; return this.buffers[b.buffer].data.length / (b.stride / 4 || b.size); } return 0; }; a.prototype.dispose = function () { this.disposeRunner.emit(this, false); }; a.prototype.destroy = function () { this.dispose(); this.buffers = null; this.indexBuffer = null; this.attributes = null; }; a.prototype.clone = function () { for (var b = new a(), c = 0; c < this.buffers.length; c++) { b.buffers[c] = new Xc(this.buffers[c].data.slice(0)); } for (var c in this.attributes) { var d = this.attributes[c]; b.attributes[c] = new Vc(d.buffer, d.size, d.normalized, d.type, d.stride, d.start, d.instance); } if (this.indexBuffer) { b.indexBuffer = b.buffers[this.buffers.indexOf(this.indexBuffer)]; b.indexBuffer.type = Ea.ELEMENT_ARRAY_BUFFER; } return b; }; a.merge = function (b) { for (var c, d = new a(), e = [], f = [], g = [], h = 0; h < b.length; h++) { c = b[h]; for (var i = 0; i < c.buffers.length; i++) { f[i] = f[i] || 0; f[i] += c.buffers[i].data.length; g[i] = 0; } } for (h = 0; h < c.buffers.length; h++) { e[h] = new _c[Wa(c.buffers[h].data)](f[h]); d.buffers[h] = new Xc(e[h]); } for (h = 0; h < b.length; h++) { c = b[h]; i = 0; c = b[h]; i = 0; for (; i < c.buffers.length; i++) { e[i].set(c.buffers[i].data, g[i]); g[i] += c.buffers[i].data.length; } } d.attributes = c.attributes; if (c.indexBuffer) { d.indexBuffer = d.buffers[c.buffers.indexOf(c.indexBuffer)]; d.indexBuffer.type = Ea.ELEMENT_ARRAY_BUFFER; var j = 0; var k = 0; var l = 0; var m = 0; for (h = 0; h < c.buffers.length; h++) { if (c.buffers[h] !== c.indexBuffer) { m = h; break; } } for (var h in c.attributes) { var n = c.attributes[h]; if ((n.buffer | 0) === m) { k += n.size * Zc[n.type] / 4; } } for (h = 0; h < b.length; h++) { var o = b[h].indexBuffer.data; for (i = 0; i < o.length; i++) { d.indexBuffer.data[i + l] += j; } j += b[h].buffers[m].data.length / k; l += o.length; } } return d; }; return a; }(); var bd = function (a) { function b() { var b = a.call(this) || this; b.addAttribute("aVertexPosition", new Float32Array([0, 0, 1, 0, 1, 1, 0, 1])).addIndex([0, 1, 3, 2]); return b; } wc(b, a); return b; }(ad); var cd = function (a) { function b() { var b = a.call(this) || this; b.vertices = new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]); b.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]); b.vertexBuffer = new Xc(b.vertices); b.uvBuffer = new Xc(b.uvs); b.addAttribute("aVertexPosition", b.vertexBuffer).addAttribute("aTextureCoord", b.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]); return b; } wc(b, a); b.prototype.map = function (a, b) { var c = 0; var d = 0; this.uvs[0] = c; this.uvs[1] = d; this.uvs[2] = c + b.width / a.width; this.uvs[3] = d; this.uvs[4] = c + b.width / a.width; this.uvs[5] = d + b.height / a.height; this.uvs[6] = c; this.uvs[7] = d + b.height / a.height; c = b.x; d = b.y; this.vertices[0] = c; this.vertices[1] = d; this.vertices[2] = c + b.width; this.vertices[3] = d; this.vertices[4] = c + b.width; this.vertices[5] = d + b.height; this.vertices[6] = c; this.vertices[7] = d + b.height; this.invalidate(); return this; }; b.prototype.invalidate = function () { this.vertexBuffer._updateID++; this.uvBuffer._updateID++; return this; }; return b; }(ad); var dd = 0; var ed = function () { function a(a, b, c) { this.group = true; this.syncUniforms = {}; this.dirtyId = 0; this.id = dd++; this.static = !!b; this.ubo = !!c; if (a instanceof Xc) { this.buffer = a; this.buffer.type = Ea.UNIFORM_BUFFER; this.autoManage = false; this.ubo = true; } else { this.uniforms = a; if (this.ubo) { this.buffer = new Xc(new Float32Array(1)); this.buffer.type = Ea.UNIFORM_BUFFER; this.autoManage = true; } } } a.prototype.update = function () { this.dirtyId++; if (!this.autoManage && this.buffer) { this.buffer.update(); } }; a.prototype.add = function (b, c, d) { if (this.ubo) { throw new Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them"); } this.uniforms[b] = new a(c, d); }; a.from = function (b, c, d) { return new a(b, c, d); }; a.uboFrom = function (b, c) { return new a(b, c == null || c, true); }; return a; }(); var fd = function () { function a() { this.renderTexture = null; this.target = null; this.legacy = false; this.resolution = 1; this.multisample = Da.NONE; this.sourceFrame = new qb(); this.destinationFrame = new qb(); this.bindingSourceFrame = new qb(); this.bindingDestinationFrame = new qb(); this.filters = []; this.transform = null; } a.prototype.clear = function () { this.target = null; this.filters = null; this.renderTexture = null; }; return a; }(); var gd = [new ob(), new ob(), new ob(), new ob()]; var hd = new wb(); var id = function () { function a(a) { this.renderer = a; this.defaultFilterStack = [{}]; this.texturePool = new Uc(); this.texturePool.setScreenSize(a.view); this.statePool = []; this.quad = new bd(); this.quadUv = new cd(); this.tempRect = new qb(); this.activeState = {}; this.globalUniforms = new ed({ outputFrame: new qb(), inputSize: new Float32Array(4), inputPixel: new Float32Array(4), inputClamp: new Float32Array(4), resolution: 1, filterArea: new Float32Array(4), filterClamp: new Float32Array(4) }, true); this.forceClear = false; this.useMaxPadding = false; } a.prototype.push = function (a, b) { for (var c, d, e = this.renderer, f = this.defaultFilterStack, g = this.statePool.pop() || new fd(), h = this.renderer.renderTexture, i = b[0].resolution, j = b[0].multisample, k = b[0].padding, l = b[0].autoFit, m = (c = b[0].legacy) === null || c === undefined || c, n = 1; n < b.length; n++) { var o = b[n]; i = Math.min(i, o.resolution); j = Math.min(j, o.multisample); k = this.useMaxPadding ? Math.max(k, o.padding) : k + o.padding; l = l && o.autoFit; m = m || (d = o.legacy) === null || d === undefined || d; } if (f.length === 1) { this.defaultFilterStack[0].renderTexture = h.current; } f.push(g); g.resolution = i; g.multisample = j; g.legacy = m; g.target = a; g.sourceFrame.copyFrom(a.filterArea || a.getBounds(true)); g.sourceFrame.pad(k); var p = this.tempRect.copyFrom(h.sourceFrame); if (e.projection.transform) { this.transformAABB(hd.copyFrom(e.projection.transform).invert(), p); } if (l) { g.sourceFrame.fit(p); if (g.sourceFrame.width <= 0 || g.sourceFrame.height <= 0) { g.sourceFrame.width = 0; g.sourceFrame.height = 0; } } else if (!g.sourceFrame.intersects(p)) { g.sourceFrame.width = 0; g.sourceFrame.height = 0; } this.roundFrame(g.sourceFrame, h.current ? h.current.resolution : e.resolution, h.sourceFrame, h.destinationFrame, e.projection.transform); g.renderTexture = this.getOptimalFilterTexture(g.sourceFrame.width, g.sourceFrame.height, i, j); g.filters = b; g.destinationFrame.width = g.renderTexture.width; g.destinationFrame.height = g.renderTexture.height; var q = this.tempRect; q.x = 0; q.y = 0; q.width = g.sourceFrame.width; q.height = g.sourceFrame.height; g.renderTexture.filterFrame = g.sourceFrame; g.bindingSourceFrame.copyFrom(h.sourceFrame); g.bindingDestinationFrame.copyFrom(h.destinationFrame); g.transform = e.projection.transform; e.projection.transform = null; h.bind(g.renderTexture, g.sourceFrame, q); e.framebuffer.clear(0, 0, 0, 0); }; a.prototype.pop = function () { var a = this.defaultFilterStack; var b = a.pop(); var c = b.filters; this.activeState = b; var d = this.globalUniforms.uniforms; d.outputFrame = b.sourceFrame; d.resolution = b.resolution; var e = d.inputSize; var f = d.inputPixel; var g = d.inputClamp; e[0] = b.destinationFrame.width; e[1] = b.destinationFrame.height; e[2] = 1 / e[0]; e[3] = 1 / e[1]; f[0] = Math.round(e[0] * b.resolution); f[1] = Math.round(e[1] * b.resolution); f[2] = 1 / f[0]; f[3] = 1 / f[1]; g[0] = f[2] * 0.5; g[1] = f[3] * 0.5; g[2] = b.sourceFrame.width * e[2] - f[2] * 0.5; g[3] = b.sourceFrame.height * e[3] - f[3] * 0.5; if (b.legacy) { var h = d.filterArea; h[0] = b.destinationFrame.width; h[1] = b.destinationFrame.height; h[2] = b.sourceFrame.x; h[3] = b.sourceFrame.y; d.filterClamp = d.inputClamp; } this.globalUniforms.update(); var i = a[a.length - 1]; this.renderer.framebuffer.blit(); if (c.length === 1) { c[0].apply(this, b.renderTexture, i.renderTexture, za.BLEND, b); this.returnFilterTexture(b.renderTexture); } else { var j = b.renderTexture; var k = this.getOptimalFilterTexture(j.width, j.height, b.resolution); k.filterFrame = j.filterFrame; var l = 0; for (l = 0; l < c.length - 1; ++l) { if (l === 1 && b.multisample > 1) { (k = this.getOptimalFilterTexture(j.width, j.height, b.resolution)).filterFrame = j.filterFrame; } c[l].apply(this, j, k, za.CLEAR, b); var m = j; j = k; k = m; } c[l].apply(this, j, i.renderTexture, za.BLEND, b); if (l > 1 && b.multisample > 1) { this.returnFilterTexture(b.renderTexture); } this.returnFilterTexture(j); this.returnFilterTexture(k); } b.clear(); this.statePool.push(b); }; a.prototype.bindAndClear = function (a, b) { if (b === undefined) { b = za.CLEAR; } var c = this.renderer; var d = c.renderTexture; var e = c.state; if (a === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) { this.renderer.projection.transform = this.activeState.transform; } else { this.renderer.projection.transform = null; } if (a && a.filterFrame) { var f = this.tempRect; f.x = 0; f.y = 0; f.width = a.filterFrame.width; f.height = a.filterFrame.height; d.bind(a, a.filterFrame, f); } else if (a !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) { d.bind(a); } else { this.renderer.renderTexture.bind(a, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame); } var g = e.stateId & 1 || this.forceClear; if (b === za.CLEAR || b === za.BLIT && g) { this.renderer.framebuffer.clear(0, 0, 0, 0); } }; a.prototype.applyFilter = function (a, b, c, d) { var e = this.renderer; e.state.set(a.state); this.bindAndClear(c, d); a.uniforms.uSampler = b; a.uniforms.filterGlobals = this.globalUniforms; e.shader.bind(a); a.legacy = !!a.program.attributeData.aTextureCoord; if (a.legacy) { this.quadUv.map(b._frame, b.filterFrame); e.geometry.bind(this.quadUv); e.geometry.draw(qa.TRIANGLES); } else { e.geometry.bind(this.quad); e.geometry.draw(qa.TRIANGLE_STRIP); } }; a.prototype.calculateSpriteMatrix = function (a, b) { var c = this.activeState; var d = c.sourceFrame; var e = c.destinationFrame; var f = b._texture.orig; var g = a.set(e.width, 0, 0, e.height, d.x, d.y); var h = b.worldTransform.copyTo(wb.TEMP_MATRIX); h.invert(); g.prepend(h); g.scale(1 / f.width, 1 / f.height); g.translate(b.anchor.x, b.anchor.y); return g; }; a.prototype.destroy = function () { this.renderer = null; this.texturePool.clear(false); }; a.prototype.getOptimalFilterTexture = function (a, b, c, d) { if (c === undefined) { c = 1; } if (d === undefined) { d = Da.NONE; } return this.texturePool.getOptimalTexture(a, b, c, d); }; a.prototype.getFilterTexture = function (a, b, c) { if (typeof a == "number") { var d = a; a = b; b = d; } a = a || this.activeState.renderTexture; var e = this.texturePool.getOptimalTexture(a.width, a.height, b || a.resolution, c || Da.NONE); e.filterFrame = a.filterFrame; return e; }; a.prototype.returnFilterTexture = function (a) { this.texturePool.returnTexture(a); }; a.prototype.emptyPool = function () { this.texturePool.clear(true); }; a.prototype.resize = function () { this.texturePool.setScreenSize(this.renderer.view); }; a.prototype.transformAABB = function (a, b) { var c = gd[0]; var d = gd[1]; var e = gd[2]; var f = gd[3]; c.set(b.left, b.top); d.set(b.left, b.bottom); e.set(b.right, b.top); f.set(b.right, b.bottom); a.apply(c, c); a.apply(d, d); a.apply(e, e); a.apply(f, f); var g = Math.min(c.x, d.x, e.x, f.x); var h = Math.min(c.y, d.y, e.y, f.y); var i = Math.max(c.x, d.x, e.x, f.x); var j = Math.max(c.y, d.y, e.y, f.y); b.x = g; b.y = h; b.width = i - g; b.height = j - h; }; a.prototype.roundFrame = function (a, b, c, d, e) { if (a.width > 0 && a.height > 0 && c.width > 0 && c.height > 0) { if (e) { var f = e.a; var g = e.b; var h = e.c; var i = e.d; if ((Math.abs(g) > 0.0001 || Math.abs(h) > 0.0001) && (Math.abs(f) > 0.0001 || Math.abs(i) > 0.0001)) { return; } } (e = e ? hd.copyFrom(e) : hd.identity()).translate(-c.x, -c.y).scale(d.width / c.width, d.height / c.height).translate(d.x, d.y); this.transformAABB(e, a); a.ceil(b); this.transformAABB(e.invert(), a); } }; return a; }(); var jd = function () { function a(a) { this.renderer = a; } a.prototype.flush = function () {}; a.prototype.destroy = function () { this.renderer = null; }; a.prototype.start = function () {}; a.prototype.stop = function () { this.flush(); }; a.prototype.render = function (a) {}; return a; }(); var kd = function () { function a(a) { this.renderer = a; this.emptyRenderer = new jd(a); this.currentRenderer = this.emptyRenderer; } a.prototype.setObjectRenderer = function (a) { if (this.currentRenderer !== a) { this.currentRenderer.stop(); this.currentRenderer = a; this.currentRenderer.start(); } }; a.prototype.flush = function () { this.setObjectRenderer(this.emptyRenderer); }; a.prototype.reset = function () { this.setObjectRenderer(this.emptyRenderer); }; a.prototype.copyBoundTextures = function (a, b) { for (var c = this.renderer.texture.boundTextures, d = b - 1; d >= 0; --d) { a[d] = c[d] || null; if (a[d]) { a[d]._batchLocation = d; } } }; a.prototype.boundArray = function (a, b, c, d) { for (var e = a.elements, f = a.ids, g = a.count, h = 0, i = 0; i < g; i++) { var j = e[i]; var k = j._batchLocation; if (k >= 0 && k < d && b[k] === j) { f[i] = k; } else { while (h < d) { var l = b[h]; if (!l || l._batchEnabled !== c || l._batchLocation !== h) { f[i] = h; j._batchLocation = h; b[h] = j; break; } h++; } } } }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var ld = 0; var md = function () { function a(a) { this.renderer = a; this.webGLVersion = 1; this.extensions = {}; this.supports = { uint32Indices: false }; this.handleContextLost = this.handleContextLost.bind(this); this.handleContextRestored = this.handleContextRestored.bind(this); a.view.addEventListener("webglcontextlost", this.handleContextLost, false); a.view.addEventListener("webglcontextrestored", this.handleContextRestored, false); } Object.defineProperty(a.prototype, "isLost", { get: function () { return !this.gl || this.gl.isContextLost(); }, enumerable: false, configurable: true }); a.prototype.contextChange = function (a) { this.gl = a; this.renderer.gl = a; this.renderer.CONTEXT_UID = ld++; if (a.isContextLost() && a.getExtension("WEBGL_lose_context")) { a.getExtension("WEBGL_lose_context").restoreContext(); } }; a.prototype.initFromContext = function (a) { this.gl = a; this.validateContext(a); this.renderer.gl = a; this.renderer.CONTEXT_UID = ld++; this.renderer.runners.contextChange.emit(a); }; a.prototype.initFromOptions = function (a) { var b = this.createContext(this.renderer.view, a); this.initFromContext(b); }; a.prototype.createContext = function (a, b) { var c; if (Fa.PREFER_ENV >= ma.WEBGL2) { c = a.getContext("webgl2", b); } if (c) { this.webGLVersion = 2; } else { this.webGLVersion = 1; if (!(c = a.getContext("webgl", b) || a.getContext("experimental-webgl", b))) { throw new Error("This browser does not support WebGL. Try using the canvas renderer"); } } this.gl = c; this.getExtensions(); return this.gl; }; a.prototype.getExtensions = function () { var a = this.gl; var b = { anisotropicFiltering: a.getExtension("EXT_texture_filter_anisotropic"), floatTextureLinear: a.getExtension("OES_texture_float_linear"), s3tc: a.getExtension("WEBGL_compressed_texture_s3tc"), s3tc_sRGB: a.getExtension("WEBGL_compressed_texture_s3tc_srgb"), etc: a.getExtension("WEBGL_compressed_texture_etc"), etc1: a.getExtension("WEBGL_compressed_texture_etc1"), pvrtc: a.getExtension("WEBGL_compressed_texture_pvrtc") || a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"), atc: a.getExtension("WEBGL_compressed_texture_atc"), astc: a.getExtension("WEBGL_compressed_texture_astc") }; if (this.webGLVersion === 1) { Object.assign(this.extensions, b, { drawBuffers: a.getExtension("WEBGL_draw_buffers"), depthTexture: a.getExtension("WEBGL_depth_texture"), loseContext: a.getExtension("WEBGL_lose_context"), vertexArrayObject: a.getExtension("OES_vertex_array_object") || a.getExtension("MOZ_OES_vertex_array_object") || a.getExtension("WEBKIT_OES_vertex_array_object"), uint32ElementIndex: a.getExtension("OES_element_index_uint"), floatTexture: a.getExtension("OES_texture_float"), floatTextureLinear: a.getExtension("OES_texture_float_linear"), textureHalfFloat: a.getExtension("OES_texture_half_float"), textureHalfFloatLinear: a.getExtension("OES_texture_half_float_linear") }); } else if (this.webGLVersion === 2) { Object.assign(this.extensions, b, { colorBufferFloat: a.getExtension("EXT_color_buffer_float") }); } }; a.prototype.handleContextLost = function (a) { a.preventDefault(); }; a.prototype.handleContextRestored = function () { this.renderer.runners.contextChange.emit(this.gl); }; a.prototype.destroy = function () { var a = this.renderer.view; this.renderer = null; a.removeEventListener("webglcontextlost", this.handleContextLost); a.removeEventListener("webglcontextrestored", this.handleContextRestored); this.gl.useProgram(null); if (this.extensions.loseContext) { this.extensions.loseContext.loseContext(); } }; a.prototype.postrender = function () { if (this.renderer.renderingToScreen) { this.gl.flush(); } }; a.prototype.validateContext = function (a) { var b = a.getContextAttributes(); var c = "WebGL2RenderingContext" in globalThis && a instanceof globalThis.WebGL2RenderingContext; if (c) { this.webGLVersion = 2; } if (!b.stencil) { console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly"); } var d = c || !!a.getExtension("OES_element_index_uint"); this.supports.uint32Indices = d; if (!d) { console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly"); } }; return a; }(); function nd(a) { this.framebuffer = a; this.stencil = null; this.dirtyId = -1; this.dirtyFormat = -1; this.dirtySize = -1; this.multisample = Da.NONE; this.msaaBuffer = null; this.blitFramebuffer = null; this.mipLevel = 0; } var od = new qb(); var pd = function () { function a(a) { this.renderer = a; this.managedFramebuffers = []; this.unknownFramebuffer = new Nc(10, 10); this.msaaSamples = null; } a.prototype.contextChange = function () { var a = this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; this.current = this.unknownFramebuffer; this.viewport = new qb(); this.hasMRT = true; this.writeDepthTexture = true; this.disposeAll(true); if (this.renderer.context.webGLVersion === 1) { var b = this.renderer.context.extensions.drawBuffers; var c = this.renderer.context.extensions.depthTexture; if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) { b = null; c = null; } if (b) { a.drawBuffers = function (a) { return b.drawBuffersWEBGL(a); }; } else { this.hasMRT = false; a.drawBuffers = function () {}; } if (!c) { this.writeDepthTexture = false; } } else { this.msaaSamples = a.getInternalformatParameter(a.RENDERBUFFER, a.RGBA8, a.SAMPLES); } }; a.prototype.bind = function (a, b, c) { if (c === undefined) { c = 0; } var d = this.gl; if (a) { var e = a.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(a); if (this.current !== a) { this.current = a; d.bindFramebuffer(d.FRAMEBUFFER, e.framebuffer); } if (e.mipLevel !== c) { a.dirtyId++; a.dirtyFormat++; e.mipLevel = c; } if (e.dirtyId !== a.dirtyId) { e.dirtyId = a.dirtyId; if (e.dirtyFormat !== a.dirtyFormat) { e.dirtyFormat = a.dirtyFormat; e.dirtySize = a.dirtySize; this.updateFramebuffer(a, c); } else if (e.dirtySize !== a.dirtySize) { e.dirtySize = a.dirtySize; this.resizeFramebuffer(a); } } for (var f = 0; f < a.colorTextures.length; f++) { var g = a.colorTextures[f]; this.renderer.texture.unbind(g.parentTextureArray || g); } if (a.depthTexture) { this.renderer.texture.unbind(a.depthTexture); } if (b) { var h = b.width >> c; var i = b.height >> c; var j = h / b.width; this.setViewport(b.x * j, b.y * j, h, i); } else { h = a.width >> c; i = a.height >> c; this.setViewport(0, 0, h, i); } } else { if (this.current) { this.current = null; d.bindFramebuffer(d.FRAMEBUFFER, null); } if (b) { this.setViewport(b.x, b.y, b.width, b.height); } else { this.setViewport(0, 0, this.renderer.width, this.renderer.height); } } }; a.prototype.setViewport = function (a, b, c, d) { var e = this.viewport; a = Math.round(a); b = Math.round(b); c = Math.round(c); d = Math.round(d); if (e.width !== c || e.height !== d || e.x !== a || e.y !== b) { e.x = a; e.y = b; e.width = c; e.height = d; this.gl.viewport(a, b, c, d); } }; Object.defineProperty(a.prototype, "size", { get: function () { if (this.current) { return { x: 0, y: 0, width: this.current.width, height: this.current.height }; } else { return { x: 0, y: 0, width: this.renderer.width, height: this.renderer.height }; } }, enumerable: false, configurable: true }); a.prototype.clear = function (a, b, c, d, e) { if (e === undefined) { e = oa.COLOR | oa.DEPTH; } var f = this.gl; f.clearColor(a, b, c, d); f.clear(e); }; a.prototype.initFramebuffer = function (a) { var b = this.gl; var c = new nd(b.createFramebuffer()); c.multisample = this.detectSamples(a.multisample); a.glFramebuffers[this.CONTEXT_UID] = c; this.managedFramebuffers.push(a); a.disposeRunner.add(this); return c; }; a.prototype.resizeFramebuffer = function (a) { var b = this.gl; var c = a.glFramebuffers[this.CONTEXT_UID]; if (c.msaaBuffer) { b.bindRenderbuffer(b.RENDERBUFFER, c.msaaBuffer); b.renderbufferStorageMultisample(b.RENDERBUFFER, c.multisample, b.RGBA8, a.width, a.height); } if (c.stencil) { b.bindRenderbuffer(b.RENDERBUFFER, c.stencil); if (c.msaaBuffer) { b.renderbufferStorageMultisample(b.RENDERBUFFER, c.multisample, b.DEPTH24_STENCIL8, a.width, a.height); } else { b.renderbufferStorage(b.RENDERBUFFER, b.DEPTH_STENCIL, a.width, a.height); } } var d = a.colorTextures; var e = d.length; if (!b.drawBuffers) { e = Math.min(e, 1); } for (var f = 0; f < e; f++) { var g = d[f]; var h = g.parentTextureArray || g; this.renderer.texture.bind(h, 0); } if (a.depthTexture && this.writeDepthTexture) { this.renderer.texture.bind(a.depthTexture, 0); } }; a.prototype.updateFramebuffer = function (a, b) { var c = this.gl; var d = a.glFramebuffers[this.CONTEXT_UID]; var e = a.colorTextures; var f = e.length; if (!c.drawBuffers) { f = Math.min(f, 1); } if (d.multisample > 1 && this.canMultisampleFramebuffer(a)) { d.msaaBuffer = d.msaaBuffer || c.createRenderbuffer(); c.bindRenderbuffer(c.RENDERBUFFER, d.msaaBuffer); c.renderbufferStorageMultisample(c.RENDERBUFFER, d.multisample, c.RGBA8, a.width, a.height); c.framebufferRenderbuffer(c.FRAMEBUFFER, c.COLOR_ATTACHMENT0, c.RENDERBUFFER, d.msaaBuffer); } else if (d.msaaBuffer) { c.deleteRenderbuffer(d.msaaBuffer); d.msaaBuffer = null; if (d.blitFramebuffer) { d.blitFramebuffer.dispose(); d.blitFramebuffer = null; } } for (var g = [], h = 0; h < f; h++) { var i = e[h]; var j = i.parentTextureArray || i; this.renderer.texture.bind(j, 0); if (h !== 0 || !d.msaaBuffer) { c.framebufferTexture2D(c.FRAMEBUFFER, c.COLOR_ATTACHMENT0 + h, i.target, j._glTextures[this.CONTEXT_UID].texture, b); g.push(c.COLOR_ATTACHMENT0 + h); } } if (g.length > 1) { c.drawBuffers(g); } if (a.depthTexture && this.writeDepthTexture) { var k = a.depthTexture; this.renderer.texture.bind(k, 0); c.framebufferTexture2D(c.FRAMEBUFFER, c.DEPTH_ATTACHMENT, c.TEXTURE_2D, k._glTextures[this.CONTEXT_UID].texture, b); } if (!a.stencil && !a.depth || a.depthTexture && this.writeDepthTexture) { if (d.stencil) { c.deleteRenderbuffer(d.stencil); d.stencil = null; } } else { d.stencil = d.stencil || c.createRenderbuffer(); c.bindRenderbuffer(c.RENDERBUFFER, d.stencil); if (d.msaaBuffer) { c.renderbufferStorageMultisample(c.RENDERBUFFER, d.multisample, c.DEPTH24_STENCIL8, a.width, a.height); } else { c.renderbufferStorage(c.RENDERBUFFER, c.DEPTH_STENCIL, a.width, a.height); } c.framebufferRenderbuffer(c.FRAMEBUFFER, c.DEPTH_STENCIL_ATTACHMENT, c.RENDERBUFFER, d.stencil); } }; a.prototype.canMultisampleFramebuffer = function (a) { return this.renderer.context.webGLVersion !== 1 && a.colorTextures.length <= 1 && !a.depthTexture; }; a.prototype.detectSamples = function (a) { var b = this.msaaSamples; var c = Da.NONE; if (a <= 1 || b === null) { return c; } for (var d = 0; d < b.length; d++) { if (b[d] <= a) { c = b[d]; break; } } if (c === 1) { c = Da.NONE; } return c; }; a.prototype.blit = function (a, b, c) { var d = this; var e = d.current; var f = d.renderer; var g = d.gl; var h = d.CONTEXT_UID; if (f.context.webGLVersion === 2 && e) { var i = e.glFramebuffers[h]; if (i) { if (!a) { if (!i.msaaBuffer) { return; } var j = e.colorTextures[0]; if (!j) { return; } if (!i.blitFramebuffer) { i.blitFramebuffer = new Nc(e.width, e.height); i.blitFramebuffer.addColorTexture(0, j); } if ((a = i.blitFramebuffer).colorTextures[0] !== j) { a.colorTextures[0] = j; a.dirtyId++; a.dirtyFormat++; } if (a.width !== e.width || a.height !== e.height) { a.width = e.width; a.height = e.height; a.dirtyId++; a.dirtySize++; } } if (!b) { (b = od).width = e.width; b.height = e.height; } c ||= b; var k = b.width === c.width && b.height === c.height; this.bind(a); g.bindFramebuffer(g.READ_FRAMEBUFFER, i.framebuffer); g.blitFramebuffer(b.left, b.top, b.right, b.bottom, c.left, c.top, c.right, c.bottom, g.COLOR_BUFFER_BIT, k ? g.NEAREST : g.LINEAR); } } }; a.prototype.disposeFramebuffer = function (a, b) { var c = a.glFramebuffers[this.CONTEXT_UID]; var d = this.gl; if (c) { delete a.glFramebuffers[this.CONTEXT_UID]; var e = this.managedFramebuffers.indexOf(a); if (e >= 0) { this.managedFramebuffers.splice(e, 1); } a.disposeRunner.remove(this); if (!b) { d.deleteFramebuffer(c.framebuffer); if (c.msaaBuffer) { d.deleteRenderbuffer(c.msaaBuffer); } if (c.stencil) { d.deleteRenderbuffer(c.stencil); } } if (c.blitFramebuffer) { c.blitFramebuffer.dispose(); } } }; a.prototype.disposeAll = function (a) { var b = this.managedFramebuffers; this.managedFramebuffers = []; for (var c = 0; c < b.length; c++) { this.disposeFramebuffer(b[c], a); } }; a.prototype.forceStencil = function () { var a = this.current; if (a) { var b = a.glFramebuffers[this.CONTEXT_UID]; if (b && !b.stencil) { a.stencil = true; var c = a.width; var d = a.height; var e = this.gl; var f = e.createRenderbuffer(); e.bindRenderbuffer(e.RENDERBUFFER, f); if (b.msaaBuffer) { e.renderbufferStorageMultisample(e.RENDERBUFFER, b.multisample, e.DEPTH24_STENCIL8, c, d); } else { e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, c, d); } b.stencil = f; e.framebufferRenderbuffer(e.FRAMEBUFFER, e.DEPTH_STENCIL_ATTACHMENT, e.RENDERBUFFER, f); } } }; a.prototype.reset = function () { this.current = this.unknownFramebuffer; this.viewport = new qb(); }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var qd = { 5126: 4, 5123: 2, 5121: 1 }; var rd = function () { function a(a) { this.renderer = a; this._activeGeometry = null; this._activeVao = null; this.hasVao = true; this.hasInstance = true; this.canUseUInt32ElementIndex = false; this.managedGeometries = {}; } a.prototype.contextChange = function () { this.disposeAll(true); var a = this.gl = this.renderer.gl; var b = this.renderer.context; this.CONTEXT_UID = this.renderer.CONTEXT_UID; if (b.webGLVersion !== 2) { var c = this.renderer.context.extensions.vertexArrayObject; if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) { c = null; } if (c) { a.createVertexArray = function () { return c.createVertexArrayOES(); }; a.bindVertexArray = function (a) { return c.bindVertexArrayOES(a); }; a.deleteVertexArray = function (a) { return c.deleteVertexArrayOES(a); }; } else { this.hasVao = false; a.createVertexArray = function () { return null; }; a.bindVertexArray = function () { return null; }; a.deleteVertexArray = function () { return null; }; } } if (b.webGLVersion !== 2) { var d = a.getExtension("ANGLE_instanced_arrays"); if (d) { a.vertexAttribDivisor = function (a, b) { return d.vertexAttribDivisorANGLE(a, b); }; a.drawElementsInstanced = function (a, b, c, e, f) { return d.drawElementsInstancedANGLE(a, b, c, e, f); }; a.drawArraysInstanced = function (a, b, c, e) { return d.drawArraysInstancedANGLE(a, b, c, e); }; } else { this.hasInstance = false; } } this.canUseUInt32ElementIndex = b.webGLVersion === 2 || !!b.extensions.uint32ElementIndex; }; a.prototype.bind = function (a, b) { b = b || this.renderer.shader.shader; var c = this.gl; var d = a.glVertexArrayObjects[this.CONTEXT_UID]; var e = false; if (!d) { this.managedGeometries[a.id] = a; a.disposeRunner.add(this); a.glVertexArrayObjects[this.CONTEXT_UID] = d = {}; e = true; } var f = d[b.program.id] || this.initGeometryVao(a, b, e); this._activeGeometry = a; if (this._activeVao !== f) { this._activeVao = f; if (this.hasVao) { c.bindVertexArray(f); } else { this.activateVao(a, b.program); } } this.updateBuffers(); }; a.prototype.reset = function () { this.unbind(); }; a.prototype.updateBuffers = function () { for (var a = this._activeGeometry, b = this.renderer.buffer, c = 0; c < a.buffers.length; c++) { var d = a.buffers[c]; b.update(d); } }; a.prototype.checkCompatibility = function (a, b) { var c = a.attributes; var d = b.attributeData; for (var e in d) { if (!c[e]) { throw new Error("shader and geometry incompatible, geometry missing the \"" + e + "\" attribute"); } } }; a.prototype.getSignature = function (a, b) { var c = a.attributes; var d = b.attributeData; var e = ["g", a.id]; for (var f in c) { if (d[f]) { e.push(f, d[f].location); } } return e.join("-"); }; a.prototype.initGeometryVao = function (a, b, c) { if (c === undefined) { c = true; } var d = this.gl; var e = this.CONTEXT_UID; var f = this.renderer.buffer; var g = b.program; if (!g.glPrograms[e]) { this.renderer.shader.generateProgram(b); } this.checkCompatibility(a, g); var h = this.getSignature(a, g); var i = a.glVertexArrayObjects[this.CONTEXT_UID]; var j = i[h]; if (j) { i[g.id] = j; return j; } var k = a.buffers; var l = a.attributes; var m = {}; var n = {}; for (var o in k) { m[o] = 0; n[o] = 0; } for (var o in l) { if (!l[o].size && g.attributeData[o]) { l[o].size = g.attributeData[o].size; } else if (!l[o].size) { console.warn("PIXI Geometry attribute '" + o + "' size cannot be determined (likely the bound shader does not have the attribute)"); } m[l[o].buffer] += l[o].size * qd[l[o].type]; } for (var o in l) { var p = l[o]; var q = p.size; if (p.stride === undefined) { if (m[p.buffer] === q * qd[p.type]) { p.stride = 0; } else { p.stride = m[p.buffer]; } } if (p.start === undefined) { p.start = n[p.buffer]; n[p.buffer] += q * qd[p.type]; } } j = d.createVertexArray(); d.bindVertexArray(j); for (var r = 0; r < k.length; r++) { var s = k[r]; f.bind(s); if (c) { s._glBuffers[e].refCount++; } } this.activateVao(a, g); this._activeVao = j; i[g.id] = j; i[h] = j; return j; }; a.prototype.disposeGeometry = function (a, b) { if (this.managedGeometries[a.id]) { delete this.managedGeometries[a.id]; var c = a.glVertexArrayObjects[this.CONTEXT_UID]; var d = this.gl; var e = a.buffers; var f = this.renderer?.buffer; a.disposeRunner.remove(this); if (c) { if (f) { for (var g = 0; g < e.length; g++) { var h = e[g]._glBuffers[this.CONTEXT_UID]; if (h) { h.refCount--; if (h.refCount === 0 && !b) { f.dispose(e[g], b); } } } } if (!b) { for (var i in c) { if (i[0] === "g") { var j = c[i]; if (this._activeVao === j) { this.unbind(); } d.deleteVertexArray(j); } } } delete a.glVertexArrayObjects[this.CONTEXT_UID]; } } }; a.prototype.disposeAll = function (a) { for (var b = Object.keys(this.managedGeometries), c = 0; c < b.length; c++) { this.disposeGeometry(this.managedGeometries[b[c]], a); } }; a.prototype.activateVao = function (a, b) { var c = this.gl; var d = this.CONTEXT_UID; var e = this.renderer.buffer; var f = a.buffers; var g = a.attributes; if (a.indexBuffer) { e.bind(a.indexBuffer); } var h = null; for (var i in g) { var j = g[i]; var k = f[j.buffer]; var l = k._glBuffers[d]; if (b.attributeData[i]) { if (h !== l) { e.bind(k); h = l; } var m = b.attributeData[i].location; c.enableVertexAttribArray(m); c.vertexAttribPointer(m, j.size, j.type || c.FLOAT, j.normalized, j.stride, j.start); if (j.instance) { if (!this.hasInstance) { throw new Error("geometry error, GPU Instancing is not supported on this device"); } c.vertexAttribDivisor(m, 1); } } } }; a.prototype.draw = function (a, b, c, d) { var e = this.gl; var f = this._activeGeometry; if (f.indexBuffer) { var g = f.indexBuffer.data.BYTES_PER_ELEMENT; var h = g === 2 ? e.UNSIGNED_SHORT : e.UNSIGNED_INT; if (g === 2 || g === 4 && this.canUseUInt32ElementIndex) { if (f.instanced) { e.drawElementsInstanced(a, b || f.indexBuffer.data.length, h, (c || 0) * g, d || 1); } else { e.drawElements(a, b || f.indexBuffer.data.length, h, (c || 0) * g); } } else { console.warn("unsupported index buffer type: uint32"); } } else if (f.instanced) { e.drawArraysInstanced(a, c, b || f.getSize(), d || 1); } else { e.drawArrays(a, c, b || f.getSize()); } return this; }; a.prototype.unbind = function () { this.gl.bindVertexArray(null); this._activeVao = null; this._activeGeometry = null; }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var sd = function () { function a(a) { if (a === undefined) { a = null; } this.type = Ca.NONE; this.autoDetect = true; this.maskObject = a || null; this.pooled = false; this.isMaskData = true; this.resolution = null; this.multisample = Fa.FILTER_MULTISAMPLE; this.enabled = true; this._filters = null; this._stencilCounter = 0; this._scissorCounter = 0; this._scissorRect = null; this._scissorRectLocal = null; this._target = null; } Object.defineProperty(a.prototype, "filter", { get: function () { if (this._filters) { return this._filters[0]; } else { return null; } }, set: function (a) { if (a) { if (this._filters) { this._filters[0] = a; } else { this._filters = [a]; } } else { this._filters = null; } }, enumerable: false, configurable: true }); a.prototype.reset = function () { if (this.pooled) { this.maskObject = null; this.type = Ca.NONE; this.autoDetect = true; } this._target = null; this._scissorRectLocal = null; }; a.prototype.copyCountersOrReset = function (a) { if (a) { this._stencilCounter = a._stencilCounter; this._scissorCounter = a._scissorCounter; this._scissorRect = a._scissorRect; } else { this._stencilCounter = 0; this._scissorCounter = 0; this._scissorRect = null; } }; return a; }(); function td(a, b, c) { var d = a.createShader(b); a.shaderSource(d, c); a.compileShader(d); return d; } function ud(a, b) { var c = a.getShaderSource(b).split("\n").map(function (a, b) { return b + ": " + a; }); var d = a.getShaderInfoLog(b); var e = d.split("\n"); var f = {}; var g = e.map(function (a) { return parseFloat(a.replace(/^ERROR\: 0\:([\d]+)\:.*$/, "$1")); }).filter(function (a) { return !!a && !f[a] && !(f[a] = true, 0); }); var h = [""]; g.forEach(function (a) { c[a - 1] = "%c" + c[a - 1] + "%c"; h.push("background: #FF0000; color:#FFFFFF; font-size: 10px", "font-size: 10px"); }); var i = c.join("\n"); h[0] = i; console.error(d); console.groupCollapsed("click to view full shader code"); console.warn.apply(console, h); console.groupEnd(); } function vd(a) { for (var b = new Array(a), c = 0; c < b.length; c++) { b[c] = false; } return b; } function wd(a, b) { switch (a) { case "float": case "int": case "uint": case "sampler2D": case "sampler2DArray": return 0; case "vec2": return new Float32Array(b * 2); case "vec3": return new Float32Array(b * 3); case "vec4": return new Float32Array(b * 4); case "ivec2": return new Int32Array(b * 2); case "ivec3": return new Int32Array(b * 3); case "ivec4": return new Int32Array(b * 4); case "uvec2": return new Uint32Array(b * 2); case "uvec3": return new Uint32Array(b * 3); case "uvec4": return new Uint32Array(b * 4); case "bool": return false; case "bvec2": return vd(b * 2); case "bvec3": return vd(b * 3); case "bvec4": return vd(b * 4); case "mat2": return new Float32Array([1, 0, 0, 1]); case "mat3": return new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); case "mat4": return new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]); } return null; } var xd; var yd = {}; var zd = yd; function Ad(a, b, c) { if (a.substring(0, 9) !== "precision") { var d = b; if (b === Ba.HIGH && c !== Ba.HIGH) { d = Ba.MEDIUM; } return "precision " + d + " float;\n" + a; } if (c !== Ba.HIGH && a.substring(0, 15) === "precision highp") { return a.replace("precision highp", "precision mediump"); } else { return a; } } var Bd = { float: 1, vec2: 2, vec3: 3, vec4: 4, int: 1, ivec2: 2, ivec3: 3, ivec4: 4, uint: 1, uvec2: 2, uvec3: 3, uvec4: 4, bool: 1, bvec2: 2, bvec3: 3, bvec4: 4, mat2: 4, mat3: 9, mat4: 16, sampler2D: 1 }; function Cd(a) { return Bd[a]; } var Dd = null; var Ed = { FLOAT: "float", FLOAT_VEC2: "vec2", FLOAT_VEC3: "vec3", FLOAT_VEC4: "vec4", INT: "int", INT_VEC2: "ivec2", INT_VEC3: "ivec3", INT_VEC4: "ivec4", UNSIGNED_INT: "uint", UNSIGNED_INT_VEC2: "uvec2", UNSIGNED_INT_VEC3: "uvec3", UNSIGNED_INT_VEC4: "uvec4", BOOL: "bool", BOOL_VEC2: "bvec2", BOOL_VEC3: "bvec3", BOOL_VEC4: "bvec4", FLOAT_MAT2: "mat2", FLOAT_MAT3: "mat3", FLOAT_MAT4: "mat4", SAMPLER_2D: "sampler2D", INT_SAMPLER_2D: "sampler2D", UNSIGNED_INT_SAMPLER_2D: "sampler2D", SAMPLER_CUBE: "samplerCube", INT_SAMPLER_CUBE: "samplerCube", UNSIGNED_INT_SAMPLER_CUBE: "samplerCube", SAMPLER_2D_ARRAY: "sampler2DArray", INT_SAMPLER_2D_ARRAY: "sampler2DArray", UNSIGNED_INT_SAMPLER_2D_ARRAY: "sampler2DArray" }; function Fd(a, b) { if (!Dd) { var c = Object.keys(Ed); Dd = {}; for (var d = 0; d < c.length; ++d) { var e = c[d]; Dd[a[e]] = Ed[e]; } } return Dd[b]; } var Gd; var Hd = [{ test: function (a) { return a.type === "float" && a.size === 1; }, code: function (a) { return "\n if(uv[\"" + a + "\"] !== ud[\"" + a + "\"].value)\n {\n ud[\"" + a + "\"].value = uv[\"" + a + "\"]\n gl.uniform1f(ud[\"" + a + "\"].location, uv[\"" + a + "\"])\n }\n "; } }, { test: function (a) { return (a.type === "sampler2D" || a.type === "samplerCube" || a.type === "sampler2DArray") && a.size === 1 && !a.isArray; }, code: function (a) { return "t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"" + a + "\"], t);\n\n if(ud[\"" + a + "\"].value !== t)\n {\n ud[\"" + a + "\"].value = t;\n gl.uniform1i(ud[\"" + a + "\"].location, t);\n; // eslint-disable-line max-len\n }"; } }, { test: function (a, b) { return a.type === "mat3" && a.size === 1 && b.a !== undefined; }, code: function (a) { return "\n gl.uniformMatrix3fv(ud[\"" + a + "\"].location, false, uv[\"" + a + "\"].toArray(true));\n "; }, codeUbo: function (a) { return "\n var " + a + "_matrix = uv." + a + ".toArray(true);\n\n data[offset] = " + a + "_matrix[0];\n data[offset+1] = " + a + "_matrix[1];\n data[offset+2] = " + a + "_matrix[2];\n \n data[offset + 4] = " + a + "_matrix[3];\n data[offset + 5] = " + a + "_matrix[4];\n data[offset + 6] = " + a + "_matrix[5];\n \n data[offset + 8] = " + a + "_matrix[6];\n data[offset + 9] = " + a + "_matrix[7];\n data[offset + 10] = " + a + "_matrix[8];\n "; } }, { test: function (a, b) { return a.type === "vec2" && a.size === 1 && b.x !== undefined; }, code: function (a) { return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n gl.uniform2f(ud[\"" + a + "\"].location, v.x, v.y);\n }"; }, codeUbo: function (a) { return "\n v = uv." + a + ";\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n "; } }, { test: function (a) { return a.type === "vec2" && a.size === 1; }, code: function (a) { return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n gl.uniform2f(ud[\"" + a + "\"].location, v[0], v[1]);\n }\n "; } }, { test: function (a, b) { return a.type === "vec4" && a.size === 1 && b.width !== undefined; }, code: function (a) { return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\n\n if(cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height)\n {\n cv[0] = v.x;\n cv[1] = v.y;\n cv[2] = v.width;\n cv[3] = v.height;\n gl.uniform4f(ud[\"" + a + "\"].location, v.x, v.y, v.width, v.height)\n }"; }, codeUbo: function (a) { return "\n v = uv." + a + ";\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n data[offset+2] = v.width;\n data[offset+3] = v.height;\n "; } }, { test: function (a) { return a.type === "vec4" && a.size === 1; }, code: function (a) { return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\n\n if(cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(ud[\"" + a + "\"].location, v[0], v[1], v[2], v[3])\n }"; } }]; var Id = { float: "\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\n }", vec2: "\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2f(location, v[0], v[1])\n }", vec3: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3f(location, v[0], v[1], v[2])\n }", vec4: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4f(location, v[0], v[1], v[2], v[3]);\n }", int: "\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\n }", ivec2: "\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }", ivec3: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }", ivec4: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }", uint: "\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\n }", uvec2: "\n if (cv[0] !== v[0] || cv[1] !== v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2ui(location, v[0], v[1]);\n }", uvec3: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3ui(location, v[0], v[1], v[2]);\n }", uvec4: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4ui(location, v[0], v[1], v[2], v[3]);\n }", bool: "\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\n }", bvec2: "\n if (cv[0] != v[0] || cv[1] != v[1])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n\n gl.uniform2i(location, v[0], v[1]);\n }", bvec3: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n\n gl.uniform3i(location, v[0], v[1], v[2]);\n }", bvec4: "\n if (cv[0] !== v[0] || cv[1] !== v[1] || cv[2] !== v[2] || cv[3] !== v[3])\n {\n cv[0] = v[0];\n cv[1] = v[1];\n cv[2] = v[2];\n cv[3] = v[3];\n\n gl.uniform4i(location, v[0], v[1], v[2], v[3]);\n }", mat2: "gl.uniformMatrix2fv(location, false, v)", mat3: "gl.uniformMatrix3fv(location, false, v)", mat4: "gl.uniformMatrix4fv(location, false, v)", sampler2D: "gl.uniform1i(location, v)", samplerCube: "gl.uniform1i(location, v)", sampler2DArray: "gl.uniform1i(location, v)" }; var Jd = { float: "gl.uniform1fv(location, v)", vec2: "gl.uniform2fv(location, v)", vec3: "gl.uniform3fv(location, v)", vec4: "gl.uniform4fv(location, v)", mat4: "gl.uniformMatrix4fv(location, false, v)", mat3: "gl.uniformMatrix3fv(location, false, v)", mat2: "gl.uniformMatrix2fv(location, false, v)", int: "gl.uniform1iv(location, v)", ivec2: "gl.uniform2iv(location, v)", ivec3: "gl.uniform3iv(location, v)", ivec4: "gl.uniform4iv(location, v)", uint: "gl.uniform1uiv(location, v)", uvec2: "gl.uniform2uiv(location, v)", uvec3: "gl.uniform3uiv(location, v)", uvec4: "gl.uniform4uiv(location, v)", bool: "gl.uniform1iv(location, v)", bvec2: "gl.uniform2iv(location, v)", bvec3: "gl.uniform3iv(location, v)", bvec4: "gl.uniform4iv(location, v)", sampler2D: "gl.uniform1iv(location, v)", samplerCube: "gl.uniform1iv(location, v)", sampler2DArray: "gl.uniform1iv(location, v)" }; var Kd = ["precision mediump float;", "void main(void){", "float test = 0.1;", "%forloop%", "gl_FragColor = vec4(0.0);", "}"].join("\n"); function Ld(a) { for (var b = "", c = 0; c < a; ++c) { if (c > 0) { b += "\nelse "; } if (c < a - 1) { b += "if(test == " + c + ".0){}"; } } return b; } var Md = 0; var Nd = {}; var Od = function () { function a(b, c, d) { if (d === undefined) { d = "pixi-shader"; } this.id = Md++; this.vertexSrc = b || a.defaultVertexSrc; this.fragmentSrc = c || a.defaultFragmentSrc; this.vertexSrc = this.vertexSrc.trim(); this.fragmentSrc = this.fragmentSrc.trim(); if (this.vertexSrc.substring(0, 8) !== "#version") { d = d.replace(/\s+/g, "-"); if (Nd[d]) { Nd[d]++; d += "-" + Nd[d]; } else { Nd[d] = 1; } this.vertexSrc = "#define SHADER_NAME " + d + "\n" + this.vertexSrc; this.fragmentSrc = "#define SHADER_NAME " + d + "\n" + this.fragmentSrc; this.vertexSrc = Ad(this.vertexSrc, Fa.PRECISION_VERTEX, Ba.HIGH); this.fragmentSrc = Ad(this.fragmentSrc, Fa.PRECISION_FRAGMENT, function () { if (!xd) { xd = Ba.MEDIUM; var a = function () { if (zd === yd || zd && zd.isContextLost()) { var a = document.createElement("canvas"); var b = undefined; if (Fa.PREFER_ENV >= ma.WEBGL2) { b = a.getContext("webgl2", {}); } if (!b) { if (b = a.getContext("webgl", {}) || a.getContext("experimental-webgl", {})) { b.getExtension("WEBGL_draw_buffers"); } else { b = null; } } zd = b; } return zd; }(); if (a && a.getShaderPrecisionFormat) { var b = a.getShaderPrecisionFormat(a.FRAGMENT_SHADER, a.HIGH_FLOAT); xd = b.precision ? Ba.HIGH : Ba.MEDIUM; } } return xd; }()); } this.glPrograms = {}; this.syncUniforms = null; } Object.defineProperty(a, "defaultVertexSrc", { get: function () { return "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}\n"; }, enumerable: false, configurable: true }); Object.defineProperty(a, "defaultFragmentSrc", { get: function () { return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}"; }, enumerable: false, configurable: true }); a.from = function (b, c, d) { var e = b + c; var f = fb[e]; if (!f) { fb[e] = f = new a(b, c, d); } return f; }; return a; }(); var Pd = function () { function a(a, b) { this.uniformBindCount = 0; this.program = a; this.uniformGroup = b ? b instanceof ed ? b : new ed(b) : new ed({}); } a.prototype.checkUniformExists = function (a, b) { if (b.uniforms[a]) { return true; } for (var c in b.uniforms) { var d = b.uniforms[c]; if (d.group && this.checkUniformExists(a, d)) { return true; } } return false; }; a.prototype.destroy = function () { this.uniformGroup = null; }; Object.defineProperty(a.prototype, "uniforms", { get: function () { return this.uniformGroup.uniforms; }, enumerable: false, configurable: true }); a.from = function (b, c, d) { return new a(Od.from(b, c), d); }; return a; }(); var Qd = function () { function a() { this.data = 0; this.blendMode = pa.NORMAL; this.polygonOffset = 0; this.blend = true; this.depthMask = true; } Object.defineProperty(a.prototype, "blend", { get: function () { return !!(this.data & 1); }, set: function (a) { if (!!(this.data & 1) !== a) { this.data ^= 1; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "offsets", { get: function () { return !!(this.data & 2); }, set: function (a) { if (!!(this.data & 2) !== a) { this.data ^= 2; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "culling", { get: function () { return !!(this.data & 4); }, set: function (a) { if (!!(this.data & 4) !== a) { this.data ^= 4; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "depthTest", { get: function () { return !!(this.data & 8); }, set: function (a) { if (!!(this.data & 8) !== a) { this.data ^= 8; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "depthMask", { get: function () { return !!(this.data & 32); }, set: function (a) { if (!!(this.data & 32) !== a) { this.data ^= 32; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "clockwiseFrontFace", { get: function () { return !!(this.data & 16); }, set: function (a) { if (!!(this.data & 16) !== a) { this.data ^= 16; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "blendMode", { get: function () { return this._blendMode; }, set: function (a) { this.blend = a !== pa.NONE; this._blendMode = a; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "polygonOffset", { get: function () { return this._polygonOffset; }, set: function (a) { this.offsets = !!a; this._polygonOffset = a; }, enumerable: false, configurable: true }); a.prototype.toString = function () { return "[@pixi/core:State blendMode=" + this.blendMode + " clockwiseFrontFace=" + this.clockwiseFrontFace + " culling=" + this.culling + " depthMask=" + this.depthMask + " polygonOffset=" + this.polygonOffset + "]"; }; a.for2d = function () { var b = new a(); b.depthTest = false; b.blend = true; return b; }; return a; }(); var Rd = function (a) { function b(c, d, e) { var f = this; var g = Od.from(c || b.defaultVertexSrc, d || b.defaultFragmentSrc); (f = a.call(this, g, e) || this).padding = 0; f.resolution = Fa.FILTER_RESOLUTION; f.multisample = Fa.FILTER_MULTISAMPLE; f.enabled = true; f.autoFit = true; f.state = new Qd(); return f; } wc(b, a); b.prototype.apply = function (a, b, c, d, e) { a.applyFilter(this, b, c, d); }; Object.defineProperty(b.prototype, "blendMode", { get: function () { return this.state.blendMode; }, set: function (a) { this.state.blendMode = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "resolution", { get: function () { return this._resolution; }, set: function (a) { this._resolution = a; }, enumerable: false, configurable: true }); Object.defineProperty(b, "defaultVertexSrc", { get: function () { return "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n"; }, enumerable: false, configurable: true }); Object.defineProperty(b, "defaultFragmentSrc", { get: function () { return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n"; }, enumerable: false, configurable: true }); return b; }(Pd); var Sd = new wb(); var Td = function () { function a(a, b) { this._texture = a; this.mapCoord = new wb(); this.uClampFrame = new Float32Array(4); this.uClampOffset = new Float32Array(2); this._textureID = -1; this._updateID = 0; this.clampOffset = 0; this.clampMargin = b === undefined ? 0.5 : b; this.isSimple = false; } Object.defineProperty(a.prototype, "texture", { get: function () { return this._texture; }, set: function (a) { this._texture = a; this._textureID = -1; }, enumerable: false, configurable: true }); a.prototype.multiplyUvs = function (a, b) { if (b === undefined) { b = a; } for (var c = this.mapCoord, d = 0; d < a.length; d += 2) { var e = a[d]; var f = a[d + 1]; b[d] = e * c.a + f * c.c + c.tx; b[d + 1] = e * c.b + f * c.d + c.ty; } return b; }; a.prototype.update = function (a) { var b = this._texture; if (!b || !b.valid) { return false; } if (!a && this._textureID === b._updateID) { return false; } this._textureID = b._updateID; this._updateID++; var c = b._uvs; this.mapCoord.set(c.x1 - c.x0, c.y1 - c.y0, c.x3 - c.x0, c.y3 - c.y0, c.x0, c.y0); var d = b.orig; var e = b.trim; if (e) { Sd.set(d.width / e.width, 0, 0, d.height / e.height, -e.x / e.width, -e.y / e.height); this.mapCoord.append(Sd); } var f = b.baseTexture; var g = this.uClampFrame; var h = this.clampMargin / f.resolution; var i = this.clampOffset; g[0] = (b._frame.x + h + i) / f.width; g[1] = (b._frame.y + h + i) / f.height; g[2] = (b._frame.x + b._frame.width - h + i) / f.width; g[3] = (b._frame.y + b._frame.height - h + i) / f.height; this.uClampOffset[0] = i / f.realWidth; this.uClampOffset[1] = i / f.realHeight; this.isSimple = b._frame.width === f.width && b._frame.height === f.height && b.rotate === 0; return true; }; return a; }(); var Ud = function (a) { function b(b, c, d) { var e = this; var f = null; if (typeof b != "string" && c === undefined && d === undefined) { f = b; b = undefined; c = undefined; d = undefined; } (e = a.call(this, b || "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 otherMatrix;\n\nvarying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;\n}\n", c || "varying vec2 vMaskCoord;\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform sampler2D mask;\nuniform float alpha;\nuniform float npmAlpha;\nuniform vec4 maskClamp;\n\nvoid main(void)\n{\n float clip = step(3.5,\n step(maskClamp.x, vMaskCoord.x) +\n step(maskClamp.y, vMaskCoord.y) +\n step(vMaskCoord.x, maskClamp.z) +\n step(vMaskCoord.y, maskClamp.w));\n\n vec4 original = texture2D(uSampler, vTextureCoord);\n vec4 masky = texture2D(mask, vMaskCoord);\n float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);\n\n original *= (alphaMul * masky.r * alpha * clip);\n\n gl_FragColor = original;\n}\n", d) || this).maskSprite = f; e.maskMatrix = new wb(); return e; } wc(b, a); Object.defineProperty(b.prototype, "maskSprite", { get: function () { return this._maskSprite; }, set: function (a) { this._maskSprite = a; if (this._maskSprite) { this._maskSprite.renderable = false; } }, enumerable: false, configurable: true }); b.prototype.apply = function (a, b, c, d) { var e = this._maskSprite; var f = e._texture; if (f.valid) { f.uvMatrix ||= new Td(f, 0); f.uvMatrix.update(); this.uniforms.npmAlpha = f.baseTexture.alphaMode ? 0 : 1; this.uniforms.mask = f; this.uniforms.otherMatrix = a.calculateSpriteMatrix(this.maskMatrix, e).prepend(f.uvMatrix.mapCoord); this.uniforms.alpha = e.worldAlpha; this.uniforms.maskClamp = f.uvMatrix.uClampFrame; a.applyFilter(this, b, c, d); } }; return b; }(Rd); var Vd = function () { function a(a) { this.renderer = a; this.enableScissor = true; this.alphaMaskPool = []; this.maskDataPool = []; this.maskStack = []; this.alphaMaskIndex = 0; } a.prototype.setMaskStack = function (a) { this.maskStack = a; this.renderer.scissor.setMaskStack(a); this.renderer.stencil.setMaskStack(a); }; a.prototype.push = function (a, b) { var c = b; if (!c.isMaskData) { var d = this.maskDataPool.pop() || new sd(); d.pooled = true; d.maskObject = b; c = d; } var e = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null; c.copyCountersOrReset(e); if (c.autoDetect) { this.detect(c); } c._target = a; if (c.type !== Ca.SPRITE) { this.maskStack.push(c); } if (c.enabled) { switch (c.type) { case Ca.SCISSOR: this.renderer.scissor.push(c); break; case Ca.STENCIL: this.renderer.stencil.push(c); break; case Ca.SPRITE: c.copyCountersOrReset(null); this.pushSpriteMask(c); } } if (c.type === Ca.SPRITE) { this.maskStack.push(c); } }; a.prototype.pop = function (a) { var b = this.maskStack.pop(); if (b && b._target === a) { if (b.enabled) { switch (b.type) { case Ca.SCISSOR: this.renderer.scissor.pop(); break; case Ca.STENCIL: this.renderer.stencil.pop(b.maskObject); break; case Ca.SPRITE: this.popSpriteMask(b); } } b.reset(); if (b.pooled) { this.maskDataPool.push(b); } if (this.maskStack.length !== 0) { var c = this.maskStack[this.maskStack.length - 1]; if (c.type === Ca.SPRITE && c._filters) { c._filters[0].maskSprite = c.maskObject; } } } }; a.prototype.detect = function (a) { if (a.maskObject.isSprite) { a.type = Ca.SPRITE; } else if (this.enableScissor && this.renderer.scissor.testScissor(a)) { a.type = Ca.SCISSOR; } else { a.type = Ca.STENCIL; } }; a.prototype.pushSpriteMask = function (a) { var b = a.maskObject; var c = a._target; var d = a._filters; if (!(d ||= this.alphaMaskPool[this.alphaMaskIndex])) { d = this.alphaMaskPool[this.alphaMaskIndex] = [new Ud()]; } var e; var f; var g = this.renderer; var h = g.renderTexture; if (h.current) { var i = h.current; e = a.resolution || i.resolution; f = a.multisample ?? i.multisample; } else { e = a.resolution || g.resolution; f = a.multisample ?? g.multisample; } d[0].resolution = e; d[0].multisample = f; d[0].maskSprite = b; var j = c.filterArea; c.filterArea = b.getBounds(true); g.filter.push(c, d); c.filterArea = j; if (!a._filters) { this.alphaMaskIndex++; } }; a.prototype.popSpriteMask = function (a) { this.renderer.filter.pop(); if (a._filters) { a._filters[0].maskSprite = null; } else { this.alphaMaskIndex--; this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null; } }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var Wd = function () { function a(a) { this.renderer = a; this.maskStack = []; this.glConst = 0; } a.prototype.getStackLength = function () { return this.maskStack.length; }; a.prototype.setMaskStack = function (a) { var b = this.renderer.gl; var c = this.getStackLength(); this.maskStack = a; var d = this.getStackLength(); if (d !== c) { if (d === 0) { b.disable(this.glConst); } else { b.enable(this.glConst); this._useCurrent(); } } }; a.prototype._useCurrent = function () {}; a.prototype.destroy = function () { this.renderer = null; this.maskStack = null; }; return a; }(); var Xd = new wb(); var Yd = function (a) { function b(b) { var c = a.call(this, b) || this; c.glConst = WebGLRenderingContext.SCISSOR_TEST; return c; } wc(b, a); b.prototype.getStackLength = function () { var a = this.maskStack[this.maskStack.length - 1]; if (a) { return a._scissorCounter; } else { return 0; } }; b.prototype.calcScissorRect = function (a) { if (!a._scissorRectLocal) { var b = a._scissorRect; var c = a.maskObject; var d = this.renderer; var e = d.renderTexture; c.renderable = true; var f = c.getBounds(); this.roundFrameToPixels(f, e.current ? e.current.resolution : d.resolution, e.sourceFrame, e.destinationFrame, d.projection.transform); c.renderable = false; if (b) { f.fit(b); } a._scissorRectLocal = f; } }; b.isMatrixRotated = function (a) { if (!a) { return false; } var b = a.a; var c = a.b; var d = a.c; var e = a.d; return (Math.abs(c) > 0.0001 || Math.abs(d) > 0.0001) && (Math.abs(b) > 0.0001 || Math.abs(e) > 0.0001); }; b.prototype.testScissor = function (a) { var c = a.maskObject; if (!c.isFastRect || !c.isFastRect()) { return false; } if (b.isMatrixRotated(c.worldTransform)) { return false; } if (b.isMatrixRotated(this.renderer.projection.transform)) { return false; } this.calcScissorRect(a); var d = a._scissorRectLocal; return d.width > 0 && d.height > 0; }; b.prototype.roundFrameToPixels = function (a, c, d, e, f) { if (!b.isMatrixRotated(f)) { (f = f ? Xd.copyFrom(f) : Xd.identity()).translate(-d.x, -d.y).scale(e.width / d.width, e.height / d.height).translate(e.x, e.y); this.renderer.filter.transformAABB(f, a); a.fit(e); a.x = Math.round(a.x * c); a.y = Math.round(a.y * c); a.width = Math.round(a.width * c); a.height = Math.round(a.height * c); } }; b.prototype.push = function (a) { if (!a._scissorRectLocal) { this.calcScissorRect(a); } var b = this.renderer.gl; if (!a._scissorRect) { b.enable(b.SCISSOR_TEST); } a._scissorCounter++; a._scissorRect = a._scissorRectLocal; this._useCurrent(); }; b.prototype.pop = function () { var a = this.renderer.gl; if (this.getStackLength() > 0) { this._useCurrent(); } else { a.disable(a.SCISSOR_TEST); } }; b.prototype._useCurrent = function () { var a; var b = this.maskStack[this.maskStack.length - 1]._scissorRect; a = this.renderer.renderTexture.current ? b.y : this.renderer.height - b.height - b.y; this.renderer.gl.scissor(b.x, a, b.width, b.height); }; return b; }(Wd); var Zd = function (a) { function b(b) { var c = a.call(this, b) || this; c.glConst = WebGLRenderingContext.STENCIL_TEST; return c; } wc(b, a); b.prototype.getStackLength = function () { var a = this.maskStack[this.maskStack.length - 1]; if (a) { return a._stencilCounter; } else { return 0; } }; b.prototype.push = function (a) { var b = a.maskObject; var c = this.renderer.gl; var d = a._stencilCounter; if (d === 0) { this.renderer.framebuffer.forceStencil(); c.clearStencil(0); c.clear(c.STENCIL_BUFFER_BIT); c.enable(c.STENCIL_TEST); } a._stencilCounter++; c.colorMask(false, false, false, false); c.stencilFunc(c.EQUAL, d, 4294967295); c.stencilOp(c.KEEP, c.KEEP, c.INCR); b.renderable = true; b.render(this.renderer); this.renderer.batch.flush(); b.renderable = false; this._useCurrent(); }; b.prototype.pop = function (a) { var b = this.renderer.gl; if (this.getStackLength() === 0) { b.disable(b.STENCIL_TEST); } else { b.colorMask(false, false, false, false); b.stencilOp(b.KEEP, b.KEEP, b.DECR); a.renderable = true; a.render(this.renderer); this.renderer.batch.flush(); a.renderable = false; this._useCurrent(); } }; b.prototype._useCurrent = function () { var a = this.renderer.gl; a.colorMask(true, true, true, true); a.stencilFunc(a.EQUAL, this.getStackLength(), 4294967295); a.stencilOp(a.KEEP, a.KEEP, a.KEEP); }; return b; }(Wd); var $d = function () { function a(a) { this.renderer = a; this.destinationFrame = null; this.sourceFrame = null; this.defaultFrame = null; this.projectionMatrix = new wb(); this.transform = null; } a.prototype.update = function (a, b, c, d) { this.destinationFrame = a || this.destinationFrame || this.defaultFrame; this.sourceFrame = b || this.sourceFrame || a; this.calculateProjection(this.destinationFrame, this.sourceFrame, c, d); if (this.transform) { this.projectionMatrix.append(this.transform); } var e = this.renderer; e.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix; e.globalUniforms.update(); if (e.shader.shader) { e.shader.syncUniformGroup(e.shader.shader.uniforms.globals); } }; a.prototype.calculateProjection = function (a, b, c, d) { var e = this.projectionMatrix; var f = d ? -1 : 1; e.identity(); e.a = 1 / b.width * 2; e.d = f * (1 / b.height * 2); e.tx = -1 - b.x * e.a; e.ty = -f - b.y * e.d; }; a.prototype.setTransform = function (a) {}; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var _d = new qb(); var ae = new qb(); var be = function () { function a(a) { this.renderer = a; this.clearColor = a._backgroundColorRgba; this.defaultMaskStack = []; this.current = null; this.sourceFrame = new qb(); this.destinationFrame = new qb(); this.viewportFrame = new qb(); } a.prototype.bind = function (a, b, c) { if (a === undefined) { a = null; } var d; var e; var f; var g = this.renderer; this.current = a; if (a) { f = (d = a.baseTexture).resolution; if (!b) { _d.width = a.frame.width; _d.height = a.frame.height; b = _d; } if (!c) { ae.x = a.frame.x; ae.y = a.frame.y; ae.width = b.width; ae.height = b.height; c = ae; } e = d.framebuffer; } else { f = g.resolution; if (!b) { _d.width = g.screen.width; _d.height = g.screen.height; b = _d; } if (!c) { (c = _d).width = b.width; c.height = b.height; } } var h = this.viewportFrame; h.x = c.x * f; h.y = c.y * f; h.width = c.width * f; h.height = c.height * f; if (!a) { h.y = g.view.height - (h.y + h.height); } h.ceil(); this.renderer.framebuffer.bind(e, h); this.renderer.projection.update(c, b, f, !e); if (a) { this.renderer.mask.setMaskStack(d.maskStack); } else { this.renderer.mask.setMaskStack(this.defaultMaskStack); } this.sourceFrame.copyFrom(b); this.destinationFrame.copyFrom(c); }; a.prototype.clear = function (a, b) { a = this.current ? a || this.current.baseTexture.clearColor : a || this.clearColor; var c = this.destinationFrame; var d = this.current ? this.current.baseTexture : this.renderer.screen; var e = c.width !== d.width || c.height !== d.height; if (e) { var f = this.viewportFrame; var g = f.x; var h = f.y; var i = f.width; var j = f.height; g = Math.round(g); h = Math.round(h); i = Math.round(i); j = Math.round(j); this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST); this.renderer.gl.scissor(g, h, i, j); } this.renderer.framebuffer.clear(a[0], a[1], a[2], a[3], b); if (e) { this.renderer.scissor.pop(); } }; a.prototype.resize = function () { this.bind(null); }; a.prototype.reset = function () { this.bind(null); }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); function ce(a, b, c, d, e) { c.buffer.update(e); } var de = { float: "\n data[offset] = v;\n ", vec2: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n ", vec3: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n ", vec4: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n data[offset+3] = v[3];\n ", mat2: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n\n data[offset+4] = v[2];\n data[offset+5] = v[3];\n ", mat3: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\n\n data[offset + 4] = v[3];\n data[offset + 5] = v[4];\n data[offset + 6] = v[5];\n\n data[offset + 8] = v[6];\n data[offset + 9] = v[7];\n data[offset + 10] = v[8];\n ", mat4: "\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n " }; var ee = { float: 4, vec2: 8, vec3: 12, vec4: 16, int: 4, ivec2: 8, ivec3: 12, ivec4: 16, uint: 4, uvec2: 8, uvec3: 12, uvec4: 16, bool: 4, bvec2: 8, bvec3: 12, bvec4: 16, mat2: 32, mat3: 48, mat4: 64 }; var fe = function () { function a(a, b) { this.program = a; this.uniformData = b; this.uniformGroups = {}; this.uniformDirtyGroups = {}; this.uniformBufferBindings = {}; } a.prototype.destroy = function () { this.uniformData = null; this.uniformGroups = null; this.uniformDirtyGroups = null; this.uniformBufferBindings = null; this.program = null; }; return a; }(); var ge = 0; var he = { textureCount: 0, uboCount: 0 }; var ie = function () { function a(a) { this.destroyed = false; this.renderer = a; this.systemCheck(); this.gl = null; this.shader = null; this.program = null; this.cache = {}; this._uboCache = {}; this.id = ge++; } a.prototype.systemCheck = function () { if (! function () { if (typeof Gd == "boolean") { return Gd; } try { var a = new Function("param1", "param2", "param3", "return param1[param2] === param3;"); Gd = a({ a: "b" }, "a", "b") === true; } catch (a) { Gd = false; } return Gd; }()) { throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support."); } }; a.prototype.contextChange = function (a) { this.gl = a; this.reset(); }; a.prototype.bind = function (a, b) { a.uniforms.globals = this.renderer.globalUniforms; var c = a.program; var d = c.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(a); this.shader = a; if (this.program !== c) { this.program = c; this.gl.useProgram(d.program); } if (!b) { he.textureCount = 0; he.uboCount = 0; this.syncUniformGroup(a.uniformGroup, he); } return d; }; a.prototype.setUniforms = function (a) { var b = this.shader.program; var c = b.glPrograms[this.renderer.CONTEXT_UID]; b.syncUniforms(c.uniformData, a, this.renderer); }; a.prototype.syncUniformGroup = function (a, b) { var c = this.getGlProgram(); if (!a.static || a.dirtyId !== c.uniformDirtyGroups[a.id]) { c.uniformDirtyGroups[a.id] = a.dirtyId; this.syncUniforms(a, c, b); } }; a.prototype.syncUniforms = function (a, b, c) { (a.syncUniforms[this.shader.program.id] || this.createSyncGroups(a))(b.uniformData, a.uniforms, this.renderer, c); }; a.prototype.createSyncGroups = function (a) { var b = this.getSignature(a, this.shader.program.uniformData, "u"); this.cache[b] ||= function (a, b) { var c = ["\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n "]; for (var d in a.uniforms) { var e = b[d]; if (e) { for (var f = a.uniforms[d], g = false, h = 0; h < Hd.length; h++) { if (Hd[h].test(e, f)) { c.push(Hd[h].code(d, f)); g = true; break; } } if (!g) { var i = (e.size === 1 ? Id : Jd)[e.type].replace("location", "ud[\"" + d + "\"].location"); c.push("\n cu = ud[\"" + d + "\"];\n cv = cu.value;\n v = uv[\"" + d + "\"];\n " + i + ";"); } } else if (a.uniforms[d]?.group) { if (a.uniforms[d].ubo) { c.push("\n renderer.shader.syncUniformBufferGroup(uv." + d + ", '" + d + "');\n "); } else { c.push("\n renderer.shader.syncUniformGroup(uv." + d + ", syncData);\n "); } } } return new Function("ud", "uv", "renderer", "syncData", c.join("\n")); }(a, this.shader.program.uniformData); a.syncUniforms[this.shader.program.id] = this.cache[b]; return a.syncUniforms[this.shader.program.id]; }; a.prototype.syncUniformBufferGroup = function (a, b) { var c = this.getGlProgram(); if (!a.static || a.dirtyId !== 0 || !c.uniformGroups[a.id]) { a.dirtyId = 0; var d = c.uniformGroups[a.id] || this.createSyncBufferGroup(a, c, b); a.buffer.update(); d(c.uniformData, a.uniforms, this.renderer, he, a.buffer); } this.renderer.buffer.bindBufferBase(a.buffer, c.uniformBufferBindings[b]); }; a.prototype.createSyncBufferGroup = function (a, b, c) { var d = this.renderer.gl; this.renderer.buffer.bind(a.buffer); var e = this.gl.getUniformBlockIndex(b.program, c); b.uniformBufferBindings[c] = this.shader.uniformBindCount; d.uniformBlockBinding(b.program, e, this.shader.uniformBindCount); this.shader.uniformBindCount++; var f = this.getSignature(a, this.shader.program.uniformData, "ubo"); var g = this._uboCache[f]; g ||= this._uboCache[f] = function (a, b) { if (!a.autoManage) { return { size: 0, syncFunc: ce }; } for (var c = function (a, b) { var c = []; for (var d in a) { if (b[d]) { c.push(b[d]); } } c.sort(function (a, b) { return a.index - b.index; }); return c; }(a.uniforms, b), d = function (a) { for (var b = a.map(function (a) { return { data: a, offset: 0, dataLen: 0, dirty: 0 }; }), c = 0, d = 0, e = 0, f = 0; f < b.length; f++) { var g = b[f]; c = ee[g.data.type]; if (g.data.size > 1) { c = Math.max(c, 16) * g.data.size; } g.dataLen = c; if (d % c != 0 && d < 16) { var h = d % c % 16; d += h; e += h; } if (d + c > 16) { e = Math.ceil(e / 16) * 16; g.offset = e; e += c; d = c; } else { g.offset = e; d += c; e += c; } } return { uboElements: b, size: e = Math.ceil(e / 16) * 16 }; }(c), e = d.uboElements, f = d.size, g = ["\n var v = null;\n var v2 = null;\n var cv = null;\n var t = 0;\n var gl = renderer.gl\n var index = 0;\n var data = buffer.data;\n "], h = 0; h < e.length; h++) { for (var i = e[h], j = a.uniforms[i.data.name], k = i.data.name, l = false, m = 0; m < Hd.length; m++) { var n = Hd[m]; if (n.codeUbo && n.test(i.data, j)) { g.push("offset = " + i.offset / 4 + ";", Hd[m].codeUbo(i.data.name, j)); l = true; break; } } if (!l) { if (i.data.size > 1) { var o = Cd(i.data.type); var p = Math.max(ee[i.data.type] / 16, 1); var q = o / p; var r = (4 - q % 4) % 4; g.push("\n cv = ud." + k + ".value;\n v = uv." + k + ";\n offset = " + i.offset / 4 + ";\n\n t = 0;\n\n for(var i=0; i < " + i.data.size * p + "; i++)\n {\n for(var j = 0; j < " + q + "; j++)\n {\n data[offset++] = v[t++];\n }\n offset += " + r + ";\n }\n\n "); } else { var s = de[i.data.type]; g.push("\n cv = ud." + k + ".value;\n v = uv." + k + ";\n offset = " + i.offset / 4 + ";\n " + s + ";\n "); } } } g.push("\n renderer.buffer.update(buffer);\n "); return { size: f, syncFunc: new Function("ud", "uv", "renderer", "syncData", "buffer", g.join("\n")) }; }(a, this.shader.program.uniformData); if (a.autoManage) { var h = new Float32Array(g.size / 4); a.buffer.update(h); } b.uniformGroups[a.id] = g.syncFunc; return b.uniformGroups[a.id]; }; a.prototype.getSignature = function (a, b, c) { var d = a.uniforms; var e = [c + "-"]; for (var f in d) { e.push(f); if (b[f]) { e.push(b[f].type); } } return e.join("-"); }; a.prototype.getGlProgram = function () { if (this.shader) { return this.shader.program.glPrograms[this.renderer.CONTEXT_UID]; } else { return null; } }; a.prototype.generateProgram = function (a) { var b = this.gl; var c = a.program; var d = function (a, b) { var c = td(a, a.VERTEX_SHADER, b.vertexSrc); var d = td(a, a.FRAGMENT_SHADER, b.fragmentSrc); var e = a.createProgram(); a.attachShader(e, c); a.attachShader(e, d); a.linkProgram(e); if (!a.getProgramParameter(e, a.LINK_STATUS)) { (function (a, b, c, d) { if (!a.getProgramParameter(b, a.LINK_STATUS)) { if (!a.getShaderParameter(c, a.COMPILE_STATUS)) { ud(a, c); } if (!a.getShaderParameter(d, a.COMPILE_STATUS)) { ud(a, d); } console.error("PixiJS Error: Could not initialize shader."); if (a.getProgramInfoLog(b) !== "") { console.warn("PixiJS Warning: gl.getProgramInfoLog()", a.getProgramInfoLog(b)); } } })(a, e, c, d); } b.attributeData = function (a, b) { for (var c = {}, d = b.getProgramParameter(a, b.ACTIVE_ATTRIBUTES), e = 0; e < d; e++) { var f = b.getActiveAttrib(a, e); if (f.name.indexOf("gl_") !== 0) { var g = Fd(b, f.type); var h = { type: g, name: f.name, size: Cd(g), location: b.getAttribLocation(a, f.name) }; c[f.name] = h; } } return c; }(e, a); b.uniformData = function (a, b) { for (var c = {}, d = b.getProgramParameter(a, b.ACTIVE_UNIFORMS), e = 0; e < d; e++) { var f = b.getActiveUniform(a, e); var g = f.name.replace(/\[.*?\]$/, ""); var h = !!f.name.match(/\[.*?\]$/); var i = Fd(b, f.type); c[g] = { name: g, index: e, type: i, size: f.size, isArray: h, value: wd(i, f.size) }; } return c; }(e, a); if (!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(b.vertexSrc)) { var f = Object.keys(b.attributeData); f.sort(function (a, b) { if (a > b) { return 1; } else { return -1; } }); for (var g = 0; g < f.length; g++) { b.attributeData[f[g]].location = g; a.bindAttribLocation(e, g, f[g]); } a.linkProgram(e); } a.deleteShader(c); a.deleteShader(d); var h = {}; for (var g in b.uniformData) { var i = b.uniformData[g]; h[g] = { location: a.getUniformLocation(e, g), value: wd(i.type, i.size) }; } return new fe(e, h); }(b, c); c.glPrograms[this.renderer.CONTEXT_UID] = d; return d; }; a.prototype.reset = function () { this.program = null; this.shader = null; }; a.prototype.destroy = function () { this.renderer = null; this.destroyed = true; }; return a; }(); var je = function () { function a() { this.gl = null; this.stateId = 0; this.polygonOffset = 0; this.blendMode = pa.NONE; this._blendEq = false; this.map = []; this.map[0] = this.setBlend; this.map[1] = this.setOffset; this.map[2] = this.setCullFace; this.map[3] = this.setDepthTest; this.map[4] = this.setFrontFace; this.map[5] = this.setDepthMask; this.checks = []; this.defaultState = new Qd(); this.defaultState.blend = true; } a.prototype.contextChange = function (a) { this.gl = a; this.blendModes = function (a, b) { if (b === undefined) { b = []; } b[pa.NORMAL] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.ADD] = [a.ONE, a.ONE]; b[pa.MULTIPLY] = [a.DST_COLOR, a.ONE_MINUS_SRC_ALPHA, a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.SCREEN] = [a.ONE, a.ONE_MINUS_SRC_COLOR, a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.OVERLAY] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.DARKEN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.LIGHTEN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.COLOR_DODGE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.COLOR_BURN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.HARD_LIGHT] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.SOFT_LIGHT] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.DIFFERENCE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.EXCLUSION] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.HUE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.SATURATION] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.COLOR] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.LUMINOSITY] = [a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.NONE] = [0, 0]; b[pa.NORMAL_NPM] = [a.SRC_ALPHA, a.ONE_MINUS_SRC_ALPHA, a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.ADD_NPM] = [a.SRC_ALPHA, a.ONE, a.ONE, a.ONE]; b[pa.SCREEN_NPM] = [a.SRC_ALPHA, a.ONE_MINUS_SRC_COLOR, a.ONE, a.ONE_MINUS_SRC_ALPHA]; b[pa.SRC_IN] = [a.DST_ALPHA, a.ZERO]; b[pa.SRC_OUT] = [a.ONE_MINUS_DST_ALPHA, a.ZERO]; b[pa.SRC_ATOP] = [a.DST_ALPHA, a.ONE_MINUS_SRC_ALPHA]; b[pa.DST_OVER] = [a.ONE_MINUS_DST_ALPHA, a.ONE]; b[pa.DST_IN] = [a.ZERO, a.SRC_ALPHA]; b[pa.DST_OUT] = [a.ZERO, a.ONE_MINUS_SRC_ALPHA]; b[pa.DST_ATOP] = [a.ONE_MINUS_DST_ALPHA, a.SRC_ALPHA]; b[pa.XOR] = [a.ONE_MINUS_DST_ALPHA, a.ONE_MINUS_SRC_ALPHA]; b[pa.SUBTRACT] = [a.ONE, a.ONE, a.ONE, a.ONE, a.FUNC_REVERSE_SUBTRACT, a.FUNC_ADD]; return b; }(a); this.set(this.defaultState); this.reset(); }; a.prototype.set = function (a) { a = a || this.defaultState; if (this.stateId !== a.data) { for (var b = this.stateId ^ a.data, c = 0; b;) { if (b & 1) { this.map[c].call(this, !!(a.data & 1 << c)); } b >>= 1; c++; } this.stateId = a.data; } for (c = 0; c < this.checks.length; c++) { this.checks[c](this, a); } }; a.prototype.forceState = function (a) { a = a || this.defaultState; for (var b = 0; b < this.map.length; b++) { this.map[b].call(this, !!(a.data & 1 << b)); } for (b = 0; b < this.checks.length; b++) { this.checks[b](this, a); } this.stateId = a.data; }; a.prototype.setBlend = function (b) { this.updateCheck(a.checkBlendMode, b); this.gl[b ? "enable" : "disable"](this.gl.BLEND); }; a.prototype.setOffset = function (b) { this.updateCheck(a.checkPolygonOffset, b); this.gl[b ? "enable" : "disable"](this.gl.POLYGON_OFFSET_FILL); }; a.prototype.setDepthTest = function (a) { this.gl[a ? "enable" : "disable"](this.gl.DEPTH_TEST); }; a.prototype.setDepthMask = function (a) { this.gl.depthMask(a); }; a.prototype.setCullFace = function (a) { this.gl[a ? "enable" : "disable"](this.gl.CULL_FACE); }; a.prototype.setFrontFace = function (a) { this.gl.frontFace(this.gl[a ? "CW" : "CCW"]); }; a.prototype.setBlendMode = function (a) { if (a !== this.blendMode) { this.blendMode = a; var b = this.blendModes[a]; var c = this.gl; if (b.length === 2) { c.blendFunc(b[0], b[1]); } else { c.blendFuncSeparate(b[0], b[1], b[2], b[3]); } if (b.length === 6) { this._blendEq = true; c.blendEquationSeparate(b[4], b[5]); } else if (this._blendEq) { this._blendEq = false; c.blendEquationSeparate(c.FUNC_ADD, c.FUNC_ADD); } } }; a.prototype.setPolygonOffset = function (a, b) { this.gl.polygonOffset(a, b); }; a.prototype.reset = function () { this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false); this.forceState(this.defaultState); this._blendEq = true; this.blendMode = -1; this.setBlendMode(0); }; a.prototype.updateCheck = function (a, b) { var c = this.checks.indexOf(a); if (b && c === -1) { this.checks.push(a); } else if (!b && c !== -1) { this.checks.splice(c, 1); } }; a.checkBlendMode = function (a, b) { a.setBlendMode(b.blendMode); }; a.checkPolygonOffset = function (a, b) { a.setPolygonOffset(1, b.polygonOffset); }; a.prototype.destroy = function () { this.gl = null; }; return a; }(); var ke = function () { function a(a) { this.renderer = a; this.count = 0; this.checkCount = 0; this.maxIdle = Fa.GC_MAX_IDLE; this.checkCountMax = Fa.GC_MAX_CHECK_COUNT; this.mode = Fa.GC_MODE; } a.prototype.postrender = function () { if (this.renderer.renderingToScreen) { this.count++; if (this.mode !== Aa.MANUAL) { this.checkCount++; if (this.checkCount > this.checkCountMax) { this.checkCount = 0; this.run(); } } } }; a.prototype.run = function () { for (var a = this.renderer.texture, b = a.managedTextures, c = false, d = 0; d < b.length; d++) { var e = b[d]; if (!e.framebuffer && this.count - e.touched > this.maxIdle) { a.destroyTexture(e, true); b[d] = null; c = true; } } if (c) { var f = 0; for (d = 0; d < b.length; d++) { if (b[d] !== null) { b[f++] = b[d]; } } b.length = f; } }; a.prototype.unload = function (a) { var b = this.renderer.texture; var c = a._texture; if (c && !c.framebuffer) { b.destroyTexture(c); } for (var d = a.children.length - 1; d >= 0; d--) { this.unload(a.children[d]); } }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); function le(a) { this.texture = a; this.width = -1; this.height = -1; this.dirtyId = -1; this.dirtyStyleId = -1; this.mipmap = false; this.wrapMode = 33071; this.type = ta.UNSIGNED_BYTE; this.internalFormat = ra.RGBA; this.samplerType = 0; } var me = function () { function a(a) { this.renderer = a; this.boundTextures = []; this.currentLocation = -1; this.managedTextures = []; this._unknownBoundTextures = false; this.unknownTexture = new Bc(); this.hasIntegerTextures = false; } a.prototype.contextChange = function () { var a = this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; this.webGLVersion = this.renderer.context.webGLVersion; this.internalFormats = function (a) { var b; var c; var d; var e; var f; var g; var h; var i; var j; var k; var l; var m; var n; var o; var p; var q; var r; var s; var t; var u; var v; var w; var x; if ("WebGL2RenderingContext" in globalThis && a instanceof globalThis.WebGL2RenderingContext) { (b = {})[ta.UNSIGNED_BYTE] = ((c = {})[ra.RGBA] = a.RGBA8, c[ra.RGB] = a.RGB8, c[ra.RG] = a.RG8, c[ra.RED] = a.R8, c[ra.RGBA_INTEGER] = a.RGBA8UI, c[ra.RGB_INTEGER] = a.RGB8UI, c[ra.RG_INTEGER] = a.RG8UI, c[ra.RED_INTEGER] = a.R8UI, c[ra.ALPHA] = a.ALPHA, c[ra.LUMINANCE] = a.LUMINANCE, c[ra.LUMINANCE_ALPHA] = a.LUMINANCE_ALPHA, c); b[ta.BYTE] = ((d = {})[ra.RGBA] = a.RGBA8_SNORM, d[ra.RGB] = a.RGB8_SNORM, d[ra.RG] = a.RG8_SNORM, d[ra.RED] = a.R8_SNORM, d[ra.RGBA_INTEGER] = a.RGBA8I, d[ra.RGB_INTEGER] = a.RGB8I, d[ra.RG_INTEGER] = a.RG8I, d[ra.RED_INTEGER] = a.R8I, d); b[ta.UNSIGNED_SHORT] = ((e = {})[ra.RGBA_INTEGER] = a.RGBA16UI, e[ra.RGB_INTEGER] = a.RGB16UI, e[ra.RG_INTEGER] = a.RG16UI, e[ra.RED_INTEGER] = a.R16UI, e[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT16, e); b[ta.SHORT] = ((f = {})[ra.RGBA_INTEGER] = a.RGBA16I, f[ra.RGB_INTEGER] = a.RGB16I, f[ra.RG_INTEGER] = a.RG16I, f[ra.RED_INTEGER] = a.R16I, f); b[ta.UNSIGNED_INT] = ((g = {})[ra.RGBA_INTEGER] = a.RGBA32UI, g[ra.RGB_INTEGER] = a.RGB32UI, g[ra.RG_INTEGER] = a.RG32UI, g[ra.RED_INTEGER] = a.R32UI, g[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT24, g); b[ta.INT] = ((h = {})[ra.RGBA_INTEGER] = a.RGBA32I, h[ra.RGB_INTEGER] = a.RGB32I, h[ra.RG_INTEGER] = a.RG32I, h[ra.RED_INTEGER] = a.R32I, h); b[ta.FLOAT] = ((i = {})[ra.RGBA] = a.RGBA32F, i[ra.RGB] = a.RGB32F, i[ra.RG] = a.RG32F, i[ra.RED] = a.R32F, i[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT32F, i); b[ta.HALF_FLOAT] = ((j = {})[ra.RGBA] = a.RGBA16F, j[ra.RGB] = a.RGB16F, j[ra.RG] = a.RG16F, j[ra.RED] = a.R16F, j); b[ta.UNSIGNED_SHORT_5_6_5] = ((k = {})[ra.RGB] = a.RGB565, k); b[ta.UNSIGNED_SHORT_4_4_4_4] = ((l = {})[ra.RGBA] = a.RGBA4, l); b[ta.UNSIGNED_SHORT_5_5_5_1] = ((m = {})[ra.RGBA] = a.RGB5_A1, m); b[ta.UNSIGNED_INT_2_10_10_10_REV] = ((n = {})[ra.RGBA] = a.RGB10_A2, n[ra.RGBA_INTEGER] = a.RGB10_A2UI, n); b[ta.UNSIGNED_INT_10F_11F_11F_REV] = ((o = {})[ra.RGB] = a.R11F_G11F_B10F, o); b[ta.UNSIGNED_INT_5_9_9_9_REV] = ((p = {})[ra.RGB] = a.RGB9_E5, p); b[ta.UNSIGNED_INT_24_8] = ((q = {})[ra.DEPTH_STENCIL] = a.DEPTH24_STENCIL8, q); b[ta.FLOAT_32_UNSIGNED_INT_24_8_REV] = ((r = {})[ra.DEPTH_STENCIL] = a.DEPTH32F_STENCIL8, r); x = b; } else { (s = {})[ta.UNSIGNED_BYTE] = ((t = {})[ra.RGBA] = a.RGBA, t[ra.RGB] = a.RGB, t[ra.ALPHA] = a.ALPHA, t[ra.LUMINANCE] = a.LUMINANCE, t[ra.LUMINANCE_ALPHA] = a.LUMINANCE_ALPHA, t); s[ta.UNSIGNED_SHORT_5_6_5] = ((u = {})[ra.RGB] = a.RGB, u); s[ta.UNSIGNED_SHORT_4_4_4_4] = ((v = {})[ra.RGBA] = a.RGBA, v); s[ta.UNSIGNED_SHORT_5_5_5_1] = ((w = {})[ra.RGBA] = a.RGBA, w); x = s; } return x; }(a); var b = a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS); this.boundTextures.length = b; for (var c = 0; c < b; c++) { this.boundTextures[c] = null; } this.emptyTextures = {}; var d = new le(a.createTexture()); a.bindTexture(a.TEXTURE_2D, d.texture); a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, 1, 1, 0, a.RGBA, a.UNSIGNED_BYTE, new Uint8Array(4)); this.emptyTextures[a.TEXTURE_2D] = d; this.emptyTextures[a.TEXTURE_CUBE_MAP] = new le(a.createTexture()); a.bindTexture(a.TEXTURE_CUBE_MAP, this.emptyTextures[a.TEXTURE_CUBE_MAP].texture); c = 0; for (; c < 6; c++) { a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X + c, 0, a.RGBA, 1, 1, 0, a.RGBA, a.UNSIGNED_BYTE, null); } a.texParameteri(a.TEXTURE_CUBE_MAP, a.TEXTURE_MAG_FILTER, a.LINEAR); a.texParameteri(a.TEXTURE_CUBE_MAP, a.TEXTURE_MIN_FILTER, a.LINEAR); c = 0; for (; c < this.boundTextures.length; c++) { this.bind(null, c); } }; a.prototype.bind = function (a, b) { if (b === undefined) { b = 0; } var c = this.gl; if ((a = a == null ? undefined : a.castToBaseTexture()) && a.valid && !a.parentTextureArray) { a.touched = this.renderer.textureGC.count; var d = a._glTextures[this.CONTEXT_UID] || this.initTexture(a); if (this.boundTextures[b] !== a) { if (this.currentLocation !== b) { this.currentLocation = b; c.activeTexture(c.TEXTURE0 + b); } c.bindTexture(a.target, d.texture); } if (d.dirtyId !== a.dirtyId) { if (this.currentLocation !== b) { this.currentLocation = b; c.activeTexture(c.TEXTURE0 + b); } this.updateTexture(a); } this.boundTextures[b] = a; } else { if (this.currentLocation !== b) { this.currentLocation = b; c.activeTexture(c.TEXTURE0 + b); } c.bindTexture(c.TEXTURE_2D, this.emptyTextures[c.TEXTURE_2D].texture); this.boundTextures[b] = null; } }; a.prototype.reset = function () { this._unknownBoundTextures = true; this.hasIntegerTextures = false; this.currentLocation = -1; for (var a = 0; a < this.boundTextures.length; a++) { this.boundTextures[a] = this.unknownTexture; } }; a.prototype.unbind = function (a) { var b = this.gl; var c = this.boundTextures; if (this._unknownBoundTextures) { this._unknownBoundTextures = false; for (var d = 0; d < c.length; d++) { if (c[d] === this.unknownTexture) { this.bind(null, d); } } } for (d = 0; d < c.length; d++) { if (c[d] === a) { if (this.currentLocation !== d) { b.activeTexture(b.TEXTURE0 + d); this.currentLocation = d; } b.bindTexture(a.target, this.emptyTextures[a.target].texture); c[d] = null; } } }; a.prototype.ensureSamplerType = function (a) { var b = this; var c = b.boundTextures; var d = b.hasIntegerTextures; var e = b.CONTEXT_UID; if (d) { for (var f = a - 1; f >= 0; --f) { var g = c[f]; if (g && g._glTextures[e].samplerType !== ua.FLOAT) { this.renderer.texture.unbind(g); } } } }; a.prototype.initTexture = function (a) { var b = new le(this.gl.createTexture()); b.dirtyId = -1; a._glTextures[this.CONTEXT_UID] = b; this.managedTextures.push(a); a.on("dispose", this.destroyTexture, this); return b; }; a.prototype.initTextureType = function (a, b) { b.internalFormat = this.internalFormats[a.type]?.[a.format] ?? a.format; if (this.webGLVersion === 2 && a.type === ta.HALF_FLOAT) { b.type = this.gl.HALF_FLOAT; } else { b.type = a.type; } }; a.prototype.updateTexture = function (a) { var b = a._glTextures[this.CONTEXT_UID]; if (b) { var c = this.renderer; this.initTextureType(a, b); if (a.resource && a.resource.upload(c, a, b)) { if (b.samplerType !== ua.FLOAT) { this.hasIntegerTextures = true; } } else { var d = a.realWidth; var e = a.realHeight; var f = c.gl; if (b.width !== d || b.height !== e || b.dirtyId < 0) { b.width = d; b.height = e; f.texImage2D(a.target, 0, b.internalFormat, d, e, 0, a.format, b.type, null); } } if (a.dirtyStyleId !== b.dirtyStyleId) { this.updateTextureStyle(a); } b.dirtyId = a.dirtyId; } }; a.prototype.destroyTexture = function (a, b) { var c = this.gl; if ((a = a.castToBaseTexture())._glTextures[this.CONTEXT_UID] && (this.unbind(a), c.deleteTexture(a._glTextures[this.CONTEXT_UID].texture), a.off("dispose", this.destroyTexture, this), delete a._glTextures[this.CONTEXT_UID], !b)) { var d = this.managedTextures.indexOf(a); if (d !== -1) { $a(this.managedTextures, d, 1); } } }; a.prototype.updateTextureStyle = function (a) { var b = a._glTextures[this.CONTEXT_UID]; if (b) { if (a.mipmap !== xa.POW2 && this.webGLVersion === 2 || a.isPowerOfTwo) { b.mipmap = a.mipmap >= 1; } else { b.mipmap = false; } if (this.webGLVersion === 2 || a.isPowerOfTwo) { b.wrapMode = a.wrapMode; } else { b.wrapMode = wa.CLAMP; } if (!a.resource || !a.resource.style(this.renderer, a, b)) { this.setStyle(a, b); } b.dirtyStyleId = a.dirtyStyleId; } }; a.prototype.setStyle = function (a, b) { var c = this.gl; if (b.mipmap && a.mipmap !== xa.ON_MANUAL) { c.generateMipmap(a.target); } c.texParameteri(a.target, c.TEXTURE_WRAP_S, b.wrapMode); c.texParameteri(a.target, c.TEXTURE_WRAP_T, b.wrapMode); if (b.mipmap) { c.texParameteri(a.target, c.TEXTURE_MIN_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR_MIPMAP_LINEAR : c.NEAREST_MIPMAP_NEAREST); var d = this.renderer.context.extensions.anisotropicFiltering; if (d && a.anisotropicLevel > 0 && a.scaleMode === va.LINEAR) { var e = Math.min(a.anisotropicLevel, c.getParameter(d.MAX_TEXTURE_MAX_ANISOTROPY_EXT)); c.texParameterf(a.target, d.TEXTURE_MAX_ANISOTROPY_EXT, e); } } else { c.texParameteri(a.target, c.TEXTURE_MIN_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR : c.NEAREST); } c.texParameteri(a.target, c.TEXTURE_MAG_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR : c.NEAREST); }; a.prototype.destroy = function () { this.renderer = null; }; return a; }(); var ne = { "__proto__": null, FilterSystem: id, BatchSystem: kd, ContextSystem: md, FramebufferSystem: pd, GeometrySystem: rd, MaskSystem: Vd, ScissorSystem: Yd, StencilSystem: Zd, ProjectionSystem: $d, RenderTextureSystem: be, ShaderSystem: ie, StateSystem: je, TextureGCSystem: ke, TextureSystem: me }; var oe = new wb(); var pe = function (a) { function b(b, c) { if (b === undefined) { b = na.UNKNOWN; } var d = a.call(this) || this; c = Object.assign({}, Fa.RENDER_OPTIONS, c); d.options = c; d.type = b; d.screen = new qb(0, 0, c.width, c.height); d.view = c.view || document.createElement("canvas"); d.resolution = c.resolution || Fa.RESOLUTION; d.useContextAlpha = c.useContextAlpha; d.autoDensity = !!c.autoDensity; d.preserveDrawingBuffer = c.preserveDrawingBuffer; d.clearBeforeRender = c.clearBeforeRender; d._backgroundColor = 0; d._backgroundColorRgba = [0, 0, 0, 1]; d._backgroundColorString = "#000000"; d.backgroundColor = c.backgroundColor || d._backgroundColor; d.backgroundAlpha = c.backgroundAlpha; if (c.transparent !== undefined) { db("6.0.0", "Option transparent is deprecated, please use backgroundAlpha instead."); d.useContextAlpha = c.transparent; d.backgroundAlpha = c.transparent ? 0 : 1; } d._lastObjectRendered = null; d.plugins = {}; return d; } wc(b, a); b.prototype.initPlugins = function (a) { for (var b in a) { this.plugins[b] = new a[b](this); } }; Object.defineProperty(b.prototype, "width", { get: function () { return this.view.width; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return this.view.height; }, enumerable: false, configurable: true }); b.prototype.resize = function (a, b) { this.view.width = Math.round(a * this.resolution); this.view.height = Math.round(b * this.resolution); var c = this.view.width / this.resolution; var d = this.view.height / this.resolution; this.screen.width = c; this.screen.height = d; if (this.autoDensity) { this.view.style.width = c + "px"; this.view.style.height = d + "px"; } this.emit("resize", c, d); }; b.prototype.generateTexture = function (a, b, c, d) { if (b === undefined) { b = {}; } if (typeof b == "number") { db("6.1.0", "generateTexture options (scaleMode, resolution, region) are now object options."); b = { scaleMode: b, resolution: c, region: d }; } var e = b.region; var f = function (a, b) { var c = {}; for (var d in a) { if (Object.prototype.hasOwnProperty.call(a, d) && b.indexOf(d) < 0) { c[d] = a[d]; } } if (a != null && typeof Object.getOwnPropertySymbols == "function") { var e = 0; for (d = Object.getOwnPropertySymbols(a); e < d.length; e++) { if (b.indexOf(d[e]) < 0) { c[d[e]] = a[d[e]]; } } } return c; }(b, ["region"]); if ((d = e || a.getLocalBounds(null, true)).width === 0) { d.width = 1; } if (d.height === 0) { d.height = 1; } var g = Tc.create(xc({ width: d.width, height: d.height }, f)); oe.tx = -d.x; oe.ty = -d.y; this.render(a, { renderTexture: g, clear: false, transform: oe, skipUpdateTransform: !!a.parent }); return g; }; b.prototype.destroy = function (a) { for (var b in this.plugins) { this.plugins[b].destroy(); this.plugins[b] = null; } if (a && this.view.parentNode) { this.view.parentNode.removeChild(this.view); } var c = this; c.plugins = null; c.type = na.UNKNOWN; c.view = null; c.screen = null; c._tempDisplayObjectParent = null; c.options = null; this._backgroundColorRgba = null; this._backgroundColorString = null; this._lastObjectRendered = null; }; Object.defineProperty(b.prototype, "backgroundColor", { get: function () { return this._backgroundColor; }, set: function (a) { this._backgroundColor = a; this._backgroundColorString = Qa(a); Pa(a, this._backgroundColorRgba); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "backgroundAlpha", { get: function () { return this._backgroundColorRgba[3]; }, set: function (a) { this._backgroundColorRgba[3] = a; }, enumerable: false, configurable: true }); return b; }(Ha()); function qe(a) { this.buffer = a || null; this.updateID = -1; this.byteLength = -1; this.refCount = 0; } var re = function () { function a(a) { this.renderer = a; this.managedBuffers = {}; this.boundBufferBases = {}; } a.prototype.destroy = function () { this.renderer = null; }; a.prototype.contextChange = function () { this.disposeAll(true); this.gl = this.renderer.gl; this.CONTEXT_UID = this.renderer.CONTEXT_UID; }; a.prototype.bind = function (a) { var b = this.gl; var c = this.CONTEXT_UID; var d = a._glBuffers[c] || this.createGLBuffer(a); b.bindBuffer(a.type, d.buffer); }; a.prototype.bindBufferBase = function (a, b) { var c = this.gl; var d = this.CONTEXT_UID; if (this.boundBufferBases[b] !== a) { var e = a._glBuffers[d] || this.createGLBuffer(a); this.boundBufferBases[b] = a; c.bindBufferBase(c.UNIFORM_BUFFER, b, e.buffer); } }; a.prototype.bindBufferRange = function (a, b, c) { var d = this.gl; var e = this.CONTEXT_UID; c = c || 0; var f = a._glBuffers[e] || this.createGLBuffer(a); d.bindBufferRange(d.UNIFORM_BUFFER, b || 0, f.buffer, c * 256, 256); }; a.prototype.update = function (a) { var b = this.gl; var c = this.CONTEXT_UID; var d = a._glBuffers[c]; if (a._updateID !== d.updateID) { d.updateID = a._updateID; b.bindBuffer(a.type, d.buffer); if (d.byteLength >= a.data.byteLength) { b.bufferSubData(a.type, 0, a.data); } else { var e = a.static ? b.STATIC_DRAW : b.DYNAMIC_DRAW; d.byteLength = a.data.byteLength; b.bufferData(a.type, a.data, e); } } }; a.prototype.dispose = function (a, b) { if (this.managedBuffers[a.id]) { delete this.managedBuffers[a.id]; var c = a._glBuffers[this.CONTEXT_UID]; var d = this.gl; a.disposeRunner.remove(this); if (c) { if (!b) { d.deleteBuffer(c.buffer); } delete a._glBuffers[this.CONTEXT_UID]; } } }; a.prototype.disposeAll = function (a) { for (var b = Object.keys(this.managedBuffers), c = 0; c < b.length; c++) { this.dispose(this.managedBuffers[b[c]], a); } }; a.prototype.createGLBuffer = function (a) { var b = this.CONTEXT_UID; var c = this.gl; a._glBuffers[b] = new qe(c.createBuffer()); this.managedBuffers[a.id] = a; a.disposeRunner.add(this); return a._glBuffers[b]; }; return a; }(); var se = function (a) { function b(c) { var d = a.call(this, na.WEBGL, c) || this; c = d.options; d.gl = null; d.CONTEXT_UID = 0; d.runners = { destroy: new sc("destroy"), contextChange: new sc("contextChange"), reset: new sc("reset"), update: new sc("update"), postrender: new sc("postrender"), prerender: new sc("prerender"), resize: new sc("resize") }; d.runners.contextChange.add(d); d.globalUniforms = new ed({ projectionMatrix: new wb() }, true); d.addSystem(Vd, "mask").addSystem(md, "context").addSystem(je, "state").addSystem(ie, "shader").addSystem(me, "texture").addSystem(re, "buffer").addSystem(rd, "geometry").addSystem(pd, "framebuffer").addSystem(Yd, "scissor").addSystem(Zd, "stencil").addSystem($d, "projection").addSystem(ke, "textureGC").addSystem(id, "filter").addSystem(be, "renderTexture").addSystem(kd, "batch"); d.initPlugins(b.__plugins); d.multisample = undefined; if (c.context) { d.context.initFromContext(c.context); } else { d.context.initFromOptions({ alpha: !!d.useContextAlpha, antialias: c.antialias, premultipliedAlpha: d.useContextAlpha && d.useContextAlpha !== "notMultiplied", stencil: true, preserveDrawingBuffer: c.preserveDrawingBuffer, powerPreference: d.options.powerPreference }); } d.renderingToScreen = true; (function (a) { var b; if (!Na) { if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { var c = ["\n %c %c %c PixiJS 6.3.2 - ✰ " + a + " ✰ %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ \n\n", "background: #ff66a5; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff66a5; background: #030307; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "background: #ffc3dc; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;"]; (b = globalThis.console).log.apply(b, c); } else if (globalThis.console) { globalThis.console.log("PixiJS 6.3.2 - " + a + " - http://www.pixijs.com/"); } Na = true; } })(d.context.webGLVersion === 2 ? "WebGL 2" : "WebGL 1"); d.resize(d.options.width, d.options.height); return d; } wc(b, a); b.create = function (a) { if (Ma === undefined) { Ma = function () { var a = { stencil: true, failIfMajorPerformanceCaveat: Fa.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT }; try { if (!globalThis.WebGLRenderingContext) { return false; } var b = document.createElement("canvas"); var c = b.getContext("webgl", a) || b.getContext("experimental-webgl", a); var d = !!c && !!c.getContextAttributes().stencil; if (c) { var e = c.getExtension("WEBGL_lose_context"); if (e) { e.loseContext(); } } c = null; return d; } catch (a) { return false; } }(); } if (Ma) { return new b(a); } throw new Error("WebGL unsupported in this browser, use \"pixi.js-legacy\" for fallback canvas2d support."); }; b.prototype.contextChange = function () { var a; var b = this.gl; if (this.context.webGLVersion === 1) { var c = b.getParameter(b.FRAMEBUFFER_BINDING); b.bindFramebuffer(b.FRAMEBUFFER, null); a = b.getParameter(b.SAMPLES); b.bindFramebuffer(b.FRAMEBUFFER, c); } else { c = b.getParameter(b.DRAW_FRAMEBUFFER_BINDING); b.bindFramebuffer(b.DRAW_FRAMEBUFFER, null); a = b.getParameter(b.SAMPLES); b.bindFramebuffer(b.DRAW_FRAMEBUFFER, c); } if (a >= Da.HIGH) { this.multisample = Da.HIGH; } else if (a >= Da.MEDIUM) { this.multisample = Da.MEDIUM; } else if (a >= Da.LOW) { this.multisample = Da.LOW; } else { this.multisample = Da.NONE; } }; b.prototype.addSystem = function (a, b) { var c = new a(this); if (this[b]) { throw new Error("Whoops! The name \"" + b + "\" is already in use"); } this[b] = c; for (var d in this.runners) { this.runners[d].add(c); } return this; }; b.prototype.render = function (a, b) { var c; var d; var e; var f; if (b) { if (b instanceof Tc) { db("6.0.0", "Renderer#render arguments changed, use options instead."); c = b; d = arguments[2]; e = arguments[3]; f = arguments[4]; } else { c = b.renderTexture; d = b.clear; e = b.transform; f = b.skipUpdateTransform; } } this.renderingToScreen = !c; this.runners.prerender.emit(); this.emit("prerender"); this.projection.transform = e; if (!this.context.isLost) { if (!c) { this._lastObjectRendered = a; } if (!f) { var g = a.enableTempParent(); a.updateTransform(); a.disableTempParent(g); } this.renderTexture.bind(c); this.batch.currentRenderer.start(); if (d !== undefined ? d : this.clearBeforeRender) { this.renderTexture.clear(); } a.render(this); this.batch.currentRenderer.flush(); if (c) { c.baseTexture.update(); } this.runners.postrender.emit(); this.projection.transform = null; this.emit("postrender"); } }; b.prototype.generateTexture = function (b, c, d, e) { if (c === undefined) { c = {}; } var f = a.prototype.generateTexture.call(this, b, c, d, e); this.framebuffer.blit(); return f; }; b.prototype.resize = function (b, c) { a.prototype.resize.call(this, b, c); this.runners.resize.emit(this.screen.height, this.screen.width); }; b.prototype.reset = function () { this.runners.reset.emit(); return this; }; b.prototype.clear = function () { this.renderTexture.bind(); this.renderTexture.clear(); }; b.prototype.destroy = function (b) { this.runners.destroy.emit(); for (var c in this.runners) { this.runners[c].destroy(); } a.prototype.destroy.call(this, b); this.gl = null; }; Object.defineProperty(b.prototype, "extract", { get: function () { db("6.0.0", "Renderer#extract has been deprecated, please use Renderer#plugins.extract instead."); return this.plugins.extract; }, enumerable: false, configurable: true }); b.registerPlugin = function (a, c) { b.__plugins = b.__plugins || {}; b.__plugins[a] = c; }; return b; }(pe); var te = "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n gl_Position = filterVertexPosition();\n vTextureCoord = filterTextureCoord();\n}\n"; function ue() { this.texArray = null; this.blend = 0; this.type = qa.TRIANGLES; this.start = 0; this.size = 0; this.data = null; } var ve = function () { function a() { this.elements = []; this.ids = []; this.count = 0; } a.prototype.clear = function () { for (var a = 0; a < this.count; a++) { this.elements[a] = null; } this.count = 0; }; return a; }(); var we = function () { function a(a) { if (typeof a == "number") { this.rawBinaryData = new ArrayBuffer(a); } else if (a instanceof Uint8Array) { this.rawBinaryData = a.buffer; } else { this.rawBinaryData = a; } this.uint32View = new Uint32Array(this.rawBinaryData); this.float32View = new Float32Array(this.rawBinaryData); } Object.defineProperty(a.prototype, "int8View", { get: function () { this._int8View ||= new Int8Array(this.rawBinaryData); return this._int8View; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "uint8View", { get: function () { this._uint8View ||= new Uint8Array(this.rawBinaryData); return this._uint8View; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "int16View", { get: function () { this._int16View ||= new Int16Array(this.rawBinaryData); return this._int16View; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "uint16View", { get: function () { this._uint16View ||= new Uint16Array(this.rawBinaryData); return this._uint16View; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "int32View", { get: function () { this._int32View ||= new Int32Array(this.rawBinaryData); return this._int32View; }, enumerable: false, configurable: true }); a.prototype.view = function (a) { return this[a + "View"]; }; a.prototype.destroy = function () { this.rawBinaryData = null; this._int8View = null; this._uint8View = null; this._int16View = null; this._uint16View = null; this._int32View = null; this.uint32View = null; this.float32View = null; }; a.sizeOf = function (a) { switch (a) { case "int8": case "uint8": return 1; case "int16": case "uint16": return 2; case "int32": case "uint32": case "float32": return 4; default: throw new Error(a + " isn't a valid view type"); } }; return a; }(); var xe = function (a) { function b(b) { var c = a.call(this, b) || this; c.shaderGenerator = null; c.geometryClass = null; c.vertexSize = null; c.state = Qd.for2d(); c.size = Fa.SPRITE_BATCH_SIZE * 4; c._vertexCount = 0; c._indexCount = 0; c._bufferedElements = []; c._bufferedTextures = []; c._bufferSize = 0; c._shader = null; c._packedGeometries = []; c._packedGeometryPoolSize = 2; c._flushId = 0; c._aBuffers = {}; c._iBuffers = {}; c.MAX_TEXTURES = 1; c.renderer.on("prerender", c.onPrerender, c); b.runners.contextChange.add(c); c._dcIndex = 0; c._aIndex = 0; c._iIndex = 0; c._attributeBuffer = null; c._indexBuffer = null; c._tempBoundTextures = []; return c; } wc(b, a); b.prototype.contextChange = function () { var a = this.renderer.gl; if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) { this.MAX_TEXTURES = 1; } else { this.MAX_TEXTURES = Math.min(a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS), Fa.SPRITE_MAX_TEXTURES); this.MAX_TEXTURES = function (a, b) { if (a === 0) { throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`"); } for (var c = b.createShader(b.FRAGMENT_SHADER);;) { var d = Kd.replace(/%forloop%/gi, Ld(a)); b.shaderSource(c, d); b.compileShader(c); if (b.getShaderParameter(c, b.COMPILE_STATUS)) { break; } a = a / 2 | 0; } return a; }(this.MAX_TEXTURES, a); } this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES); for (var b = 0; b < this._packedGeometryPoolSize; b++) { this._packedGeometries[b] = new this.geometryClass(); } this.initFlushBuffers(); }; b.prototype.initFlushBuffers = function () { for (var a = b._drawCallPool, c = b._textureArrayPool, d = this.size / 4, e = Math.floor(d / this.MAX_TEXTURES) + 1; a.length < d;) { a.push(new ue()); } while (c.length < e) { c.push(new ve()); } for (var f = 0; f < this.MAX_TEXTURES; f++) { this._tempBoundTextures[f] = null; } }; b.prototype.onPrerender = function () { this._flushId = 0; }; b.prototype.render = function (a) { if (a._texture.valid) { if (this._vertexCount + a.vertexData.length / 2 > this.size) { this.flush(); } this._vertexCount += a.vertexData.length / 2; this._indexCount += a.indices.length; this._bufferedTextures[this._bufferSize] = a._texture.baseTexture; this._bufferedElements[this._bufferSize++] = a; } }; b.prototype.buildTexturesAndDrawCalls = function () { var a = this._bufferedTextures; var c = this.MAX_TEXTURES; var d = b._textureArrayPool; var e = this.renderer.batch; var f = this._tempBoundTextures; var g = this.renderer.textureGC.count; var h = ++Bc._globalBatch; var i = 0; var j = d[0]; var k = 0; e.copyBoundTextures(f, c); for (var l = 0; l < this._bufferSize; ++l) { var m = a[l]; a[l] = null; if (m._batchEnabled !== h) { if (j.count >= c) { e.boundArray(j, f, h, c); this.buildDrawCalls(j, k, l); k = l; j = d[++i]; ++h; } m._batchEnabled = h; m.touched = g; j.elements[j.count++] = m; } } if (j.count > 0) { e.boundArray(j, f, h, c); this.buildDrawCalls(j, k, this._bufferSize); ++i; ++h; } l = 0; for (; l < f.length; l++) { f[l] = null; } Bc._globalBatch = h; }; b.prototype.buildDrawCalls = function (a, c, d) { var e = this; var f = e._bufferedElements; var g = e._attributeBuffer; var h = e._indexBuffer; var i = e.vertexSize; var j = b._drawCallPool; var k = this._dcIndex; var l = this._aIndex; var m = this._iIndex; var n = j[k]; n.start = this._iIndex; n.texArray = a; for (var o = c; o < d; ++o) { var p = f[o]; var q = p._texture.baseTexture; var r = Sa[q.alphaMode ? 1 : 0][p.blendMode]; f[o] = null; if (c < o && n.blend !== r) { n.size = m - n.start; c = o; (n = j[++k]).texArray = a; n.start = m; } this.packInterleavedGeometry(p, g, h, l, m); l += p.vertexData.length / 2 * i; m += p.indices.length; n.blend = r; } if (c < d) { n.size = m - n.start; ++k; } this._dcIndex = k; this._aIndex = l; this._iIndex = m; }; b.prototype.bindAndClearTexArray = function (a) { for (var b = this.renderer.texture, c = 0; c < a.count; c++) { b.bind(a.elements[c], a.ids[c]); a.elements[c] = null; } a.count = 0; }; b.prototype.updateGeometry = function () { var a = this; var b = a._packedGeometries; var c = a._attributeBuffer; var d = a._indexBuffer; if (Fa.CAN_UPLOAD_SAME_BUFFER) { b[this._flushId]._buffer.update(c.rawBinaryData); b[this._flushId]._indexBuffer.update(d); this.renderer.geometry.updateBuffers(); } else { if (this._packedGeometryPoolSize <= this._flushId) { this._packedGeometryPoolSize++; b[this._flushId] = new this.geometryClass(); } b[this._flushId]._buffer.update(c.rawBinaryData); b[this._flushId]._indexBuffer.update(d); this.renderer.geometry.bind(b[this._flushId]); this.renderer.geometry.updateBuffers(); this._flushId++; } }; b.prototype.drawBatches = function () { for (var a = this._dcIndex, c = this.renderer, d = c.gl, e = c.state, f = b._drawCallPool, g = null, h = 0; h < a; h++) { var i = f[h]; var j = i.texArray; var k = i.type; var l = i.size; var m = i.start; var n = i.blend; if (g !== j) { g = j; this.bindAndClearTexArray(j); } this.state.blendMode = n; e.set(this.state); d.drawElements(k, l, d.UNSIGNED_SHORT, m * 2); } }; b.prototype.flush = function () { if (this._vertexCount !== 0) { this._attributeBuffer = this.getAttributeBuffer(this._vertexCount); this._indexBuffer = this.getIndexBuffer(this._indexCount); this._aIndex = 0; this._iIndex = 0; this._dcIndex = 0; this.buildTexturesAndDrawCalls(); this.updateGeometry(); this.drawBatches(); this._bufferSize = 0; this._vertexCount = 0; this._indexCount = 0; } }; b.prototype.start = function () { this.renderer.state.set(this.state); this.renderer.texture.ensureSamplerType(this.MAX_TEXTURES); this.renderer.shader.bind(this._shader); if (Fa.CAN_UPLOAD_SAME_BUFFER) { this.renderer.geometry.bind(this._packedGeometries[this._flushId]); } }; b.prototype.stop = function () { this.flush(); }; b.prototype.destroy = function () { for (var b = 0; b < this._packedGeometryPoolSize; b++) { if (this._packedGeometries[b]) { this._packedGeometries[b].destroy(); } } this.renderer.off("prerender", this.onPrerender, this); this._aBuffers = null; this._iBuffers = null; this._packedGeometries = null; this._attributeBuffer = null; this._indexBuffer = null; if (this._shader) { this._shader.destroy(); this._shader = null; } a.prototype.destroy.call(this); }; b.prototype.getAttributeBuffer = function (a) { var b = Xa(Math.ceil(a / 8)); var c = Za(b); var d = b * 8; if (this._aBuffers.length <= c) { this._iBuffers.length = c + 1; } var e = this._aBuffers[d]; if (!e) { this._aBuffers[d] = e = new we(d * this.vertexSize * 4); } return e; }; b.prototype.getIndexBuffer = function (a) { var b = Xa(Math.ceil(a / 12)); var c = Za(b); var d = b * 12; if (this._iBuffers.length <= c) { this._iBuffers.length = c + 1; } var e = this._iBuffers[c]; if (!e) { this._iBuffers[c] = e = new Uint16Array(d); } return e; }; b.prototype.packInterleavedGeometry = function (a, b, c, d, e) { for (var f = b.uint32View, g = b.float32View, h = d / this.vertexSize, i = a.uvs, j = a.indices, k = a.vertexData, l = a._texture.baseTexture._batchLocation, m = Math.min(a.worldAlpha, 1), n = m < 1 && a._texture.baseTexture.alphaMode ? Ua(a._tintRGB, m) : a._tintRGB + (m * 255 << 24), o = 0; o < k.length; o += 2) { g[d++] = k[o]; g[d++] = k[o + 1]; g[d++] = i[o]; g[d++] = i[o + 1]; f[d++] = n; g[d++] = l; } for (o = 0; o < j.length; o++) { c[e++] = h + j[o]; } }; b._drawCallPool = []; b._textureArrayPool = []; return b; }(jd); var ye = function () { function a(a, b) { this.vertexSrc = a; this.fragTemplate = b; this.programCache = {}; this.defaultGroupCache = {}; if (b.indexOf("%count%") < 0) { throw new Error("Fragment template must contain \"%count%\"."); } if (b.indexOf("%forloop%") < 0) { throw new Error("Fragment template must contain \"%forloop%\"."); } } a.prototype.generateShader = function (a) { if (!this.programCache[a]) { for (var b = new Int32Array(a), c = 0; c < a; c++) { b[c] = c; } this.defaultGroupCache[a] = ed.from({ uSamplers: b }, true); var d = this.fragTemplate; d = (d = d.replace(/%count%/gi, "" + a)).replace(/%forloop%/gi, this.generateSampleSrc(a)); this.programCache[a] = new Od(this.vertexSrc, d); } var e = { tint: new Float32Array([1, 1, 1, 1]), translationMatrix: new wb(), default: this.defaultGroupCache[a] }; return new Pd(this.programCache[a], e); }; a.prototype.generateSampleSrc = function (a) { var b = ""; b += "\n"; b += "\n"; for (var c = 0; c < a; c++) { if (c > 0) { b += "\nelse "; } if (c < a - 1) { b += "if(vTextureId < " + c + ".5)"; } b += "\n{"; b += "\n\tcolor = texture2D(uSamplers[" + c + "], vTextureCoord);"; b += "\n}"; } return (b += "\n") + "\n"; }; return a; }(); var ze = function (a) { function b(b) { if (b === undefined) { b = false; } var c = a.call(this) || this; c._buffer = new Xc(null, b, false); c._indexBuffer = new Xc(null, b, true); c.addAttribute("aVertexPosition", c._buffer, 2, false, ta.FLOAT).addAttribute("aTextureCoord", c._buffer, 2, false, ta.FLOAT).addAttribute("aColor", c._buffer, 4, true, ta.UNSIGNED_BYTE).addAttribute("aTextureId", c._buffer, 1, true, ta.FLOAT).addIndex(c._indexBuffer); return c; } wc(b, a); return b; }(ad); var Ae = "precision highp float;\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\nattribute float aTextureId;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform vec4 tint;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\n\nvoid main(void){\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vTextureId = aTextureId;\n vColor = aColor * tint;\n}\n"; var Be = "varying vec2 vTextureCoord;\nvarying vec4 vColor;\nvarying float vTextureId;\nuniform sampler2D uSamplers[%count%];\n\nvoid main(void){\n vec4 color;\n %forloop%\n gl_FragColor = color * vColor;\n}\n"; var Ce = function () { function a() {} a.create = function (a) { var b = Object.assign({ vertex: Ae, fragment: Be, geometryClass: ze, vertexSize: 6 }, a); var c = b.vertex; var d = b.fragment; var e = b.vertexSize; var f = b.geometryClass; return function (a) { function b(b) { var g = a.call(this, b) || this; g.shaderGenerator = new ye(c, d); g.geometryClass = f; g.vertexSize = e; return g; } wc(b, a); return b; }(xe); }; Object.defineProperty(a, "defaultVertexSrc", { get: function () { return Ae; }, enumerable: false, configurable: true }); Object.defineProperty(a, "defaultFragmentTemplate", { get: function () { return Be; }, enumerable: false, configurable: true }); return a; }(); var De = Ce.create(); var Ee = {}; function Fe(a) { Object.defineProperty(Ee, a, { get: function () { db("6.0.0", "PIXI.systems." + a + " has moved to PIXI." + a); return Lc[a]; } }); } for (var Ge in Lc) { Fe(Ge); } var He = {}; function Ie(a) { Object.defineProperty(He, a, { get: function () { db("6.0.0", "PIXI.resources." + a + " has moved to PIXI." + a); return ne[a]; } }); } for (var Ge in ne) { Ie(Ge); } var Je = function () { function a(b) { var c = this; this.stage = new dc(); b = Object.assign({ forceCanvas: false }, b); this.renderer = function (a) { return se.create(a); }(b); a._plugins.forEach(function (a) { a.init.call(c, b); }); } a.registerPlugin = function (b) { a._plugins.push(b); }; a.prototype.render = function () { this.renderer.render(this.stage); }; Object.defineProperty(a.prototype, "view", { get: function () { return this.renderer.view; }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "screen", { get: function () { return this.renderer.screen; }, enumerable: false, configurable: true }); a.prototype.destroy = function (b, c) { var d = this; var e = a._plugins.slice(0); e.reverse(); e.forEach(function (a) { a.destroy.call(d); }); this.stage.destroy(c); this.stage = null; this.renderer.destroy(b); this.renderer = null; }; a._plugins = []; return a; }(); var Ke = function () { function a() {} a.init = function (a) { var b = this; Object.defineProperty(this, "resizeTo", { set: function (a) { globalThis.removeEventListener("resize", this.queueResize); this._resizeTo = a; if (a) { globalThis.addEventListener("resize", this.queueResize); this.resize(); } }, get: function () { return this._resizeTo; } }); this.queueResize = function () { if (b._resizeTo) { b.cancelResize(); b._resizeId = requestAnimationFrame(function () { return b.resize(); }); } }; this.cancelResize = function () { if (b._resizeId) { cancelAnimationFrame(b._resizeId); b._resizeId = null; } }; this.resize = function () { if (b._resizeTo) { var a; var c; b.cancelResize(); if (b._resizeTo === globalThis.window) { a = globalThis.innerWidth; c = globalThis.innerHeight; } else { var d = b._resizeTo; a = d.clientWidth; c = d.clientHeight; } b.renderer.resize(a, c); } }; this._resizeId = null; this._resizeTo = null; this.resizeTo = a.resizeTo || null; }; a.destroy = function () { globalThis.removeEventListener("resize", this.queueResize); this.cancelResize(); this.cancelResize = null; this.queueResize = null; this.resizeTo = null; this.resize = null; }; return a; }(); Je.registerPlugin(Ke); var Le = new qb(); var Me = function () { function a(a) { this.renderer = a; } a.prototype.image = function (a, b, c) { var d = new Image(); d.src = this.base64(a, b, c); return d; }; a.prototype.base64 = function (a, b, c) { return this.canvas(a).toDataURL(b, c); }; a.prototype.canvas = function (b) { var c; var d; var e; var f = this.renderer; var g = false; var h = false; if (b) { if (b instanceof Tc) { e = b; } else { e = this.renderer.generateTexture(b); h = true; } } if (e) { c = e.baseTexture.resolution; d = e.frame; g = false; f.renderTexture.bind(e); } else { c = this.renderer.resolution; g = true; (d = Le).width = this.renderer.width; d.height = this.renderer.height; f.renderTexture.bind(null); } var i = Math.floor(d.width * c + 0.0001); var j = Math.floor(d.height * c + 0.0001); var k = new ib(i, j, 1); var l = new Uint8Array(i * 4 * j); var m = f.gl; m.readPixels(d.x * c, d.y * c, i, j, m.RGBA, m.UNSIGNED_BYTE, l); var n = k.context.getImageData(0, 0, i, j); a.arrayPostDivide(l, n.data); k.context.putImageData(n, 0, 0); if (g) { var o = new ib(k.width, k.height, 1); o.context.scale(1, -1); o.context.drawImage(k.canvas, 0, -j); k.destroy(); k = o; } if (h) { e.destroy(true); } return k.canvas; }; a.prototype.pixels = function (b) { var c; var d; var e; var f = this.renderer; var g = false; if (b) { if (b instanceof Tc) { e = b; } else { e = this.renderer.generateTexture(b); g = true; } } if (e) { c = e.baseTexture.resolution; d = e.frame; f.renderTexture.bind(e); } else { c = f.resolution; (d = Le).width = f.width; d.height = f.height; f.renderTexture.bind(null); } var h = d.width * c; var i = d.height * c; var j = new Uint8Array(h * 4 * i); var k = f.gl; k.readPixels(d.x * c, d.y * c, h, i, k.RGBA, k.UNSIGNED_BYTE, j); if (g) { e.destroy(true); } a.arrayPostDivide(j, j); return j; }; a.prototype.destroy = function () { this.renderer = null; }; a.arrayPostDivide = function (a, b) { for (var c = 0; c < a.length; c += 4) { var d = b[c + 3] = a[c + 3]; if (d !== 0) { b[c] = Math.round(Math.min(a[c] * 255 / d, 255)); b[c + 1] = Math.round(Math.min(a[c + 1] * 255 / d, 255)); b[c + 2] = Math.round(Math.min(a[c + 2] * 255 / d, 255)); } else { b[c] = a[c]; b[c + 1] = a[c + 1]; b[c + 2] = a[c + 2]; } } }; return a; }(); var Ne = function () { function a(a, b, c) { if (b === undefined) { b = false; } this._fn = a; this._once = b; this._thisArg = c; this._next = this._prev = this._owner = null; } a.prototype.detach = function () { return this._owner !== null && (this._owner.detach(this), true); }; return a; }(); function Oe(a, b) { if (a._head) { a._tail._next = b; b._prev = a._tail; a._tail = b; } else { a._head = b; a._tail = b; } b._owner = a; return b; } var Pe; var Qe = function () { function a() { this._head = this._tail = undefined; } a.prototype.handlers = function (a) { if (a === undefined) { a = false; } var b = this._head; if (a) { return !!b; } for (var c = []; b;) { c.push(b); b = b._next; } return c; }; a.prototype.has = function (a) { if (!(a instanceof Ne)) { throw new Error("MiniSignal#has(): First arg must be a SignalBinding object."); } return a._owner === this; }; a.prototype.dispatch = function () { for (var a = arguments, b = [], c = 0; c < arguments.length; c++) { b[c] = a[c]; } var d = this._head; if (!d) { return false; } while (d) { if (d._once) { this.detach(d); } d._fn.apply(d._thisArg, b); d = d._next; } return true; }; a.prototype.add = function (a, b) { if (b === undefined) { b = null; } if (typeof a != "function") { throw new Error("MiniSignal#add(): First arg must be a Function."); } return Oe(this, new Ne(a, false, b)); }; a.prototype.once = function (a, b) { if (b === undefined) { b = null; } if (typeof a != "function") { throw new Error("MiniSignal#once(): First arg must be a Function."); } return Oe(this, new Ne(a, true, b)); }; a.prototype.detach = function (a) { if (!(a instanceof Ne)) { throw new Error("MiniSignal#detach(): First arg must be a SignalBinding object."); } if (a._owner === this) { if (a._prev) { a._prev._next = a._next; } if (a._next) { a._next._prev = a._prev; } if (a === this._head) { this._head = a._next; if (a._next === null) { this._tail = null; } } else if (a === this._tail) { this._tail = a._prev; this._tail._next = null; } a._owner = null; } return this; }; a.prototype.detachAll = function () { var a = this._head; if (!a) { return this; } for (this._head = this._tail = null; a;) { a._owner = null; a = a._next; } return this; }; return a; }(); function Re(a, b) { b = b || {}; for (var c = { key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"], q: { name: "queryKey", parser: /(?:^|&)([^&=]*)=?([^&]*)/g }, parser: { strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ } }, d = c.parser[b.strictMode ? "strict" : "loose"].exec(a), e = {}, f = 14; f--;) { e[c.key[f]] = d[f] || ""; } e[c.q.name] = {}; e[c.key[12]].replace(c.q.parser, function (a, b, d) { if (b) { e[c.q.name][b] = d; } }); return e; } var Se = null; function Te() {} function Ue(a, b, c) { if (b && b.indexOf(".") === 0) { b = b.substring(1); } if (b) { a[b] = c; } } function Ve(a) { return a.toString().replace("object ", ""); } var We = function () { function a(b, c, d) { this._dequeue = Te; this._onLoadBinding = null; this._elementTimer = 0; this._boundComplete = null; this._boundOnError = null; this._boundOnProgress = null; this._boundOnTimeout = null; this._boundXhrOnError = null; this._boundXhrOnTimeout = null; this._boundXhrOnAbort = null; this._boundXhrOnLoad = null; if (typeof b != "string" || typeof c != "string") { throw new Error("Both name and url are required for constructing a resource."); } d = d || {}; this._flags = 0; this._setFlag(a.STATUS_FLAGS.DATA_URL, c.indexOf("data:") === 0); this.name = b; this.url = c; this.extension = this._getExtension(); this.data = null; this.crossOrigin = d.crossOrigin === true ? "anonymous" : d.crossOrigin; this.timeout = d.timeout || 0; this.loadType = d.loadType || this._determineLoadType(); this.xhrType = d.xhrType; this.metadata = d.metadata || {}; this.error = null; this.xhr = null; this.children = []; this.type = a.TYPE.UNKNOWN; this.progressChunk = 0; this._dequeue = Te; this._onLoadBinding = null; this._elementTimer = 0; this._boundComplete = this.complete.bind(this); this._boundOnError = this._onError.bind(this); this._boundOnProgress = this._onProgress.bind(this); this._boundOnTimeout = this._onTimeout.bind(this); this._boundXhrOnError = this._xhrOnError.bind(this); this._boundXhrOnTimeout = this._xhrOnTimeout.bind(this); this._boundXhrOnAbort = this._xhrOnAbort.bind(this); this._boundXhrOnLoad = this._xhrOnLoad.bind(this); this.onStart = new Qe(); this.onProgress = new Qe(); this.onComplete = new Qe(); this.onAfterMiddleware = new Qe(); } a.setExtensionLoadType = function (b, c) { Ue(a._loadTypeMap, b, c); }; a.setExtensionXhrType = function (b, c) { Ue(a._xhrTypeMap, b, c); }; Object.defineProperty(a.prototype, "isDataUrl", { get: function () { return this._hasFlag(a.STATUS_FLAGS.DATA_URL); }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "isComplete", { get: function () { return this._hasFlag(a.STATUS_FLAGS.COMPLETE); }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "isLoading", { get: function () { return this._hasFlag(a.STATUS_FLAGS.LOADING); }, enumerable: false, configurable: true }); a.prototype.complete = function () { this._clearEvents(); this._finish(); }; a.prototype.abort = function (b) { if (!this.error) { this.error = new Error(b); this._clearEvents(); if (this.xhr) { this.xhr.abort(); } else if (this.xdr) { this.xdr.abort(); } else if (this.data) { if (this.data.src) { this.data.src = a.EMPTY_GIF; } else { while (this.data.firstChild) { this.data.removeChild(this.data.firstChild); } } } this._finish(); } }; a.prototype.load = function (b) { var c = this; if (!this.isLoading) { if (this.isComplete) { if (b) { setTimeout(function () { return b(c); }, 1); } } else { if (b) { this.onComplete.once(b); } this._setFlag(a.STATUS_FLAGS.LOADING, true); this.onStart.dispatch(this); if (this.crossOrigin === false || typeof this.crossOrigin != "string") { this.crossOrigin = this._determineCrossOrigin(this.url); } switch (this.loadType) { case a.LOAD_TYPE.IMAGE: this.type = a.TYPE.IMAGE; this._loadElement("image"); break; case a.LOAD_TYPE.AUDIO: this.type = a.TYPE.AUDIO; this._loadSourceElement("audio"); break; case a.LOAD_TYPE.VIDEO: this.type = a.TYPE.VIDEO; this._loadSourceElement("video"); break; case a.LOAD_TYPE.XHR: default: if (Pe === undefined) { Pe = !!globalThis.XDomainRequest && !("withCredentials" in new XMLHttpRequest()); } if (Pe && this.crossOrigin) { this._loadXdr(); } else { this._loadXhr(); } } } } }; a.prototype._hasFlag = function (a) { return (this._flags & a) != 0; }; a.prototype._setFlag = function (a, b) { this._flags = b ? this._flags | a : this._flags & ~a; }; a.prototype._clearEvents = function () { clearTimeout(this._elementTimer); if (this.data && this.data.removeEventListener) { this.data.removeEventListener("error", this._boundOnError, false); this.data.removeEventListener("load", this._boundComplete, false); this.data.removeEventListener("progress", this._boundOnProgress, false); this.data.removeEventListener("canplaythrough", this._boundComplete, false); } if (this.xhr) { if (this.xhr.removeEventListener) { this.xhr.removeEventListener("error", this._boundXhrOnError, false); this.xhr.removeEventListener("timeout", this._boundXhrOnTimeout, false); this.xhr.removeEventListener("abort", this._boundXhrOnAbort, false); this.xhr.removeEventListener("progress", this._boundOnProgress, false); this.xhr.removeEventListener("load", this._boundXhrOnLoad, false); } else { this.xhr.onerror = null; this.xhr.ontimeout = null; this.xhr.onprogress = null; this.xhr.onload = null; } } }; a.prototype._finish = function () { if (this.isComplete) { throw new Error("Complete called again for an already completed resource."); } this._setFlag(a.STATUS_FLAGS.COMPLETE, true); this._setFlag(a.STATUS_FLAGS.LOADING, false); this.onComplete.dispatch(this); }; a.prototype._loadElement = function (a) { if (this.metadata.loadElement) { this.data = this.metadata.loadElement; } else if (a === "image" && globalThis.Image !== undefined) { this.data = new Image(); } else { this.data = document.createElement(a); } if (this.crossOrigin) { this.data.crossOrigin = this.crossOrigin; } if (!this.metadata.skipSource) { this.data.src = this.url; } this.data.addEventListener("error", this._boundOnError, false); this.data.addEventListener("load", this._boundComplete, false); this.data.addEventListener("progress", this._boundOnProgress, false); if (this.timeout) { this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout); } }; a.prototype._loadSourceElement = function (a) { if (this.metadata.loadElement) { this.data = this.metadata.loadElement; } else if (a === "audio" && globalThis.Audio !== undefined) { this.data = new Audio(); } else { this.data = document.createElement(a); } if (this.data !== null) { if (this.crossOrigin) { this.data.crossOrigin = this.crossOrigin; } if (!this.metadata.skipSource) { if (navigator.isCocoonJS) { this.data.src = Array.isArray(this.url) ? this.url[0] : this.url; } else if (Array.isArray(this.url)) { for (var b = this.metadata.mimeType, c = 0; c < this.url.length; ++c) { this.data.appendChild(this._createSource(a, this.url[c], Array.isArray(b) ? b[c] : b)); } } else { b = this.metadata.mimeType; this.data.appendChild(this._createSource(a, this.url, Array.isArray(b) ? b[0] : b)); } } this.data.addEventListener("error", this._boundOnError, false); this.data.addEventListener("load", this._boundComplete, false); this.data.addEventListener("progress", this._boundOnProgress, false); this.data.addEventListener("canplaythrough", this._boundComplete, false); this.data.load(); if (this.timeout) { this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout); } } else { this.abort("Unsupported element: " + a); } }; a.prototype._loadXhr = function () { if (typeof this.xhrType != "string") { this.xhrType = this._determineXhrType(); } var b = this.xhr = new XMLHttpRequest(); if (this.crossOrigin === "use-credentials") { b.withCredentials = true; } b.open("GET", this.url, true); b.timeout = this.timeout; if (this.xhrType === a.XHR_RESPONSE_TYPE.JSON || this.xhrType === a.XHR_RESPONSE_TYPE.DOCUMENT) { b.responseType = a.XHR_RESPONSE_TYPE.TEXT; } else { b.responseType = this.xhrType; } b.addEventListener("error", this._boundXhrOnError, false); b.addEventListener("timeout", this._boundXhrOnTimeout, false); b.addEventListener("abort", this._boundXhrOnAbort, false); b.addEventListener("progress", this._boundOnProgress, false); b.addEventListener("load", this._boundXhrOnLoad, false); b.send(); }; a.prototype._loadXdr = function () { if (typeof this.xhrType != "string") { this.xhrType = this._determineXhrType(); } var a = this.xhr = new globalThis.XDomainRequest(); a.timeout = this.timeout || 5000; a.onerror = this._boundXhrOnError; a.ontimeout = this._boundXhrOnTimeout; a.onprogress = this._boundOnProgress; a.onload = this._boundXhrOnLoad; a.open("GET", this.url, true); setTimeout(function () { return a.send(); }, 1); }; a.prototype._createSource = function (a, b, c) { c ||= a + "/" + this._getExtension(b); var d = document.createElement("source"); d.src = b; d.type = c; return d; }; a.prototype._onError = function (a) { this.abort("Failed to load element using: " + a.target.nodeName); }; a.prototype._onProgress = function (a) { if (a && a.lengthComputable) { this.onProgress.dispatch(this, a.loaded / a.total); } }; a.prototype._onTimeout = function () { this.abort("Load timed out."); }; a.prototype._xhrOnError = function () { var a = this.xhr; this.abort(Ve(a) + " Request failed. Status: " + a.status + ", text: \"" + a.statusText + "\""); }; a.prototype._xhrOnTimeout = function () { var a = this.xhr; this.abort(Ve(a) + " Request timed out."); }; a.prototype._xhrOnAbort = function () { var a = this.xhr; this.abort(Ve(a) + " Request was aborted by the user."); }; a.prototype._xhrOnLoad = function () { var b = this.xhr; var c = ""; var d = b.status === undefined ? 200 : b.status; if (b.responseType === "" || b.responseType === "text" || b.responseType === undefined) { c = b.responseText; } if (d === 0 && (c.length > 0 || b.responseType === a.XHR_RESPONSE_TYPE.BUFFER)) { d = 200; } else if (d === 1223) { d = 204; } if ((d / 100 | 0) == 2) { if (this.xhrType === a.XHR_RESPONSE_TYPE.TEXT) { this.data = c; this.type = a.TYPE.TEXT; } else if (this.xhrType === a.XHR_RESPONSE_TYPE.JSON) { try { this.data = JSON.parse(c); this.type = a.TYPE.JSON; } catch (a) { this.abort("Error trying to parse loaded json: " + a); return; } } else if (this.xhrType === a.XHR_RESPONSE_TYPE.DOCUMENT) { try { if (globalThis.DOMParser) { var e = new DOMParser(); this.data = e.parseFromString(c, "text/xml"); } else { var f = document.createElement("div"); f.innerHTML = c; this.data = f; } this.type = a.TYPE.XML; } catch (a) { this.abort("Error trying to parse loaded xml: " + a); return; } } else { this.data = b.response || c; } this.complete(); } else { this.abort("[" + b.status + "] " + b.statusText + ": " + b.responseURL); } }; a.prototype._determineCrossOrigin = function (a, b) { if (a.indexOf("data:") === 0) { return ""; } if (globalThis.origin !== globalThis.location.origin) { return "anonymous"; } b = b || globalThis.location; Se ||= document.createElement("a"); Se.href = a; var c = Re(Se.href, { strictMode: true }); var d = !c.port && b.port === "" || c.port === b.port; var e = c.protocol ? c.protocol + ":" : ""; if (c.host === b.hostname && d && e === b.protocol) { return ""; } else { return "anonymous"; } }; a.prototype._determineXhrType = function () { return a._xhrTypeMap[this.extension] || a.XHR_RESPONSE_TYPE.TEXT; }; a.prototype._determineLoadType = function () { return a._loadTypeMap[this.extension] || a.LOAD_TYPE.XHR; }; a.prototype._getExtension = function (a) { if (a === undefined) { a = this.url; } var b = ""; if (this.isDataUrl) { var c = a.indexOf("/"); b = a.substring(c + 1, a.indexOf(";", c)); } else { var d = a.indexOf("?"); var e = a.indexOf("#"); var f = Math.min(d > -1 ? d : a.length, e > -1 ? e : a.length); b = (a = a.substring(0, f)).substring(a.lastIndexOf(".") + 1); } return b.toLowerCase(); }; a.prototype._getMimeFromXhrType = function (b) { switch (b) { case a.XHR_RESPONSE_TYPE.BUFFER: return "application/octet-binary"; case a.XHR_RESPONSE_TYPE.BLOB: return "application/blob"; case a.XHR_RESPONSE_TYPE.DOCUMENT: return "application/xml"; case a.XHR_RESPONSE_TYPE.JSON: return "application/json"; case a.XHR_RESPONSE_TYPE.DEFAULT: case a.XHR_RESPONSE_TYPE.TEXT: default: return "text/plain"; } }; return a; }(); function Xe() {} function Ye(a) { return function () { for (var b = arguments, c = [], d = 0; d < arguments.length; d++) { c[d] = b[d]; } if (a === null) { throw new Error("Callback was already called."); } var e = a; a = null; e.apply(this, c); }; } (function (a) { var b; var c; var d; var e; (b = a.STATUS_FLAGS ||= {})[b.NONE = 0] = "NONE"; b[b.DATA_URL = 1] = "DATA_URL"; b[b.COMPLETE = 2] = "COMPLETE"; b[b.LOADING = 4] = "LOADING"; (c = a.TYPE ||= {})[c.UNKNOWN = 0] = "UNKNOWN"; c[c.JSON = 1] = "JSON"; c[c.XML = 2] = "XML"; c[c.IMAGE = 3] = "IMAGE"; c[c.AUDIO = 4] = "AUDIO"; c[c.VIDEO = 5] = "VIDEO"; c[c.TEXT = 6] = "TEXT"; (d = a.LOAD_TYPE ||= {})[d.XHR = 1] = "XHR"; d[d.IMAGE = 2] = "IMAGE"; d[d.AUDIO = 3] = "AUDIO"; d[d.VIDEO = 4] = "VIDEO"; (e = a.XHR_RESPONSE_TYPE ||= {}).DEFAULT = "text"; e.BUFFER = "arraybuffer"; e.BLOB = "blob"; e.DOCUMENT = "document"; e.JSON = "json"; e.TEXT = "text"; a._loadTypeMap = { gif: a.LOAD_TYPE.IMAGE, png: a.LOAD_TYPE.IMAGE, bmp: a.LOAD_TYPE.IMAGE, jpg: a.LOAD_TYPE.IMAGE, jpeg: a.LOAD_TYPE.IMAGE, tif: a.LOAD_TYPE.IMAGE, tiff: a.LOAD_TYPE.IMAGE, webp: a.LOAD_TYPE.IMAGE, tga: a.LOAD_TYPE.IMAGE, svg: a.LOAD_TYPE.IMAGE, "svg+xml": a.LOAD_TYPE.IMAGE, mp3: a.LOAD_TYPE.AUDIO, ogg: a.LOAD_TYPE.AUDIO, wav: a.LOAD_TYPE.AUDIO, mp4: a.LOAD_TYPE.VIDEO, webm: a.LOAD_TYPE.VIDEO }; a._xhrTypeMap = { xhtml: a.XHR_RESPONSE_TYPE.DOCUMENT, html: a.XHR_RESPONSE_TYPE.DOCUMENT, htm: a.XHR_RESPONSE_TYPE.DOCUMENT, xml: a.XHR_RESPONSE_TYPE.DOCUMENT, tmx: a.XHR_RESPONSE_TYPE.DOCUMENT, svg: a.XHR_RESPONSE_TYPE.DOCUMENT, tsx: a.XHR_RESPONSE_TYPE.DOCUMENT, gif: a.XHR_RESPONSE_TYPE.BLOB, png: a.XHR_RESPONSE_TYPE.BLOB, bmp: a.XHR_RESPONSE_TYPE.BLOB, jpg: a.XHR_RESPONSE_TYPE.BLOB, jpeg: a.XHR_RESPONSE_TYPE.BLOB, tif: a.XHR_RESPONSE_TYPE.BLOB, tiff: a.XHR_RESPONSE_TYPE.BLOB, webp: a.XHR_RESPONSE_TYPE.BLOB, tga: a.XHR_RESPONSE_TYPE.BLOB, json: a.XHR_RESPONSE_TYPE.JSON, text: a.XHR_RESPONSE_TYPE.TEXT, txt: a.XHR_RESPONSE_TYPE.TEXT, ttf: a.XHR_RESPONSE_TYPE.BUFFER, otf: a.XHR_RESPONSE_TYPE.BUFFER }; a.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="; })(We ||= {}); function Ze(a, b) { this.data = a; this.callback = b; } var $e = function () { function a(a, b) { var c = this; if (b === undefined) { b = 1; } this.workers = 0; this.saturated = Xe; this.unsaturated = Xe; this.empty = Xe; this.drain = Xe; this.error = Xe; this.started = false; this.paused = false; this._tasks = []; this._insert = function (a, b, d) { if (d && typeof d != "function") { throw new Error("task callback must be a function"); } c.started = true; if (a == null && c.idle()) { setTimeout(function () { return c.drain(); }, 1); } else { var e = new Ze(a, typeof d == "function" ? d : Xe); if (b) { c._tasks.unshift(e); } else { c._tasks.push(e); } setTimeout(c.process, 1); } }; this.process = function () { while (!c.paused && c.workers < c.concurrency && c._tasks.length) { var a = c._tasks.shift(); if (c._tasks.length === 0) { c.empty(); } c.workers += 1; if (c.workers === c.concurrency) { c.saturated(); } c._worker(a.data, Ye(c._next(a))); } }; this._worker = a; if (b === 0) { throw new Error("Concurrency must not be zero"); } this.concurrency = b; this.buffer = b / 4; } a.prototype._next = function (a) { var b = this; return function () { for (var c = arguments, d = [], e = 0; e < arguments.length; e++) { d[e] = c[e]; } b.workers -= 1; a.callback.apply(a, d); if (d[0] != null) { b.error(d[0], a.data); } if (b.workers <= b.concurrency - b.buffer) { b.unsaturated(); } if (b.idle()) { b.drain(); } b.process(); }; }; a.prototype.push = function (a, b) { this._insert(a, false, b); }; a.prototype.kill = function () { this.workers = 0; this.drain = Xe; this.started = false; this._tasks = []; }; a.prototype.unshift = function (a, b) { this._insert(a, true, b); }; a.prototype.length = function () { return this._tasks.length; }; a.prototype.running = function () { return this.workers; }; a.prototype.idle = function () { return this._tasks.length + this.workers === 0; }; a.prototype.pause = function () { if (this.paused !== true) { this.paused = true; } }; a.prototype.resume = function () { if (this.paused !== false) { this.paused = false; for (var a = 1; a <= this.concurrency; a++) { this.process(); } } }; a.eachSeries = function (a, b, c, d) { var e = 0; var f = a.length; (function h(g) { if (g || e === f) { if (c) { c(g); } } else if (d) { setTimeout(function () { b(a[e++], h); }, 1); } else { b(a[e++], h); } })(); }; a.queue = function (b, c) { return new a(b, c); }; return a; }(); var _e = /(#[\w-]+)?$/; var af = function () { function a(b, c) { var d = this; if (b === undefined) { b = ""; } if (c === undefined) { c = 10; } this.progress = 0; this.loading = false; this.defaultQueryString = ""; this._beforeMiddleware = []; this._afterMiddleware = []; this._resourcesParsing = []; this._boundLoadResource = function (a, b) { return d._loadResource(a, b); }; this.resources = {}; this.baseUrl = b; this._beforeMiddleware = []; this._afterMiddleware = []; this._resourcesParsing = []; this._boundLoadResource = function (a, b) { return d._loadResource(a, b); }; this._queue = $e.queue(this._boundLoadResource, c); this._queue.pause(); this.resources = {}; this.onProgress = new Qe(); this.onError = new Qe(); this.onLoad = new Qe(); this.onStart = new Qe(); this.onComplete = new Qe(); for (var e = 0; e < a._plugins.length; ++e) { var f = a._plugins[e]; var g = f.pre; var h = f.use; if (g) { this.pre(g); } if (h) { this.use(h); } } this._protected = false; } a.prototype._add = function (a, b, c, d) { if (this.loading && (!c || !c.parentResource)) { throw new Error("Cannot add resources while the loader is running."); } if (this.resources[a]) { throw new Error("Resource named \"" + a + "\" already exists."); } b = this._prepareUrl(b); this.resources[a] = new We(a, b, c); if (typeof d == "function") { this.resources[a].onAfterMiddleware.once(d); } if (this.loading) { for (var e = c.parentResource, f = [], g = 0; g < e.children.length; ++g) { if (!e.children[g].isComplete) { f.push(e.children[g]); } } var h = e.progressChunk * (f.length + 1) / (f.length + 2); e.children.push(this.resources[a]); e.progressChunk = h; g = 0; for (; g < f.length; ++g) { f[g].progressChunk = h; } this.resources[a].progressChunk = h; } this._queue.push(this.resources[a]); return this; }; a.prototype.pre = function (a) { this._beforeMiddleware.push(a); return this; }; a.prototype.use = function (a) { this._afterMiddleware.push(a); return this; }; a.prototype.reset = function () { this.progress = 0; this.loading = false; this._queue.kill(); this._queue.pause(); for (var a in this.resources) { var b = this.resources[a]; if (b._onLoadBinding) { b._onLoadBinding.detach(); } if (b.isLoading) { b.abort("loader reset"); } } this.resources = {}; return this; }; a.prototype.load = function (a) { if (typeof a == "function") { this.onComplete.once(a); } if (this.loading) { return this; } if (this._queue.idle()) { this._onStart(); this._onComplete(); } else { for (var b = 100 / this._queue._tasks.length, c = 0; c < this._queue._tasks.length; ++c) { this._queue._tasks[c].data.progressChunk = b; } this._onStart(); this._queue.resume(); } return this; }; Object.defineProperty(a.prototype, "concurrency", { get: function () { return this._queue.concurrency; }, set: function (a) { this._queue.concurrency = a; }, enumerable: false, configurable: true }); a.prototype._prepareUrl = function (a) { var b; var c = Re(a, { strictMode: true }); b = c.protocol || !c.path || a.indexOf("//") === 0 ? a : this.baseUrl.length && this.baseUrl.lastIndexOf("/") !== this.baseUrl.length - 1 && a.charAt(0) !== "/" ? this.baseUrl + "/" + a : this.baseUrl + a; if (this.defaultQueryString) { var d = _e.exec(b)[0]; if ((b = b.slice(0, b.length - d.length)).indexOf("?") !== -1) { b += "&" + this.defaultQueryString; } else { b += "?" + this.defaultQueryString; } b += d; } return b; }; a.prototype._loadResource = function (a, b) { var c = this; a._dequeue = b; $e.eachSeries(this._beforeMiddleware, function (b, d) { b.call(c, a, function () { d(a.isComplete ? {} : null); }); }, function () { if (a.isComplete) { c._onLoad(a); } else { a._onLoadBinding = a.onComplete.once(c._onLoad, c); a.load(); } }, true); }; a.prototype._onStart = function () { this.progress = 0; this.loading = true; this.onStart.dispatch(this); }; a.prototype._onComplete = function () { this.progress = 100; this.loading = false; this.onComplete.dispatch(this, this.resources); }; a.prototype._onLoad = function (a) { var b = this; a._onLoadBinding = null; this._resourcesParsing.push(a); a._dequeue(); $e.eachSeries(this._afterMiddleware, function (c, d) { c.call(b, a, d); }, function () { a.onAfterMiddleware.dispatch(a); b.progress = Math.min(100, b.progress + a.progressChunk); b.onProgress.dispatch(b, a); if (a.error) { b.onError.dispatch(a.error, b, a); } else { b.onLoad.dispatch(b, a); } b._resourcesParsing.splice(b._resourcesParsing.indexOf(a), 1); if (b._queue.idle() && b._resourcesParsing.length === 0) { b._onComplete(); } }, true); }; a.prototype.destroy = function () { if (!this._protected) { this.reset(); } }; Object.defineProperty(a, "shared", { get: function () { var b = a._shared; if (!b) { (b = new a())._protected = true; a._shared = b; } return b; }, enumerable: false, configurable: true }); a.registerPlugin = function (b) { a._plugins.push(b); if (b.add) { b.add(); } return a; }; a._plugins = []; return a; }(); af.prototype.add = function (a, b, c, d) { if (Array.isArray(a)) { for (var e = 0; e < a.length; ++e) { this.add(a[e]); } return this; } if (typeof a == "object") { c = a; d = b || c.callback || c.onComplete; b = c.url; a = c.name || c.key || c.url; } if (typeof b != "string") { d = c; c = b; b = a; } if (typeof b != "string") { throw new Error("No url passed to add resource to loader."); } if (typeof c == "function") { d = c; c = null; } return this._add(a, b, c, d); }; var bf; var cf; var df = function () { function a() {} a.init = function (a) { a = Object.assign({ sharedLoader: false }, a); this.loader = a.sharedLoader ? af.shared : new af(); }; a.destroy = function () { if (this.loader) { this.loader.destroy(); this.loader = null; } }; return a; }(); var ef = function () { function a() {} a.add = function () { We.setExtensionLoadType("svg", We.LOAD_TYPE.XHR); We.setExtensionXhrType("svg", We.XHR_RESPONSE_TYPE.TEXT); }; a.use = function (a, b) { if (!a.data || a.type !== We.TYPE.IMAGE && a.extension !== "svg") { b(); } else { var c = a.data; var d = a.url; var e = a.name; var f = a.metadata; Sc.fromLoader(c, d, e, f).then(function (c) { a.texture = c; b(); }).catch(b); } }; return a; }(); af.registerPlugin({ use: function (a, b) { if (a.data) { if (a.xhr && a.xhrType === We.XHR_RESPONSE_TYPE.BLOB) { if (self.Blob && typeof a.data != "string") { if (a.data.type.indexOf("image") === 0) { var c = globalThis.URL || globalThis.webkitURL; var d = c.createObjectURL(a.data); a.blob = a.data; a.data = new Image(); a.data.src = d; a.type = We.TYPE.IMAGE; a.data.onload = function () { c.revokeObjectURL(d); a.data.onload = null; b(); }; return; } } else { var e = a.xhr.getResponseHeader("content-type"); if (e && e.indexOf("image") === 0) { a.data = new Image(); a.data.src = "data:" + e + ";base64," + function (a) { for (var b = "", c = 0; c < a.length;) { for (var d = [0, 0, 0], e = [0, 0, 0, 0], f = 0; f < d.length; ++f) { if (c < a.length) { d[f] = a.charCodeAt(c++) & 255; } else { d[f] = 0; } } e[0] = d[0] >> 2; e[1] = (d[0] & 3) << 4 | d[1] >> 4; e[2] = (d[1] & 15) << 2 | d[2] >> 6; e[3] = d[2] & 63; switch (c - (a.length - 1)) { case 2: e[3] = 64; e[2] = 64; break; case 1: e[3] = 64; } for (f = 0; f < e.length; ++f) { b += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e[f]); } } return b; }(a.xhr.responseText); a.type = We.TYPE.IMAGE; a.data.onload = function () { a.data.onload = null; b(); }; return; } } } b(); } else { b(); } } }); af.registerPlugin(ef); (function (a) { a[a.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT"; a[a.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT"; a[a.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT"; a[a.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT"; a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; a[a.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT"; a[a.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC"; a[a.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC"; a[a.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC"; a[a.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC"; a[a.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2"; a[a.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC"; a[a.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2"; a[a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; a[a.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; a[a.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; a[a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG"; a[a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG"; a[a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG"; a[a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG"; a[a.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL"; a[a.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL"; a[a.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL"; a[a.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL"; })(cf ||= {}); (bf = {})[cf.COMPRESSED_RGB_S3TC_DXT1_EXT] = 0.5; bf[cf.COMPRESSED_RGBA_S3TC_DXT1_EXT] = 0.5; bf[cf.COMPRESSED_RGBA_S3TC_DXT3_EXT] = 1; bf[cf.COMPRESSED_RGBA_S3TC_DXT5_EXT] = 1; bf[cf.COMPRESSED_SRGB_S3TC_DXT1_EXT] = 0.5; bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT] = 0.5; bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT] = 1; bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT] = 1; bf[cf.COMPRESSED_R11_EAC] = 0.5; bf[cf.COMPRESSED_SIGNED_R11_EAC] = 0.5; bf[cf.COMPRESSED_RG11_EAC] = 1; bf[cf.COMPRESSED_SIGNED_RG11_EAC] = 1; bf[cf.COMPRESSED_RGB8_ETC2] = 0.5; bf[cf.COMPRESSED_RGBA8_ETC2_EAC] = 1; bf[cf.COMPRESSED_SRGB8_ETC2] = 0.5; bf[cf.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC] = 1; bf[cf.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 0.5; bf[cf.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 0.5; bf[cf.COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 0.5; bf[cf.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 0.5; bf[cf.COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 0.25; bf[cf.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 0.25; bf[cf.COMPRESSED_RGB_ETC1_WEBGL] = 0.5; bf[cf.COMPRESSED_RGB_ATC_WEBGL] = 0.5; bf[cf.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 1; bf[cf.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 1; var ff = bf; function gf(a, b) { gf = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return gf(a, b); } function hf(a, b) { function c() { this.constructor = a; } gf(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var jf; var kf; var lf = function (a) { function b(b, c) { if (c === undefined) { c = { width: 1, height: 1, autoLoad: true }; } var d; var e; var f = this; if (typeof b == "string") { d = b; e = new Uint8Array(); } else { d = null; e = b; } (f = a.call(this, e, c) || this).origin = d; f.buffer = e ? new we(e) : null; if (f.origin && c.autoLoad !== false) { f.load(); } if (e && e.length) { f.loaded = true; f.onBlobLoaded(f.buffer.rawBinaryData); } return f; } hf(b, a); b.prototype.onBlobLoaded = function (a) {}; b.prototype.load = function () { a = this; undefined; c = function () { var a; return function (a, b) { var c; var d; var e; var f; var g = { label: 0, sent: function () { if (e[0] & 1) { throw e[1]; } return e[1]; }, trys: [], ops: [] }; f = { next: h(0), throw: h(1), return: h(2) }; if (typeof Symbol == "function") { f[Symbol.iterator] = function () { return this; }; } return f; function h(f) { return function (h) { return function (f) { if (c) { throw new TypeError("Generator is already executing."); } while (g) { try { c = 1; if (d && (e = f[0] & 2 ? d.return : f[0] ? d.throw || ((e = d.return) && e.call(d), 0) : d.next) && !(e = e.call(d, f[1])).done) { return e; } d = 0; if (e) { f = [f[0] & 2, e.value]; } switch (f[0]) { case 0: case 1: e = f; break; case 4: g.label++; return { value: f[1], done: false }; case 5: g.label++; d = f[1]; f = [0]; continue; case 7: f = g.ops.pop(); g.trys.pop(); continue; default: if (!(e = (e = g.trys).length > 0 && e[e.length - 1]) && (f[0] === 6 || f[0] === 2)) { g = 0; continue; } if (f[0] === 3 && (!e || f[1] > e[0] && f[1] < e[3])) { g.label = f[1]; break; } if (f[0] === 6 && g.label < e[1]) { g.label = e[1]; e = f; break; } if (e && g.label < e[2]) { g.label = e[2]; g.ops.push(f); break; } if (e[2]) { g.ops.pop(); } g.trys.pop(); continue; } f = b.call(a, g); } catch (a) { f = [6, a]; d = 0; } finally { c = e = 0; } } if (f[0] & 5) { throw f[1]; } return { value: f[0] ? f[1] : undefined, done: true }; }([f, h]); }; } }(this, function (b) { switch (b.label) { case 0: return [4, fetch(this.origin)]; case 1: return [4, b.sent().blob()]; case 2: return [4, b.sent().arrayBuffer()]; case 3: a = b.sent(); this.data = new Uint32Array(a); this.buffer = new we(a); this.loaded = true; this.onBlobLoaded(a); this.update(); return [2, this]; } }); }; return new((b = Promise) || (b = Promise))(function (d, e) { function f(a) { try { h(c.next(a)); } catch (a) { e(a); } } function g(a) { try { h(c.throw(a)); } catch (a) { e(a); } } function h(a) { if (a.done) { d(a.value); } else { new b(function (b) { b(a.value); }).then(f, g); } } h((c = c.apply(a, [])).next()); }); var a; var b; var c; }; return b; }(zc); var mf = function (a) { function b(c, d) { var e = a.call(this, c, d) || this; e.format = d.format; e.levels = d.levels || 1; e._width = d.width; e._height = d.height; e._extension = b._formatToExtension(e.format); if (d.levelBuffers || e.buffer) { e._levelBuffers = d.levelBuffers || b._createLevelBuffers(c instanceof Uint8Array ? c : e.buffer.uint8View, e.format, e.levels, 4, 4, e.width, e.height); } return e; } hf(b, a); b.prototype.upload = function (a, b, c) { var d = a.gl; if (!a.context.extensions[this._extension]) { throw new Error(this._extension + " textures are not supported on the current machine"); } if (!this._levelBuffers) { return false; } for (var e = 0, f = this.levels; e < f; e++) { var g = this._levelBuffers[e]; var h = g.levelID; var i = g.levelWidth; var j = g.levelHeight; var k = g.levelBuffer; d.compressedTexImage2D(d.TEXTURE_2D, h, this.format, i, j, 0, k); } return true; }; b.prototype.onBlobLoaded = function () { this._levelBuffers = b._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height); }; b._formatToExtension = function (a) { if (a >= 33776 && a <= 33779) { return "s3tc"; } if (a >= 37488 && a <= 37497) { return "etc"; } if (a >= 35840 && a <= 35843) { return "pvrtc"; } if (a >= 36196) { return "etc1"; } if (a >= 35986 && a <= 34798) { return "atc"; } throw new Error("Invalid (compressed) texture format given!"); }; b._createLevelBuffers = function (a, b, c, d, e, f, g) { for (var h = new Array(c), i = a.byteOffset, j = f, k = g, l = j + d - 1 & ~(d - 1), m = k + e - 1 & ~(e - 1), n = l * m * ff[b], o = 0; o < c; o++) { h[o] = { levelID: o, levelWidth: c > 1 ? j : l, levelHeight: c > 1 ? k : m, levelBuffer: new Uint8Array(a.buffer, i, n) }; i += n; n = (l = (j = j >> 1 || 1) + d - 1 & ~(d - 1)) * (m = (k = k >> 1 || 1) + e - 1 & ~(e - 1)) * ff[b]; } return h; }; return b; }(lf); var nf = function () { function a() {} a.use = function (b, c) { var d = b.data; if (b.type === We.TYPE.JSON && d && d.cacheID && d.textures) { for (var e = d.textures, f = undefined, g = undefined, h = 0, i = e.length; h < i; h++) { var j = e[h]; var k = j.src; var l = j.format; if (!l) { g = k; } if (a.textureFormats[l]) { f = k; break; } } if (!(f = f || g)) { c(new Error("Cannot load compressed-textures in " + b.url + ", make sure you provide a fallback")); return; } if (f === b.url) { c(new Error("URL of compressed texture cannot be the same as the manifest's URL")); return; } var m = { crossOrigin: b.crossOrigin, metadata: b.metadata.imageMetadata, parentResource: b }; var n = La.resolve(b.url.replace(this.baseUrl, ""), f); var o = d.cacheID; this.add(o, n, m, function (a) { if (a.error) { c(a.error); } else { var d = a.texture; var e = d === undefined ? null : d; var f = a.textures; var g = f === undefined ? {} : f; Object.assign(b, { texture: e, textures: g }); c(); } }); } else { c(); } }; Object.defineProperty(a, "textureExtensions", { get: function () { if (!a._textureExtensions) { var b = document.createElement("canvas").getContext("webgl"); if (!b) { console.warn("WebGL not available for compressed textures. Silently failing."); return {}; } var c = { s3tc: b.getExtension("WEBGL_compressed_texture_s3tc"), s3tc_sRGB: b.getExtension("WEBGL_compressed_texture_s3tc_srgb"), etc: b.getExtension("WEBGL_compressed_texture_etc"), etc1: b.getExtension("WEBGL_compressed_texture_etc1"), pvrtc: b.getExtension("WEBGL_compressed_texture_pvrtc") || b.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"), atc: b.getExtension("WEBGL_compressed_texture_atc"), astc: b.getExtension("WEBGL_compressed_texture_astc") }; a._textureExtensions = c; } return a._textureExtensions; }, enumerable: false, configurable: true }); Object.defineProperty(a, "textureFormats", { get: function () { if (!a._textureFormats) { var b = a.textureExtensions; a._textureFormats = {}; for (var c in b) { var d = b[c]; if (d) { Object.assign(a._textureFormats, Object.getPrototypeOf(d)); } } } return a._textureFormats; }, enumerable: false, configurable: true }); return a; }(); function of(a, b, c) { var d = { textures: {}, texture: null }; if (b) { b.map(function (a) { return new Sc(new Bc(a, Object.assign({ mipmap: xa.OFF, alphaMode: ya.NO_PREMULTIPLIED_ALPHA }, c))); }).forEach(function (b, c) { var e = b.baseTexture; var f = a + "-" + (c + 1); Bc.addToCache(e, f); Sc.addToCache(b, f); if (c === 0) { Bc.addToCache(e, a); Sc.addToCache(b, a); d.texture = b; } d.textures[f] = b; }); return d; } else { return d; } } We.setExtensionXhrType("dds", We.XHR_RESPONSE_TYPE.BUFFER); var pf; var qf; (function (a) { a[a.DXGI_FORMAT_UNKNOWN = 0] = "DXGI_FORMAT_UNKNOWN"; a[a.DXGI_FORMAT_R32G32B32A32_TYPELESS = 1] = "DXGI_FORMAT_R32G32B32A32_TYPELESS"; a[a.DXGI_FORMAT_R32G32B32A32_FLOAT = 2] = "DXGI_FORMAT_R32G32B32A32_FLOAT"; a[a.DXGI_FORMAT_R32G32B32A32_UINT = 3] = "DXGI_FORMAT_R32G32B32A32_UINT"; a[a.DXGI_FORMAT_R32G32B32A32_SINT = 4] = "DXGI_FORMAT_R32G32B32A32_SINT"; a[a.DXGI_FORMAT_R32G32B32_TYPELESS = 5] = "DXGI_FORMAT_R32G32B32_TYPELESS"; a[a.DXGI_FORMAT_R32G32B32_FLOAT = 6] = "DXGI_FORMAT_R32G32B32_FLOAT"; a[a.DXGI_FORMAT_R32G32B32_UINT = 7] = "DXGI_FORMAT_R32G32B32_UINT"; a[a.DXGI_FORMAT_R32G32B32_SINT = 8] = "DXGI_FORMAT_R32G32B32_SINT"; a[a.DXGI_FORMAT_R16G16B16A16_TYPELESS = 9] = "DXGI_FORMAT_R16G16B16A16_TYPELESS"; a[a.DXGI_FORMAT_R16G16B16A16_FLOAT = 10] = "DXGI_FORMAT_R16G16B16A16_FLOAT"; a[a.DXGI_FORMAT_R16G16B16A16_UNORM = 11] = "DXGI_FORMAT_R16G16B16A16_UNORM"; a[a.DXGI_FORMAT_R16G16B16A16_UINT = 12] = "DXGI_FORMAT_R16G16B16A16_UINT"; a[a.DXGI_FORMAT_R16G16B16A16_SNORM = 13] = "DXGI_FORMAT_R16G16B16A16_SNORM"; a[a.DXGI_FORMAT_R16G16B16A16_SINT = 14] = "DXGI_FORMAT_R16G16B16A16_SINT"; a[a.DXGI_FORMAT_R32G32_TYPELESS = 15] = "DXGI_FORMAT_R32G32_TYPELESS"; a[a.DXGI_FORMAT_R32G32_FLOAT = 16] = "DXGI_FORMAT_R32G32_FLOAT"; a[a.DXGI_FORMAT_R32G32_UINT = 17] = "DXGI_FORMAT_R32G32_UINT"; a[a.DXGI_FORMAT_R32G32_SINT = 18] = "DXGI_FORMAT_R32G32_SINT"; a[a.DXGI_FORMAT_R32G8X24_TYPELESS = 19] = "DXGI_FORMAT_R32G8X24_TYPELESS"; a[a.DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20] = "DXGI_FORMAT_D32_FLOAT_S8X24_UINT"; a[a.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21] = "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS"; a[a.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22] = "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT"; a[a.DXGI_FORMAT_R10G10B10A2_TYPELESS = 23] = "DXGI_FORMAT_R10G10B10A2_TYPELESS"; a[a.DXGI_FORMAT_R10G10B10A2_UNORM = 24] = "DXGI_FORMAT_R10G10B10A2_UNORM"; a[a.DXGI_FORMAT_R10G10B10A2_UINT = 25] = "DXGI_FORMAT_R10G10B10A2_UINT"; a[a.DXGI_FORMAT_R11G11B10_FLOAT = 26] = "DXGI_FORMAT_R11G11B10_FLOAT"; a[a.DXGI_FORMAT_R8G8B8A8_TYPELESS = 27] = "DXGI_FORMAT_R8G8B8A8_TYPELESS"; a[a.DXGI_FORMAT_R8G8B8A8_UNORM = 28] = "DXGI_FORMAT_R8G8B8A8_UNORM"; a[a.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29] = "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB"; a[a.DXGI_FORMAT_R8G8B8A8_UINT = 30] = "DXGI_FORMAT_R8G8B8A8_UINT"; a[a.DXGI_FORMAT_R8G8B8A8_SNORM = 31] = "DXGI_FORMAT_R8G8B8A8_SNORM"; a[a.DXGI_FORMAT_R8G8B8A8_SINT = 32] = "DXGI_FORMAT_R8G8B8A8_SINT"; a[a.DXGI_FORMAT_R16G16_TYPELESS = 33] = "DXGI_FORMAT_R16G16_TYPELESS"; a[a.DXGI_FORMAT_R16G16_FLOAT = 34] = "DXGI_FORMAT_R16G16_FLOAT"; a[a.DXGI_FORMAT_R16G16_UNORM = 35] = "DXGI_FORMAT_R16G16_UNORM"; a[a.DXGI_FORMAT_R16G16_UINT = 36] = "DXGI_FORMAT_R16G16_UINT"; a[a.DXGI_FORMAT_R16G16_SNORM = 37] = "DXGI_FORMAT_R16G16_SNORM"; a[a.DXGI_FORMAT_R16G16_SINT = 38] = "DXGI_FORMAT_R16G16_SINT"; a[a.DXGI_FORMAT_R32_TYPELESS = 39] = "DXGI_FORMAT_R32_TYPELESS"; a[a.DXGI_FORMAT_D32_FLOAT = 40] = "DXGI_FORMAT_D32_FLOAT"; a[a.DXGI_FORMAT_R32_FLOAT = 41] = "DXGI_FORMAT_R32_FLOAT"; a[a.DXGI_FORMAT_R32_UINT = 42] = "DXGI_FORMAT_R32_UINT"; a[a.DXGI_FORMAT_R32_SINT = 43] = "DXGI_FORMAT_R32_SINT"; a[a.DXGI_FORMAT_R24G8_TYPELESS = 44] = "DXGI_FORMAT_R24G8_TYPELESS"; a[a.DXGI_FORMAT_D24_UNORM_S8_UINT = 45] = "DXGI_FORMAT_D24_UNORM_S8_UINT"; a[a.DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46] = "DXGI_FORMAT_R24_UNORM_X8_TYPELESS"; a[a.DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47] = "DXGI_FORMAT_X24_TYPELESS_G8_UINT"; a[a.DXGI_FORMAT_R8G8_TYPELESS = 48] = "DXGI_FORMAT_R8G8_TYPELESS"; a[a.DXGI_FORMAT_R8G8_UNORM = 49] = "DXGI_FORMAT_R8G8_UNORM"; a[a.DXGI_FORMAT_R8G8_UINT = 50] = "DXGI_FORMAT_R8G8_UINT"; a[a.DXGI_FORMAT_R8G8_SNORM = 51] = "DXGI_FORMAT_R8G8_SNORM"; a[a.DXGI_FORMAT_R8G8_SINT = 52] = "DXGI_FORMAT_R8G8_SINT"; a[a.DXGI_FORMAT_R16_TYPELESS = 53] = "DXGI_FORMAT_R16_TYPELESS"; a[a.DXGI_FORMAT_R16_FLOAT = 54] = "DXGI_FORMAT_R16_FLOAT"; a[a.DXGI_FORMAT_D16_UNORM = 55] = "DXGI_FORMAT_D16_UNORM"; a[a.DXGI_FORMAT_R16_UNORM = 56] = "DXGI_FORMAT_R16_UNORM"; a[a.DXGI_FORMAT_R16_UINT = 57] = "DXGI_FORMAT_R16_UINT"; a[a.DXGI_FORMAT_R16_SNORM = 58] = "DXGI_FORMAT_R16_SNORM"; a[a.DXGI_FORMAT_R16_SINT = 59] = "DXGI_FORMAT_R16_SINT"; a[a.DXGI_FORMAT_R8_TYPELESS = 60] = "DXGI_FORMAT_R8_TYPELESS"; a[a.DXGI_FORMAT_R8_UNORM = 61] = "DXGI_FORMAT_R8_UNORM"; a[a.DXGI_FORMAT_R8_UINT = 62] = "DXGI_FORMAT_R8_UINT"; a[a.DXGI_FORMAT_R8_SNORM = 63] = "DXGI_FORMAT_R8_SNORM"; a[a.DXGI_FORMAT_R8_SINT = 64] = "DXGI_FORMAT_R8_SINT"; a[a.DXGI_FORMAT_A8_UNORM = 65] = "DXGI_FORMAT_A8_UNORM"; a[a.DXGI_FORMAT_R1_UNORM = 66] = "DXGI_FORMAT_R1_UNORM"; a[a.DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67] = "DXGI_FORMAT_R9G9B9E5_SHAREDEXP"; a[a.DXGI_FORMAT_R8G8_B8G8_UNORM = 68] = "DXGI_FORMAT_R8G8_B8G8_UNORM"; a[a.DXGI_FORMAT_G8R8_G8B8_UNORM = 69] = "DXGI_FORMAT_G8R8_G8B8_UNORM"; a[a.DXGI_FORMAT_BC1_TYPELESS = 70] = "DXGI_FORMAT_BC1_TYPELESS"; a[a.DXGI_FORMAT_BC1_UNORM = 71] = "DXGI_FORMAT_BC1_UNORM"; a[a.DXGI_FORMAT_BC1_UNORM_SRGB = 72] = "DXGI_FORMAT_BC1_UNORM_SRGB"; a[a.DXGI_FORMAT_BC2_TYPELESS = 73] = "DXGI_FORMAT_BC2_TYPELESS"; a[a.DXGI_FORMAT_BC2_UNORM = 74] = "DXGI_FORMAT_BC2_UNORM"; a[a.DXGI_FORMAT_BC2_UNORM_SRGB = 75] = "DXGI_FORMAT_BC2_UNORM_SRGB"; a[a.DXGI_FORMAT_BC3_TYPELESS = 76] = "DXGI_FORMAT_BC3_TYPELESS"; a[a.DXGI_FORMAT_BC3_UNORM = 77] = "DXGI_FORMAT_BC3_UNORM"; a[a.DXGI_FORMAT_BC3_UNORM_SRGB = 78] = "DXGI_FORMAT_BC3_UNORM_SRGB"; a[a.DXGI_FORMAT_BC4_TYPELESS = 79] = "DXGI_FORMAT_BC4_TYPELESS"; a[a.DXGI_FORMAT_BC4_UNORM = 80] = "DXGI_FORMAT_BC4_UNORM"; a[a.DXGI_FORMAT_BC4_SNORM = 81] = "DXGI_FORMAT_BC4_SNORM"; a[a.DXGI_FORMAT_BC5_TYPELESS = 82] = "DXGI_FORMAT_BC5_TYPELESS"; a[a.DXGI_FORMAT_BC5_UNORM = 83] = "DXGI_FORMAT_BC5_UNORM"; a[a.DXGI_FORMAT_BC5_SNORM = 84] = "DXGI_FORMAT_BC5_SNORM"; a[a.DXGI_FORMAT_B5G6R5_UNORM = 85] = "DXGI_FORMAT_B5G6R5_UNORM"; a[a.DXGI_FORMAT_B5G5R5A1_UNORM = 86] = "DXGI_FORMAT_B5G5R5A1_UNORM"; a[a.DXGI_FORMAT_B8G8R8A8_UNORM = 87] = "DXGI_FORMAT_B8G8R8A8_UNORM"; a[a.DXGI_FORMAT_B8G8R8X8_UNORM = 88] = "DXGI_FORMAT_B8G8R8X8_UNORM"; a[a.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89] = "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM"; a[a.DXGI_FORMAT_B8G8R8A8_TYPELESS = 90] = "DXGI_FORMAT_B8G8R8A8_TYPELESS"; a[a.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91] = "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB"; a[a.DXGI_FORMAT_B8G8R8X8_TYPELESS = 92] = "DXGI_FORMAT_B8G8R8X8_TYPELESS"; a[a.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93] = "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB"; a[a.DXGI_FORMAT_BC6H_TYPELESS = 94] = "DXGI_FORMAT_BC6H_TYPELESS"; a[a.DXGI_FORMAT_BC6H_UF16 = 95] = "DXGI_FORMAT_BC6H_UF16"; a[a.DXGI_FORMAT_BC6H_SF16 = 96] = "DXGI_FORMAT_BC6H_SF16"; a[a.DXGI_FORMAT_BC7_TYPELESS = 97] = "DXGI_FORMAT_BC7_TYPELESS"; a[a.DXGI_FORMAT_BC7_UNORM = 98] = "DXGI_FORMAT_BC7_UNORM"; a[a.DXGI_FORMAT_BC7_UNORM_SRGB = 99] = "DXGI_FORMAT_BC7_UNORM_SRGB"; a[a.DXGI_FORMAT_AYUV = 100] = "DXGI_FORMAT_AYUV"; a[a.DXGI_FORMAT_Y410 = 101] = "DXGI_FORMAT_Y410"; a[a.DXGI_FORMAT_Y416 = 102] = "DXGI_FORMAT_Y416"; a[a.DXGI_FORMAT_NV12 = 103] = "DXGI_FORMAT_NV12"; a[a.DXGI_FORMAT_P010 = 104] = "DXGI_FORMAT_P010"; a[a.DXGI_FORMAT_P016 = 105] = "DXGI_FORMAT_P016"; a[a.DXGI_FORMAT_420_OPAQUE = 106] = "DXGI_FORMAT_420_OPAQUE"; a[a.DXGI_FORMAT_YUY2 = 107] = "DXGI_FORMAT_YUY2"; a[a.DXGI_FORMAT_Y210 = 108] = "DXGI_FORMAT_Y210"; a[a.DXGI_FORMAT_Y216 = 109] = "DXGI_FORMAT_Y216"; a[a.DXGI_FORMAT_NV11 = 110] = "DXGI_FORMAT_NV11"; a[a.DXGI_FORMAT_AI44 = 111] = "DXGI_FORMAT_AI44"; a[a.DXGI_FORMAT_IA44 = 112] = "DXGI_FORMAT_IA44"; a[a.DXGI_FORMAT_P8 = 113] = "DXGI_FORMAT_P8"; a[a.DXGI_FORMAT_A8P8 = 114] = "DXGI_FORMAT_A8P8"; a[a.DXGI_FORMAT_B4G4R4A4_UNORM = 115] = "DXGI_FORMAT_B4G4R4A4_UNORM"; a[a.DXGI_FORMAT_P208 = 116] = "DXGI_FORMAT_P208"; a[a.DXGI_FORMAT_V208 = 117] = "DXGI_FORMAT_V208"; a[a.DXGI_FORMAT_V408 = 118] = "DXGI_FORMAT_V408"; a[a.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 119] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE"; a[a.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 120] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE"; a[a.DXGI_FORMAT_FORCE_UINT = 121] = "DXGI_FORMAT_FORCE_UINT"; })(pf ||= {}); (function (a) { a[a.DDS_DIMENSION_TEXTURE1D = 2] = "DDS_DIMENSION_TEXTURE1D"; a[a.DDS_DIMENSION_TEXTURE2D = 3] = "DDS_DIMENSION_TEXTURE2D"; a[a.DDS_DIMENSION_TEXTURE3D = 6] = "DDS_DIMENSION_TEXTURE3D"; })(qf ||= {}); var rf; var sf; var tf; (jf = {})[827611204] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT; jf[861165636] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT; jf[894720068] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT; var uf = jf; (kf = {})[pf.DXGI_FORMAT_BC1_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT; kf[pf.DXGI_FORMAT_BC1_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT; kf[pf.DXGI_FORMAT_BC2_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT; kf[pf.DXGI_FORMAT_BC2_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT; kf[pf.DXGI_FORMAT_BC3_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT; kf[pf.DXGI_FORMAT_BC3_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT; kf[pf.DXGI_FORMAT_BC1_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT; kf[pf.DXGI_FORMAT_BC2_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; kf[pf.DXGI_FORMAT_BC3_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; var vf = kf; var wf = function () { function a() {} a.use = function (b, c) { if (b.extension === "dds" && b.data) { try { Object.assign(b, of(b.name || b.url, a.parse(b.data), b.metadata)); } catch (a) { c(a); return; } } c(); }; a.parse = function (a) { var b = new Uint32Array(a); if (b[0] !== 542327876) { throw new Error("Invalid DDS file magic word"); } var c = new Uint32Array(a, 0, 124 / Uint32Array.BYTES_PER_ELEMENT); var d = c[3]; var e = c[4]; var f = c[7]; var g = new Uint32Array(a, Uint32Array.BYTES_PER_ELEMENT * 19, 32 / Uint32Array.BYTES_PER_ELEMENT); var h = g[1]; if (h & 4) { var i = g[2]; if (i !== 808540228) { var j = uf[i]; var k = new Uint8Array(a, 128); return [new mf(k, { format: j, width: e, height: d, levels: f })]; } var l = new Uint32Array(b.buffer, 128, 20 / Uint32Array.BYTES_PER_ELEMENT); var m = l[0]; var n = l[1]; var o = l[2]; var p = l[3]; var q = vf[m]; if (q === undefined) { throw new Error("DDSLoader cannot parse texture data with DXGI format " + m); } if (o === 4) { throw new Error("DDSLoader does not support cubemap textures"); } if (n === qf.DDS_DIMENSION_TEXTURE3D) { throw new Error("DDSLoader does not supported 3D texture data"); } var r = new Array(); if (p === 1) { r.push(new Uint8Array(a, 148)); } else { for (var s = ff[q], t = 0, u = e, v = d, w = 0; w < f; w++) { t += Math.max(1, u + 3 & -4) * Math.max(1, v + 3 & -4) * s; u >>>= 1; v >>>= 1; } var x = 148; for (w = 0; w < p; w++) { r.push(new Uint8Array(a, x, t)); x += t; } } return r.map(function (a) { return new mf(a, { format: q, width: e, height: d, levels: f }); }); } if (h & 64) { throw new Error("DDSLoader does not support uncompressed texture data."); } if (h & 512) { throw new Error("DDSLoader does not supported YUV uncompressed texture data."); } if (h & 131072) { throw new Error("DDSLoader does not support single-channel (lumninance) texture data!"); } if (h & 2) { throw new Error("DDSLoader does not support single-channel (alpha) texture data!"); } throw new Error("DDSLoader failed to load a texture file due to an unknown reason!"); }; return a; }(); We.setExtensionXhrType("ktx", We.XHR_RESPONSE_TYPE.BUFFER); var xf = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10]; (rf = {})[ta.UNSIGNED_BYTE] = 1; rf[ta.UNSIGNED_SHORT] = 2; rf[ta.INT] = 4; rf[ta.UNSIGNED_INT] = 4; rf[ta.FLOAT] = 4; rf[ta.HALF_FLOAT] = 8; var yf = rf; (sf = {})[ra.RGBA] = 4; sf[ra.RGB] = 3; sf[ra.RG] = 2; sf[ra.RED] = 1; sf[ra.LUMINANCE] = 1; sf[ra.LUMINANCE_ALPHA] = 2; sf[ra.ALPHA] = 1; var zf = sf; (tf = {})[ta.UNSIGNED_SHORT_4_4_4_4] = 2; tf[ta.UNSIGNED_SHORT_5_5_5_1] = 2; tf[ta.UNSIGNED_SHORT_5_6_5] = 2; var Af = tf; var Bf = function () { function a() {} a.use = function (b, c) { if (b.extension === "ktx" && b.data) { try { var d = b.name || b.url; var e = a.parse(d, b.data); var f = e.compressed; var g = e.uncompressed; if (f) { Object.assign(b, of(d, f, b.metadata)); } else if (g) { var h = {}; g.forEach(function (a, b) { var c = new Sc(new Bc(a.resource, { mipmap: xa.OFF, alphaMode: ya.NO_PREMULTIPLIED_ALPHA, type: a.type, format: a.format })); var e = d + "-" + (b + 1); Bc.addToCache(c.baseTexture, e); Sc.addToCache(c, e); if (b === 0) { h[d] = c; Bc.addToCache(c.baseTexture, d); Sc.addToCache(c, d); } h[e] = c; }); Object.assign(b, { textures: h }); } } catch (a) { c(a); return; } } c(); }; a.parse = function (b, c) { var d = new DataView(c); if (!a.validate(b, d)) { return null; } var e = d.getUint32(12, true) === 67305985; var f = d.getUint32(16, e); var g = d.getUint32(24, e); var h = d.getUint32(28, e); var i = d.getUint32(36, e); var j = d.getUint32(40, e) || 1; var k = d.getUint32(44, e) || 1; var l = d.getUint32(48, e) || 1; var m = d.getUint32(52, e); var n = d.getUint32(56, e); var o = d.getUint32(60, e); if (j === 0 || k !== 1) { throw new Error("Only 2D textures are supported"); } if (m !== 1) { throw new Error("CubeTextures are not supported by KTXLoader yet!"); } if (l !== 1) { throw new Error("WebGL does not support array textures"); } var p; var q = i + 3 & -4; var r = j + 3 & -4; var s = new Array(l); var t = i * j; if (f === 0) { t = q * r; } if ((p = f !== 0 ? yf[f] ? yf[f] * zf[g] : Af[f] : ff[h]) === undefined) { throw new Error("Unable to resolve the pixel format stored in the *.ktx file!"); } for (var u = t * p, v = i, w = j, x = q, y = r, z = 64 + o, A = 0; A < n; A++) { for (var B = d.getUint32(z, e), C = z + 4, D = 0; D < l; D++) { var E = s[D]; E ||= s[D] = new Array(n); E[A] = { levelID: A, levelWidth: n > 1 || f !== 0 ? v : x, levelHeight: n > 1 || f !== 0 ? w : y, levelBuffer: new Uint8Array(c, C, u) }; C += u; } z = (z += B + 4) % 4 != 0 ? z + 4 - z % 4 : z; u = (x = (v = v >> 1 || 1) + 4 - 1 & -4) * (y = (w = w >> 1 || 1) + 4 - 1 & -4) * p; } if (f !== 0) { return { uncompressed: s.map(function (b) { var c = b[0].levelBuffer; var d = false; if (f === ta.FLOAT) { c = new Float32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4); } else if (f === ta.UNSIGNED_INT) { d = true; c = new Uint32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4); } else if (f === ta.INT) { d = true; c = new Int32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4); } return { resource: new zc(c, { width: b[0].levelWidth, height: b[0].levelHeight }), type: f, format: d ? a.convertFormatToInteger(g) : g }; }) }; } else { return { compressed: s.map(function (a) { return new mf(null, { format: h, width: i, height: j, levels: n, levelBuffers: a }); }) }; } }; a.validate = function (a, b) { for (var c = 0; c < xf.length; c++) { if (b.getUint8(c) !== xf[c]) { console.error(a + " is not a valid *.ktx file!"); return false; } } return true; }; a.convertFormatToInteger = function (a) { switch (a) { case ra.RGBA: return ra.RGBA_INTEGER; case ra.RGB: return ra.RGB_INTEGER; case ra.RG: return ra.RG_INTEGER; case ra.RED: return ra.RED_INTEGER; default: return a; } }; return a; }(); function Cf(a, b) { Cf = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Cf(a, b); } function Df(a, b) { function c() { this.constructor = a; } Cf(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } (function (a) { function b(b, c, d, e) { if (b === undefined) { b = 1500; } if (d === undefined) { d = 16384; } if (e === undefined) { e = false; } var f = a.call(this) || this; if (d > 16384) { d = 16384; } f._properties = [false, true, false, false, false]; f._maxSize = b; f._batchSize = d; f._buffers = null; f._bufferUpdateIDs = []; f._updateID = 0; f.interactiveChildren = false; f.blendMode = pa.NORMAL; f.autoResize = e; f.roundPixels = true; f.baseTexture = null; f.setProperties(c); f._tint = 0; f.tintRgb = new Float32Array(4); f.tint = 16777215; return f; } Df(b, a); b.prototype.setProperties = function (a) { if (a) { this._properties[0] = "vertices" in a || "scale" in a ? !!a.vertices || !!a.scale : this._properties[0]; this._properties[1] = "position" in a ? !!a.position : this._properties[1]; this._properties[2] = "rotation" in a ? !!a.rotation : this._properties[2]; this._properties[3] = "uvs" in a ? !!a.uvs : this._properties[3]; this._properties[4] = "tint" in a || "alpha" in a ? !!a.tint || !!a.alpha : this._properties[4]; } }; b.prototype.updateTransform = function () { this.displayObjectUpdateTransform(); }; Object.defineProperty(b.prototype, "tint", { get: function () { return this._tint; }, set: function (a) { this._tint = a; Pa(a, this.tintRgb); }, enumerable: false, configurable: true }); b.prototype.render = function (a) { var b = this; if (this.visible && this.worldAlpha > 0 && this.children.length && this.renderable) { if (!this.baseTexture) { this.baseTexture = this.children[0]._texture.baseTexture; if (!this.baseTexture.valid) { this.baseTexture.once("update", function () { return b.onChildrenChange(0); }); } } a.batch.setObjectRenderer(a.plugins.particle); a.plugins.particle.render(this); } }; b.prototype.onChildrenChange = function (a) { for (var b = Math.floor(a / this._batchSize); this._bufferUpdateIDs.length < b;) { this._bufferUpdateIDs.push(0); } this._bufferUpdateIDs[b] = ++this._updateID; }; b.prototype.dispose = function () { if (this._buffers) { for (var a = 0; a < this._buffers.length; ++a) { this._buffers[a].destroy(); } this._buffers = null; } }; b.prototype.destroy = function (b) { a.prototype.destroy.call(this, b); this.dispose(); this._properties = null; this._buffers = null; this._bufferUpdateIDs = null; }; })(dc); var Ef; var Ff; var Gf = function () { function a(a, b, c) { this.geometry = new ad(); this.indexBuffer = null; this.size = c; this.dynamicProperties = []; this.staticProperties = []; for (var d = 0; d < a.length; ++d) { var e = a[d]; e = { attributeName: e.attributeName, size: e.size, uploadFunction: e.uploadFunction, type: e.type || ta.FLOAT, offset: e.offset }; if (b[d]) { this.dynamicProperties.push(e); } else { this.staticProperties.push(e); } } this.staticStride = 0; this.staticBuffer = null; this.staticData = null; this.staticDataUint32 = null; this.dynamicStride = 0; this.dynamicBuffer = null; this.dynamicData = null; this.dynamicDataUint32 = null; this._updateID = 0; this.initBuffers(); } a.prototype.initBuffers = function () { var a = this.geometry; var b = 0; this.indexBuffer = new Xc(function (a, b) { if (b === undefined) { b = null; } var c = a * 6; if ((b = b || new Uint16Array(c)).length !== c) { throw new Error("Out buffer length is incorrect, got " + b.length + " and expected " + c); } for (var d = 0, e = 0; d < c; d += 6, e += 4) { b[d + 0] = e + 0; b[d + 1] = e + 1; b[d + 2] = e + 2; b[d + 3] = e + 0; b[d + 4] = e + 2; b[d + 5] = e + 3; } return b; }(this.size), true, true); a.addIndex(this.indexBuffer); this.dynamicStride = 0; for (var c = 0; c < this.dynamicProperties.length; ++c) { (g = this.dynamicProperties[c]).offset = b; b += g.size; this.dynamicStride += g.size; } var d = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4); this.dynamicData = new Float32Array(d); this.dynamicDataUint32 = new Uint32Array(d); this.dynamicBuffer = new Xc(this.dynamicData, false, false); var e = 0; this.staticStride = 0; c = 0; for (; c < this.staticProperties.length; ++c) { (g = this.staticProperties[c]).offset = e; e += g.size; this.staticStride += g.size; } var f = new ArrayBuffer(this.size * this.staticStride * 4 * 4); this.staticData = new Float32Array(f); this.staticDataUint32 = new Uint32Array(f); this.staticBuffer = new Xc(this.staticData, true, false); c = 0; for (; c < this.dynamicProperties.length; ++c) { var g = this.dynamicProperties[c]; a.addAttribute(g.attributeName, this.dynamicBuffer, 0, g.type === ta.UNSIGNED_BYTE, g.type, this.dynamicStride * 4, g.offset * 4); } for (c = 0; c < this.staticProperties.length; ++c) { g = this.staticProperties[c]; a.addAttribute(g.attributeName, this.staticBuffer, 0, g.type === ta.UNSIGNED_BYTE, g.type, this.staticStride * 4, g.offset * 4); } }; a.prototype.uploadDynamic = function (a, b, c) { for (var d = 0; d < this.dynamicProperties.length; d++) { var e = this.dynamicProperties[d]; e.uploadFunction(a, b, c, e.type === ta.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, e.offset); } this.dynamicBuffer._updateID++; }; a.prototype.uploadStatic = function (a, b, c) { for (var d = 0; d < this.staticProperties.length; d++) { var e = this.staticProperties[d]; e.uploadFunction(a, b, c, e.type === ta.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, e.offset); } this.staticBuffer._updateID++; }; a.prototype.destroy = function () { this.indexBuffer = null; this.dynamicProperties = null; this.dynamicBuffer = null; this.dynamicData = null; this.dynamicDataUint32 = null; this.staticProperties = null; this.staticBuffer = null; this.staticData = null; this.staticDataUint32 = null; this.geometry.destroy(); }; return a; }(); var Hf = function (a) { function b(b) { var c = a.call(this, b) || this; c.shader = null; c.properties = null; c.tempMatrix = new wb(); c.properties = [{ attributeName: "aVertexPosition", size: 2, uploadFunction: c.uploadVertices, offset: 0 }, { attributeName: "aPositionCoord", size: 2, uploadFunction: c.uploadPosition, offset: 0 }, { attributeName: "aRotation", size: 1, uploadFunction: c.uploadRotation, offset: 0 }, { attributeName: "aTextureCoord", size: 2, uploadFunction: c.uploadUvs, offset: 0 }, { attributeName: "aColor", size: 1, type: ta.UNSIGNED_BYTE, uploadFunction: c.uploadTint, offset: 0 }]; c.shader = Pd.from("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\nattribute vec4 aColor;\n\nattribute vec2 aPositionCoord;\nattribute float aRotation;\n\nuniform mat3 translationMatrix;\nuniform vec4 uColor;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nvoid main(void){\n float x = (aVertexPosition.x) * cos(aRotation) - (aVertexPosition.y) * sin(aRotation);\n float y = (aVertexPosition.x) * sin(aRotation) + (aVertexPosition.y) * cos(aRotation);\n\n vec2 v = vec2(x, y);\n v = v + aPositionCoord;\n\n gl_Position = vec4((translationMatrix * vec3(v, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = aTextureCoord;\n vColor = aColor * uColor;\n}\n", "varying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n vec4 color = texture2D(uSampler, vTextureCoord) * vColor;\n gl_FragColor = color;\n}", {}); c.state = Qd.for2d(); return c; } Df(b, a); b.prototype.render = function (a) { var b = a.children; var c = a._maxSize; var d = a._batchSize; var e = this.renderer; var f = b.length; if (f !== 0) { if (f > c && !a.autoResize) { f = c; } var g = a._buffers; g ||= a._buffers = this.generateBuffers(a); var h = b[0]._texture.baseTexture; this.state.blendMode = Ta(a.blendMode, h.alphaMode); e.state.set(this.state); var i; var j; var k; var l; var m = e.gl; var n = a.worldTransform.copyTo(this.tempMatrix); n.prepend(e.globalUniforms.uniforms.projectionMatrix); this.shader.uniforms.translationMatrix = n.toArray(true); this.shader.uniforms.uColor = (i = a.tintRgb, j = a.worldAlpha, k = this.shader.uniforms.uColor, l = h.alphaMode, k = k || new Float32Array(4), l || l === undefined ? (k[0] = i[0] * j, k[1] = i[1] * j, k[2] = i[2] * j) : (k[0] = i[0], k[1] = i[1], k[2] = i[2]), k[3] = j, k); this.shader.uniforms.uSampler = h; this.renderer.shader.bind(this.shader); for (var o = false, p = 0, q = 0; p < f; p += d, q += 1) { var r = f - p; if (r > d) { r = d; } if (q >= g.length) { g.push(this._generateOneMoreBuffer(a)); } var s = g[q]; s.uploadDynamic(b, p, r); var t = a._bufferUpdateIDs[q] || 0; if (o = o || s._updateID < t) { s._updateID = a._updateID; s.uploadStatic(b, p, r); } e.geometry.bind(s.geometry); m.drawElements(m.TRIANGLES, r * 6, m.UNSIGNED_SHORT, 0); } } }; b.prototype.generateBuffers = function (a) { for (var b = [], c = a._maxSize, d = a._batchSize, e = a._properties, f = 0; f < c; f += d) { b.push(new Gf(this.properties, e, d)); } return b; }; b.prototype._generateOneMoreBuffer = function (a) { var b = a._batchSize; var c = a._properties; return new Gf(this.properties, c, b); }; b.prototype.uploadVertices = function (a, b, c, d, e, f) { for (var g = 0, h = 0, i = 0, j = 0, k = 0; k < c; ++k) { var l = a[b + k]; var m = l._texture; var n = l.scale.x; var o = l.scale.y; var p = m.trim; var q = m.orig; if (p) { g = (h = p.x - l.anchor.x * q.width) + p.width; i = (j = p.y - l.anchor.y * q.height) + p.height; } else { g = q.width * (1 - l.anchor.x); h = q.width * -l.anchor.x; i = q.height * (1 - l.anchor.y); j = q.height * -l.anchor.y; } d[f] = h * n; d[f + 1] = j * o; d[f + e] = g * n; d[f + e + 1] = j * o; d[f + e * 2] = g * n; d[f + e * 2 + 1] = i * o; d[f + e * 3] = h * n; d[f + e * 3 + 1] = i * o; f += e * 4; } }; b.prototype.uploadPosition = function (a, b, c, d, e, f) { for (var g = 0; g < c; g++) { var h = a[b + g].position; d[f] = h.x; d[f + 1] = h.y; d[f + e] = h.x; d[f + e + 1] = h.y; d[f + e * 2] = h.x; d[f + e * 2 + 1] = h.y; d[f + e * 3] = h.x; d[f + e * 3 + 1] = h.y; f += e * 4; } }; b.prototype.uploadRotation = function (a, b, c, d, e, f) { for (var g = 0; g < c; g++) { var h = a[b + g].rotation; d[f] = h; d[f + e] = h; d[f + e * 2] = h; d[f + e * 3] = h; f += e * 4; } }; b.prototype.uploadUvs = function (a, b, c, d, e, f) { for (var g = 0; g < c; ++g) { var h = a[b + g]._texture._uvs; if (h) { d[f] = h.x0; d[f + 1] = h.y0; d[f + e] = h.x1; d[f + e + 1] = h.y1; d[f + e * 2] = h.x2; d[f + e * 2 + 1] = h.y2; d[f + e * 3] = h.x3; d[f + e * 3 + 1] = h.y3; f += e * 4; } else { d[f] = 0; d[f + 1] = 0; d[f + e] = 0; d[f + e + 1] = 0; d[f + e * 2] = 0; d[f + e * 2 + 1] = 0; d[f + e * 3] = 0; d[f + e * 3 + 1] = 0; f += e * 4; } } }; b.prototype.uploadTint = function (a, b, c, d, e, f) { for (var g = 0; g < c; ++g) { var h = a[b + g]; var i = h._texture.baseTexture.alphaMode > 0; var j = h.alpha; var k = j < 1 && i ? Ua(h._tintRGB, j) : h._tintRGB + (j * 255 << 24); d[f] = k; d[f + e] = k; d[f + e * 2] = k; d[f + e * 3] = k; f += e * 4; } }; b.prototype.destroy = function () { a.prototype.destroy.call(this); if (this.shader) { this.shader.destroy(); this.shader = null; } this.tempMatrix = null; }; return b; }(jd); (function (a) { a.MITER = "miter"; a.BEVEL = "bevel"; a.ROUND = "round"; })(Ef ||= {}); (function (a) { a.BUTT = "butt"; a.ROUND = "round"; a.SQUARE = "square"; })(Ff ||= {}); var If = { adaptive: true, maxLength: 10, minSegments: 8, maxSegments: 2048, epsilon: 0.0001, _segmentsCount: function (a, b) { if (b === undefined) { b = 20; } if (!this.adaptive || !a || isNaN(a)) { return b; } var c = Math.ceil(a / this.maxLength); if (c < this.minSegments) { c = this.minSegments; } else if (c > this.maxSegments) { c = this.maxSegments; } return c; } }; var Jf = function () { function a() { this.color = 16777215; this.alpha = 1; this.texture = Sc.WHITE; this.matrix = null; this.visible = false; this.reset(); } a.prototype.clone = function () { var b = new a(); b.color = this.color; b.alpha = this.alpha; b.texture = this.texture; b.matrix = this.matrix; b.visible = this.visible; return b; }; a.prototype.reset = function () { this.color = 16777215; this.alpha = 1; this.texture = Sc.WHITE; this.matrix = null; this.visible = false; }; a.prototype.destroy = function () { this.texture = null; this.matrix = null; }; return a; }(); function Kf(a, b) { Kf = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Kf(a, b); } function Lf(a, b) { function c() { this.constructor = a; } Kf(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } function Mf(a, b) { var c; var d; if (b === undefined) { b = false; } var e = a.length; if (e >= 6) { for (var f = 0, g = 0, h = a[e - 2], i = a[e - 1]; g < e; g += 2) { var j = a[g]; var k = a[g + 1]; f += (j - h) * (k + i); h = j; i = k; } if (!b && f > 0 || b && f <= 0) { var l = e / 2; for (g = l + l % 2; g < e; g += 2) { var m = e - g - 2; var n = e - g - 1; var o = g; var p = g + 1; c = [a[o], a[m]]; a[m] = c[0]; a[o] = c[1]; d = [a[p], a[n]]; a[n] = d[0]; a[p] = d[1]; } } } } var Nf = { build: function (a) { a.points = a.shape.points.slice(); }, triangulate: function (a, b) { var c = a.points; var d = a.holes; var e = b.points; var f = b.indices; if (c.length >= 6) { Mf(c, false); for (var g = [], h = 0; h < d.length; h++) { var i = d[h]; Mf(i.points, true); g.push(c.length / 2); c = c.concat(i.points); } var j = Ja()(c, g, 2); if (!j) { return; } var k = e.length / 2; for (h = 0; h < j.length; h += 3) { f.push(j[h] + k); f.push(j[h + 1] + k); f.push(j[h + 2] + k); } for (h = 0; h < c.length; h++) { e.push(c[h]); } } } }; var Of = { build: function (a) { var b; var c; var d; var e; var f; var g; var h = a.points; if (a.type === kb.CIRC) { var i = a.shape; b = i.x; c = i.y; f = g = i.radius; d = e = 0; } else if (a.type === kb.ELIP) { var j = a.shape; b = j.x; c = j.y; f = j.width; g = j.height; d = e = 0; } else { var k = a.shape; var l = k.width / 2; var m = k.height / 2; b = k.x + l; c = k.y + m; d = l - (f = g = Math.max(0, Math.min(k.radius, Math.min(l, m)))); e = m - g; } var n = Math.ceil(Math.sqrt(f + g) * 2.3); var o = n * 8 + (d ? 4 : 0) + (e ? 4 : 0); h.length = o; if (o !== 0) { if (n === 0) { h.length = 8; h[0] = h[6] = b + d; h[1] = h[3] = c + e; h[2] = h[4] = b - d; h[5] = h[7] = c - e; return; } var p; var q; var r = 0; var s = n * 4 + (d ? 2 : 0) + 2; var t = s; var u = o; var v = b + (p = d + f); var w = b - p; var x = c + (q = e); h[r++] = v; h[r++] = x; h[--s] = x; h[--s] = w; if (e) { var y = c - q; h[t++] = w; h[t++] = y; h[--u] = y; h[--u] = v; } for (var z = 1; z < n; z++) { var A = Math.PI / 2 * (z / n); v = b + (p = d + Math.cos(A) * f); w = b - p; x = c + (q = e + Math.sin(A) * g); y = c - q; h[r++] = v; h[r++] = x; h[--s] = x; h[--s] = w; h[t++] = w; h[t++] = y; h[--u] = y; h[--u] = v; } v = b + (p = d); w = b - p; x = c + (q = e + g); y = c - q; h[r++] = v; h[r++] = x; h[--u] = y; h[--u] = v; if (d) { h[r++] = w; h[r++] = x; h[--u] = y; h[--u] = w; } } }, triangulate: function (a, b) { var c; var d; var e = a.points; var f = b.points; var g = b.indices; var h = f.length / 2; var i = h; if (a.type !== kb.RREC) { var j = a.shape; c = j.x; d = j.y; } else { var k = a.shape; c = k.x + k.width / 2; d = k.y + k.height / 2; } var l = a.matrix; f.push(a.matrix ? l.a * c + l.c * d + l.tx : c, a.matrix ? l.b * c + l.d * d + l.ty : d); h++; f.push(e[0], e[1]); for (var m = 2; m < e.length; m += 2) { f.push(e[m], e[m + 1]); g.push(h++, i, h); } g.push(i + 1, i, h); } }; function Pf(a, b, c) { return a + (b - a) * c; } function Qf(a, b, c, d, e, f, g) { if (g === undefined) { g = []; } for (var h = g, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; o <= 20; ++o) { i = Pf(a, c, p = o / 20); j = Pf(b, d, p); k = Pf(c, e, p); l = Pf(d, f, p); m = Pf(i, k, p); n = Pf(j, l, p); if (o !== 0 || h[h.length - 2] !== m || h[h.length - 1] !== n) { h.push(m, n); } } return h; } var Rf = { build: function (a) { if (jg.nextRoundedRectBehavior) { Of.build(a); } else { var b = a.shape; var c = a.points; var d = b.x; var e = b.y; var f = b.width; var g = b.height; var h = Math.max(0, Math.min(b.radius, Math.min(f, g) / 2)); c.length = 0; if (h) { Qf(d, e + h, d, e, d + h, e, c); Qf(d + f - h, e, d + f, e, d + f, e + h, c); Qf(d + f, e + g - h, d + f, e + g, d + f - h, e + g, c); Qf(d + h, e + g, d, e + g, d, e + g - h, c); } else { c.push(d, e, d + f, e, d + f, e + g, d, e + g); } } }, triangulate: function (a, b) { if (jg.nextRoundedRectBehavior) { Of.triangulate(a, b); } else { for (var c = a.points, d = b.points, e = b.indices, f = d.length / 2, g = Ja()(c, null, 2), h = 0, i = g.length; h < i; h += 3) { e.push(g[h] + f); e.push(g[h + 1] + f); e.push(g[h + 2] + f); } h = 0; i = c.length; for (; h < i; h++) { d.push(c[h], c[++h]); } } } }; function Sf(a, b, c, d, e, f, g, h) { var i; var j; if (g) { i = d; j = -c; } else { i = -d; j = c; } var k = a - c * e + i; var l = b - d * e + j; var m = a + c * f + i; var n = b + d * f + j; h.push(k, l); h.push(m, n); return 2; } function Tf(a, b, c, d, e, f, g, h) { var i = c - a; var j = d - b; var k = Math.atan2(i, j); var l = Math.atan2(e - a, f - b); if (h && k < l) { k += Math.PI * 2; } else if (!h && k > l) { l += Math.PI * 2; } var m = k; var n = l - k; var o = Math.abs(n); var p = Math.sqrt(i * i + j * j); var q = 1 + (o * 15 * Math.sqrt(p) / Math.PI >> 0); var r = n / q; m += r; if (h) { g.push(a, b); g.push(c, d); for (var s = 1, t = m; s < q; s++, t += r) { g.push(a, b); g.push(a + Math.sin(t) * p, b + Math.cos(t) * p); } g.push(a, b); g.push(e, f); } else { g.push(c, d); g.push(a, b); s = 1; t = m; for (; s < q; s++, t += r) { g.push(a + Math.sin(t) * p, b + Math.cos(t) * p); g.push(a, b); } g.push(e, f); g.push(a, b); } return q * 2; } function Uf(a, b) { if (a.lineStyle.native) { (function (a, b) { var c = 0; var d = a.shape; var e = a.points || d.points; var f = d.type !== kb.POLY || d.closeStroke; if (e.length !== 0) { var g = b.points; var h = b.indices; var i = e.length / 2; var j = g.length / 2; var k = j; g.push(e[0], e[1]); c = 1; for (; c < i; c++) { g.push(e[c * 2], e[c * 2 + 1]); h.push(k, k + 1); k++; } if (f) { h.push(k, j); } } })(a, b); } else { (function (a, b) { var c = a.shape; var d = a.points || c.points.slice(); var e = b.closePointEps; if (d.length !== 0) { var f = a.lineStyle; var g = new ob(d[0], d[1]); var h = new ob(d[d.length - 2], d[d.length - 1]); var i = c.type !== kb.POLY || c.closeStroke; var j = Math.abs(g.x - h.x) < e && Math.abs(g.y - h.y) < e; if (i) { d = d.slice(); if (j) { d.pop(); d.pop(); h.set(d[d.length - 2], d[d.length - 1]); } var k = (g.x + h.x) * 0.5; var l = (h.y + g.y) * 0.5; d.unshift(k, l); d.push(k, l); } var m = b.points; var n = d.length / 2; var o = d.length; var p = m.length / 2; var q = f.width / 2; var r = q * q; var s = f.miterLimit * f.miterLimit; var t = d[0]; var u = d[1]; var v = d[2]; var w = d[3]; var x = 0; var y = 0; var z = -(u - w); var A = t - v; var B = 0; var C = 0; var D = Math.sqrt(z * z + A * A); z /= D; A /= D; z *= q; A *= q; var E = f.alignment; var F = (1 - E) * 2; var G = E * 2; if (!i) { if (f.cap === Ff.ROUND) { o += Tf(t - z * (F - G) * 0.5, u - A * (F - G) * 0.5, t - z * F, u - A * F, t + z * G, u + A * G, m, true) + 2; } else if (f.cap === Ff.SQUARE) { o += Sf(t, u, z, A, F, G, true, m); } } m.push(t - z * F, u - A * F); m.push(t + z * G, u + A * G); for (var H = 1; H < n - 1; ++H) { t = d[(H - 1) * 2]; u = d[(H - 1) * 2 + 1]; v = d[H * 2]; w = d[H * 2 + 1]; x = d[(H + 1) * 2]; y = d[(H + 1) * 2 + 1]; z = -(u - w); A = t - v; z /= D = Math.sqrt(z * z + A * A); A /= D; z *= q; A *= q; B = -(w - y); C = v - x; B /= D = Math.sqrt(B * B + C * C); C /= D; B *= q; C *= q; var I = v - t; var J = u - w; var K = v - x; var L = y - w; var M = J * K - L * I; var N = M < 0; if (Math.abs(M) < 0.1) { m.push(v - z * F, w - A * F); m.push(v + z * G, w + A * G); } else { var O = (-z + t) * (-A + w) - (-z + v) * (-A + u); var P = (-B + x) * (-C + w) - (-B + v) * (-C + y); var Q = (I * P - K * O) / M; var R = (L * O - J * P) / M; var S = (Q - v) * (Q - v) + (R - w) * (R - w); var T = v + (Q - v) * F; var U = w + (R - w) * F; var V = v - (Q - v) * G; var W = w - (R - w) * G; var X = N ? F : G; if (S <= Math.min(I * I + J * J, K * K + L * L) + X * X * r) { if (f.join === Ef.BEVEL || S / r > s) { if (N) { m.push(T, U); m.push(v + z * G, w + A * G); m.push(T, U); m.push(v + B * G, w + C * G); } else { m.push(v - z * F, w - A * F); m.push(V, W); m.push(v - B * F, w - C * F); m.push(V, W); } o += 2; } else if (f.join === Ef.ROUND) { if (N) { m.push(T, U); m.push(v + z * G, w + A * G); o += Tf(v, w, v + z * G, w + A * G, v + B * G, w + C * G, m, true) + 4; m.push(T, U); m.push(v + B * G, w + C * G); } else { m.push(v - z * F, w - A * F); m.push(V, W); o += Tf(v, w, v - z * F, w - A * F, v - B * F, w - C * F, m, false) + 4; m.push(v - B * F, w - C * F); m.push(V, W); } } else { m.push(T, U); m.push(V, W); } } else { m.push(v - z * F, w - A * F); m.push(v + z * G, w + A * G); if (f.join !== Ef.BEVEL && S / r <= s) { if (f.join === Ef.ROUND) { o += N ? Tf(v, w, v + z * G, w + A * G, v + B * G, w + C * G, m, true) + 2 : Tf(v, w, v - z * F, w - A * F, v - B * F, w - C * F, m, false) + 2; } else { if (N) { m.push(V, W); m.push(V, W); } else { m.push(T, U); m.push(T, U); } o += 2; } } m.push(v - B * F, w - C * F); m.push(v + B * G, w + C * G); o += 2; } } } t = d[(n - 2) * 2]; u = d[(n - 2) * 2 + 1]; v = d[(n - 1) * 2]; z = -(u - (w = d[(n - 1) * 2 + 1])); A = t - v; z /= D = Math.sqrt(z * z + A * A); A /= D; z *= q; A *= q; m.push(v - z * F, w - A * F); m.push(v + z * G, w + A * G); if (!i) { if (f.cap === Ff.ROUND) { o += Tf(v - z * (F - G) * 0.5, w - A * (F - G) * 0.5, v - z * F, w - A * F, v + z * G, w + A * G, m, false) + 2; } else if (f.cap === Ff.SQUARE) { o += Sf(v, w, z, A, F, G, false, m); } } var Y = b.indices; var Z = If.epsilon * If.epsilon; for (H = p; H < o + p - 2; ++H) { t = m[H * 2]; u = m[H * 2 + 1]; v = m[(H + 1) * 2]; w = m[(H + 1) * 2 + 1]; x = m[(H + 2) * 2]; y = m[(H + 2) * 2 + 1]; if (Math.abs(t * (w - y) + v * (y - u) + x * (u - w)) >= Z) { Y.push(H, H + 1, H + 2); } } } })(a, b); } } var Vf; var Wf; var Xf = function () { function a() {} a.curveTo = function (a, b, c, d, e, f) { var g = f[f.length - 2]; var h = f[f.length - 1] - b; var i = g - a; var j = d - b; var k = c - a; var l = Math.abs(h * k - i * j); if (l < 1e-8 || e === 0) { if (f[f.length - 2] !== a || f[f.length - 1] !== b) { f.push(a, b); } return null; } var m = h * h + i * i; var n = j * j + k * k; var o = h * j + i * k; var p = e * Math.sqrt(m) / l; var q = e * Math.sqrt(n) / l; var r = p * o / m; var s = q * o / n; var t = p * k + q * i; var u = p * j + q * h; var v = i * (q + r); var w = h * (q + r); var x = k * (p + s); var y = j * (p + s); return { cx: t + a, cy: u + b, radius: e, startAngle: Math.atan2(w - u, v - t), endAngle: Math.atan2(y - u, x - t), anticlockwise: i * j > k * h }; }; a.arc = function (a, b, c, d, e, f, g, h, i) { for (var j = g - f, k = If._segmentsCount(Math.abs(j) * e, Math.ceil(Math.abs(j) / lb) * 40), l = j / (k * 2), m = l * 2, n = Math.cos(l), o = Math.sin(l), p = k - 1, q = p % 1 / p, r = 0; r <= p; ++r) { var s = l + f + m * (r + q * r); var t = Math.cos(s); var u = -Math.sin(s); i.push((n * t + o * u) * e + c, (n * -u + o * t) * e + d); } }; return a; }(); var Yf = function () { function a() {} a.curveLength = function (a, b, c, d, e, f, g, h) { for (var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = a, u = b, v = 1; v <= 10; ++v) { r = t - (p = (o = (n = (m = 1 - (j = v / 10)) * m) * m) * a + n * 3 * j * c + m * 3 * (k = j * j) * e + (l = k * j) * g); s = u - (q = o * b + n * 3 * j * d + m * 3 * k * f + l * h); t = p; u = q; i += Math.sqrt(r * r + s * s); } return i; }; a.curveTo = function (b, c, d, e, f, g, h) { var i = h[h.length - 2]; var j = h[h.length - 1]; h.length -= 2; var k = If._segmentsCount(a.curveLength(i, j, b, c, d, e, f, g)); var l = 0; var m = 0; var n = 0; var o = 0; var p = 0; h.push(i, j); for (var q = 1, r = 0; q <= k; ++q) { n = (m = (l = 1 - (r = q / k)) * l) * l; p = (o = r * r) * r; h.push(n * i + m * 3 * r * b + l * 3 * o * d + p * f, n * j + m * 3 * r * c + l * 3 * o * e + p * g); } }; return a; }(); var Zf = function () { function a() {} a.curveLength = function (a, b, c, d, e, f) { var g = a - c * 2 + e; var h = b - d * 2 + f; var i = c * 2 - a * 2; var j = d * 2 - b * 2; var k = (g * g + h * h) * 4; var l = (g * i + h * j) * 4; var m = i * i + j * j; var n = Math.sqrt(k + l + m) * 2; var o = Math.sqrt(k); var p = k * 2 * o; var q = Math.sqrt(m) * 2; var r = l / o; return (p * n + o * l * (n - q) + (m * 4 * k - l * l) * Math.log((o * 2 + r + n) / (r + q))) / (p * 4); }; a.curveTo = function (b, c, d, e, f) { for (var g = f[f.length - 2], h = f[f.length - 1], i = If._segmentsCount(a.curveLength(g, h, b, c, d, e)), j = 0, k = 0, l = 1; l <= i; ++l) { var m = l / i; j = g + (b - g) * m; k = h + (c - h) * m; f.push(j + (b + (d - b) * m - j) * m, k + (c + (e - c) * m - k) * m); } }; return a; }(); var $f = function () { function a() { this.reset(); } a.prototype.begin = function (a, b, c) { this.reset(); this.style = a; this.start = b; this.attribStart = c; }; a.prototype.end = function (a, b) { this.attribSize = b - this.attribStart; this.size = a - this.start; }; a.prototype.reset = function () { this.style = null; this.size = 0; this.start = 0; this.attribStart = 0; this.attribSize = 0; }; return a; }(); (Vf = {})[kb.POLY] = Nf; Vf[kb.CIRC] = Of; Vf[kb.ELIP] = Of; Vf[kb.RECT] = { build: function (a) { var b = a.shape; var c = b.x; var d = b.y; var e = b.width; var f = b.height; var g = a.points; g.length = 0; g.push(c, d, c + e, d, c + e, d + f, c, d + f); }, triangulate: function (a, b) { var c = a.points; var d = b.points; var e = d.length / 2; d.push(c[0], c[1], c[2], c[3], c[6], c[7], c[4], c[5]); b.indices.push(e, e + 1, e + 2, e + 1, e + 2, e + 3); } }; Vf[kb.RREC] = Rf; var _f = Vf; var ag = []; var bg = []; var cg = function () { function a(a, b, c, d) { if (b === undefined) { b = null; } if (c === undefined) { c = null; } if (d === undefined) { d = null; } this.points = []; this.holes = []; this.shape = a; this.lineStyle = c; this.fillStyle = b; this.matrix = d; this.type = a.type; } a.prototype.clone = function () { return new a(this.shape, this.fillStyle, this.lineStyle, this.matrix); }; a.prototype.destroy = function () { this.shape = null; this.holes.length = 0; this.holes = null; this.points.length = 0; this.points = null; this.lineStyle = null; this.fillStyle = null; }; return a; }(); var dg = new ob(); var eg = new Gb(); var fg = function (a) { function b() { var b = a.call(this) || this; b.closePointEps = 0.0001; b.boundsPadding = 0; b.uvsFloat32 = null; b.indicesUint16 = null; b.batchable = false; b.points = []; b.colors = []; b.uvs = []; b.indices = []; b.textureIds = []; b.graphicsData = []; b.drawCalls = []; b.batchDirty = -1; b.batches = []; b.dirty = 0; b.cacheDirty = -1; b.clearDirty = 0; b.shapeIndex = 0; b._bounds = new Gb(); b.boundsDirty = -1; return b; } Lf(b, a); Object.defineProperty(b.prototype, "bounds", { get: function () { if (this.boundsDirty !== this.dirty) { this.boundsDirty = this.dirty; this.calculateBounds(); } return this._bounds; }, enumerable: false, configurable: true }); b.prototype.invalidate = function () { this.boundsDirty = -1; this.dirty++; this.batchDirty++; this.shapeIndex = 0; this.points.length = 0; this.colors.length = 0; this.uvs.length = 0; this.indices.length = 0; this.textureIds.length = 0; for (var a = 0; a < this.drawCalls.length; a++) { this.drawCalls[a].texArray.clear(); bg.push(this.drawCalls[a]); } this.drawCalls.length = 0; a = 0; for (; a < this.batches.length; a++) { var b = this.batches[a]; b.reset(); ag.push(b); } this.batches.length = 0; }; b.prototype.clear = function () { if (this.graphicsData.length > 0) { this.invalidate(); this.clearDirty++; this.graphicsData.length = 0; } return this; }; b.prototype.drawShape = function (a, b, c, d) { if (b === undefined) { b = null; } if (c === undefined) { c = null; } if (d === undefined) { d = null; } var e = new cg(a, b, c, d); this.graphicsData.push(e); this.dirty++; return this; }; b.prototype.drawHole = function (a, b) { if (b === undefined) { b = null; } if (!this.graphicsData.length) { return null; } var c = new cg(a, null, null, b); var d = this.graphicsData[this.graphicsData.length - 1]; c.lineStyle = d.lineStyle; d.holes.push(c); this.dirty++; return this; }; b.prototype.destroy = function () { a.prototype.destroy.call(this); for (var b = 0; b < this.graphicsData.length; ++b) { this.graphicsData[b].destroy(); } this.points.length = 0; this.points = null; this.colors.length = 0; this.colors = null; this.uvs.length = 0; this.uvs = null; this.indices.length = 0; this.indices = null; this.indexBuffer.destroy(); this.indexBuffer = null; this.graphicsData.length = 0; this.graphicsData = null; this.drawCalls.length = 0; this.drawCalls = null; this.batches.length = 0; this.batches = null; this._bounds = null; }; b.prototype.containsPoint = function (a) { for (var b = this.graphicsData, c = 0; c < b.length; ++c) { var d = b[c]; if (d.fillStyle.visible && d.shape && (d.matrix ? d.matrix.applyInverse(a, dg) : dg.copyFrom(a), d.shape.contains(dg.x, dg.y))) { var e = false; if (d.holes) { for (var f = 0; f < d.holes.length; f++) { if (d.holes[f].shape.contains(dg.x, dg.y)) { e = true; break; } } } if (!e) { return true; } } } return false; }; b.prototype.updateBatches = function (a) { if (this.graphicsData.length) { if (this.validateBatching()) { this.cacheDirty = this.dirty; var b = this.uvs; var c = this.graphicsData; var d = null; var e = null; if (this.batches.length > 0) { e = (d = this.batches[this.batches.length - 1]).style; } for (var f = this.shapeIndex; f < c.length; f++) { this.shapeIndex++; var g = c[f]; var h = g.fillStyle; var i = g.lineStyle; _f[g.type].build(g); if (g.matrix) { this.transformPoints(g.points, g.matrix); } if (h.visible || i.visible) { this.processHoles(g.holes); } for (var j = 0; j < 2; j++) { var k = j === 0 ? h : i; if (k.visible) { var l = k.texture.baseTexture; var m = this.indices.length; var n = this.points.length / 2; l.wrapMode = wa.REPEAT; if (j === 0) { this.processFill(g); } else { this.processLine(g); } var o = this.points.length / 2 - n; if (o !== 0) { if (d && !this._compareStyles(e, k)) { d.end(m, n); d = null; } if (!d) { (d = ag.pop() || new $f()).begin(k, m, n); this.batches.push(d); e = k; } this.addUvs(this.points, b, k.texture, n, o, k.matrix); } } } } var p = this.indices.length; var q = this.points.length / 2; if (d) { d.end(p, q); } if (this.batches.length !== 0) { if (this.indicesUint16 && this.indices.length === this.indicesUint16.length) { this.indicesUint16.set(this.indices); } else { var r = q > 65535 && a; this.indicesUint16 = r ? new Uint32Array(this.indices) : new Uint16Array(this.indices); } this.batchable = this.isBatchable(); if (this.batchable) { this.packBatches(); } else { this.buildDrawCalls(); } } else { this.batchable = true; } } } else { this.batchable = true; } }; b.prototype._compareStyles = function (a, b) { return !!a && !!b && a.texture.baseTexture === b.texture.baseTexture && a.color + a.alpha === b.color + b.alpha && !!a.native == !!b.native; }; b.prototype.validateBatching = function () { if (this.dirty === this.cacheDirty || !this.graphicsData.length) { return false; } for (var a = 0, b = this.graphicsData.length; a < b; a++) { var c = this.graphicsData[a]; var d = c.fillStyle; var e = c.lineStyle; if (d && !d.texture.baseTexture.valid) { return false; } if (e && !e.texture.baseTexture.valid) { return false; } } return true; }; b.prototype.packBatches = function () { this.batchDirty++; this.uvsFloat32 = new Float32Array(this.uvs); for (var a = this.batches, b = 0, c = a.length; b < c; b++) { for (var d = a[b], e = 0; e < d.size; e++) { var f = d.start + e; this.indicesUint16[f] = this.indicesUint16[f] - d.attribStart; } } }; b.prototype.isBatchable = function () { if (this.points.length > 131070) { return false; } for (var a = this.batches, c = 0; c < a.length; c++) { if (a[c].style.native) { return false; } } return this.points.length < b.BATCHABLE_SIZE * 2; }; b.prototype.buildDrawCalls = function () { for (var a = ++Bc._globalBatch, b = 0; b < this.drawCalls.length; b++) { this.drawCalls[b].texArray.clear(); bg.push(this.drawCalls[b]); } this.drawCalls.length = 0; var c = this.colors; var d = this.textureIds; var e = bg.pop(); if (!e) { (e = new ue()).texArray = new ve(); } e.texArray.count = 0; e.start = 0; e.size = 0; e.type = qa.TRIANGLES; var f = 0; var g = null; var h = 0; var i = false; var j = qa.TRIANGLES; var k = 0; this.drawCalls.push(e); b = 0; for (; b < this.batches.length; b++) { var l = this.batches[b]; var m = l.style; var n = m.texture.baseTexture; if (i !== !!m.native) { j = (i = !!m.native) ? qa.LINES : qa.TRIANGLES; g = null; f = 8; a++; } if (g !== n) { g = n; if (n._batchEnabled !== a) { if (f === 8) { a++; f = 0; if (e.size > 0) { if (!(e = bg.pop())) { (e = new ue()).texArray = new ve(); } this.drawCalls.push(e); } e.start = k; e.size = 0; e.texArray.count = 0; e.type = j; } n.touched = 1; n._batchEnabled = a; n._batchLocation = f; n.wrapMode = wa.REPEAT; e.texArray.elements[e.texArray.count++] = n; f++; } } e.size += l.size; k += l.size; h = n._batchLocation; this.addColors(c, m.color, m.alpha, l.attribSize, l.attribStart); this.addTextureIds(d, h, l.attribSize, l.attribStart); } Bc._globalBatch = a; this.packAttributes(); }; b.prototype.packAttributes = function () { for (var a = this.points, b = this.uvs, c = this.colors, d = this.textureIds, e = new ArrayBuffer(a.length * 3 * 4), f = new Float32Array(e), g = new Uint32Array(e), h = 0, i = 0; i < a.length / 2; i++) { f[h++] = a[i * 2]; f[h++] = a[i * 2 + 1]; f[h++] = b[i * 2]; f[h++] = b[i * 2 + 1]; g[h++] = c[i]; f[h++] = d[i]; } this._buffer.update(e); this._indexBuffer.update(this.indicesUint16); }; b.prototype.processFill = function (a) { if (a.holes.length) { Nf.triangulate(a, this); } else { _f[a.type].triangulate(a, this); } }; b.prototype.processLine = function (a) { Uf(a, this); for (var b = 0; b < a.holes.length; b++) { Uf(a.holes[b], this); } }; b.prototype.processHoles = function (a) { for (var b = 0; b < a.length; b++) { var c = a[b]; _f[c.type].build(c); if (c.matrix) { this.transformPoints(c.points, c.matrix); } } }; b.prototype.calculateBounds = function () { var a = this._bounds; var b = eg; var c = wb.IDENTITY; this._bounds.clear(); b.clear(); for (var d = 0; d < this.graphicsData.length; d++) { var e = this.graphicsData[d]; var f = e.shape; var g = e.type; var h = e.lineStyle; var i = e.matrix || wb.IDENTITY; var j = 0; if (h && h.visible) { j = h.width; if (g !== kb.POLY || e.fillStyle.visible) { j *= Math.max(0, h.alignment); } else { j *= Math.max(h.alignment, 1 - h.alignment); } } if (c !== i) { if (!b.isEmpty()) { a.addBoundsMatrix(b, c); b.clear(); } c = i; } if (g === kb.RECT || g === kb.RREC) { var k = f; b.addFramePad(k.x, k.y, k.x + k.width, k.y + k.height, j, j); } else if (g === kb.CIRC) { var l = f; b.addFramePad(l.x, l.y, l.x, l.y, l.radius + j, l.radius + j); } else if (g === kb.ELIP) { var m = f; b.addFramePad(m.x, m.y, m.x, m.y, m.width + j, m.height + j); } else { var n = f; a.addVerticesMatrix(c, n.points, 0, n.points.length, j, j); } } if (!b.isEmpty()) { a.addBoundsMatrix(b, c); } a.pad(this.boundsPadding, this.boundsPadding); }; b.prototype.transformPoints = function (a, b) { for (var c = 0; c < a.length / 2; c++) { var d = a[c * 2]; var e = a[c * 2 + 1]; a[c * 2] = b.a * d + b.c * e + b.tx; a[c * 2 + 1] = b.b * d + b.d * e + b.ty; } }; b.prototype.addColors = function (a, b, c, d, e) { if (e === undefined) { e = 0; } var f = Ua((b >> 16) + (b & 65280) + ((b & 255) << 16), c); a.length = Math.max(a.length, e + d); for (var g = 0; g < d; g++) { a[e + g] = f; } }; b.prototype.addTextureIds = function (a, b, c, d) { if (d === undefined) { d = 0; } a.length = Math.max(a.length, d + c); for (var e = 0; e < c; e++) { a[d + e] = b; } }; b.prototype.addUvs = function (a, b, c, d, e, f) { if (f === undefined) { f = null; } for (var g = 0, h = b.length, i = c.frame; g < e;) { var j = a[(d + g) * 2]; var k = a[(d + g) * 2 + 1]; if (f) { var l = f.a * j + f.c * k + f.tx; k = f.b * j + f.d * k + f.ty; j = l; } g++; b.push(j / i.width, k / i.height); } var m = c.baseTexture; if (i.width < m.width || i.height < m.height) { this.adjustUvs(b, c, h, e); } }; b.prototype.adjustUvs = function (a, b, c, d) { for (var e = b.baseTexture, f = 0.000001, g = c + d * 2, h = b.frame, i = h.width / e.width, j = h.height / e.height, k = h.x / h.width, l = h.y / h.height, m = Math.floor(a[c] + f), n = Math.floor(a[c + 1] + f), o = c + 2; o < g; o += 2) { m = Math.min(m, Math.floor(a[o] + f)); n = Math.min(n, Math.floor(a[o + 1] + f)); } k -= m; l -= n; o = c; for (; o < g; o += 2) { a[o] = (a[o] + k) * i; a[o + 1] = (a[o + 1] + l) * j; } }; b.BATCHABLE_SIZE = 100; return b; }(ze); var gg = function (a) { function b() { var b = a !== null && a.apply(this, arguments) || this; b.width = 0; b.alignment = 0.5; b.native = false; b.cap = Ff.BUTT; b.join = Ef.MITER; b.miterLimit = 10; return b; } Lf(b, a); b.prototype.clone = function () { var a = new b(); a.color = this.color; a.alpha = this.alpha; a.texture = this.texture; a.matrix = this.matrix; a.visible = this.visible; a.width = this.width; a.alignment = this.alignment; a.native = this.native; a.cap = this.cap; a.join = this.join; a.miterLimit = this.miterLimit; return a; }; b.prototype.reset = function () { a.prototype.reset.call(this); this.color = 0; this.alignment = 0.5; this.width = 0; this.native = false; }; return b; }(Jf); var hg = new Float32Array(3); var ig = {}; var jg = function (a) { function b(b) { if (b === undefined) { b = null; } var c = a.call(this) || this; c.shader = null; c.pluginName = "batch"; c.currentPath = null; c.batches = []; c.batchTint = -1; c.batchDirty = -1; c.vertexData = null; c._fillStyle = new Jf(); c._lineStyle = new gg(); c._matrix = null; c._holeMode = false; c.state = Qd.for2d(); c._geometry = b || new fg(); c._geometry.refCount++; c._transformID = -1; c.tint = 16777215; c.blendMode = pa.NORMAL; return c; } Lf(b, a); Object.defineProperty(b.prototype, "geometry", { get: function () { return this._geometry; }, enumerable: false, configurable: true }); b.prototype.clone = function () { this.finishPoly(); return new b(this._geometry); }; Object.defineProperty(b.prototype, "blendMode", { get: function () { return this.state.blendMode; }, set: function (a) { this.state.blendMode = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tint", { get: function () { return this._tint; }, set: function (a) { this._tint = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "fill", { get: function () { return this._fillStyle; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "line", { get: function () { return this._lineStyle; }, enumerable: false, configurable: true }); b.prototype.lineStyle = function (a, b, c, d, e) { if (a === undefined) { a = null; } if (b === undefined) { b = 0; } if (c === undefined) { c = 1; } if (d === undefined) { d = 0.5; } if (e === undefined) { e = false; } if (typeof a == "number") { a = { width: a, color: b, alpha: c, alignment: d, native: e }; } return this.lineTextureStyle(a); }; b.prototype.lineTextureStyle = function (a) { a = Object.assign({ width: 0, texture: Sc.WHITE, color: a && a.texture ? 16777215 : 0, alpha: 1, matrix: null, alignment: 0.5, native: false, cap: Ff.BUTT, join: Ef.MITER, miterLimit: 10 }, a); if (this.currentPath) { this.startPoly(); } var b = a.width > 0 && a.alpha > 0; if (b) { if (a.matrix) { a.matrix = a.matrix.clone(); a.matrix.invert(); } Object.assign(this._lineStyle, { visible: b }, a); } else { this._lineStyle.reset(); } return this; }; b.prototype.startPoly = function () { if (this.currentPath) { var a = this.currentPath.points; var b = this.currentPath.points.length; if (b > 2) { this.drawShape(this.currentPath); this.currentPath = new tb(); this.currentPath.closeStroke = false; this.currentPath.points.push(a[b - 2], a[b - 1]); } } else { this.currentPath = new tb(); this.currentPath.closeStroke = false; } }; b.prototype.finishPoly = function () { if (this.currentPath) { if (this.currentPath.points.length > 2) { this.drawShape(this.currentPath); this.currentPath = null; } else { this.currentPath.points.length = 0; } } }; b.prototype.moveTo = function (a, b) { this.startPoly(); this.currentPath.points[0] = a; this.currentPath.points[1] = b; return this; }; b.prototype.lineTo = function (a, b) { if (!this.currentPath) { this.moveTo(0, 0); } var c = this.currentPath.points; var d = c[c.length - 2]; var e = c[c.length - 1]; if (d !== a || e !== b) { c.push(a, b); } return this; }; b.prototype._initCurve = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = 0; } if (this.currentPath) { if (this.currentPath.points.length === 0) { this.currentPath.points = [a, b]; } } else { this.moveTo(a, b); } }; b.prototype.quadraticCurveTo = function (a, b, c, d) { this._initCurve(); var e = this.currentPath.points; if (e.length === 0) { this.moveTo(0, 0); } Zf.curveTo(a, b, c, d, e); return this; }; b.prototype.bezierCurveTo = function (a, b, c, d, e, f) { this._initCurve(); Yf.curveTo(a, b, c, d, e, f, this.currentPath.points); return this; }; b.prototype.arcTo = function (a, b, c, d, e) { this._initCurve(a, b); var f = this.currentPath.points; var g = Xf.curveTo(a, b, c, d, e, f); if (g) { var h = g.cx; var i = g.cy; var j = g.radius; var k = g.startAngle; var l = g.endAngle; var m = g.anticlockwise; this.arc(h, i, j, k, l, m); } return this; }; b.prototype.arc = function (a, b, c, d, e, f) { if (f === undefined) { f = false; } if (d === e) { return this; } if (!f && e <= d) { e += lb; } else if (f && d <= e) { d += lb; } if (e - d == 0) { return this; } var g = a + Math.cos(d) * c; var h = b + Math.sin(d) * c; var i = this._geometry.closePointEps; var j = this.currentPath ? this.currentPath.points : null; if (j) { var k = Math.abs(j[j.length - 2] - g); var l = Math.abs(j[j.length - 1] - h); if (k >= i || l >= i) { j.push(g, h); } } else { this.moveTo(g, h); j = this.currentPath.points; } Xf.arc(g, h, a, b, c, d, e, f, j); return this; }; b.prototype.beginFill = function (a, b) { if (a === undefined) { a = 0; } if (b === undefined) { b = 1; } return this.beginTextureFill({ texture: Sc.WHITE, color: a, alpha: b }); }; b.prototype.beginTextureFill = function (a) { a = Object.assign({ texture: Sc.WHITE, color: 16777215, alpha: 1, matrix: null }, a); if (this.currentPath) { this.startPoly(); } var b = a.alpha > 0; if (b) { if (a.matrix) { a.matrix = a.matrix.clone(); a.matrix.invert(); } Object.assign(this._fillStyle, { visible: b }, a); } else { this._fillStyle.reset(); } return this; }; b.prototype.endFill = function () { this.finishPoly(); this._fillStyle.reset(); return this; }; b.prototype.drawRect = function (a, b, c, d) { return this.drawShape(new qb(a, b, c, d)); }; b.prototype.drawRoundedRect = function (a, b, c, d, e) { return this.drawShape(new ub(a, b, c, d, e)); }; b.prototype.drawCircle = function (a, b, c) { return this.drawShape(new rb(a, b, c)); }; b.prototype.drawEllipse = function (a, b, c, d) { return this.drawShape(new sb(a, b, c, d)); }; b.prototype.drawPolygon = function () { for (var a, b = arguments, c = [], d = 0; d < arguments.length; d++) { c[d] = b[d]; } var e = true; var f = c[0]; if (f.points) { e = f.closeStroke; a = f.points; } else { a = Array.isArray(c[0]) ? c[0] : c; } var g = new tb(a); g.closeStroke = e; this.drawShape(g); return this; }; b.prototype.drawShape = function (a) { if (this._holeMode) { this._geometry.drawHole(a, this._matrix); } else { this._geometry.drawShape(a, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix); } return this; }; b.prototype.clear = function () { this._geometry.clear(); this._lineStyle.reset(); this._fillStyle.reset(); this._boundsID++; this._matrix = null; this._holeMode = false; this.currentPath = null; return this; }; b.prototype.isFastRect = function () { var a = this._geometry.graphicsData; return a.length === 1 && a[0].shape.type === kb.RECT && !a[0].matrix && !a[0].holes.length && (!a[0].lineStyle.visible || !a[0].lineStyle.width); }; b.prototype._render = function (a) { this.finishPoly(); var b = this._geometry; var c = a.context.supports.uint32Indices; b.updateBatches(c); if (b.batchable) { if (this.batchDirty !== b.batchDirty) { this._populateBatches(); } this._renderBatched(a); } else { a.batch.flush(); this._renderDirect(a); } }; b.prototype._populateBatches = function () { var a = this._geometry; var b = this.blendMode; var c = a.batches.length; this.batchTint = -1; this._transformID = -1; this.batchDirty = a.batchDirty; this.batches.length = c; this.vertexData = new Float32Array(a.points); for (var d = 0; d < c; d++) { var e = a.batches[d]; var f = e.style.color; var g = new Float32Array(this.vertexData.buffer, e.attribStart * 4 * 2, e.attribSize * 2); var h = new Float32Array(a.uvsFloat32.buffer, e.attribStart * 4 * 2, e.attribSize * 2); var i = { vertexData: g, blendMode: b, indices: new Uint16Array(a.indicesUint16.buffer, e.start * 2, e.size), uvs: h, _batchRGB: Pa(f), _tintRGB: f, _texture: e.style.texture, alpha: e.style.alpha, worldAlpha: 1 }; this.batches[d] = i; } }; b.prototype._renderBatched = function (a) { if (this.batches.length) { a.batch.setObjectRenderer(a.plugins[this.pluginName]); this.calculateVertices(); this.calculateTints(); for (var b = 0, c = this.batches.length; b < c; b++) { var d = this.batches[b]; d.worldAlpha = this.worldAlpha * d.alpha; a.plugins[this.pluginName].render(d); } } }; b.prototype._renderDirect = function (a) { var b = this._resolveDirectShader(a); var c = this._geometry; var d = this.tint; var e = this.worldAlpha; var f = b.uniforms; var g = c.drawCalls; f.translationMatrix = this.transform.worldTransform; f.tint[0] = (d >> 16 & 255) / 255 * e; f.tint[1] = (d >> 8 & 255) / 255 * e; f.tint[2] = (d & 255) / 255 * e; f.tint[3] = e; a.shader.bind(b); a.geometry.bind(c, b); a.state.set(this.state); for (var h = 0, i = g.length; h < i; h++) { this._renderDrawCallDirect(a, c.drawCalls[h]); } }; b.prototype._renderDrawCallDirect = function (a, b) { for (var c = b.texArray, d = b.type, e = b.size, f = b.start, g = c.count, h = 0; h < g; h++) { a.texture.bind(c.elements[h], h); } a.geometry.draw(d, e, f); }; b.prototype._resolveDirectShader = function (a) { var b = this.shader; var c = this.pluginName; if (!b) { if (!ig[c]) { for (var d = a.plugins[c].MAX_TEXTURES, e = new Int32Array(d), f = 0; f < d; f++) { e[f] = f; } var g = { tint: new Float32Array([1, 1, 1, 1]), translationMatrix: new wb(), default: ed.from({ uSamplers: e }, true) }; var h = a.plugins[c]._shader.program; ig[c] = new Pd(h, g); } b = ig[c]; } return b; }; b.prototype._calculateBounds = function () { this.finishPoly(); var a = this._geometry; if (a.graphicsData.length) { var b = a.bounds; var c = b.minX; var d = b.minY; var e = b.maxX; var f = b.maxY; this._bounds.addFrame(this.transform, c, d, e, f); } }; b.prototype.containsPoint = function (a) { this.worldTransform.applyInverse(a, b._TEMP_POINT); return this._geometry.containsPoint(b._TEMP_POINT); }; b.prototype.calculateTints = function () { if (this.batchTint !== this.tint) { this.batchTint = this.tint; for (var a = Pa(this.tint, hg), b = 0; b < this.batches.length; b++) { var c = this.batches[b]; var d = c._batchRGB; var e = (a[0] * d[0] * 255 << 16) + (a[1] * d[1] * 255 << 8) + (a[2] * d[2] * 255 | 0); c._tintRGB = (e >> 16) + (e & 65280) + ((e & 255) << 16); } } }; b.prototype.calculateVertices = function () { var a = this.transform._worldID; if (this._transformID !== a) { this._transformID = a; for (var b = this.transform.worldTransform, c = b.a, d = b.b, e = b.c, f = b.d, g = b.tx, h = b.ty, i = this._geometry.points, j = this.vertexData, k = 0, l = 0; l < i.length; l += 2) { var m = i[l]; var n = i[l + 1]; j[k++] = c * m + e * n + g; j[k++] = f * n + d * m + h; } } }; b.prototype.closePath = function () { var a = this.currentPath; if (a) { a.closeStroke = true; this.finishPoly(); } return this; }; b.prototype.setMatrix = function (a) { this._matrix = a; return this; }; b.prototype.beginHole = function () { this.finishPoly(); this._holeMode = true; return this; }; b.prototype.endHole = function () { this.finishPoly(); this._holeMode = false; return this; }; b.prototype.destroy = function (b) { this._geometry.refCount--; if (this._geometry.refCount === 0) { this._geometry.dispose(); } this._matrix = null; this.currentPath = null; this._lineStyle.destroy(); this._lineStyle = null; this._fillStyle.destroy(); this._fillStyle = null; this._geometry = null; this.shader = null; this.vertexData = null; this.batches.length = 0; this.batches = null; a.prototype.destroy.call(this, b); }; b.nextRoundedRectBehavior = false; b._TEMP_POINT = new ob(); return b; }(dc); function kg(a, b) { kg = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return kg(a, b); } var lg = new ob(); var mg = new Uint16Array([0, 1, 2, 0, 2, 3]); var ng = function (a) { function b(b) { var c = a.call(this) || this; c._anchor = new vb(c._onAnchorUpdate, c, b ? b.defaultAnchor.x : 0, b ? b.defaultAnchor.y : 0); c._texture = null; c._width = 0; c._height = 0; c._tint = null; c._tintRGB = null; c.tint = 16777215; c.blendMode = pa.NORMAL; c._cachedTint = 16777215; c.uvs = null; c.texture = b || Sc.EMPTY; c.vertexData = new Float32Array(8); c.vertexTrimmedData = null; c._transformID = -1; c._textureID = -1; c._transformTrimmedID = -1; c._textureTrimmedID = -1; c.indices = mg; c.pluginName = "batch"; c.isSprite = true; c._roundPixels = Fa.ROUND_PIXELS; return c; } (function (a, b) { function c() { this.constructor = a; } kg(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype._onTextureUpdate = function () { this._textureID = -1; this._textureTrimmedID = -1; this._cachedTint = 16777215; if (this._width) { this.scale.x = _a(this.scale.x) * this._width / this._texture.orig.width; } if (this._height) { this.scale.y = _a(this.scale.y) * this._height / this._texture.orig.height; } }; b.prototype._onAnchorUpdate = function () { this._transformID = -1; this._transformTrimmedID = -1; }; b.prototype.calculateVertices = function () { var a = this._texture; if (this._transformID !== this.transform._worldID || this._textureID !== a._updateID) { if (this._textureID !== a._updateID) { this.uvs = this._texture._uvs.uvsFloat32; } this._transformID = this.transform._worldID; this._textureID = a._updateID; var b = this.transform.worldTransform; var c = b.a; var d = b.b; var e = b.c; var f = b.d; var g = b.tx; var h = b.ty; var i = this.vertexData; var j = a.trim; var k = a.orig; var l = this._anchor; var m = 0; var n = 0; var o = 0; var p = 0; if (j) { m = (n = j.x - l._x * k.width) + j.width; o = (p = j.y - l._y * k.height) + j.height; } else { m = (n = -l._x * k.width) + k.width; o = (p = -l._y * k.height) + k.height; } i[0] = c * n + e * p + g; i[1] = f * p + d * n + h; i[2] = c * m + e * p + g; i[3] = f * p + d * m + h; i[4] = c * m + e * o + g; i[5] = f * o + d * m + h; i[6] = c * n + e * o + g; i[7] = f * o + d * n + h; if (this._roundPixels) { for (var q = Fa.RESOLUTION, r = 0; r < i.length; ++r) { i[r] = Math.round((i[r] * q | 0) / q); } } } }; b.prototype.calculateTrimmedVertices = function () { if (this.vertexTrimmedData) { if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) { return; } } else { this.vertexTrimmedData = new Float32Array(8); } this._transformTrimmedID = this.transform._worldID; this._textureTrimmedID = this._texture._updateID; var a = this._texture; var b = this.vertexTrimmedData; var c = a.orig; var d = this._anchor; var e = this.transform.worldTransform; var f = e.a; var g = e.b; var h = e.c; var i = e.d; var j = e.tx; var k = e.ty; var l = -d._x * c.width; var m = l + c.width; var n = -d._y * c.height; var o = n + c.height; b[0] = f * l + h * n + j; b[1] = i * n + g * l + k; b[2] = f * m + h * n + j; b[3] = i * n + g * m + k; b[4] = f * m + h * o + j; b[5] = i * o + g * m + k; b[6] = f * l + h * o + j; b[7] = i * o + g * l + k; }; b.prototype._render = function (a) { this.calculateVertices(); a.batch.setObjectRenderer(a.plugins[this.pluginName]); a.plugins[this.pluginName].render(this); }; b.prototype._calculateBounds = function () { var a = this._texture.trim; var b = this._texture.orig; if (!a || a.width === b.width && a.height === b.height) { this.calculateVertices(); this._bounds.addQuad(this.vertexData); } else { this.calculateTrimmedVertices(); this._bounds.addQuad(this.vertexTrimmedData); } }; b.prototype.getLocalBounds = function (b) { if (this.children.length === 0) { this._localBounds ||= new Gb(); this._localBounds.minX = this._texture.orig.width * -this._anchor._x; this._localBounds.minY = this._texture.orig.height * -this._anchor._y; this._localBounds.maxX = this._texture.orig.width * (1 - this._anchor._x); this._localBounds.maxY = this._texture.orig.height * (1 - this._anchor._y); if (!b) { this._localBoundsRect ||= new qb(); b = this._localBoundsRect; } return this._localBounds.getRectangle(b); } else { return a.prototype.getLocalBounds.call(this, b); } }; b.prototype.containsPoint = function (a) { this.worldTransform.applyInverse(a, lg); var b = this._texture.orig.width; var c = this._texture.orig.height; var d = -b * this.anchor.x; var e = 0; return lg.x >= d && lg.x < d + b && (e = -c * this.anchor.y, lg.y >= e && lg.y < e + c); }; b.prototype.destroy = function (b) { a.prototype.destroy.call(this, b); this._texture.off("update", this._onTextureUpdate, this); this._anchor = null; if (typeof b == "boolean" ? b : b && b.texture) { var c = typeof b == "boolean" ? b : b && b.baseTexture; this._texture.destroy(!!c); } this._texture = null; }; b.from = function (a, c) { return new b(a instanceof Sc ? a : Sc.from(a, c)); }; Object.defineProperty(b.prototype, "roundPixels", { get: function () { return this._roundPixels; }, set: function (a) { if (this._roundPixels !== a) { this._transformID = -1; } this._roundPixels = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "width", { get: function () { return Math.abs(this.scale.x) * this._texture.orig.width; }, set: function (a) { var b = _a(this.scale.x) || 1; this.scale.x = b * a / this._texture.orig.width; this._width = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return Math.abs(this.scale.y) * this._texture.orig.height; }, set: function (a) { var b = _a(this.scale.y) || 1; this.scale.y = b * a / this._texture.orig.height; this._height = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "anchor", { get: function () { return this._anchor; }, set: function (a) { this._anchor.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tint", { get: function () { return this._tint; }, set: function (a) { this._tint = a; this._tintRGB = (a >> 16) + (a & 65280) + ((a & 255) << 16); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "texture", { get: function () { return this._texture; }, set: function (a) { if (this._texture !== a) { if (this._texture) { this._texture.off("update", this._onTextureUpdate, this); } this._texture = a || Sc.EMPTY; this._cachedTint = 16777215; this._textureID = -1; this._textureTrimmedID = -1; if (a) { if (a.baseTexture.valid) { this._onTextureUpdate(); } else { a.once("update", this._onTextureUpdate, this); } } } }, enumerable: false, configurable: true }); return b; }(dc); function og(a, b) { og = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return og(a, b); } (function (a) { a[a.LINEAR_VERTICAL = 0] = "LINEAR_VERTICAL"; a[a.LINEAR_HORIZONTAL = 1] = "LINEAR_HORIZONTAL"; })(Wf ||= {}); var pg = { align: "left", breakWords: false, dropShadow: false, dropShadowAlpha: 1, dropShadowAngle: Math.PI / 6, dropShadowBlur: 0, dropShadowColor: "black", dropShadowDistance: 5, fill: "black", fillGradientType: Wf.LINEAR_VERTICAL, fillGradientStops: [], fontFamily: "Arial", fontSize: 26, fontStyle: "normal", fontVariant: "normal", fontWeight: "normal", letterSpacing: 0, lineHeight: 0, lineJoin: "miter", miterLimit: 10, padding: 0, stroke: "black", strokeThickness: 0, textBaseline: "alphabetic", trim: false, whiteSpace: "pre", wordWrap: false, wordWrapWidth: 100, leading: 0 }; var qg = ["serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui"]; var rg = function () { function a(a) { this.styleID = 0; this.reset(); ug(this, a, a); } a.prototype.clone = function () { var b = {}; ug(b, this, pg); return new a(b); }; a.prototype.reset = function () { ug(this, pg, pg); }; Object.defineProperty(a.prototype, "align", { get: function () { return this._align; }, set: function (a) { if (this._align !== a) { this._align = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "breakWords", { get: function () { return this._breakWords; }, set: function (a) { if (this._breakWords !== a) { this._breakWords = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadow", { get: function () { return this._dropShadow; }, set: function (a) { if (this._dropShadow !== a) { this._dropShadow = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadowAlpha", { get: function () { return this._dropShadowAlpha; }, set: function (a) { if (this._dropShadowAlpha !== a) { this._dropShadowAlpha = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadowAngle", { get: function () { return this._dropShadowAngle; }, set: function (a) { if (this._dropShadowAngle !== a) { this._dropShadowAngle = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadowBlur", { get: function () { return this._dropShadowBlur; }, set: function (a) { if (this._dropShadowBlur !== a) { this._dropShadowBlur = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadowColor", { get: function () { return this._dropShadowColor; }, set: function (a) { var b = tg(a); if (this._dropShadowColor !== b) { this._dropShadowColor = b; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "dropShadowDistance", { get: function () { return this._dropShadowDistance; }, set: function (a) { if (this._dropShadowDistance !== a) { this._dropShadowDistance = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fill", { get: function () { return this._fill; }, set: function (a) { var b = tg(a); if (this._fill !== b) { this._fill = b; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fillGradientType", { get: function () { return this._fillGradientType; }, set: function (a) { if (this._fillGradientType !== a) { this._fillGradientType = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fillGradientStops", { get: function () { return this._fillGradientStops; }, set: function (a) { if (! function (a, b) { if (!Array.isArray(a) || !Array.isArray(b)) { return false; } if (a.length !== b.length) { return false; } for (var c = 0; c < a.length; ++c) { if (a[c] !== b[c]) { return false; } } return true; }(this._fillGradientStops, a)) { this._fillGradientStops = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fontFamily", { get: function () { return this._fontFamily; }, set: function (a) { if (this.fontFamily !== a) { this._fontFamily = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fontSize", { get: function () { return this._fontSize; }, set: function (a) { if (this._fontSize !== a) { this._fontSize = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fontStyle", { get: function () { return this._fontStyle; }, set: function (a) { if (this._fontStyle !== a) { this._fontStyle = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fontVariant", { get: function () { return this._fontVariant; }, set: function (a) { if (this._fontVariant !== a) { this._fontVariant = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "fontWeight", { get: function () { return this._fontWeight; }, set: function (a) { if (this._fontWeight !== a) { this._fontWeight = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "letterSpacing", { get: function () { return this._letterSpacing; }, set: function (a) { if (this._letterSpacing !== a) { this._letterSpacing = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "lineHeight", { get: function () { return this._lineHeight; }, set: function (a) { if (this._lineHeight !== a) { this._lineHeight = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "leading", { get: function () { return this._leading; }, set: function (a) { if (this._leading !== a) { this._leading = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "lineJoin", { get: function () { return this._lineJoin; }, set: function (a) { if (this._lineJoin !== a) { this._lineJoin = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "miterLimit", { get: function () { return this._miterLimit; }, set: function (a) { if (this._miterLimit !== a) { this._miterLimit = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "padding", { get: function () { return this._padding; }, set: function (a) { if (this._padding !== a) { this._padding = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "stroke", { get: function () { return this._stroke; }, set: function (a) { var b = tg(a); if (this._stroke !== b) { this._stroke = b; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "strokeThickness", { get: function () { return this._strokeThickness; }, set: function (a) { if (this._strokeThickness !== a) { this._strokeThickness = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "textBaseline", { get: function () { return this._textBaseline; }, set: function (a) { if (this._textBaseline !== a) { this._textBaseline = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "trim", { get: function () { return this._trim; }, set: function (a) { if (this._trim !== a) { this._trim = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "whiteSpace", { get: function () { return this._whiteSpace; }, set: function (a) { if (this._whiteSpace !== a) { this._whiteSpace = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "wordWrap", { get: function () { return this._wordWrap; }, set: function (a) { if (this._wordWrap !== a) { this._wordWrap = a; this.styleID++; } }, enumerable: false, configurable: true }); Object.defineProperty(a.prototype, "wordWrapWidth", { get: function () { return this._wordWrapWidth; }, set: function (a) { if (this._wordWrapWidth !== a) { this._wordWrapWidth = a; this.styleID++; } }, enumerable: false, configurable: true }); a.prototype.toFontString = function () { var a = typeof this.fontSize == "number" ? this.fontSize + "px" : this.fontSize; var b = this.fontFamily; if (!Array.isArray(this.fontFamily)) { b = this.fontFamily.split(","); } for (var c = b.length - 1; c >= 0; c--) { var d = b[c].trim(); if (!/([\"\'])[^\'\"]+\1/.test(d) && qg.indexOf(d) < 0) { d = "\"" + d + "\""; } b[c] = d; } return this.fontStyle + " " + this.fontVariant + " " + this.fontWeight + " " + a + " " + b.join(","); }; return a; }(); function sg(a) { if (typeof a == "number") { return Qa(a); } else { if (typeof a == "string" && a.indexOf("0x") === 0) { a = a.replace("0x", "#"); } return a; } } function tg(a) { if (Array.isArray(a)) { for (var b = 0; b < a.length; ++b) { a[b] = sg(a[b]); } return a; } return sg(a); } function ug(a, b, c) { for (var d in c) { if (Array.isArray(b[d])) { a[d] = b[d].slice(); } else { a[d] = b[d]; } } } var vg = function () { function a(a, b, c, d, e, f, g, h, i) { this.text = a; this.style = b; this.width = c; this.height = d; this.lines = e; this.lineWidths = f; this.lineHeight = g; this.maxLineWidth = h; this.fontProperties = i; } a.measureText = function (b, c, d, e) { if (e === undefined) { e = a._canvas; } d = d == null ? c.wordWrap : d; var f = c.toFontString(); var g = a.measureFont(f); if (g.fontSize === 0) { g.fontSize = c.fontSize; g.ascent = c.fontSize; } var h = e.getContext("2d"); h.font = f; for (var i = (d ? a.wordWrap(b, c, e) : b).split(/(?:\r\n|\r|\n)/), j = new Array(i.length), k = 0, l = 0; l < i.length; l++) { var m = h.measureText(i[l]).width + (i[l].length - 1) * c.letterSpacing; j[l] = m; k = Math.max(k, m); } var n = k + c.strokeThickness; if (c.dropShadow) { n += c.dropShadowDistance; } var o = c.lineHeight || g.fontSize + c.strokeThickness; var p = Math.max(o, g.fontSize + c.strokeThickness) + (i.length - 1) * (o + c.leading); if (c.dropShadow) { p += c.dropShadowDistance; } return new a(b, c, n, p, i, j, o + c.leading, k, g); }; a.wordWrap = function (b, c, d) { if (d === undefined) { d = a._canvas; } for (var e = d.getContext("2d"), f = 0, g = "", h = "", i = Object.create(null), j = c.letterSpacing, k = c.whiteSpace, l = a.collapseSpaces(k), m = a.collapseNewlines(k), n = !l, o = c.wordWrapWidth + j, p = a.tokenize(b), q = 0; q < p.length; q++) { var r = p[q]; if (a.isNewline(r)) { if (!m) { h += a.addLine(g); n = !l; g = ""; f = 0; continue; } r = " "; } if (l) { var s = a.isBreakingSpace(r); var t = a.isBreakingSpace(g[g.length - 1]); if (s && t) { continue; } } var u = a.getFromCache(r, j, i, e); if (u > o) { if (g !== "") { h += a.addLine(g); g = ""; f = 0; } if (a.canBreakWords(r, c.breakWords)) { for (var v = a.wordWrapSplit(r), w = 0; w < v.length; w++) { for (var x = v[w], y = 1; v[w + y];) { var z = v[w + y]; var A = x[x.length - 1]; if (a.canBreakChars(A, z, r, w, c.breakWords)) { break; } x += z; y++; } w += x.length - 1; var B = a.getFromCache(x, j, i, e); if (B + f > o) { h += a.addLine(g); n = false; g = ""; f = 0; } g += x; f += B; } } else { if (g.length > 0) { h += a.addLine(g); g = ""; f = 0; } var C = q === p.length - 1; h += a.addLine(r, !C); n = false; g = ""; f = 0; } } else { if (u + f > o) { n = false; h += a.addLine(g); g = ""; f = 0; } if (g.length > 0 || !a.isBreakingSpace(r) || n) { g += r; f += u; } } } return h + a.addLine(g, false); }; a.addLine = function (b, c) { if (c === undefined) { c = true; } b = a.trimRight(b); if (c) { return b + "\n"; } else { return b; } }; a.getFromCache = function (a, b, c, d) { var e = c[a]; if (typeof e != "number") { var f = a.length * b; e = d.measureText(a).width + f; c[a] = e; } return e; }; a.collapseSpaces = function (a) { return a === "normal" || a === "pre-line"; }; a.collapseNewlines = function (a) { return a === "normal"; }; a.trimRight = function (b) { if (typeof b != "string") { return ""; } for (var c = b.length - 1; c >= 0; c--) { var d = b[c]; if (!a.isBreakingSpace(d)) { break; } b = b.slice(0, -1); } return b; }; a.isNewline = function (b) { return typeof b == "string" && a._newlines.indexOf(b.charCodeAt(0)) >= 0; }; a.isBreakingSpace = function (b, c) { return typeof b == "string" && a._breakingSpaces.indexOf(b.charCodeAt(0)) >= 0; }; a.tokenize = function (b) { var c = []; var d = ""; if (typeof b != "string") { return c; } for (var e = 0; e < b.length; e++) { var f = b[e]; var g = b[e + 1]; if (a.isBreakingSpace(f, g) || a.isNewline(f)) { if (d !== "") { c.push(d); d = ""; } c.push(f); } else { d += f; } } if (d !== "") { c.push(d); } return c; }; a.canBreakWords = function (a, b) { return b; }; a.canBreakChars = function (a, b, c, d, e) { return true; }; a.wordWrapSplit = function (a) { return a.split(""); }; a.measureFont = function (b) { if (a._fonts[b]) { return a._fonts[b]; } var c = { ascent: 0, descent: 0, fontSize: 0 }; var d = a._canvas; var e = a._context; e.font = b; var f = a.METRICS_STRING + a.BASELINE_SYMBOL; var g = Math.ceil(e.measureText(f).width); var h = Math.ceil(e.measureText(a.BASELINE_SYMBOL).width); var i = Math.ceil(a.HEIGHT_MULTIPLIER * h); h = h * a.BASELINE_MULTIPLIER | 0; d.width = g; d.height = i; e.fillStyle = "#f00"; e.fillRect(0, 0, g, i); e.font = b; e.textBaseline = "alphabetic"; e.fillStyle = "#000"; e.fillText(f, 0, h); var j = e.getImageData(0, 0, g, i).data; var k = j.length; var l = g * 4; var m = 0; var n = 0; var o = false; for (m = 0; m < h; ++m) { for (var p = 0; p < l; p += 4) { if (j[n + p] !== 255) { o = true; break; } } if (o) { break; } n += l; } c.ascent = h - m; n = k - l; o = false; m = i; for (; m > h; --m) { for (p = 0; p < l; p += 4) { if (j[n + p] !== 255) { o = true; break; } } if (o) { break; } n -= l; } c.descent = m - h; c.fontSize = c.ascent + c.descent; a._fonts[b] = c; return c; }; a.clearMetrics = function (b) { if (b === undefined) { b = ""; } if (b) { delete a._fonts[b]; } else { a._fonts = {}; } }; Object.defineProperty(a, "_canvas", { get: function () { if (!a.__canvas) { var b = undefined; try { var c = new OffscreenCanvas(0, 0); var d = c.getContext("2d"); if (d && d.measureText) { a.__canvas = c; return c; } b = document.createElement("canvas"); } catch (a) { b = document.createElement("canvas"); } b.width = b.height = 10; a.__canvas = b; } return a.__canvas; }, enumerable: false, configurable: true }); Object.defineProperty(a, "_context", { get: function () { a.__context ||= a._canvas.getContext("2d"); return a.__context; }, enumerable: false, configurable: true }); return a; }(); vg._fonts = {}; vg.METRICS_STRING = "|ÉqÅ"; vg.BASELINE_SYMBOL = "M"; vg.BASELINE_MULTIPLIER = 1.4; vg.HEIGHT_MULTIPLIER = 2; vg._newlines = [10, 13]; vg._breakingSpaces = [9, 32, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8200, 8201, 8202, 8287, 12288]; var wg = { texture: true, children: false, baseTexture: true }; var xg = function (a) { function b(b, c, d) { var e = this; var f = false; if (!d) { d = document.createElement("canvas"); f = true; } d.width = 3; d.height = 3; var g = Sc.from(d); g.orig = new qb(); g.trim = new qb(); (e = a.call(this, g) || this)._ownCanvas = f; e.canvas = d; e.context = e.canvas.getContext("2d"); e._resolution = Fa.RESOLUTION; e._autoResolution = true; e._text = null; e._style = null; e._styleListener = null; e._font = ""; e.text = b; e.style = c; e.localStyleID = -1; return e; } (function (a, b) { function c() { this.constructor = a; } og(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype.updateText = function (a) { var c = this._style; if (this.localStyleID !== c.styleID) { this.dirty = true; this.localStyleID = c.styleID; } if (this.dirty || !a) { this._font = this._style.toFontString(); var d; var e; var f = this.context; var g = vg.measureText(this._text || " ", this._style, this._style.wordWrap, this.canvas); var h = g.width; var i = g.height; var j = g.lines; var k = g.lineHeight; var l = g.lineWidths; var m = g.maxLineWidth; var n = g.fontProperties; this.canvas.width = Math.ceil(Math.ceil(Math.max(1, h) + c.padding * 2) * this._resolution); this.canvas.height = Math.ceil(Math.ceil(Math.max(1, i) + c.padding * 2) * this._resolution); f.scale(this._resolution, this._resolution); f.clearRect(0, 0, this.canvas.width, this.canvas.height); f.font = this._font; f.lineWidth = c.strokeThickness; f.textBaseline = c.textBaseline; f.lineJoin = c.lineJoin; f.miterLimit = c.miterLimit; for (var o = c.dropShadow ? 2 : 1, p = 0; p < o; ++p) { var q = c.dropShadow && p === 0; var r = q ? Math.ceil(Math.max(1, i) + c.padding * 2) : 0; var s = r * this._resolution; if (q) { f.fillStyle = "black"; f.strokeStyle = "black"; var t = c.dropShadowColor; var u = Pa(typeof t == "number" ? t : Ra(t)); var v = c.dropShadowBlur * this._resolution; var w = c.dropShadowDistance * this._resolution; f.shadowColor = "rgba(" + u[0] * 255 + "," + u[1] * 255 + "," + u[2] * 255 + "," + c.dropShadowAlpha + ")"; f.shadowBlur = v; f.shadowOffsetX = Math.cos(c.dropShadowAngle) * w; f.shadowOffsetY = Math.sin(c.dropShadowAngle) * w + s; } else { f.fillStyle = this._generateFillStyle(c, j, g); f.strokeStyle = c.stroke; f.shadowColor = "black"; f.shadowBlur = 0; f.shadowOffsetX = 0; f.shadowOffsetY = 0; } var x = (k - n.fontSize) / 2; if (!b.nextLineHeightBehavior || k - n.fontSize < 0) { x = 0; } for (var y = 0; y < j.length; y++) { d = c.strokeThickness / 2; e = c.strokeThickness / 2 + y * k + n.ascent + x; if (c.align === "right") { d += m - l[y]; } else if (c.align === "center") { d += (m - l[y]) / 2; } if (c.stroke && c.strokeThickness) { this.drawLetterSpacing(j[y], d + c.padding, e + c.padding - r, true); } if (c.fill) { this.drawLetterSpacing(j[y], d + c.padding, e + c.padding - r); } } } this.updateTexture(); } }; b.prototype.drawLetterSpacing = function (a, c, d, e) { if (e === undefined) { e = false; } var f = this._style.letterSpacing; var g = b.experimentalLetterSpacing && ("letterSpacing" in CanvasRenderingContext2D.prototype || "textLetterSpacing" in CanvasRenderingContext2D.prototype); if (f === 0 || g) { if (g) { this.context.letterSpacing = f; this.context.textLetterSpacing = f; } if (e) { this.context.strokeText(a, c, d); } else { this.context.fillText(a, c, d); } return; } for (var h = c, i = Array.from ? Array.from(a) : a.split(""), j = this.context.measureText(a).width, k = 0, l = 0; l < i.length; ++l) { var m = i[l]; if (e) { this.context.strokeText(m, h, d); } else { this.context.fillText(m, h, d); } for (var n = "", o = l + 1; o < i.length; ++o) { n += i[o]; } h += j - (k = this.context.measureText(n).width) + f; j = k; } }; b.prototype.updateTexture = function () { var a = this.canvas; if (this._style.trim) { var b = function (a) { var b; var c; var d; var e = a.width; var f = a.height; var g = a.getContext("2d"); var h = g.getImageData(0, 0, e, f).data; var i = h.length; var j = { top: null, left: null, right: null, bottom: null }; var k = null; for (b = 0; b < i; b += 4) { if (h[b + 3] !== 0) { c = b / 4 % e; d = ~~(b / 4 / e); if (j.top === null) { j.top = d; } if (j.left === null || c < j.left) { j.left = c; } if (j.right === null || j.right < c) { j.right = c + 1; } if (j.bottom === null || j.bottom < d) { j.bottom = d; } } } if (j.top !== null) { e = j.right - j.left; f = j.bottom - j.top + 1; k = g.getImageData(j.left, j.top, e, f); } return { height: f, width: e, data: k }; }(a); if (b.data) { a.width = b.width; a.height = b.height; this.context.putImageData(b.data, 0, 0); } } var c = this._texture; var d = this._style; var e = d.trim ? 0 : d.padding; var f = c.baseTexture; c.trim.width = c._frame.width = a.width / this._resolution; c.trim.height = c._frame.height = a.height / this._resolution; c.trim.x = -e; c.trim.y = -e; c.orig.width = c._frame.width - e * 2; c.orig.height = c._frame.height - e * 2; this._onTextureUpdate(); f.setRealSize(a.width, a.height, this._resolution); c.updateUvs(); this._recursivePostUpdateTransform(); this.dirty = false; }; b.prototype._render = function (b) { if (this._autoResolution && this._resolution !== b.resolution) { this._resolution = b.resolution; this.dirty = true; } this.updateText(true); a.prototype._render.call(this, b); }; b.prototype.getLocalBounds = function (b) { this.updateText(true); return a.prototype.getLocalBounds.call(this, b); }; b.prototype._calculateBounds = function () { this.updateText(true); this.calculateVertices(); this._bounds.addQuad(this.vertexData); }; b.prototype._generateFillStyle = function (a, b, c) { var d; var e = a.fill; if (!Array.isArray(e)) { return e; } if (e.length === 1) { return e[0]; } var f = a.dropShadow ? a.dropShadowDistance : 0; var g = a.padding || 0; var h = this.canvas.width / this._resolution - f - g * 2; var i = this.canvas.height / this._resolution - f - g * 2; var j = e.slice(); var k = a.fillGradientStops.slice(); if (!k.length) { for (var l = j.length + 1, m = 1; m < l; ++m) { k.push(m / l); } } j.unshift(e[0]); k.unshift(0); j.push(e[e.length - 1]); k.push(1); if (a.fillGradientType === Wf.LINEAR_VERTICAL) { d = this.context.createLinearGradient(h / 2, g, h / 2, i + g); var n = c.fontProperties.fontSize + a.strokeThickness; for (m = 0; m < b.length; m++) { var o = c.lineHeight * (m - 1) + n; var p = c.lineHeight * m; var q = p; if (m > 0 && o > p) { q = (p + o) / 2; } var r = p + n; var s = c.lineHeight * (m + 1); var t = r; if (m + 1 < b.length && s < r) { t = (r + s) / 2; } for (var u = (t - q) / i, v = 0; v < j.length; v++) { var w; w = typeof k[v] == "number" ? k[v] : v / j.length; var x = Math.min(1, Math.max(0, q / i + w * u)); x = Number(x.toFixed(5)); d.addColorStop(x, j[v]); } } } else { d = this.context.createLinearGradient(g, i / 2, h + g, i / 2); var y = j.length + 1; var z = 1; for (m = 0; m < j.length; m++) { var A; A = typeof k[m] == "number" ? k[m] : z / y; d.addColorStop(A, j[m]); z++; } } return d; }; b.prototype.destroy = function (b) { if (typeof b == "boolean") { b = { children: b }; } b = Object.assign({}, wg, b); a.prototype.destroy.call(this, b); if (this._ownCanvas) { this.canvas.height = this.canvas.width = 0; } this.context = null; this.canvas = null; this._style = null; }; Object.defineProperty(b.prototype, "width", { get: function () { this.updateText(true); return Math.abs(this.scale.x) * this._texture.orig.width; }, set: function (a) { this.updateText(true); var b = _a(this.scale.x) || 1; this.scale.x = b * a / this._texture.orig.width; this._width = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { this.updateText(true); return Math.abs(this.scale.y) * this._texture.orig.height; }, set: function (a) { this.updateText(true); var b = _a(this.scale.y) || 1; this.scale.y = b * a / this._texture.orig.height; this._height = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "style", { get: function () { return this._style; }, set: function (a) { a = a || {}; this._style = a instanceof rg ? a : new rg(a); this.localStyleID = -1; this.dirty = true; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "text", { get: function () { return this._text; }, set: function (a) { a = String(a == null ? "" : a); if (this._text !== a) { this._text = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "resolution", { get: function () { return this._resolution; }, set: function (a) { this._autoResolution = false; if (this._resolution !== a) { this._resolution = a; this.dirty = true; } }, enumerable: false, configurable: true }); b.nextLineHeightBehavior = false; b.experimentalLetterSpacing = false; return b; }(ng); Fa.UPLOADS_PER_FRAME = 4; function yg(a, b) { yg = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return yg(a, b); } var zg = function () { function a(a) { this.maxItemsPerFrame = a; this.itemsLeft = 0; } a.prototype.beginFrame = function () { this.itemsLeft = this.maxItemsPerFrame; }; a.prototype.allowedToUpload = function () { return this.itemsLeft-- > 0; }; return a; }(); function Ag(a, b) { var c = false; if (a && a._textures && a._textures.length) { for (var d = 0; d < a._textures.length; d++) { if (a._textures[d] instanceof Sc) { var e = a._textures[d].baseTexture; if (b.indexOf(e) === -1) { b.push(e); c = true; } } } } return c; } function Bg(a, b) { if (a.baseTexture instanceof Bc) { var c = a.baseTexture; if (b.indexOf(c) === -1) { b.push(c); } return true; } return false; } function Cg(a, b) { if (a._texture && a._texture instanceof Sc) { var c = a._texture.baseTexture; if (b.indexOf(c) === -1) { b.push(c); } return true; } return false; } function Dg(a, b) { return b instanceof xg && (b.updateText(true), true); } function Eg(a, b) { if (b instanceof rg) { var c = b.toFontString(); vg.measureFont(c); return true; } return false; } function Fg(a, b) { if (a instanceof xg) { if (b.indexOf(a.style) === -1) { b.push(a.style); } if (b.indexOf(a) === -1) { b.push(a); } var c = a._texture.baseTexture; if (b.indexOf(c) === -1) { b.push(c); } return true; } return false; } function Gg(a, b) { return a instanceof rg && (b.indexOf(a) === -1 && b.push(a), true); } function Hg(a, b) { return b instanceof Bc && (b._glTextures[a.CONTEXT_UID] || a.texture.bind(b), true); } function Ig(a, b) { if (!(b instanceof jg)) { return false; } var c = b.geometry; b.finishPoly(); c.updateBatches(); for (var d = c.batches, e = 0; e < d.length; e++) { var f = d[e].style.texture; if (f) { Hg(a, f.baseTexture); } } if (!c.batchable) { a.geometry.bind(c, b._resolveDirectShader(a)); } return true; } function Jg(a, b) { return a instanceof jg && (b.push(a), true); } var Kg = function (a) { function b(b) { var c = a.call(this, b) || this; c.uploadHookHelper = c.renderer; c.registerFindHook(Jg); c.registerUploadHook(Hg); c.registerUploadHook(Ig); return c; } (function (a, b) { function c() { this.constructor = a; } yg(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); return b; }(function () { function a(a) { var b = this; this.limiter = new zg(Fa.UPLOADS_PER_FRAME); this.renderer = a; this.uploadHookHelper = null; this.queue = []; this.addHooks = []; this.uploadHooks = []; this.completes = []; this.ticking = false; this.delayedTick = function () { if (b.queue) { b.prepareItems(); } }; this.registerFindHook(Fg); this.registerFindHook(Gg); this.registerFindHook(Ag); this.registerFindHook(Bg); this.registerFindHook(Cg); this.registerUploadHook(Dg); this.registerUploadHook(Eg); } a.prototype.upload = function (a, b) { if (typeof a == "function") { b = a; a = null; } if (a) { this.add(a); } if (this.queue.length) { if (b) { this.completes.push(b); } if (!this.ticking) { this.ticking = true; ic.system.addOnce(this.tick, this, ec.UTILITY); } } else if (b) { b(); } }; a.prototype.tick = function () { setTimeout(this.delayedTick, 0); }; a.prototype.prepareItems = function () { for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload();) { var a = this.queue[0]; var b = false; if (a && !a._destroyed) { for (var c = 0, d = this.uploadHooks.length; c < d; c++) { if (this.uploadHooks[c](this.uploadHookHelper, a)) { this.queue.shift(); b = true; break; } } } if (!b) { this.queue.shift(); } } if (this.queue.length) { ic.system.addOnce(this.tick, this, ec.UTILITY); } else { this.ticking = false; var e = this.completes.slice(0); this.completes.length = 0; c = 0; d = e.length; for (; c < d; c++) { e[c](); } } }; a.prototype.registerFindHook = function (a) { if (a) { this.addHooks.push(a); } return this; }; a.prototype.registerUploadHook = function (a) { if (a) { this.uploadHooks.push(a); } return this; }; a.prototype.add = function (a) { for (var b = 0, c = this.addHooks.length; b < c && !this.addHooks[b](a, this.queue); b++); if (a instanceof dc) { for (b = a.children.length - 1; b >= 0; b--) { this.add(a.children[b]); } } return this; }; a.prototype.destroy = function () { if (this.ticking) { ic.system.remove(this.tick, this); } this.ticking = false; this.addHooks = null; this.uploadHooks = null; this.renderer = null; this.completes = null; this.queue = null; this.limiter = null; this.uploadHookHelper = null; }; return a; }()); (function () { function a(a) { this.maxMilliseconds = a; this.frameStart = 0; } a.prototype.beginFrame = function () { this.frameStart = Date.now(); }; a.prototype.allowedToUpload = function () { return Date.now() - this.frameStart < this.maxMilliseconds; }; })(); var Lg = function () { function a(a, b, c) { if (c === undefined) { c = null; } this._texture = a instanceof Sc ? a : null; this.baseTexture = a instanceof Bc ? a : this._texture.baseTexture; this.textures = {}; this.animations = {}; this.data = b; var d = this.baseTexture.resource; this.resolution = this._updateResolution(c || (d ? d.url : null)); this._frames = this.data.frames; this._frameKeys = Object.keys(this._frames); this._batchIndex = 0; this._callback = null; } a.prototype._updateResolution = function (a) { if (a === undefined) { a = null; } var b = this.data.meta.scale; var c = jb(a, null); if (c === null) { c = b !== undefined ? parseFloat(b) : 1; } if (c !== 1) { this.baseTexture.setResolution(c); } return c; }; a.prototype.parse = function (b) { this._batchIndex = 0; this._callback = b; if (this._frameKeys.length <= a.BATCH_SIZE) { this._processFrames(0); this._processAnimations(); this._parseComplete(); } else { this._nextBatch(); } }; a.prototype._processFrames = function (b) { for (var c = b, d = a.BATCH_SIZE; c - b < d && c < this._frameKeys.length;) { var e = this._frameKeys[c]; var f = this._frames[e]; var g = f.frame; if (g) { var h; var i = null; var j = f.trimmed !== false && f.sourceSize ? f.sourceSize : f.frame; var k = new qb(0, 0, Math.floor(j.w) / this.resolution, Math.floor(j.h) / this.resolution); h = f.rotated ? new qb(Math.floor(g.x) / this.resolution, Math.floor(g.y) / this.resolution, Math.floor(g.h) / this.resolution, Math.floor(g.w) / this.resolution) : new qb(Math.floor(g.x) / this.resolution, Math.floor(g.y) / this.resolution, Math.floor(g.w) / this.resolution, Math.floor(g.h) / this.resolution); if (f.trimmed !== false && f.spriteSourceSize) { i = new qb(Math.floor(f.spriteSourceSize.x) / this.resolution, Math.floor(f.spriteSourceSize.y) / this.resolution, Math.floor(g.w) / this.resolution, Math.floor(g.h) / this.resolution); } this.textures[e] = new Sc(this.baseTexture, h, k, i, f.rotated ? 2 : 0, f.anchor); Sc.addToCache(this.textures[e], e); } c++; } }; a.prototype._processAnimations = function () { var a = this.data.animations || {}; for (var b in a) { this.animations[b] = []; for (var c = 0; c < a[b].length; c++) { var d = a[b][c]; this.animations[b].push(this.textures[d]); } } }; a.prototype._parseComplete = function () { var a = this._callback; this._callback = null; this._batchIndex = 0; a.call(this, this.textures); }; a.prototype._nextBatch = function () { var b = this; this._processFrames(this._batchIndex * a.BATCH_SIZE); this._batchIndex++; setTimeout(function () { if (b._batchIndex * a.BATCH_SIZE < b._frameKeys.length) { b._nextBatch(); } else { b._processAnimations(); b._parseComplete(); } }, 0); }; a.prototype.destroy = function (a) { var b; if (a === undefined) { a = false; } for (var c in this.textures) { this.textures[c].destroy(); } this._frames = null; this._frameKeys = null; this.data = null; this.textures = null; if (a) { if ((b = this._texture) !== null && b !== undefined) { b.destroy(); } this.baseTexture.destroy(); } this._texture = null; this.baseTexture = null; }; a.BATCH_SIZE = 1000; return a; }(); var Mg = function () { function a() {} a.use = function (b, c) { var d = this; var e = b.name + "_image"; if (b.data && b.type === We.TYPE.JSON && b.data.frames && !d.resources[e]) { var f = b.data?.meta?.related_multi_packs; if (Array.isArray(f)) { for (var g = function (a) { if (typeof a != "string") { return "continue"; } var c = a.replace(".json", ""); var e = La.resolve(b.url.replace(d.baseUrl, ""), a); if (d.resources[c] || Object.values(d.resources).some(function (a) { return La.format(La.parse(a.url)) === e; })) { return "continue"; } var f = { crossOrigin: b.crossOrigin, loadType: We.LOAD_TYPE.XHR, xhrType: We.XHR_RESPONSE_TYPE.JSON, parentResource: b, metadata: b.metadata }; d.add(c, e, f); }, h = 0, i = f; h < i.length; h++) { g(i[h]); } } var j = { crossOrigin: b.crossOrigin, metadata: b.metadata.imageMetadata, parentResource: b }; var k = a.getResourcePath(b, d.baseUrl); d.add(e, k, j, function (a) { if (a.error) { c(a.error); } else { var d = new Lg(a.texture, b.data, b.url); d.parse(function () { b.spritesheet = d; b.textures = d.textures; c(); }); } }); } else { c(); } }; a.getResourcePath = function (a, b) { if (a.isDataUrl) { return a.data.meta.image; } else { return La.resolve(a.url.replace(b, ""), a.data.meta.image); } }; return a; }(); function Ng(a, b) { Ng = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Ng(a, b); } function Og(a, b) { function c() { this.constructor = a; } Ng(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var Pg = new ob(); var Qg = function (a) { function b(b, c, d) { if (c === undefined) { c = 100; } if (d === undefined) { d = 100; } var e = a.call(this, b) || this; e.tileTransform = new Fb(); e._width = c; e._height = d; e.uvMatrix = e.texture.uvMatrix || new Td(b); e.pluginName = "tilingSprite"; e.uvRespectAnchor = false; return e; } Og(b, a); Object.defineProperty(b.prototype, "clampMargin", { get: function () { return this.uvMatrix.clampMargin; }, set: function (a) { this.uvMatrix.clampMargin = a; this.uvMatrix.update(true); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tileScale", { get: function () { return this.tileTransform.scale; }, set: function (a) { this.tileTransform.scale.copyFrom(a); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tilePosition", { get: function () { return this.tileTransform.position; }, set: function (a) { this.tileTransform.position.copyFrom(a); }, enumerable: false, configurable: true }); b.prototype._onTextureUpdate = function () { if (this.uvMatrix) { this.uvMatrix.texture = this._texture; } this._cachedTint = 16777215; }; b.prototype._render = function (a) { var b = this._texture; if (b && b.valid) { this.tileTransform.updateLocalTransform(); this.uvMatrix.update(); a.batch.setObjectRenderer(a.plugins[this.pluginName]); a.plugins[this.pluginName].render(this); } }; b.prototype._calculateBounds = function () { var a = this._width * -this._anchor._x; var b = this._height * -this._anchor._y; var c = this._width * (1 - this._anchor._x); var d = this._height * (1 - this._anchor._y); this._bounds.addFrame(this.transform, a, b, c, d); }; b.prototype.getLocalBounds = function (b) { if (this.children.length === 0) { this._bounds.minX = this._width * -this._anchor._x; this._bounds.minY = this._height * -this._anchor._y; this._bounds.maxX = this._width * (1 - this._anchor._x); this._bounds.maxY = this._height * (1 - this._anchor._y); if (!b) { this._localBoundsRect ||= new qb(); b = this._localBoundsRect; } return this._bounds.getRectangle(b); } else { return a.prototype.getLocalBounds.call(this, b); } }; b.prototype.containsPoint = function (a) { this.worldTransform.applyInverse(a, Pg); var b = this._width; var c = this._height; var d = -b * this.anchor._x; if (Pg.x >= d && Pg.x < d + b) { var e = -c * this.anchor._y; if (Pg.y >= e && Pg.y < e + c) { return true; } } return false; }; b.prototype.destroy = function (b) { a.prototype.destroy.call(this, b); this.tileTransform = null; this.uvMatrix = null; }; b.from = function (a, c) { return new b(a instanceof Sc ? a : Sc.from(a, c), c.width, c.height); }; Object.defineProperty(b.prototype, "width", { get: function () { return this._width; }, set: function (a) { this._width = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return this._height; }, set: function (a) { this._height = a; }, enumerable: false, configurable: true }); return b; }(ng); var Rg = "#version 100\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nattribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n"; var Sg = new wb(); var Tg = function (a) { function b(b) { var c = a.call(this, b) || this; b.runners.contextChange.add(c); c.quad = new cd(); c.state = Qd.for2d(); return c; } Og(b, a); b.prototype.contextChange = function () { var a = this.renderer; var b = { globals: a.globalUniforms }; this.simpleShader = Pd.from(Rg, "#version 100\n#define SHADER_NAME Tiling-Sprite-Simple-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\n\nvoid main(void)\n{\n vec4 texSample = texture2D(uSampler, vTextureCoord);\n gl_FragColor = texSample * uColor;\n}\n", b); this.shader = a.context.webGLVersion > 1 ? Pd.from("#version 300 es\n#define SHADER_NAME Tiling-Sprite-300\n\nprecision lowp float;\n\nin vec2 aVertexPosition;\nin vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTransform;\n\nout vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;\n}\n", "#version 300 es\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nin vec2 vTextureCoord;\n\nout vec4 fragmentColor;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n vec4 texSample = texture(uSampler, coord, unclamped == coord ? 0.0f : -32.0f);// lod-bias very negative to force lod 0\n\n fragmentColor = texSample * uColor;\n}\n", b) : Pd.from(Rg, "#version 100\n#ifdef GL_EXT_shader_texture_lod\n #extension GL_EXT_shader_texture_lod : enable\n#endif\n#define SHADER_NAME Tiling-Sprite-100\n\nprecision lowp float;\n\nvarying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform vec4 uColor;\nuniform mat3 uMapCoord;\nuniform vec4 uClampFrame;\nuniform vec2 uClampOffset;\n\nvoid main(void)\n{\n vec2 coord = vTextureCoord + ceil(uClampOffset - vTextureCoord);\n coord = (uMapCoord * vec3(coord, 1.0)).xy;\n vec2 unclamped = coord;\n coord = clamp(coord, uClampFrame.xy, uClampFrame.zw);\n\n #ifdef GL_EXT_shader_texture_lod\n vec4 texSample = unclamped == coord\n ? texture2D(uSampler, coord) \n : texture2DLodEXT(uSampler, coord, 0);\n #else\n vec4 texSample = texture2D(uSampler, coord);\n #endif\n\n gl_FragColor = texSample * uColor;\n}\n", b); }; b.prototype.render = function (a) { var b = this.renderer; var c = this.quad; var d = c.vertices; d[0] = d[6] = a._width * -a.anchor.x; d[1] = d[3] = a._height * -a.anchor.y; d[2] = d[4] = a._width * (1 - a.anchor.x); d[5] = d[7] = a._height * (1 - a.anchor.y); var e = a.uvRespectAnchor ? a.anchor.x : 0; var f = a.uvRespectAnchor ? a.anchor.y : 0; (d = c.uvs)[0] = d[6] = -e; d[1] = d[3] = -f; d[2] = d[4] = 1 - e; d[5] = d[7] = 1 - f; c.invalidate(); var g = a._texture; var h = g.baseTexture; var i = a.tileTransform.localTransform; var j = a.uvMatrix; var k = h.isPowerOfTwo && g.frame.width === h.width && g.frame.height === h.height; if (k) { if (h._glTextures[b.CONTEXT_UID]) { k = h.wrapMode !== wa.CLAMP; } else if (h.wrapMode === wa.CLAMP) { h.wrapMode = wa.REPEAT; } } var l = k ? this.simpleShader : this.shader; var m = g.width; var n = g.height; var o = a._width; var p = a._height; Sg.set(i.a * m / o, i.b * m / p, i.c * n / o, i.d * n / p, i.tx / o, i.ty / p); Sg.invert(); if (k) { Sg.prepend(j.mapCoord); } else { l.uniforms.uMapCoord = j.mapCoord.toArray(true); l.uniforms.uClampFrame = j.uClampFrame; l.uniforms.uClampOffset = j.uClampOffset; } l.uniforms.uTransform = Sg.toArray(true); l.uniforms.uColor = Va(a.tint, a.worldAlpha, l.uniforms.uColor, h.alphaMode); l.uniforms.translationMatrix = a.transform.worldTransform.toArray(true); l.uniforms.uSampler = g; b.shader.bind(l); b.geometry.bind(c); this.state.blendMode = Ta(a.blendMode, h.alphaMode); b.state.set(this.state); b.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0); }; return b; }(jd); function Ug(a, b) { Ug = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Ug(a, b); } function Vg(a, b) { function c() { this.constructor = a; } Ug(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var Wg = function () { function a(a, b) { this.uvBuffer = a; this.uvMatrix = b; this.data = null; this._bufferUpdateId = -1; this._textureUpdateId = -1; this._updateID = 0; } a.prototype.update = function (a) { if (a || this._bufferUpdateId !== this.uvBuffer._updateID || this._textureUpdateId !== this.uvMatrix._updateID) { this._bufferUpdateId = this.uvBuffer._updateID; this._textureUpdateId = this.uvMatrix._updateID; var b = this.uvBuffer.data; if (!this.data || this.data.length !== b.length) { this.data = new Float32Array(b.length); } this.uvMatrix.multiplyUvs(b, this.data); this._updateID++; } }; return a; }(); var Xg = new ob(); var Yg = new tb(); var Zg = function (a) { function b(b, c, d, e) { if (e === undefined) { e = qa.TRIANGLES; } var f = a.call(this) || this; f.geometry = b; f.shader = c; f.state = d || Qd.for2d(); f.drawMode = e; f.start = 0; f.size = 0; f.uvs = null; f.indices = null; f.vertexData = new Float32Array(1); f.vertexDirty = -1; f._transformID = -1; f._roundPixels = Fa.ROUND_PIXELS; f.batchUvs = null; return f; } Vg(b, a); Object.defineProperty(b.prototype, "geometry", { get: function () { return this._geometry; }, set: function (a) { if (this._geometry !== a) { if (this._geometry) { this._geometry.refCount--; if (this._geometry.refCount === 0) { this._geometry.dispose(); } } this._geometry = a; if (this._geometry) { this._geometry.refCount++; } this.vertexDirty = -1; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "uvBuffer", { get: function () { return this.geometry.buffers[1]; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "verticesBuffer", { get: function () { return this.geometry.buffers[0]; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "material", { get: function () { return this.shader; }, set: function (a) { this.shader = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "blendMode", { get: function () { return this.state.blendMode; }, set: function (a) { this.state.blendMode = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "roundPixels", { get: function () { return this._roundPixels; }, set: function (a) { if (this._roundPixels !== a) { this._transformID = -1; } this._roundPixels = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tint", { get: function () { if ("tint" in this.shader) { return this.shader.tint; } else { return null; } }, set: function (a) { this.shader.tint = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "texture", { get: function () { if ("texture" in this.shader) { return this.shader.texture; } else { return null; } }, set: function (a) { this.shader.texture = a; }, enumerable: false, configurable: true }); b.prototype._render = function (a) { var c = this.geometry.buffers[0].data; if (this.shader.batchable && this.drawMode === qa.TRIANGLES && c.length < b.BATCHABLE_SIZE * 2) { this._renderToBatch(a); } else { this._renderDefault(a); } }; b.prototype._renderDefault = function (a) { var b = this.shader; b.alpha = this.worldAlpha; if (b.update) { b.update(); } a.batch.flush(); b.uniforms.translationMatrix = this.transform.worldTransform.toArray(true); a.shader.bind(b); a.state.set(this.state); a.geometry.bind(this.geometry, b); a.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount); }; b.prototype._renderToBatch = function (a) { var b = this.geometry; var c = this.shader; if (c.uvMatrix) { c.uvMatrix.update(); this.calculateUvs(); } this.calculateVertices(); this.indices = b.indexBuffer.data; this._tintRGB = c._tintRGB; this._texture = c.texture; var d = this.material.pluginName; a.batch.setObjectRenderer(a.plugins[d]); a.plugins[d].render(this); }; b.prototype.calculateVertices = function () { var a = this.geometry.buffers[0]; var b = a.data; var c = a._updateID; if (c !== this.vertexDirty || this._transformID !== this.transform._worldID) { this._transformID = this.transform._worldID; if (this.vertexData.length !== b.length) { this.vertexData = new Float32Array(b.length); } for (var d = this.transform.worldTransform, e = d.a, f = d.b, g = d.c, h = d.d, i = d.tx, j = d.ty, k = this.vertexData, l = 0; l < k.length / 2; l++) { var m = b[l * 2]; var n = b[l * 2 + 1]; k[l * 2] = e * m + g * n + i; k[l * 2 + 1] = f * m + h * n + j; } if (this._roundPixels) { var o = Fa.RESOLUTION; for (l = 0; l < k.length; ++l) { k[l] = Math.round((k[l] * o | 0) / o); } } this.vertexDirty = c; } }; b.prototype.calculateUvs = function () { var a = this.geometry.buffers[1]; var b = this.shader; if (b.uvMatrix.isSimple) { this.uvs = a.data; } else { this.batchUvs ||= new Wg(a, b.uvMatrix); this.batchUvs.update(); this.uvs = this.batchUvs.data; } }; b.prototype._calculateBounds = function () { this.calculateVertices(); this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length); }; b.prototype.containsPoint = function (a) { if (!this.getBounds().contains(a.x, a.y)) { return false; } this.worldTransform.applyInverse(a, Xg); for (var b = this.geometry.getBuffer("aVertexPosition").data, c = Yg.points, d = this.geometry.getIndex().data, e = d.length, f = this.drawMode === 4 ? 3 : 1, g = 0; g + 2 < e; g += f) { var h = d[g] * 2; var i = d[g + 1] * 2; var j = d[g + 2] * 2; c[0] = b[h]; c[1] = b[h + 1]; c[2] = b[i]; c[3] = b[i + 1]; c[4] = b[j]; c[5] = b[j + 1]; if (Yg.contains(Xg.x, Xg.y)) { return true; } } return false; }; b.prototype.destroy = function (b) { a.prototype.destroy.call(this, b); if (this._cachedTexture) { this._cachedTexture.destroy(); this._cachedTexture = null; } this.geometry = null; this.shader = null; this.state = null; this.uvs = null; this.indices = null; this.vertexData = null; }; b.BATCHABLE_SIZE = 100; return b; }(dc); var $g = function (a) { function b(b, c) { var d = this; var e = { uSampler: b, alpha: 1, uTextureMatrix: wb.IDENTITY, uColor: new Float32Array([1, 1, 1, 1]) }; if ((c = Object.assign({ tint: 16777215, alpha: 1, pluginName: "batch" }, c)).uniforms) { Object.assign(e, c.uniforms); } (d = a.call(this, c.program || Od.from("attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\nuniform mat3 translationMatrix;\nuniform mat3 uTextureMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\n}\n", "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n"), e) || this)._colorDirty = false; d.uvMatrix = new Td(b); d.batchable = c.program === undefined; d.pluginName = c.pluginName; d.tint = c.tint; d.alpha = c.alpha; return d; } Vg(b, a); Object.defineProperty(b.prototype, "texture", { get: function () { return this.uniforms.uSampler; }, set: function (a) { if (this.uniforms.uSampler !== a) { this.uniforms.uSampler = a; this.uvMatrix.texture = a; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "alpha", { get: function () { return this._alpha; }, set: function (a) { if (a !== this._alpha) { this._alpha = a; this._colorDirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "tint", { get: function () { return this._tint; }, set: function (a) { if (a !== this._tint) { this._tint = a; this._tintRGB = (a >> 16) + (a & 65280) + ((a & 255) << 16); this._colorDirty = true; } }, enumerable: false, configurable: true }); b.prototype.update = function () { if (this._colorDirty) { this._colorDirty = false; var a = this.texture.baseTexture; Va(this._tint, this._alpha, this.uniforms.uColor, a.alphaMode); } if (this.uvMatrix.update()) { this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord; } }; return b; }(Pd); var _g = function (a) { function b(b, c, d) { var e = a.call(this) || this; var f = new Xc(b); var g = new Xc(c, true); var h = new Xc(d, true, true); e.addAttribute("aVertexPosition", f, 2, false, ta.FLOAT).addAttribute("aTextureCoord", g, 2, false, ta.FLOAT).addIndex(h); e._updateId = -1; return e; } Vg(b, a); Object.defineProperty(b.prototype, "vertexDirtyId", { get: function () { return this.buffers[0]._updateID; }, enumerable: false, configurable: true }); return b; }(ad); function ah(a, b) { ah = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return ah(a, b); } function bh() { this.info = []; this.common = []; this.page = []; this.char = []; this.kerning = []; this.distanceField = []; } var ch = function () { function a() {} a.test = function (a) { return typeof a == "string" && a.indexOf("info face=") === 0; }; a.parse = function (a) { var b = a.match(/^[a-z]+\s+.+$/gm); var c = { info: [], common: [], page: [], char: [], chars: [], kerning: [], kernings: [], distanceField: [] }; for (var d in b) { var e = b[d].match(/^[a-z]+/gm)[0]; var f = b[d].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm); var g = {}; for (var h in f) { var i = f[h].split("="); var j = i[0]; var k = i[1].replace(/"/gm, ""); var l = parseFloat(k); var m = isNaN(l) ? k : l; g[j] = m; } c[e].push(g); } var n = new bh(); c.info.forEach(function (a) { return n.info.push({ face: a.face, size: parseInt(a.size, 10) }); }); c.common.forEach(function (a) { return n.common.push({ lineHeight: parseInt(a.lineHeight, 10) }); }); c.page.forEach(function (a) { return n.page.push({ id: parseInt(a.id, 10), file: a.file }); }); c.char.forEach(function (a) { return n.char.push({ id: parseInt(a.id, 10), page: parseInt(a.page, 10), x: parseInt(a.x, 10), y: parseInt(a.y, 10), width: parseInt(a.width, 10), height: parseInt(a.height, 10), xoffset: parseInt(a.xoffset, 10), yoffset: parseInt(a.yoffset, 10), xadvance: parseInt(a.xadvance, 10) }); }); c.kerning.forEach(function (a) { return n.kerning.push({ first: parseInt(a.first, 10), second: parseInt(a.second, 10), amount: parseInt(a.amount, 10) }); }); c.distanceField.forEach(function (a) { return n.distanceField.push({ distanceRange: parseInt(a.distanceRange, 10), fieldType: a.fieldType }); }); return n; }; return a; }(); var dh = function () { function a() {} a.test = function (a) { return a instanceof XMLDocument && a.getElementsByTagName("page").length && a.getElementsByTagName("info")[0].getAttribute("face") !== null; }; a.parse = function (a) { for (var b = new bh(), c = a.getElementsByTagName("info"), d = a.getElementsByTagName("common"), e = a.getElementsByTagName("page"), f = a.getElementsByTagName("char"), g = a.getElementsByTagName("kerning"), h = a.getElementsByTagName("distanceField"), i = 0; i < c.length; i++) { b.info.push({ face: c[i].getAttribute("face"), size: parseInt(c[i].getAttribute("size"), 10) }); } for (i = 0; i < d.length; i++) { b.common.push({ lineHeight: parseInt(d[i].getAttribute("lineHeight"), 10) }); } for (i = 0; i < e.length; i++) { b.page.push({ id: parseInt(e[i].getAttribute("id"), 10) || 0, file: e[i].getAttribute("file") }); } for (i = 0; i < f.length; i++) { var j = f[i]; b.char.push({ id: parseInt(j.getAttribute("id"), 10), page: parseInt(j.getAttribute("page"), 10) || 0, x: parseInt(j.getAttribute("x"), 10), y: parseInt(j.getAttribute("y"), 10), width: parseInt(j.getAttribute("width"), 10), height: parseInt(j.getAttribute("height"), 10), xoffset: parseInt(j.getAttribute("xoffset"), 10), yoffset: parseInt(j.getAttribute("yoffset"), 10), xadvance: parseInt(j.getAttribute("xadvance"), 10) }); } for (i = 0; i < g.length; i++) { b.kerning.push({ first: parseInt(g[i].getAttribute("first"), 10), second: parseInt(g[i].getAttribute("second"), 10), amount: parseInt(g[i].getAttribute("amount"), 10) }); } for (i = 0; i < h.length; i++) { b.distanceField.push({ fieldType: h[i].getAttribute("fieldType"), distanceRange: parseInt(h[i].getAttribute("distanceRange"), 10) }); } return b; }; return a; }(); var eh = function () { function a() {} a.test = function (a) { if (typeof a == "string" && a.indexOf("<font>") > -1) { var b = new globalThis.DOMParser().parseFromString(a, "text/xml"); return dh.test(b); } return false; }; a.parse = function (a) { var b = new globalThis.DOMParser().parseFromString(a, "text/xml"); return dh.parse(b); }; return a; }(); var fh = [ch, dh, eh]; function gh(a) { for (var b = 0; b < fh.length; b++) { if (fh[b].test(a)) { return fh[b]; } } return null; } function hh(a, b, c, d, e, f, g) { var h = c.text; var i = c.fontProperties; b.translate(d, e); b.scale(f, f); var j = g.strokeThickness / 2; var k = -g.strokeThickness / 2; b.font = g.toFontString(); b.lineWidth = g.strokeThickness; b.textBaseline = g.textBaseline; b.lineJoin = g.lineJoin; b.miterLimit = g.miterLimit; b.fillStyle = function (a, b, c, d, e, f) { var g; var h = c.fill; if (!Array.isArray(h)) { return h; } if (h.length === 1) { return h[0]; } var i = c.dropShadow ? c.dropShadowDistance : 0; var j = c.padding || 0; var k = a.width / d - i - j * 2; var l = a.height / d - i - j * 2; var m = h.slice(); var n = c.fillGradientStops.slice(); if (!n.length) { for (var o = m.length + 1, p = 1; p < o; ++p) { n.push(p / o); } } m.unshift(h[0]); n.unshift(0); m.push(h[h.length - 1]); n.push(1); if (c.fillGradientType === Wf.LINEAR_VERTICAL) { g = b.createLinearGradient(k / 2, j, k / 2, l + j); var q = 0; var r = (f.fontProperties.fontSize + c.strokeThickness) / l; for (p = 0; p < e.length; p++) { for (var s = f.lineHeight * p, t = 0; t < m.length; t++) { var u = s / l + (typeof n[t] == "number" ? n[t] : t / m.length) * r; var v = Math.max(q, u); v = Math.min(v, 1); g.addColorStop(v, m[t]); q = v; } } } else { g = b.createLinearGradient(j, l / 2, k + j, l / 2); var w = m.length + 1; var x = 1; for (p = 0; p < m.length; p++) { var y; y = typeof n[p] == "number" ? n[p] : x / w; g.addColorStop(y, m[p]); x++; } } return g; }(a, b, g, f, [h], c); b.strokeStyle = g.stroke; if (g.dropShadow) { var l = g.dropShadowColor; var m = Pa(typeof l == "number" ? l : Ra(l)); var n = g.dropShadowBlur * f; var o = g.dropShadowDistance * f; b.shadowColor = "rgba(" + m[0] * 255 + "," + m[1] * 255 + "," + m[2] * 255 + "," + g.dropShadowAlpha + ")"; b.shadowBlur = n; b.shadowOffsetX = Math.cos(g.dropShadowAngle) * o; b.shadowOffsetY = Math.sin(g.dropShadowAngle) * o; } else { b.shadowColor = "black"; b.shadowBlur = 0; b.shadowOffsetX = 0; b.shadowOffsetY = 0; } if (g.stroke && g.strokeThickness) { b.strokeText(h, j, k + c.lineHeight - i.descent); } if (g.fill) { b.fillText(h, j, k + c.lineHeight - i.descent); } b.setTransform(1, 0, 0, 1, 0, 0); b.fillStyle = "rgba(0, 0, 0, 0)"; } function ih(a) { if (Array.from) { return Array.from(a); } else { return a.split(""); } } function jh(a) { if (a.codePointAt) { return a.codePointAt(0); } else { return a.charCodeAt(0); } } var kh = function () { function a(a, b, c) { var d; var e = a.info[0]; var f = a.common[0]; var g = a.page[0]; var h = a.distanceField[0]; var i = jb(g.file); var j = {}; this._ownsTextures = c; this.font = e.face; this.size = e.size; this.lineHeight = f.lineHeight / i; this.chars = {}; this.pageTextures = j; for (var k = 0; k < a.page.length; k++) { var l = a.page[k]; var m = l.id; var n = l.file; j[m] = b instanceof Array ? b[k] : b[n]; if ((h == null ? undefined : h.fieldType) && h.fieldType !== "none") { j[m].baseTexture.alphaMode = ya.NO_PREMULTIPLIED_ALPHA; } } for (k = 0; k < a.char.length; k++) { var o = a.char[k]; m = o.id; var p = o.page; var q = a.char[k]; var r = q.x; var s = q.y; var t = q.width; var u = q.height; var v = q.xoffset; var w = q.yoffset; var x = q.xadvance; s /= i; t /= i; u /= i; v /= i; w /= i; x /= i; var y = new qb((r /= i) + j[p].frame.x / i, s + j[p].frame.y / i, t, u); this.chars[m] = { xOffset: v, yOffset: w, xAdvance: x, kerning: {}, texture: new Sc(j[p].baseTexture, y), page: p }; } for (k = 0; k < a.kerning.length; k++) { var z = a.kerning[k]; var A = z.first; var B = z.second; var C = z.amount; A /= i; B /= i; C /= i; if (this.chars[B]) { this.chars[B].kerning[A] = C; } } this.distanceFieldRange = h == null ? undefined : h.distanceRange; this.distanceFieldType = ((d = h == null ? undefined : h.fieldType) === null || d === undefined ? undefined : d.toLowerCase()) ?? "none"; } a.prototype.destroy = function () { for (var a in this.chars) { this.chars[a].texture.destroy(); this.chars[a].texture = null; } for (var a in this.pageTextures) { if (this._ownsTextures) { this.pageTextures[a].destroy(true); } this.pageTextures[a] = null; } this.chars = null; this.pageTextures = null; }; a.install = function (b, c, d) { var e; if (b instanceof bh) { e = b; } else { var f = gh(b); if (!f) { throw new Error("Unrecognized data format for font."); } e = f.parse(b); } if (c instanceof Sc) { c = [c]; } var g = new a(e, c, d); a.available[g.font] = g; return g; }; a.uninstall = function (b) { var c = a.available[b]; if (!c) { throw new Error("No font found named '" + b + "'"); } c.destroy(); delete a.available[b]; }; a.from = function (b, c, d) { if (!b) { throw new Error("[BitmapFont] Property `name` is required."); } var e = Object.assign({}, a.defaultOptions, d); var f = e.chars; var g = e.padding; var h = e.resolution; var i = e.textureWidth; var j = e.textureHeight; var k = function (a) { if (typeof a == "string") { a = [a]; } for (var b = [], c = 0, d = a.length; c < d; c++) { var e = a[c]; if (Array.isArray(e)) { if (e.length !== 2) { throw new Error("[BitmapFont]: Invalid character range length, expecting 2 got " + e.length + "."); } var f = e[0].charCodeAt(0); var g = e[1].charCodeAt(0); if (g < f) { throw new Error("[BitmapFont]: Invalid character range."); } for (var h = f, i = g; h <= i; h++) { b.push(String.fromCharCode(h)); } } else { b.push.apply(b, ih(e)); } } if (b.length === 0) { throw new Error("[BitmapFont]: Empty set when resolving characters."); } return b; }(f); var l = c instanceof rg ? c : new rg(c); var m = i; var n = new bh(); n.info[0] = { face: l.fontFamily, size: l.fontSize }; n.common[0] = { lineHeight: l.fontSize }; for (var o, p, q, r = 0, s = 0, t = 0, u = [], v = 0; v < k.length; v++) { if (!o) { (o = document.createElement("canvas")).width = i; o.height = j; p = o.getContext("2d"); q = new Bc(o, { resolution: h }); u.push(new Sc(q)); n.page.push({ id: u.length - 1, file: "" }); } var w = vg.measureText(k[v], l, false, o); var x = w.width; var y = Math.ceil(w.height); var z = Math.ceil((l.fontStyle === "italic" ? 2 : 1) * x); if (s >= j - y * h) { if (s === 0) { throw new Error("[BitmapFont] textureHeight " + j + "px is too small for " + l.fontSize + "px fonts"); } --v; o = null; p = null; q = null; s = 0; r = 0; t = 0; } else { t = Math.max(y + w.fontProperties.descent, t); if (z * h + r >= m) { --v; s += t * h; s = Math.ceil(s); r = 0; t = 0; } else { hh(o, p, w, r, s, h, l); var A = jh(w.text); n.char.push({ id: A, page: u.length - 1, x: r / h, y: s / h, width: z, height: y, xoffset: 0, yoffset: 0, xadvance: Math.ceil(x - (l.dropShadow ? l.dropShadowDistance : 0) - (l.stroke ? l.strokeThickness : 0)) }); r += (z + g * 2) * h; r = Math.ceil(r); } } } v = 0; for (var B = k.length; v < B; v++) { for (var C = k[v], D = 0; D < B; D++) { var E = k[D]; var F = p.measureText(C).width; var G = p.measureText(E).width; var H = p.measureText(C + E).width - (F + G); if (H) { n.kerning.push({ first: jh(C), second: jh(E), amount: H }); } } } var I = new a(n, u, true); if (a.available[b] !== undefined) { a.uninstall(b); } a.available[b] = I; return I; }; a.ALPHA = [ ["a", "z"], ["A", "Z"], " " ]; a.NUMERIC = [ ["0", "9"] ]; a.ALPHANUMERIC = [ ["a", "z"], ["A", "Z"], ["0", "9"], " " ]; a.ASCII = [ [" ", "~"] ]; a.defaultOptions = { resolution: 1, textureWidth: 512, textureHeight: 512, padding: 4, chars: a.ALPHANUMERIC }; a.available = {}; return a; }(); var lh = []; var mh = []; var nh = []; (function (a) { function b(c, d) { if (d === undefined) { d = {}; } var e = a.call(this) || this; e._tint = 16777215; var f = Object.assign({}, b.styleDefaults, d); var g = f.align; var h = f.tint; var i = f.maxWidth; var j = f.letterSpacing; var k = f.fontName; var l = f.fontSize; if (!kh.available[k]) { throw new Error("Missing BitmapFont \"" + k + "\""); } e._activePagesMeshData = []; e._textWidth = 0; e._textHeight = 0; e._align = g; e._tint = h; e._fontName = k; e._fontSize = l || kh.available[k].size; e.text = c; e._maxWidth = i; e._maxLineHeight = 0; e._letterSpacing = j; e._anchor = new vb(function () { e.dirty = true; }, e, 0, 0); e._roundPixels = Fa.ROUND_PIXELS; e.dirty = true; e._textureCache = {}; return e; } (function (a, b) { function c() { this.constructor = a; } ah(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype.updateText = function () { for (var a = kh.available[this._fontName], b = this._fontSize / a.size, c = new ob(), d = [], e = [], f = [], g = ih(this._text.replace(/(?:\r\n|\r)/g, "\n") || " "), h = this._maxWidth * a.size / this._fontSize, i = a.distanceFieldType === "none" ? lh : mh, j = null, k = 0, l = 0, m = 0, n = -1, o = 0, p = 0, q = 0, r = 0, s = 0; s < g.length; s++) { var t = jh(N = g[s]); if (/(?:\s)/.test(N)) { n = s; o = k; r++; } if (N !== "\r" && N !== "\n") { var u = a.chars[t]; if (u) { if (j && u.kerning[j]) { c.x += u.kerning[j]; } var v = nh.pop() || { texture: Sc.EMPTY, line: 0, charCode: 0, prevSpaces: 0, position: new ob() }; v.texture = u.texture; v.line = m; v.charCode = t; v.position.x = c.x + u.xOffset + this._letterSpacing / 2; v.position.y = c.y + u.yOffset; v.prevSpaces = r; d.push(v); k = v.position.x + Math.max(u.xAdvance, u.texture.orig.width); c.x += u.xAdvance + this._letterSpacing; q = Math.max(q, u.yOffset + u.texture.height); j = t; if (n !== -1 && h > 0 && c.x > h) { $a(d, 1 + n - ++p, 1 + s - n); s = n; n = -1; e.push(o); f.push(d.length > 0 ? d[d.length - 1].prevSpaces : 0); l = Math.max(l, o); m++; c.x = 0; c.y += a.lineHeight; j = null; r = 0; } } } else { e.push(k); f.push(-1); l = Math.max(l, k); ++m; ++p; c.x = 0; c.y += a.lineHeight; j = null; r = 0; } } var w = g[g.length - 1]; if (w !== "\r" && w !== "\n") { if (/(?:\s)/.test(w)) { k = o; } e.push(k); l = Math.max(l, k); f.push(-1); } var x = []; for (s = 0; s <= m; s++) { var y = 0; if (this._align === "right") { y = l - e[s]; } else if (this._align === "center") { y = (l - e[s]) / 2; } else if (this._align === "justify") { y = f[s] < 0 ? 0 : (l - e[s]) / f[s]; } x.push(y); } var z = d.length; var A = {}; var B = []; var C = this._activePagesMeshData; for (s = 0; s < C.length; s++) { i.push(C[s]); } for (s = 0; s < z; s++) { var D = (P = d[s].texture).baseTexture.uid; if (!A[D]) { if (!(W = i.pop())) { var E = new _g(); var F = undefined; var G = undefined; if (a.distanceFieldType === "none") { F = new $g(Sc.EMPTY); G = pa.NORMAL; } else { F = new $g(Sc.EMPTY, { program: Od.from("// Mesh material default fragment\r\nattribute vec2 aVertexPosition;\r\nattribute vec2 aTextureCoord;\r\n\r\nuniform mat3 projectionMatrix;\r\nuniform mat3 translationMatrix;\r\nuniform mat3 uTextureMatrix;\r\n\r\nvarying vec2 vTextureCoord;\r\n\r\nvoid main(void)\r\n{\r\n gl_Position = vec4((projectionMatrix * translationMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\r\n\r\n vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r\n}\r\n", "// Pixi texture info\r\nvarying vec2 vTextureCoord;\r\nuniform sampler2D uSampler;\r\n\r\n// Tint\r\nuniform vec4 uColor;\r\n\r\n// on 2D applications fwidth is screenScale / glyphAtlasScale * distanceFieldRange\r\nuniform float uFWidth;\r\n\r\nvoid main(void) {\r\n\r\n // To stack MSDF and SDF we need a non-pre-multiplied-alpha texture.\r\n vec4 texColor = texture2D(uSampler, vTextureCoord);\r\n\r\n // MSDF\r\n float median = texColor.r + texColor.g + texColor.b -\r\n min(texColor.r, min(texColor.g, texColor.b)) -\r\n max(texColor.r, max(texColor.g, texColor.b));\r\n // SDF\r\n median = min(median, texColor.a);\r\n\r\n float screenPxDistance = uFWidth * (median - 0.5);\r\n float alpha = clamp(screenPxDistance + 0.5, 0.0, 1.0);\r\n\r\n // NPM Textures, NPM outputs\r\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\r\n\r\n}\r\n"), uniforms: { uFWidth: 0 } }); G = pa.NORMAL_NPM; } var H = new Zg(E, F); H.blendMode = G; W = { index: 0, indexCount: 0, vertexCount: 0, uvsCount: 0, total: 0, mesh: H, vertices: null, uvs: null, indices: null }; } W.index = 0; W.indexCount = 0; W.vertexCount = 0; W.uvsCount = 0; W.total = 0; var I = this._textureCache; I[D] = I[D] || new Sc(P.baseTexture); W.mesh.texture = I[D]; W.mesh.tint = this._tint; B.push(W); A[D] = W; } A[D].total++; } for (s = 0; s < C.length; s++) { if (B.indexOf(C[s]) === -1) { this.removeChild(C[s].mesh); } } for (s = 0; s < B.length; s++) { if (B[s].mesh.parent !== this) { this.addChild(B[s].mesh); } } this._activePagesMeshData = B; for (var s in A) { var J = (W = A[s]).total; if (W.indices?.length <= J * 6 || W.vertices.length < Zg.BATCHABLE_SIZE * 2) { W.vertices = new Float32Array(J * 8); W.uvs = new Float32Array(J * 8); W.indices = new Uint16Array(J * 6); } else { for (var K = W.total, L = W.vertices, M = K * 4 * 2; M < L.length; M++) { L[M] = 0; } } W.mesh.size = J * 6; } for (s = 0; s < z; s++) { var N; var O = (N = d[s]).position.x + x[N.line] * (this._align === "justify" ? N.prevSpaces : 1); if (this._roundPixels) { O = Math.round(O); } var P; var Q = O * b; var R = N.position.y * b; var S = A[(P = N.texture).baseTexture.uid]; var T = P.frame; var U = P._uvs; var V = S.index++; S.indices[V * 6 + 0] = 0 + V * 4; S.indices[V * 6 + 1] = 1 + V * 4; S.indices[V * 6 + 2] = 2 + V * 4; S.indices[V * 6 + 3] = 0 + V * 4; S.indices[V * 6 + 4] = 2 + V * 4; S.indices[V * 6 + 5] = 3 + V * 4; S.vertices[V * 8 + 0] = Q; S.vertices[V * 8 + 1] = R; S.vertices[V * 8 + 2] = Q + T.width * b; S.vertices[V * 8 + 3] = R; S.vertices[V * 8 + 4] = Q + T.width * b; S.vertices[V * 8 + 5] = R + T.height * b; S.vertices[V * 8 + 6] = Q; S.vertices[V * 8 + 7] = R + T.height * b; S.uvs[V * 8 + 0] = U.x0; S.uvs[V * 8 + 1] = U.y0; S.uvs[V * 8 + 2] = U.x1; S.uvs[V * 8 + 3] = U.y1; S.uvs[V * 8 + 4] = U.x2; S.uvs[V * 8 + 5] = U.y2; S.uvs[V * 8 + 6] = U.x3; S.uvs[V * 8 + 7] = U.y3; } this._textWidth = l * b; this._textHeight = (c.y + a.lineHeight) * b; for (var s in A) { var W = A[s]; if (this.anchor.x !== 0 || this.anchor.y !== 0) { for (var X = 0, Y = this._textWidth * this.anchor.x, Z = this._textHeight * this.anchor.y, $ = 0; $ < W.total; $++) { W.vertices[X++] -= Y; W.vertices[X++] -= Z; W.vertices[X++] -= Y; W.vertices[X++] -= Z; W.vertices[X++] -= Y; W.vertices[X++] -= Z; W.vertices[X++] -= Y; W.vertices[X++] -= Z; } } this._maxLineHeight = q * b; var _ = W.mesh.geometry.getBuffer("aVertexPosition"); var aa = W.mesh.geometry.getBuffer("aTextureCoord"); var ba = W.mesh.geometry.getIndex(); _.data = W.vertices; aa.data = W.uvs; ba.data = W.indices; _.update(); aa.update(); ba.update(); } for (s = 0; s < d.length; s++) { nh.push(d[s]); } }; b.prototype.updateTransform = function () { this.validate(); this.containerUpdateTransform(); }; b.prototype._render = function (b) { var c = kh.available[this._fontName]; var d = c.distanceFieldRange; var e = c.distanceFieldType; var f = c.size; if (e !== "none") { for (var g = this.worldTransform, h = g.a, i = g.b, j = g.c, k = g.d, l = Math.sqrt(h * h + i * i), m = Math.sqrt(j * j + k * k), n = (Math.abs(l) + Math.abs(m)) / 2, o = this._fontSize / f, p = 0, q = this._activePagesMeshData; p < q.length; p++) { q[p].mesh.shader.uniforms.uFWidth = n * d * o * b.resolution; } } a.prototype._render.call(this, b); }; b.prototype.getLocalBounds = function () { this.validate(); return a.prototype.getLocalBounds.call(this); }; b.prototype.validate = function () { if (this.dirty) { this.updateText(); this.dirty = false; } }; Object.defineProperty(b.prototype, "tint", { get: function () { return this._tint; }, set: function (a) { if (this._tint !== a) { this._tint = a; for (var b = 0; b < this._activePagesMeshData.length; b++) { this._activePagesMeshData[b].mesh.tint = a; } } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "align", { get: function () { return this._align; }, set: function (a) { if (this._align !== a) { this._align = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "fontName", { get: function () { return this._fontName; }, set: function (a) { if (!kh.available[a]) { throw new Error("Missing BitmapFont \"" + a + "\""); } if (this._fontName !== a) { this._fontName = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "fontSize", { get: function () { return this._fontSize; }, set: function (a) { if (this._fontSize !== a) { this._fontSize = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "anchor", { get: function () { return this._anchor; }, set: function (a) { if (typeof a == "number") { this._anchor.set(a); } else { this._anchor.copyFrom(a); } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "text", { get: function () { return this._text; }, set: function (a) { a = String(a == null ? "" : a); if (this._text !== a) { this._text = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "maxWidth", { get: function () { return this._maxWidth; }, set: function (a) { if (this._maxWidth !== a) { this._maxWidth = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "maxLineHeight", { get: function () { this.validate(); return this._maxLineHeight; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "textWidth", { get: function () { this.validate(); return this._textWidth; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "letterSpacing", { get: function () { return this._letterSpacing; }, set: function (a) { if (this._letterSpacing !== a) { this._letterSpacing = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "roundPixels", { get: function () { return this._roundPixels; }, set: function (a) { if (a !== this._roundPixels) { this._roundPixels = a; this.dirty = true; } }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "textHeight", { get: function () { this.validate(); return this._textHeight; }, enumerable: false, configurable: true }); b.prototype.destroy = function (b) { var c = this._textureCache; for (var d in c) { c[d].destroy(); delete c[d]; } this._textureCache = null; a.prototype.destroy.call(this, b); }; b.styleDefaults = { align: "left", tint: 16777215, maxWidth: 0, letterSpacing: 0 }; })(dc); var oh = function () { function a() {} a.add = function () { We.setExtensionXhrType("fnt", We.XHR_RESPONSE_TYPE.TEXT); }; a.use = function (b, c) { var d = gh(b.data); if (d) { for (var e = a.getBaseUrl(this, b), f = d.parse(b.data), g = {}, h = function (a) { g[a.metadata.pageFile] = a.texture; if (Object.keys(g).length === f.page.length) { b.bitmapFont = kh.install(f, g, true); c(); } }, i = 0; i < f.page.length; ++i) { var j = f.page[i].file; var k = e + j; var l = false; for (var m in this.resources) { var n = this.resources[m]; if (n.url === k) { n.metadata.pageFile = j; if (n.texture) { h(n); } else { n.onAfterMiddleware.add(h); } l = true; break; } } if (!l) { var o = { crossOrigin: b.crossOrigin, loadType: We.LOAD_TYPE.IMAGE, metadata: Object.assign({ pageFile: j }, b.metadata.imageMetadata), parentResource: b }; this.add(k, o, h); } } } else { c(); } }; a.getBaseUrl = function (b, c) { var d = c.isDataUrl ? "" : a.dirname(c.url); if (c.isDataUrl) { if (d === ".") { d = ""; } if (b.baseUrl && d && b.baseUrl.charAt(b.baseUrl.length - 1) === "/") { d += "/"; } } if ((d = d.replace(b.baseUrl, "")) && d.charAt(d.length - 1) !== "/") { d += "/"; } return d; }; a.dirname = function (a) { var b = a.replace(/\\/g, "/").replace(/\/$/, "").replace(/\/[^\/]*$/, ""); if (b === a) { return "."; } else if (b === "") { return "/"; } else { return b; } }; return a; }(); function ph(a, b) { ph = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return ph(a, b); } (function (a) { function b(b) { if (b === undefined) { b = 1; } var c = a.call(this, "attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n", { uAlpha: 1 }) || this; c.alpha = b; return c; } (function (a, b) { function c() { this.constructor = a; } ph(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); Object.defineProperty(b.prototype, "alpha", { get: function () { return this.uniforms.uAlpha; }, set: function (a) { this.uniforms.uAlpha = a; }, enumerable: false, configurable: true }); })(Rd); function qh(a, b) { qh = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return qh(a, b); } function rh(a, b) { function c() { this.constructor = a; } qh(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var sh; var th; var uh; var vh; var wh; var xh; var yh; var zh; var Ah; var Bh; var Ch; var Dh; var Eh; var Fh; var Gh; var Hh; var Ih; var Jh; var Kh; var Lh = { 5: [0.153388, 0.221461, 0.250301], 7: [0.071303, 0.131514, 0.189879, 0.214607], 9: [0.028532, 0.067234, 0.124009, 0.179044, 0.20236], 11: [0.0093, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596], 13: [0.002406, 0.009255, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641], 15: [0.000489, 0.002403, 0.009246, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448] }; var Mh = ["varying vec2 vBlurTexCoords[%size%];", "uniform sampler2D uSampler;", "void main(void)", "{", " gl_FragColor = vec4(0.0);", " %blur%", "}"].join("\n"); (function (a) { a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY"; a[a.WEBGL = 1] = "WEBGL"; a[a.WEBGL2 = 2] = "WEBGL2"; })(sh ||= {}); (function (a) { a[a.UNKNOWN = 0] = "UNKNOWN"; a[a.WEBGL = 1] = "WEBGL"; a[a.CANVAS = 2] = "CANVAS"; })(th ||= {}); (function (a) { a[a.COLOR = 16384] = "COLOR"; a[a.DEPTH = 256] = "DEPTH"; a[a.STENCIL = 1024] = "STENCIL"; })(uh ||= {}); (function (a) { a[a.NORMAL = 0] = "NORMAL"; a[a.ADD = 1] = "ADD"; a[a.MULTIPLY = 2] = "MULTIPLY"; a[a.SCREEN = 3] = "SCREEN"; a[a.OVERLAY = 4] = "OVERLAY"; a[a.DARKEN = 5] = "DARKEN"; a[a.LIGHTEN = 6] = "LIGHTEN"; a[a.COLOR_DODGE = 7] = "COLOR_DODGE"; a[a.COLOR_BURN = 8] = "COLOR_BURN"; a[a.HARD_LIGHT = 9] = "HARD_LIGHT"; a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT"; a[a.DIFFERENCE = 11] = "DIFFERENCE"; a[a.EXCLUSION = 12] = "EXCLUSION"; a[a.HUE = 13] = "HUE"; a[a.SATURATION = 14] = "SATURATION"; a[a.COLOR = 15] = "COLOR"; a[a.LUMINOSITY = 16] = "LUMINOSITY"; a[a.NORMAL_NPM = 17] = "NORMAL_NPM"; a[a.ADD_NPM = 18] = "ADD_NPM"; a[a.SCREEN_NPM = 19] = "SCREEN_NPM"; a[a.NONE = 20] = "NONE"; a[a.SRC_OVER = 0] = "SRC_OVER"; a[a.SRC_IN = 21] = "SRC_IN"; a[a.SRC_OUT = 22] = "SRC_OUT"; a[a.SRC_ATOP = 23] = "SRC_ATOP"; a[a.DST_OVER = 24] = "DST_OVER"; a[a.DST_IN = 25] = "DST_IN"; a[a.DST_OUT = 26] = "DST_OUT"; a[a.DST_ATOP = 27] = "DST_ATOP"; a[a.ERASE = 26] = "ERASE"; a[a.SUBTRACT = 28] = "SUBTRACT"; a[a.XOR = 29] = "XOR"; })(vh ||= {}); (function (a) { a[a.POINTS = 0] = "POINTS"; a[a.LINES = 1] = "LINES"; a[a.LINE_LOOP = 2] = "LINE_LOOP"; a[a.LINE_STRIP = 3] = "LINE_STRIP"; a[a.TRIANGLES = 4] = "TRIANGLES"; a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP"; a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN"; })(wh ||= {}); (function (a) { a[a.RGBA = 6408] = "RGBA"; a[a.RGB = 6407] = "RGB"; a[a.RG = 33319] = "RG"; a[a.RED = 6403] = "RED"; a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER"; a[a.RGB_INTEGER = 36248] = "RGB_INTEGER"; a[a.RG_INTEGER = 33320] = "RG_INTEGER"; a[a.RED_INTEGER = 36244] = "RED_INTEGER"; a[a.ALPHA = 6406] = "ALPHA"; a[a.LUMINANCE = 6409] = "LUMINANCE"; a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA"; a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT"; a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL"; })(xh ||= {}); (function (a) { a[a.TEXTURE_2D = 3553] = "TEXTURE_2D"; a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP"; a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY"; a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; })(yh ||= {}); (function (a) { a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE"; a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT"; a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5"; a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4"; a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1"; a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT"; a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8"; a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; a[a.BYTE = 5120] = "BYTE"; a[a.SHORT = 5122] = "SHORT"; a[a.INT = 5124] = "INT"; a[a.FLOAT = 5126] = "FLOAT"; a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; a[a.HALF_FLOAT = 36193] = "HALF_FLOAT"; })(zh ||= {}); (function (a) { a[a.FLOAT = 0] = "FLOAT"; a[a.INT = 1] = "INT"; a[a.UINT = 2] = "UINT"; })(Ah ||= {}); (function (a) { a[a.NEAREST = 0] = "NEAREST"; a[a.LINEAR = 1] = "LINEAR"; })(Bh ||= {}); (function (a) { a[a.CLAMP = 33071] = "CLAMP"; a[a.REPEAT = 10497] = "REPEAT"; a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT"; })(Ch ||= {}); (function (a) { a[a.OFF = 0] = "OFF"; a[a.POW2 = 1] = "POW2"; a[a.ON = 2] = "ON"; a[a.ON_MANUAL = 3] = "ON_MANUAL"; })(Dh ||= {}); (function (a) { a[a.NPM = 0] = "NPM"; a[a.UNPACK = 1] = "UNPACK"; a[a.PMA = 2] = "PMA"; a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA"; a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD"; a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA"; a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA"; })(Eh ||= {}); (function (a) { a[a.NO = 0] = "NO"; a[a.YES = 1] = "YES"; a[a.AUTO = 2] = "AUTO"; a[a.BLEND = 0] = "BLEND"; a[a.CLEAR = 1] = "CLEAR"; a[a.BLIT = 2] = "BLIT"; })(Fh ||= {}); (function (a) { a[a.AUTO = 0] = "AUTO"; a[a.MANUAL = 1] = "MANUAL"; })(Gh ||= {}); (function (a) { a.LOW = "lowp"; a.MEDIUM = "mediump"; a.HIGH = "highp"; })(Hh ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.SCISSOR = 1] = "SCISSOR"; a[a.STENCIL = 2] = "STENCIL"; a[a.SPRITE = 3] = "SPRITE"; })(Ih ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.LOW = 2] = "LOW"; a[a.MEDIUM = 4] = "MEDIUM"; a[a.HIGH = 8] = "HIGH"; })(Jh ||= {}); (function (a) { a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER"; a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER"; a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER"; })(Kh ||= {}); var Nh = function (a) { function b(b, c, d, e, f) { if (c === undefined) { c = 8; } if (d === undefined) { d = 4; } if (e === undefined) { e = Fa.FILTER_RESOLUTION; } if (f === undefined) { f = 5; } var g = this; var h = function (a, b) { var c; var d = Math.ceil(a / 2); var e = "\n attribute vec2 aVertexPosition;\n\n uniform mat3 projectionMatrix;\n\n uniform float strength;\n\n varying vec2 vBlurTexCoords[%size%];\n\n uniform vec4 inputSize;\n uniform vec4 outputFrame;\n\n vec4 filterVertexPosition( void )\n {\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n }\n\n vec2 filterTextureCoord( void )\n {\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n }\n\n void main(void)\n {\n gl_Position = filterVertexPosition();\n\n vec2 textureCoord = filterTextureCoord();\n %blur%\n }"; var f = ""; c = b ? "vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);" : "vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);"; for (var g = 0; g < a; g++) { var h = c.replace("%index%", g.toString()); f += h = h.replace("%sampleIndex%", g - (d - 1) + ".0"); f += "\n"; } return (e = e.replace("%blur%", f)).replace("%size%", a.toString()); }(f, b); var i = function (a) { for (var b, c = Lh[a], d = c.length, e = Mh, f = "", g = 0; g < a; g++) { var h = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;".replace("%index%", g.toString()); b = g; if (g >= d) { b = a - g - 1; } f += h = h.replace("%value%", c[b].toString()); f += "\n"; } return (e = e.replace("%blur%", f)).replace("%size%", a.toString()); }(f); (g = a.call(this, h, i) || this).horizontal = b; g.resolution = e; g._quality = 0; g.quality = d; g.blur = c; return g; } rh(b, a); b.prototype.apply = function (a, b, c, d) { if (c) { if (this.horizontal) { this.uniforms.strength = 1 / c.width * (c.width / b.width); } else { this.uniforms.strength = 1 / c.height * (c.height / b.height); } } else if (this.horizontal) { this.uniforms.strength = 1 / a.renderer.width * (a.renderer.width / b.width); } else { this.uniforms.strength = 1 / a.renderer.height * (a.renderer.height / b.height); } this.uniforms.strength *= this.strength; this.uniforms.strength /= this.passes; if (this.passes === 1) { a.applyFilter(this, b, c, d); } else { var e = a.getFilterTexture(); var f = a.renderer; var g = b; var h = e; this.state.blend = false; a.applyFilter(this, g, h, Fh.CLEAR); for (var i = 1; i < this.passes - 1; i++) { a.bindAndClear(g, Fh.BLIT); this.uniforms.uSampler = h; var j = h; h = g; g = j; f.shader.bind(this); f.geometry.draw(5); } this.state.blend = true; a.applyFilter(this, h, c, d); a.returnFilterTexture(e); } }; Object.defineProperty(b.prototype, "blur", { get: function () { return this.strength; }, set: function (a) { this.padding = 1 + Math.abs(a) * 2; this.strength = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "quality", { get: function () { return this._quality; }, set: function (a) { this._quality = a; this.passes = a; }, enumerable: false, configurable: true }); return b; }(Rd); (function (a) { function b(b, c, d, e) { if (b === undefined) { b = 8; } if (c === undefined) { c = 4; } if (d === undefined) { d = Fa.FILTER_RESOLUTION; } if (e === undefined) { e = 5; } var f = a.call(this) || this; f.blurXFilter = new Nh(true, b, c, d, e); f.blurYFilter = new Nh(false, b, c, d, e); f.resolution = d; f.quality = c; f.blur = b; f.repeatEdgePixels = false; return f; } rh(b, a); b.prototype.apply = function (a, b, c, d) { var e = Math.abs(this.blurXFilter.strength); var f = Math.abs(this.blurYFilter.strength); if (e && f) { var g = a.getFilterTexture(); this.blurXFilter.apply(a, b, g, Fh.CLEAR); this.blurYFilter.apply(a, g, c, d); a.returnFilterTexture(g); } else if (f) { this.blurYFilter.apply(a, b, c, d); } else { this.blurXFilter.apply(a, b, c, d); } }; b.prototype.updatePadding = function () { if (this._repeatEdgePixels) { this.padding = 0; } else { this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2; } }; Object.defineProperty(b.prototype, "blur", { get: function () { return this.blurXFilter.blur; }, set: function (a) { this.blurXFilter.blur = this.blurYFilter.blur = a; this.updatePadding(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "quality", { get: function () { return this.blurXFilter.quality; }, set: function (a) { this.blurXFilter.quality = this.blurYFilter.quality = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "blurX", { get: function () { return this.blurXFilter.blur; }, set: function (a) { this.blurXFilter.blur = a; this.updatePadding(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "blurY", { get: function () { return this.blurYFilter.blur; }, set: function (a) { this.blurYFilter.blur = a; this.updatePadding(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "blendMode", { get: function () { return this.blurYFilter.blendMode; }, set: function (a) { this.blurYFilter.blendMode = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "repeatEdgePixels", { get: function () { return this._repeatEdgePixels; }, set: function (a) { this._repeatEdgePixels = a; this.updatePadding(); }, enumerable: false, configurable: true }); })(Rd); function Oh(a, b) { Oh = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Oh(a, b); } var Ph = function (a) { function b() { var b = this; var c = { m: new Float32Array([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]), uAlpha: 1 }; (b = a.call(this, te, "varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform float m[20];\nuniform float uAlpha;\n\nvoid main(void)\n{\n vec4 c = texture2D(uSampler, vTextureCoord);\n\n if (uAlpha == 0.0) {\n gl_FragColor = c;\n return;\n }\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (c.a > 0.0) {\n c.rgb /= c.a;\n }\n\n vec4 result;\n\n result.r = (m[0] * c.r);\n result.r += (m[1] * c.g);\n result.r += (m[2] * c.b);\n result.r += (m[3] * c.a);\n result.r += m[4];\n\n result.g = (m[5] * c.r);\n result.g += (m[6] * c.g);\n result.g += (m[7] * c.b);\n result.g += (m[8] * c.a);\n result.g += m[9];\n\n result.b = (m[10] * c.r);\n result.b += (m[11] * c.g);\n result.b += (m[12] * c.b);\n result.b += (m[13] * c.a);\n result.b += m[14];\n\n result.a = (m[15] * c.r);\n result.a += (m[16] * c.g);\n result.a += (m[17] * c.b);\n result.a += (m[18] * c.a);\n result.a += m[19];\n\n vec3 rgb = mix(c.rgb, result.rgb, uAlpha);\n\n // Premultiply alpha again.\n rgb *= result.a;\n\n gl_FragColor = vec4(rgb, result.a);\n}\n", c) || this).alpha = 1; return b; } (function (a, b) { function c() { this.constructor = a; } Oh(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype._loadMatrix = function (a, b) { if (b === undefined) { b = false; } var c = a; if (b) { this._multiply(c, this.uniforms.m, a); c = this._colorMatrix(c); } this.uniforms.m = c; }; b.prototype._multiply = function (a, b, c) { a[0] = b[0] * c[0] + b[1] * c[5] + b[2] * c[10] + b[3] * c[15]; a[1] = b[0] * c[1] + b[1] * c[6] + b[2] * c[11] + b[3] * c[16]; a[2] = b[0] * c[2] + b[1] * c[7] + b[2] * c[12] + b[3] * c[17]; a[3] = b[0] * c[3] + b[1] * c[8] + b[2] * c[13] + b[3] * c[18]; a[4] = b[0] * c[4] + b[1] * c[9] + b[2] * c[14] + b[3] * c[19] + b[4]; a[5] = b[5] * c[0] + b[6] * c[5] + b[7] * c[10] + b[8] * c[15]; a[6] = b[5] * c[1] + b[6] * c[6] + b[7] * c[11] + b[8] * c[16]; a[7] = b[5] * c[2] + b[6] * c[7] + b[7] * c[12] + b[8] * c[17]; a[8] = b[5] * c[3] + b[6] * c[8] + b[7] * c[13] + b[8] * c[18]; a[9] = b[5] * c[4] + b[6] * c[9] + b[7] * c[14] + b[8] * c[19] + b[9]; a[10] = b[10] * c[0] + b[11] * c[5] + b[12] * c[10] + b[13] * c[15]; a[11] = b[10] * c[1] + b[11] * c[6] + b[12] * c[11] + b[13] * c[16]; a[12] = b[10] * c[2] + b[11] * c[7] + b[12] * c[12] + b[13] * c[17]; a[13] = b[10] * c[3] + b[11] * c[8] + b[12] * c[13] + b[13] * c[18]; a[14] = b[10] * c[4] + b[11] * c[9] + b[12] * c[14] + b[13] * c[19] + b[14]; a[15] = b[15] * c[0] + b[16] * c[5] + b[17] * c[10] + b[18] * c[15]; a[16] = b[15] * c[1] + b[16] * c[6] + b[17] * c[11] + b[18] * c[16]; a[17] = b[15] * c[2] + b[16] * c[7] + b[17] * c[12] + b[18] * c[17]; a[18] = b[15] * c[3] + b[16] * c[8] + b[17] * c[13] + b[18] * c[18]; a[19] = b[15] * c[4] + b[16] * c[9] + b[17] * c[14] + b[18] * c[19] + b[19]; return a; }; b.prototype._colorMatrix = function (a) { var b = new Float32Array(a); b[4] /= 255; b[9] /= 255; b[14] /= 255; b[19] /= 255; return b; }; b.prototype.brightness = function (a, b) { var c = [a, 0, 0, 0, 0, 0, a, 0, 0, 0, 0, 0, a, 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(c, b); }; b.prototype.tint = function (a, b) { var c = [(a >> 16 & 255) / 255, 0, 0, 0, 0, 0, (a >> 8 & 255) / 255, 0, 0, 0, 0, 0, (a & 255) / 255, 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(c, b); }; b.prototype.greyscale = function (a, b) { var c = [a, a, a, 0, 0, a, a, a, 0, 0, a, a, a, 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(c, b); }; b.prototype.blackAndWhite = function (a) { this._loadMatrix([0.3, 0.6, 0.1, 0, 0, 0.3, 0.6, 0.1, 0, 0, 0.3, 0.6, 0.1, 0, 0, 0, 0, 0, 1, 0], a); }; b.prototype.hue = function (a, b) { a = (a || 0) / 180 * Math.PI; var c = Math.cos(a); var d = Math.sin(a); var e = 1 / 3; var f = (0, Math.sqrt)(e); var g = [c + (1 - c) * e, e * (1 - c) - f * d, e * (1 - c) + f * d, 0, 0, e * (1 - c) + f * d, c + e * (1 - c), e * (1 - c) - f * d, 0, 0, e * (1 - c) - f * d, e * (1 - c) + f * d, c + e * (1 - c), 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(g, b); }; b.prototype.contrast = function (a, b) { var c = (a || 0) + 1; var d = (c - 1) * -0.5; var e = [c, 0, 0, 0, d, 0, c, 0, 0, d, 0, 0, c, 0, d, 0, 0, 0, 1, 0]; this._loadMatrix(e, b); }; b.prototype.saturate = function (a, b) { if (a === undefined) { a = 0; } var c = a * 2 / 3 + 1; var d = (c - 1) * -0.5; var e = [c, d, d, 0, 0, d, c, d, 0, 0, d, d, c, 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(e, b); }; b.prototype.desaturate = function () { this.saturate(-1); }; b.prototype.negative = function (a) { this._loadMatrix([-1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0], a); }; b.prototype.sepia = function (a) { this._loadMatrix([0.393, 0.7689999, 0.18899999, 0, 0, 0.349, 0.6859999, 0.16799999, 0, 0, 0.272, 0.5339999, 0.13099999, 0, 0, 0, 0, 0, 1, 0], a); }; b.prototype.technicolor = function (a) { this._loadMatrix([1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337, -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398, -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138, 0, 0, 0, 1, 0], a); }; b.prototype.polaroid = function (a) { this._loadMatrix([1.438, -0.062, -0.062, 0, 0, -0.122, 1.378, -0.122, 0, 0, -0.016, -0.016, 1.483, 0, 0, 0, 0, 0, 1, 0], a); }; b.prototype.toBGR = function (a) { this._loadMatrix([0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0], a); }; b.prototype.kodachrome = function (a) { this._loadMatrix([1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502, -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203, -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946, 0, 0, 0, 1, 0], a); }; b.prototype.browni = function (a) { this._loadMatrix([0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873, -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127, 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283, 0, 0, 0, 1, 0], a); }; b.prototype.vintage = function (a) { this._loadMatrix([0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123, 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591, 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296, 0, 0, 0, 1, 0], a); }; b.prototype.colorTone = function (a, b, c, d, e) { var f = ((c = c || 16770432) >> 16 & 255) / 255; var g = (c >> 8 & 255) / 255; var h = (c & 255) / 255; var i = ((d = d || 3375104) >> 16 & 255) / 255; var j = (d >> 8 & 255) / 255; var k = (d & 255) / 255; var l = [0.3, 0.59, 0.11, 0, 0, f, g, h, a = a || 0.2, 0, i, j, k, b = b || 0.15, 0, f - i, g - j, h - k, 0, 0]; this._loadMatrix(l, e); }; b.prototype.night = function (a, b) { var c = [(a = a || 0.1) * -2, -a, 0, 0, 0, -a, 0, a, 0, 0, 0, a, a * 2, 0, 0, 0, 0, 0, 1, 0]; this._loadMatrix(c, b); }; b.prototype.predator = function (a, b) { var c = [a * 11.224130630493164, a * -4.794486999511719, a * -2.8746118545532227, a * 0, a * 0.40342438220977783, a * -3.6330697536468506, a * 9.193157196044922, a * -2.951810836791992, a * 0, a * -1.316135048866272, a * -3.2184197902679443, a * -4.2375030517578125, a * 7.476448059082031, a * 0, a * 0.8044459223747253, 0, 0, 0, 1, 0]; this._loadMatrix(c, b); }; b.prototype.lsd = function (a) { this._loadMatrix([2, -0.4, 0.5, 0, 0, -0.5, 2, -0.4, 0, 0, -0.4, -0.5, 3, 0, 0, 0, 0, 0, 1, 0], a); }; b.prototype.reset = function () { this._loadMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], false); }; Object.defineProperty(b.prototype, "matrix", { get: function () { return this.uniforms.m; }, set: function (a) { this.uniforms.m = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "alpha", { get: function () { return this.uniforms.uAlpha; }, set: function (a) { this.uniforms.uAlpha = a; }, enumerable: false, configurable: true }); return b; }(Rd); Ph.prototype.grayscale = Ph.prototype.greyscale; function Qh(a, b) { Qh = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Qh(a, b); } (function (a) { function b(b, c) { var d = this; var e = new wb(); b.renderable = false; (d = a.call(this, "attribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\nuniform mat3 filterMatrix;\n\nvarying vec2 vTextureCoord;\nvarying vec2 vFilterCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvec2 filterTextureCoord( void )\n{\n return aVertexPosition * (outputFrame.zw * inputSize.zw);\n}\n\nvoid main(void)\n{\n\tgl_Position = filterVertexPosition();\n\tvTextureCoord = filterTextureCoord();\n\tvFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;\n}\n", "varying vec2 vFilterCoord;\nvarying vec2 vTextureCoord;\n\nuniform vec2 scale;\nuniform mat2 rotation;\nuniform sampler2D uSampler;\nuniform sampler2D mapSampler;\n\nuniform highp vec4 inputSize;\nuniform vec4 inputClamp;\n\nvoid main(void)\n{\n vec4 map = texture2D(mapSampler, vFilterCoord);\n\n map -= 0.5;\n map.xy = scale * inputSize.zw * (rotation * map.xy);\n\n gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));\n}\n", { mapSampler: b._texture, filterMatrix: e, scale: { x: 1, y: 1 }, rotation: new Float32Array([1, 0, 0, 1]) }) || this).maskSprite = b; d.maskMatrix = e; if (c == null) { c = 20; } d.scale = new ob(c, c); return d; } (function (a, b) { function c() { this.constructor = a; } Qh(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype.apply = function (a, b, c, d) { this.uniforms.filterMatrix = a.calculateSpriteMatrix(this.maskMatrix, this.maskSprite); this.uniforms.scale.x = this.scale.x; this.uniforms.scale.y = this.scale.y; var e = this.maskSprite.worldTransform; var f = Math.sqrt(e.a * e.a + e.b * e.b); var g = Math.sqrt(e.c * e.c + e.d * e.d); if (f !== 0 && g !== 0) { this.uniforms.rotation[0] = e.a / f; this.uniforms.rotation[1] = e.b / f; this.uniforms.rotation[2] = e.c / g; this.uniforms.rotation[3] = e.d / g; } a.applyFilter(this, b, c, d); }; Object.defineProperty(b.prototype, "map", { get: function () { return this.uniforms.mapSampler; }, set: function (a) { this.uniforms.mapSampler = a; }, enumerable: false, configurable: true }); })(Rd); var Rh; function Sh(a, b) { Sh = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return Sh(a, b); } (function (a, b) { function c() { this.constructor = a; } Sh(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(function () { return Rh.call(this, "\nattribute vec2 aVertexPosition;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\n\nuniform vec4 inputSize;\nuniform vec4 outputFrame;\n\nvec4 filterVertexPosition( void )\n{\n vec2 position = aVertexPosition * max(outputFrame.zw, vec2(0.)) + outputFrame.xy;\n\n return vec4((projectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);\n}\n\nvoid texcoords(vec2 fragCoord, vec2 inverseVP,\n out vec2 v_rgbNW, out vec2 v_rgbNE,\n out vec2 v_rgbSW, out vec2 v_rgbSE,\n out vec2 v_rgbM) {\n v_rgbNW = (fragCoord + vec2(-1.0, -1.0)) * inverseVP;\n v_rgbNE = (fragCoord + vec2(1.0, -1.0)) * inverseVP;\n v_rgbSW = (fragCoord + vec2(-1.0, 1.0)) * inverseVP;\n v_rgbSE = (fragCoord + vec2(1.0, 1.0)) * inverseVP;\n v_rgbM = vec2(fragCoord * inverseVP);\n}\n\nvoid main(void) {\n\n gl_Position = filterVertexPosition();\n\n vFragCoord = aVertexPosition * outputFrame.zw;\n\n texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n}\n", "varying vec2 v_rgbNW;\nvarying vec2 v_rgbNE;\nvarying vec2 v_rgbSW;\nvarying vec2 v_rgbSE;\nvarying vec2 v_rgbM;\n\nvarying vec2 vFragCoord;\nuniform sampler2D uSampler;\nuniform highp vec4 inputSize;\n\n\n/**\n Basic FXAA implementation based on the code on geeks3d.com with the\n modification that the texture2DLod stuff was removed since it's\n unsupported by WebGL.\n\n --\n\n From:\n https://github.com/mitsuhiko/webgl-meincraft\n\n Copyright (c) 2011 by Armin Ronacher.\n\n Some rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n\n * The names of the contributors may not be used to endorse or\n promote products derived from this software without specific\n prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n#ifndef FXAA_REDUCE_MIN\n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#endif\n#ifndef FXAA_REDUCE_MUL\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#endif\n#ifndef FXAA_SPAN_MAX\n#define FXAA_SPAN_MAX 8.0\n#endif\n\n//optimized version for mobile, where dependent\n//texture reads can be a bottleneck\nvec4 fxaa(sampler2D tex, vec2 fragCoord, vec2 inverseVP,\n vec2 v_rgbNW, vec2 v_rgbNE,\n vec2 v_rgbSW, vec2 v_rgbSE,\n vec2 v_rgbM) {\n vec4 color;\n vec3 rgbNW = texture2D(tex, v_rgbNW).xyz;\n vec3 rgbNE = texture2D(tex, v_rgbNE).xyz;\n vec3 rgbSW = texture2D(tex, v_rgbSW).xyz;\n vec3 rgbSE = texture2D(tex, v_rgbSE).xyz;\n vec4 texColor = texture2D(tex, v_rgbM);\n vec3 rgbM = texColor.xyz;\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n mediump vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec3 rgbA = 0.5 * (\n texture2D(tex, fragCoord * inverseVP + dir * (1.0 / 3.0 - 0.5)).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * (2.0 / 3.0 - 0.5)).xyz);\n vec3 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord * inverseVP + dir * -0.5).xyz +\n texture2D(tex, fragCoord * inverseVP + dir * 0.5).xyz);\n\n float lumaB = dot(rgbB, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = vec4(rgbA, texColor.a);\n else\n color = vec4(rgbB, texColor.a);\n return color;\n}\n\nvoid main() {\n\n vec4 color;\n\n color = fxaa(uSampler, vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);\n\n gl_FragColor = color;\n}\n") || this; }, Rh = Rd); var Th; var Uh; var Vh; var Wh; var Xh; var Yh; var Zh; var $h; var _h; var ai; var bi; var ci; var di; var ei; var fi; var gi; var hi; var ii; var ji; function ki(a, b) { ki = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return ki(a, b); } (function (a) { function b(b, c) { if (b === undefined) { b = 0.5; } if (c === undefined) { c = Math.random(); } var d = a.call(this, te, "precision highp float;\n\nvarying vec2 vTextureCoord;\nvarying vec4 vColor;\n\nuniform float uNoise;\nuniform float uSeed;\nuniform sampler2D uSampler;\n\nfloat rand(vec2 co)\n{\n return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);\n}\n\nvoid main()\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n float randomValue = rand(gl_FragCoord.xy * uSeed);\n float diff = (randomValue - 0.5) * uNoise;\n\n // Un-premultiply alpha before applying the color matrix. See issue #3539.\n if (color.a > 0.0) {\n color.rgb /= color.a;\n }\n\n color.r += diff;\n color.g += diff;\n color.b += diff;\n\n // Premultiply alpha again.\n color.rgb *= color.a;\n\n gl_FragColor = color;\n}\n", { uNoise: 0, uSeed: 0 }) || this; d.noise = b; d.seed = c; return d; } (function (a, b) { function c() { this.constructor = a; } ki(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); Object.defineProperty(b.prototype, "noise", { get: function () { return this.uniforms.uNoise; }, set: function (a) { this.uniforms.uNoise = a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "seed", { get: function () { return this.uniforms.uSeed; }, set: function (a) { this.uniforms.uSeed = a; }, enumerable: false, configurable: true }); })(Rd); (function (a) { a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY"; a[a.WEBGL = 1] = "WEBGL"; a[a.WEBGL2 = 2] = "WEBGL2"; })(Th ||= {}); (function (a) { a[a.UNKNOWN = 0] = "UNKNOWN"; a[a.WEBGL = 1] = "WEBGL"; a[a.CANVAS = 2] = "CANVAS"; })(Uh ||= {}); (function (a) { a[a.COLOR = 16384] = "COLOR"; a[a.DEPTH = 256] = "DEPTH"; a[a.STENCIL = 1024] = "STENCIL"; })(Vh ||= {}); (function (a) { a[a.NORMAL = 0] = "NORMAL"; a[a.ADD = 1] = "ADD"; a[a.MULTIPLY = 2] = "MULTIPLY"; a[a.SCREEN = 3] = "SCREEN"; a[a.OVERLAY = 4] = "OVERLAY"; a[a.DARKEN = 5] = "DARKEN"; a[a.LIGHTEN = 6] = "LIGHTEN"; a[a.COLOR_DODGE = 7] = "COLOR_DODGE"; a[a.COLOR_BURN = 8] = "COLOR_BURN"; a[a.HARD_LIGHT = 9] = "HARD_LIGHT"; a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT"; a[a.DIFFERENCE = 11] = "DIFFERENCE"; a[a.EXCLUSION = 12] = "EXCLUSION"; a[a.HUE = 13] = "HUE"; a[a.SATURATION = 14] = "SATURATION"; a[a.COLOR = 15] = "COLOR"; a[a.LUMINOSITY = 16] = "LUMINOSITY"; a[a.NORMAL_NPM = 17] = "NORMAL_NPM"; a[a.ADD_NPM = 18] = "ADD_NPM"; a[a.SCREEN_NPM = 19] = "SCREEN_NPM"; a[a.NONE = 20] = "NONE"; a[a.SRC_OVER = 0] = "SRC_OVER"; a[a.SRC_IN = 21] = "SRC_IN"; a[a.SRC_OUT = 22] = "SRC_OUT"; a[a.SRC_ATOP = 23] = "SRC_ATOP"; a[a.DST_OVER = 24] = "DST_OVER"; a[a.DST_IN = 25] = "DST_IN"; a[a.DST_OUT = 26] = "DST_OUT"; a[a.DST_ATOP = 27] = "DST_ATOP"; a[a.ERASE = 26] = "ERASE"; a[a.SUBTRACT = 28] = "SUBTRACT"; a[a.XOR = 29] = "XOR"; })(Wh ||= {}); (function (a) { a[a.POINTS = 0] = "POINTS"; a[a.LINES = 1] = "LINES"; a[a.LINE_LOOP = 2] = "LINE_LOOP"; a[a.LINE_STRIP = 3] = "LINE_STRIP"; a[a.TRIANGLES = 4] = "TRIANGLES"; a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP"; a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN"; })(Xh ||= {}); (function (a) { a[a.RGBA = 6408] = "RGBA"; a[a.RGB = 6407] = "RGB"; a[a.RG = 33319] = "RG"; a[a.RED = 6403] = "RED"; a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER"; a[a.RGB_INTEGER = 36248] = "RGB_INTEGER"; a[a.RG_INTEGER = 33320] = "RG_INTEGER"; a[a.RED_INTEGER = 36244] = "RED_INTEGER"; a[a.ALPHA = 6406] = "ALPHA"; a[a.LUMINANCE = 6409] = "LUMINANCE"; a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA"; a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT"; a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL"; })(Yh ||= {}); (function (a) { a[a.TEXTURE_2D = 3553] = "TEXTURE_2D"; a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP"; a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY"; a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y"; a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z"; a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z"; })(Zh ||= {}); (function (a) { a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE"; a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT"; a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5"; a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4"; a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1"; a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT"; a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV"; a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV"; a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8"; a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV"; a[a.BYTE = 5120] = "BYTE"; a[a.SHORT = 5122] = "SHORT"; a[a.INT = 5124] = "INT"; a[a.FLOAT = 5126] = "FLOAT"; a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV"; a[a.HALF_FLOAT = 36193] = "HALF_FLOAT"; })($h ||= {}); (function (a) { a[a.FLOAT = 0] = "FLOAT"; a[a.INT = 1] = "INT"; a[a.UINT = 2] = "UINT"; })(_h ||= {}); (function (a) { a[a.NEAREST = 0] = "NEAREST"; a[a.LINEAR = 1] = "LINEAR"; })(ai ||= {}); (function (a) { a[a.CLAMP = 33071] = "CLAMP"; a[a.REPEAT = 10497] = "REPEAT"; a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT"; })(bi ||= {}); (function (a) { a[a.OFF = 0] = "OFF"; a[a.POW2 = 1] = "POW2"; a[a.ON = 2] = "ON"; a[a.ON_MANUAL = 3] = "ON_MANUAL"; })(ci ||= {}); (function (a) { a[a.NPM = 0] = "NPM"; a[a.UNPACK = 1] = "UNPACK"; a[a.PMA = 2] = "PMA"; a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA"; a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD"; a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA"; a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA"; })(di ||= {}); (function (a) { a[a.NO = 0] = "NO"; a[a.YES = 1] = "YES"; a[a.AUTO = 2] = "AUTO"; a[a.BLEND = 0] = "BLEND"; a[a.CLEAR = 1] = "CLEAR"; a[a.BLIT = 2] = "BLIT"; })(ei ||= {}); (function (a) { a[a.AUTO = 0] = "AUTO"; a[a.MANUAL = 1] = "MANUAL"; })(fi ||= {}); (function (a) { a.LOW = "lowp"; a.MEDIUM = "mediump"; a.HIGH = "highp"; })(gi ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.SCISSOR = 1] = "SCISSOR"; a[a.STENCIL = 2] = "STENCIL"; a[a.SPRITE = 3] = "SPRITE"; })(hi ||= {}); (function (a) { a[a.NONE = 0] = "NONE"; a[a.LOW = 2] = "LOW"; a[a.MEDIUM = 4] = "MEDIUM"; a[a.HIGH = 8] = "HIGH"; })(ii ||= {}); (function (a) { a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER"; a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER"; a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER"; })(ji ||= {}); var li = new wb(); ac.prototype._cacheAsBitmap = false; ac.prototype._cacheData = null; ac.prototype._cacheAsBitmapResolution = null; ac.prototype._cacheAsBitmapMultisample = ii.NONE; function mi() { this.textureCacheId = null; this.originalRender = null; this.originalRenderCanvas = null; this.originalCalculateBounds = null; this.originalGetLocalBounds = null; this.originalUpdateTransform = null; this.originalDestroy = null; this.originalMask = null; this.originalFilterArea = null; this.originalContainsPoint = null; this.sprite = null; } Object.defineProperties(ac.prototype, { cacheAsBitmapResolution: { get: function () { return this._cacheAsBitmapResolution; }, set: function (a) { if (a !== this._cacheAsBitmapResolution) { this._cacheAsBitmapResolution = a; if (this.cacheAsBitmap) { this.cacheAsBitmap = false; this.cacheAsBitmap = true; } } } }, cacheAsBitmapMultisample: { get: function () { return this._cacheAsBitmapMultisample; }, set: function (a) { if (a !== this._cacheAsBitmapMultisample) { this._cacheAsBitmapMultisample = a; if (this.cacheAsBitmap) { this.cacheAsBitmap = false; this.cacheAsBitmap = true; } } } }, cacheAsBitmap: { get: function () { return this._cacheAsBitmap; }, set: function (a) { var b; if (this._cacheAsBitmap !== a) { this._cacheAsBitmap = a; if (a) { this._cacheData ||= new mi(); (b = this._cacheData).originalRender = this.render; b.originalRenderCanvas = this.renderCanvas; b.originalUpdateTransform = this.updateTransform; b.originalCalculateBounds = this.calculateBounds; b.originalGetLocalBounds = this.getLocalBounds; b.originalDestroy = this.destroy; b.originalContainsPoint = this.containsPoint; b.originalMask = this._mask; b.originalFilterArea = this.filterArea; this.render = this._renderCached; this.renderCanvas = this._renderCachedCanvas; this.destroy = this._cacheAsBitmapDestroy; } else { if ((b = this._cacheData).sprite) { this._destroyCachedDisplayObject(); } this.render = b.originalRender; this.renderCanvas = b.originalRenderCanvas; this.calculateBounds = b.originalCalculateBounds; this.getLocalBounds = b.originalGetLocalBounds; this.destroy = b.originalDestroy; this.updateTransform = b.originalUpdateTransform; this.containsPoint = b.originalContainsPoint; this._mask = b.originalMask; this.filterArea = b.originalFilterArea; } } } } }); ac.prototype._renderCached = function (a) { if (!!this.visible && this.worldAlpha > 0 && !!this.renderable) { this._initCachedDisplayObject(a); this._cacheData.sprite.transform._worldID = this.transform._worldID; this._cacheData.sprite.worldAlpha = this.worldAlpha; this._cacheData.sprite._render(a); } }; ac.prototype._initCachedDisplayObject = function (a) { if (!this._cacheData || !this._cacheData.sprite) { var b = this.alpha; this.alpha = 1; a.batch.flush(); var c = this.getLocalBounds(null, true).clone(); if (this.filters && this.filters.length) { var d = this.filters[0].padding; c.pad(d); } c.ceil(Fa.RESOLUTION); var e = a.renderTexture.current; var f = a.renderTexture.sourceFrame.clone(); var g = a.renderTexture.destinationFrame.clone(); var h = a.projection.transform; var i = Tc.create({ width: c.width, height: c.height, resolution: this.cacheAsBitmapResolution || a.resolution, multisample: this.cacheAsBitmapMultisample ?? a.multisample }); var j = "cacheAsBitmap_" + bb(); this._cacheData.textureCacheId = j; Bc.addToCache(i.baseTexture, j); Sc.addToCache(i, j); var k = this.transform.localTransform.copyTo(li).invert().translate(-c.x, -c.y); this.render = this._cacheData.originalRender; a.render(this, { renderTexture: i, clear: true, transform: k, skipUpdateTransform: false }); a.framebuffer.blit(); a.projection.transform = h; a.renderTexture.bind(e, f, g); this.render = this._renderCached; this.updateTransform = this.displayObjectUpdateTransform; this.calculateBounds = this._calculateCachedBounds; this.getLocalBounds = this._getCachedLocalBounds; this._mask = null; this.filterArea = null; this.alpha = b; var l = new ng(i); l.transform.worldTransform = this.transform.worldTransform; l.anchor.x = -c.x / c.width; l.anchor.y = -c.y / c.height; l.alpha = b; l._bounds = this._bounds; this._cacheData.sprite = l; this.transform._parentID = -1; if (this.parent) { this.updateTransform(); } else { this.enableTempParent(); this.updateTransform(); this.disableTempParent(null); } this.containsPoint = l.containsPoint.bind(l); } }; ac.prototype._renderCachedCanvas = function (a) { if (!!this.visible && this.worldAlpha > 0 && !!this.renderable) { this._initCachedDisplayObjectCanvas(a); this._cacheData.sprite.worldAlpha = this.worldAlpha; this._cacheData.sprite._renderCanvas(a); } }; ac.prototype._initCachedDisplayObjectCanvas = function (a) { if (!this._cacheData || !this._cacheData.sprite) { var b = this.getLocalBounds(null, true); var c = this.alpha; this.alpha = 1; var d = a.context; var e = a._projTransform; b.ceil(Fa.RESOLUTION); var f = Tc.create({ width: b.width, height: b.height }); var g = "cacheAsBitmap_" + bb(); this._cacheData.textureCacheId = g; Bc.addToCache(f.baseTexture, g); Sc.addToCache(f, g); var h = li; this.transform.localTransform.copyTo(h); h.invert(); h.tx -= b.x; h.ty -= b.y; this.renderCanvas = this._cacheData.originalRenderCanvas; a.render(this, { renderTexture: f, clear: true, transform: h, skipUpdateTransform: false }); a.context = d; a._projTransform = e; this.renderCanvas = this._renderCachedCanvas; this.updateTransform = this.displayObjectUpdateTransform; this.calculateBounds = this._calculateCachedBounds; this.getLocalBounds = this._getCachedLocalBounds; this._mask = null; this.filterArea = null; this.alpha = c; var i = new ng(f); i.transform.worldTransform = this.transform.worldTransform; i.anchor.x = -b.x / b.width; i.anchor.y = -b.y / b.height; i.alpha = c; i._bounds = this._bounds; this._cacheData.sprite = i; this.transform._parentID = -1; if (this.parent) { this.updateTransform(); } else { this.parent = a._tempDisplayObjectParent; this.updateTransform(); this.parent = null; } this.containsPoint = i.containsPoint.bind(i); } }; ac.prototype._calculateCachedBounds = function () { this._bounds.clear(); this._cacheData.sprite.transform._worldID = this.transform._worldID; this._cacheData.sprite._calculateBounds(); this._bounds.updateID = this._boundsID; }; ac.prototype._getCachedLocalBounds = function () { return this._cacheData.sprite.getLocalBounds(null); }; ac.prototype._destroyCachedDisplayObject = function () { this._cacheData.sprite._texture.destroy(true); this._cacheData.sprite = null; Bc.removeFromCache(this._cacheData.textureCacheId); Sc.removeFromCache(this._cacheData.textureCacheId); this._cacheData.textureCacheId = null; }; ac.prototype._cacheAsBitmapDestroy = function (a) { this.cacheAsBitmap = false; this.destroy(a); }; ac.prototype.name = null; dc.prototype.getChildByName = function (a, b) { for (var c = 0, d = this.children.length; c < d; c++) { if (this.children[c].name === a) { return this.children[c]; } } if (b) { c = 0; d = this.children.length; for (; c < d; c++) { if (this.children[c].getChildByName) { var e = this.children[c].getChildByName(a, true); if (e) { return e; } } } } return null; }; ac.prototype.getGlobalPosition = function (a, b) { if (a === undefined) { a = new ob(); } if (b === undefined) { b = false; } if (this.parent) { this.parent.toGlobal(this.position, a, b); } else { a.x = this.position.x; a.y = this.position.y; } return a; }; function ni(a, b) { ni = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return ni(a, b); } function oi(a, b) { function c() { this.constructor = a; } ni(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); } var pi = function (a) { function b(b, c, d, e) { if (b === undefined) { b = 100; } if (c === undefined) { c = 100; } if (d === undefined) { d = 10; } if (e === undefined) { e = 10; } var f = a.call(this) || this; f.segWidth = d; f.segHeight = e; f.width = b; f.height = c; f.build(); return f; } oi(b, a); b.prototype.build = function () { for (var a = this.segWidth * this.segHeight, b = [], c = [], d = [], e = this.segWidth - 1, f = this.segHeight - 1, g = this.width / e, h = this.height / f, i = 0; i < a; i++) { var j = i % this.segWidth; var k = i / this.segWidth | 0; b.push(j * g, k * h); c.push(j / e, k / f); } var l = e * f; for (i = 0; i < l; i++) { var m = i % e; var n = i / e | 0; var o = n * this.segWidth + m; var p = n * this.segWidth + m + 1; var q = (n + 1) * this.segWidth + m; var r = (n + 1) * this.segWidth + m + 1; d.push(o, p, q, p, r, q); } this.buffers[0].data = new Float32Array(b); this.buffers[1].data = new Float32Array(c); this.indexBuffer.data = new Uint16Array(d); this.buffers[0].update(); this.buffers[1].update(); this.indexBuffer.update(); }; return b; }(_g); var qi = function (a) { function b(b, c, d) { if (b === undefined) { b = 200; } if (d === undefined) { d = 0; } var e = a.call(this, new Float32Array(c.length * 4), new Float32Array(c.length * 4), new Uint16Array((c.length - 1) * 6)) || this; e.points = c; e._width = b; e.textureScale = d; e.build(); return e; } oi(b, a); Object.defineProperty(b.prototype, "width", { get: function () { return this._width; }, enumerable: false, configurable: true }); b.prototype.build = function () { var a = this.points; if (a) { var b = this.getBuffer("aVertexPosition"); var c = this.getBuffer("aTextureCoord"); var d = this.getIndex(); if (a.length >= 1) { if (b.data.length / 4 !== a.length) { b.data = new Float32Array(a.length * 4); c.data = new Float32Array(a.length * 4); d.data = new Uint16Array((a.length - 1) * 6); } var e = c.data; var f = d.data; e[0] = 0; e[1] = 0; e[2] = 0; e[3] = 1; for (var g = 0, h = a[0], i = this._width * this.textureScale, j = a.length, k = 0; k < j; k++) { var l = k * 4; if (this.textureScale > 0) { var m = h.x - a[k].x; var n = h.y - a[k].y; var o = Math.sqrt(m * m + n * n); h = a[k]; g += o / i; } else { g = k / (j - 1); } e[l] = g; e[l + 1] = 0; e[l + 2] = g; e[l + 3] = 1; } var p = 0; for (k = 0; k < j - 1; k++) { l = k * 2; f[p++] = l; f[p++] = l + 1; f[p++] = l + 2; f[p++] = l + 2; f[p++] = l + 1; f[p++] = l + 3; } c.update(); d.update(); this.updateVertices(); } } }; b.prototype.updateVertices = function () { var a = this.points; if (a.length >= 1) { for (var b, c = a[0], d = 0, e = 0, f = this.buffers[0].data, g = a.length, h = 0; h < g; h++) { var i = a[h]; var j = h * 4; e = -((b = h < a.length - 1 ? a[h + 1] : i).x - c.x); d = b.y - c.y; var k = Math.sqrt(d * d + e * e); var l = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2; d /= k; e /= k; d *= l; e *= l; f[j] = i.x + d; f[j + 1] = i.y + e; f[j + 2] = i.x - d; f[j + 3] = i.y - e; c = i; } this.buffers[0].update(); } }; b.prototype.update = function () { if (this.textureScale > 0) { this.build(); } else { this.updateVertices(); } }; return b; }(_g); (function (a) { function b(b, c, d) { if (d === undefined) { d = 0; } var e = this; var f = new qi(b.height, c, d); var g = new $g(b); if (d > 0) { b.baseTexture.wrapMode = wa.REPEAT; } (e = a.call(this, f, g) || this).autoUpdate = true; return e; } oi(b, a); b.prototype._render = function (b) { var c = this.geometry; if (this.autoUpdate || c._width !== this.shader.texture.height) { c._width = this.shader.texture.height; c.update(); } a.prototype._render.call(this, b); }; })(Zg); var ri = function (a) { function b(b, c, d) { var e = this; var f = new pi(b.width, b.height, c, d); var g = new $g(Sc.WHITE); (e = a.call(this, f, g) || this).texture = b; e.autoResize = true; return e; } oi(b, a); b.prototype.textureUpdated = function () { this._textureID = this.shader.texture._updateID; var a = this.geometry; var b = this.shader.texture; var c = b.width; var d = b.height; if (!!this.autoResize && (a.width !== c || a.height !== d)) { a.width = this.shader.texture.width; a.height = this.shader.texture.height; a.build(); } }; Object.defineProperty(b.prototype, "texture", { get: function () { return this.shader.texture; }, set: function (a) { if (this.shader.texture !== a) { this.shader.texture = a; this._textureID = -1; if (a.baseTexture.valid) { this.textureUpdated(); } else { a.once("update", this.textureUpdated, this); } } }, enumerable: false, configurable: true }); b.prototype._render = function (b) { if (this._textureID !== this.shader.texture._updateID) { this.textureUpdated(); } a.prototype._render.call(this, b); }; b.prototype.destroy = function (b) { this.shader.texture.off("update", this.textureUpdated, this); a.prototype.destroy.call(this, b); }; return b; }(Zg); (function (a) { function b(b, c, d, e, f) { if (b === undefined) { b = Sc.EMPTY; } var g = this; var h = new _g(c, d, e); h.getBuffer("aVertexPosition").static = false; var i = new $g(b); (g = a.call(this, h, i, null, f) || this).autoUpdate = true; return g; } oi(b, a); Object.defineProperty(b.prototype, "vertices", { get: function () { return this.geometry.getBuffer("aVertexPosition").data; }, set: function (a) { this.geometry.getBuffer("aVertexPosition").data = a; }, enumerable: false, configurable: true }); b.prototype._render = function (b) { if (this.autoUpdate) { this.geometry.getBuffer("aVertexPosition").update(); } a.prototype._render.call(this, b); }; })(Zg); (function (a) { function b(b, c, d, e, f) { if (c === undefined) { c = 10; } if (d === undefined) { d = 10; } if (e === undefined) { e = 10; } if (f === undefined) { f = 10; } var g = a.call(this, Sc.WHITE, 4, 4) || this; g._origWidth = b.orig.width; g._origHeight = b.orig.height; g._width = g._origWidth; g._height = g._origHeight; g._leftWidth = c; g._rightWidth = e; g._topHeight = d; g._bottomHeight = f; g.texture = b; return g; } oi(b, a); b.prototype.textureUpdated = function () { this._textureID = this.shader.texture._updateID; this._refresh(); }; Object.defineProperty(b.prototype, "vertices", { get: function () { return this.geometry.getBuffer("aVertexPosition").data; }, set: function (a) { this.geometry.getBuffer("aVertexPosition").data = a; }, enumerable: false, configurable: true }); b.prototype.updateHorizontalVertices = function () { var a = this.vertices; var b = this._getMinScale(); a[9] = a[11] = a[13] = a[15] = this._topHeight * b; a[17] = a[19] = a[21] = a[23] = this._height - this._bottomHeight * b; a[25] = a[27] = a[29] = a[31] = this._height; }; b.prototype.updateVerticalVertices = function () { var a = this.vertices; var b = this._getMinScale(); a[2] = a[10] = a[18] = a[26] = this._leftWidth * b; a[4] = a[12] = a[20] = a[28] = this._width - this._rightWidth * b; a[6] = a[14] = a[22] = a[30] = this._width; }; b.prototype._getMinScale = function () { var a = this._leftWidth + this._rightWidth; var b = this._width > a ? 1 : this._width / a; var c = this._topHeight + this._bottomHeight; var d = this._height > c ? 1 : this._height / c; return Math.min(b, d); }; Object.defineProperty(b.prototype, "width", { get: function () { return this._width; }, set: function (a) { this._width = a; this._refresh(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "height", { get: function () { return this._height; }, set: function (a) { this._height = a; this._refresh(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "leftWidth", { get: function () { return this._leftWidth; }, set: function (a) { this._leftWidth = a; this._refresh(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "rightWidth", { get: function () { return this._rightWidth; }, set: function (a) { this._rightWidth = a; this._refresh(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "topHeight", { get: function () { return this._topHeight; }, set: function (a) { this._topHeight = a; this._refresh(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "bottomHeight", { get: function () { return this._bottomHeight; }, set: function (a) { this._bottomHeight = a; this._refresh(); }, enumerable: false, configurable: true }); b.prototype._refresh = function () { var a = this.texture; var b = this.geometry.buffers[1].data; this._origWidth = a.orig.width; this._origHeight = a.orig.height; var c = 1 / this._origWidth; var d = 1 / this._origHeight; b[0] = b[8] = b[16] = b[24] = 0; b[1] = b[3] = b[5] = b[7] = 0; b[6] = b[14] = b[22] = b[30] = 1; b[25] = b[27] = b[29] = b[31] = 1; b[2] = b[10] = b[18] = b[26] = c * this._leftWidth; b[4] = b[12] = b[20] = b[28] = 1 - c * this._rightWidth; b[9] = b[11] = b[13] = b[15] = d * this._topHeight; b[17] = b[19] = b[21] = b[23] = 1 - d * this._bottomHeight; this.updateHorizontalVertices(); this.updateVerticalVertices(); this.geometry.buffers[0].update(); this.geometry.buffers[1].update(); }; })(ri); function si(a, b) { si = Object.setPrototypeOf || { "__proto__": [] } instanceof Array && function (a, b) { a.__proto__ = b; } || function (a, b) { for (var c in b) { if (b.hasOwnProperty(c)) { a[c] = b[c]; } } }; return si(a, b); } (function (a) { function b(b, c) { if (c === undefined) { c = true; } var d = a.call(this, b[0] instanceof Sc ? b[0] : b[0].texture) || this; d._textures = null; d._durations = null; d._autoUpdate = c; d._isConnectedToTicker = false; d.animationSpeed = 1; d.loop = true; d.updateAnchor = false; d.onComplete = null; d.onFrameChange = null; d.onLoop = null; d._currentTime = 0; d._playing = false; d._previousFrame = null; d.textures = b; return d; } (function (a, b) { function c() { this.constructor = a; } si(a, b); a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c()); })(b, a); b.prototype.stop = function () { if (this._playing) { this._playing = false; if (this._autoUpdate && this._isConnectedToTicker) { ic.shared.remove(this.update, this); this._isConnectedToTicker = false; } } }; b.prototype.play = function () { if (!this._playing) { this._playing = true; if (this._autoUpdate && !this._isConnectedToTicker) { ic.shared.add(this.update, this, ec.HIGH); this._isConnectedToTicker = true; } } }; b.prototype.gotoAndStop = function (a) { this.stop(); var b = this.currentFrame; this._currentTime = a; if (b !== this.currentFrame) { this.updateTexture(); } }; b.prototype.gotoAndPlay = function (a) { var b = this.currentFrame; this._currentTime = a; if (b !== this.currentFrame) { this.updateTexture(); } this.play(); }; b.prototype.update = function (a) { if (this._playing) { var b = this.animationSpeed * a; var c = this.currentFrame; if (this._durations !== null) { var d = this._currentTime % 1 * this._durations[this.currentFrame]; for (d += b / 60 * 1000; d < 0;) { this._currentTime--; d += this._durations[this.currentFrame]; } var e = Math.sign(this.animationSpeed * a); for (this._currentTime = Math.floor(this._currentTime); d >= this._durations[this.currentFrame];) { d -= this._durations[this.currentFrame] * e; this._currentTime += e; } this._currentTime += d / this._durations[this.currentFrame]; } else { this._currentTime += b; } if (this._currentTime < 0 && !this.loop) { this.gotoAndStop(0); if (this.onComplete) { this.onComplete(); } } else if (this._currentTime >= this._textures.length && !this.loop) { this.gotoAndStop(this._textures.length - 1); if (this.onComplete) { this.onComplete(); } } else if (c !== this.currentFrame) { if (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < c || this.animationSpeed < 0 && this.currentFrame > c)) { this.onLoop(); } this.updateTexture(); } } }; b.prototype.updateTexture = function () { var a = this.currentFrame; if (this._previousFrame !== a) { this._previousFrame = a; this._texture = this._textures[a]; this._textureID = -1; this._textureTrimmedID = -1; this._cachedTint = 16777215; this.uvs = this._texture._uvs.uvsFloat32; if (this.updateAnchor) { this._anchor.copyFrom(this._texture.defaultAnchor); } if (this.onFrameChange) { this.onFrameChange(this.currentFrame); } } }; b.prototype.destroy = function (b) { this.stop(); a.prototype.destroy.call(this, b); this.onComplete = null; this.onFrameChange = null; this.onLoop = null; }; b.fromFrames = function (a) { for (var c = [], d = 0; d < a.length; ++d) { c.push(Sc.from(a[d])); } return new b(c); }; b.fromImages = function (a) { for (var c = [], d = 0; d < a.length; ++d) { c.push(Sc.from(a[d])); } return new b(c); }; Object.defineProperty(b.prototype, "totalFrames", { get: function () { return this._textures.length; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "textures", { get: function () { return this._textures; }, set: function (a) { if (a[0] instanceof Sc) { this._textures = a; this._durations = null; } else { this._textures = []; this._durations = []; for (var b = 0; b < a.length; b++) { this._textures.push(a[b].texture); this._durations.push(a[b].time); } } this._previousFrame = null; this.gotoAndStop(0); this.updateTexture(); }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "currentFrame", { get: function () { var a = Math.floor(this._currentTime) % this._textures.length; if (a < 0) { a += this._textures.length; } return a; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "playing", { get: function () { return this._playing; }, enumerable: false, configurable: true }); Object.defineProperty(b.prototype, "autoUpdate", { get: function () { return this._autoUpdate; }, set: function (a) { if (a !== this._autoUpdate) { this._autoUpdate = a; if (!this._autoUpdate && this._isConnectedToTicker) { ic.shared.remove(this.update, this); this._isConnectedToTicker = false; } else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) { ic.shared.add(this.update, this); this._isConnectedToTicker = true; } } }, enumerable: false, configurable: true }); })(ng); se.registerPlugin("accessibility", gc); se.registerPlugin("extract", Me); se.registerPlugin("interaction", rc); se.registerPlugin("particle", Hf); se.registerPlugin("prepare", Kg); se.registerPlugin("batch", De); se.registerPlugin("tilingSprite", Tg); af.registerPlugin(oh); af.registerPlugin(nf); af.registerPlugin(wf); af.registerPlugin(Bf); af.registerPlugin(Mg); Je.registerPlugin(jc); Je.registerPlugin(df); class ti { constructor(a = null) { this.attachments = []; this.parent = null; this.isVisible = true; this.setNode(a || new dc()); } getNode() { return this.node; } setNode(a) { this.node = a; } getParent() { return this.parent; } setParent(a) { if (a == null) { this.currentModel?.removedParentFunction?.(); } this.parent = a; } getAttachments() { return this.attachments; } addAttachment(a, b = 0) { a.getNode().zIndex = b; a.setParent(this); this.node.addChild(a.getNode()); this.attachments.push(a); this.node.children.sort((a, b) => a.zIndex == b.zIndex ? 0 : a.zIndex < b.zIndex ? -1 : 1); } removeAttachment(a) { if (a) { this.node.removeChild(a.getNode()); a.setParent(null); if (this.attachments.indexOf(a) > -1) { this.attachments.splice(this.attachments.indexOf(a), 1); } } } getRotation() { return this.node.rotation * 180 / Math.PI; } setRotation(a) { this.node.rotation = a * Math.PI / 180; } getAlpha() { return this.node.alpha; } setAlpha(a) { if (this.node.alpha !== a) { this.node.alpha = a; } } getScale() { return this.node.scale; } setScale(a) { this.node.scale.x = a; this.node.scale.y = a; } getScaleX() { return this.node.scale.x; } setScaleX(a) { this.node.scale.x = a; } getScaleY() { return this.node.scale.y; } setScaleY(a) { this.node.scale.y = a; } getFilters() { return this.node.filters; } setFilters(a) { this.node.filters = a; } getPosition() { return this.node.position; } setPosition(a, b) { if (this.node.position.x !== a) { this.node.position.x = a; } if (this.node.position.y !== b) { this.node.position.y = b; } } getPositionX() { return this.node.position.x; } setPositionX(a) { if (this.node.position.x !== a) { this.node.position.x = a; } } getPositionY() { return this.node.position.y; } setPositionY(a) { if (this.node.position.y !== a) { this.node.position.y = a; } } getPivotPoint() { return this.node.pivot; } setPivotPoint(a, b) { this.node.pivot.x = a; this.node.pivot.y = b; } getVisible() { return this.isVisible; } setVisible(a) { this.isVisible = a; this.node.visible = a; } update(a, b) { for (let c = 0; c < this.attachments.length; c++) { this.attachments[c].update(a, b); } } } class ui extends ti { constructor(a, b, c) { super(); this.text = new xg(a, { fontFamily: b, fontSize: c, lineJoin: "round", padding: 10 }); this.text.resolution = window.devicePixelRatio * 2; this.setNode(this.text); } setColor(a, b, c) { this.text.style.fill = a << 16 | b << 8 | c; } setStroke(a, b, c, d) { this.text.style.stroke = a << 16 | b << 8 | c; this.text.style.strokeThickness = d; } setFontWeight(a) { this.text.style.fontWeight = a; } setLetterSpacing(a) { this.text.style.letterSpacing = a; } setAnchor(a, b) { this.text.anchor.set(a, b); } setString(a) { this.text.text = a; } getString() { return this.text.text; } } class vi extends ti { constructor() { super(); this.wasPreloaded = false; } preload() { this.wasPreloaded = true; } reset() { this.setParent(null); } } class wi extends vi { constructor() { super(); this.lastDamagedTick = 0; this.lastDamagedAnimationDone = true; this.lastFiringTick = 0; this.lastFiringAnimationDone = true; } update(a, b) { const c = this.getParent(); if (b) { this.updateDamageTint(b); this.weaponUpdateFunc?.(b, c); } super.update(a, b); } updateDamageTint(a) { if (a.lastDamagedTick && (a.lastDamagedTick !== this.lastDamagedTick || !this.lastDamagedAnimationDone)) { this.lastDamagedTick = a.lastDamagedTick; this.lastDamagedAnimationDone = false; const b = Jj.renderer.replicator.getMsSinceTick(a.lastDamagedTick); const c = 100; const d = Math.min(b / c, 1); const e = Math.sin(d * Math.PI); let f = 255 << 16 | 255 - e * 255 / 4 << 8 | 255 - e * 255 / 4 << 0; if (d === 1) { f = 16777215; this.lastDamagedAnimationDone = true; } this.base.setTint(f); if (this.weapon) { this.weapon.setTint(f); } } } updatePunchingWeapon(a = 300) { return (b, c) => { if (b.firingTick && (b.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = b.firingTick; this.lastFiringAnimationDone = false; const c = Jj.currentGame.world.getReplicator().getMsSinceTick(b.firingTick); const d = Math.min(c / a, 1); const e = Math.sin(d * 2 * Math.PI) / Math.PI * -1; if (d === 1) { this.lastFiringAnimationDone = true; } this.weapon.setPositionY(e * 20); } }; } updateStabbingWeapon(a = 300) { return (b, c) => { if (b.firingTick && (b.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = b.firingTick; this.lastFiringAnimationDone = false; const c = Jj.renderer.replicator.getMsSinceTick(b.firingTick); const d = Math.min(c / a, 1); const e = Math.sin(d * 2 * Math.PI) / Math.PI * -1; if (d === 1) { this.lastFiringAnimationDone = true; } if (c < a / 2) { this.weaponLeft.setPositionY(e * 20); } else { this.weaponRight.setPositionY(e * 20); } } }; } updateAntiClockwiseSwingingWeapon(a = 300, b = 100) { return (c, d) => { if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; const d = Jj.renderer.replicator.getMsSinceTick(c.firingTick); const e = Math.min(d / a, 1); const f = Math.sin(e * Math.PI) * b; if (e === 1) { this.lastFiringAnimationDone = true; } this.weapon.setRotation(-f); } }; } updateClockwiseSwingingWeapon(a = 300, b = 100) { return (c, d) => { if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; const d = Jj.renderer.replicator.getMsSinceTick(c.firingTick); const e = Math.min(d / a, 1); const f = Math.sin(e * Math.PI) * b; if (e === 1) { this.lastFiringAnimationDone = true; } this.weapon.setRotation(f); } }; } updateBowWeapon(a = 500, b = 250) { return (c, d) => { if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { if (c.startChargingTick) { this.lastFiringAnimationDone = false; const b = Jj.renderer.replicator.getMsSinceTick(c.startChargingTick); const d = Math.min(b / a, 1); this.bowHands.setPositionY(d * 10); } else if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; const a = Jj.renderer.replicator.getMsSinceTick(c.firingTick); const d = Math.min(a / b, 1); if (d === 1) { this.lastFiringAnimationDone = true; } this.bowHands.setPositionY(10 - d * 10); } } }; } } class xi extends ti { constructor() { super(); this.draw = new jg(); this.clear(); this.setNode(this.draw); } drawTriangle(a, b, c, d = null, e = null, f = null) { if (f && f > 0) { this.draw.lineStyle(f, e.r << 16 | e.g << 8 | e.b, e.a); } if (d) { this.draw.beginFill(d.r << 16 | d.g << 8 | d.b, d.a); } this.draw.drawPolygon([a.x, a.y, b.x, b.y, c.x, c.y]); if (d) { this.draw.endFill(); } } drawArc(a, b, c, d, e, f, g = null, h = null, i = null) { if (i && i > 0) { this.draw.lineStyle(i, h.r << 16 | h.g << 8 | h.b, h.a); } d = d * Math.PI / 180; e = e * Math.PI / 180; if (g) { this.draw.beginFill(g.r << 16 | g.g << 8 | g.b, g.a); } this.draw.arc(a, b, c, d, e, f); if (g) { this.draw.endFill(); } } drawCircle(a, b, c, d = null, e = null, f = null) { if (f && f > 0) { this.draw.lineStyle(f, e.r << 16 | e.g << 8 | e.b, e.a); } if (d) { this.draw.beginFill(d.r << 16 | d.g << 8 | d.b, d.a); } this.draw.drawCircle(a, b, c); if (d) { this.draw.endFill(); } } drawRect(a, b, c, d, e = null, f = null, g = null) { if (g && g > 0) { this.draw.lineStyle(g, f.r << 16 | f.g << 8 | f.b, f.a); } if (e) { this.draw.beginFill(e.r << 16 | e.g << 8 | e.b, e.a); } this.draw.drawRect(a, b, c - a, d - b); if (e) { this.draw.endFill(); } } drawRoundedRect(a, b, c, d, e, f = null, g = null, h = null) { if (h && h > 0) { this.draw.lineStyle(h, g.r << 16 | g.g << 8 | g.b, g.a); } if (f) { this.draw.beginFill(f.r << 16 | f.g << 8 | f.b, f.a); } this.draw.drawRoundedRect(a, b, c - a, d - b, e); if (f) { this.draw.endFill(); } } drawEllipse(a, b, c, d, e = null, f = null, g = null) { if (g && g > 0) { this.draw.lineStyle(g, f.r << 16 | f.g << 8 | f.b, f.a); } if (e) { this.draw.beginFill(e.r << 16 | e.g << 8 | e.b, e.a); } this.draw.drawEllipse(a, b, c, d); if (e) { this.draw.endFill(); } } getTexture() { return Jj.renderer.getInternalRenderer().generateTexture(this.draw); } clear() { this.draw.clear(); } } class yi extends ti { constructor(a) { super(); this.barColor = a || { r: 100, g: 161, b: 10 }; this.width = 84; this.height = 12; this.backgroundNode = new xi(); this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, { r: 0, g: 0, b: 0 }); this.backgroundNode.setAlpha(0.3); this.barNode = new xi(); this.barNode.drawRoundedRect(2, 2, this.width - 2, this.height - 2, 2, this.barColor); this.addAttachment(this.backgroundNode); this.addAttachment(this.barNode); this.setPivotPoint(this.width / 2, -64); this.setMaxHealth(100); this.setHealth(100); } setSize(a, b) { const c = this.percent; this.width = a; this.height = b; this.percent = null; this.backgroundNode.clear(); this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, { r: 0, g: 0, b: 0 }); this.barNode.clear(); this.barNode.drawRoundedRect(2, 2, this.width - 2, this.height - 2, 2, this.barColor); this.setPivotPoint(this.width / 2, -64); this.setPercent(c); } setHealth(a) { this.health = a; this.setPercent(this.health / this.maxHealth); } setMaxHealth(a) { this.maxHealth = a; this.setPercent(this.health / this.maxHealth); } setPercent(a) { if (this.percent !== a) { this.percent = a; this.barNode.setScaleX(this.percent); } } update(a, b) { if (b) { this.setHealth(b.health); this.setMaxHealth(b.maxHealth); } this.setRotation(-this.getParent().getParent().getRotation()); super.update(a, b); } } class zi extends ti { constructor() { super(); this.barColor = { r: 61, g: 161, b: 217 }; this.width = 76; this.height = 8; this.percent = 1; this.backgroundNode = new xi(); this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, { r: 0, g: 0, b: 0 }); this.backgroundNode.setAlpha(0.3); this.barNode = new xi(); this.addAttachment(this.backgroundNode); this.addAttachment(this.barNode); this.setPivotPoint(this.width / 2, -80); this.setMaxHealth(100); this.setHealth(100); } setSize(a, b) { var c = this.percent; this.width = a; this.height = b; this.percent = null; this.backgroundNode.clear(); this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, { r: 0, g: 0, b: 0 }); this.setPivotPoint(this.width / 2, -80); this.setPercent(c); } setHealth(a) { this.health = a; this.setPercent(this.health / this.maxHealth); } setMaxHealth(a) { this.maxHealth = a; this.setPercent(this.health / this.maxHealth); } setPercent(a) { if (this.percent !== a && (this.percent = a, this.barNode.clear(), this.health !== 0)) { var b = (this.width - 2) * this.percent; this.barNode.drawRoundedRect(2, 2, b, this.height - 2, 2, this.barColor); } } update(a, b) { this.getParent(); if (b) { this.setHealth(b.zombieShieldHealth); this.setMaxHealth(b.zombieShieldMaxHealth); } this.setRotation(-this.getParent().getParent().getRotation()); super.update(a, b); } } class Ai extends ti { constructor(a, b = false) { super(); this.sprite = null; if (typeof a == "string") { a = Jj.renderer.loader.resources[a] !== undefined ? Jj.renderer.loader.resources[a].texture : Sc.from(a); } if (b) { this.sprite = new Qg(a); this.sprite.texture.baseTexture.scaleMode = va.NEAREST; } else { this.sprite = new ng(a); } this.sprite.anchor.x = 0.5; this.sprite.anchor.y = 0.5; this.setNode(this.sprite); } getAnchor() { return this.sprite.anchor; } setAnchor(a, b) { this.sprite.anchor.x = a; this.sprite.anchor.y = b; } getTint() { return this.node.tint; } setTint(a) { this.node.tint = a; } getBlendMode() { return this.node.tint; } setBlendMode(a) { this.node.blendMode = a; } getMask() { return this.node.mask; } setMask(a) { this.node.mask = a.getNode(); } setDimensions(a, b, c, d) { this.sprite.x = a; this.sprite.y = b; this.sprite.width = c; this.sprite.height = d; } } const Bi = c(6); const Ci = c(573); Bi.loadPlugin(Ci); Bi.setDefaults({ randomize: false }); class Di extends vi { constructor(a) { super(); this.type = a; this.healthBar = new yi(); this.healthBar.setSize(82, 16); this.healthBar.setPivotPoint(41, -25); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 100); this.lastYaw = 0; } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); this.head?.setRotation(b.aimingYaw); } super.update(a, b); } updateModel(a = 1) { if (a != this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); this.removeAttachment(this.head); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for " + this.type + " tower: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg"); this.head = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Head.svg"); this.addAttachment(this.base, 2); this.addAttachment(this.head, 3); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } } let Ei = { Player: class extends wi { constructor() { super(); this.base = new Ai("https://cdn.glitch.com/65698807-c047-4e77-bf51-7937b4cef560%2Fzombie-boss-t1-base%5B1%5D.svg"); this.addAttachment(this.base, 2); this.nameEntity = new ui("Player", "Hammersmith One", 20); this.nameEntity.setAnchor(0.5, 0.5); this.nameEntity.setPivotPoint(0, 70); this.nameEntity.setColor(220, 220, 220); this.nameEntity.setFontWeight("bold"); this.nameEntity.setStroke(51, 51, 51, 6); this.nameEntity.setLetterSpacing(1); this.addAttachment(this.nameEntity, 0); this.healthBar = new yi(); this.addAttachment(this.healthBar, 0); this.shieldBar = new zi(); this.addAttachment(this.shieldBar, 0); this.shieldBar.setVisible(false); this.rotationLocked = true; this.nameFiltered = undefined; this.invulnerabilityAnimationProps = { isForward: true, elapsedTime: 0, animationDuration: 750 }; } update(a, b) { const c = this.getParent(); if (b) { if (c.isLocal() && c.getTargetTick().dead !== true) { c.getTargetTick().aimingYaw = c.getFromTick().aimingYaw = Jj.network.inputPacketManager.getLastSentYaw(); } if (b.name !== this.lastName) { this.lastName = b.name; this.nameEntity.setString(b.name); } if (this.nameFiltered !== Jj.network.languageFilterEnabled) { this.nameFiltered = !!Jj.network.languageFilterEnabled; this.nameEntity.setString(this.nameFiltered ? Bi(this.lastName) : this.lastName); } if (b.weaponName !== this.lastWeaponName || b.weaponTier !== this.lastWeaponTier) { this.updateWeapon(b); } this.healthBar.setVisible(b.health < b.maxHealth); if (b.zombieShieldMaxHealth > 0) { this.shieldBar.setVisible(b.zombieShieldHealth < b.zombieShieldMaxHealth); } else { this.shieldBar.setVisible(false); } if (b.invulnerable !== undefined) { this.updateInvulnerabilityIndicator(a, b); } } super.update(a, b); this.nameEntity.setRotation(-c.getRotation()); } updateInvulnerabilityIndicator(a, b) { if (b.invulnerable == 1) { let b = 16752543; let c = 16777215; this.invulnerabilityAnimationProps.elapsedTime += a; let d = Math.min(this.invulnerabilityAnimationProps.elapsedTime / this.invulnerabilityAnimationProps.animationDuration, 1); if (!this.invulnerabilityAnimationProps.isForward) { d = 1 - d; } const e = c >> 16 & 255; const f = c >> 8 & 255; const g = c & 255; const h = (e + ((b >> 16 & 255) - e) * d << 16) + (f + ((b >> 8 & 255) - f) * d << 8) + (g + ((b & 255) - g) * d); this.base.setTint(h); this.weapon.setTint(h); if (d >= 1 || d <= 0) { this.invulnerabilityAnimationProps.isForward = !this.invulnerabilityAnimationProps.isForward; this.invulnerabilityAnimationProps.elapsedTime = 0; } } else { this.base.setTint(16777215); this.weapon.setTint(16777215); } } updateAntiClockwiseSwingingWeapon(a = 300, b = 100) { return (c, d) => { const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw); this.setRotation(e); if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; var f = Jj.renderer.replicator.getMsSinceTick(c.firingTick); var g = Math.min(f / a, 1); var h = Math.sin(g * Math.PI) * b; if (g === 1) { this.lastFiringAnimationDone = true; } this.setRotation(e - h); } }; } updateBowWeapon(a = 500, b = 250) { return (c, d) => { const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw); this.setRotation(e); if (c.startChargingTick) { this.lastFiringAnimationDone = false; let b = Jj.renderer.replicator.getMsSinceTick(c.startChargingTick); let d = Math.min(b / a, 1); this.bowHands.setPositionY(d * 10); } else if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; const a = Jj.renderer.replicator.getMsSinceTick(c.firingTick); const d = Math.min(a / b, 1); if (d === 1) { this.lastFiringAnimationDone = true; } this.bowHands.setPositionY(10 - d * 10); } }; } updateDynamiteWeapon(a = 300, b = 100) { return (c, d) => { const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw); this.setRotation(e); if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) { this.lastFiringTick = c.firingTick; this.lastFiringAnimationDone = false; var f = Jj.renderer.replicator.getMsSinceTick(c.firingTick); var g = Math.min(f / a, 1); var h = Math.sin(g * Math.PI) * b; if (g === 1) { this.lastFiringAnimationDone = true; } this.weapon.setRotation(-h); } }; } updateWeapon(a) { this.lastWeaponName = a.weaponName; this.lastWeaponTier = a.weaponTier; this.removeAttachment(this.weapon); this.removeAttachment(this.dormantArm); this.removeAttachment(this.bowHands); this.bowHands = null; switch (a.weaponName) { case "Pickaxe": case "Sword": let b = new Ai("http://zombia.io/asset/images/Entity/Player/Player" + a.weaponName + "Tier" + a.weaponTier + ".svg"); b.setAnchor(0.5, 0.9); this.weapon = b; this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(Jj.ui.toolData[a.weaponName].msBetweenFires[a.weaponTier - 1], 100); break; case "Crossbow": let c = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier" + a.weaponTier + ".svg"); let d = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier" + a.weaponTier + ".svg"); d.setAnchor(1, 1); c.setAnchor(0.5, 1); this.weapon = c; this.bowHands = d; this.weaponUpdateFunc = this.updateBowWeapon(Jj.ui.toolData[a.weaponName].msBetweenFires[a.weaponTier - 1], 250); break; case "Dynamite": let e = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier" + a.weaponTier + ".svg"); e.setAnchor(0.5, 0.9); this.dormantArm = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg"); this.dormantArm.setAnchor(0.5, 1.35); this.addAttachment(this.dormantArm, 1); this.weapon = e; this.weaponUpdateFunc = this.updateDynamiteWeapon(250, 75); break; default: throw new Error("Unknown player weapon: " + a.weaponName); } if (this.bowHands !== null) { this.addAttachment(this.bowHands); } this.addAttachment(this.weapon, 1); } updateDamageTint(a) { if (a.zombieShieldHealth > 0) { this.base.setTint(16777215); this.weapon.setTint(16777215); return; } super.updateDamageTint(a); } }, Resource: class extends vi { constructor(a) { super(); this.base = new Ai("http://zombia.io/asset/images/Map/" + a + ".svg"); this.addAttachment(this.base, 1); } update(a, b) { if (b) { if (b.hits !== undefined) { this.updateHit(b); } if (Math.round(this.base.getRotation()) !== b.aimingYaw) { this.base.setRotation(b.aimingYaw); } } super.update(a, b); } updateHit(a) { let b = 0; let c = 0; for (let d = 0; d < a.hits.length / 2; d++) { const e = a.hits[d * 2 + 0]; const f = a.hits[d * 2 + 1]; const g = Jj.renderer.replicator.getMsSinceTick(e); if (g >= 250) { continue; } const h = Math.min(g / 250, 1); const i = Math.sin(f * Math.PI / 180); const j = Math.cos(f * Math.PI / 180) * -1; b += i * 10 * Math.sin(h * Math.PI); c += j * 10 * Math.sin(h * Math.PI); } const d = Math.sqrt(b * b + c * c); if (d > 10) { b /= d; c /= d; b *= 10; c *= 10; } this.base.setPosition(b, c); } }, ArrowTower: class extends Di { constructor() { super("ArrowTower"); } }, MageTower: class extends Di { constructor() { super("MageTower"); } update(a, b) { super.update(a, b); if (b && b.firingTick) { const a = Jj.renderer.replicator.getMsSinceTick(b.firingTick); const c = 250; const d = 0.4; const e = Math.min(a / c, 1); const f = 1 + Math.sin(e * Math.PI) * d; this.head.setScale(f); } } updateModel(a = 1) { if (a != this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); this.removeAttachment(this.head); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(this.currentTier)) { throw new Error("Unknown tier encountered for " + this.type + " tower: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg"); this.head = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Head.svg"); this.addAttachment(this.base, 2); this.addAttachment(this.head, 3); } } }, Factory: class extends vi { constructor() { super(); this.healthBar = new yi(); this.healthBar.setSize(82, 16); this.healthBar.setPivotPoint(41, -25); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 3); this.currentTier = null; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); } super.update(a, b); } updateModel(a = 1) { if (a !== this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for gold stash: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/Factory/FactoryTier" + a + "Base.svg"); this.addAttachment(this.base, 2); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } }, Projectile: class extends vi { constructor(a) { super(); this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/" + a + ".svg"); this.addAttachment(this.base); } }, DynamiteProjectile: class extends vi { constructor(a, b = 1) { super(); this.tier = b; this.currentRotation = 0; this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier" + b + ".svg"); this.addAttachment(this.base); } update(a, b) { if (b) { this.currentRotation += a * 540 / 1000; this.currentRotation %= 360; this.base.setRotation(this.currentRotation); } } onDie() { if (window.storage.getItem("settings-special-effects") == "true") { return; } const a = new jg(); Jj.renderer.groundLayer.node.addChild(a); const b = this.getParent().targetTick.position; let c = 0; const d = Jj.ui.toolData.Dynamite.projectileSplashDamageRange[this.getParent().targetTick.tier - 1]; a.update = e => { a.clear(); a.lineStyle(10, 16777215, 0.1); a.drawCircle(b.x, b.y, c); a.endFill(); c += d / 200 * e; if (c >= d) { Jj.renderer.groundLayer.node.removeChild(a); Jj.renderer.renderingFilters.splice(Jj.renderer.renderingFilters.indexOf(a), 1); a.destroy(); } }; Jj.renderer.renderingFilters.push(a); } }, RocketProjectile: class extends vi { constructor(a, b = 1) { super(); this.tier = b; this.currentRotation = 0; this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg"); this.addAttachment(this.base); } onDie() { if (window.storage.getItem("settings-special-effects") == "true") { return; } const a = new jg(); Jj.renderer.groundLayer.node.addChild(a); const b = this.getParent().targetTick.position; let c = 0; const d = Jj.ui.buildingData.RocketTower.projectileAoeRadius[this.tier - 1]; a.update = e => { a.clear(); a.lineStyle(10, 16777215, 0.1); a.drawCircle(b.x, b.y, c); a.endFill(); c += d / 100 * e; if (c >= d) { Jj.renderer.groundLayer.node.removeChild(a); Jj.renderer.renderingFilters.splice(Jj.renderer.renderingFilters.indexOf(a), 1); a.destroy(); } }; Jj.renderer.renderingFilters.push(a); } }, Wall: class extends vi { constructor() { super(); this.healthBar = new yi(); this.healthBar.setSize(35, 10); this.healthBar.setPivotPoint(17.5, -8); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 3); this.currentTier = null; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); } super.update(a, b); } updateModel(a = 1) { if (a !== this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for wall: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/Wall/WallTier" + a + ".svg"); this.addAttachment(this.base, 2); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } }, Door: class extends vi { constructor() { super(); this.healthBar = new yi(); this.healthBar.setSize(35, 10); this.healthBar.setPivotPoint(17.5, -8); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 3); this.currentTier = null; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); this.updateVisibility(b); } super.update(a, b); } updateModel(a = 1) { if (a !== this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for door: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/Door/DoorTier" + a + ".svg"); this.addAttachment(this.base, 2); } } updateVisibility(a) { if (Jj.ui.buildings[a.uid] !== undefined) { this.base.setAlpha(0.5); } else { this.base.setAlpha(1); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } }, SlowTrap: class extends vi { constructor() { super(); this.healthBar = new yi(); this.healthBar.setSize(35, 10); this.healthBar.setPivotPoint(17.5, -8); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 3); this.currentTier = null; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); this.updateVisibility(b); } super.update(a, b); } updateModel(a = 1) { if (a !== this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for slow trap: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/SlowTrap/SlowTrapTier" + a + ".svg"); this.addAttachment(this.base, 2); } } updateVisibility(a) { if (Jj.ui.buildings[a.uid] !== undefined) { this.base.setAlpha(0.5); } else { this.base.setAlpha(1); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } }, CannonTower: class extends Di { constructor() { super("CannonTower"); } }, RocketTower: class extends Di { constructor() { super("RocketTower"); } }, Drill: class extends vi { constructor() { super(); this.healthBar = new yi(); this.healthBar.setSize(82, 16); this.healthBar.setPivotPoint(41, -25); this.healthBar.setVisible(false); this.addAttachment(this.healthBar, 4); this.currentRotation = 0; this.currentTier = null; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateHealthBar(b); this.currentRotation += b.tier * 45 * a / 1000; this.currentRotation %= 360; this.drill.setRotation(this.currentRotation); } super.update(a, b); } updateModel(a = 1) { if (a != this.currentTier) { this.currentTier = a; this.removeAttachment(this.head); this.removeAttachment(this.drill); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for drill: " + a); } this.drill = new Ai("http://zombia.io/asset/images/Entity/Drill/Drill.svg"); this.head = new Ai("http://zombia.io/asset/images/Entity/Drill/DrillTier" + a + "Head.svg"); this.addAttachment(this.drill, 2); this.addAttachment(this.head, 3); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } }, SawTower: class extends Di { constructor() { super("SawTower"); this.currentRotation = 0; this.extensionPosition = 0; this.updateModel(); } update(a, b) { if (b) { this.updateModel(b.tier); this.updateAnimation(a, b); this.updateHealthBar(b); } super.update(a, b); } updateModel(a = 1) { if (a != this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); this.removeAttachment(this.arm); this.removeAttachment(this.blade); this.removeAttachment(this.top); this.removeAttachment(this.brace); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for SawTower: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Base.svg"); this.blade = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg"); this.top = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Top.svg"); this.top.setPositionY(-16); this.brace = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Brace.svg"); this.arm = new xi(); this.arm.drawRect(-8, 0, 8, 48, { r: 51, g: 51, b: 51 }); this.addAttachment(this.arm, 2); this.addAttachment(this.base, 1); this.addAttachment(this.blade, 3); this.addAttachment(this.top, 4); this.addAttachment(this.brace, 5); this.brace.setAnchor(0.5, 1); } } updateHealthBar(a) { this.healthBar.setVisible(a.health !== a.maxHealth); } updateAnimation(a, b) { if (b.firingTick !== 0) { this.currentRotation += a * 720 / 1000; this.currentRotation %= 360; this.blade.setRotation(this.currentRotation); this.extending = true; } else { this.extending = false; } if (this.extending === true) { this.extensionPosition -= 4; if (this.extensionPosition < -64) { this.extensionPosition = -64; } } else { this.extensionPosition += 8; if (this.extensionPosition > 0) { this.extensionPosition = 0; } } this.blade.setPositionY(this.extensionPosition - 12 - 16); this.arm.draw.height = this.extensionPosition; this.brace.setPositionY(this.extensionPosition - 16); } }, LightningTower: class extends Di { constructor() { super("LightningTower"); this.targetBeams = new xi(); Jj.renderer.projectiles.addAttachment(this.targetBeams, 2); this.lastFiringTick = 0; this.hasFired = false; this.branchTextures = []; this.currentRotation = 0; this.currentRotationSpeed = 0; } removedParentFunction() { Jj.renderer.projectiles.removeAttachment(this.targetBeams); } createLightningTexture(a, b) { const c = i.angleTo(a, b); const d = Math.sqrt(i.measureDistance(a, b)); const e = (2 + Math.floor(Math.random() * 3)) * 2; this.targetBeams.draw.lineStyle(3, 16777215); this.targetBeams.draw.moveTo(a.x, a.y); let f = { x: a.x, y: a.y }; for (let g = 0; g <= e; g++) { if (g == e) { this.targetBeams.draw.lineTo(b.x, b.y); } else if (g % 2 == 0) { const a = (c - (40 - Math.floor(Math.random() * 10)) + 360) % 360; const b = { x: f.x + Math.sin(a * Math.PI / 180) * (d / e * 1.25), y: f.y - Math.cos(a * Math.PI / 180) * (d / e * 1.25) }; this.targetBeams.draw.lineTo(b.x, b.y); f = b; } else { const a = (c + (40 - Math.floor(Math.random() * 10)) + 360) % 360; const b = { x: f.x + Math.sin(a * Math.PI / 180) * (d / e * 1.25), y: f.y - Math.cos(a * Math.PI / 180) * (d / e * 1.25) }; this.targetBeams.draw.lineTo(b.x, b.y); f = b; } } } update(a, b) { if (b) { this.updateSpinningAnimation(a, b); this.updateFiringAnimation(a, b); } super.update(a, b); } updateSpinningAnimation(a, b) { if (Jj.renderer.replicator.getMsSinceTick(this.lastFiringTick) > 1000) { this.currentRotationSpeed = Math.max(0, this.currentRotationSpeed - a * 15 / 1000); } else { this.currentRotationSpeed = Math.min(this.currentRotationSpeed + a * 36 / 1000, a * 720 / 1000); } if (this.currentRotationSpeed > 0) { this.currentRotation += this.currentRotationSpeed; this.currentRotation %= 360; this.coil.setRotation(this.currentRotation); } } clearLightning(a) { this.hasFired = false; this.targetBeams.draw.clear(); this.branchTextures.forEach(a => { a.draw.destroy(); this.targetBeams.removeAttachment(a); }); this.branchTextures = []; } updateFiringAnimation(a, b) { if (b.firingTick == 0) { return; } const c = Jj.renderer.replicator.getMsSinceTick(b.firingTick); if (b.firingTick !== this.lastFiringTick) { this.clearLightning(); const a = this.parent.targetTick.position; this.targetBeams.setAlpha(1); this.hasFired = true; let c = { x: 0, y: 0 }; const d = i.angleTo(a, { x: b.targetBeams[0], y: b.targetBeams[1] }); c.x += Math.sin(d * Math.PI / 180) * (Math.floor(Math.random() * 8) + 22); c.y -= Math.cos(d * Math.PI / 180) * (Math.floor(Math.random() * 8) + 22); c.x += a.x; c.y += a.y; for (let a = 0; a < b.targetBeams.length; a += 2) { const d = { x: b.targetBeams[a], y: b.targetBeams[a + 1] }; this.createLightningTexture(c, d); c = d; } this.lastFiringTick = b.firingTick; } else if (this.hasFired == 1) { const a = Math.min(1, Math.max(0, c / 50)); this.targetBeams.setAlpha(1 - a); } if (c >= 100 && this.hasFired == 1) { this.clearLightning(); } } updateModel(a = 1) { if (a != this.currentTier) { this.currentTier = a; this.removeAttachment(this.base); this.removeAttachment(this.coil); if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) { throw new Error("Unknown tier encountered for " + this.type + " tower: " + a); } this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg"); this.coil = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Coil.svg"); this.addAttachment(this.base, 2); this.addAttachment(this.coil, 3); this.coil.setRotation(this.currentRotation); } } }, Zombie: class extends wi { constructor() { super(); this.healthBar = new yi({ r: 183, g: 70, b: 20 }); this.healthBar.setPosition(0, -5); this.healthBar.setScale(0.6); this.addAttachment(this.healthBar, 0); } update(a, b) { const c = this.getParent(); if (b) { if (this.base === undefined) { this.updateModel(b, c); } this.healthBar.setVisible(b.health < b.maxHealth); if (b.yaw !== undefined) { c.targetTick.aimingYaw = b.yaw; } } super.update(a, b); } updateModel(a, b) { if (["Grey", "Green", "Blue"].indexOf(a.colour) < 0) { throw new Error("Invalid zombie colour received: " + a.colour); } if (a.tier < 0 || a.tier > 10) { throw new Error("Invalid zombie tier received: " + a.tier); } if (a.tier == 3) { this.base = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Base.svg"); this.weaponLeft = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "WeaponLeft.svg"); this.weaponRight = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "WeaponRight.svg"); this.weaponLeft.setAnchor(0.5, 0.75); this.weaponRight.setAnchor(0.5, 0.75); this.weaponUpdateFunc = this.updateStabbingWeapon(500); this.addAttachment(this.base, 2); this.addAttachment(this.weaponLeft, 1); this.addAttachment(this.weaponRight, 1); } else { this.base = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Base.svg"); this.weapon = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Weapon.svg"); switch (a.tier) { case 2: this.weapon.setAnchor(0.5, 0.75); this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(300, 100); break; case 4: case 5: this.weapon.setAnchor(0.5, 0.85); this.weaponUpdateFunc = this.updateClockwiseSwingingWeapon(300, 100); break; case 6: case 7: case 8: this.weapon.setAnchor(0.5, 0.9); this.weaponUpdateFunc = this.updateClockwiseSwingingWeapon(300, 100); break; default: this.weapon.setAnchor(0.5, 1); this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(300, 100); } this.addAttachment(this.base, 2); this.addAttachment(this.weapon, 1); } } }, Visualiser: class extends vi { constructor() { super(); this.text = new ui("X", "Hammersmith One", 15); this.addAttachment(this.text); } } }; class Fi extends vi { constructor(a) { super(); this.isOccupied = false; this.redSquare = new xi(); this.redSquare.drawRect(-a.width / 2, -a.height / 2, a.width / 2, a.height / 2, { r: 255, g: 0, b: 0 }); this.redSquare.setAlpha(0.2); this.redSquare.setVisible(false); this.addAttachment(this.redSquare); } setIsOccupied(a) { this.redSquare.setVisible(this.isOccupied = a); } } class Gi extends vi { constructor(a) { super(); this.isCircular = a.isCircular || false; this.goldRegion = new xi(); this.goldRegion.setAlpha(0.1); if (this.isCircular) { this.goldRegion.drawCircle(0, 0, a.radius, a.fill || { r: 200, g: 160, b: 0 }, a.lineFill || { r: 255, g: 200, b: 0 }, 8); } else { this.goldRegion.drawRect(-a.width / 2, -a.height / 2, a.width / 2, a.height / 2, a.fill || { r: 200, g: 160, b: 0 }, a.lineFill || { r: 255, g: 200, b: 0 }, a.lineWidth || 8); } this.addAttachment(this.goldRegion); } } class Hi extends d { constructor() { super("<span></span>"); this.placeholderTints = []; this.borderTints = []; this.direction = 0; this.disableDirection = true; this.placeholderEntity = null; this.rangeIndicator = null; this.placeholderText = new ui("Press R to rotate...", "Hammersmith One", 16); this.placeholderText.setAnchor(0.5, 0.5); this.placeholderText.setColor(220, 220, 220); this.placeholderText.setStroke(51, 51, 51, 3); this.placeholderText.setFontWeight("bold"); this.placeholderText.setLetterSpacing(1); this.placeholderText.setAlpha(0); this.placeholderText.setPosition(-1000, -1000); } init() { Jj.renderer.uiLayer.addAttachment(this.placeholderText); Jj.eventEmitter.on("82Up", this.cycleDirection.bind(this)); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("CameraUpdate", this.update.bind(this)); Jj.eventEmitter.on("DeadRpcReceived", this.onDead.bind(this)); Jj.eventEmitter.on("27Up", this.cancelPlacing.bind(this)); Jj.eventEmitter.on("BuildingsUpdated", this.onBuildingData.bind(this)); } onBuildingData(a) { for (let b in a) { const c = a[b]; if (c.type == this.buildingType && Jj.ui.buildingData[c.type].built >= Jj.ui.buildingData[c.type].limit) { this.cancelPlacing(); } } } onEnterWorld(a) { this.minWallDistance = a.minimumBuildDistanceFromWall; this.maxFactoryDistance = a.maxFactoryBuildDistance; this.maxPlayerDistance = a.maxPlayerBuildDistance; } cycleDirection() { if (this.disableDirection !== true && this.placeholderEntity !== null) { this.direction = (this.direction + 1) % 4; this.placeholderEntity.setRotation(this.direction * 90); } } onDead() { this.cancelPlacing(); } startPlacing(a) { if (this.buildingType) { this.cancelPlacing(); } Jj.ui.components.uiBuildingOverlay.stopWatching(); this.buildingType = a; const b = Jj.ui.buildingData[a]; if (["SawTower", "Harvester"].includes(this.buildingType)) { this.disableDirection = false; this.placeholderText.setAlpha(0.75); this.placeholderText.setPosition(-1000, -1000); } else { this.disableDirection = true; this.direction = 0; this.placeholderText.setAlpha(0); this.placeholderText.setPosition(-1000, -1000); } const c = Jj.renderer.world.entityGrid.cellSize; const d = b.gridWidth * b.gridHeight; if (Ei[a]) { this.placeholderEntity = new Ai("http://zombia.io/asset/images/Ui/Buildings/" + a + "/" + a + "Tier1.svg"); this.placeholderEntity.setAlpha(0.5); this.placeholderEntity.setRotation(this.direction * 90); Jj.renderer.uiLayer.addAttachment(this.placeholderEntity); } for (let b = 0; b < d; b++) { this.placeholderTints[b] = new Fi({ width: c, height: c }); Jj.renderer.uiLayer.addAttachment(this.placeholderTints[b]); } if (a !== "Factory" && Jj.ui.getFactory() !== null) { this.rangeIndicator = new Gi({ width: this.maxFactoryDistance * c * 2, height: this.maxFactoryDistance * c * 2, fill: { r: 0, b: 0, g: 0 }, lineFill: { r: 255, b: 0, g: 0 }, lineWidth: 12 }); Jj.renderer.groundLayer.addAttachment(this.rangeIndicator); this.rangeIndicator.setPosition(Jj.ui.getFactory().x, Jj.ui.getFactory().y); } const e = Jj.renderer.world.worldSize.x / c; const f = Jj.renderer.world.worldSize.y / c; for (let b = 0; b < 4; b++) { const a = this.minWallDistance / 2; if (b == 0 || b == 1) { this.borderTints[b] = new Fi({ width: c * this.minWallDistance, height: c * f }); } else if (b == 2 || b == 3) { this.borderTints[b] = new Fi({ width: c * (e - this.minWallDistance * 2), height: c * this.minWallDistance }); } Jj.renderer.groundLayer.addAttachment(this.borderTints[b]); if (b == 0) { this.borderTints[b].setPosition(c * a, c * (f / 2)); } else if (b == 1) { this.borderTints[b].setPosition(c * (e - a), c * (f / 2)); } else if (b == 2) { this.borderTints[b].setPosition(c * (e / 2), c * a); } else if (b == 3) { this.borderTints[b].setPosition(c * (e / 2), c * (f - a)); } this.borderTints[b].setIsOccupied(true); } this.update(); } update() { if (!this.buildingType) { return; } const a = Jj.ui.buildingData[this.buildingType]; const b = Jj.ui.mousePosition; const c = Jj.renderer.world; const d = Jj.renderer.screenToWorld(b.x, b.y); const e = c.entityGrid.getCellIndices(d.x, d.y, { width: a.gridWidth, height: a.gridHeight }); const f = c.entityGrid.cellSize; let g = { x: 0, y: 0 }; for (let a in e) { if (!e[a]) { this.placeholderTints[a].setVisible(false); continue; } const b = c.entityGrid.getCellCoords(e[a]); let d = { x: b.x * f + f / 2, y: b.y * f + f / 2 }; const h = Jj.renderer.worldToUi(d.x, d.y); const i = this.checkIsOccupied(e[a], b); this.placeholderTints[a].setPosition(h.x, h.y); this.placeholderTints[a].setIsOccupied(i); this.placeholderTints[a].setVisible(true); g.x += b.x; g.y += b.y; } g.x = g.x / e.length; g.y = g.y / e.length; let h = { x: g.x * f + f / 2, y: g.y * f + f / 2 }; const i = Jj.renderer.worldToUi(h.x, h.y); if (this.placeholderEntity !== null) { this.placeholderEntity.setPosition(i.x, i.y); this.placeholderText.setPosition(i.x, i.y - 110); } } checkIsOccupied(a, b) { const c = Jj.renderer.world; const d = c.entityGrid.cellSize; const e = c.entityGrid.getEntitiesInCell(a); const f = b.x * d + d / 2; const g = b.y * d + d / 2; if (!e) { return true; } for (const d in e) { const a = c.entities[parseInt(d)]; if (!a) { continue; } const b = a.getTargetTick(); if (b && b.entityClass !== "Projectile") { return true; } } const h = Math.min(b.x, c.entityGrid.columns - 1 - b.x); const i = Math.min(b.y, c.entityGrid.rows - 1 - b.y); if (h < this.minWallDistance || i < this.minWallDistance) { return true; } if (c.getLocalPlayer()) { const a = c.entities[c.getLocalPlayer()]; if (a) { const b = Math.abs(a.getPositionX() - f) / d; const c = Math.abs(a.getPositionY() - g) / d; if (b > this.maxPlayerDistance || c > this.maxPlayerDistance) { return true; } } } if (Jj.ui.factory && this.buildingType !== "Harvester") { const a = Math.abs(Jj.ui.factory.x - f) / d; const b = Math.abs(Jj.ui.factory.y - g) / d; if (a > this.maxFactoryDistance || b > this.maxFactoryDistance) { return true; } } return false; } cancelPlacing() { if (this.buildingType) { Jj.renderer.uiLayer.removeAttachment(this.placeholderEntity); for (let a in this.placeholderTints) { Jj.renderer.uiLayer.removeAttachment(this.placeholderTints[a]); } for (let a in this.borderTints) { Jj.renderer.groundLayer.removeAttachment(this.borderTints[a]); } if (this.rangeIndicator) { Jj.renderer.groundLayer.removeAttachment(this.rangeIndicator); delete this.rangeIndicator; } this.placeholderText.setAlpha(0); this.placeholderText.setPosition(-1000, -1000); this.placeholderEntity = null; this.placeholderTints = []; this.borderTints = []; this.buildingType = null; } } placeBuilding() { if (!this.buildingType) { return; } const a = Jj.renderer.world.getLocalPlayer(); if (!a) { return false; } if (!Jj.renderer.world.entities[a]) { return false; } const b = Jj.ui.buildingData[this.buildingType]; const c = Jj.ui.mousePosition; const d = Jj.renderer.world; const e = Jj.renderer.screenToWorld(c.x, c.y); const f = d.entityGrid.getCellIndices(e.x, e.y, { width: b.gridWidth, height: b.gridHeight }); const g = d.entityGrid.cellSize; let h = { x: 0, y: 0 }; for (let a in f) { if (!f[a]) { return false; } const b = d.entityGrid.getCellCoords(f[a]); h.x += b.x; h.y += b.y; } h.x /= f.length; h.y /= f.length; let i = { x: h.x * g + g / 2, y: h.y * g + g / 2 }; Jj.network.sendRpc({ name: "PlaceBuilding", x: i.x, y: i.y, type: this.buildingType, yaw: this.direction * 90 }); return true; } isActive() { return !!this.buildingType; } } class Ii extends d { constructor() { let a = document.createElement("div"); a.className = "hud-building-overlay hud-tooltip hud-tooltip-top"; document.getElementById("hud").appendChild(a); super(a); this.element.innerHTML = "\n <div class=\"hud-tooltip-building\">\n <h2 class=\"hud-building-name\"></h2>\n <h3>Tier <span id=\"hud-building-tier\" class=\"hud-building-tier\"></span></h3>\n <div class=\"hud-tooltip-body\">\n <div id=\"hud-building-stats\" class=\"hud-building-stats\"></div>\n <p class=\"hud-building-actions\">\n <a class=\"btn btn-green hud-building-upgrade\"></a>\n <a class=\"btn btn-red hud-building-sell\">Sell</a>\n </p>\n </div>\n </div>\n "; this.nameElem = this.element.querySelector(".hud-building-name"); this.tierElem = this.element.querySelector(".hud-building-tier"); this.statsElem = this.element.querySelector(".hud-building-stats"); this.upgradeElem = this.element.querySelector(".hud-building-upgrade"); this.sellElem = this.element.querySelector(".hud-building-sell"); this.upgradeElem.addEventListener("mouseup", this.upgradeBuilding.bind(this)); this.sellElem.addEventListener("mouseup", this.sellBuilding.bind(this)); this.element.addEventListener("mousedown", this.onMouseDown.bind(this)); this.element.addEventListener("mouseup", this.onMouseUp.bind(this)); } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("PlayerTickUpdated", this.updateText.bind(this)); Jj.eventEmitter.on("CameraUpdate", this.update.bind(this)); Jj.eventEmitter.on("BuildingsUpdated", this.updateText.bind(this)); Jj.eventEmitter.on("16Down", this.updateText.bind(this)); Jj.eventEmitter.on("16Up", this.updateText.bind(this)); Jj.eventEmitter.on("69Up", this.upgradeBuilding.bind(this)); Jj.eventEmitter.on("84Up", this.sellBuilding.bind(this)); Jj.eventEmitter.on("27Up", this.stopWatching.bind(this)); } onEnterWorld(a) { this.maxFactoryDistance = a.maxFactoryBuildDistance; } onMouseDown(a) { a.stopPropagation(); } onMouseUp(a) { a.stopPropagation(); } upgradeBuilding() { if (!this.buildingUid) { return; } let a = new Set(); a.add(this.buildingUid); if (Jj.network.inputPacketManager.shiftDown) { for (const b in Jj.ui.buildings) { const c = Jj.ui.buildings[b]; if (c.type == this.buildingId && c.tier == this.buildingTier) { a.add(c.uid); } } } Jj.network.sendRpc({ name: "UpgradeBuilding", uids: Array.from(a) }); } sellBuilding() { if (!this.buildingUid || !Jj.ui.playerPartyCanSell) { return; } let a = new Set(); a.add(this.buildingUid); if (Jj.network.inputPacketManager.shiftDown) { for (const b in Jj.ui.buildings) { const c = Jj.ui.buildings[b]; if (c.type == this.buildingId && c.tier == this.buildingTier) { a.add(c.uid); } } } if (a.size > 1) { Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to sell all <b>" + this.buildingId + "</b>s?", 5000, () => { Jj.network.sendRpc({ name: "SellBuilding", uids: Array.from(a) }); }); } else { Jj.network.sendRpc({ name: "SellBuilding", uids: Array.from(a) }); } } update() { if (!this.buildingUid) { return; } const a = Jj.renderer.world.entities[this.buildingUid]; if (!a) { return this.stopWatching(); } const b = Jj.renderer.worldToScreen(a.getPositionX(), a.getPositionY()); const c = Jj.ui.buildingData[this.buildingId]; if (!Jj.ui.buildings[this.buildingUid]) { return this.stopWatching(); } const d = c.gridHeight / 2 * 48 * (Jj.renderer.scale / window.devicePixelRatio); this.element.style.left = b.x - this.element.offsetWidth / 2 + "px"; this.element.style.top = b.y - d - this.element.offsetHeight - 20 + "px"; if (this.rangeIndicator) { this.rangeIndicator.setPosition(a.getPositionX(), a.getPositionY()); } } updateText() { if (!this.isActive()) { return; } if (!Jj.ui.buildings[this.buildingUid]) { return this.stopWatching(); } const a = Jj.ui.buildingData[this.buildingId]; this.buildingId = Jj.ui.buildings[this.buildingUid].type; this.buildingTier = Jj.ui.buildings[this.buildingUid].tier; const b = this.buildingTier >= a.tiers || this.buildingId !== "Factory" && this.buildingTier >= Jj.ui.getFactory().tier; this.nameElem.innerHTML = this.buildingId; this.tierElem.innerHTML = this.buildingTier; let c = 1; if (Jj.network.inputPacketManager.shiftDown) { for (const a in Jj.ui.buildings) { const b = Jj.ui.buildings[a]; if (b.type == this.buildingId && b.tier == this.buildingTier && b.uid !== this.buildingUid) { c++; } } } if (b) { this.upgradeElem.classList.add("is-disabled"); } const d = i.createResourceRefundString(a, this.buildingTier, c); if (["Factory"].includes(this.buildingId)) { this.sellElem.classList.add("is-disabled"); this.sellElem.innerHTML = "<span>Can't sell</span>"; } else if (Jj.ui.playerPartyCanSell) { this.sellElem.classList.remove("is-disabled"); this.sellElem.innerHTML = "<span>Sell" + (Jj.network.inputPacketManager.shiftDown ? " All" : "") + " (" + d + ")</span>"; } else { this.sellElem.classList.add("is-disabled"); this.sellElem.innerHTML = "<span>Need permission to sell</span>"; } const e = i.createResourceCostString(a, b ? this.buildingTier : this.buildingTier + 1, c, true); const f = Jj.ui.getFactory(); if (b) { if (["Factory"].includes(this.buildingId) || f.tier == this.buildingTier && f.tier >= Jj.ui.buildingData.Factory.tiers) { this.upgradeElem.innerHTML = "<span>Maximum tier!</span>"; } else { this.upgradeElem.innerHTML = "<span>Upgrade your Factory</span>"; } } else { this.upgradeElem.innerHTML = "<span>Upgrade " + (Jj.network.inputPacketManager.shiftDown ? "All " : "") + " (" + e.elem + ")</span>"; } const g = { Range: "towerRadius", "Max Health": "health", "Gold/Second": "goldPerSecond", "Firing Rate": "msBetweenFires", "Projectile Speed": "projectileSpeed", "Damage to Zombies": "damageToZombies", "Target Limit": "attackTargetLimit" }; let h = ""; let j = ""; for (let b in g) { if (a[g[b]]) { h += "<p>" + b + ": <strong class=\"hud-stats-current\">" + a[g[b]][this.buildingTier - 1] + "</strong></p>"; j += "<p>" + b + ": <strong class=\"hud-stats-next\">" + a[g[b]][this.buildingTier - (this.buildingTier >= a.tiers ? 1 : 0)] + "</strong></p>"; } } this.statsElem.innerHTML = "<div class=\"hud-stats-current hud-stats-values\">" + h + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + j + "</div>"; } stopWatching() { if (this.buildingUid) { if (this.rangeIndicator) { Jj.renderer.groundLayer.removeAttachment(this.rangeIndicator); delete this.rangeIndicator; } this.element.style.left = "-1000px"; this.element.style.top = "-1000px"; this.upgradeElem.classList.remove("is-disabled"); this.buildingUid = null; this.buildingId = null; this.buildingTier = null; this.hide(); } } startWatching(a) { if (this.buildingUid) { this.stopWatching(); } Jj.ui.components.uiPlacementOverlay.cancelPlacing(); this.buildingUid = a; if (!Jj.ui.buildings[a]) { return; } this.buildingId = Jj.ui.buildings[a].type; this.buildingTier = Jj.ui.buildings[a].tier; const b = Jj.ui.buildingData[this.buildingId]; if (this.buildingId == "Factory") { const a = Jj.renderer.world.entityGrid.cellSize; this.rangeIndicator = new Gi({ width: this.maxFactoryDistance * a * 2, height: this.maxFactoryDistance * a * 2, fill: { r: 0, b: 0, g: 0 }, lineFill: { r: 255, b: 0, g: 0 }, lineWidth: 12 }); Jj.renderer.groundLayer.addAttachment(this.rangeIndicator); } else if (b.towerRadius) { this.rangeIndicator = new Gi({ isCircular: true, radius: b.towerRadius[this.buildingTier - 1] }); Jj.renderer.groundLayer.addAttachment(this.rangeIndicator); } this.updateText(); this.show(); this.update(); } isActive() { return !!this.buildingUid; } } class Ji extends d { constructor() { const a = document.createElement("div"); a.className = "hud-map"; document.getElementById("hud-bottom").appendChild(a); super(a); this.element.addEventListener("mousedown", this.onMouseDown.bind(this)); this.element.addEventListener("mouseup", this.onMouseUp.bind(this)); this.playerElems = {}; this.buildingElems = {}; } init() { Jj.eventEmitter.on("RendererUpdated", this.update.bind(this)); Jj.eventEmitter.on("PartyMembersUpdated", this.onPartyMembersUpdate.bind(this)); Jj.eventEmitter.on("BuildingsUpdated", this.onBuildingsUpdate.bind(this)); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); } onEnterWorld() { for (let a in this.buildingElems) { this.buildingElems[a].remove(); delete this.buildingElems[a]; } } onMouseDown(a) { a.stopPropagation(); a.preventDefault(); } onMouseUp(a) { a.stopPropagation(); a.preventDefault(); } update() { for (const a in this.playerElems) { const b = this.playerElems[a]; const c = Jj.renderer.world.entities[a]; if (!c) { //b.marker.style.display = "none"; continue; } const d = c.getPositionX() / Jj.renderer.world.worldSize.x * 100; const e = c.getPositionY() / Jj.renderer.world.worldSize.y * 100; b.marker.setAttribute("data-index", b.index.toString()); b.marker.style.display = "block"; b.marker.style.left = d + "%"; b.marker.style.top = e + "%"; } } onPartyMembersUpdate(a) { const b = {}; for (const c in this.playerElems) { b[c] = true; } for (const c in a) { const d = parseInt(c); const e = Object.values(a)[c].uid; delete b[e]; if (this.playerElems[e]) { this.playerElems[e].index = d; } else { const a = document.createElement("div"); a.className = "hud-map-player"; a.setAttribute("data-index", d); this.element.appendChild(a); this.playerElems[e] = { index: d, marker: a }; } } for (const c in b) { if (this.playerElems[c]) { this.playerElems[c].marker.remove(); delete this.playerElems[c]; } } } onBuildingsUpdate(a) { const b = {}; for (const c in a) { if (a[c].dead !== true) { if (this.buildingElems[a[c].uid] === undefined) { const b = document.createElement("div"); b.className = "hud-map-building"; const d = a[c].x / Jj.renderer.world.worldSize.x * 100; const e = a[c].y / Jj.renderer.world.worldSize.y * 100; b.style.left = d + "%"; b.style.top = e + "%"; this.element.appendChild(b); this.buildingElems[a[c].uid] = b; } } else { b[a[c].uid] = true; } } for (const c in b) { if (this.buildingElems[c]) { this.buildingElems[c].remove(); delete this.buildingElems[c]; } } } } const Ki = c(6); const Li = c(573); Ki.loadPlugin(Li); Ki.setDefaults({ randomize: false }); class Mi extends d { constructor() { const a = document.createElement("div"); a.className = "hud-chat"; a.innerHTML = "\n <div class=\"hud-chat-messages\" id=\"hud-chat-messages\"></div>\n <input type=\"text\" class=\"hud-chat-input\" id=\"hud-chat-input\" placeholder=\"Send a message to the [All] channel.\" maxlength=\"140\">\n <div class=\"hud-chat-toggle-channel\" id=\"hud-chat-toggle-channel\"></div>"; document.getElementById("hud-top").appendChild(a); super(a); this.element.addEventListener("mouseup", this.onMouseUp.bind(this)); this.element.addEventListener("mousedown", this.onMouseDown.bind(this)); this.messagesElem = document.getElementById("hud-chat-messages"); this.inputElem = document.getElementById("hud-chat-input"); this.toggleChannelButton = document.getElementById("hud-chat-toggle-channel"); this.inputElem.addEventListener("keydown", a => { if (!["Enter", "Escape"].includes(a.code)) { a.stopPropagation(); } }); this.inputElem.addEventListener("keyup", a => { if (!["Enter", "Escape"].includes(a.code)) { a.stopPropagation(); } }); this.toggleChannelButton.addEventListener("mousedown", a => { a.stopPropagation(); }); this.toggleChannelButton.addEventListener("mouseup", a => { this.toggleChannel(); a.stopPropagation(); this.inputElem.focus(); }); this.typing = false; this.channels = ["All", "Party"]; this.channelIndex = 0; } init() { Jj.eventEmitter.on("ReceiveChatMessageRpcReceived", this.onMessageReceived.bind(this)); Jj.eventEmitter.on("13Up", this.toggleTyping.bind(this)); Jj.eventEmitter.on("27Up", () => { if (this.typing == 1) { this.hideChat(); } }); Jj.eventEmitter.on("mouseDown", () => { if (this.typing == 1) { this.hideChat(); } }); } showChat() { this.toggleChannelButton.style.display = "block"; this.element.classList.add("is-focused"); this.inputElem.focus(); this.typing = true; } hideChat() { this.toggleChannelButton.style.display = "none"; this.element.classList.remove("is-focused"); this.inputElem.blur(); this.typing = false; } onMouseUp(a) { if (this.typing) { a.stopPropagation(); } } onMouseDown(a) { if (this.typing) { a.stopPropagation(); } } onMessageReceived(a) { const b = document.createElement("div"); b.className = "hud-chat-message"; b.innerHTML = "<strong style=\"" + (a.channel === "All" ? "color:#FF0000;" : "color:#00FF00;") + "\">[" + a.channel + "] </strong><strong><span id=\"name\"></span>: </strong><span id=\"message\"></span>"; const c = document.createTextNode(Jj.network.languageFilterEnabled ? Ki(a.name) : a.name); b.querySelector("#name").appendChild(c); const d = document.createTextNode(Jj.network.languageFilterEnabled ? Ki(a.message) : a.message); b.querySelector("#message").appendChild(d); this.messagesElem.appendChild(b); b.addEventListener("mousedown", a => { a.stopPropagation(); }); b.addEventListener("mouseup", a => { a.stopPropagation(); }); this.messagesElem.scrollTop = this.messagesElem.scrollHeight; if (window.storage.getItem("settings-delete-chat") == "true" && document.getElementsByClassName("hud-chat-message").length > 100) { document.getElementsByClassName("hud-chat-message")[0].remove(); } } toggleTyping() { if (this.typing) { if (this.inputElem.value.trim().length > 0) { let message = this.inputElem.value.trim(); let sendOrginalMsg = () => { Jj.network.sendRpc({ name: "SendChatMessage", message: message, channel: this.channels[this.channelIndex] }); } let spearTiers = { 1: 100, 2: 500, 3: 3500, 4: 8600, 5: 30000, 6: 80000, 7: 280000, } let chatMsgReceived = (msg) => { !msg.startsWith("!!") && (msg = msg.split("!")[1]); let input = msg.split(" ")[0].toLowerCase(); switch (input) { case "send": for (let i = 0; i < parseInt(msg.split(" ")[1]); i++)(window.b = new Bot(scannerNames[i % scannerNames.length], game.network.options.serverData.id)) break; case "reset": for (let i in sockets) sockets[i].ws.close() break; case "r": for (let i in sockets) { sockets[i].shouldRespawn = true; sockets[i].respawn(); } break; case "sockets": sendMsg(`You currently have ${Object.keys(sockets).length}`) break; case "arb": saveBuildings(); autoRebuilder = true; sendMsg(`AutoRebuilder enabled`) break; case "record": let baseName = msg.split(" ")[1]; recordBase().then(buildCode => { const parsedObj = JSON.parse(localStorage.recordedBase); parsedObj[baseName] = buildCode; localStorage.recordedBase = JSON.stringify(parsedObj); sendMsg(`Base recorded with name "${baseName}"`) }) break; case "list": let recordedBases = JSON.parse(localStorage.recordedBase); let baseNames = Object.keys(recordedBases); if (baseNames.length == 0) { sendMsg("No bases recorded"); return; } sendMsg(`Bases recorded: ${baseNames.join(",")}`); break; case "xkey": xkey = true; sendMsg(`Enabled xkey`); break; case "delete": const baseToDelete = msg.split(" ")[1]; let recordedBase = JSON.parse(localStorage.recordedBase); if (recordedBase[baseToDelete]) { delete recordedBase[baseToDelete]; localStorage.recordedBase = JSON.stringify(recordedBase); sendMsg(`Deleted base with name ${baseToDelete}`); return; }; sendMsg(`base with name ${baseToDelete} is not recorded/does not exist`); break; case "build": const baseToBuild = msg.split(" ")[1]; let Bases = JSON.parse(localStorage.recordedBase); if(!Bases[baseToBuild]) { sendMsg(`base with name ${baseToDelete} is not recorded/does not exist`); return; }; buildBase(Bases[baseToBuild]); break; case "!!arb": autoRebuilder = false; buildings.clear(); missingBuildings.clear(); buildingsToUpgrade.clear(); sendMsg(`AutoRebuilder disabled`) break; case "!!xkey": xkey = false; sendMsg("Disabled xkey"); break; case "!!as": spearFarm.enabled = false; spearFarm.tier = null; spearFarm.price = null; sendMsg(`Auto farm spear disabled`) break case "!!r": for (let i in sockets) sockets[i].shouldRespawn = false; break; } if (input.startsWith("as")) { let tier = parseInt(input.split("as")[1]); spearTiers[tier] && (spearFarm = { tier: tier, price: spearTiers[tier], enabled: true }); sendMsg(`Auto farm spear tier ${tier} enabled`) }; }; message.startsWith("!") ? chatMsgReceived(message) : sendOrginalMsg(); } this.inputElem.value = ""; this.hideChat(); } else { this.showChat(); } } toggleChannel(a) { if (this.typing) { this.channelIndex++; if (this.channelIndex + 1 > this.channels.length) { this.channelIndex = 0; } this.inputElem.placeholder = "Send a message to the [" + this.channels[this.channelIndex] + "] channel."; } } } class Ni extends d { constructor(a) { const b = document.createElement("div"); b.className = "hud-tool"; super(b); this.type = a; this.element.addEventListener("click", this.onClick.bind(this)); this.element.addEventListener("mousedown", this.onMouseDown); this.update(); } init() { Jj.eventEmitter.on("SetToolRpcReceived", a => { for (let b of a) { if (b.toolName == this.type) { this.update(b.toolTier); } } }); } onClick() { Jj.network.sendRpc({ name: "EquipTool", toolName: this.type }); } onMouseDown(a) { a.stopPropagation(); a.preventDefault(); } update(a = 0) { this.element.classList[a > 0 ? "remove" : "add"]("is-empty"); this.element.style["background-image"] = a > 0 ? "url('http://zombia.io/asset/images/Ui/Icons/Tools/" + this.type + "Tier" + a + ".svg')" : ""; } } class Oi extends d { constructor(a) { let b = document.createElement("div"); b.className = "hud-grid"; b.setAttribute("grid-type", a); super(b); this.type = a; this.element.addEventListener("mousedown", this.onMouseDown); this.element.addEventListener("mouseup", this.onMouseUp); } onMouseDown(a) { a.stopPropagation(); } onMouseUp(a) { a.stopPropagation(); } } class Pi extends d { constructor(a) { const b = document.createElement("div"); b.className = "hud-shop-item"; b.setAttribute("item-type", a.class); super(b); this.disabled = false; this.toolData = a; if (a.name == "ZombieShield") { this.element.innerHTML = "\n <img class=\"hud-shop-info-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg\">\n <strong style=\"font-size:20px;margin-left: 5px;\">" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-shop-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-shop-item-cost\"></div>\n "; } else { this.element.innerHTML = "\n <img class=\"hud-shop-info-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/" + a.class + "/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <strong style=\"font-size:20px;margin-left: 5px;\">" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-shop-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-shop-item-cost\"></div>\n "; } this.tierElem = this.element.querySelector(".hud-shop-item-tier"); this.previewElem = this.element.querySelector(".hud-shop-info-preview"); this.costElem = this.element.querySelector(".hud-shop-item-cost"); this.tier = 0; this.element.addEventListener("click", this.onClick.bind(this)); this.element.addEventListener("mousedown", this.onMouseDown); this.element.addEventListener("mouseenter", () => { Jj.ui.components.uiMenuGridShop.shopInfo.setTargetItem(this.toolData, this.tier); }); this.element.addEventListener("mouseleave", () => { Jj.ui.components.uiMenuGridShop.shopInfo.setTargetItem(null); }); this.update(); } init() { Jj.eventEmitter.on("SetToolRpcReceived", a => { for (let b of a) { if (b.toolName == this.toolData.name) { this.update(b.toolTier); } } }); } onClick() { if (!this.disabled) { Jj.network.sendRpc({ name: "BuyTool", toolName: this.toolData.name }); } } onMouseDown(a) { a.stopPropagation(); a.preventDefault(); } update(a = 0) { this.tier = a; const b = a >= (this.toolData.tiers || 1); const c = b ? a : a + 1; this.element.classList[b ? "add" : "remove"]("is-disabled"); this.disabled = b; if (this.toolData.name == "ZombieShield") { this.previewElem.src = "http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg"; } else { this.previewElem.src = "http://zombia.io/asset/images/Ui/Icons/" + this.toolData.class + "/" + this.toolData.name + (this.toolData.tiers > 0 ? "Tier" + (a == 0 ? 1 : c) : "") + ".svg"; } if (this.toolData.tiers !== undefined) { this.tierElem.textContent = a == 0 ? "Not Purchased" : "Tier " + c; } else { this.tierElem.textContent = ""; } this.costElem.innerHTML = "<small>" + i.createResourceCostString(this.toolData, c, 1, false).elem.split(", ").join("<br>") + "</small>"; } } class Qi extends d { constructor(a) { const b = document.createElement("div"); b.className = "hud-ui-potion"; b.setAttribute("potion-type", a.name); document.getElementById("hud-bottom").appendChild(b); super(b); this.potionName = a.name; this.element.addEventListener("mouseup", this.onMouseUp.bind(this)); this.element.addEventListener("mousedown", a => { a.stopPropagation(); }); this.element.addEventListener("mouseenter", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element); }); this.element.addEventListener("mouseleave", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.hide(); }); } onMouseUp(a) { a.stopPropagation(); if (this.potionName === "HealthPotion") { Jj.network.sendRpc({ name: "BuyTool", toolName: "HealthPotion" }); } } } class Ri extends d { constructor() { super(document.getElementById("hud-shop-info")); this.targetItem = null; this.statsElem = null; Jj.eventEmitter.on("SetToolRpcReceived", a => { if (this.targetItem !== null) { for (let b of a) { if (b.toolName == this.targetItem.name) { this.updateItemStats(b.toolTier); } } } }); } setTargetItem(a, b) { this.targetItem = a; if (a !== null) { this.element.innerHTML = "\n <strong id=\"hud-shop-info-name\">" + a.name.split(/(?=[A-Z])/).join(" ") + " <small class=\"hud-shop-info-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small></strong>\n <img class=\"hud-shop-info-preview shop-info\" src=\"http://zombia.io/asset/images/Ui/Icons/" + a.class + "/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <div class=\"hud-shop-item-description\">" + (a.description || "") + "</div>\n <div class=\"hud-shop-item-stats\"></div>\n "; this.statsElem = this.element.querySelector(".hud-shop-item-stats"); this.updateItemStats(b); } else { this.element.innerHTML = ""; } } updateItemStats(a) { const b = a >= (this.targetItem.tiers || 1); this.element.classList[b ? "add" : "remove"]("is-disabled"); this.disabled = b; const c = { Range: "towerRadius", "Damage to zombies": "damageToZombies", "Damage to buildings": "damageToBuildings", "Damage to players": "damageToPlayers", "Harvest Amount": "harvestAmount", "Firing Rate": "msBetweenFires", "Health Regen/sec": "healthRegenPerSecond", "Max Health": "health" }; let d = ""; const e = b ? a : a + 1; let f = ""; for (const b in c) { if (this.targetItem[c[b]]) { d += "<p>" + b + ": <strong class=\"hud-stats-current\">" + (this.targetItem[c[b]][a - 1] || "—") + "</strong></p>"; f += "<p>" + b + ": <strong class=\"hud-stats-next\">" + this.targetItem[c[b]][e - 1] + "</strong></p>"; } } this.statsElem.innerHTML = d !== "" && f !== "" ? "<div class=\"hud-stats-current hud-stats-values\">" + d + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + f + "</div>" : ""; if (this.targetItem.name == "ZombieShield") { document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg"; document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = a == 0 ? "Not Purchased" : "Tier " + e; } else if (a == 0) { document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = "Tier 1"; document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/" + this.targetItem.class + "/" + this.targetItem.name + "Tier1.svg"; } else { document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = "Tier " + e; document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/" + this.targetItem.class + "/" + this.targetItem.name + (this.targetItem.tiers > 0 ? "Tier" + e : "") + ".svg"; } } } class Si extends Oi { constructor() { super("Shop"); Jj.ui.components.uiMenuGridShop = this; this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Shop</h3>\n <div class=\"hud-shop-tabs\">\n <a class=\"hud-shop-tabs-link\">Tools</a>\n <a class=\"hud-shop-tabs-link\">Armour</a>\n <a class=\"hud-shop-tabs-link\">Hats</a>\n <a class=\"hud-shop-tabs-link\">Utility</a>\n </div>\n <div class=\"hud-shop-items\">\n <div id=\"hud-shop-grid\" class=\"hud-shop-grid\"></div>\n <div id=\"hud-shop-info\" class=\"hud-shop-info\"></div>\n </div>\n "; this.init(); } init() { const a = this.element.querySelectorAll(".hud-shop-tabs-link"); for (let b of a) { b.addEventListener("mouseup", this.setTab.bind(this, b)); } Jj.eventEmitter.on("ToolDataReceived", () => { document.getElementById("hud-shop-grid").innerHTML = "<h1 id='hud-shop-coming-soon' style='display:none;'>Coming soon</h1>"; for (const a of document.querySelectorAll(".hud-ui-potion")) { a.remove(); } const b = Jj.ui.toolData; for (let a in b) { const c = b[a]; if (!c.canPurchase) { continue; } let d; if (c.class == "Potion") { d = new Qi(c); } else { d = new Pi(c); document.getElementById("hud-shop-grid").appendChild(d.element); } d.init?.(); } this.setTab(a[0]); }); setTimeout(() => { this.shopInfo = new Ri(); }, 0); } setTab(a) { const b = this.element.querySelectorAll(".hud-shop-tabs-link"); a.classList.add("is-active"); for (let c of b) { if (c.textContent !== a.textContent) { c.classList.remove("is-active"); } } const c = this.element.querySelectorAll(".hud-shop-item"); let d = false; for (let b of c) { if (b.getAttribute("item-type") == a.textContent) { b.style.display = "block"; d = true; } else { b.style.display = "none"; } } document.getElementById("hud-shop-coming-soon").style.display = d ? "none" : "block"; } } class Ti extends Oi { constructor() { super("Settings"); Jj.ui.components.uiMenuGridSettings = this; this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <div class=\"hud-grid-settings-controls\">\n <h1 style=\"margin: 0;\">Controls</h1>\n <span style=\"font-size: 24px;\">Buildings</span><br>\n <span>Move your mouse to the bottom of the screen to reveal the buildings</span><br><br>\n <span style=\"font-size: 24px;\">Hotkeys</span><br>\n <span>\n Scroll your mouse wheel to zoom in/out<br>\n [Enter] - Toggle the chat<br>\n [T] - Sell selected building - Hold [Shift] to sell all of the same type and tier<br>\n [E] - Upgrade selected building - Hold [Shift] to upgrade all of the same type and tier<br>\n [F6] - Toggle debugging statistics<br>\n [B] - Toggle the shop menu<br>\n [P] - Toggle the party menu<br>\n [0-9] - Selects a building from the building bar<br>\n [G] - Lock/Unlock inputs\n </span>\n </div>\n <div class=\"hud-grid-settings-divider\"></div>\n <div class=\"hud-grid-settings-options\" style=\"display:flex;flex-direction: column; padding-left: 5px;\">\n <h1 style=\"margin: 0;\">Settings</h1>\n <input type=\"checkbox\" class=\"hud-settings-day-night-opacity dark\" id=\"hud-settings-day-night-opacity\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-day-night-opacity\">Disable night's screen darkening</label>\n <input type=\"checkbox\" class=\"hud-settings-language-filter dark\" id=\"hud-settings-language-filter\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-language-filter\">Enable language filter</label>\n <input type=\"checkbox\" class=\"hud-settings-building-bar dark\" id=\"hud-settings-building-bar\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-building-bar\">Keep building bar visible</label>\n <input type=\"checkbox\" class=\"hud-settings-special-effects dark\" id=\"hud-settings-special-effects\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-special-effects\">Disable special effects</label>\n <input type=\"checkbox\" class=\"hud-settings-delete-chat dark\" id=\"hud-settings-delete-chat\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-delete-chat\">Delete old chat messages</label>\n </div>\n <div class=\"hud-grid-settings-socials\">\n <p><a target=\"_blank\" href=\"https://discord.gg/4cxREnV4WE\">Discord Server</a></p>\n <p>Programmed by <a target=\"_blank\" href=\"https://www.youtube.com/channel/UCrVyJ-ivzuBDETc7y0MZf9A\"><b>Apex</b></a></p>\n <p>Designed by <a target=\"_blank\" href=\"https://www.youtube.com/c/XperienceYT\"><b>Xperience</b></a></p>\n </div>\n "; this.element.querySelector(".hud-settings-language-filter").addEventListener("change", () => { window.storage.setItem("settings-language-filter", this.element.querySelector(".hud-settings-language-filter").checked); Jj.network.languageFilterEnabled = this.element.querySelector(".hud-settings-language-filter").checked; }); this.element.querySelector(".hud-settings-building-bar").addEventListener("change", () => { let a = this.element.querySelector(".hud-settings-building-bar").checked; window.storage.setItem("settings-building-bar", a); Jj.ui.components.uiBuildingBar.element.classList[a ? "add" : "remove"]("remain-visible"); if (a == 0 && window.storage.getItem("walkthrough_BuildingBar") == "false") { Jj.ui.components.uiWalkthrough.showBuildingBarIndicator(); } else if (a == 1) { Jj.ui.components.uiWalkthrough.hideBuildingBarIndicator(); } }); this.element.querySelector(".hud-settings-special-effects").addEventListener("change", () => { window.storage.setItem("settings-special-effects", this.element.querySelector(".hud-settings-special-effects").checked); }); this.element.querySelector(".hud-settings-delete-chat").addEventListener("change", () => { const a = this.element.querySelector(".hud-settings-delete-chat").checked; window.storage.setItem("settings-delete-chat", a); if (a == 1) { while (document.getElementsByClassName("hud-chat-message").length > 100) { document.getElementsByClassName("hud-chat-message")[0].remove(); } } }); if (window.storage.getItem("settings-language-filter") == null) { window.storage.setItem("settings-language-filter", "true"); } this.element.querySelector(".hud-settings-language-filter").checked = window.storage.getItem("settings-language-filter") === "true"; if (window.storage.getItem("settings-building-bar") == null) { window.storage.setItem("settings-building-bar", "true"); } this.element.querySelector(".hud-settings-building-bar").checked = window.storage.getItem("settings-building-bar") === "true"; this.element.querySelector(".hud-settings-special-effects").checked = window.storage.getItem("settings-special-effects") === "true"; this.element.querySelector(".hud-settings-delete-chat").checked = window.storage.getItem("settings-delete-chat") === "true"; Jj.network.languageFilterEnabled = this.element.querySelector(".hud-settings-language-filter").checked; Jj.ui.components.uiBuildingBar.element.classList[this.element.querySelector(".hud-settings-building-bar").checked ? "add" : "remove"]("remain-visible"); } } class Ui extends d { constructor(a) { const b = document.createElement("div"); b.className = "hud-spells-item"; super(b); this.disabled = false; this.spellData = a; this.element.innerHTML = "\n <img class=\"hud-spells-item-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/Spells/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <strong>" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-spells-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-spells-item-description\">" + (a.description || "") + "</div>\n <div class=\"hud-spells-item-stats\"></div>\n <div class=\"hud-spells-item-cost\"></div>\n "; this.tierElem = this.element.querySelector(".hud-spells-item-tier"); this.previewElem = this.element.querySelector(".hud-spells-item-preview"); this.statsElem = this.element.querySelector(".hud-spells-item-stats"); this.costElem = this.element.querySelector(".hud-spells-item-cost"); this.element.addEventListener("click", this.onClick.bind(this)); this.element.addEventListener("mousedown", this.onMouseDown); this.update(); } init() { Jj.eventEmitter.on("BuySpellResponseRpcReceived", a => { if (a.name == this.spellData.name) { this.disabled = true; this.element.classList.add("is-disabled"); setTimeout(() => { this.disabled = false; this.element.classList.remove("is-disabled"); }, a.cooldown); } }); Jj.eventEmitter.on("ClearActiveSpellRpcReceived", a => { if (a.name == this.spellData.name) { this.disabled = false; this.element.classList.remove("is-disabled"); } }); } onClick() { if (!this.disabled) { Jj.network.sendRpc({ name: "BuySpell", spellName: this.spellData.name }); } } onMouseDown(a) { a.stopPropagation(); a.preventDefault(); } update(a = 0) { const b = a >= (this.spellData.tiers || 1); this.element.classList[b ? "add" : "remove"]("is-disabled"); this.disabled = b; const c = {}; let d = ""; const e = b ? a : a + 1; let f = ""; for (const b in c) { if (this.spellData[c[b]]) { d += "<p>" + b + ": <strong class=\"hud-stats-current\">" + (this.spellData[c[b]][a - 1] || "—") + "</strong></p>"; f += "<p>" + b + ": <strong class=\"hud-stats-next\">" + this.spellData[c[b]][e - 1] + "</strong></p>"; } } this.statsElem.innerHTML = d !== "" && f !== "" ? "<div class=\"hud-stats-current hud-stats-values\">" + d + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + f + "</div>" : ""; this.previewElem = this.element.querySelector(".hud-spells-item-preview").src = "http://zombia.io/asset/images/Ui/Icons/Spells/" + this.spellData.name + (this.spellData.tiers > 0 ? "Tier" + e : "") + ".svg"; if (this.spellData.tiers !== undefined) { this.tierElem.textContent = "Tier " + e; } else { this.tierElem.textContent = ""; } this.costElem.innerHTML = "<small>" + i.createResourceCostString(this.spellData, e, 1, false).elem.split(", ").join("<br>") + "</small>"; } } class Vi extends Oi { constructor() { super("Spells"); Jj.ui.components.uiMenuGridSpells = this; this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Spells</h3>\n <div id=\"hud-spells-grid\" class=\"hud-spells-grid\"></div>\n "; this.init(); } init() { Jj.eventEmitter.on("SpellInfoRpcReceived", this.onSpellDataReceived.bind(this)); } onSpellDataReceived(a) { document.getElementById("hud-spells-grid").innerHTML = ""; const b = JSON.parse(a.json); for (let c in b) { const a = b[c]; const d = new Ui(a); document.getElementById("hud-spells-grid").appendChild(d.element); d.init?.(); } } } const Wi = c(6); const Xi = c(573); Wi.loadPlugin(Xi); Wi.setDefaults({ randomize: false }); class Yi extends Oi { constructor() { super("Parties"); Jj.ui.components.uiMenuGridParties = this; this.partyLeader = 0; this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Parties</h3>\n <div class=\"hud-party-tabs\">\n <a class=\"hud-party-tabs-link\">Your Party</a>\n <a class=\"hud-party-tabs-link\">Open Parties</a>\n </div>\n <div id=\"hud-party-members\" class=\"hud-party-members\"></div>\n <div id=\"hud-party-grid\" class=\"hud-party-grid\">\n <div class=\"hud-party-joining\">Requesting to join...</div>\n <button class=\"hud-party-cancel-request\">Cancel your request</button>\n <div class=\"hud-party-empty\">No parties are currently available to join.</div>\n </div>\n <div class=\"hud-party-actions\">\n <input type=\"text\" class=\"hud-party-name\" placeholder=\"Your party\"s name...\" maxlength=\"16\">\n <input type=\"text\" class=\"hud-party-key\" placeholder=\"Your party link...\">\n <a class=\"hud-party-key-randomise\">\n <a class=\"btn btn-red hud-party-leave\">Leave Party</a>\n <a class=\"btn hud-party-visibility is-private\">Private</a>\n </div>\n "; this.membersElem = this.element.querySelector(".hud-party-members"); this.memberElems = {}; this.requestedUids = {}; this.gridJoiningElem = this.element.querySelector(".hud-party-joining"); this.cancelRequestButton = this.element.querySelector(".hud-party-cancel-request"); this.cancelRequestButton.addEventListener("mouseup", () => { Jj.network.sendRpc({ name: "CancelPartyRequest" }); }); this.gridEmptyElem = this.element.querySelector(".hud-party-empty"); this.gridElem = this.element.querySelector(".hud-party-grid"); this.partyNameElem = this.element.querySelector(".hud-party-name"); this.partyNameElem.addEventListener("keydown", a => { a.stopPropagation(); }); this.partyNameElem.addEventListener("keyup", this.onPartyNameKeyUp.bind(this)); this.partyKeyElem = this.element.querySelector(".hud-party-key"); this.partyKeyElem.addEventListener("focus", () => { this.partyKeyElem.select(); }); this.partyKeyElem.addEventListener("keydown", a => { a.stopPropagation(); }); this.partyKeyElem.addEventListener("keyup", a => { a.stopPropagation(); }); this.leaveElem = this.element.querySelector(".hud-party-leave"); this.leaveElem.addEventListener("click", this.leaveParty.bind(this)); this.visibilityElem = this.element.querySelector(".hud-party-visibility"); this.visibilityElem.addEventListener("click", this.toggleVisiblity.bind(this)); this.randomiseKeyButton = this.element.querySelector(".hud-party-key-randomise"); this.randomiseKeyButton.addEventListener("click", () => { Jj.network.sendRpc({ name: "RandomisePartyKey" }); }); this.partyElems = {}; this.partyData = null; this.init(); } init() { const a = this.element.querySelectorAll(".hud-party-tabs-link"); for (let b of a) { b.addEventListener("mouseup", this.setTab.bind(this, b)); } this.setTab(a[0]); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("UpdatePartyRpcReceived", this.onPartyUpdate.bind(this)); Jj.eventEmitter.on("PartyKeyRpcReceived", this.onPartyKey.bind(this)); Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onMembersUpdated.bind(this)); Jj.eventEmitter.on("PartyRequestRpcReceived", this.onPartyRequest.bind(this)); Jj.eventEmitter.on("PartyRequestMetRpcReceived", this.onPartyRequestMet.bind(this)); Jj.eventEmitter.on("PartyRequestCancelledRpcReceived", this.onPartyRequestCancelled.bind(this)); } onEnterWorld() { this.gridJoiningElem.style.display = "none"; this.cancelRequestButton.style.display = "none"; } setTab(a) { const b = this.element.querySelectorAll(".hud-party-tabs-link"); a.classList.add("is-active"); for (let c of b) { if (c.textContent !== a.textContent) { c.classList.remove("is-active"); } } this.gridElem.style.display = a.textContent == "Your Party" ? "none" : "block"; this.membersElem.style.display = a.textContent == "Your Party" ? "block" : "none"; } onPartyUpdate(a) { let b = {}; for (let c in a) { b[a[c].partyId] = a[c]; } this.partyData = b; this.update(); if (!a.find(e => e.partyId == game.ui.playerTick?.partyId)?.isOpen && game.ui.playerTick?.uid == game.ui.playerPartyLeader) game.network.sendPacket(9, { response: { name: 'TogglePartyVisibility' } }) } update() { for (let a in this.partyData) { if (!(a in this.partyElems) && this.partyData[a].isOpen !== false) { for (let a in this.partyElems) { this.partyElems[a].remove(); delete this.partyElems[a]; } } } const a = {}; for (let b in this.partyElems) { a[b] = true; } for (let b in this.partyData) { if (b == Jj.ui.getPlayerTick()?.partyId && this.partyData[b].isOpen === false) { continue; } delete a[b]; const c = this.partyData[b]; let d = this.partyElems[b]; if (!this.partyElems[b]) { d = document.createElement("div"); d.className = "hud-party-link"; this.gridElem.appendChild(d); this.partyElems[b] = d; d.addEventListener("click", this.onPartyClick.bind(this, c.partyId)); } if (Jj.ui.getPlayerTick()?.partyId == b) { d.classList.add("is-active"); d.classList.remove("is-disabled"); } else if (c.memberCount >= c.memberLimit) { d.classList.remove("is-active"); d.classList.add("is-disabled"); } else { d.classList.remove("is-active"); d.classList.remove("is-disabled"); } d.innerHTML = "\n <strong id=\"name\"></strong>\n <span>" + c.memberCount + "/" + c.memberLimit + "</span>"; d.querySelector("#name").appendChild(document.createTextNode(Jj.network.languageFilterEnabled ? Wi(c.partyName) : c.partyName)); } for (let b in a) { if (this.partyElems[b]) { this.partyElems[b].remove(); delete this.partyElems[b]; } } this.gridEmptyElem.style.display = Object.keys(this.partyElems || {}).length > 0 ? "none" : "block"; const b = this.partyData?.[Jj.ui.getPlayerTick()?.partyId]; if (!b) { return; } this.partyKeyElem.removeAttribute("disabled"); if (document.activeElement !== this.partyNameElem) { this.partyNameElem.value = b.partyName; } const c = Jj.renderer.world.localPlayer === this.partyLeader; this.visibilityElem.classList[c ? "remove" : "add"]("is-disabled"); if (c) { this.partyNameElem.removeAttribute("disabled"); } else { this.partyNameElem.setAttribute("disabled", "true"); } this.visibilityElem.classList[b.isOpen ? "remove" : "add"]("is-private"); this.visibilityElem.innerText = b.isOpen ? "Public" : "Private"; } onPartyKey(a) { Jj.ui.partyKey = a.partyKey; this.partyKeyElem.value = window.location.protocol + "//" + document.location.hostname + "/#/" + Jj.network.options.serverData.id + "/" + a.partyKey; this.update(); } onPartyNameKeyUp(a) { Jj.network.sendRpc({ name: "SetPartyName", partyName: this.partyNameElem.value }); a.stopPropagation(); } onMembersUpdated(a) { this.partyLeader = a.find(a => a.isLeader === true).uid; const b = Jj.renderer.world.localPlayer === this.partyLeader; Jj.ui.playerPartyLeader = this.partyLeader; for (let b in this.memberElems) { this.memberElems[b].remove(); delete this.memberElems[b]; } if (a.length <= 1) { this.leaveElem.classList.add("is-disabled"); } else { this.leaveElem.classList.remove("is-disabled"); } for (let c in a) { const d = document.createElement("div"); const e = a[c]; d.className = "hud-member-link"; d.innerHTML = "\n <strong id=\"name\"></strong>\n <small>" + (e.uid == this.partyLeader ? "Leader" : "Member") + "</small>\n <div class=\"hud-member-actions\">\n <a class=\"hud-member-can-place btn " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + " " + (e.canPlace ? " is-active" : "") + "\">\n <span class=\"hud-party-permissions-tick\">✓</span> Can place\n </a>\n <a class=\"hud-member-can-sell btn " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + " " + (e.canSell ? " is-active" : "") + "\">\n <span class=\"hud-party-permissions-tick\">✓</span> Can sell\n </a>\n <a class=\"hud-member-kick btn btn-red " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + "\">Kick</a>\n </div>\n "; d.querySelector("#name").appendChild(document.createTextNode(Jj.network.languageFilterEnabled ? Wi(e.name) : e.name)); this.membersElem.appendChild(d); this.memberElems[e.uid] = d; if (b && e.uid !== this.partyLeader) { d.querySelector(".hud-member-kick").addEventListener("click", this.onPartyMemberKick.bind(this, e)); d.querySelector(".hud-member-can-place").addEventListener("click", this.onPartyMemberPermissionToggle.bind(this, e.uid, "Place")); d.querySelector(".hud-member-can-sell").addEventListener("click", this.onPartyMemberPermissionToggle.bind(this, e.uid, "Sell")); } } this.randomiseKeyButton.classList[b ? "remove" : "add"]("locked"); } leaveParty() { Jj.network.sendRpc({ name: "LeaveParty" }); } toggleVisiblity() { Jj.network.sendRpc({ name: "TogglePartyVisibility" }); } onPartyClick(a) { if (a != Jj.ui.getPlayerTick()?.partyId) { if (Jj.ui.factory !== null) { Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to abandon your base?", 10000, () => { this.requestParty(a); }); } else { this.requestParty(a); } } } requestParty(a) { if (!this.partyElems[a].classList.contains("is-disabled")) { this.gridJoiningElem.style.display = "block"; this.cancelRequestButton.style.display = "block"; this.gridElem.classList.add("is-disabled"); Jj.network.sendRpc({ name: "JoinParty", partyId: a }); } } onPartyMemberKick(a) { Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to kick <b>" + a.name + "</b> from your party?", 10000, () => { Jj.network.sendRpc({ name: "KickMember", uid: parseInt(a.uid) }); }); } onPartyMemberPermissionToggle(a, b) { Jj.network.sendRpc({ name: "TogglePartyPermission", permission: b, uid: parseInt(a) }); } onPartyRequest(a) { this.requestedUids[a.uid] = Jj.ui.components.uiPopupOverlay.showConfirmation("<b>" + a.name + "</b> has requested to join your party.", 30000, () => { Jj.network.sendRpc({ name: "PartyRequestResponse", accepted: true, uid: parseInt(a.uid) }); }, () => { Jj.network.sendRpc({ name: "PartyRequestResponse", accepted: false, uid: parseInt(a.uid) }); }); for (let i in sockets) { if (sockets[i].myPlayer.uid == a.uid) { game.network.sendPacket(9, { response: { name: 'PartyRequestResponse', accepted: true, uid: a.uid } }); Array.from(document.getElementsByClassName("hud-popup-confirmation hud-popup-confirmation is-visible")).forEach(e => e.remove()) //removes confirmation divs } } } onPartyRequestMet() { this.gridJoiningElem.style.display = "none"; this.cancelRequestButton.style.display = "none"; this.gridElem.classList.remove("is-disabled"); } onPartyRequestCancelled(a) { Jj.ui.components.uiPopupOverlay.removePopup(this.requestedUids[a.uid]); delete this.requestedUids[a.uid]; } } class script extends Oi { constructor() { super("Menu"); this.element.innerHTML = `\n <div class=\"hud-grid-exit\"></div>\n <h3>Script</h3>\n`; } } class Zi extends d { constructor(a) { let b; let c = document.createElement("div"); c.className = "hud-icon"; c.setAttribute("icon-type", a); super(c); this.type = a; this.visible = false; this.element.addEventListener("click", this.onClick.bind(this)); this.element.addEventListener("mousedown", this.onMouseClick.bind(this)); this.element.addEventListener("mouseup", this.onMouseClick.bind(this)); switch (this.type) { case "Shop": this.menuGrid = new Si(); b = 66; break; case "Settings": this.menuGrid = new Ti(); break; case "Spells": this.menuGrid = new Vi(); break; case "Parties": b = 80; this.menuGrid = new Yi(); break; case "Menu": this.menuGrid = new script(); } document.body.appendChild(this.menuGrid.element); this.menuGrid.element.querySelector(".hud-grid-exit").addEventListener("click", () => { this.hide(); }); if (b !== undefined) { Jj.eventEmitter.on(b + "Up", this.onClick.bind(this)); } Jj.eventEmitter.on("27Up", this.hide.bind(this)); } onClick(a) { if (Jj.network.connected === true && Jj.ui.playerTick?.health > 0) { for (let a in Jj.ui.components.uiTopBar.menuIcons) { if (a == this.type) { if (this.visible) { this.hide(); } else { this.show(); Jj.ui.components.uiPlacementOverlay.cancelPlacing(); Jj.ui.components.uiBuildingOverlay.stopWatching(); } } else { Jj.ui.components.uiTopBar.menuIcons[a].hide(); } } } if (a) { a.stopPropagation(); a.preventDefault(); } } show() { this.visible = true; this.menuGrid.show(); } hide() { this.visible = false; this.menuGrid.hide(); } onMouseClick(a) { a.stopPropagation(); a.preventDefault(); } } class $i extends d { constructor() { let a = document.createElement("div"); a.className = "hud-top-bar"; a.innerHTML = "\n <div id=\"hud-top-bar-left\" class=\"hud-top-bar-left\"></div>\n <div id=\"hud-top-bar-tools\" class=\"hud-top-bar-tools\"></div>\n <div id=\"hud-top-bar-right\" class=\"hud-top-bar-right\"></div>\n "; document.getElementById("hud-top").appendChild(a); super(a); this.tools = {}; } init() { this.menuIcons = {}; for (const a of ["Shop", "Settings"]) { const b = new Zi(a); document.getElementById("hud-top-bar-left").appendChild(b.element); this.menuIcons[a] = b; } for (const a of ["Spells", "Parties", "Menu"]) { const b = new Zi(a); document.getElementById("hud-top-bar-right").appendChild(b.element); this.menuIcons[a] = b; } for (let a in this.menuIcons) { this.menuIcons[a].element.addEventListener("mouseenter", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.menuIcons[a].element); }); this.menuIcons[a].element.addEventListener("mouseleave", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.hide(); }); } Jj.eventEmitter.on("ToolDataReceived", this.onToolDataReceived.bind(this)); Jj.eventEmitter.on("81Up", this.onToggleWeapon.bind(this)); Jj.eventEmitter.on("SetToolRpcReceived", a => { for (const b of a) { if (this.tools[b.toolName] !== undefined) { this.tools[b.toolName] = b.toolTier > 0; } } }); } onToolDataReceived() { this.tools = {}; const a = Jj.ui.toolData; const b = document.getElementById("hud-top-bar-tools"); b.innerHTML = ""; for (let c in a) { const d = a[c]; if (d.class !== "Tools") { continue; } this.tools[d.name] = false; const e = new Ni(d.name); b.appendChild(e.element); e.init(); } } onToggleWeapon() { const a = []; for (let b in this.tools) { if (this.tools[b] === true) { a.push(b); } } let b = a[0]; let c = false; for (let d of a) { if (c) { b = d; break; } if (d == Jj.ui.playerTick.weaponName) { c = true; } } if (b !== Jj.ui.playerTick.weaponName) { Jj.network.sendRpc({ name: "EquipTool", toolName: b }); } } } class _i extends d { constructor() { const a = document.createElement("div"); a.className = "hud-resources"; a.innerHTML = "\n <div class=\"hud-resources-resource hud-resources-wood\" id=\"hud-resources-wood\"></div>\n <div class=\"hud-resources-resource hud-resources-stone\" id=\"hud-resources-stone\"></div>\n <div class=\"hud-resources-resource hud-resources-gold\" id=\"hud-resources-gold\"></div>\n <div class=\"hud-resources-resource hud-resources-tokens\" id=\"hud-resources-tokens\"></div>"; document.getElementById("hud-bottom").appendChild(a); super(a); this.woodElem = document.getElementById("hud-resources-wood"); this.stoneElem = document.getElementById("hud-resources-stone"); this.goldElem = document.getElementById("hud-resources-gold"); this.tokensElem = document.getElementById("hud-resources-tokens"); } init() { const a = ["wood", "stone", "gold", "tokens"]; for (let b of a) { Jj.eventEmitter.on(b + "CountUpdated", () => { let a = Math.round(Jj.ui.getPlayerTick()[b]); if (a >= 10000) { a = aj(a, 2); } this[b + "Elem"].innerHTML = a; }); } } } const aj = (a, b) => { const c = ["K", "M", "B", "T", "q", "Q", "s", "S", "O", "N", "D"]; b = Math.pow(10, b); for (let d = c.length - 1; d >= 0; d--) { const e = Math.pow(10, (d + 1) * 3); if (e <= a) { if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) { a = 1; d++; } a += c[d]; break; } } return a; }; class bj extends d { constructor() { let a = document.createElement("div"); a.className = "hud-popup-overlay"; document.getElementById("hud").appendChild(a); let b = document.createElement("div"); b.className = "hud-confirmation-overlay"; document.getElementById("hud").appendChild(b); super(a); this.popupElems = {}; this.popupTimers = {}; this.hintMessages = {}; this.confirmationOverlayDiv = b; this.confirmationMessages = {}; } init() { Jj.eventEmitter.on("FailureRpcReceived", this.onFailure.bind(this)); } onFailure(a) { this.showHint(a.failure, 4000); } showHint(a, b = 8000) { for (const c in this.hintMessages) { if (this.hintMessages[c] == a) { return null; } } const c = Math.round(Math.random() * 10000000); const d = document.createElement("div"); d.className = "hud-popup-message hud-popup-hint is-visible"; d.textContent = a; this.element.insertBefore(d, this.element.firstChild); this.popupElems[c] = d; this.popupTimers[c] = setTimeout(() => { this.removePopup(c); }, b); this.hintMessages[c] = a; return c; } showConfirmation(a, b = 30000, c = null, d = null) { const e = Math.round(Math.random() * 10000000); const f = document.createElement("div"); f.className = "hud-popup-confirmation hud-popup-confirmation is-visible"; f.innerHTML = "\n <span>" + a + "</span>\n <div class=\"hud-confirmation-actions\">\n <a class=\"btn btn-green hud-confirmation-accept\">✓</a>\n <a class=\"btn btn-red hud-confirmation-decline\">✗</a>\n </div>\n "; f.addEventListener("mousedown", a => a.stopPropagation()); this.confirmationOverlayDiv.appendChild(f); this.popupElems[e] = f; const g = f.querySelector(".hud-confirmation-accept"); const h = f.querySelector(".hud-confirmation-decline"); g.addEventListener("mousedown", a => a.stopPropagation()); g.addEventListener("click", a => { a.stopPropagation(); this.removePopup(e); if (c) { c(); } }); h.addEventListener("mousedown", a => a.stopPropagation()); h.addEventListener("click", a => { a.stopPropagation(); this.removePopup(e); if (d) { d(); } }); this.popupTimers[e] = setTimeout(() => { this.removePopup(e); }, b); return e; } removePopup(a) { const b = this.popupElems[a]; if (b) { if (this.popupTimers[a]) { clearInterval(this.popupTimers[a]); } delete this.popupElems[a]; delete this.popupTimers[a]; delete this.confirmationMessages[a]; delete this.hintMessages[a]; b.classList.remove("is-visible"); setTimeout(() => { b.remove(); }, 500); } } } class cj extends d { constructor() { const a = document.createElement("div"); a.className = a.id = "hud-pip-overlay"; document.getElementById("hud").appendChild(a); super(a); this.resourceGainElems = {}; this.damageElems = {}; this.lastPlayerTick = { wood: 0, stone: 0, gold: 0, tokens: 0 }; } init() { Jj.eventEmitter.on("PlayerTickUpdated", this.onPlayerTickUpdated.bind(this)); } onPlayerTickUpdated() { const a = Jj.ui.getPlayerTick(); const b = Jj.ui.getLastPlayerTick(); if (!a || !b) { return; } if (Jj.renderer.replicator.getMsSinceTick(Jj.renderer.replicator.currentTick.tick) > 500) { return; } for (let b = 0; b < a.lastPlayerDamages.length; b += 2) { this.showDamage(a.lastPlayerDamages[b], a.lastPlayerDamages[b + 1]); } const c = ["gold", "wood", "stone", "tokens"]; for (let d of c) { if (d == "gold" && a[d] > b[d]) { continue; } if (a[d] == b[d]) { continue; } const c = a[d] - b[d]; this.showResourceGain(a.uid, d, c); } } showDamage(a, b) { const c = Jj.renderer.replicator.currentTick.tick; for (let d in this.damageElems) { if (this.damageElems[d].uid == a && this.damageElems[d].value == b && this.damageElems[d].tick == c || this.damageElems[d].tick == c - 1) { return; } } const d = Math.round(Math.random() * 10000); const e = document.createElement("div"); e.className = "hud-pip-damage"; e.innerHTML = b.toLocaleString(); const f = Jj.renderer.world.entities[a]; if (!f) { return; } const g = Jj.renderer.worldToScreen(f.getPositionX(), f.getPositionY()); this.element.appendChild(e); e.style.left = g.x - e.offsetWidth / 2 + "px"; e.style.top = g.y - e.offsetHeight - 10 + "px"; this.damageElems[d] = { uid: a, value: b, tick: c, elem: e }; setTimeout(() => { e.remove(); delete this.damageElems[d].elem; }, 500); } showResourceGain(a, b, c) { if (Math.abs(c) < 0.5) { return; } c = Math.round(c); const d = Math.round(Math.random() * 10000); const e = document.createElement("div"); e.className = "hud-pip-resource-gain"; e.innerText = (c > 0 ? "+" + c.toLocaleString() : c.toLocaleString()) + " " + b; const f = Jj.renderer.world.entities[a]; if (!f) { return; } this.element.appendChild(e); const g = Jj.renderer.worldToScreen(f.getPositionX(), f.getPositionY()); e.style.left = g.x - e.offsetWidth / 2 + "px"; e.style.top = g.y - e.offsetHeight - 70 + Object.keys(this.resourceGainElems).length * 16 + "px"; this.resourceGainElems[d] = e; setTimeout(() => { e.remove(); }, 500); setTimeout(() => { delete this.resourceGainElems[d]; }, 250); } } class dj extends d { constructor() { let a = document.createElement("div"); a.className = "hud-respawn"; a.innerHTML = "\n <div class=\"hud-respawn-wrapper\">\n <div class=\"hud-respawn-main\">\n <div class=\"hud-respawn-info\">\n <h2>Oh no...</h2>\n <p class=\"hud-respawn-text\"></p>\n <button type=\"submit\" class=\"hud-respawn-btn\">Respawn</button>\n <div class=\"hud-respawn-share\">\n <a href=\"https://discord.gg/4cxREnV4WE\" target=\"_blank\" class=\"btn btn-discord\"></a>\n </div>\n </div>\n </div>\n </div>"; document.getElementById("hud").appendChild(a); super(a); this.respawnTextElem = this.element.querySelector(".hud-respawn-text"); this.element.querySelector(".hud-respawn-btn").addEventListener("mouseup", () => { Jj.network.sendRpc({ name: "Respawn" }); }); } init() { Jj.eventEmitter.on("DeadRpcReceived", this.onDead.bind(this)); Jj.eventEmitter.on("RespawnedRpcReceived", this.onRespawned.bind(this)); } onDead(a) { this.show(); let b = "a staggering"; if (a.wave <= 5) { b = "a disappointing"; } else if (a.wave <= 50) { b = "a fine"; } else if (a.wave <= 100) { b = "a decent"; } else if (a.wave <= 300) { b = "a strong"; } else if (a.wave <= 1000) { b = "an impressive"; } else if (a.wave <= 20000) { b = "a staggering"; } else if (a.wave > 20000) { b = "an amazing (I sure hope you didn't cheat)"; } switch (a.reason) { case "FactoryDied": this.respawnTextElem.innerHTML = "Your base was destroyed after " + b + " " + parseInt(a.wave)?.toLocaleString() + " waves and " + parseInt(a.score)?.toLocaleString() + " score. Totalling " + parseInt(a.partyScore).toLocaleString() + " score across your party."; break; case "KilledWithBase": this.respawnTextElem.innerHTML = "Your player got killed at wave " + parseInt(a.wave)?.toLocaleString() + " with a score of " + parseInt(a.score)?.toLocaleString() + "; but fear not! Your base remains."; break; case "Killed": this.respawnTextElem.innerHTML = "Your player got killed. Too bad you don't have a base to return to."; } Jj.ui.components.uiMenuGridParties.hide(); Jj.ui.components.uiMenuGridSettings.hide(); Jj.ui.components.uiMenuGridShop.hide(); Jj.ui.components.uiMenuGridSpells.hide(); } onRespawned() { this.hide(); } } class ej extends d { constructor() { let a = document.createElement("div"); a.className = "hud-day-night-ticker"; document.getElementById("hud-bottom").appendChild(a); super(a); this.clockCircle = document.createElement("div"); this.clockCircle.className = "hud-day-night-ticker-clock"; this.element.appendChild(this.clockCircle); this.waveElement = document.createElement("div"); this.waveElement.className = "hud-day-night-ticker-wave"; this.element.appendChild(this.waveElement); this.lastArmRotation = 0; this.announcedNight = false; } init() { Jj.eventEmitter.on("UpdateDayNightCycleRpcReceived", this.onDayNightCycleData.bind(this)); Jj.eventEmitter.on("RendererUpdated", this.onRendererUpdate.bind(this)); Jj.eventEmitter.on("waveCountUpdated", () => { this.waveElement.innerHTML = "<span>" + Jj.ui.getPlayerTick().wave.toLocaleString() + "</span>"; }); } onDayNightCycleData(a) { this.nightLength = a.nightLength; this.dayLength = a.dayLength; this.cycleLength = this.dayLength + this.nightLength; let b = this.dayLength / this.cycleLength * 360; this.clockCircle.style.background = "conic-gradient(#d6ab35ff 0deg " + b + "deg, #8473d4ff " + b + "deg 0deg)"; } onRendererUpdate() { if (this.cycleLength == null) { return; } const a = Jj.renderer.replicator.getTickIndex(); const b = this.cycleLength - a % this.cycleLength; const c = a % this.cycleLength < this.dayLength; if (c === true) { let b = this.dayLength - a % this.cycleLength; if (this.announcedNight === false && b <= this.dayLength / 5) { this.announcedNight = true; Jj.ui.components.uiAnnouncementOverlay.showAnnouncement("Night is fast approaching. Get to safety...", this.dayLength / 5 * Jj.renderer.replicator.msPerTick); } } else if (c === false) { this.announcedNight = false; } const d = b / this.cycleLength * 360; if (d < 0) { return; } const e = i.interpolateYaw(this.lastArmRotation, d); this.clockCircle.style.rotate = e + "deg"; this.lastArmRotation = e; } } class fj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-day-night-overlay"; a.id = "hud-day-night-overlay"; document.getElementById("hud").appendChild(a); super(a); } init() { Jj.eventEmitter.on("UpdateDayNightCycleRpcReceived", this.onDayNightCycleData.bind(this)); Jj.eventEmitter.on("RendererUpdated", this.update.bind(this)); } update() { if (document.getElementsByClassName("hud-settings-day-night-opacity")[0].checked) { this.element.style.opacity = "0"; return; } const a = Jj.renderer.replicator.getTickIndex(); let b = 0; let c = 0; let d = 0; if (a % this.cycleLength < this.dayLength == 1) { b = 1 - (this.dayLength - a % this.cycleLength) / this.dayLength; d = b < 0.2 ? (1 - b / 0.2) * 0.5 : b > 0.8 ? (b - 0.8) / 0.2 * 0.5 : 0; } else { b = 1; c = 1 - (this.nightLength - (a - this.dayLength) % this.cycleLength) / this.nightLength; d = c < 0.2 ? 0.5 + c / 0.2 * 0.5 : c > 0.8 ? 0.5 + (1 - (c - 0.8) / 0.2) * 0.5 : 1; } this.element.style.opacity = d.toString(); } onDayNightCycleData(a) { this.nightLength = a.nightLength; this.dayLength = a.dayLength; this.cycleLength = this.dayLength + this.nightLength; } } class gj extends d { constructor() { let a = document.createElement("div"); a.className = "hud-announcement-overlay"; document.getElementById("hud").appendChild(a); super(a); } showAnnouncement(a, b = 8000) { const c = document.createElement("div"); c.className = "hud-announcement-message"; c.style["animation-duration"] = b + "ms"; c.innerHTML = a; this.element.appendChild(c); setTimeout(() => { c.remove(); }, b); } } const hj = c(6); const ij = c(573); hj.loadPlugin(ij); hj.setDefaults({ randomize: false }); class jj extends d { constructor() { const a = document.createElement("div"); a.id = "hud-leaderboard"; a.className = "hud-leaderboard"; a.innerHTML = "\n <div class=\"hud-leaderboard-player is-header\">\n <span class=\"player-rank\">Rank</span>\n <span class=\"player-name\">Name</span>\n <span class=\"player-score\">Score</span>\n <span class=\"player-wave\">Wave</span>\n </div>\n <div class=\"hud-leaderboard-players\"></div>\n "; document.getElementById("hud-top").appendChild(a); super(a); this.playerElems = []; this.playerRankElems = []; this.playerNameElems = []; this.playerScoreElems = []; this.playerWaveElems = []; this.playerNames = {}; this.leaderboardData = []; this.playersElem = this.element.querySelector(".hud-leaderboard-players"); } init() { Jj.eventEmitter.on("UpdateLeaderboardRpcReceived", this.onLeaderboardData.bind(this)); } update() { this.playersElem.style.height = this.leaderboardData.length * 28 + "px"; setTimeout(() => { for (let a = 0; a < this.leaderboardData.length; a++) { const b = this.leaderboardData[a]; this.playerNames[b.uid] ||= b.name; if (!(a in this.playerElems)) { this.playerElems[a] = document.createElement("div"); this.playerElems[a].className = "hud-leaderboard-player"; this.playerRankElems[a] = document.createElement("span"); this.playerRankElems[a].className = "player-rank"; this.playerRankElems[a].innerHTML = "-"; this.playerNameElems[a] = document.createElement("strong"); this.playerNameElems[a].className = "player-name"; this.playerNameElems[a].innerHTML = "-"; this.playerScoreElems[a] = document.createElement("span"); this.playerScoreElems[a].className = "player-score"; this.playerScoreElems[a].innerHTML = "-"; this.playerWaveElems[a] = document.createElement("span"); this.playerWaveElems[a].className = "player-wave"; this.playerWaveElems[a].innerHTML = "-"; this.playerElems[a].appendChild(this.playerRankElems[a]); this.playerElems[a].appendChild(this.playerNameElems[a]); this.playerElems[a].appendChild(this.playerScoreElems[a]); this.playerElems[a].appendChild(this.playerWaveElems[a]); this.playersElem.appendChild(this.playerElems[a]); } if (Jj.renderer.world.localPlayer == b.uid) { this.playerElems[a].classList.add("is-active"); } else { this.playerElems[a].classList.remove("is-active"); } this.playerElems[a].style.display = "block"; this.playerRankElems[a].innerText = "#" + b.rank; this.playerNameElems[a].innerText = Jj.network.languageFilterEnabled ? hj(b.name) : b.name; this.playerScoreElems[a].innerText = parseInt(b.score).toLocaleString(); this.playerWaveElems[a].innerHTML = b.wave === 0 ? "<small>—</small>" : parseInt(b.wave).toLocaleString(); } }, 100); if (this.leaderboardData.length < this.playerElems.length) { for (let a = this.leaderboardData.length; a < this.playerElems.length; a++) { this.playerElems[a].style.display = "none"; } } } onLeaderboardData(a) { this.leaderboardData = a; this.update(); } } class kj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-party-member-indicator"; document.getElementById("hud-bottom").appendChild(a); super(a); this.memberElements = {}; } init() { Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onMembersUpdated.bind(this)); } onMembersUpdated(a) { for (let b in this.memberElements) { this.memberElements[b].remove(); delete this.memberElements[b]; } for (let b of a) { if (this.memberElements[b.uid] == null) { this.memberElements[b.uid] = document.createElement("div"); this.memberElements[b.uid].className = "member-indicator"; this.element.appendChild(this.memberElements[b.uid]); } this.memberElements[b.uid].setAttribute("data-index", a.indexOf(b)); this.memberElements[b.uid].innerHTML = "<span>" + b.name.substring(0, 2) + "</span>"; } } } class lj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-ui-armour-indicator"; a.setAttribute("item-type", "ZombieShield"); document.getElementById("hud-bottom").appendChild(a); super(a); this.element.addEventListener("mousedown", a => { a.stopPropagation(); }); this.element.addEventListener("mouseenter", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element); }); this.element.addEventListener("mouseleave", () => { Jj.ui.components.uiBuildingBar.buildingTooltip.hide(); }); this.tier = 0; } init() { Jj.eventEmitter.on("SetToolRpcReceived", a => { for (let b of a) { if (b.toolName == "ZombieShield") { if (b.toolTier > 0) { this.show(); } else { this.hide(); } this.tier = b.toolTier; } } }); Jj.eventEmitter.on("EnterWorldResponse", this.hide.bind(this)); } } class mj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-active-spells"; super(a); this.activeSpells = {}; document.getElementById("hud-right").appendChild(a); } init() { Jj.eventEmitter.on("BuySpellResponseRpcReceived", this.createActiveSpellIcon.bind(this)); Jj.eventEmitter.on("ClearActiveSpellRpcReceived", a => { this.clearActiveSpell(a.name); }); } createActiveSpellIcon(a) { const b = document.createElement("img"); b.className = "hud-active-spell"; this.element.appendChild(b); b.src = "http://zombia.io/asset/images/Ui/Icons/Spells/" + a.name + ".svg"; this.activeSpells[a.name] = b; setTimeout(() => { this.clearActiveSpell(a.name); }, a.iconCooldown); } clearActiveSpell(a) { this.activeSpells[a].remove(); } } class nj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-ui-walkthrough"; document.getElementById("hud").appendChild(a); super(a); if (window.storage.getItem("walkthrough_BuildingBar") == null) { window.storage.setItem("walkthrough_BuildingBar", "false"); } this.buildingBarIndicator = document.createElement("div"); this.buildingBarIndicator.className = "hud-ui-walkthrough building-bar"; this.buildingBarIndicator.innerHTML = "<h3>Hover to reveal buildings</h3>"; this.element.appendChild(this.buildingBarIndicator); } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorldResponse.bind(this)); } onEnterWorldResponse(a) { if (window.storage.getItem("walkthrough_BuildingBar") == "false" && window.storage.getItem("settings-building-bar") == "false") { this.showBuildingBarIndicator(); } } showBuildingBarIndicator() { this.buildingBarIndicator.style.display = "block"; } hideBuildingBarIndicator() { this.buildingBarIndicator.style.display = "none"; } } class oj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-ui-input-lock"; document.getElementById("hud").appendChild(a); super(a); this.timeVisible = 0; } toggle(a) { this.element.classList.add("visible"); let b = Date.now(); this.timeVisible = b; setTimeout(() => { if (b == this.timeVisible) { this.element.classList.remove("visible"); } }, 3000); this.element.classList[a ? "add" : "remove"]("enabled"); } } class pj extends d { constructor() { super(document.getElementById("hud")); this.components = {}; this.components.uiIntro = new e(); this.components.uiIntroLeaderboard = new f(); this.components.uiReconnection = new g(); this.components.uiMap = new Ji(); this.components.uiBuildingBar = new k(); this.components.uiChat = new Mi(); this.components.uiTopBar = new $i(); this.components.uiResources = new _i(); this.components.uiPlacementOverlay = new Hi(); this.components.uiBuildingOverlay = new Ii(); this.components.uiPopupOverlay = new bj(); this.components.uiPipOverlay = new cj(); this.components.uiRespawn = new dj(); this.components.uiDayNightTicker = new ej(); this.components.uiDayNightOverlay = new fj(); this.components.uiAnnouncementOverlay = new gj(); this.components.uiLeaderboard = new jj(); this.components.uiPartyMemberIndicator = new kj(); this.components.uiArmourIndicator = new lj(); this.components.uiActiveSpells = new mj(); this.components.uiWalkthrough = new nj(); this.components.uiInputLock = new oj(); this.hasInitialised = false; this.playerTick = null; this.lastPlayerTick = null; this.factory = null; this.buildings = {}; this.buildingData = null; this.mousePosition = { x: 0, y: 0 }; this.playerPartyMembers = []; this.playerPartyLeader = false; this.playerPartyCanSell = false; this.playerPartyCanPlace = false; } init() { if (!this.hasInitialised) { this.hasInitialised = true; for (let a in this.components) { if (this.components[a].init) { this.components[a].init(); } } Jj.eventEmitter.on("SocketOpened", this.onSocketOpened.bind(this)); Jj.eventEmitter.on("SocketClosed", this.onSocketClosed.bind(this)); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("BuildingInfoRpcReceived", this.onBuildingDataReceived.bind(this)); Jj.eventEmitter.on("ToolInfoRpcReceived", this.onItemDataReceived.bind(this)); Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onPartyInfoUpdate.bind(this)); Jj.eventEmitter.on("mouseMoved", this.onMouseMoved.bind(this)); Jj.eventEmitter.on("mouseUp", this.onMouseUp.bind(this)); Jj.eventEmitter.on("mouseDown", this.onMouseDown.bind(this)); Jj.eventEmitter.on("rightMouseUp", this.onRightMouseUp.bind(this)); Jj.eventEmitter.on("PartyBuildingRpcReceived", this.onPartyBuildingUpdate.bind(this)); window.addEventListener("beforeunload", this.onBeforeUnload); window.addEventListener("keydown", a => { if (a.code == "Space" && a.target == document.body) { a.preventDefault(); } }); } } onEnterWorld() { this.factory = null; this.playerTick = null; this.buildings = {}; } onBuildingDataReceived(a) { this.buildingData = JSON.parse(a.json); for (const b in this.buildingData) { this.buildingData[b].built = 0; } Jj.eventEmitter.emit("BuildingDataReceived"); } onItemDataReceived(a) { this.toolData = JSON.parse(a.json); Jj.eventEmitter.emit("ToolDataReceived"); } onPartyInfoUpdate(a) { const b = a.length; const c = Jj.renderer.world.getLocalPlayer(); this.playerPartyMembers = a; this.playerPartyCanSell = a.find(a => a.uid === c).canSell === true; this.playerPartyCanPlace = a.find(a => a.uid === c).canPlace === true; Jj.eventEmitter.emit("PartyMembersUpdated", a); for (const c in this.buildingData) { const a = this.buildingData[c]; a.limit = a.limitPerMember * (a.limitStatic === false ? b : 1); } Jj.eventEmitter.emit("BuildingDataUpdated"); } onMouseMoved({ event: a }) { this.mousePosition = { x: a.clientX, y: a.clientY }; this.components.uiPlacementOverlay.update(); if (this.components.uiPlacementOverlay.isActive() && Jj.network.inputPacketManager.mouseDown === true) { this.components.uiPlacementOverlay.placeBuilding(); } } onMouseDown({ event: a }) { if (this.components.uiPlacementOverlay.isActive()) { this.components.uiPlacementOverlay.placeBuilding(); } for (let b in this.components.uiTopBar.menuIcons) { this.components.uiTopBar.menuIcons[b].hide(); } } onMouseUp({ event: a }) { if (this.components.uiReconnection.isVisible() || this.components.uiRespawn.isVisible()) { return; } if (this.components.uiPlacementOverlay.isActive()) { return; } for (let b in this.components.uiTopBar.menuIcons) { this.components.uiTopBar.menuIcons[b].hide(); } if (this.playerTick?.weaponName !== "Pickaxe") { return this.components.uiBuildingOverlay.stopWatching(); } const b = Jj.renderer.world; const c = Jj.renderer.screenToWorld(this.mousePosition.x, this.mousePosition.y); const d = b.entityGrid.getCellIndices(c.x, c.y, { width: 1, height: 1 }); const e = d.length > 0 && d[0]; if (e === false) { return; } const f = b.entityGrid.getEntitiesInCell(e); const g = this.components.uiBuildingOverlay; for (const c in f) { const a = parseInt(c); if (a == g.buildingUid) { return g.stopWatching(); } const d = b.entities[a].getTargetTick(); for (const b in this.buildingData) { if (b == d.model) { g.stopWatching(); g.startWatching(a); return; } } } g.stopWatching(); } onRightMouseUp({ event: a }) { this.components.uiPlacementOverlay.cancelPlacing(); this.components.uiBuildingOverlay.stopWatching(); } onSocketOpened() { this.components.uiReconnection.hide(); } onSocketClosed() { this.components.uiMenuGridParties.hide(); this.components.uiMenuGridSettings.hide(); this.components.uiMenuGridShop.hide(); this.components.uiMenuGridSpells.hide(); this.components.uiRespawn.hide(); this.components.uiReconnection.show(); } onBeforeUnload(a) { if (Jj.getInWorld() || this.playerTick !== undefined || this.playerTick?.dead === 1) { a.returnValue = "Leaving the page will cause you to lose all progress. Are you sure?"; return a.returnValue; } } getFactory() { return this.factory; } setPlayerTick(a) { this.lastPlayerTick = this.playerTick; this.playerTick = a; for (let b of ["wood", "stone", "gold", "tokens", "wave"]) { if (this.lastPlayerTick !== null) { if (this.lastPlayerTick[b] !== this.playerTick[b]) { Jj.eventEmitter.emit(b + "CountUpdated"); } } else { Jj.eventEmitter.emit(b + "CountUpdated"); } } Jj.eventEmitter.emit("PlayerTickUpdated", a); } getPlayerTick() { return this.playerTick; } getLastPlayerTick() { return this.lastPlayerTick; } onPartyBuildingUpdate(a) { for (let b in a) { const c = a[b]; if (c.dead == 1) { delete this.buildings[c.uid]; } else { this.buildings[c.uid] = c; } if (c.type == "Factory") { this.factory = c.dead ? null : c; for (const a in this.buildingData) { this.buildingData[a].disabled = c.dead; } this.buildingData.Factory.disabled = !c.dead; } this.buildingData[c.type].built = 0; for (const a in this.buildings) { if (this.buildings[a].type == c.type) { this.buildingData[c.type].built++; } } } for (let building of a) { let { x, y, tier, type } = building; let key = `${x}, ${y}, ${type}`; if (building.dead && buildings.has(key)) { missingBuildings.set(key, buildings.get(key)) }; if (!building.dead) { if (missingBuildings.has(key)) { missingBuildings.delete(key); if (building.tier !== game.ui.factory.tier) { buildingsToUpgrade.set(building.uid, building.uid) }; }; if (buildingsToUpgrade.has(building.uid)) { if (building.tier == game.ui.factory.tier) { buildingsToUpgrade.delete(building.uid) }; }; }; }; Jj.eventEmitter.emit("BuildingsUpdated", a); } } class qj { constructor() { this.movementPackets = {}; this.lastSentYaw = 1; this.hasBoundKeys = false; this.mouseDown = false; this.shiftDown = false; this.inputsLocked = false; } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); } toggleInputLock() { if (Jj.network.connected) { this.inputsLocked = !this.inputsLocked; Jj.ui.components.uiInputLock.toggle(this.inputsLocked); } } onEnterWorld() { this.inputsLocked = false; if (!this.hasBoundKeys) { this.hasBoundKeys = true; window.addEventListener("keydown", this.onKeydown.bind(this)); window.addEventListener("keyup", this.onKeyup.bind(this)); window.addEventListener("mousedown", this.onMouseDown.bind(this)); window.addEventListener("mouseup", this.onMouseUp.bind(this)); window.addEventListener("mousemove", this.onMouseMoved.bind(this)); } } sendInputPacket(a) { if (this.inputsLocked == 1) { return; } let b = {}; for (let c of Object.keys(a)) { if (this.movementPackets[c] === undefined) { this.movementPackets[c] = a[c]; b[c] = a[c]; } else { if (this.movementPackets[c] === a[c]) { continue; } this.movementPackets[c] = a[c]; b[c] = a[c]; } } if (Object.keys(b).length > 0) { Jj.network.sendInput({ ...b }); } } onKeydown(a) { if (this.inputsLocked != 1) { switch (a.which) { case 87: case 38: this.sendInputPacket({ up: true, down: false }); break; case 65: case 37: this.sendInputPacket({ left: true, right: false }); break; case 83: case 40: this.sendInputPacket({ down: true, up: false }); break; case 68: case 39: this.sendInputPacket({ right: true, left: false }); break; case 32: this.sendInputPacket({ space: true }); for (let i in sockets) sockets[i].sendInput({ space: true }) break; case 16: this.shiftDown = true; } Jj.eventEmitter.emit(a.which + "Down"); } } onKeyup(a) { switch (a.which) { case 87: case 38: this.sendInputPacket({ up: false }); break; case 65: case 37: this.sendInputPacket({ left: false }); break; case 83: case 40: this.sendInputPacket({ down: false }); break; case 68: case 39: this.sendInputPacket({ right: false }); break; case 32: this.sendInputPacket({ space: false }); for (let i in sockets) sockets[i].sendInput({ space: false }) break; case 16: this.shiftDown = false; break; case 71: this.toggleInputLock(); } if (this.inputsLocked == 0) { Jj.eventEmitter.emit(a.which + "Up", a); } } getLastSentYaw() { return this.lastSentYaw; } onMouseMoved(a) { if (this.inputsLocked == 1) { return; } const b = Jj.renderer.screenToWorld(a.clientX, a.clientY); const c = Jj.renderer.screenToYaw(a.clientX, a.clientY); this.lastSentYaw = c; this.sendInputPacket({ mouseMoved: c, x: Math.floor(b.x), y: Math.floor(b.y) }); Jj.eventEmitter.emit("mouseMoved", { event: a }); } onMouseDown(a) { if (this.inputsLocked != 1) { if (a.which == 3 || a.button == 2) { if (this.rightMouseDown) { Jj.eventEmitter.emit("rightMouseUp", { event: a }); } this.rightMouseDown = true; Jj.eventEmitter.emit("rightMouseDown", { event: a }); return; } this.sendInputPacket({ mouseDown: true }); this.mouseDown = true; for (let i in sockets) sockets[i].sendInput({ mouseDown: 1 }) Jj.eventEmitter.emit("mouseDown", { event: a }); } } onMouseUp(a) { if (this.inputsLocked != 1) { if (a.which == 3 || a.button == 2) { this.rightMouseDown = false; Jj.eventEmitter.emit("rightMouseUp", a); return; } this.sendInputPacket({ mouseDown: false }); this.mouseDown = false; for (let i in sockets) sockets[i].sendInput({ mouseDown: 0 }) Jj.eventEmitter.emit("mouseUp", { event: a }); } } } var rj = c(779); var sj = c.n(rj); const tj = c(6); const uj = c(573); tj.loadPlugin(uj); tj.setDefaults({ randomize: false }); class vj { constructor() { this.socket = null; this.connected = false; this.connecting = false; this.ping = 0; this.pingStart = null; this.pingCompletion = null; this.entityUpdateTimeDelta = performance.now(); this.lastEntityUpdateMessageReceived = 0; this.options = { name: "", partyKey: "" }; this.rpcMap = {}; this.languageFilterEnabled = true; this.inputPacketManager = new qj(); } encode(a, b) { const c = new(sj())(100, true); c.writeUint8(a); switch (a) { case 4: this.encodeEnterWorld(c, b); break; case 3: this.encodeInput(c, b); break; case 9: this.encodeRpc(c, b); break; case 7: this.encodePing(c, b); } c.flip(); c.compact(); return c.toArrayBuffer(false); } encodeEnterWorld(a, b) { a.writeVString(b.name); a.writeVString(b.partyKey); } encodeInput(a, b) { const c = { x: "Uint16", y: "Uint16", mouseMoved: "Uint16", mouseDown: "Boolean", space: "Boolean", up: "Boolean", down: "Boolean", left: "Boolean", right: "Boolean" }; a.writeUint8(Object.keys(b).length); for (let d in b) { a.writeUint8(Object.keys(c).indexOf(d)); switch (c[d]) { case "Uint16": a.writeUint16(b[d]); break; case "Boolean": a.writeUint8(+b[d]); break; default: throw new Error("Unsupported input attribute type: " + d); } } } encodeRpc(a, b) { const c = { RandomisePartyKey: {}, CancelPartyRequest: {}, TogglePartyVisibility: {}, Respawn: {}, LeaveParty: {}, UpgradeBuilding: { uids: "ArrayUint32" }, SellBuilding: { uids: "ArrayUint32" }, SendChatMessage: { message: "String", channel: "String" }, SetPartyName: { partyName: "String" }, JoinParty: { partyId: "Uint32" }, KickMember: { uid: "Uint32" }, TogglePartyPermission: { permission: "String", uid: "Uint32" }, PartyRequest: { name: "String", uid: "Uint32" }, PartyRequestResponse: { accepted: "Boolean", uid: "Uint32" }, PlaceBuilding: { x: "Uint16", y: "Uint16", type: "String", yaw: "Uint16" }, BuyTool: { toolName: "String" }, EquipTool: { toolName: "String" }, BuySpell: { spellName: "String" }, Admin: { password: "String" }, AdminCommand: { type: "String", uid: "Uint32", reason: "String", x: "Uint32", y: "Uint32" } }; a.writeUint8(Object.keys(c).indexOf(b.response.name)); const d = c[b.response.name]; for (let c in d) { const e = d[c]; const f = b.response[c]; switch (e) { case "Uint32": a.writeUint32(f); break; case "Int32": a.writeInt32(f); break; case "Float": a.writeFloat(f); break; case "String": a.writeVString(f); break; case "Vector2": a.writeVarint32(Math.floor(f.x * 100)); a.writeVarint32(Math.floor(f.y * 100)); break; case "ArrayVector2": a.writeInt32(f.length); for (let b = 0; b < f.length; b++) { a.writeInt32(f[b].x * 100); a.writeInt32(f[b].y * 100); } break; case "ArrayUint32": a.writeInt32(f.length); for (let b = 0; b < f.length; b++) { a.writeInt32(f[b]); } break; case "Uint16": a.writeUint16(f); break; case "Uint8": a.writeUint8(f); break; case "Int16": a.writeInt16(f); break; case "Int8": a.writeInt8(f); break; case "Uint64": a.writeUint64(f); break; case "Int64": a.writeInt64(f); break; case "Double": a.writeDouble(f); break; case "Boolean": a.writeUint8(+f); break; default: throw new Error("Unsupported rpc type: " + attributeType); } } } encodePing(a, b) {} decode(a, uid) { const b = sj().wrap(a); b.littleEndian = true; const c = b.readUint8(); let d; switch (c) { case 4: d = this.decodeEnterWorld(b); break; case 0: d = this.decodeEntityUpdate(b, uid); break; case 9: d = this.decodeRpc(b); break; case 7: d = this.decodePing(b); } d.opcode = c; return d; } decodeEnterWorld(a) { if (a.readUint8()) { return { allowed: true, name: a.readVString(), uid: a.readUint16(), tickRate: a.readUint16(), x: a.readUint16(), y: a.readUint16(), minimumBuildDistanceFromWall: a.readUint8(), maxFactoryBuildDistance: a.readUint8(), maxPlayerBuildDistance: a.readUint8(), maxPlayerPartyLimit: a.readUint8() }; } else { return { allowed: false, reason: a.readVString() }; } } decodeEntityUpdate(a, uid) { const b = a.readUint32(); const c = a.readVarint32(); const d = { aimingYaw: "Uint16", dead: "Boolean", entityClass: "String", experience: "Uint16", firingTick: "Uint32", hatName: "String", health: "Uint16", hits: "ArrayUint32", targetBeams: "ArrayUint32", lastPlayerDamages: "ArrayUint32", lastPetDamage: "Uint16", lastPetDamageTarget: "Uint16", lastPetDamageTick: "Uint32", lastDamagedTick: "Uint32", maxHealth: "Uint16", gold: "Uint32", model: "String", name: "String", partyId: "Uint32", petUid: "Uint64", position: "Vector2", resourceType: "String", score: "Uint32", stone: "Uint32", tier: "Uint16", tokens: "Uint32", wave: "Uint32", weaponName: "String", weaponTier: "Uint16", wood: "Uint32", yaw: "Varint32", zombieShieldHealth: "Float", zombieShieldMaxHealth: "Float", colour: "ZombieColour", scale: "Uint8", invulnerable: "Boolean" }; const e = {}; for (let b = 0; b < c; b++) { const b = a.readUint16(); const c = a.readUint8(); if (c == 255) { e[b] = { uid: b }; const c = Object.values(this.modelProps)[a.readUint8()]; e[b].model = c.name; e[b].entityClass = c.entityClass; if (b == uid) { for (const f of c.privateProps) { const c = d[f]; this.decodeEntityAttributes(e, b, a, f, c); } } else { for (const f of c.props || c.publicProps) { const c = d[f]; this.decodeEntityAttributes(e, b, a, f, c); } } } else { e[b] = { uid: b }; for (let f = 0; f < c; f++) { const c = Object.keys(d)[a.readUint8()]; const f = d[c]; this.decodeEntityAttributes(e, b, a, c, f); } } } const f = a.readVarint32(); for (let b = 0; b < f; b++) { e[a.readUint16()] = true; } return { tick: b, entities: e, averageServerFrameTime: a.readUint16() / 100, byteSize: a.capacity() }; } decodeEntityAttributes(a, b, c, d, e) { let f = ["Grey", "Green", "Blue"]; switch (e) { case "Boolean": a[b][d] = !!c.readUint8(); break; case "Uint32": a[b][d] = c.readUint32(); break; case "Int32": a[b][d] = c.readInt32(); break; case "Float": a[b][d] = c.readFloat(); break; case "String": a[b][d] = c.readVString(); break; case "ZombieColour": a[b][d] = f[c.readUint8()]; break; case "Vector2": a[b][d] = { x: c.readUint16(), y: c.readUint16() }; break; case "ArrayVector2": { let e = c.readInt32(); let f = []; for (var g = 0; g < e; g++) { var h = c.readInt32() / 100; var i = c.readInt32() / 100; f.push({ x: h, y: i }); } a[b][d] = f; } break; case "ArrayUint32": { let e = c.readUint16(); let f = []; for (g = 0; g < e; g++) { var j = c.readUint32(); f.push(j); } a[b][d] = f; } break; case "Uint16": a[b][d] = c.readUint16(); break; case "Uint8": a[b][d] = c.readUint8(); break; case "Int16": a[b][d] = c.readInt16(); break; case "Int8": a[b][d] = c.readInt8(); break; case "Uint64": a[b][d] = c.readUint64(); break; case "Int64": a[b][d] = c.readInt64(); break; case "Double": a[b][d] = c.readDouble(); break; case "Varint32": a[b][d] = c.readVarint32(); break; default: throw new Error("Unsupported attribute type: " + d); } } decodeRpc(a) { const b = { PartyKey: { partyKey: "String" }, PartyBuilding: { isArray: true, dead: "Boolean", tier: "Uint16", type: "String", uid: "Uint32", x: "Uint32", y: "Uint32" }, PartyRequest: { name: "String", uid: "Uint32" }, PartyRequestCancelled: { uid: "Uint32" }, PartyRequestMet: {}, PartyMembersUpdated: { isArray: true, canPlace: "Boolean", canSell: "Boolean", name: "String", uid: "Uint32", isLeader: "Boolean" }, UpdateParty: { isArray: true, isOpen: "Boolean", partyId: "Uint32", partyName: "String", memberCount: "Uint8", memberLimit: "Uint8" }, UpdateLeaderboard: { isArray: true, uid: "Uint32", name: "String", score: "Uint64", wave: "Uint64", rank: "Uint8" }, UpdateDayNightCycle: { nightLength: "Uint32", dayLength: "Uint32" }, Respawned: {}, SetTool: { isArray: true, toolName: "String", toolTier: "Uint8" }, Dead: { reason: "String", wave: "Uint64", score: "Uint64", partyScore: "Uint64" }, ToolInfo: { json: "String" }, BuildingInfo: { json: "String" }, SpellInfo: { json: "String" }, BuySpellResponse: { name: "String", cooldown: "Uint32", iconCooldown: "Uint32" }, ClearActiveSpell: { name: "String" }, EntityData: { json: "String" }, ModelProps: { json: "String" }, Failure: { failure: "String" }, ReceiveChatMessage: { channel: "String", name: "String", message: "String" } }; const c = Object.keys(b)[a.readUint8()]; const d = b[c]; const e = { name: c, response: {} }; if (d.isArray === true) { const b = []; const c = a.readUint16(); for (let e = 0; e < c; e++) { let c = {}; for (let b in d) { if (b == "isArray") { continue; } let e; switch (d[b]) { case "Uint8": e = a.readUint8(); break; case "Uint16": e = a.readUint16(); break; case "Uint32": e = a.readUint32(); break; case "Uint64": e = a.readUint64(); break; case "String": e = a.readVString(); break; case "Boolean": e = !!a.readUint8(); break; default: throw new Error("Unknown RPC type: " + JSON.stringify(d)); } c[b] = e; } b.push(c); } e.response = b; } else { for (let b in d) { if (b == "isArray") { continue; } let c; switch (d[b]) { case "Uint8": c = a.readUint8(); break; case "Uint16": c = a.readUint16(); break; case "Uint32": c = a.readUint32(); break; case "Uint64": c = a.readUint64(); break; case "String": c = a.readVString(); break; case "Boolean": c = !!a.readUint8(); break; default: throw new Error("Unknown RPC type: " + JSON.stringify(d)); } e.response[b] = c; } } return e; } decodePing(a) { return {}; } init() { this.inputPacketManager.init(); Jj.eventEmitter.on("ModelPropsRpcReceived", this.onModelProps.bind(this)); } onModelProps(a) { this.modelProps = JSON.parse(a.json); } setConnectionData(a, b, c) { this.options = { name: a, partyKey: b, serverData: c }; } connect() { if (window.self === window.top && window.frameElement === null && window.parent === window) { if (!this.connected && !this.connecting) { this.connecting = true; if (this.options.serverData.country == "Local") { this.socket = new WebSocket("ws://127.0.0.1:8000"); } else { this.socket = new WebSocket("ws://server-" + this.options.serverData.id + ".zombia.io"); } this.socket.binaryType = "arraybuffer"; this.socket.addEventListener("open", this.onSocketOpen.bind(this)); this.socket.addEventListener("close", this.onSocketClose.bind(this)); this.socket.addEventListener("message", this.onSocketMessage.bind(this)); } } } onSocketOpen() { this.connected = true; this.connecting = false; this.sendEnterWorld(this.options.name, this.options.partyKey); this.sendPingIfNecessary(); Jj.eventEmitter.emit("SocketOpened"); } onSocketClose() { this.pingStart = null; this.connected = false; this.connecting = false; if (this.socketIntentionallyClosed) { this.socketIntentionallyClosed = false; } else { setTimeout(() => { this.connect(); }, 1000); } Jj.eventEmitter.emit("SocketClosed"); } onSocketMessage(a) { if (typeof a.data == "string") { return console.log(a.data); } const b = this.decode(a.data, Jj.renderer.world.localPlayer); switch (b.opcode) { case 4: this.handleEnterWorldResponse(b); break; case 0: this.handleEntityUpdate(b); break; case 9: this.handleRpc(b); break; case 7: this.handlePing(b); } } sendPacket(a, b) { if (this.connected) { this.socket.send(this.encode(a, b)); } } sendEnterWorld(a, b) { this.sendPacket(4, { name: a, partyKey: b }); } sendInput(a) { this.sendPacket(3, a); } sendRpc(a) { this.sendPacket(9, { response: a }); } sendPing() { this.sendPacket(7); } sendPingIfNecessary() { if (this.pingStart === null && (this.pingCompletion === null || new Date().getTime() - this.pingCompletion.getTime() > 5000)) { this.pingStart = new Date(); this.sendPing(); } } handleEnterWorldResponse(a) { if (a.allowed === false) { Jj.ui.components.uiIntro.setFailure(a); this.socketIntentionallyClosed = true; return; } Jj.eventEmitter.emit("EnterWorldResponse", a); } handleEntityUpdate(a) { const b = performance.now(); this.entityUpdateTimeDelta = b - this.lastEntityUpdateMessageReceived; this.lastEntityUpdateMessageReceived = b; this.sendPingIfNecessary(); Jj.eventEmitter.emit("EntityUpdate", a); if (!autoRebuilder) return; missingBuildings.forEach(building => { if (canPlace) { canPlace = false; let { x, y, type } = building; game.network.sendInput({ x: x, y: y }) game.network.sendRpc({ name: 'PlaceBuilding', x: x, y: y, type: type, yaw: 0 }) setTimeout(canPlace = true, timeoutMs) } }); buildingsToUpgrade.forEach(building => { game.network.sendRpc({ name: 'UpgradeBuilding', uids: [building] }) }) } handleRpc(a) { Jj.eventEmitter.emit(a.name + "RpcReceived", a.response); } handlePing() { const a = new Date(); this.ping = (a.getTime() - this.pingStart.getTime()) / 2; this.pingStart = null; this.pingCompletion = a; } getPing() { return this.ping; } } class wj extends ti { constructor(a) { super(); this.uid = a.uid; this.setVisible(true); this.fromTick = {}; this.targetTick = { firingTick: 0, lastDamagedTick: 0, yaw: 0 }; this.setTargetTick(a); this.fromTick = this.targetTick; this.hasRunTick = false; } reset() { this.uid = 0; this.currentModel = this.entityClass = this.fromTick = this.targetTick = null; this.setVisible(true); } isLocal() { return this.uid == Jj.renderer.world.getLocalPlayer(); } getTargetTick() { return this.targetTick; } getFromTick() { return this.fromTick; } setTargetTick(a) { this.addMissingTickFields(a, this.targetTick); this.fromTick = this.targetTick; this.targetTick = a; if (a.scale !== undefined) { this.setScale(a.scale); } if (this.fromTick.model !== this.targetTick.model) { this.refreshModel(this.targetTick.model, this.targetTick.tier); } if (this.targetTick.entityClass !== this.entityClass) { this.entityClass = this.targetTick.entityClass; } if (this.isLocal()) { Jj.ui.setPlayerTick(this.targetTick); } } tick(a, b) { if (!this.fromTick) { return; } const c = a / b; if (!this.isVisible) { this.setVisible(true); } this.setPositionX(i.lerp(this.fromTick.position?.x, this.targetTick.position?.x, c)); this.setPositionY(i.lerp(this.fromTick.position?.y, this.targetTick.position?.y, c)); if (this.currentModel?.rotationLocked !== true) { this.setRotation(i.interpolateYaw(this.fromTick.yaw, this.targetTick.yaw)); } } update(a) { if (this.currentModel) { this.currentModel.update(a, this.fromTick); } } refreshModel(a, b) { let c = a; if (!(a in Ei)) { switch (a) { case "Tree1": case "Tree2": case "Stone1": case "Stone2": c = "Resource"; break; case "MageProjectile": case "ArrowProjectile": case "CannonProjectile": case "BombProjectile": c = "Projectile"; break; default: return console.log("Model " + a + " could not be found.\n" + JSON.stringify(this.targetTick)); } } this.currentModel = new Ei[c](a, b); this.currentModel.modelName = c; this.currentModel.setParent(this); this.setNode(this.currentModel.getNode()); } addMissingTickFields(a, b) { for (var c in b) { var d = b[c]; if (!(c in a)) { a[c] = d; } } } } class xj extends ti { constructor() { super(); } } class yj { constructor(a, b) { this.cellEntities = []; this.entityMap = {}; this.cellSize = 48; this.columns = a / this.cellSize; this.rows = b / this.cellSize; this.totalCells = this.columns * this.rows; this.entityData = {}; for (let c = 0; c < this.totalCells; c++) { this.cellEntities[c] = {}; } Jj.eventEmitter.on("EntityDataRpcReceived", this.onEntityData.bind(this)); } getEntitiesInCell(a) { return a in this.cellEntities && this.cellEntities[a]; } onEntityData(a) { this.entityData = JSON.parse(a.json); } updateEntity(a) { const b = { width: 1, height: 1 }; const c = a.getTargetTick(); if (c && "model" in c) { let a = this.entityData[c.model]; if (a === undefined && c.entityClass === "Resource") { a = this.entityData[c.resourceType]; } if (a !== undefined && "gridWidth" in a && "gridHeight" in a) { b.width = a.gridWidth; b.height = a.gridHeight; } } const d = this.getCellIndices(a.getPositionX(), a.getPositionY(), b); if (!(a.uid in this.entityMap)) { return this.addEntityToCells(a.uid, d); } if (this.entityMap[a.uid].length !== d.length || !this.entityMap[a.uid].every((a, b) => a === d[b])) { this.removeEntityFromCells(a.uid, this.entityMap[a.uid]); this.addEntityToCells(a.uid, d); } } removeEntity(a) { this.removeEntityFromCells(a, this.entityMap[a]); } getCellIndices(a, b, c) { const d = []; for (let e = -c.width / 2 + 0.5; e < c.width / 2; e++) { for (let f = -c.height / 2 + 0.5; f < c.height / 2; f++) { const c = this.columns * Math.floor(b / this.cellSize + f) + Math.floor(a / this.cellSize + e); d.push(c >= 0 && c < this.totalCells && c); } } return d; } getCellCoords(a) { return { x: a % this.columns, y: Math.floor(a / this.columns) }; } removeEntityFromCells(a, b) { if (b) { if (b.length > 1) { for (const c in b) { if (b[c]) { delete this.cellEntities[b[c]][a]; } } } else if (b[0]) { delete this.cellEntities[b[0]][a]; } } delete this.entityMap[a]; } addEntityToCells(a, b) { if (b.length > 1) { for (const c in b) { if (b[c]) { this.cellEntities[b[c]][a] = true; } } } else if (b[0]) { this.cellEntities[b[0]][a] = true; } this.entityMap[a] = b; } } class zj { constructor() { this.entities = {}; this.localPlayer = null; this.hasEnteredWorld = false; } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("RendererUpdated", this.onRendererTick.bind(this)); Jj.renderer.replicator.setTargetTickUpdatedCallback(this.updateEntities.bind(this)); } onEnterWorld(a) { for (let b in this.entities) { this.removeEntity(b); } this.entities = {}; this.localPlayer = a.uid; this.worldSize = { x: parseInt(a.x), y: parseInt(a.y) }; this.entityGrid = new yj(a.x, a.y); if (!this.hasEnteredWorld) { this.hasEnteredWorld = true; this.groundEntity = new xj(); this.border = new Ai("http://zombia.io/asset/images/Map/Grass.png", true); this.grass = new Ai("http://zombia.io/asset/images/Map/Grass.png", true); this.groundEntity.addAttachment(this.border); this.groundEntity.addAttachment(this.grass); this.border.setAnchor(0, 0); this.border.setAlpha(0.5); this.grass.setAnchor(0, 0); Jj.renderer.add(this.groundEntity); } this.border.setDimensions(-1920, -1920, this.worldSize.x + 3840, this.worldSize.y + 3840); this.grass.setDimensions(0, 0, this.worldSize.x, this.worldSize.y); } onRendererTick(a) { const b = Jj.renderer.replicator.getMsInThisTick(); for (const c of Object.values(this.entities)) { c.tick(b, Jj.renderer.replicator.msPerTick); } } updateEntities(a) { for (let b in this.entities) { if (b in a) { if (a[b] !== true) { this.updateEntity(a[b], b); } else { this.updateEntity({}, b, true); } } else { this.removeEntity(b); } } for (let b in a) { if (a[b] !== true) { if (!(b in this.entities)) { this.createEntity(a[b]); } } } } createEntity(a) { let b = new wj(a); b.refreshModel(a.model, a.tier); if (a.uid === this.localPlayer) { Jj.renderer.followingObject = b; } this.entities[b.uid] = b; Jj.renderer.add(b, a.entityClass); this.entityGrid.updateEntity(this.entities[b.uid]); } removeEntity(a) { Jj.renderer.remove(this.entities[a]); delete this.entities[a]; this.entityGrid.removeEntity(parseInt(a)); } updateEntity(a, b, c = false) { if (c === true) { if (!this.entities[b].hasRunTick) { this.entities[b].hasRunTick = true; this.entities[b].setTargetTick(a, c); } } else { this.entities[b].hasRunTick = false; this.entities[b].setTargetTick(a, c); } this.entityGrid.updateEntity(this.entities[b]); } getLocalPlayer() { return this.localPlayer; } } class Aj extends ti { constructor() { super(); this.setNode(new dc()); } } class Bj extends ti { constructor() { super(); this.setNode(new dc()); } } class Cj { constructor() { this.currentTick = null; this.ticks = []; this.shiftedGameTime = 0; this.lastShiftedGameTime = 0; this.receivedFirstTick = false; this.serverTime = 0; this.msPerTick = 0; this.msInThisTick = 0; this.msElapsed = 0; this.lastMsElapsed = 0; this.startTime = null; this.startShiftedGameTime = 0; this.frameStutters = 0; this.frameTimes = []; this.interpolating = false; this.ticksDesynced = 0; this.ticksDesynced2 = 0; this.clientTimeResets = 0; this.maxExtrapolationTime = 0; this.totalExtrapolationTime = 0; this.extrapolationIncidents = 0; this.differenceInClientTime = 0; this.equalTimes = 0; this.wasRendererJustUnpaused = false; } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); Jj.eventEmitter.on("EntityUpdate", this.onEntityUpdate.bind(this)); Jj.eventEmitter.on("RendererUpdated", this.onTick.bind(this)); } setTargetTickUpdatedCallback(a) { this.tickUpdatedCallback = a; } setLatestTickUpdatedCallback(a) { this.latestTickUpdatedCallback = a; } getClientTimeResets() { return this.clientTimeResets; } getMsInThisTick() { return Math.floor(this.msInThisTick); } getMsPerTick() { return this.msPerTick; } getMsSinceTick(a, b = true) { if (b) { a += 1; } return this.shiftedGameTime - a * this.msPerTick; } getMsUntilTick(a) { return a * this.msPerTick - this.shiftedGameTime; } getServerTime() { return Math.floor(this.serverTime); } getClientTime() { return Math.floor(this.shiftedGameTime); } getRealClientTime() { if (this.startTime == null) { return 0; } var a = new Date().getTime() - this.startTime.getTime(); return Math.floor(this.startShiftedGameTime + a); } getFrameStutters() { return this.frameStutters; } getDifferenceInClientTime() { return this.differenceInClientTime; } isFpsReady() { return this.frameTimes.length >= 10; } getFps() { for (var a = 0, b = 0; b < this.frameTimes.length; b++) { a += this.frameTimes[b]; } return 1000 / (a / this.frameTimes.length); } getTickIndex() { if (this.currentTick == null) { return 0; } else { return this.currentTick.tick; } } getMaxExtrapolationTime() { return this.maxExtrapolationTime; } getExtrapolationIncidents() { return this.extrapolationIncidents; } getTotalExtrapolationTime() { return this.totalExtrapolationTime; } resetClientLag() { this.shiftedGameTime = this.getRealClientTime(); } onTick({ msElapsed: a }) { this.msElapsed += a; this.lastMsElapsed = a; this.frameTimes.push(a); if (this.frameTimes.length > 10) { this.frameTimes.shift(); } for (var b = 0, c = 1000 / 60; this.msElapsed >= c;) { this.msElapsed -= c; b++; } if (b > 1) { this.frameStutters++; } if (this.isRendererPaused()) { this.wasRendererJustUnpaused = true; this.equalTimes = 0; a = 0; } this.serverTime += a; this.shiftedGameTime += a; this.msInThisTick += a; this.updateTick(); } updateTick() { for (var a = 0; a < this.ticks.length; a++) { var b = this.ticks[a]; var c = this.msPerTick * b.tick; if (this.shiftedGameTime >= c) { this.currentTick = b; this.msInThisTick = this.shiftedGameTime - c; this.tickUpdatedCallback(b.entities); this.ticks.shift(); a--; } } if (this.currentTick != null) { var d = this.msPerTick * (this.currentTick.tick + 1); if (this.shiftedGameTime >= d) { if (this.interpolating) { this.interpolating = false; this.extrapolationIncidents++; } this.maxExtrapolationTime = Math.max(this.shiftedGameTime - d, this.maxExtrapolationTime); let a = Math.min(this.msInThisTick - this.msPerTick, this.lastMsElapsed); this.totalExtrapolationTime += a; } else { this.interpolating = true; } if (this.serverTime - this.shiftedGameTime < Jj.network.ping) { this.ticksDesynced++; this.ticksDesynced; } } } onEnterWorld(a) { if (a.allowed) { this.msPerTick = a.tickRate; this.msInThisTick = 0; this.shiftedGameTime = 0; this.serverTime = 0; this.receivedFirstTick = false; this.msElapsed = 0; this.lastMsElapsed = 0; this.startTime = null; this.startShiftedGameTime = 0; this.interpolating = false; } } checkRendererPaused() { if (this.lastShiftedGameTime == this.shiftedGameTime) { this.equalTimes++; } else { this.equalTimes = 0; } } isRendererPaused() { return this.equalTimes >= 8; } onEntityUpdate(a) { if (this.latestTickUpdatedCallback) { this.latestTickUpdatedCallback(a); } this.serverTime = a.tick * this.msPerTick + Jj.network.ping; this.ticks.push(a); if (this.receivedFirstTick) { this.checkRendererPaused(); var b = this.isRendererPaused(); var c = a.tick * this.msPerTick - 90 - this.shiftedGameTime; if (!b) { this.differenceInClientTime = c; } if (Math.abs(c) >= 40) { this.ticksDesynced2++; } else { this.ticksDesynced2 = 0; } if (this.ticksDesynced2 >= 10 || this.wasRendererJustUnpaused) { var d = this.shiftedGameTime; this.shiftedGameTime = a.tick * this.msPerTick - 90; this.msInThisTick += this.shiftedGameTime - d; if (!b && !this.wasRendererJustUnpaused) { this.clientTimeResets++; } this.ticksDesynced2 = 0; this.wasRendererJustUnpaused = false; } this.lastShiftedGameTime = this.shiftedGameTime; } else { this.receivedFirstTick = true; this.startTime = new Date(); this.shiftedGameTime = a.tick * this.msPerTick - 90; this.startShiftedGameTime = this.shiftedGameTime; this.clientTimeResets = 0; } } } class Dj { constructor() { this.world = new zj(); document.getElementsByClassName("hud-settings-antialias")[0].addEventListener("change", () => { window.storage.setItem("settings-antialias", document.getElementsByClassName("hud-settings-antialias")[0].checked); window.location.reload(); }); document.getElementsByClassName("hud-settings-antialias")[0].checked = window.storage.getItem("settings-antialias") === "true"; this.renderer = new Je({ backgroundColor: 2236962, antialias: document.getElementsByClassName("hud-settings-antialias")[0].checked }); this.renderer.view.oncontextmenu = a => a.preventDefault(); this.renderer.roundPixels = true; document.body.appendChild(this.renderer.view); this.ticker = new ic(); this.ticker.add(this.update.bind(this)); this.loader = new af(); this.loader.onProgress.add(a => { if (a.progress > 2) { Jj.ui.components.preloadingProgressBar.allowPlay(); } Jj.ui.components.preloadingProgressBar.setProgress(Math.round(a.progress)); }); this.scene = new ti(); this.entitiesLayer = new Aj(); this.uiLayer = new Aj(); this.groundLayer = new Aj(); this.buildings = new Aj(); this.scenery = new Aj(); this.zombieLayer = new Bj(); this.npcs = new Aj(); this.projectiles = new Aj(); this.players = new Aj(); this.entitiesLayer.addAttachment(this.groundLayer); this.entitiesLayer.addAttachment(this.buildings); this.entitiesLayer.addAttachment(this.scenery); this.entitiesLayer.addAttachment(this.zombieLayer); this.entitiesLayer.addAttachment(this.npcs); this.entitiesLayer.addAttachment(this.players); this.entitiesLayer.addAttachment(this.projectiles); this.scene.addAttachment(this.entitiesLayer); this.scene.addAttachment(this.uiLayer); this.renderingFilters = []; this.replicator = new Cj(); this.scale = 1; this.zoomDimension = 1.5; this.longFrames = 0; this.lastMsElapsed = 0; this.firstPerformance = null; this.followingObject = null; window.addEventListener("resize", this.onWindowResize.bind(this)); window.onwheel = a => { if (a.srcElement === this.renderer.view) { if (a.deltaY > 0) { this.zoomDimension = Math.min(Infinity, this.zoomDimension + 0.2); this.onWindowResize(); } else if (a.deltaY < 0) { this.zoomDimension = Math.max(0.5, this.zoomDimension - 0.2); this.onWindowResize(); } } }; this.onWindowResize(); } preloadAssets() { let a = [{ name: "http://zombia.io/asset/images/Map/Grass.png", url: "http://zombia.io/asset/images/Map/Grass.png" }, { name: "http://zombia.io/asset/images/Map/Stone1.svg", url: "http://zombia.io/asset/images/Map/Stone1.svg" }, { name: "http://zombia.io/asset/images/Map/Stone2.svg", url: "http://zombia.io/asset/images/Map/Stone2.svg" }, { name: "http://zombia.io/asset/images/Map/Tree1.svg", url: "http://zombia.io/asset/images/Map/Tree1.svg" }, { name: "http://zombia.io/asset/images/Map/Tree2.svg", url: "http://zombia.io/asset/images/Map/Tree2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/Player.svg", url: "http://zombia.io/asset/images/Entity/Player/Player.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier1.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier2.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier3.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier4.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier5.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier6.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier7.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier1.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier2.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier3.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier4.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier5.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier6.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier7.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier1.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier2.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier3.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier4.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier5.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier6.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier7.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier1.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier2.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier3.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier4.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier5.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier6.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier7.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier1.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier2.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier3.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier4.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier5.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier6.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier7.svg", url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Head.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Head.svg", url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Head.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Head.svg", url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier1.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier2.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier3.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier4.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier5.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier6.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier7.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Door/DoorTier8.svg", url: "http://zombia.io/asset/images/Entity/Door/DoorTier8.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/Drill.svg", url: "http://zombia.io/asset/images/Entity/Drill/Drill.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier1Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier1Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier2Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier2Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier3Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier3Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier4Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier4Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier5Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier5Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier6Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier6Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier7Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier7Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Drill/DrillTier8Head.svg", url: "http://zombia.io/asset/images/Entity/Drill/DrillTier8Head.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier1Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier2Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier3Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier4Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier5Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier6Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier7Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier8Base.svg", url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Coil.svg", url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Coil.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerHead.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerHead.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Pets/PetKnightBase.svg", url: "http://zombia.io/asset/images/Entity/Pets/PetKnightBase.svg" }, { name: "http://zombia.io/asset/images/Entity/Pets/PetKnightHands.svg", url: "http://zombia.io/asset/images/Entity/Pets/PetKnightHands.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/ArrowProjectile.svg", url: "http://zombia.io/asset/images/Entity/Projectile/ArrowProjectile.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/CannonProjectile.svg", url: "http://zombia.io/asset/images/Entity/Projectile/CannonProjectile.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier1.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier2.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier3.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier4.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier5.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier6.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier7.svg", url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/MageProjectile.svg", url: "http://zombia.io/asset/images/Entity/Projectile/MageProjectile.svg" }, { name: "http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg", url: "http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Head.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Head.svg", url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Head.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Top.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Base.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Brace.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Brace.svg" }, { name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Top.svg", url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Top.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier1.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier1.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier2.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier2.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier3.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier3.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier4.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier4.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier5.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier5.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier6.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier6.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier7.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier7.svg" }, { name: "http://zombia.io/asset/images/Entity/Wall/WallTier8.svg", url: "http://zombia.io/asset/images/Entity/Wall/WallTier8.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponLeft.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponLeft.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponRight.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponRight.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponLeft.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponLeft.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponRight.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponRight.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponLeft.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponLeft.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponRight.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponRight.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Weapon.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Base.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Base.svg" }, { name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Weapon.svg", url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Weapon.svg" }]; this.loader.add(a).load(() => { console.log(a.length + " images successfully preloaded."); }); } init() { this.replicator.init(); this.world.init(); Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); document.getElementsByClassName("hud-settings-preload")[0].addEventListener("change", () => { window.storage.setItem("settings-preload", document.getElementsByClassName("hud-settings-preload")[0].checked); window.location.reload(); }); } onEnterWorld() { this.start(); } start() { this.ticker.start(); } add(a, b = undefined) { if (b === undefined) b = undefined; if (a instanceof wj) { switch (b) { case "Building": this.buildings.addAttachment(a); break; case "Resource": this.scenery.addAttachment(a); break; case "Zombie": this.zombieLayer.addAttachment(a); break; case "Projectile": this.projectiles.addAttachment(a); break; case "Player": case "Pet": this.players.addAttachment(a); break; default: this.npcs.addAttachment(a); } } else if (a instanceof xj) { this.groundLayer.addAttachment(a); } else { if (!(a instanceof ui)) { throw new Error("Unhandled object: " + JSON.stringify(a)); } this.uiLayer.addAttachment(a); } } remove(a) { a.currentModel?.onDie?.(); if (a instanceof wj) { switch (a.entityClass) { case "Building": this.buildings.removeAttachment(a); break; case "Resource": this.scenery.removeAttachment(a); break; case "Zombie": this.zombieLayer.removeAttachment(a); break; case "Projectile": this.projectiles.removeAttachment(a); break; case "Player": case "Pet": this.players.removeAttachment(a); break; default: this.npcs.removeAttachment(a); } } else if (a instanceof xj) { this.groundLayer.removeAttachment(a); } else if (a instanceof ui) { this.uiLayer.removeAttachment(a); } } update(a) { if (this.firstPerformance === null) { return this.firstPerformance = performance.now(); } const b = performance.now(); const c = b - this.firstPerformance; const d = c - this.lastMsElapsed; this.lastMsElapsed = c; a = d; Jj.debug.begin(); try { Jj.eventEmitter.emit("RendererUpdated", { msElapsed: a }); } catch (a) { console.log("Had an issue with the event listener on 'RendererUpdated'.", a); } try { this.scene.update(a, null); } catch (a) { console.log("Had an issue updating the scene.", a); } if (this.followingObject !== null) { this.lookAtPosition(this.followingObject.getPosition()); } this.renderer.renderer.render(this.scene.getNode()); if (Math.round((performance.now() - b) * 100) / 100 >= 10) { this.longFrames++; } for (let b of this.renderingFilters) { b.update(a); } Jj.debug.end(); } lookAtPosition({ x: a, y: b }) { const c = window.innerWidth * window.devicePixelRatio / 2; const d = window.innerHeight * window.devicePixelRatio / 2; a *= this.scale; b *= this.scale; const e = this.entitiesLayer.getPositionX(); const f = this.entitiesLayer.getPositionY(); const g = { x: -a + c, y: -b + d }; this.entitiesLayer.setPosition(g.x, g.y); if (e !== g.x || f !== g.y) { Jj.eventEmitter.emit("CameraUpdate", { newPosition: g }); } } onWindowResize() { const a = window.innerWidth * window.devicePixelRatio; const b = window.innerHeight * window.devicePixelRatio; const c = Math.max(a / (this.zoomDimension * 1920), b / (this.zoomDimension * 1080)); this.scale = c; this.entitiesLayer.setScale(c); this.uiLayer.setScale(c); this.renderer.renderer.resize(a, b); if (this.followingObject !== null) { this.lookAtPosition(this.followingObject.getPosition()); } } screenToWorld(a, b) { let c = -this.entitiesLayer.getPositionX(); let d = -this.entitiesLayer.getPositionY(); c *= 1 / this.scale; d *= 1 / this.scale; return { x: c + (a *= 1 / this.scale * window.devicePixelRatio), y: d + (b *= 1 / this.scale * window.devicePixelRatio) }; } worldToUi(a, b) { let c = -this.entitiesLayer.getPositionX(); let d = -this.entitiesLayer.getPositionY(); c *= 1 / this.scale; d *= 1 / this.scale; return { x: a - c, y: b - d }; } worldToScreen(a, b) { let c = -this.entitiesLayer.getPositionX(); let d = -this.entitiesLayer.getPositionY(); c *= 1 / this.scale; d *= 1 / this.scale; return { x: (a - c) * this.scale * (1 / window.devicePixelRatio), y: (b - d) * this.scale * (1 / window.devicePixelRatio) }; } screenToYaw(a, b) { return Math.round(i.angleTo({ x: Jj.renderer.getWidth() / 2, y: Jj.renderer.getHeight() / 2 }, { x: a, y: b })) % 360; } getWidth() { return this.renderer.renderer.width / window.devicePixelRatio; } getHeight() { return this.renderer.renderer.height / window.devicePixelRatio; } } var Ej = c(241); class Fj extends d { constructor() { const a = document.createElement("div"); a.className = "hud-preloading-progress"; super(a); document.getElementById("hud-intro").appendChild(a); this.element.innerHTML = "\n <h2 id=\"preloading-text\" >Preloading...</h2>\n <div class=\"hud-preloading-progress-bar\">\n <div class=\"hud-preloading-progress-bar-filler\" id=\"progress-bar-filler\"></div>\n </div>\n "; this.popupId = null; this.preloadComplete = false; } init() { Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this)); } show() { this.element.style.display = "block"; } hide() { this.element.style.display = "none"; } setProgress(a) { document.getElementById("progress-bar-filler").style.width = a + "%"; if (a >= 100) { document.getElementById("preloading-text").innerText = "Preloading complete!"; this.allowPlay(); this.preloadComplete = true; this.element.style.opacity = 0; if (this.popupId !== null) { Jj.ui.components.uiPopupOverlay.removePopup(this.popupId); } } } allowPlay() { Jj.ui.components.uiIntro.playElem.classList.remove("disabled"); } onEnterWorld() { if (this.preloadComplete == 0) { this.popupId = Jj.ui.components.uiPopupOverlay.showHint("Caution: preloading is still in effect, your connection may be slow!"); } } } var Gj = c(370); var Hj = c.n(Gj); var Ij = c(50); const Jj = new class { constructor() { try { localStorage.setItem("dummyProp", "dummy"); localStorage.removeItem("dummyProp"); window.storage = localStorage; } catch (a) { window.storage = { getItem() {}, setItem() {} }; if (window.confirm("localStorage has been denied access. Not all functionality is possible. Press OK for more info (popup must be allowed).")) { window.open("https://support.google.com/chrome/answer/14114868", "_blank"); } } this.ui = new pj(); this.network = new vj(); this.renderer = new Dj(); this.debug = new Ej.c(); this.eventEmitter = new(Hj())(); this.eventEmitter.setMaxListeners(100); if (window.storage.getItem("settings-preload") === "true") { Ij.default.defer(this.renderer.preloadAssets.bind(this.renderer)); this.ui.components.uiIntro.playElem.classList.add("disabled"); this.ui.components.preloadingProgressBar = new Fj(); } } init() { this.ui.init(); this.renderer.init(); this.debug.init(); this.network.init(); } getInWorld() { return this.network.connected; } }(); Jj.init(); window.game = Jj }, 42: (a, b, c) => { 'use strict'; c.d(b, { j: () => d }); function d() { var a = 0; var b = document.createElement("div"); function c(a) { b.appendChild(a.dom); return a; } function e(c) { for (var d = 0; d < b.children.length; d++) { b.children[d].style.display = d === c ? "block" : "none"; } a = c; } b.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000"; b.addEventListener("click", function (c) { c.preventDefault(); e(++a % b.children.length); }, false); var f = (performance || Date).now(); var g = f; var h = 0; var i = c(new d.Panel("FPS", "#0ff", "#002")); var j = c(new d.Panel("MS", "#0f0", "#020")); if (self.performance && self.performance.memory) { var k = c(new d.Panel("MB", "#f08", "#201")); } e(0); return { REVISION: 16, dom: b, addPanel: c, showPanel: e, begin: function () { f = (performance || Date).now(); }, end: function () { h++; var a = (performance || Date).now(); j.update(a - f, 200); if (a >= g + 1000 && (i.update(h * 1000 / (a - g), 100), g = a, h = 0, k)) { var b = performance.memory; k.update(b.usedJSHeapSize / 1048576, b.jsHeapSizeLimit / 1048576); } return a; }, update: function () { f = this.end(); }, domElement: b, setMode: e }; } d.Panel = function (a, b, c) { var d = Infinity; var e = 0; var f = Math.round; var g = f(window.devicePixelRatio || 1); var h = (g *= 4) * 80; var i = g * 48; var j = g * 3; var k = g * 2; var l = g * 3; var m = g * 15; var n = g * 74; var o = g * 30; var p = document.createElement("canvas"); p.width = h; p.height = i; p.style.cssText = "width:80px;height:48px"; var q = p.getContext("2d"); q.font = "bold " + g * 9 + "px Helvetica,Arial,sans-serif"; q.textBaseline = "top"; q.fillStyle = c; q.fillRect(0, 0, h, i); q.fillStyle = b; q.fillText(a, j, k); q.fillRect(l, m, n, o); q.fillStyle = c; q.globalAlpha = 0.9; q.fillRect(l, m, n, o); return { dom: p, update: function (i, r) { d = Math.min(d, i); e = Math.max(e, i); q.fillStyle = c; q.globalAlpha = 1; q.fillRect(0, 0, h, m); q.fillStyle = b; q.fillText(f(i) + " " + a + " (" + f(d) + "-" + f(e) + ")", j, k); q.drawImage(p, l + g, m, n - g, o, l, m, n - g, o); q.fillRect(l + n - g, m, g, o); q.fillStyle = c; q.globalAlpha = 0.9; q.fillRect(l + n - g, m, g, f((1 - i / r) * o)); } }; }; }, 654: () => {}, 50: (a, b, c) => { 'use strict'; c.r(b); c.d(b, { VERSION: () => e, after: () => Ib, all: () => ac, allKeys: () => qa, any: () => bc, assign: () => Ia, before: () => Jb, bind: () => wb, bindAll: () => zb, chain: () => sb, chunk: () => Lc, clone: () => Ma, collect: () => Wb, compact: () => Ac, compose: () => Hb, constant: () => $, contains: () => cc, countBy: () => qc, create: () => La, debounce: () => Eb, default: () => Qc, defaults: () => Ja, defer: () => Cb, delay: () => Bb, detect: () => Tb, difference: () => Cc, drop: () => yc, each: () => Vb, escape: () => gb, every: () => ac, extend: () => Ha, extendOwn: () => Ia, filter: () => $b, find: () => Tb, findIndex: () => Nb, findKey: () => Lb, findLastIndex: () => Ob, findWhere: () => Ub, first: () => xc, flatten: () => Bc, foldl: () => Yb, foldr: () => Zb, forEach: () => Vb, functions: () => Fa, get: () => Ra, groupBy: () => oc, has: () => Sa, head: () => xc, identity: () => Ta, include: () => cc, includes: () => cc, indexBy: () => pc, indexOf: () => Rb, initial: () => wc, inject: () => Yb, intersection: () => Gc, invert: () => Ea, invoke: () => dc, isArguments: () => X, isArray: () => U, isArrayBuffer: () => L, isBoolean: () => C, isDataView: () => T, isDate: () => H, isElement: () => D, isEmpty: () => ia, isEqual: () => pa, isError: () => J, isFinite: () => Y, isFunction: () => O, isMap: () => ya, isMatch: () => ja, isNaN: () => Z, isNull: () => A, isNumber: () => G, isObject: () => z, isRegExp: () => I, isSet: () => Aa, isString: () => F, isSymbol: () => K, isTypedArray: () => ea, isUndefined: () => B, isWeakMap: () => za, isWeakSet: () => Ba, iteratee: () => Ya, keys: () => ha, last: () => zc, lastIndexOf: () => Sb, map: () => Wb, mapObject: () => $a, matcher: () => Ua, matches: () => Ua, max: () => gc, memoize: () => Ab, methods: () => Fa, min: () => hc, mixin: () => Nc, negate: () => Gb, noop: () => _a, now: () => db, object: () => Jc, omit: () => vc, once: () => Kb, pairs: () => Da, partial: () => vb, partition: () => rc, pick: () => uc, pluck: () => ec, property: () => Va, propertyOf: () => ab, random: () => cb, range: () => Kc, reduce: () => Yb, reduceRight: () => Zb, reject: () => _b, rest: () => yc, restArguments: () => y, result: () => pb, sample: () => kc, select: () => $b, shuffle: () => lc, size: () => sc, some: () => bc, sortBy: () => mc, sortedIndex: () => Pb, tail: () => yc, take: () => xc, tap: () => Na, template: () => ob, templateSettings: () => ib, throttle: () => Db, times: () => bb, toArray: () => jc, toPath: () => Oa, transpose: () => Hc, unescape: () => hb, union: () => Fc, uniq: () => Ec, unique: () => Ec, uniqueId: () => rb, unzip: () => Hc, values: () => Ca, where: () => fc, without: () => Dc, wrap: () => Fb, zip: () => Ic }); var d = {}; c.r(d); c.d(d, { VERSION: () => e, after: () => Ib, all: () => ac, allKeys: () => qa, any: () => bc, assign: () => Ia, before: () => Jb, bind: () => wb, bindAll: () => zb, chain: () => sb, chunk: () => Lc, clone: () => Ma, collect: () => Wb, compact: () => Ac, compose: () => Hb, constant: () => $, contains: () => cc, countBy: () => qc, create: () => La, debounce: () => Eb, default: () => Oc, defaults: () => Ja, defer: () => Cb, delay: () => Bb, detect: () => Tb, difference: () => Cc, drop: () => yc, each: () => Vb, escape: () => gb, every: () => ac, extend: () => Ha, extendOwn: () => Ia, filter: () => $b, find: () => Tb, findIndex: () => Nb, findKey: () => Lb, findLastIndex: () => Ob, findWhere: () => Ub, first: () => xc, flatten: () => Bc, foldl: () => Yb, foldr: () => Zb, forEach: () => Vb, functions: () => Fa, get: () => Ra, groupBy: () => oc, has: () => Sa, head: () => xc, identity: () => Ta, include: () => cc, includes: () => cc, indexBy: () => pc, indexOf: () => Rb, initial: () => wc, inject: () => Yb, intersection: () => Gc, invert: () => Ea, invoke: () => dc, isArguments: () => X, isArray: () => U, isArrayBuffer: () => L, isBoolean: () => C, isDataView: () => T, isDate: () => H, isElement: () => D, isEmpty: () => ia, isEqual: () => pa, isError: () => J, isFinite: () => Y, isFunction: () => O, isMap: () => ya, isMatch: () => ja, isNaN: () => Z, isNull: () => A, isNumber: () => G, isObject: () => z, isRegExp: () => I, isSet: () => Aa, isString: () => F, isSymbol: () => K, isTypedArray: () => ea, isUndefined: () => B, isWeakMap: () => za, isWeakSet: () => Ba, iteratee: () => Ya, keys: () => ha, last: () => zc, lastIndexOf: () => Sb, map: () => Wb, mapObject: () => $a, matcher: () => Ua, matches: () => Ua, max: () => gc, memoize: () => Ab, methods: () => Fa, min: () => hc, mixin: () => Nc, negate: () => Gb, noop: () => _a, now: () => db, object: () => Jc, omit: () => vc, once: () => Kb, pairs: () => Da, partial: () => vb, partition: () => rc, pick: () => uc, pluck: () => ec, property: () => Va, propertyOf: () => ab, random: () => cb, range: () => Kc, reduce: () => Yb, reduceRight: () => Zb, reject: () => _b, rest: () => yc, restArguments: () => y, result: () => pb, sample: () => kc, select: () => $b, shuffle: () => lc, size: () => sc, some: () => bc, sortBy: () => mc, sortedIndex: () => Pb, tail: () => yc, take: () => xc, tap: () => Na, template: () => ob, templateSettings: () => ib, throttle: () => Db, times: () => bb, toArray: () => jc, toPath: () => Oa, transpose: () => Hc, unescape: () => hb, union: () => Fc, uniq: () => Ec, unique: () => Ec, uniqueId: () => rb, unzip: () => Hc, values: () => Ca, where: () => fc, without: () => Dc, wrap: () => Fb, zip: () => Ic }); var e = "1.13.6"; var f = typeof self == "object" && self.self === self && self || typeof global == "object" && global.global === global && global || Function("return this")() || {}; var g = Array.prototype; var h = Object.prototype; var i = typeof Symbol != "undefined" ? Symbol.prototype : null; var j = g.push; var k = g.slice; var l = h.toString; var m = h.hasOwnProperty; var n = typeof ArrayBuffer != "undefined"; var o = typeof DataView != "undefined"; var p = Array.isArray; var q = Object.keys; var r = Object.create; var s = n && ArrayBuffer.isView; var t = isNaN; var u = isFinite; var v = !{ toString: null }.propertyIsEnumerable("toString"); var w = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"]; var x = Math.pow(2, 53) - 1; function y(a, b) { b = b == null ? a.length - 1 : +b; return function () { for (var c = Math.max(arguments.length - b, 0), d = Array(c), e = 0; e < c; e++) { d[e] = arguments[e + b]; } switch (b) { case 0: return a.call(this, d); case 1: return a.call(this, arguments[0], d); case 2: return a.call(this, arguments[0], arguments[1], d); } var f = Array(b + 1); for (e = 0; e < b; e++) { f[e] = arguments[e]; } f[b] = d; return a.apply(this, f); }; } function z(a) { var b = typeof a; return b === "function" || b === "object" && !!a; } function A(a) { return a === null; } function B(a) { return a === undefined; } function C(a) { return a === true || a === false || l.call(a) === "[object Boolean]"; } function D(a) { return !!a && a.nodeType === 1; } function E(a) { var b = "[object " + a + "]"; return function (a) { return l.call(a) === b; }; } const F = E("String"); const G = E("Number"); const H = E("Date"); const I = E("RegExp"); const J = E("Error"); const K = E("Symbol"); const L = E("ArrayBuffer"); var M = E("Function"); var N = f.document && f.document.childNodes; if (typeof Int8Array != "object" && typeof N != "function") { M = function (a) { return typeof a == "function" || false; }; } const O = M; const P = E("Object"); var Q = o && P(new DataView(new ArrayBuffer(8))); var R = typeof Map != "undefined" && P(new Map()); var S = E("DataView"); const T = Q ? function (a) { return a != null && O(a.getInt8) && L(a.buffer); } : S; const U = p || E("Array"); function V(a, b) { return a != null && m.call(a, b); } var W = E("Arguments"); (function () { if (!W(arguments)) { W = function (a) { return V(a, "callee"); }; } })(); const X = W; function Y(a) { return !K(a) && u(a) && !isNaN(parseFloat(a)); } function Z(a) { return G(a) && t(a); } function $(a) { return function () { return a; }; } function _(a) { return function (b) { var c = a(b); return typeof c == "number" && c >= 0 && c <= x; }; } function aa(a) { return function (b) { if (b == null) { return undefined; } else { return b[a]; } }; } const ba = aa("byteLength"); const ca = _(ba); var da = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; const ea = n ? function (a) { if (s) { return s(a) && !T(a); } else { return ca(a) && da.test(l.call(a)); } } : $(false); const fa = aa("length"); function ga(a, b) { b = function (a) { for (var b = {}, c = a.length, d = 0; d < c; ++d) { b[a[d]] = true; } return { contains: function (a) { return b[a] === true; }, push: function (c) { b[c] = true; return a.push(c); } }; }(b); var c = w.length; var d = a.constructor; var e = O(d) && d.prototype || h; var f = "constructor"; for (V(a, f) && !b.contains(f) && b.push(f); c--;) { if ((f = w[c]) in a && a[f] !== e[f] && !b.contains(f)) { b.push(f); } } } function ha(a) { if (!z(a)) { return []; } if (q) { return q(a); } var b = []; for (var c in a) { if (V(a, c)) { b.push(c); } } if (v) { ga(a, b); } return b; } function ia(a) { if (a == null) { return true; } var b = fa(a); if (typeof b == "number" && (U(a) || F(a) || X(a))) { return b === 0; } else { return fa(ha(a)) === 0; } } function ja(a, b) { var c = ha(b); var d = c.length; if (a == null) { return !d; } for (var e = Object(a), f = 0; f < d; f++) { var g = c[f]; if (b[g] !== e[g] || !(g in e)) { return false; } } return true; } function ka(a) { if (a instanceof ka) { return a; } else if (this instanceof ka) { this._wrapped = a; return; } else { return new ka(a); } } function la(a) { return new Uint8Array(a.buffer || a, a.byteOffset || 0, ba(a)); } ka.VERSION = e; ka.prototype.value = function () { return this._wrapped; }; ka.prototype.valueOf = ka.prototype.toJSON = ka.prototype.value; ka.prototype.toString = function () { return String(this._wrapped); }; var ma = "[object DataView]"; function na(a, b, c, d) { if (a === b) { return a !== 0 || 1 / a == 1 / b; } if (a == null || b == null) { return false; } if (a != a) { return b != b; } var e = typeof a; return (e === "function" || e === "object" || typeof b == "object") && oa(a, b, c, d); } function oa(a, b, c, d) { if (a instanceof ka) { a = a._wrapped; } if (b instanceof ka) { b = b._wrapped; } var e = l.call(a); if (e !== l.call(b)) { return false; } if (Q && e == "[object Object]" && T(a)) { if (!T(b)) { return false; } e = ma; } switch (e) { case "[object RegExp]": case "[object String]": return "" + a == "" + b; case "[object Number]": if (+a != +a) { return +b != +b; } else if (+a == 0) { return 1 / +a == 1 / b; } else { return +a == +b; } case "[object Date]": case "[object Boolean]": return +a == +b; case "[object Symbol]": return i.valueOf.call(a) === i.valueOf.call(b); case "[object ArrayBuffer]": case ma: return oa(la(a), la(b), c, d); } var f = e === "[object Array]"; if (!f && ea(a)) { if (ba(a) !== ba(b)) { return false; } if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) { return true; } f = true; } if (!f) { if (typeof a != "object" || typeof b != "object") { return false; } var g = a.constructor; var h = b.constructor; if (g !== h && (!O(g) || !(g instanceof g) || !O(h) || !(h instanceof h)) && "constructor" in a && "constructor" in b) { return false; } } d = d || []; for (var j = (c = c || []).length; j--;) { if (c[j] === a) { return d[j] === b; } } c.push(a); d.push(b); if (f) { if ((j = a.length) !== b.length) { return false; } while (j--) { if (!na(a[j], b[j], c, d)) { return false; } } } else { var k; var m = ha(a); j = m.length; if (ha(b).length !== j) { return false; } while (j--) { if (!V(b, k = m[j]) || !na(a[k], b[k], c, d)) { return false; } } } c.pop(); d.pop(); return true; } function pa(a, b) { return na(a, b); } function qa(a) { if (!z(a)) { return []; } var b = []; for (var c in a) { b.push(c); } if (v) { ga(a, b); } return b; } function ra(a) { var b = fa(a); return function (c) { if (c == null) { return false; } var d = qa(c); if (fa(d)) { return false; } for (var e = 0; e < b; e++) { if (!O(c[a[e]])) { return false; } } return a !== wa || !O(c[sa]); }; } var sa = "forEach"; var ta = ["clear", "delete"]; var ua = ["get", "has", "set"]; var va = ta.concat(sa, ua); var wa = ta.concat(ua); var xa = ["add"].concat(ta, sa, "has"); const ya = R ? ra(va) : E("Map"); const za = R ? ra(wa) : E("WeakMap"); const Aa = R ? ra(xa) : E("Set"); const Ba = E("WeakSet"); function Ca(a) { for (var b = ha(a), c = b.length, d = Array(c), e = 0; e < c; e++) { d[e] = a[b[e]]; } return d; } function Da(a) { for (var b = ha(a), c = b.length, d = Array(c), e = 0; e < c; e++) { d[e] = [b[e], a[b[e]]]; } return d; } function Ea(a) { for (var b = {}, c = ha(a), d = 0, e = c.length; d < e; d++) { b[a[c[d]]] = c[d]; } return b; } function Fa(a) { var b = []; for (var c in a) { if (O(a[c])) { b.push(c); } } return b.sort(); } function Ga(a, b) { return function (c) { var d = arguments.length; if (b) { c = Object(c); } if (d < 2 || c == null) { return c; } for (var e = 1; e < d; e++) { for (var f = arguments[e], g = a(f), h = g.length, i = 0; i < h; i++) { var j = g[i]; if (!b || c[j] === undefined) { c[j] = f[j]; } } } return c; }; } const Ha = Ga(qa); const Ia = Ga(ha); const Ja = Ga(qa, true); function Ka(a) { if (!z(a)) { return {}; } if (r) { return r(a); } function b() {} b.prototype = a; var c = new b(); b.prototype = null; return c; } function La(a, b) { var c = Ka(a); if (b) { Ia(c, b); } return c; } function Ma(a) { if (z(a)) { if (U(a)) { return a.slice(); } else { return Ha({}, a); } } else { return a; } } function Na(a, b) { b(a); return a; } function Oa(a) { if (U(a)) { return a; } else { return [a]; } } function Pa(a) { return ka.toPath(a); } function Qa(a, b) { for (var c = b.length, d = 0; d < c; d++) { if (a == null) { return; } a = a[b[d]]; } if (c) { return a; } else { return undefined; } } function Ra(a, b, c) { var d = Qa(a, Pa(b)); if (B(d)) { return c; } else { return d; } } function Sa(a, b) { for (var c = (b = Pa(b)).length, d = 0; d < c; d++) { var e = b[d]; if (!V(a, e)) { return false; } a = a[e]; } return !!c; } function Ta(a) { return a; } function Ua(a) { a = Ia({}, a); return function (b) { return ja(b, a); }; } function Va(a) { a = Pa(a); return function (b) { return Qa(b, a); }; } function Wa(a, b, c) { if (b === undefined) { return a; } switch (c == null ? 3 : c) { case 1: return function (c) { return a.call(b, c); }; case 3: return function (c, d, e) { return a.call(b, c, d, e); }; case 4: return function (c, d, e, f) { return a.call(b, c, d, e, f); }; } return function () { return a.apply(b, arguments); }; } function Xa(a, b, c) { if (a == null) { return Ta; } else if (O(a)) { return Wa(a, b, c); } else if (z(a) && !U(a)) { return Ua(a); } else { return Va(a); } } function Ya(a, b) { return Xa(a, b, Infinity); } function Za(a, b, c) { if (ka.iteratee !== Ya) { return ka.iteratee(a, b); } else { return Xa(a, b, c); } } function $a(a, b, c) { b = Za(b, c); for (var d = ha(a), e = d.length, f = {}, g = 0; g < e; g++) { var h = d[g]; f[h] = b(a[h], h, a); } return f; } function _a() {} function ab(a) { if (a == null) { return _a; } else { return function (b) { return Ra(a, b); }; } } function bb(a, b, c) { var d = Array(Math.max(0, a)); b = Wa(b, c, 1); for (var e = 0; e < a; e++) { d[e] = b(e); } return d; } function cb(a, b) { if (b == null) { b = a; a = 0; } return a + Math.floor(Math.random() * (b - a + 1)); } ka.toPath = Oa; ka.iteratee = Ya; const db = Date.now || function () { return new Date().getTime(); }; function eb(a) { function b(b) { return a[b]; } var c = "(?:" + ha(a).join("|") + ")"; var d = RegExp(c); var e = RegExp(c, "g"); return function (a) { a = a == null ? "" : "" + a; if (d.test(a)) { return a.replace(e, b); } else { return a; } }; } const fb = { "&": "&", "<": "<", ">": ">", "\"": """, "'": "'", "`": "`" }; const gb = eb(fb); const hb = eb(Ea(fb)); const ib = ka.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g }; var jb = /(.)^/; var kb = { "'": "'", "\\": "\\", "\r": "r", "\n": "n", "\u2028": "u2028", "\u2029": "u2029" }; var lb = /\\|'|\r|\n|\u2028|\u2029/g; function mb(a) { return "\\" + kb[a]; } var nb = /^\s*(\w|\$)+\s*$/; function ob(a, b, c) { if (!b && c) { b = c; } b = Ja({}, b, ka.templateSettings); var d = RegExp([(b.escape || jb).source, (b.interpolate || jb).source, (b.evaluate || jb).source].join("|") + "|$", "g"); var e = 0; var f = "__p+='"; a.replace(d, function (b, c, d, g, h) { f += a.slice(e, h).replace(lb, mb); e = h + b.length; if (c) { f += "'+\n((__t=(" + c + "))==null?'':_.escape(__t))+\n'"; } else if (d) { f += "'+\n((__t=(" + d + "))==null?'':__t)+\n'"; } else if (g) { f += "';\n" + g + "\n__p+='"; } return b; }); f += "';\n"; var g; var h = b.variable; if (h) { if (!nb.test(h)) { throw new Error("variable is not a bare identifier: " + h); } } else { f = "with(obj||{}){\n" + f + "}\n"; h = "obj"; } f = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + f + "return __p;\n"; try { g = new Function(h, "_", f); } catch (a) { a.source = f; throw a; } function i(a) { return g.call(this, a, ka); } i.source = "function(" + h + "){\n" + f + "}"; return i; } function pb(a, b, c) { var d = (b = Pa(b)).length; if (!d) { if (O(c)) { return c.call(a); } else { return c; } } for (var e = 0; e < d; e++) { var f = a == null ? undefined : a[b[e]]; if (f === undefined) { f = c; e = d; } a = O(f) ? f.call(a) : f; } return a; } var qb = 0; function rb(a) { var b = ++qb + ""; if (a) { return a + b; } else { return b; } } function sb(a) { var b = ka(a); b._chain = true; return b; } function tb(a, b, c, d, e) { if (!(d instanceof b)) { return a.apply(c, e); } var f = Ka(a.prototype); var g = a.apply(f, e); if (z(g)) { return g; } else { return f; } } var ub = y(function (a, b) { var c = ub.placeholder; function d() { for (var e = 0, f = b.length, g = Array(f), h = 0; h < f; h++) { g[h] = b[h] === c ? arguments[e++] : b[h]; } while (e < arguments.length) { g.push(arguments[e++]); } return tb(a, d, this, this, g); } return d; }); ub.placeholder = ka; const vb = ub; const wb = y(function (a, b, c) { if (!O(a)) { throw new TypeError("Bind must be called on a function"); } var d = y(function (e) { return tb(a, d, b, this, c.concat(e)); }); return d; }); const xb = _(fa); function yb(a, b, c, d) { d = d || []; if (b || b === 0) { if (b <= 0) { return d.concat(a); } } else { b = Infinity; } for (var e = d.length, f = 0, g = fa(a); f < g; f++) { var h = a[f]; if (xb(h) && (U(h) || X(h))) { if (b > 1) { yb(h, b - 1, c, d); e = d.length; } else { for (var i = 0, j = h.length; i < j;) { d[e++] = h[i++]; } } } else if (!c) { d[e++] = h; } } return d; } const zb = y(function (a, b) { var c = (b = yb(b, false, false)).length; if (c < 1) { throw new Error("bindAll must be passed function names"); } while (c--) { var d = b[c]; a[d] = wb(a[d], a); } return a; }); function Ab(a, b) { function c(d) { var e = c.cache; var f = "" + (b ? b.apply(this, arguments) : d); if (!V(e, f)) { e[f] = a.apply(this, arguments); } return e[f]; } c.cache = {}; return c; } const Bb = y(function (a, b, c) { return setTimeout(function () { return a.apply(null, c); }, b); }); const Cb = vb(Bb, ka, 1); function Db(a, b, c) { var d; var e; var f; var g; var h = 0; c ||= {}; function i() { h = c.leading === false ? 0 : db(); d = null; g = a.apply(e, f); if (!d) { e = f = null; } } function j() { var j = db(); if (!h && c.leading === false) { h = j; } var k = b - (j - h); e = this; f = arguments; if (k <= 0 || k > b) { if (d) { clearTimeout(d); d = null; } h = j; g = a.apply(e, f); if (!d) { e = f = null; } } else if (!d && c.trailing !== false) { d = setTimeout(i, k); } return g; } j.cancel = function () { clearTimeout(d); h = 0; d = e = f = null; }; return j; } function Eb(a, b, c) { var d; var e; var f; var g; var h; function i() { var j = db() - e; if (b > j) { d = setTimeout(i, b - j); } else { d = null; if (!c) { g = a.apply(h, f); } if (!d) { f = h = null; } } } var j = y(function (j) { h = this; f = j; e = db(); if (!d) { d = setTimeout(i, b); if (c) { g = a.apply(h, f); } } return g; }); j.cancel = function () { clearTimeout(d); d = f = h = null; }; return j; } function Fb(a, b) { return vb(b, a); } function Gb(a) { return function () { return !a.apply(this, arguments); }; } function Hb() { var a = arguments; var b = a.length - 1; return function () { for (var c = b, d = a[b].apply(this, arguments); c--;) { d = a[c].call(this, d); } return d; }; } function Ib(a, b) { return function () { if (--a < 1) { return b.apply(this, arguments); } }; } function Jb(a, b) { var c; return function () { if (--a > 0) { c = b.apply(this, arguments); } if (a <= 1) { b = null; } return c; }; } const Kb = vb(Jb, 2); function Lb(a, b, c) { b = Za(b, c); for (var d, e = ha(a), f = 0, g = e.length; f < g; f++) { if (b(a[d = e[f]], d, a)) { return d; } } } function Mb(a) { return function (b, c, d) { c = Za(c, d); for (var e = fa(b), f = a > 0 ? 0 : e - 1; f >= 0 && f < e; f += a) { if (c(b[f], f, b)) { return f; } } return -1; }; } const Nb = Mb(1); const Ob = Mb(-1); function Pb(a, b, c, d) { for (var e = (c = Za(c, d, 1))(b), f = 0, g = fa(a); f < g;) { var h = Math.floor((f + g) / 2); if (c(a[h]) < e) { f = h + 1; } else { g = h; } } return f; } function Qb(a, b, c) { return function (d, e, f) { var g = 0; var h = fa(d); if (typeof f == "number") { if (a > 0) { g = f >= 0 ? f : Math.max(f + h, g); } else { h = f >= 0 ? Math.min(f + 1, h) : f + h + 1; } } else if (c && f && h) { if (d[f = c(d, e)] === e) { return f; } else { return -1; } } if (e != e) { if ((f = b(k.call(d, g, h), Z)) >= 0) { return f + g; } else { return -1; } } for (f = a > 0 ? g : h - 1; f >= 0 && f < h; f += a) { if (d[f] === e) { return f; } } return -1; }; } const Rb = Qb(1, Nb, Pb); const Sb = Qb(-1, Ob); function Tb(a, b, c) { var d = (xb(a) ? Nb : Lb)(a, b, c); if (d !== undefined && d !== -1) { return a[d]; } } function Ub(a, b) { return Tb(a, Ua(b)); } function Vb(a, b, c) { var d; var e; b = Wa(b, c); if (xb(a)) { d = 0; e = a.length; for (; d < e; d++) { b(a[d], d, a); } } else { var f = ha(a); d = 0; e = f.length; for (; d < e; d++) { b(a[f[d]], f[d], a); } } return a; } function Wb(a, b, c) { b = Za(b, c); for (var d = !xb(a) && ha(a), e = (d || a).length, f = Array(e), g = 0; g < e; g++) { var h = d ? d[g] : g; f[g] = b(a[h], h, a); } return f; } function Xb(a) { return function (b, c, d, e) { var f = arguments.length >= 3; return function (b, c, d, e) { var f = !xb(b) && ha(b); var g = (f || b).length; var h = a > 0 ? 0 : g - 1; for (e || (d = b[f ? f[h] : h], h += a); h >= 0 && h < g; h += a) { var i = f ? f[h] : h; d = c(d, b[i], i, b); } return d; }(b, Wa(c, e, 4), d, f); }; } const Yb = Xb(1); const Zb = Xb(-1); function $b(a, b, c) { var d = []; b = Za(b, c); Vb(a, function (a, c, e) { if (b(a, c, e)) { d.push(a); } }); return d; } function _b(a, b, c) { return $b(a, Gb(Za(b)), c); } function ac(a, b, c) { b = Za(b, c); for (var d = !xb(a) && ha(a), e = (d || a).length, f = 0; f < e; f++) { var g = d ? d[f] : f; if (!b(a[g], g, a)) { return false; } } return true; } function bc(a, b, c) { b = Za(b, c); for (var d = !xb(a) && ha(a), e = (d || a).length, f = 0; f < e; f++) { var g = d ? d[f] : f; if (b(a[g], g, a)) { return true; } } return false; } function cc(a, b, c, d) { if (!xb(a)) { a = Ca(a); } if (typeof c != "number" || d) { c = 0; } return Rb(a, b, c) >= 0; } const dc = y(function (a, b, c) { var d; var e; if (O(b)) { e = b; } else { b = Pa(b); d = b.slice(0, -1); b = b[b.length - 1]; } return Wb(a, function (a) { var f = e; if (!f) { if (d && d.length) { a = Qa(a, d); } if (a == null) { return; } f = a[b]; } if (f == null) { return f; } else { return f.apply(a, c); } }); }); function ec(a, b) { return Wb(a, Va(b)); } function fc(a, b) { return $b(a, Ua(b)); } function gc(a, b, c) { var d; var e; var f = -Infinity; var g = -Infinity; if (b == null || typeof b == "number" && typeof a[0] != "object" && a != null) { for (var h = 0, i = (a = xb(a) ? a : Ca(a)).length; h < i; h++) { if ((d = a[h]) != null && d > f) { f = d; } } } else { b = Za(b, c); Vb(a, function (a, c, d) { if ((e = b(a, c, d)) > g || e === -Infinity && f === -Infinity) { f = a; g = e; } }); } return f; } function hc(a, b, c) { var d; var e; var f = Infinity; var g = Infinity; if (b == null || typeof b == "number" && typeof a[0] != "object" && a != null) { for (var h = 0, i = (a = xb(a) ? a : Ca(a)).length; h < i; h++) { if ((d = a[h]) != null && d < f) { f = d; } } } else { b = Za(b, c); Vb(a, function (a, c, d) { if ((e = b(a, c, d)) < g || e === Infinity && f === Infinity) { f = a; g = e; } }); } return f; } var ic = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function jc(a) { if (a) { if (U(a)) { return k.call(a); } else if (F(a)) { return a.match(ic); } else if (xb(a)) { return Wb(a, Ta); } else { return Ca(a); } } else { return []; } } function kc(a, b, c) { if (b == null || c) { if (!xb(a)) { a = Ca(a); } return a[cb(a.length - 1)]; } var d = jc(a); var e = fa(d); b = Math.max(Math.min(b, e), 0); for (var f = e - 1, g = 0; g < b; g++) { var h = cb(g, f); var i = d[g]; d[g] = d[h]; d[h] = i; } return d.slice(0, b); } function lc(a) { return kc(a, Infinity); } function mc(a, b, c) { var d = 0; b = Za(b, c); return ec(Wb(a, function (a, c, e) { return { value: a, index: d++, criteria: b(a, c, e) }; }).sort(function (a, b) { var c = a.criteria; var d = b.criteria; if (c !== d) { if (c > d || c === undefined) { return 1; } if (c < d || d === undefined) { return -1; } } return a.index - b.index; }), "value"); } function nc(a, b) { return function (c, d, e) { var f = b ? [ [], [] ] : {}; d = Za(d, e); Vb(c, function (b, e) { var g = d(b, e, c); a(f, b, g); }); return f; }; } const oc = nc(function (a, b, c) { if (V(a, c)) { a[c].push(b); } else { a[c] = [b]; } }); const pc = nc(function (a, b, c) { a[c] = b; }); const qc = nc(function (a, b, c) { if (V(a, c)) { a[c]++; } else { a[c] = 1; } }); const rc = nc(function (a, b, c) { a[c ? 0 : 1].push(b); }, true); function sc(a) { if (a == null) { return 0; } else if (xb(a)) { return a.length; } else { return ha(a).length; } } function tc(a, b, c) { return b in c; } const uc = y(function (a, b) { var c = {}; var d = b[0]; if (a == null) { return c; } if (O(d)) { if (b.length > 1) { d = Wa(d, b[1]); } b = qa(a); } else { d = tc; b = yb(b, false, false); a = Object(a); } for (var e = 0, f = b.length; e < f; e++) { var g = b[e]; var h = a[g]; if (d(h, g, a)) { c[g] = h; } } return c; }); const vc = y(function (a, b) { var c; var d = b[0]; if (O(d)) { d = Gb(d); if (b.length > 1) { c = b[1]; } } else { b = Wb(yb(b, false, false), String); d = function (a, c) { return !cc(b, c); }; } return uc(a, d, c); }); function wc(a, b, c) { return k.call(a, 0, Math.max(0, a.length - (b == null || c ? 1 : b))); } function xc(a, b, c) { if (a == null || a.length < 1) { if (b == null || c) { return undefined; } else { return []; } } else if (b == null || c) { return a[0]; } else { return wc(a, a.length - b); } } function yc(a, b, c) { return k.call(a, b == null || c ? 1 : b); } function zc(a, b, c) { if (a == null || a.length < 1) { if (b == null || c) { return undefined; } else { return []; } } else if (b == null || c) { return a[a.length - 1]; } else { return yc(a, Math.max(0, a.length - b)); } } function Ac(a) { return $b(a, Boolean); } function Bc(a, b) { return yb(a, b, false); } const Cc = y(function (a, b) { b = yb(b, true, true); return $b(a, function (a) { return !cc(b, a); }); }); const Dc = y(function (a, b) { return Cc(a, b); }); function Ec(a, b, c, d) { if (!C(b)) { d = c; c = b; b = false; } if (c != null) { c = Za(c, d); } for (var e = [], f = [], g = 0, h = fa(a); g < h; g++) { var i = a[g]; var j = c ? c(i, g, a) : i; if (b && !c) { if (!g || f !== j) { e.push(i); } f = j; } else if (c) { if (!cc(f, j)) { f.push(j); e.push(i); } } else if (!cc(e, i)) { e.push(i); } } return e; } const Fc = y(function (a) { return Ec(yb(a, true, true)); }); function Gc(a) { for (var b = [], c = arguments.length, d = 0, e = fa(a); d < e; d++) { var f = a[d]; if (!cc(b, f)) { var g; for (g = 1; g < c && cc(arguments[g], f); g++); if (g === c) { b.push(f); } } } return b; } function Hc(a) { for (var b = a && gc(a, fa).length || 0, c = Array(b), d = 0; d < b; d++) { c[d] = ec(a, d); } return c; } const Ic = y(Hc); function Jc(a, b) { for (var c = {}, d = 0, e = fa(a); d < e; d++) { if (b) { c[a[d]] = b[d]; } else { c[a[d][0]] = a[d][1]; } } return c; } function Kc(a, b, c) { if (b == null) { b = a || 0; a = 0; } c ||= b < a ? -1 : 1; for (var d = Math.max(Math.ceil((b - a) / c), 0), e = Array(d), f = 0; f < d; f++, a += c) { e[f] = a; } return e; } function Lc(a, b) { if (b == null || b < 1) { return []; } for (var c = [], d = 0, e = a.length; d < e;) { c.push(k.call(a, d, d += b)); } return c; } function Mc(a, b) { if (a._chain) { return ka(b).chain(); } else { return b; } } function Nc(a) { Vb(Fa(a), function (b) { var c = ka[b] = a[b]; ka.prototype[b] = function () { var a = [this._wrapped]; j.apply(a, arguments); return Mc(this, c.apply(ka, a)); }; }); return ka; } Vb(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function (a) { var b = g[a]; ka.prototype[a] = function () { var c = this._wrapped; if (c != null) { b.apply(c, arguments); if ((a === "shift" || a === "splice") && c.length === 0) { delete c[0]; } } return Mc(this, c); }; }); Vb(["concat", "join", "slice"], function (a) { var b = g[a]; ka.prototype[a] = function () { var a = this._wrapped; if (a != null) { a = b.apply(a, arguments); } return Mc(this, a); }; }); const Oc = ka; var Pc = Nc(d); Pc._ = Pc; const Qc = Pc; } }; var b = {}; function c(d) { var e = b[d]; if (e !== undefined) { return e.exports; } var f = b[d] = { id: d, loaded: false, exports: {} }; a[d].call(f.exports, f, f.exports, c); f.loaded = true; return f.exports; } c.n = a => { var b = a && a.__esModule ? () => a.default : () => a; c.d(b, { a: b }); return b; }; c.d = (a, b) => { for (var d in b) { if (c.o(b, d) && !c.o(a, d)) { Object.defineProperty(a, d, { enumerable: true, get: b[d] }); } } }; c.g = function () { if (typeof globalThis == "object") { return globalThis; } try { return this || new Function("return this")(); } catch (a) { if (typeof window == "object") { return window; } } }(); c.o = (a, b) => Object.prototype.hasOwnProperty.call(a, b); c.r = a => { if (typeof Symbol != "undefined" && Symbol.toStringTag) { Object.defineProperty(a, Symbol.toStringTag, { value: "Module" }); } Object.defineProperty(a, "__esModule", { value: true }); }; c.nmd = a => { a.paths = []; a.children ||= []; return a; }; var d = c(911); })();