UNPKG

@webwriter/chemlab

Version:

WIP - Prepare virtual laboratory environments for various topics in chemistry. Includes the building of molecules as well as applications for electrochemistry and acid/base theory.

1,271 lines (1,254 loc) 6.93 MB
var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __knownSymbol = (name2, symbol) => (symbol = Symbol[name2]) ? symbol : Symbol.for("Symbol." + name2); var __typeError = (msg) => { throw TypeError(msg); }; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __require = /* @__PURE__ */ ((x4) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x4, { get: (a7, b5) => (typeof require !== "undefined" ? require : a7)[b5] }) : x4)(function(x4) { if (typeof require !== "undefined") return require.apply(this, arguments); throw Error('Dynamic require of "' + x4 + '" is not supported'); }); var __esm = (fn, res) => function __init() { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; }; var __commonJS = (cb, mod) => function __require2() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to2, from2, except, desc) => { if (from2 && typeof from2 === "object" || typeof from2 === "function") { for (let key of __getOwnPropNames(from2)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from2[key], enumerable: !(desc = __getOwnPropDesc(from2, key)) || desc.enumerable }); } return to2; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)]; var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; var __decoratorContext = (kind, name2, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name: name2, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); var __runInitializers = (array, flags, self2, value) => { for (var i11 = 0, fns = array[flags >> 1], n12 = fns && fns.length; i11 < n12; i11++) flags & 1 ? fns[i11].call(self2) : value = fns[i11].call(self2, value); return value; }; var __decorateElement = (array, flags, name2, decorators, target, extra) => { var fn, it, done, ctx, access, k4 = flags & 7, s6 = !!(flags & 8), p5 = !!(flags & 16); var j4 = k4 > 3 ? array.length + 1 : k4 ? s6 ? 1 : 2 : 0, key = __decoratorStrings[k4 + 5]; var initializers = k4 > 3 && (array[j4 - 1] = []), extraInitializers = array[j4] || (array[j4] = []); var desc = k4 && (!p5 && !s6 && (target = target.prototype), k4 < 5 && (k4 > 3 || !p5) && __getOwnPropDesc(k4 < 4 ? target : { get [name2]() { return __privateGet(this, extra); }, set [name2](x4) { return __privateSet(this, extra, x4); } }, name2)); k4 ? p5 && k4 < 4 && __name(extra, (k4 > 2 ? "set " : k4 > 1 ? "get " : "") + name2) : __name(target, name2); for (var i11 = decorators.length - 1; i11 >= 0; i11--) { ctx = __decoratorContext(k4, name2, done = {}, array[3], extraInitializers); if (k4) { ctx.static = s6, ctx.private = p5, access = ctx.access = { has: p5 ? (x4) => __privateIn(target, x4) : (x4) => name2 in x4 }; if (k4 ^ 3) access.get = p5 ? (x4) => (k4 ^ 1 ? __privateGet : __privateMethod)(x4, target, k4 ^ 4 ? extra : desc.get) : (x4) => x4[name2]; if (k4 > 2) access.set = p5 ? (x4, y5) => __privateSet(x4, target, y5, k4 ^ 4 ? extra : desc.set) : (x4, y5) => x4[name2] = y5; } it = (0, decorators[i11])(k4 ? k4 < 4 ? p5 ? extra : desc[key] : k4 > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; if (k4 ^ 4 || it === void 0) __expectFn(it) && (k4 > 4 ? initializers.unshift(it) : k4 ? p5 ? extra = it : desc[key] = it : target = it); else if (typeof it !== "object" || it === null) __typeError("Object expected"); else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn); } return k4 || __decoratorMetadata(array, target), desc && __defProp(target, name2, desc), p5 ? k4 ^ 4 ? extra : desc : target; }; var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value); var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); // node_modules/eventemitter3/index.js var require_eventemitter3 = __commonJS({ "node_modules/eventemitter3/index.js"(exports, module) { "use strict"; var has = Object.prototype.hasOwnProperty; var prefix = "~"; function Events() { } if (Object.create) { Events.prototype = /* @__PURE__ */ Object.create(null); if (!new Events().__proto__) prefix = false; } function EE(fn, context2, once) { this.fn = fn; this.context = context2; this.once = once || false; } function addListener2(emitter, event, fn, context2, once) { if (typeof fn !== "function") { throw new TypeError("The listener must be a function"); } var listener = new EE(fn, context2 || emitter, once), evt = prefix ? prefix + event : event; if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); else emitter._events[evt] = [emitter._events[evt], listener]; return emitter; } function clearEvent(emitter, evt) { if (--emitter._eventsCount === 0) emitter._events = new Events(); else delete emitter._events[evt]; } function EventEmitter() { this._events = new Events(); this._eventsCount = 0; } EventEmitter.prototype.eventNames = function eventNames() { var names2 = [], events, name2; if (this._eventsCount === 0) return names2; for (name2 in events = this._events) { if (has.call(events, name2)) names2.push(prefix ? name2.slice(1) : name2); } if (Object.getOwnPropertySymbols) { return names2.concat(Object.getOwnPropertySymbols(events)); } return names2; }; EventEmitter.prototype.listeners = function listeners(event) { var evt = prefix ? prefix + event : event, handlers = this._events[evt]; if (!handlers) return []; if (handlers.fn) return [handlers.fn]; for (var i11 = 0, l8 = handlers.length, ee = new Array(l8); i11 < l8; i11++) { ee[i11] = handlers[i11].fn; } return ee; }; EventEmitter.prototype.listenerCount = function listenerCount(event) { var evt = prefix ? prefix + event : event, listeners = this._events[evt]; if (!listeners) return 0; if (listeners.fn) return 1; return listeners.length; }; EventEmitter.prototype.emit = function emit(event, a1, a22, a32, a42, a52) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return false; var listeners = this._events[evt], len = arguments.length, args, i11; if (listeners.fn) { if (listeners.once) this.removeListener(event, listeners.fn, void 0, true); switch (len) { case 1: return listeners.fn.call(listeners.context), true; case 2: return listeners.fn.call(listeners.context, a1), true; case 3: return listeners.fn.call(listeners.context, a1, a22), true; case 4: return listeners.fn.call(listeners.context, a1, a22, a32), true; case 5: return listeners.fn.call(listeners.context, a1, a22, a32, a42), true; case 6: return listeners.fn.call(listeners.context, a1, a22, a32, a42, a52), true; } for (i11 = 1, args = new Array(len - 1); i11 < len; i11++) { args[i11 - 1] = arguments[i11]; } listeners.fn.apply(listeners.context, args); } else { var length = listeners.length, j4; for (i11 = 0; i11 < length; i11++) { if (listeners[i11].once) this.removeListener(event, listeners[i11].fn, void 0, true); switch (len) { case 1: listeners[i11].fn.call(listeners[i11].context); break; case 2: listeners[i11].fn.call(listeners[i11].context, a1); break; case 3: listeners[i11].fn.call(listeners[i11].context, a1, a22); break; case 4: listeners[i11].fn.call(listeners[i11].context, a1, a22, a32); break; default: if (!args) for (j4 = 1, args = new Array(len - 1); j4 < len; j4++) { args[j4 - 1] = arguments[j4]; } listeners[i11].fn.apply(listeners[i11].context, args); } } } return true; }; EventEmitter.prototype.on = function on(event, fn, context2) { return addListener2(this, event, fn, context2, false); }; EventEmitter.prototype.once = function once(event, fn, context2) { return addListener2(this, event, fn, context2, true); }; EventEmitter.prototype.removeListener = function removeListener2(event, fn, context2, once) { var evt = prefix ? prefix + event : event; if (!this._events[evt]) return this; if (!fn) { clearEvent(this, evt); return this; } var listeners = this._events[evt]; if (listeners.fn) { if (listeners.fn === fn && (!once || listeners.once) && (!context2 || listeners.context === context2)) { clearEvent(this, evt); } } else { for (var i11 = 0, events = [], length = listeners.length; i11 < length; i11++) { if (listeners[i11].fn !== fn || once && !listeners[i11].once || context2 && listeners[i11].context !== context2) { events.push(listeners[i11]); } } if (events.length) this._events[evt] = events.length === 1 ? events[0] : events; else clearEvent(this, evt); } return this; }; EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) { var evt; if (event) { evt = prefix ? prefix + event : event; if (this._events[evt]) clearEvent(this, evt); } else { this._events = new Events(); this._eventsCount = 0; } return this; }; EventEmitter.prototype.off = EventEmitter.prototype.removeListener; EventEmitter.prototype.addListener = EventEmitter.prototype.on; EventEmitter.prefixed = prefix; EventEmitter.EventEmitter = EventEmitter; if ("undefined" !== typeof module) { module.exports = EventEmitter; } } }); // node_modules/earcut/src/earcut.js var require_earcut = __commonJS({ "node_modules/earcut/src/earcut.js"(exports, module) { "use strict"; module.exports = earcut; module.exports.default = earcut; function earcut(data2, holeIndices, dim) { dim = dim || 2; var hasHoles = holeIndices && holeIndices.length, outerLen = hasHoles ? holeIndices[0] * dim : data2.length, outerNode = linkedList(data2, 0, outerLen, dim, true), triangles = []; if (!outerNode || outerNode.next === outerNode.prev) return triangles; var minX, minY, maxX, maxY, x4, y5, invSize; if (hasHoles) outerNode = eliminateHoles(data2, holeIndices, outerNode, dim); if (data2.length > 80 * dim) { minX = maxX = data2[0]; minY = maxY = data2[1]; for (var i11 = dim; i11 < outerLen; i11 += dim) { x4 = data2[i11]; y5 = data2[i11 + 1]; if (x4 < minX) minX = x4; if (y5 < minY) minY = y5; if (x4 > maxX) maxX = x4; if (y5 > maxY) maxY = y5; } invSize = Math.max(maxX - minX, maxY - minY); invSize = invSize !== 0 ? 32767 / invSize : 0; } earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0); return triangles; } function linkedList(data2, start, end, dim, clockwise) { var i11, last; if (clockwise === signedArea(data2, start, end, dim) > 0) { for (i11 = start; i11 < end; i11 += dim) last = insertNode(i11, data2[i11], data2[i11 + 1], last); } else { for (i11 = end - dim; i11 >= start; i11 -= dim) last = insertNode(i11, data2[i11], data2[i11 + 1], last); } if (last && equals(last, last.next)) { removeNode(last); last = last.next; } return last; } function filterPoints(start, end) { if (!start) return start; if (!end) end = start; var p5 = start, again; do { again = false; if (!p5.steiner && (equals(p5, p5.next) || area(p5.prev, p5, p5.next) === 0)) { removeNode(p5); p5 = end = p5.prev; if (p5 === p5.next) break; again = true; } else { p5 = p5.next; } } while (again || p5 !== end); return end; } function earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) { if (!ear) return; if (!pass && invSize) indexCurve(ear, minX, minY, invSize); var stop = ear, prev, next; while (ear.prev !== ear.next) { prev = ear.prev; next = ear.next; if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) { triangles.push(prev.i / dim | 0); triangles.push(ear.i / dim | 0); triangles.push(next.i / dim | 0); removeNode(ear); ear = next.next; stop = next.next; continue; } ear = next; if (ear === stop) { if (!pass) { earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1); } else if (pass === 1) { ear = cureLocalIntersections(filterPoints(ear), triangles, dim); earcutLinked(ear, triangles, dim, minX, minY, invSize, 2); } else if (pass === 2) { splitEarcut(ear, triangles, dim, minX, minY, invSize); } break; } } } function isEar(ear) { var a7 = ear.prev, b5 = ear, c8 = ear.next; if (area(a7, b5, c8) >= 0) return false; var ax = a7.x, bx = b5.x, cx = c8.x, ay = a7.y, by = b5.y, cy = c8.y; var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; var p5 = c8.next; while (p5 !== a7) { if (p5.x >= x0 && p5.x <= x1 && p5.y >= y0 && p5.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p5.x, p5.y) && area(p5.prev, p5, p5.next) >= 0) return false; p5 = p5.next; } return true; } function isEarHashed(ear, minX, minY, invSize) { var a7 = ear.prev, b5 = ear, c8 = ear.next; if (area(a7, b5, c8) >= 0) return false; var ax = a7.x, bx = b5.x, cx = c8.x, ay = a7.y, by = b5.y, cy = c8.y; var x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy; var minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize); var p5 = ear.prevZ, n12 = ear.nextZ; while (p5 && p5.z >= minZ && n12 && n12.z <= maxZ) { if (p5.x >= x0 && p5.x <= x1 && p5.y >= y0 && p5.y <= y1 && p5 !== a7 && p5 !== c8 && pointInTriangle(ax, ay, bx, by, cx, cy, p5.x, p5.y) && area(p5.prev, p5, p5.next) >= 0) return false; p5 = p5.prevZ; if (n12.x >= x0 && n12.x <= x1 && n12.y >= y0 && n12.y <= y1 && n12 !== a7 && n12 !== c8 && pointInTriangle(ax, ay, bx, by, cx, cy, n12.x, n12.y) && area(n12.prev, n12, n12.next) >= 0) return false; n12 = n12.nextZ; } while (p5 && p5.z >= minZ) { if (p5.x >= x0 && p5.x <= x1 && p5.y >= y0 && p5.y <= y1 && p5 !== a7 && p5 !== c8 && pointInTriangle(ax, ay, bx, by, cx, cy, p5.x, p5.y) && area(p5.prev, p5, p5.next) >= 0) return false; p5 = p5.prevZ; } while (n12 && n12.z <= maxZ) { if (n12.x >= x0 && n12.x <= x1 && n12.y >= y0 && n12.y <= y1 && n12 !== a7 && n12 !== c8 && pointInTriangle(ax, ay, bx, by, cx, cy, n12.x, n12.y) && area(n12.prev, n12, n12.next) >= 0) return false; n12 = n12.nextZ; } return true; } function cureLocalIntersections(start, triangles, dim) { var p5 = start; do { var a7 = p5.prev, b5 = p5.next.next; if (!equals(a7, b5) && intersects(a7, p5, p5.next, b5) && locallyInside(a7, b5) && locallyInside(b5, a7)) { triangles.push(a7.i / dim | 0); triangles.push(p5.i / dim | 0); triangles.push(b5.i / dim | 0); removeNode(p5); removeNode(p5.next); p5 = start = b5; } p5 = p5.next; } while (p5 !== start); return filterPoints(p5); } function splitEarcut(start, triangles, dim, minX, minY, invSize) { var a7 = start; do { var b5 = a7.next.next; while (b5 !== a7.prev) { if (a7.i !== b5.i && isValidDiagonal(a7, b5)) { var c8 = splitPolygon(a7, b5); a7 = filterPoints(a7, a7.next); c8 = filterPoints(c8, c8.next); earcutLinked(a7, triangles, dim, minX, minY, invSize, 0); earcutLinked(c8, triangles, dim, minX, minY, invSize, 0); return; } b5 = b5.next; } a7 = a7.next; } while (a7 !== start); } function eliminateHoles(data2, holeIndices, outerNode, dim) { var queue = [], i11, len, start, end, list; for (i11 = 0, len = holeIndices.length; i11 < len; i11++) { start = holeIndices[i11] * dim; end = i11 < len - 1 ? holeIndices[i11 + 1] * dim : data2.length; list = linkedList(data2, start, end, dim, false); if (list === list.next) list.steiner = true; queue.push(getLeftmost(list)); } queue.sort(compareX); for (i11 = 0; i11 < queue.length; i11++) { outerNode = eliminateHole(queue[i11], outerNode); } return outerNode; } function compareX(a7, b5) { return a7.x - b5.x; } function eliminateHole(hole, outerNode) { var bridge = findHoleBridge(hole, outerNode); if (!bridge) { return outerNode; } var bridgeReverse = splitPolygon(bridge, hole); filterPoints(bridgeReverse, bridgeReverse.next); return filterPoints(bridge, bridge.next); } function findHoleBridge(hole, outerNode) { var p5 = outerNode, hx = hole.x, hy = hole.y, qx = -Infinity, m5; do { if (hy <= p5.y && hy >= p5.next.y && p5.next.y !== p5.y) { var x4 = p5.x + (hy - p5.y) * (p5.next.x - p5.x) / (p5.next.y - p5.y); if (x4 <= hx && x4 > qx) { qx = x4; m5 = p5.x < p5.next.x ? p5 : p5.next; if (x4 === hx) return m5; } } p5 = p5.next; } while (p5 !== outerNode); if (!m5) return null; var stop = m5, mx = m5.x, my = m5.y, tanMin = Infinity, tan; p5 = m5; do { if (hx >= p5.x && p5.x >= mx && hx !== p5.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p5.x, p5.y)) { tan = Math.abs(hy - p5.y) / (hx - p5.x); if (locallyInside(p5, hole) && (tan < tanMin || tan === tanMin && (p5.x > m5.x || p5.x === m5.x && sectorContainsSector(m5, p5)))) { m5 = p5; tanMin = tan; } } p5 = p5.next; } while (p5 !== stop); return m5; } function sectorContainsSector(m5, p5) { return area(m5.prev, m5, p5.prev) < 0 && area(p5.next, m5, m5.next) < 0; } function indexCurve(start, minX, minY, invSize) { var p5 = start; do { if (p5.z === 0) p5.z = zOrder(p5.x, p5.y, minX, minY, invSize); p5.prevZ = p5.prev; p5.nextZ = p5.next; p5 = p5.next; } while (p5 !== start); p5.prevZ.nextZ = null; p5.prevZ = null; sortLinked(p5); } function sortLinked(list) { var i11, p5, q2, e15, tail, numMerges, pSize, qSize, inSize = 1; do { p5 = list; list = null; tail = null; numMerges = 0; while (p5) { numMerges++; q2 = p5; pSize = 0; for (i11 = 0; i11 < inSize; i11++) { pSize++; q2 = q2.nextZ; if (!q2) break; } qSize = inSize; while (pSize > 0 || qSize > 0 && q2) { if (pSize !== 0 && (qSize === 0 || !q2 || p5.z <= q2.z)) { e15 = p5; p5 = p5.nextZ; pSize--; } else { e15 = q2; q2 = q2.nextZ; qSize--; } if (tail) tail.nextZ = e15; else list = e15; e15.prevZ = tail; tail = e15; } p5 = q2; } tail.nextZ = null; inSize *= 2; } while (numMerges > 1); return list; } function zOrder(x4, y5, minX, minY, invSize) { x4 = (x4 - minX) * invSize | 0; y5 = (y5 - minY) * invSize | 0; x4 = (x4 | x4 << 8) & 16711935; x4 = (x4 | x4 << 4) & 252645135; x4 = (x4 | x4 << 2) & 858993459; x4 = (x4 | x4 << 1) & 1431655765; y5 = (y5 | y5 << 8) & 16711935; y5 = (y5 | y5 << 4) & 252645135; y5 = (y5 | y5 << 2) & 858993459; y5 = (y5 | y5 << 1) & 1431655765; return x4 | y5 << 1; } function getLeftmost(start) { var p5 = start, leftmost = start; do { if (p5.x < leftmost.x || p5.x === leftmost.x && p5.y < leftmost.y) leftmost = p5; p5 = p5.next; } while (p5 !== start); return leftmost; } function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) { return (cx - px) * (ay - py) >= (ax - px) * (cy - py) && (ax - px) * (by - py) >= (bx - px) * (ay - py) && (bx - px) * (cy - py) >= (cx - px) * (by - py); } function isValidDiagonal(a7, b5) { return a7.next.i !== b5.i && a7.prev.i !== b5.i && !intersectsPolygon(a7, b5) && // dones't intersect other edges (locallyInside(a7, b5) && locallyInside(b5, a7) && middleInside(a7, b5) && // locally visible (area(a7.prev, a7, b5.prev) || area(a7, b5.prev, b5)) || // does not create opposite-facing sectors equals(a7, b5) && area(a7.prev, a7, a7.next) > 0 && area(b5.prev, b5, b5.next) > 0); } function area(p5, q2, r12) { return (q2.y - p5.y) * (r12.x - q2.x) - (q2.x - p5.x) * (r12.y - q2.y); } function equals(p1, p22) { return p1.x === p22.x && p1.y === p22.y; } function intersects(p1, q1, p22, q2) { var o1 = sign5(area(p1, q1, p22)); var o23 = sign5(area(p1, q1, q2)); var o33 = sign5(area(p22, q2, p1)); var o42 = sign5(area(p22, q2, q1)); if (o1 !== o23 && o33 !== o42) return true; if (o1 === 0 && onSegment(p1, p22, q1)) return true; if (o23 === 0 && onSegment(p1, q2, q1)) return true; if (o33 === 0 && onSegment(p22, p1, q2)) return true; if (o42 === 0 && onSegment(p22, q1, q2)) return true; return false; } function onSegment(p5, q2, r12) { return q2.x <= Math.max(p5.x, r12.x) && q2.x >= Math.min(p5.x, r12.x) && q2.y <= Math.max(p5.y, r12.y) && q2.y >= Math.min(p5.y, r12.y); } function sign5(num2) { return num2 > 0 ? 1 : num2 < 0 ? -1 : 0; } function intersectsPolygon(a7, b5) { var p5 = a7; do { if (p5.i !== a7.i && p5.next.i !== a7.i && p5.i !== b5.i && p5.next.i !== b5.i && intersects(p5, p5.next, a7, b5)) return true; p5 = p5.next; } while (p5 !== a7); return false; } function locallyInside(a7, b5) { return area(a7.prev, a7, a7.next) < 0 ? area(a7, b5, a7.next) >= 0 && area(a7, a7.prev, b5) >= 0 : area(a7, b5, a7.prev) < 0 || area(a7, a7.next, b5) < 0; } function middleInside(a7, b5) { var p5 = a7, inside = false, px = (a7.x + b5.x) / 2, py = (a7.y + b5.y) / 2; do { if (p5.y > py !== p5.next.y > py && p5.next.y !== p5.y && px < (p5.next.x - p5.x) * (py - p5.y) / (p5.next.y - p5.y) + p5.x) inside = !inside; p5 = p5.next; } while (p5 !== a7); return inside; } function splitPolygon(a7, b5) { var a22 = new Node2(a7.i, a7.x, a7.y), b22 = new Node2(b5.i, b5.x, b5.y), an = a7.next, bp = b5.prev; a7.next = b5; b5.prev = a7; a22.next = an; an.prev = a22; b22.next = a22; a22.prev = b22; bp.next = b22; b22.prev = bp; return b22; } function insertNode(i11, x4, y5, last) { var p5 = new Node2(i11, x4, y5); if (!last) { p5.prev = p5; p5.next = p5; } else { p5.next = last.next; p5.prev = last; last.next.prev = p5; last.next = p5; } return p5; } function removeNode(p5) { p5.next.prev = p5.prev; p5.prev.next = p5.next; if (p5.prevZ) p5.prevZ.nextZ = p5.nextZ; if (p5.nextZ) p5.nextZ.prevZ = p5.prevZ; } function Node2(i11, x4, y5) { this.i = i11; this.x = x4; this.y = y5; this.prev = null; this.next = null; this.z = 0; this.prevZ = null; this.nextZ = null; this.steiner = false; } earcut.deviation = function(data2, holeIndices, dim, triangles) { var hasHoles = holeIndices && holeIndices.length; var outerLen = hasHoles ? holeIndices[0] * dim : data2.length; var polygonArea = Math.abs(signedArea(data2, 0, outerLen, dim)); if (hasHoles) { for (var i11 = 0, len = holeIndices.length; i11 < len; i11++) { var start = holeIndices[i11] * dim; var end = i11 < len - 1 ? holeIndices[i11 + 1] * dim : data2.length; polygonArea -= Math.abs(signedArea(data2, start, end, dim)); } } var trianglesArea = 0; for (i11 = 0; i11 < triangles.length; i11 += 3) { var a7 = triangles[i11] * dim; var b5 = triangles[i11 + 1] * dim; var c8 = triangles[i11 + 2] * dim; trianglesArea += Math.abs( (data2[a7] - data2[c8]) * (data2[b5 + 1] - data2[a7 + 1]) - (data2[a7] - data2[b5]) * (data2[c8 + 1] - data2[a7 + 1]) ); } return polygonArea === 0 && trianglesArea === 0 ? 0 : Math.abs((trianglesArea - polygonArea) / polygonArea); }; function signedArea(data2, start, end, dim) { var sum = 0; for (var i11 = start, j4 = end - dim; i11 < end; i11 += dim) { sum += (data2[j4] - data2[i11]) * (data2[i11 + 1] + data2[j4 + 1]); j4 = i11; } return sum; } earcut.flatten = function(data2) { var dim = data2[0][0].length, result = { vertices: [], holes: [], dimensions: dim }, holeIndex = 0; for (var i11 = 0; i11 < data2.length; i11++) { for (var j4 = 0; j4 < data2[i11].length; j4++) { for (var d5 = 0; d5 < dim; d5++) result.vertices.push(data2[i11][j4][d5]); } if (i11 > 0) { holeIndex += data2[i11 - 1].length; result.holes.push(holeIndex); } } return result; }; } }); // node_modules/punycode/punycode.js var require_punycode = __commonJS({ "node_modules/punycode/punycode.js"(exports, module) { (function(root) { var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule = typeof module == "object" && module && !module.nodeType && module; var freeGlobal = typeof global == "object" && global; if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) { root = freeGlobal; } var punycode, maxInt = 2147483647, base = 36, tMin = 1, tMax = 26, skew = 38, damp = 700, initialBias = 72, initialN = 128, delimiter = "-", regexPunycode = /^xn--/, regexNonASCII = /[^\x20-\x7E]/, regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, errors = { "overflow": "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" }, baseMinusTMin = base - tMin, floor6 = Math.floor, stringFromCharCode = String.fromCharCode, key; function error(type) { throw new RangeError(errors[type]); } function map6(array, fn) { var length = array.length; var result = []; while (length--) { result[length] = fn(array[length]); } return result; } function mapDomain(string, fn) { var parts = string.split("@"); var result = ""; if (parts.length > 1) { result = parts[0] + "@"; string = parts[1]; } string = string.replace(regexSeparators, "."); var labels = string.split("."); var encoded = map6(labels, fn).join("."); return result + encoded; } function ucs2decode(string) { var output = [], counter = 0, length = string.length, value, extra; while (counter < length) { value = string.charCodeAt(counter++); if (value >= 55296 && value <= 56319 && counter < length) { extra = string.charCodeAt(counter++); if ((extra & 64512) == 56320) { output.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { output.push(value); counter--; } } else { output.push(value); } } return output; } function ucs2encode(array) { return map6(array, function(value) { var output = ""; if (value > 65535) { value -= 65536; output += stringFromCharCode(value >>> 10 & 1023 | 55296); value = 56320 | value & 1023; } output += stringFromCharCode(value); return output; }).join(""); } function basicToDigit(codePoint) { if (codePoint - 48 < 10) { return codePoint - 22; } if (codePoint - 65 < 26) { return codePoint - 65; } if (codePoint - 97 < 26) { return codePoint - 97; } return base; } function digitToBasic(digit, flag) { return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); } function adapt(delta, numPoints, firstTime) { var k4 = 0; delta = firstTime ? floor6(delta / damp) : delta >> 1; delta += floor6(delta / numPoints); for (; delta > baseMinusTMin * tMax >> 1; k4 += base) { delta = floor6(delta / baseMinusTMin); } return floor6(k4 + (baseMinusTMin + 1) * delta / (delta + skew)); } function decode(input) { var output = [], inputLength = input.length, out, i11 = 0, n12 = initialN, bias = initialBias, basic, j4, index2, oldi, w4, k4, digit, t10, baseMinusT; basic = input.lastIndexOf(delimiter); if (basic < 0) { basic = 0; } for (j4 = 0; j4 < basic; ++j4) { if (input.charCodeAt(j4) >= 128) { error("not-basic"); } output.push(input.charCodeAt(j4)); } for (index2 = basic > 0 ? basic + 1 : 0; index2 < inputLength; ) { for (oldi = i11, w4 = 1, k4 = base; ; k4 += base) { if (index2 >= inputLength) { error("invalid-input"); } digit = basicToDigit(input.charCodeAt(index2++)); if (digit >= base || digit > floor6((maxInt - i11) / w4)) { error("overflow"); } i11 += digit * w4; t10 = k4 <= bias ? tMin : k4 >= bias + tMax ? tMax : k4 - bias; if (digit < t10) { break; } baseMinusT = base - t10; if (w4 > floor6(maxInt / baseMinusT)) { error("overflow"); } w4 *= baseMinusT; } out = output.length + 1; bias = adapt(i11 - oldi, out, oldi == 0); if (floor6(i11 / out) > maxInt - n12) { error("overflow"); } n12 += floor6(i11 / out); i11 %= out; output.splice(i11++, 0, n12); } return ucs2encode(output); } function encode(input) { var n12, delta, handledCPCount, basicLength, bias, j4, m5, q2, k4, t10, currentValue, output = [], inputLength, handledCPCountPlusOne, baseMinusT, qMinusT; input = ucs2decode(input); inputLength = input.length; n12 = initialN; delta = 0; bias = initialBias; for (j4 = 0; j4 < inputLength; ++j4) { currentValue = input[j4]; if (currentValue < 128) { output.push(stringFromCharCode(currentValue)); } } handledCPCount = basicLength = output.length; if (basicLength) { output.push(delimiter); } while (handledCPCount < inputLength) { for (m5 = maxInt, j4 = 0; j4 < inputLength; ++j4) { currentValue = input[j4]; if (currentValue >= n12 && currentValue < m5) { m5 = currentValue; } } handledCPCountPlusOne = handledCPCount + 1; if (m5 - n12 > floor6((maxInt - delta) / handledCPCountPlusOne)) { error("overflow"); } delta += (m5 - n12) * handledCPCountPlusOne; n12 = m5; for (j4 = 0; j4 < inputLength; ++j4) { currentValue = input[j4]; if (currentValue < n12 && ++delta > maxInt) { error("overflow"); } if (currentValue == n12) { for (q2 = delta, k4 = base; ; k4 += base) { t10 = k4 <= bias ? tMin : k4 >= bias + tMax ? tMax : k4 - bias; if (q2 < t10) { break; } qMinusT = q2 - t10; baseMinusT = base - t10; output.push( stringFromCharCode(digitToBasic(t10 + qMinusT % baseMinusT, 0)) ); q2 = floor6(qMinusT / baseMinusT); } output.push(stringFromCharCode(digitToBasic(q2, 0))); bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); delta = 0; ++handledCPCount; } } ++delta; ++n12; } return output.join(""); } function toUnicode(input) { return mapDomain(input, function(string) { return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; }); } function toASCII(input) { return mapDomain(input, function(string) { return regexNonASCII.test(string) ? "xn--" + encode(string) : string; }); } punycode = { /** * A string representing the current Punycode.js version number. * @memberOf punycode * @type String */ "version": "1.4.1", /** * An object of methods to convert from JavaScript's internal character * representation (UCS-2) to Unicode code points, and back. * @see <https://mathiasbynens.be/notes/javascript-encoding> * @memberOf punycode * @type Object */ "ucs2": { "decode": ucs2decode, "encode": ucs2encode }, "decode": decode, "encode": encode, "toASCII": toASCII, "toUnicode": toUnicode }; if (typeof define == "function" && typeof define.amd == "object" && define.amd) { define("punycode", function() { return punycode; }); } else if (freeExports && freeModule) { if (module.exports == freeExports) { freeModule.exports = punycode; } else { for (key in punycode) { punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); } } } else { root.punycode = punycode; } })(exports); } }); // node_modules/es-errors/index.js var require_es_errors = __commonJS({ "node_modules/es-errors/index.js"(exports, module) { "use strict"; module.exports = Error; } }); // node_modules/es-errors/eval.js var require_eval = __commonJS({ "node_modules/es-errors/eval.js"(exports, module) { "use strict"; module.exports = EvalError; } }); // node_modules/es-errors/range.js var require_range = __commonJS({ "node_modules/es-errors/range.js"(exports, module) { "use strict"; module.exports = RangeError; } }); // node_modules/es-errors/ref.js var require_ref = __commonJS({ "node_modules/es-errors/ref.js"(exports, module) { "use strict"; module.exports = ReferenceError; } }); // node_modules/es-errors/syntax.js var require_syntax = __commonJS({ "node_modules/es-errors/syntax.js"(exports, module) { "use strict"; module.exports = SyntaxError; } }); // node_modules/es-errors/type.js var require_type = __commonJS({ "node_modules/es-errors/type.js"(exports, module) { "use strict"; module.exports = TypeError; } }); // node_modules/es-errors/uri.js var require_uri = __commonJS({ "node_modules/es-errors/uri.js"(exports, module) { "use strict"; module.exports = URIError; } }); // node_modules/has-symbols/shams.js var require_shams = __commonJS({ "node_modules/has-symbols/shams.js"(exports, module) { "use strict"; module.exports = function hasSymbols() { if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { return false; } if (typeof Symbol.iterator === "symbol") { return true; } var obj = {}; var sym = Symbol("test"); var symObj = Object(sym); if (typeof sym === "string") { return false; } if (Object.prototype.toString.call(sym) !== "[object Symbol]") { return false; } if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { return false; } var symVal = 42; obj[sym] = symVal; for (sym in obj) { return false; } if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { return false; } if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { return false; } var syms = Object.getOwnPropertySymbols(obj); if (syms.length !== 1 || syms[0] !== sym) { return false; } if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } if (typeof Object.getOwnPropertyDescriptor === "function") { var descriptor = Object.getOwnPropertyDescriptor(obj, sym); if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } } return true; }; } }); // node_modules/has-symbols/index.js var require_has_symbols = __commonJS({ "node_modules/has-symbols/index.js"(exports, module) { "use strict"; var origSymbol = typeof Symbol !== "undefined" && Symbol; var hasSymbolSham = require_shams(); module.exports = function hasNativeSymbols() { if (typeof origSymbol !== "function") { return false; } if (typeof Symbol !== "function") { return false; } if (typeof origSymbol("foo") !== "symbol") { return false; } if (typeof Symbol("bar") !== "symbol") { return false; } return hasSymbolSham(); }; } }); // node_modules/has-proto/index.js var require_has_proto = __commonJS({ "node_modules/has-proto/index.js"(exports, module) { "use strict"; var test = { __proto__: null, foo: {} }; var $Object = Object; module.exports = function hasProto() { return { __proto__: test }.foo === test.foo && !(test instanceof $Object); }; } }); // node_modules/function-bind/implementation.js var require_implementation = __commonJS({ "node_modules/function-bind/implementation.js"(exports, module) { "use strict"; var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; var toStr = Object.prototype.toString; var max6 = Math.max; var funcType = "[object Function]"; var concatty = function concatty2(a7, b5) { var arr = []; for (var i11 = 0; i11 < a7.length; i11 += 1) { arr[i11] = a7[i11]; } for (var j4 = 0; j4 < b5.length; j4 += 1) { arr[j4 + a7.length] = b5[j4]; } return arr; }; var slicy = function slicy2(arrLike, offset3) { var arr = []; for (var i11 = offset3 || 0, j4 = 0; i11 < arrLike.length; i11 += 1, j4 += 1) { arr[j4] = arrLike[i11]; } return arr; }; var joiny = function(arr, joiner) { var str = ""; for (var i11 = 0; i11 < arr.length; i11 += 1) { str += arr[i11]; if (i11 + 1 < arr.length) { str += joiner; } } return str; }; module.exports = function bind(that) { var target = this; if (typeof target !== "function" || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } var args = slicy(arguments, 1); var bound; var binder = function() { if (this instanceof bound) { var result = target.apply( this, concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; } return target.apply( that, concatty(args, arguments) ); }; var boundLength = max6(0, target.length - args.length); var boundArgs = []; for (var i11 = 0; i11 < boundLength; i11++) { boundArgs[i11] = "$" + i11; } bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); if (target.prototype) { var Empty = function Empty2() { }; Empty.prototype = target.prototype; bound.prototype = new Empty(); Empty.prototype = null; } return bound; }; } }); // node_modules/function-bind/index.js var require_function_bind = __commonJS({ "node_modules/function-bind/index.js"(exports, module) { "use strict"; var implementation = require_implementation(); module.exports = Function.prototype.bind || implementation; } }); // node_modules/hasown/index.js var require_hasown = __commonJS({ "node_modules/hasown/index.js"(exports, module) { "use strict"; var call = Function.prototype.call; var $hasOwn = Object.prototype.hasOwnProperty; var bind = require_function_bind(); module.exports = bind.call(call, $hasOwn); } }); // node_modules/get-intrinsic/index.js var require_get_intrinsic = __commonJS({ "node_modules/get-intrinsic/index.js"(exports, module) { "use strict"; var undefined2; var $Error = require_es_errors(); var $EvalError = require_eval(); var $RangeError = require_range(); var $ReferenceError = require_ref(); var $SyntaxError = require_syntax(); var $TypeError = require_type(); var $URIError = require_uri(); var $Function = Function; var getEvalledConstructor = function(expressionSyntax) { try { return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); } catch (e15) { } }; var $gOPD = Object.getOwnPropertyDescriptor; if ($gOPD) { try { $gOPD({}, ""); } catch (e15) { $gOPD = null; } } var throwTypeError = function() { throw new $TypeError(); }; var ThrowTypeError = $gOPD ? function() { try { arguments.callee; return throwTypeError; } catch (calleeThrows) { try { return $gOPD(arguments, "callee").get; } catch (gOPDthrows) { return throwTypeError; } } }() : throwTypeError; var hasSymbols = require_has_symbols()(); var hasProto = require_has_proto()(); var getProto = Object.getPrototypeOf || (hasProto ? function(x4) { return x4.__proto__; } : null); var needsEval = {}; var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); var INTRINSICS = { __proto__: null, "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, "%AsyncFromSyncIteratorPrototype%": undefined2, "%AsyncFunction%": needsEval, "%AsyncGenerator%": needsEval, "%AsyncGeneratorFunction%": needsEval, "%AsyncIteratorPrototype%": needsEval, "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, "%Boolean%": Boolean, "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, "%Date%": Date, "%decodeURI%": decodeURI, "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, "%Error%": $Error, "%eval%": eval, // eslint-disable-line no-eval "%EvalError%": $EvalError, "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, "%Function%": $Function, "%GeneratorFunction%": needsEval, "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, "%isFinite%": isFinite, "%isNaN%": isNaN, "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, "%JSON%": typeof JSON === "object" ? JSON : undefined2, "%Map%": typeof Map === "undefined" ? undefined2 : Map, "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), "%Math%": Math, "%Number%": Number, "%Object%": Object, "%parseFloat%": parseFloat, "%parseInt%": parseInt, "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, "%RangeError%": $RangeError, "%ReferenceError%": $ReferenceError, "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set === "undefined" ? undefined2 : Set, "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, "%String%": String, "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, "%Symbol%": hasSymbols ? Symbol :