(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a3, b3) => { for (var prop in b3 || (b3 = {})) if (__hasOwnProp.call(b3, prop)) __defNormalProp(a3, prop, b3[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b3)) { if (__propIsEnum.call(b3, prop)) __defNormalProp(a3, prop, b3[prop]); } return a3; }; var __spreadProps = (a3, b3) => __defProps(a3, __getOwnPropDescs(b3)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols) for (var prop of __getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var __esm = (fn3, res) => function __init() { return fn3 && (res = (0, fn3[__getOwnPropNames(fn3)[0]])(fn3 = 0)), res; }; var __commonJS = (cb, mod3) => function __require() { return mod3 || (0, cb[__getOwnPropNames(cb)[0]])((mod3 = { exports: {} }).exports, mod3), mod3.exports; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod3, isNodeMode, target) => (target = mod3 != null ? __create(__getProtoOf(mod3)) : {}, __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 || !mod3 || !mod3.__esModule ? __defProp(target, "default", { value: mod3, enumerable: true }) : target, mod3 )); // ../../../node_modules/@rails/actioncable/src/adapters.js var adapters_default; var init_adapters = __esm({ "../../../node_modules/@rails/actioncable/src/adapters.js"() { adapters_default = { logger: self.console, WebSocket: self.WebSocket }; } }); // ../../../node_modules/@rails/actioncable/src/logger.js var logger_default; var init_logger = __esm({ "../../../node_modules/@rails/actioncable/src/logger.js"() { init_adapters(); logger_default = { log(...messages) { if (this.enabled) { messages.push(Date.now()); adapters_default.logger.log("[ActionCable]", ...messages); } } }; } }); // ../../../node_modules/@rails/actioncable/src/connection_monitor.js var now, secondsSince, ConnectionMonitor, connection_monitor_default; var init_connection_monitor = __esm({ "../../../node_modules/@rails/actioncable/src/connection_monitor.js"() { init_logger(); now = () => (/* @__PURE__ */ new Date()).getTime(); secondsSince = (time) => (now() - time) / 1e3; ConnectionMonitor = class { constructor(connection) { this.visibilityDidChange = this.visibilityDidChange.bind(this); this.connection = connection; this.reconnectAttempts = 0; } start() { if (!this.isRunning()) { this.startedAt = now(); delete this.stoppedAt; this.startPolling(); addEventListener("visibilitychange", this.visibilityDidChange); logger_default.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`); } } stop() { if (this.isRunning()) { this.stoppedAt = now(); this.stopPolling(); removeEventListener("visibilitychange", this.visibilityDidChange); logger_default.log("ConnectionMonitor stopped"); } } isRunning() { return this.startedAt && !this.stoppedAt; } recordPing() { this.pingedAt = now(); } recordConnect() { this.reconnectAttempts = 0; this.recordPing(); delete this.disconnectedAt; logger_default.log("ConnectionMonitor recorded connect"); } recordDisconnect() { this.disconnectedAt = now(); logger_default.log("ConnectionMonitor recorded disconnect"); } // Private startPolling() { this.stopPolling(); this.poll(); } stopPolling() { clearTimeout(this.pollTimeout); } poll() { this.pollTimeout = setTimeout( () => { this.reconnectIfStale(); this.poll(); }, this.getPollInterval() ); } getPollInterval() { const { staleThreshold, reconnectionBackoffRate } = this.constructor; const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10)); const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate; const jitter = jitterMax * Math.random(); return staleThreshold * 1e3 * backoff * (1 + jitter); } reconnectIfStale() { if (this.connectionIsStale()) { logger_default.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`); this.reconnectAttempts++; if (this.disconnectedRecently()) { logger_default.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`); } else { logger_default.log("ConnectionMonitor reopening"); this.connection.reopen(); } } } get refreshedAt() { return this.pingedAt ? this.pingedAt : this.startedAt; } connectionIsStale() { return secondsSince(this.refreshedAt) > this.constructor.staleThreshold; } disconnectedRecently() { return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold; } visibilityDidChange() { if (document.visibilityState === "visible") { setTimeout( () => { if (this.connectionIsStale() || !this.connection.isOpen()) { logger_default.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`); this.connection.reopen(); } }, 200 ); } } }; ConnectionMonitor.staleThreshold = 6; ConnectionMonitor.reconnectionBackoffRate = 0.15; connection_monitor_default = ConnectionMonitor; } }); // ../../../node_modules/@rails/actioncable/src/internal.js var internal_default; var init_internal = __esm({ "../../../node_modules/@rails/actioncable/src/internal.js"() { internal_default = { "message_types": { "welcome": "welcome", "disconnect": "disconnect", "ping": "ping", "confirmation": "confirm_subscription", "rejection": "reject_subscription" }, "disconnect_reasons": { "unauthorized": "unauthorized", "invalid_request": "invalid_request", "server_restart": "server_restart" }, "default_mount_path": "/cable", "protocols": [ "actioncable-v1-json", "actioncable-unsupported" ] }; } }); // ../../../node_modules/@rails/actioncable/src/connection.js var message_types, protocols, supportedProtocols, indexOf, Connection, connection_default; var init_connection = __esm({ "../../../node_modules/@rails/actioncable/src/connection.js"() { init_adapters(); init_connection_monitor(); init_internal(); init_logger(); ({ message_types, protocols } = internal_default); supportedProtocols = protocols.slice(0, protocols.length - 1); indexOf = [].indexOf; Connection = class { constructor(consumer2) { this.open = this.open.bind(this); this.consumer = consumer2; this.subscriptions = this.consumer.subscriptions; this.monitor = new connection_monitor_default(this); this.disconnected = true; } send(data2) { if (this.isOpen()) { this.webSocket.send(JSON.stringify(data2)); return true; } else { return false; } } open() { if (this.isActive()) { logger_default.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`); return false; } else { logger_default.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`); if (this.webSocket) { this.uninstallEventHandlers(); } this.webSocket = new adapters_default.WebSocket(this.consumer.url, protocols); this.installEventHandlers(); this.monitor.start(); return true; } } close({ allowReconnect } = { allowReconnect: true }) { if (!allowReconnect) { this.monitor.stop(); } if (this.isOpen()) { return this.webSocket.close(); } } reopen() { logger_default.log(`Reopening WebSocket, current state is ${this.getState()}`); if (this.isActive()) { try { return this.close(); } catch (error2) { logger_default.log("Failed to reopen WebSocket", error2); } finally { logger_default.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`); setTimeout(this.open, this.constructor.reopenDelay); } } else { return this.open(); } } getProtocol() { if (this.webSocket) { return this.webSocket.protocol; } } isOpen() { return this.isState("open"); } isActive() { return this.isState("open", "connecting"); } // Private isProtocolSupported() { return indexOf.call(supportedProtocols, this.getProtocol()) >= 0; } isState(...states) { return indexOf.call(states, this.getState()) >= 0; } getState() { if (this.webSocket) { for (let state in adapters_default.WebSocket) { if (adapters_default.WebSocket[state] === this.webSocket.readyState) { return state.toLowerCase(); } } } return null; } installEventHandlers() { for (let eventName in this.events) { const handler3 = this.events[eventName].bind(this); this.webSocket[`on${eventName}`] = handler3; } } uninstallEventHandlers() { for (let eventName in this.events) { this.webSocket[`on${eventName}`] = function() { }; } } }; Connection.reopenDelay = 500; Connection.prototype.events = { message(event) { if (!this.isProtocolSupported()) { return; } const { identifier, message: message2, reason, reconnect, type } = JSON.parse(event.data); switch (type) { case message_types.welcome: this.monitor.recordConnect(); return this.subscriptions.reload(); case message_types.disconnect: logger_default.log(`Disconnecting. Reason: ${reason}`); return this.close({ allowReconnect: reconnect }); case message_types.ping: return this.monitor.recordPing(); case message_types.confirmation: this.subscriptions.confirmSubscription(identifier); return this.subscriptions.notify(identifier, "connected"); case message_types.rejection: return this.subscriptions.reject(identifier); default: return this.subscriptions.notify(identifier, "received", message2); } }, open() { logger_default.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`); this.disconnected = false; if (!this.isProtocolSupported()) { logger_default.log("Protocol is unsupported. Stopping monitor and disconnecting."); return this.close({ allowReconnect: false }); } }, close(event) { logger_default.log("WebSocket onclose event"); if (this.disconnected) { return; } this.disconnected = true; this.monitor.recordDisconnect(); return this.subscriptions.notifyAll("disconnected", { willAttemptReconnect: this.monitor.isRunning() }); }, error() { logger_default.log("WebSocket onerror event"); } }; connection_default = Connection; } }); // ../../../node_modules/@rails/actioncable/src/subscription.js var extend, Subscription; var init_subscription = __esm({ "../../../node_modules/@rails/actioncable/src/subscription.js"() { extend = function(object, properties) { if (properties != null) { for (let key in properties) { const value = properties[key]; object[key] = value; } } return object; }; Subscription = class { constructor(consumer2, params = {}, mixin) { this.consumer = consumer2; this.identifier = JSON.stringify(params); extend(this, mixin); } // Perform a channel action with the optional data passed as an attribute perform(action, data2 = {}) { data2.action = action; return this.send(data2); } send(data2) { return this.consumer.send({ command: "message", identifier: this.identifier, data: JSON.stringify(data2) }); } unsubscribe() { return this.consumer.subscriptions.remove(this); } }; } }); // ../../../node_modules/@rails/actioncable/src/subscription_guarantor.js var SubscriptionGuarantor, subscription_guarantor_default; var init_subscription_guarantor = __esm({ "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js"() { init_logger(); SubscriptionGuarantor = class { constructor(subscriptions) { this.subscriptions = subscriptions; this.pendingSubscriptions = []; } guarantee(subscription) { if (this.pendingSubscriptions.indexOf(subscription) == -1) { logger_default.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`); this.pendingSubscriptions.push(subscription); } else { logger_default.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`); } this.startGuaranteeing(); } forget(subscription) { logger_default.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`); this.pendingSubscriptions = this.pendingSubscriptions.filter((s3) => s3 !== subscription); } startGuaranteeing() { this.stopGuaranteeing(); this.retrySubscribing(); } stopGuaranteeing() { clearTimeout(this.retryTimeout); } retrySubscribing() { this.retryTimeout = setTimeout( () => { if (this.subscriptions && typeof this.subscriptions.subscribe === "function") { this.pendingSubscriptions.map((subscription) => { logger_default.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`); this.subscriptions.subscribe(subscription); }); } }, 500 ); } }; subscription_guarantor_default = SubscriptionGuarantor; } }); // ../../../node_modules/@rails/actioncable/src/subscriptions.js var Subscriptions; var init_subscriptions = __esm({ "../../../node_modules/@rails/actioncable/src/subscriptions.js"() { init_subscription(); init_subscription_guarantor(); init_logger(); Subscriptions = class { constructor(consumer2) { this.consumer = consumer2; this.guarantor = new subscription_guarantor_default(this); this.subscriptions = []; } create(channelName, mixin) { const channel = channelName; const params = typeof channel === "object" ? channel : { channel }; const subscription = new Subscription(this.consumer, params, mixin); return this.add(subscription); } // Private add(subscription) { this.subscriptions.push(subscription); this.consumer.ensureActiveConnection(); this.notify(subscription, "initialized"); this.subscribe(subscription); return subscription; } remove(subscription) { this.forget(subscription); if (!this.findAll(subscription.identifier).length) { this.sendCommand(subscription, "unsubscribe"); } return subscription; } reject(identifier) { return this.findAll(identifier).map((subscription) => { this.forget(subscription); this.notify(subscription, "rejected"); return subscription; }); } forget(subscription) { this.guarantor.forget(subscription); this.subscriptions = this.subscriptions.filter((s3) => s3 !== subscription); return subscription; } findAll(identifier) { return this.subscriptions.filter((s3) => s3.identifier === identifier); } reload() { return this.subscriptions.map((subscription) => this.subscribe(subscription)); } notifyAll(callbackName, ...args) { return this.subscriptions.map((subscription) => this.notify(subscription, callbackName, ...args)); } notify(subscription, callbackName, ...args) { let subscriptions; if (typeof subscription === "string") { subscriptions = this.findAll(subscription); } else { subscriptions = [subscription]; } return subscriptions.map((subscription2) => typeof subscription2[callbackName] === "function" ? subscription2[callbackName](...args) : void 0); } subscribe(subscription) { if (this.sendCommand(subscription, "subscribe")) { this.guarantor.guarantee(subscription); } } confirmSubscription(identifier) { logger_default.log(`Subscription confirmed ${identifier}`); this.findAll(identifier).map((subscription) => this.guarantor.forget(subscription)); } sendCommand(subscription, command) { const { identifier } = subscription; return this.consumer.send({ command, identifier }); } }; } }); // ../../../node_modules/@rails/actioncable/src/consumer.js function createWebSocketURL(url) { if (typeof url === "function") { url = url(); } if (url && !/^wss?:/i.test(url)) { const a3 = document.createElement("a"); a3.href = url; a3.href = a3.href; a3.protocol = a3.protocol.replace("http", "ws"); return a3.href; } else { return url; } } var Consumer; var init_consumer = __esm({ "../../../node_modules/@rails/actioncable/src/consumer.js"() { init_connection(); init_subscriptions(); Consumer = class { constructor(url) { this._url = url; this.subscriptions = new Subscriptions(this); this.connection = new connection_default(this); } get url() { return createWebSocketURL(this._url); } send(data2) { return this.connection.send(data2); } connect() { return this.connection.open(); } disconnect() { return this.connection.close({ allowReconnect: false }); } ensureActiveConnection() { if (!this.connection.isActive()) { return this.connection.open(); } } }; } }); // ../../../node_modules/@rails/actioncable/src/index.js var src_exports = {}; __export(src_exports, { Connection: () => connection_default, ConnectionMonitor: () => connection_monitor_default, Consumer: () => Consumer, INTERNAL: () => internal_default, Subscription: () => Subscription, SubscriptionGuarantor: () => subscription_guarantor_default, Subscriptions: () => Subscriptions, adapters: () => adapters_default, createConsumer: () => createConsumer, createWebSocketURL: () => createWebSocketURL, getConfig: () => getConfig, logger: () => logger_default }); function createConsumer(url = getConfig("url") || internal_default.default_mount_path) { return new Consumer(url); } function getConfig(name) { const element = document.head.querySelector(`meta[name='action-cable-${name}']`); if (element) { return element.getAttribute("content"); } } var init_src = __esm({ "../../../node_modules/@rails/actioncable/src/index.js"() { init_connection(); init_connection_monitor(); init_consumer(); init_internal(); init_subscription(); init_subscriptions(); init_subscription_guarantor(); init_adapters(); init_logger(); } }); // ../../../node_modules/lodash/lodash.js var require_lodash = __commonJS({ "../../../node_modules/lodash/lodash.js"(exports, module) { (function() { var undefined2; var VERSION = "4.17.21"; var LARGE_ARRAY_SIZE = 200; var CORE_ERROR_TEXT = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", FUNC_ERROR_TEXT = "Expected a function", INVALID_TEMPL_VAR_ERROR_TEXT = "Invalid `variable` option passed into `_.template`"; var HASH_UNDEFINED = "__lodash_hash_undefined__"; var MAX_MEMOIZE_SIZE = 500; var PLACEHOLDER = "__lodash_placeholder__"; var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4; var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2; var WRAP_BIND_FLAG = 1, WRAP_BIND_KEY_FLAG = 2, WRAP_CURRY_BOUND_FLAG = 4, WRAP_CURRY_FLAG = 8, WRAP_CURRY_RIGHT_FLAG = 16, WRAP_PARTIAL_FLAG = 32, WRAP_PARTIAL_RIGHT_FLAG = 64, WRAP_ARY_FLAG = 128, WRAP_REARG_FLAG = 256, WRAP_FLIP_FLAG = 512; var DEFAULT_TRUNC_LENGTH = 30, DEFAULT_TRUNC_OMISSION = "..."; var HOT_COUNT = 800, HOT_SPAN = 16; var LAZY_FILTER_FLAG = 1, LAZY_MAP_FLAG = 2, LAZY_WHILE_FLAG = 3; var INFINITY = 1 / 0, MAX_SAFE_INTEGER = 9007199254740991, MAX_INTEGER = 17976931348623157e292, NAN = 0 / 0; var MAX_ARRAY_LENGTH = 4294967295, MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; var wrapFlags = [ ["ary", WRAP_ARY_FLAG], ["bind", WRAP_BIND_FLAG], ["bindKey", WRAP_BIND_KEY_FLAG], ["curry", WRAP_CURRY_FLAG], ["curryRight", WRAP_CURRY_RIGHT_FLAG], ["flip", WRAP_FLIP_FLAG], ["partial", WRAP_PARTIAL_FLAG], ["partialRight", WRAP_PARTIAL_RIGHT_FLAG], ["rearg", WRAP_REARG_FLAG] ]; var argsTag = "[object Arguments]", arrayTag = "[object Array]", asyncTag = "[object AsyncFunction]", boolTag = "[object Boolean]", dateTag = "[object Date]", domExcTag = "[object DOMException]", errorTag = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag = "[object Map]", numberTag = "[object Number]", nullTag = "[object Null]", objectTag = "[object Object]", promiseTag = "[object Promise]", proxyTag = "[object Proxy]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]", undefinedTag = "[object Undefined]", weakMapTag = "[object WeakMap]", weakSetTag = "[object WeakSet]"; var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]"; var reEmptyStringLeading = /\b__p \+= '';/g, reEmptyStringMiddle = /\b(__p \+=) '' \+/g, reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, reUnescapedHtml = /[&<>"']/g, reHasEscapedHtml = RegExp(reEscapedHtml.source), reHasUnescapedHtml = RegExp(reUnescapedHtml.source); var reEscape = /<%-([\s\S]+?)%>/g, reEvaluate = /<%([\s\S]+?)%>/g, reInterpolate = /<%=([\s\S]+?)%>/g; var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/, rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, reHasRegExpChar = RegExp(reRegExpChar.source); var reTrimStart = /^\s+/; var reWhitespace = /\s/; var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, reSplitDetails = /,? & /; var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; var reEscapeChar = /\\(\\)?/g; var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; var reFlags = /\w*$/; var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; var reIsBinary = /^0b[01]+$/i; var reIsHostCtor = /^\[object .+?Constructor\]$/; var reIsOctal = /^0o[0-7]+$/i; var reIsUint = /^(?:0|[1-9]\d*)$/; var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; var reNoMatch = /($^)/; var reUnescapedString = /['\n\r\u2028\u2029\\]/g; var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; var rsApos = "['\u2019]", rsAstral = "[" + rsAstralRange + "]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d"; var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")"; var reApos = RegExp(rsApos, "g"); var reComboMark = RegExp(rsCombo, "g"); var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g"); var reUnicodeWord = RegExp([ rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")", rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")", rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower, rsUpper + "+" + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji ].join("|"), "g"); var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]"); var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; var contextProps = [ "Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout" ]; var templateCounter = -1; var typedArrayTags = {}; typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true; typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; var cloneableTags = {}; cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false; var deburredLetters = { // Latin-1 Supplement block. "\xC0": "A", "\xC1": "A", "\xC2": "A", "\xC3": "A", "\xC4": "A", "\xC5": "A", "\xE0": "a", "\xE1": "a", "\xE2": "a", "\xE3": "a", "\xE4": "a", "\xE5": "a", "\xC7": "C", "\xE7": "c", "\xD0": "D", "\xF0": "d", "\xC8": "E", "\xC9": "E", "\xCA": "E", "\xCB": "E", "\xE8": "e", "\xE9": "e", "\xEA": "e", "\xEB": "e", "\xCC": "I", "\xCD": "I", "\xCE": "I", "\xCF": "I", "\xEC": "i", "\xED": "i", "\xEE": "i", "\xEF": "i", "\xD1": "N", "\xF1": "n", "\xD2": "O", "\xD3": "O", "\xD4": "O", "\xD5": "O", "\xD6": "O", "\xD8": "O", "\xF2": "o", "\xF3": "o", "\xF4": "o", "\xF5": "o", "\xF6": "o", "\xF8": "o", "\xD9": "U", "\xDA": "U", "\xDB": "U", "\xDC": "U", "\xF9": "u", "\xFA": "u", "\xFB": "u", "\xFC": "u", "\xDD": "Y", "\xFD": "y", "\xFF": "y", "\xC6": "Ae", "\xE6": "ae", "\xDE": "Th", "\xFE": "th", "\xDF": "ss", // Latin Extended-A block. "\u0100": "A", "\u0102": "A", "\u0104": "A", "\u0101": "a", "\u0103": "a", "\u0105": "a", "\u0106": "C", "\u0108": "C", "\u010A": "C", "\u010C": "C", "\u0107": "c", "\u0109": "c", "\u010B": "c", "\u010D": "c", "\u010E": "D", "\u0110": "D", "\u010F": "d", "\u0111": "d", "\u0112": "E", "\u0114": "E", "\u0116": "E", "\u0118": "E", "\u011A": "E", "\u0113": "e", "\u0115": "e", "\u0117": "e", "\u0119": "e", "\u011B": "e", "\u011C": "G", "\u011E": "G", "\u0120": "G", "\u0122": "G", "\u011D": "g", "\u011F": "g", "\u0121": "g", "\u0123": "g", "\u0124": "H", "\u0126": "H", "\u0125": "h", "\u0127": "h", "\u0128": "I", "\u012A": "I", "\u012C": "I", "\u012E": "I", "\u0130": "I", "\u0129": "i", "\u012B": "i", "\u012D": "i", "\u012F": "i", "\u0131": "i", "\u0134": "J", "\u0135": "j", "\u0136": "K", "\u0137": "k", "\u0138": "k", "\u0139": "L", "\u013B": "L", "\u013D": "L", "\u013F": "L", "\u0141": "L", "\u013A": "l", "\u013C": "l", "\u013E": "l", "\u0140": "l", "\u0142": "l", "\u0143": "N", "\u0145": "N", "\u0147": "N", "\u014A": "N", "\u0144": "n", "\u0146": "n", "\u0148": "n", "\u014B": "n", "\u014C": "O", "\u014E": "O", "\u0150": "O", "\u014D": "o", "\u014F": "o", "\u0151": "o", "\u0154": "R", "\u0156": "R", "\u0158": "R", "\u0155": "r", "\u0157": "r", "\u0159": "r", "\u015A": "S", "\u015C": "S", "\u015E": "S", "\u0160": "S", "\u015B": "s", "\u015D": "s", "\u015F": "s", "\u0161": "s", "\u0162": "T", "\u0164": "T", "\u0166": "T", "\u0163": "t", "\u0165": "t", "\u0167": "t", "\u0168": "U", "\u016A": "U", "\u016C": "U", "\u016E": "U", "\u0170": "U", "\u0172": "U", "\u0169": "u", "\u016B": "u", "\u016D": "u", "\u016F": "u", "\u0171": "u", "\u0173": "u", "\u0174": "W", "\u0175": "w", "\u0176": "Y", "\u0177": "y", "\u0178": "Y", "\u0179": "Z", "\u017B": "Z", "\u017D": "Z", "\u017A": "z", "\u017C": "z", "\u017E": "z", "\u0132": "IJ", "\u0133": "ij", "\u0152": "Oe", "\u0153": "oe", "\u0149": "'n", "\u017F": "s" }; var htmlEscapes = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }; var htmlUnescapes = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'" }; var stringEscapes = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }; var freeParseFloat = parseFloat, freeParseInt = parseInt; var freeGlobal = typeof global == "object" && global && global.Object === Object && global; var freeSelf = typeof self == "object" && self && self.Object === Object && self; var root = freeGlobal || freeSelf || Function("return this")(); var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports; var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module; var moduleExports = freeModule && freeModule.exports === freeExports; var freeProcess = moduleExports && freeGlobal.process; var nodeUtil = function() { try { var types = freeModule && freeModule.require && freeModule.require("util").types; if (types) { return types; } return freeProcess && freeProcess.binding && freeProcess.binding("util"); } catch (e3) { } }(); var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, nodeIsDate = nodeUtil && nodeUtil.isDate, nodeIsMap = nodeUtil && nodeUtil.isMap, nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, nodeIsSet = nodeUtil && nodeUtil.isSet, nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; function apply(func, thisArg, args) { switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); case 3: return func.call(thisArg, args[0], args[1], args[2]); } return func.apply(thisArg, args); } function arrayAggregator(array, setter, iteratee, accumulator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { var value = array[index]; setter(accumulator, value, iteratee(value), array); } return accumulator; } function arrayEach(array, iteratee) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (iteratee(array[index], index, array) === false) { break; } } return array; } function arrayEachRight(array, iteratee) { var length = array == null ? 0 : array.length; while (length--) { if (iteratee(array[length], length, array) === false) { break; } } return array; } function arrayEvery(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (!predicate(array[index], index, array)) { return false; } } return true; } function arrayFilter(array, predicate) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result[resIndex++] = value; } } return result; } function arrayIncludes(array, value) { var length = array == null ? 0 : array.length; return !!length && baseIndexOf(array, value, 0) > -1; } function arrayIncludesWith(array, value, comparator) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (comparator(value, array[index])) { return true; } } return false; } function arrayMap(array, iteratee) { var index = -1, length = array == null ? 0 : array.length, result = Array(length); while (++index < length) { result[index] = iteratee(array[index], index, array); } return result; } function arrayPush(array, values) { var index = -1, length = values.length, offset2 = array.length; while (++index < length) { array[offset2 + index] = values[index]; } return array; } function arrayReduce(array, iteratee, accumulator, initAccum) { var index = -1, length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[++index]; } while (++index < length) { accumulator = iteratee(accumulator, array[index], index, array); } return accumulator; } function arrayReduceRight(array, iteratee, accumulator, initAccum) { var length = array == null ? 0 : array.length; if (initAccum && length) { accumulator = array[--length]; } while (length--) { accumulator = iteratee(accumulator, array[length], length, array); } return accumulator; } function arraySome(array, predicate) { var index = -1, length = array == null ? 0 : array.length; while (++index < length) { if (predicate(array[index], index, array)) { return true; } } return false; } var asciiSize = baseProperty("length"); function asciiToArray(string) { return string.split(""); } function asciiWords(string) { return string.match(reAsciiWord) || []; } function baseFindKey(collection, predicate, eachFunc) { var result; eachFunc(collection, function(value, key, collection2) { if (predicate(value, key, collection2)) { result = key; return false; } }); return result; } function baseFindIndex(array, predicate, fromIndex, fromRight) { var length = array.length, index = fromIndex + (fromRight ? 1 : -1); while (fromRight ? index-- : ++index < length) { if (predicate(array[index], index, array)) { return index; } } return -1; } function baseIndexOf(array, value, fromIndex) { return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex); } function baseIndexOfWith(array, value, fromIndex, comparator) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (comparator(array[index], value)) { return index; } } return -1; } function baseIsNaN(value) { return value !== value; } function baseMean(array, iteratee) { var length = array == null ? 0 : array.length; return length ? baseSum(array, iteratee) / length : NAN; } function baseProperty(key) { return function(object) { return object == null ? undefined2 : object[key]; }; } function basePropertyOf(object) { return function(key) { return object == null ? undefined2 : object[key]; }; } function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { eachFunc(collection, function(value, index, collection2) { accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection2); }); return accumulator; } function baseSortBy(array, comparer) { var length = array.length; array.sort(comparer); while (length--) { array[length] = array[length].value; } return array; } function baseSum(array, iteratee) { var result, index = -1, length = array.length; while (++index < length) { var current = iteratee(array[index]); if (current !== undefined2) { result = result === undefined2 ? current : result + current; } } return result; } function baseTimes(n3, iteratee) { var index = -1, result = Array(n3); while (++index < n3) { result[index] = iteratee(index); } return result; } function baseToPairs(object, props) { return arrayMap(props, function(key) { return [key, object[key]]; }); } function baseTrim(string) { return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, "") : string; } function baseUnary(func) { return function(value) { return func(value); }; } function baseValues(object, props) { return arrayMap(props, function(key) { return object[key]; }); } function cacheHas(cache2, key) { return cache2.has(key); } function charsStartIndex(strSymbols, chrSymbols) { var index = -1, length = strSymbols.length; while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function charsEndIndex(strSymbols, chrSymbols) { var index = strSymbols.length; while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } return index; } function countHolders(array, placeholder) { var length = array.length, result = 0; while (length--) { if (array[length] === placeholder) { ++result; } } return result; } var deburrLetter = basePropertyOf(deburredLetters); var escapeHtmlChar = basePropertyOf(htmlEscapes); function escapeStringChar(chr) { return "\\" + stringEscapes[chr]; } function getValue(object, key) { return object == null ? undefined2 : object[key]; } function hasUnicode(string) { return reHasUnicode.test(string); } function hasUnicodeWord(string) { return reHasUnicodeWord.test(string); } function iteratorToArray(iterator) { var data2, result = []; while (!(data2 = iterator.next()).done) { result.push(data2.value); } return result; } function mapToArray(map) { var index = -1, result = Array(map.size); map.forEach(function(value, key) { result[++index] = [key, value]; }); return result; } function overArg(func, transform) { return function(arg) { return func(transform(arg)); }; } function replaceHolders(array, placeholder) { var index = -1, length = array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (value === placeholder || value === PLACEHOLDER) { array[index] = PLACEHOLDER; result[resIndex++] = index; } } return result; } function setToArray(set3) { var index = -1, result = Array(set3.size); set3.forEach(function(value) { result[++index] = value; }); return result; } function setToPairs(set3) { var index = -1, result = Array(set3.size); set3.forEach(function(value) { result[++index] = [value, value]; }); return result; } function strictIndexOf(array, value, fromIndex) { var index = fromIndex - 1, length = array.length; while (++index < length) { if (array[index] === value) { return index; } } return -1; } function strictLastIndexOf(array, value, fromIndex) { var index = fromIndex + 1; while (index--) { if (array[index] === value) { return index; } } return index; } function stringSize(string) { return hasUnicode(string) ? unicodeSize(string) : asciiSize(string); } function stringToArray(string) { return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string); } function trimmedEndIndex(string) { var index = string.length; while (index-- && reWhitespace.test(string.charAt(index))) { } return index; } var unescapeHtmlChar = basePropertyOf(htmlUnescapes); function unicodeSize(string) { var result = reUnicode.lastIndex = 0; while (reUnicode.test(string)) { ++result; } return result; } function unicodeToArray(string) { return string.match(reUnicode) || []; } function unicodeWords(string) { return string.match(reUnicodeWord) || []; } var runInContext = function runInContext2(context) { context = context == null ? root : _3.defaults(root.Object(), context, _3.pick(root, contextProps)); var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; var hasOwnProperty3 = objectProto.hasOwnProperty; var idCounter2 = 0; var maskSrcKey = function() { var uid2 = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ""); return uid2 ? "Symbol(src)_1." + uid2 : ""; }(); var nativeObjectToString = objectProto.toString; var objectCtorString = funcToString.call(Object2); var oldDash = root._; var reIsNative = RegExp2( "^" + funcToString.call(hasOwnProperty3).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); var Buffer2 = moduleExports ? context.Buffer : undefined2, Symbol2 = context.Symbol, Uint8Array2 = context.Uint8Array, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : undefined2, getPrototype = overArg(Object2.getPrototypeOf, Object2), objectCreate = Object2.create, propertyIsEnumerable = objectProto.propertyIsEnumerable, splice = arrayProto.splice, spreadableSymbol = Symbol2 ? Symbol2.isConcatSpreadable : undefined2, symIterator = Symbol2 ? Symbol2.iterator : undefined2, symToStringTag = Symbol2 ? Symbol2.toStringTag : undefined2; var defineProperty = function() { try { var func = getNative(Object2, "defineProperty"); func({}, "", {}); return func; } catch (e3) { } }(); var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); var metaMap = WeakMap2 && new WeakMap2(); var realNames = {}; var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; function lodash(value) { if (isObjectLike(value) && !isArray2(value) && !(value instanceof LazyWrapper)) { if (value instanceof LodashWrapper) { return value; } if (hasOwnProperty3.call(value, "__wrapped__")) { return wrapperClone(value); } } return new LodashWrapper(value); } var baseCreate = function() { function object() { } return function(proto) { if (!isObject3(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object.prototype = proto; var result2 = new object(); object.prototype = undefined2; return result2; }; }(); function baseLodash() { } function LodashWrapper(value, chainAll) { this.__wrapped__ = value; this.__actions__ = []; this.__chain__ = !!chainAll; this.__index__ = 0; this.__values__ = undefined2; } lodash.templateSettings = { /** * Used to detect `data` property values to be HTML-escaped. * * @memberOf _.templateSettings * @type {RegExp} */ "escape": reEscape, /** * Used to detect code to be evaluated. * * @memberOf _.templateSettings * @type {RegExp} */ "evaluate": reEvaluate, /** * Used to detect `data` property values to inject. * * @memberOf _.templateSettings * @type {RegExp} */ "interpolate": reInterpolate, /** * Used to reference the data object in the template text. * * @memberOf _.templateSettings * @type {string} */ "variable": "", /** * Used to import variables into the compiled template. * * @memberOf _.templateSettings * @type {Object} */ "imports": { /** * A reference to the `lodash` function. * * @memberOf _.templateSettings.imports * @type {Function} */ "_": lodash } }; lodash.prototype = baseLodash.prototype; lodash.prototype.constructor = lodash; LodashWrapper.prototype = baseCreate(baseLodash.prototype); LodashWrapper.prototype.constructor = LodashWrapper; function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = MAX_ARRAY_LENGTH; this.__views__ = []; } function lazyClone() { var result2 = new LazyWrapper(this.__wrapped__); result2.__actions__ = copyArray(this.__actions__); result2.__dir__ = this.__dir__; result2.__filtered__ = this.__filtered__; result2.__iteratees__ = copyArray(this.__iteratees__); result2.__takeCount__ = this.__takeCount__; result2.__views__ = copyArray(this.__views__); return result2; } function lazyReverse() { if (this.__filtered__) { var result2 = new LazyWrapper(this); result2.__dir__ = -1; result2.__filtered__ = true; } else { result2 = this.clone(); result2.__dir__ *= -1; } return result2; } function lazyValue() { var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start5 = view.start, end2 = view.end, length = end2 - start5, index = isRight ? end2 : start5 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); if (!isArr || !isRight && arrLength == length && takeCount == length) { return baseWrapperValue(array, this.__actions__); } var result2 = []; outer: while (length-- && resIndex < takeCount) { index += dir; var iterIndex = -1, value = array[index]; while (++iterIndex < iterLength) { var data2 = iteratees[iterIndex], iteratee2 = data2.iteratee, type = data2.type, computed = iteratee2(value); if (type == LAZY_MAP_FLAG) { value = computed; } else if (!computed) { if (type == LAZY_FILTER_FLAG) { continue outer; } else { break outer; } } } result2[resIndex++] = value; } return result2; } LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; function Hash(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; this.size = 0; } function hashDelete(key) { var result2 = this.has(key) && delete this.__data__[key]; this.size -= result2 ? 1 : 0; return result2; } function hashGet(key) { var data2 = this.__data__; if (nativeCreate) { var result2 = data2[key]; return result2 === HASH_UNDEFINED ? undefined2 : result2; } return hasOwnProperty3.call(data2, key) ? data2[key] : undefined2; } function hashHas(key) { var data2 = this.__data__; return nativeCreate ? data2[key] !== undefined2 : hasOwnProperty3.call(data2, key); } function hashSet(key, value) { var data2 = this.__data__; this.size += this.has(key) ? 0 : 1; data2[key] = nativeCreate && value === undefined2 ? HASH_UNDEFINED : value; return this; } Hash.prototype.clear = hashClear; Hash.prototype["delete"] = hashDelete; Hash.prototype.get = hashGet; Hash.prototype.has = hashHas; Hash.prototype.set = hashSet; function ListCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function listCacheClear() { this.__data__ = []; this.size = 0; } function listCacheDelete(key) { var data2 = this.__data__, index = assocIndexOf(data2, key); if (index < 0) { return false; } var lastIndex = data2.length - 1; if (index == lastIndex) { data2.pop(); } else { splice.call(data2, index, 1); } --this.size; return true; } function listCacheGet(key) { var data2 = this.__data__, index = assocIndexOf(data2, key); return index < 0 ? undefined2 : data2[index][1]; } function listCacheHas(key) { return assocIndexOf(this.__data__, key) > -1; } function listCacheSet(key, value) { var data2 = this.__data__, index = assocIndexOf(data2, key); if (index < 0) { ++this.size; data2.push([key, value]); } else { data2[index][1] = value; } return this; } ListCache.prototype.clear = listCacheClear; ListCache.prototype["delete"] = listCacheDelete; ListCache.prototype.get = listCacheGet; ListCache.prototype.has = listCacheHas; ListCache.prototype.set = listCacheSet; function MapCache(entries) { var index = -1, length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { var entry = entries[index]; this.set(entry[0], entry[1]); } } function mapCacheClear() { this.size = 0; this.__data__ = { "hash": new Hash(), "map": new (Map2 || ListCache)(), "string": new Hash() }; } function mapCacheDelete(key) { var result2 = getMapData(this, key)["delete"](key); this.size -= result2 ? 1 : 0; return result2; } function mapCacheGet(key) { return getMapData(this, key).get(key); } function mapCacheHas(key) { return getMapData(this, key).has(key); } function mapCacheSet(key, value) { var data2 = getMapData(this, key), size3 = data2.size; data2.set(key, value); this.size += data2.size == size3 ? 0 : 1; return this; } MapCache.prototype.clear = mapCacheClear; MapCache.prototype["delete"] = mapCacheDelete; MapCache.prototype.get = mapCacheGet; MapCache.prototype.has = mapCacheHas; MapCache.prototype.set = mapCacheSet; function SetCache(values2) { var index = -1, length = values2 == null ? 0 : values2.length; this.__data__ = new MapCache(); while (++index < length) { this.add(values2[index]); } } function setCacheAdd(value) { this.__data__.set(value, HASH_UNDEFINED); return this; } function setCacheHas(value) { return this.__data__.has(value); } SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; SetCache.prototype.has = setCacheHas; function Stack(entries) { var data2 = this.__data__ = new ListCache(entries); this.size = data2.size; } function stackClear() { this.__data__ = new ListCache(); this.size = 0; } function stackDelete(key) { var data2 = this.__data__, result2 = data2["delete"](key); this.size = data2.size; return result2; } function stackGet(key) { return this.__data__.get(key); } function stackHas(key) { return this.__data__.has(key); } function stackSet(key, value) { var data2 = this.__data__; if (data2 instanceof ListCache) { var pairs = data2.__data__; if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) { pairs.push([key, value]); this.size = ++data2.size; return this; } data2 = this.__data__ = new MapCache(pairs); } data2.set(key, value); this.size = data2.size; return this; } Stack.prototype.clear = stackClear; Stack.prototype["delete"] = stackDelete; Stack.prototype.get = stackGet; Stack.prototype.has = stackHas; Stack.prototype.set = stackSet; function arrayLikeKeys(value, inherited) { var isArr = isArray2(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType2 = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType2, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length; for (var key in value) { if ((inherited || hasOwnProperty3.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode. (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. isType2 && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties. isIndex(key, length)))) { result2.push(key); } } return result2; } function arraySample(array) { var length = array.length; return length ? array[baseRandom(0, length - 1)] : undefined2; } function arraySampleSize(array, n3) { return shuffleSelf(copyArray(array), baseClamp(n3, 0, array.length)); } function arrayShuffle(array) { return shuffleSelf(copyArray(array)); } function assignMergeValue(object, key, value) { if (value !== undefined2 && !eq(object[key], value) || value === undefined2 && !(key in object)) { baseAssignValue(object, key, value); } } function assignValue(object, key, value) { var objValue = object[key]; if (!(hasOwnProperty3.call(object, key) && eq(objValue, value)) || value === undefined2 && !(key in object)) { baseAssignValue(object, key, value); } } function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } function baseAggregator(collection, setter, iteratee2, accumulator) { baseEach(collection, function(value, key, collection2) { setter(accumulator, value, iteratee2(value), collection2); }); return accumulator; } function baseAssign(object, source) { return object && copyObject(source, keys(source), object); } function baseAssignIn(object, source) { return object && copyObject(source, keysIn(source), object); } function baseAssignValue(object, key, value) { if (key == "__proto__" && defineProperty) { defineProperty(object, key, { "configurable": true, "enumerable": true, "value": value, "writable": true }); } else { object[key] = value; } } function baseAt(object, paths) { var index = -1, length = paths.length, result2 = Array2(length), skip = object == null; while (++index < length) { result2[index] = skip ? undefined2 : get3(object, paths[index]); } return result2; } function baseClamp(number, lower, upper) { if (number === number) { if (upper !== undefined2) { number = number <= upper ? number : upper; } if (lower !== undefined2) { number = number >= lower ? number : lower; } } return number; } function baseClone(value, bitmask, customizer, key, object, stack) { var result2, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; if (customizer) { result2 = object ? customizer(value, key, object, stack) : customizer(value); } if (result2 !== undefined2) { return result2; } if (!isObject3(value)) { return value; } var isArr = isArray2(value); if (isArr) { result2 = initCloneArray(value); if (!isDeep) { return copyArray(value, result2); } } else { var tag = getTag(value), isFunc = tag == funcTag || tag == genTag; if (isBuffer(value)) { return cloneBuffer(value, isDeep); } if (tag == objectTag || tag == argsTag || isFunc && !object) { result2 = isFlat || isFunc ? {} : initCloneObject(value); if (!isDeep) { return isFlat ? copySymbolsIn(value, baseAssignIn(result2, value)) : copySymbols(value, baseAssign(result2, value)); } } else { if (!cloneableTags[tag]) { return object ? value : {}; } result2 = initCloneByTag(value, tag, isDeep); } } stack || (stack = new Stack()); var stacked = stack.get(value); if (stacked) { return stacked; } stack.set(value, result2); if (isSet(value)) { value.forEach(function(subValue) { result2.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); }); } else if (isMap2(value)) { value.forEach(function(subValue, key2) { result2.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); } var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys; var props = isArr ? undefined2 : keysFunc(value); arrayEach(props || value, function(subValue, key2) { if (props) { key2 = subValue; subValue = value[key2]; } assignValue(result2, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); }); return result2; } function baseConforms(source) { var props = keys(source); return function(object) { return baseConformsTo(object, source, props); }; } function baseConformsTo(object, source, props) { var length = props.length; if (object == null) { return !length; } object = Object2(object); while (length--) { var key = props[length], predicate = source[key], value = object[key]; if (value === undefined2 && !(key in object) || !predicate(value)) { return false; } } return true; } function baseDelay(func, wait, args) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return setTimeout2(function() { func.apply(undefined2, args); }, wait); } function baseDifference(array, values2, iteratee2, comparator) { var index = -1, includes2 = arrayIncludes, isCommon = true, length = array.length, result2 = [], valuesLength = values2.length; if (!length) { return result2; } if (iteratee2) { values2 = arrayMap(values2, baseUnary(iteratee2)); } if (comparator) { includes2 = arrayIncludesWith; isCommon = false; } else if (values2.length >= LARGE_ARRAY_SIZE) { includes2 = cacheHas; isCommon = false; values2 = new SetCache(values2); } outer: while (++index < length) { var value = array[index], computed = iteratee2 == null ? value : iteratee2(value); value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var valuesIndex = valuesLength; while (valuesIndex--) { if (values2[valuesIndex] === computed) { continue outer; } } result2.push(value); } else if (!includes2(values2, computed, comparator)) { result2.push(value); } } return result2; } var baseEach = createBaseEach(baseForOwn); var baseEachRight = createBaseEach(baseForOwnRight, true); function baseEvery(collection, predicate) { var result2 = true; baseEach(collection, function(value, index, collection2) { result2 = !!predicate(value, index, collection2); return result2; }); return result2; } function baseExtremum(array, iteratee2, comparator) { var index = -1, length = array.length; while (++index < length) { var value = array[index], current = iteratee2(value); if (current != null && (computed === undefined2 ? current === current && !isSymbol2(current) : comparator(current, computed))) { var computed = current, result2 = value; } } return result2; } function baseFill(array, value, start5, end2) { var length = array.length; start5 = toInteger(start5); if (start5 < 0) { start5 = -start5 > length ? 0 : length + start5; } end2 = end2 === undefined2 || end2 > length ? length : toInteger(end2); if (end2 < 0) { end2 += length; } end2 = start5 > end2 ? 0 : toLength(end2); while (start5 < end2) { array[start5++] = value; } return array; } function baseFilter(collection, predicate) { var result2 = []; baseEach(collection, function(value, index, collection2) { if (predicate(value, index, collection2)) { result2.push(value); } }); return result2; } function baseFlatten(array, depth, predicate, isStrict, result2) { var index = -1, length = array.length; predicate || (predicate = isFlattenable); result2 || (result2 = []); while (++index < length) { var value = array[index]; if (depth > 0 && predicate(value)) { if (depth > 1) { baseFlatten(value, depth - 1, predicate, isStrict, result2); } else { arrayPush(result2, value); } } else if (!isStrict) { result2[result2.length] = value; } } return result2; } var baseFor = createBaseFor(); var baseForRight = createBaseFor(true); function baseForOwn(object, iteratee2) { return object && baseFor(object, iteratee2, keys); } function baseForOwnRight(object, iteratee2) { return object && baseForRight(object, iteratee2, keys); } function baseFunctions(object, props) { return arrayFilter(props, function(key) { return isFunction(object[key]); }); } function baseGet(object, path) { path = castPath(path, object); var index = 0, length = path.length; while (object != null && index < length) { object = object[toKey(path[index++])]; } return index && index == length ? object : undefined2; } function baseGetAllKeys(object, keysFunc, symbolsFunc) { var result2 = keysFunc(object); return isArray2(object) ? result2 : arrayPush(result2, symbolsFunc(object)); } function baseGetTag(value) { if (value == null) { return value === undefined2 ? undefinedTag : nullTag; } return symToStringTag && symToStringTag in Object2(value) ? getRawTag(value) : objectToString2(value); } function baseGt(value, other) { return value > other; } function baseHas(object, key) { return object != null && hasOwnProperty3.call(object, key); } function baseHasIn(object, key) { return object != null && key in Object2(object); } function baseInRange(number, start5, end2) { return number >= nativeMin(start5, end2) && number < nativeMax(start5, end2); } function baseIntersection(arrays, iteratee2, comparator) { var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; while (othIndex--) { var array = arrays[othIndex]; if (othIndex && iteratee2) { array = arrayMap(array, baseUnary(iteratee2)); } maxLength = nativeMin(array.length, maxLength); caches[othIndex] = !comparator && (iteratee2 || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined2; } array = arrays[0]; var index = -1, seen = caches[0]; outer: while (++index < length && result2.length < maxLength) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; value = comparator || value !== 0 ? value : 0; if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { othIndex = othLength; while (--othIndex) { var cache2 = caches[othIndex]; if (!(cache2 ? cacheHas(cache2, computed) : includes2(arrays[othIndex], computed, comparator))) { continue outer; } } if (seen) { seen.push(computed); } result2.push(value); } } return result2; } function baseInverter(object, setter, iteratee2, accumulator) { baseForOwn(object, function(value, key, object2) { setter(accumulator, iteratee2(value), key, object2); }); return accumulator; } function baseInvoke(object, path, args) { path = castPath(path, object); object = parent(object, path); var func = object == null ? object : object[toKey(last(path))]; return func == null ? undefined2 : apply(func, object, args); } function baseIsArguments(value) { return isObjectLike(value) && baseGetTag(value) == argsTag; } function baseIsArrayBuffer(value) { return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; } function baseIsDate(value) { return isObjectLike(value) && baseGetTag(value) == dateTag; } function baseIsEqual(value, other, bitmask, customizer, stack) { if (value === other) { return true; } if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { return value !== value && other !== other; } return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other); objTag = objTag == argsTag ? objectTag : objTag; othTag = othTag == argsTag ? objectTag : othTag; var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag; if (isSameTag && isBuffer(object)) { if (!isBuffer(other)) { return false; } objIsArr = true; objIsObj = false; } if (isSameTag && !objIsObj) { stack || (stack = new Stack()); return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } if (!(bitmask & COMPARE_PARTIAL_FLAG)) { var objIsWrapped = objIsObj && hasOwnProperty3.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty3.call(other, "__wrapped__"); if (objIsWrapped || othIsWrapped) { var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other; stack || (stack = new Stack()); return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); } } if (!isSameTag) { return false; } stack || (stack = new Stack()); return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } function baseIsMap(value) { return isObjectLike(value) && getTag(value) == mapTag; } function baseIsMatch(object, source, matchData, customizer) { var index = matchData.length, length = index, noCustomizer = !customizer; if (object == null) { return !length; } object = Object2(object); while (index--) { var data2 = matchData[index]; if (noCustomizer && data2[2] ? data2[1] !== object[data2[0]] : !(data2[0] in object)) { return false; } } while (++index < length) { data2 = matchData[index]; var key = data2[0], objValue = object[key], srcValue = data2[1]; if (noCustomizer && data2[2]) { if (objValue === undefined2 && !(key in object)) { return false; } } else { var stack = new Stack(); if (customizer) { var result2 = customizer(objValue, srcValue, key, object, source, stack); } if (!(result2 === undefined2 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result2)) { return false; } } } return true; } function baseIsNative(value) { if (!isObject3(value) || isMasked(value)) { return false; } var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } function baseIsRegExp(value) { return isObjectLike(value) && baseGetTag(value) == regexpTag; } function baseIsSet(value) { return isObjectLike(value) && getTag(value) == setTag; } function baseIsTypedArray(value) { return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } function baseIteratee(value) { if (typeof value == "function") { return value; } if (value == null) { return identity; } if (typeof value == "object") { return isArray2(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value); } return property(value); } function baseKeys(object) { if (!isPrototype(object)) { return nativeKeys(object); } var result2 = []; for (var key in Object2(object)) { if (hasOwnProperty3.call(object, key) && key != "constructor") { result2.push(key); } } return result2; } function baseKeysIn(object) { if (!isObject3(object)) { return nativeKeysIn(object); } var isProto = isPrototype(object), result2 = []; for (var key in object) { if (!(key == "constructor" && (isProto || !hasOwnProperty3.call(object, key)))) { result2.push(key); } } return result2; } function baseLt(value, other) { return value < other; } function baseMap(collection, iteratee2) { var index = -1, result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value, key, collection2) { result2[++index] = iteratee2(value, key, collection2); }); return result2; } function baseMatches(source) { var matchData = getMatchData(source); if (matchData.length == 1 && matchData[0][2]) { return matchesStrictComparable(matchData[0][0], matchData[0][1]); } return function(object) { return object === source || baseIsMatch(object, source, matchData); }; } function baseMatchesProperty(path, srcValue) { if (isKey(path) && isStrictComparable(srcValue)) { return matchesStrictComparable(toKey(path), srcValue); } return function(object) { var objValue = get3(object, path); return objValue === undefined2 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); }; } function baseMerge(object, source, srcIndex, customizer, stack) { if (object === source) { return; } baseFor(source, function(srcValue, key) { stack || (stack = new Stack()); if (isObject3(srcValue)) { baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); } else { var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : undefined2; if (newValue === undefined2) { newValue = srcValue; } assignMergeValue(object, key, newValue); } }, keysIn); } function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue); if (stacked) { assignMergeValue(object, key, stacked); return; } var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : undefined2; var isCommon = newValue === undefined2; if (isCommon) { var isArr = isArray2(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue); newValue = srcValue; if (isArr || isBuff || isTyped) { if (isArray2(objValue)) { newValue = objValue; } else if (isArrayLikeObject(objValue)) { newValue = copyArray(objValue); } else if (isBuff) { isCommon = false; newValue = cloneBuffer(srcValue, true); } else if (isTyped) { isCommon = false; newValue = cloneTypedArray(srcValue, true); } else { newValue = []; } } else if (isPlainObject(srcValue) || isArguments(srcValue)) { newValue = objValue; if (isArguments(objValue)) { newValue = toPlainObject(objValue); } else if (!isObject3(objValue) || isFunction(objValue)) { newValue = initCloneObject(srcValue); } } else { isCommon = false; } } if (isCommon) { stack.set(srcValue, newValue); mergeFunc(newValue, srcValue, srcIndex, customizer, stack); stack["delete"](srcValue); } assignMergeValue(object, key, newValue); } function baseNth(array, n3) { var length = array.length; if (!length) { return; } n3 += n3 < 0 ? length : 0; return isIndex(n3, length) ? array[n3] : undefined2; } function baseOrderBy(collection, iteratees, orders) { if (iteratees.length) { iteratees = arrayMap(iteratees, function(iteratee2) { if (isArray2(iteratee2)) { return function(value) { return baseGet(value, iteratee2.length === 1 ? iteratee2[0] : iteratee2); }; } return iteratee2; }); } else { iteratees = [identity]; } var index = -1; iteratees = arrayMap(iteratees, baseUnary(getIteratee())); var result2 = baseMap(collection, function(value, key, collection2) { var criteria = arrayMap(iteratees, function(iteratee2) { return iteratee2(value); }); return { "criteria": criteria, "index": ++index, "value": value }; }); return baseSortBy(result2, function(object, other) { return compareMultiple(object, other, orders); }); } function basePick(object, paths) { return basePickBy(object, paths, function(value, path) { return hasIn(object, path); }); } function basePickBy(object, paths, predicate) { var index = -1, length = paths.length, result2 = {}; while (++index < length) { var path = paths[index], value = baseGet(object, path); if (predicate(value, path)) { baseSet(result2, castPath(path, object), value); } } return result2; } function basePropertyDeep(path) { return function(object) { return baseGet(object, path); }; } function basePullAll(array, values2, iteratee2, comparator) { var indexOf3 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; if (array === values2) { values2 = copyArray(values2); } if (iteratee2) { seen = arrayMap(array, baseUnary(iteratee2)); } while (++index < length) { var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value; while ((fromIndex = indexOf3(seen, computed, fromIndex, comparator)) > -1) { if (seen !== array) { splice.call(seen, fromIndex, 1); } splice.call(array, fromIndex, 1); } } return array; } function basePullAt(array, indexes) { var length = array ? indexes.length : 0, lastIndex = length - 1; while (length--) { var index = indexes[length]; if (length == lastIndex || index !== previous) { var previous = index; if (isIndex(index)) { splice.call(array, index, 1); } else { baseUnset(array, index); } } } return array; } function baseRandom(lower, upper) { return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); } function baseRange(start5, end2, step, fromRight) { var index = -1, length = nativeMax(nativeCeil((end2 - start5) / (step || 1)), 0), result2 = Array2(length); while (length--) { result2[fromRight ? length : ++index] = start5; start5 += step; } return result2; } function baseRepeat(string, n3) { var result2 = ""; if (!string || n3 < 1 || n3 > MAX_SAFE_INTEGER) { return result2; } do { if (n3 % 2) { result2 += string; } n3 = nativeFloor(n3 / 2); if (n3) { string += string; } } while (n3); return result2; } function baseRest(func, start5) { return setToString(overRest(func, start5, identity), func + ""); } function baseSample(collection) { return arraySample(values(collection)); } function baseSampleSize(collection, n3) { var array = values(collection); return shuffleSelf(array, baseClamp(n3, 0, array.length)); } function baseSet(object, path, value, customizer) { if (!isObject3(object)) { return object; } path = castPath(path, object); var index = -1, length = path.length, lastIndex = length - 1, nested = object; while (nested != null && ++index < length) { var key = toKey(path[index]), newValue = value; if (key === "__proto__" || key === "constructor" || key === "prototype") { return object; } if (index != lastIndex) { var objValue = nested[key]; newValue = customizer ? customizer(objValue, key, nested) : undefined2; if (newValue === undefined2) { newValue = isObject3(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {}; } } assignValue(nested, key, newValue); nested = nested[key]; } return object; } var baseSetData = !metaMap ? identity : function(func, data2) { metaMap.set(func, data2); return func; }; var baseSetToString = !defineProperty ? identity : function(func, string) { return defineProperty(func, "toString", { "configurable": true, "enumerable": false, "value": constant(string), "writable": true }); }; function baseShuffle(collection) { return shuffleSelf(values(collection)); } function baseSlice(array, start5, end2) { var index = -1, length = array.length; if (start5 < 0) { start5 = -start5 > length ? 0 : length + start5; } end2 = end2 > length ? length : end2; if (end2 < 0) { end2 += length; } length = start5 > end2 ? 0 : end2 - start5 >>> 0; start5 >>>= 0; var result2 = Array2(length); while (++index < length) { result2[index] = array[index + start5]; } return result2; } function baseSome(collection, predicate) { var result2; baseEach(collection, function(value, index, collection2) { result2 = predicate(value, index, collection2); return !result2; }); return !!result2; } function baseSortedIndex(array, value, retHighest) { var low = 0, high = array == null ? low : array.length; if (typeof value == "number" && value === value && high <= HALF_MAX_ARRAY_LENGTH) { while (low < high) { var mid = low + high >>> 1, computed = array[mid]; if (computed !== null && !isSymbol2(computed) && (retHighest ? computed <= value : computed < value)) { low = mid + 1; } else { high = mid; } } return high; } return baseSortedIndexBy(array, value, identity, retHighest); } function baseSortedIndexBy(array, value, iteratee2, retHighest) { var low = 0, high = array == null ? 0 : array.length; if (high === 0) { return 0; } value = iteratee2(value); var valIsNaN = value !== value, valIsNull = value === null, valIsSymbol = isSymbol2(value), valIsUndefined = value === undefined2; while (low < high) { var mid = nativeFloor((low + high) / 2), computed = iteratee2(array[mid]), othIsDefined = computed !== undefined2, othIsNull = computed === null, othIsReflexive = computed === computed, othIsSymbol = isSymbol2(computed); if (valIsNaN) { var setLow = retHighest || othIsReflexive; } else if (valIsUndefined) { setLow = othIsReflexive && (retHighest || othIsDefined); } else if (valIsNull) { setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); } else if (valIsSymbol) { setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); } else if (othIsNull || othIsSymbol) { setLow = false; } else { setLow = retHighest ? computed <= value : computed < value; } if (setLow) { low = mid + 1; } else { high = mid; } } return nativeMin(high, MAX_ARRAY_INDEX); } function baseSortedUniq(array, iteratee2) { var index = -1, length = array.length, resIndex = 0, result2 = []; while (++index < length) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; if (!index || !eq(computed, seen)) { var seen = computed; result2[resIndex++] = value === 0 ? 0 : value; } } return result2; } function baseToNumber(value) { if (typeof value == "number") { return value; } if (isSymbol2(value)) { return NAN; } return +value; } function baseToString(value) { if (typeof value == "string") { return value; } if (isArray2(value)) { return arrayMap(value, baseToString) + ""; } if (isSymbol2(value)) { return symbolToString ? symbolToString.call(value) : ""; } var result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } function baseUniq(array, iteratee2, comparator) { var index = -1, includes2 = arrayIncludes, length = array.length, isCommon = true, result2 = [], seen = result2; if (comparator) { isCommon = false; includes2 = arrayIncludesWith; } else if (length >= LARGE_ARRAY_SIZE) { var set4 = iteratee2 ? null : createSet(array); if (set4) { return setToArray(set4); } isCommon = false; includes2 = cacheHas; seen = new SetCache(); } else { seen = iteratee2 ? [] : result2; } outer: while (++index < length) { var value = array[index], computed = iteratee2 ? iteratee2(value) : value; value = comparator || value !== 0 ? value : 0; if (isCommon && computed === computed) { var seenIndex = seen.length; while (seenIndex--) { if (seen[seenIndex] === computed) { continue outer; } } if (iteratee2) { seen.push(computed); } result2.push(value); } else if (!includes2(seen, computed, comparator)) { if (seen !== result2) { seen.push(computed); } result2.push(value); } } return result2; } function baseUnset(object, path) { path = castPath(path, object); object = parent(object, path); return object == null || delete object[toKey(last(path))]; } function baseUpdate(object, path, updater, customizer) { return baseSet(object, path, updater(baseGet(object, path)), customizer); } function baseWhile(array, predicate, isDrop, fromRight) { var length = array.length, index = fromRight ? length : -1; while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) { } return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index); } function baseWrapperValue(value, actions) { var result2 = value; if (result2 instanceof LazyWrapper) { result2 = result2.value(); } return arrayReduce(actions, function(result3, action) { return action.func.apply(action.thisArg, arrayPush([result3], action.args)); }, result2); } function baseXor(arrays, iteratee2, comparator) { var length = arrays.length; if (length < 2) { return length ? baseUniq(arrays[0]) : []; } var index = -1, result2 = Array2(length); while (++index < length) { var array = arrays[index], othIndex = -1; while (++othIndex < length) { if (othIndex != index) { result2[index] = baseDifference(result2[index] || array, arrays[othIndex], iteratee2, comparator); } } } return baseUniq(baseFlatten(result2, 1), iteratee2, comparator); } function baseZipObject(props, values2, assignFunc) { var index = -1, length = props.length, valsLength = values2.length, result2 = {}; while (++index < length) { var value = index < valsLength ? values2[index] : undefined2; assignFunc(result2, props[index], value); } return result2; } function castArrayLikeObject(value) { return isArrayLikeObject(value) ? value : []; } function castFunction(value) { return typeof value == "function" ? value : identity; } function castPath(value, object) { if (isArray2(value)) { return value; } return isKey(value, object) ? [value] : stringToPath(toString(value)); } var castRest = baseRest; function castSlice(array, start5, end2) { var length = array.length; end2 = end2 === undefined2 ? length : end2; return !start5 && end2 >= length ? array : baseSlice(array, start5, end2); } var clearTimeout2 = ctxClearTimeout || function(id2) { return root.clearTimeout(id2); }; function cloneBuffer(buffer, isDeep) { if (isDeep) { return buffer.slice(); } var length = buffer.length, result2 = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); buffer.copy(result2); return result2; } function cloneArrayBuffer(arrayBuffer) { var result2 = new arrayBuffer.constructor(arrayBuffer.byteLength); new Uint8Array2(result2).set(new Uint8Array2(arrayBuffer)); return result2; } function cloneDataView(dataView, isDeep) { var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); } function cloneRegExp(regexp) { var result2 = new regexp.constructor(regexp.source, reFlags.exec(regexp)); result2.lastIndex = regexp.lastIndex; return result2; } function cloneSymbol(symbol) { return symbolValueOf ? Object2(symbolValueOf.call(symbol)) : {}; } function cloneTypedArray(typedArray, isDeep) { var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); } function compareAscending(value, other) { if (value !== other) { var valIsDefined = value !== undefined2, valIsNull = value === null, valIsReflexive = value === value, valIsSymbol = isSymbol2(value); var othIsDefined = other !== undefined2, othIsNull = other === null, othIsReflexive = other === other, othIsSymbol = isSymbol2(other); if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) { return 1; } if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) { return -1; } } return 0; } function compareMultiple(object, other, orders) { var index = -1, objCriteria = object.criteria, othCriteria = other.criteria, length = objCriteria.length, ordersLength = orders.length; while (++index < length) { var result2 = compareAscending(objCriteria[index], othCriteria[index]); if (result2) { if (index >= ordersLength) { return result2; } var order2 = orders[index]; return result2 * (order2 == "desc" ? -1 : 1); } } return object.index - other.index; } function composeArgs(args, partials, holders, isCurried) { var argsIndex = -1, argsLength = args.length, holdersLength = holders.length, leftIndex = -1, leftLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(leftLength + rangeLength), isUncurried = !isCurried; while (++leftIndex < leftLength) { result2[leftIndex] = partials[leftIndex]; } while (++argsIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result2[holders[argsIndex]] = args[argsIndex]; } } while (rangeLength--) { result2[leftIndex++] = args[argsIndex++]; } return result2; } function composeArgsRight(args, partials, holders, isCurried) { var argsIndex = -1, argsLength = args.length, holdersIndex = -1, holdersLength = holders.length, rightIndex = -1, rightLength = partials.length, rangeLength = nativeMax(argsLength - holdersLength, 0), result2 = Array2(rangeLength + rightLength), isUncurried = !isCurried; while (++argsIndex < rangeLength) { result2[argsIndex] = args[argsIndex]; } var offset2 = argsIndex; while (++rightIndex < rightLength) { result2[offset2 + rightIndex] = partials[rightIndex]; } while (++holdersIndex < holdersLength) { if (isUncurried || argsIndex < argsLength) { result2[offset2 + holders[holdersIndex]] = args[argsIndex++]; } } return result2; } function copyArray(source, array) { var index = -1, length = source.length; array || (array = Array2(length)); while (++index < length) { array[index] = source[index]; } return array; } function copyObject(source, props, object, customizer) { var isNew = !object; object || (object = {}); var index = -1, length = props.length; while (++index < length) { var key = props[index]; var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined2; if (newValue === undefined2) { newValue = source[key]; } if (isNew) { baseAssignValue(object, key, newValue); } else { assignValue(object, key, newValue); } } return object; } function copySymbols(source, object) { return copyObject(source, getSymbols(source), object); } function copySymbolsIn(source, object) { return copyObject(source, getSymbolsIn(source), object); } function createAggregator(setter, initializer) { return function(collection, iteratee2) { var func = isArray2(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {}; return func(collection, setter, getIteratee(iteratee2, 2), accumulator); }; } function createAssigner(assigner) { return baseRest(function(object, sources) { var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : undefined2, guard = length > 2 ? sources[2] : undefined2; customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : undefined2; if (guard && isIterateeCall(sources[0], sources[1], guard)) { customizer = length < 3 ? undefined2 : customizer; length = 1; } object = Object2(object); while (++index < length) { var source = sources[index]; if (source) { assigner(object, source, index, customizer); } } return object; }); } function createBaseEach(eachFunc, fromRight) { return function(collection, iteratee2) { if (collection == null) { return collection; } if (!isArrayLike(collection)) { return eachFunc(collection, iteratee2); } var length = collection.length, index = fromRight ? length : -1, iterable = Object2(collection); while (fromRight ? index-- : ++index < length) { if (iteratee2(iterable[index], index, iterable) === false) { break; } } return collection; }; } function createBaseFor(fromRight) { return function(object, iteratee2, keysFunc) { var index = -1, iterable = Object2(object), props = keysFunc(object), length = props.length; while (length--) { var key = props[fromRight ? length : ++index]; if (iteratee2(iterable[key], key, iterable) === false) { break; } } return object; }; } function createBind(func, bitmask, thisArg) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { var fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; return fn3.apply(isBind ? thisArg : this, arguments); } return wrapper; } function createCaseFirst(methodName) { return function(string) { string = toString(string); var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined2; var chr = strSymbols ? strSymbols[0] : string.charAt(0); var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1); return chr[methodName]() + trailing; }; } function createCompounder(callback) { return function(string) { return arrayReduce(words(deburr(string).replace(reApos, "")), callback, ""); }; } function createCtor(Ctor) { return function() { var args = arguments; switch (args.length) { case 0: return new Ctor(); case 1: return new Ctor(args[0]); case 2: return new Ctor(args[0], args[1]); case 3: return new Ctor(args[0], args[1], args[2]); case 4: return new Ctor(args[0], args[1], args[2], args[3]); case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result2 = Ctor.apply(thisBinding, args); return isObject3(result2) ? result2 : thisBinding; }; } function createCurry(func, bitmask, arity) { var Ctor = createCtor(func); function wrapper() { var length = arguments.length, args = Array2(length), index = length, placeholder = getHolder(wrapper); while (index--) { args[index] = arguments[index]; } var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder); length -= holders.length; if (length < arity) { return createRecurry( func, bitmask, createHybrid, wrapper.placeholder, undefined2, args, holders, undefined2, undefined2, arity - length ); } var fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; return apply(fn3, this, args); } return wrapper; } function createFind(findIndexFunc) { return function(collection, predicate, fromIndex) { var iterable = Object2(collection); if (!isArrayLike(collection)) { var iteratee2 = getIteratee(predicate, 3); collection = keys(collection); predicate = function(key) { return iteratee2(iterable[key], key, iterable); }; } var index = findIndexFunc(collection, predicate, fromIndex); return index > -1 ? iterable[iteratee2 ? collection[index] : index] : undefined2; }; } function createFlow(fromRight) { return flatRest(function(funcs) { var length = funcs.length, index = length, prereq = LodashWrapper.prototype.thru; if (fromRight) { funcs.reverse(); } while (index--) { var func = funcs[index]; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } if (prereq && !wrapper && getFuncName(func) == "wrapper") { var wrapper = new LodashWrapper([], true); } } index = wrapper ? index : length; while (++index < length) { func = funcs[index]; var funcName = getFuncName(func), data2 = funcName == "wrapper" ? getData2(func) : undefined2; if (data2 && isLaziable(data2[0]) && data2[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data2[4].length && data2[9] == 1) { wrapper = wrapper[getFuncName(data2[0])].apply(wrapper, data2[3]); } else { wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func); } } return function() { var args = arguments, value = args[0]; if (wrapper && args.length == 1 && isArray2(value)) { return wrapper.plant(value).value(); } var index2 = 0, result2 = length ? funcs[index2].apply(this, args) : value; while (++index2 < length) { result2 = funcs[index2].call(this, result2); } return result2; }; }); } function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity) { var isAry = bitmask & WRAP_ARY_FLAG, isBind = bitmask & WRAP_BIND_FLAG, isBindKey = bitmask & WRAP_BIND_KEY_FLAG, isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), isFlip = bitmask & WRAP_FLIP_FLAG, Ctor = isBindKey ? undefined2 : createCtor(func); function wrapper() { var length = arguments.length, args = Array2(length), index = length; while (index--) { args[index] = arguments[index]; } if (isCurried) { var placeholder = getHolder(wrapper), holdersCount = countHolders(args, placeholder); } if (partials) { args = composeArgs(args, partials, holders, isCurried); } if (partialsRight) { args = composeArgsRight(args, partialsRight, holdersRight, isCurried); } length -= holdersCount; if (isCurried && length < arity) { var newHolders = replaceHolders(args, placeholder); return createRecurry( func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary2, arity - length ); } var thisBinding = isBind ? thisArg : this, fn3 = isBindKey ? thisBinding[func] : func; length = args.length; if (argPos) { args = reorder(args, argPos); } else if (isFlip && length > 1) { args.reverse(); } if (isAry && ary2 < length) { args.length = ary2; } if (this && this !== root && this instanceof wrapper) { fn3 = Ctor || createCtor(fn3); } return fn3.apply(thisBinding, args); } return wrapper; } function createInverter(setter, toIteratee) { return function(object, iteratee2) { return baseInverter(object, setter, toIteratee(iteratee2), {}); }; } function createMathOperation(operator, defaultValue) { return function(value, other) { var result2; if (value === undefined2 && other === undefined2) { return defaultValue; } if (value !== undefined2) { result2 = value; } if (other !== undefined2) { if (result2 === undefined2) { return other; } if (typeof value == "string" || typeof other == "string") { value = baseToString(value); other = baseToString(other); } else { value = baseToNumber(value); other = baseToNumber(other); } result2 = operator(value, other); } return result2; }; } function createOver(arrayFunc) { return flatRest(function(iteratees) { iteratees = arrayMap(iteratees, baseUnary(getIteratee())); return baseRest(function(args) { var thisArg = this; return arrayFunc(iteratees, function(iteratee2) { return apply(iteratee2, thisArg, args); }); }); }); } function createPadding(length, chars) { chars = chars === undefined2 ? " " : baseToString(chars); var charsLength = chars.length; if (charsLength < 2) { return charsLength ? baseRepeat(chars, length) : chars; } var result2 = baseRepeat(chars, nativeCeil(length / stringSize(chars))); return hasUnicode(chars) ? castSlice(stringToArray(result2), 0, length).join("") : result2.slice(0, length); } function createPartial(func, bitmask, thisArg, partials) { var isBind = bitmask & WRAP_BIND_FLAG, Ctor = createCtor(func); function wrapper() { var argsIndex = -1, argsLength = arguments.length, leftIndex = -1, leftLength = partials.length, args = Array2(leftLength + argsLength), fn3 = this && this !== root && this instanceof wrapper ? Ctor : func; while (++leftIndex < leftLength) { args[leftIndex] = partials[leftIndex]; } while (argsLength--) { args[leftIndex++] = arguments[++argsIndex]; } return apply(fn3, isBind ? thisArg : this, args); } return wrapper; } function createRange(fromRight) { return function(start5, end2, step) { if (step && typeof step != "number" && isIterateeCall(start5, end2, step)) { end2 = step = undefined2; } start5 = toFinite(start5); if (end2 === undefined2) { end2 = start5; start5 = 0; } else { end2 = toFinite(end2); } step = step === undefined2 ? start5 < end2 ? 1 : -1 : toFinite(step); return baseRange(start5, end2, step, fromRight); }; } function createRelationalOperation(operator) { return function(value, other) { if (!(typeof value == "string" && typeof other == "string")) { value = toNumber(value); other = toNumber(other); } return operator(value, other); }; } function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary2, arity) { var isCurry = bitmask & WRAP_CURRY_FLAG, newHolders = isCurry ? holders : undefined2, newHoldersRight = isCurry ? undefined2 : holders, newPartials = isCurry ? partials : undefined2, newPartialsRight = isCurry ? undefined2 : partials; bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG; bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); } var newData = [ func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary2, arity ]; var result2 = wrapFunc.apply(undefined2, newData); if (isLaziable(func)) { setData2(result2, newData); } result2.placeholder = placeholder; return setWrapToString(result2, func, bitmask); } function createRound(methodName) { var func = Math2[methodName]; return function(number, precision) { number = toNumber(number); precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); if (precision && nativeIsFinite(number)) { var pair = (toString(number) + "e").split("e"), value = func(pair[0] + "e" + (+pair[1] + precision)); pair = (toString(value) + "e").split("e"); return +(pair[0] + "e" + (+pair[1] - precision)); } return func(number); }; } var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values2) { return new Set2(values2); }; function createToPairs(keysFunc) { return function(object) { var tag = getTag(object); if (tag == mapTag) { return mapToArray(object); } if (tag == setTag) { return setToPairs(object); } return baseToPairs(object, keysFunc(object)); }; } function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary2, arity) { var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; if (!isBindKey && typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } var length = partials ? partials.length : 0; if (!length) { bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); partials = holders = undefined2; } ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0); arity = arity === undefined2 ? arity : toInteger(arity); length -= holders ? holders.length : 0; if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { var partialsRight = partials, holdersRight = holders; partials = holders = undefined2; } var data2 = isBindKey ? undefined2 : getData2(func); var newData = [ func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary2, arity ]; if (data2) { mergeData(newData, data2); } func = newData[0]; bitmask = newData[1]; thisArg = newData[2]; partials = newData[3]; holders = newData[4]; arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0); if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); } if (!bitmask || bitmask == WRAP_BIND_FLAG) { var result2 = createBind(func, bitmask, thisArg); } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { result2 = createCurry(func, bitmask, arity); } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { result2 = createPartial(func, bitmask, thisArg, partials); } else { result2 = createHybrid.apply(undefined2, newData); } var setter = data2 ? baseSetData : setData2; return setWrapToString(setter(result2, newData), func, bitmask); } function customDefaultsAssignIn(objValue, srcValue, key, object) { if (objValue === undefined2 || eq(objValue, objectProto[key]) && !hasOwnProperty3.call(object, key)) { return srcValue; } return objValue; } function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { if (isObject3(objValue) && isObject3(srcValue)) { stack.set(srcValue, objValue); baseMerge(objValue, srcValue, undefined2, customDefaultsMerge, stack); stack["delete"](srcValue); } return objValue; } function customOmitClone(value) { return isPlainObject(value) ? undefined2 : value; } function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; if (arrLength != othLength && !(isPartial && othLength > arrLength)) { return false; } var arrStacked = stack.get(array); var othStacked = stack.get(other); if (arrStacked && othStacked) { return arrStacked == other && othStacked == array; } var index = -1, result2 = true, seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined2; stack.set(array, other); stack.set(other, array); while (++index < arrLength) { var arrValue = array[index], othValue = other[index]; if (customizer) { var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack); } if (compared !== undefined2) { if (compared) { continue; } result2 = false; break; } if (seen) { if (!arraySome(other, function(othValue2, othIndex) { if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) { return seen.push(othIndex); } })) { result2 = false; break; } } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { result2 = false; break; } } stack["delete"](array); stack["delete"](other); return result2; } function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { switch (tag) { case dataViewTag: if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { return false; } object = object.buffer; other = other.buffer; case arrayBufferTag: if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) { return false; } return true; case boolTag: case dateTag: case numberTag: return eq(+object, +other); case errorTag: return object.name == other.name && object.message == other.message; case regexpTag: case stringTag: return object == other + ""; case mapTag: var convert = mapToArray; case setTag: var isPartial = bitmask & COMPARE_PARTIAL_FLAG; convert || (convert = setToArray); if (object.size != other.size && !isPartial) { return false; } var stacked = stack.get(object); if (stacked) { return stacked == other; } bitmask |= COMPARE_UNORDERED_FLAG; stack.set(object, other); var result2 = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); stack["delete"](object); return result2; case symbolTag: if (symbolValueOf) { return symbolValueOf.call(object) == symbolValueOf.call(other); } } return false; } function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { var isPartial = bitmask & COMPARE_PARTIAL_FLAG, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { return false; } var index = objLength; while (index--) { var key = objProps[index]; if (!(isPartial ? key in other : hasOwnProperty3.call(other, key))) { return false; } } var objStacked = stack.get(object); var othStacked = stack.get(other); if (objStacked && othStacked) { return objStacked == other && othStacked == object; } var result2 = true; stack.set(object, other); stack.set(other, object); var skipCtor = isPartial; while (++index < objLength) { key = objProps[index]; var objValue = object[key], othValue = other[key]; if (customizer) { var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); } if (!(compared === undefined2 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { result2 = false; break; } skipCtor || (skipCtor = key == "constructor"); } if (result2 && !skipCtor) { var objCtor = object.constructor, othCtor = other.constructor; if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) { result2 = false; } } stack["delete"](object); stack["delete"](other); return result2; } function flatRest(func) { return setToString(overRest(func, undefined2, flatten), func + ""); } function getAllKeys(object) { return baseGetAllKeys(object, keys, getSymbols); } function getAllKeysIn(object) { return baseGetAllKeys(object, keysIn, getSymbolsIn); } var getData2 = !metaMap ? noop : function(func) { return metaMap.get(func); }; function getFuncName(func) { var result2 = func.name + "", array = realNames[result2], length = hasOwnProperty3.call(realNames, result2) ? array.length : 0; while (length--) { var data2 = array[length], otherFunc = data2.func; if (otherFunc == null || otherFunc == func) { return data2.name; } } return result2; } function getHolder(func) { var object = hasOwnProperty3.call(lodash, "placeholder") ? lodash : func; return object.placeholder; } function getIteratee() { var result2 = lodash.iteratee || iteratee; result2 = result2 === iteratee ? baseIteratee : result2; return arguments.length ? result2(arguments[0], arguments[1]) : result2; } function getMapData(map2, key) { var data2 = map2.__data__; return isKeyable(key) ? data2[typeof key == "string" ? "string" : "hash"] : data2.map; } function getMatchData(object) { var result2 = keys(object), length = result2.length; while (length--) { var key = result2[length], value = object[key]; result2[length] = [key, value, isStrictComparable(value)]; } return result2; } function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined2; } function getRawTag(value) { var isOwn = hasOwnProperty3.call(value, symToStringTag), tag = value[symToStringTag]; try { value[symToStringTag] = undefined2; var unmasked = true; } catch (e3) { } var result2 = nativeObjectToString.call(value); if (unmasked) { if (isOwn) { value[symToStringTag] = tag; } else { delete value[symToStringTag]; } } return result2; } var getSymbols = !nativeGetSymbols ? stubArray : function(object) { if (object == null) { return []; } object = Object2(object); return arrayFilter(nativeGetSymbols(object), function(symbol) { return propertyIsEnumerable.call(object, symbol); }); }; var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { var result2 = []; while (object) { arrayPush(result2, getSymbols(object)); object = getPrototype(object); } return result2; }; var getTag = baseGetTag; if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap2 && getTag(new WeakMap2()) != weakMapTag) { getTag = function(value) { var result2 = baseGetTag(value), Ctor = result2 == objectTag ? value.constructor : undefined2, ctorString = Ctor ? toSource(Ctor) : ""; if (ctorString) { switch (ctorString) { case dataViewCtorString: return dataViewTag; case mapCtorString: return mapTag; case promiseCtorString: return promiseTag; case setCtorString: return setTag; case weakMapCtorString: return weakMapTag; } } return result2; }; } function getView(start5, end2, transforms) { var index = -1, length = transforms.length; while (++index < length) { var data2 = transforms[index], size3 = data2.size; switch (data2.type) { case "drop": start5 += size3; break; case "dropRight": end2 -= size3; break; case "take": end2 = nativeMin(end2, start5 + size3); break; case "takeRight": start5 = nativeMax(start5, end2 - size3); break; } } return { "start": start5, "end": end2 }; } function getWrapDetails(source) { var match = source.match(reWrapDetails); return match ? match[1].split(reSplitDetails) : []; } function hasPath(object, path, hasFunc) { path = castPath(path, object); var index = -1, length = path.length, result2 = false; while (++index < length) { var key = toKey(path[index]); if (!(result2 = object != null && hasFunc(object, key))) { break; } object = object[key]; } if (result2 || ++index != length) { return result2; } length = object == null ? 0 : object.length; return !!length && isLength(length) && isIndex(key, length) && (isArray2(object) || isArguments(object)); } function initCloneArray(array) { var length = array.length, result2 = new array.constructor(length); if (length && typeof array[0] == "string" && hasOwnProperty3.call(array, "index")) { result2.index = array.index; result2.input = array.input; } return result2; } function initCloneObject(object) { return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {}; } function initCloneByTag(object, tag, isDeep) { var Ctor = object.constructor; switch (tag) { case arrayBufferTag: return cloneArrayBuffer(object); case boolTag: case dateTag: return new Ctor(+object); case dataViewTag: return cloneDataView(object, isDeep); case float32Tag: case float64Tag: case int8Tag: case int16Tag: case int32Tag: case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: return cloneTypedArray(object, isDeep); case mapTag: return new Ctor(); case numberTag: case stringTag: return new Ctor(object); case regexpTag: return cloneRegExp(object); case setTag: return new Ctor(); case symbolTag: return cloneSymbol(object); } } function insertWrapDetails(source, details) { var length = details.length; if (!length) { return source; } var lastIndex = length - 1; details[lastIndex] = (length > 1 ? "& " : "") + details[lastIndex]; details = details.join(length > 2 ? ", " : " "); return source.replace(reWrapComment, "{\n/* [wrapped with " + details + "] */\n"); } function isFlattenable(value) { return isArray2(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]); } function isIndex(value, length) { var type = typeof value; length = length == null ? MAX_SAFE_INTEGER : length; return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length); } function isIterateeCall(value, index, object) { if (!isObject3(object)) { return false; } var type = typeof index; if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) { return eq(object[index], value); } return false; } function isKey(value, object) { if (isArray2(value)) { return false; } var type = typeof value; if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol2(value)) { return true; } return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object2(object); } function isKeyable(value) { var type = typeof value; return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null; } function isLaziable(func) { var funcName = getFuncName(func), other = lodash[funcName]; if (typeof other != "function" || !(funcName in LazyWrapper.prototype)) { return false; } if (func === other) { return true; } var data2 = getData2(other); return !!data2 && func === data2[0]; } function isMasked(func) { return !!maskSrcKey && maskSrcKey in func; } var isMaskable = coreJsData ? isFunction : stubFalse; function isPrototype(value) { var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto; return value === proto; } function isStrictComparable(value) { return value === value && !isObject3(value); } function matchesStrictComparable(key, srcValue) { return function(object) { if (object == null) { return false; } return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); }; } function memoizeCapped(func) { var result2 = memoize(func, function(key) { if (cache2.size === MAX_MEMOIZE_SIZE) { cache2.clear(); } return key; }); var cache2 = result2.cache; return result2; } function mergeData(data2, source) { var bitmask = data2[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data2[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; if (!(isCommon || isCombo)) { return data2; } if (srcBitmask & WRAP_BIND_FLAG) { data2[2] = source[2]; newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; } var value = source[3]; if (value) { var partials = data2[3]; data2[3] = partials ? composeArgs(partials, value, source[4]) : value; data2[4] = partials ? replaceHolders(data2[3], PLACEHOLDER) : source[4]; } value = source[5]; if (value) { partials = data2[5]; data2[5] = partials ? composeArgsRight(partials, value, source[6]) : value; data2[6] = partials ? replaceHolders(data2[5], PLACEHOLDER) : source[6]; } value = source[7]; if (value) { data2[7] = value; } if (srcBitmask & WRAP_ARY_FLAG) { data2[8] = data2[8] == null ? source[8] : nativeMin(data2[8], source[8]); } if (data2[9] == null) { data2[9] = source[9]; } data2[0] = source[0]; data2[1] = newBitmask; return data2; } function nativeKeysIn(object) { var result2 = []; if (object != null) { for (var key in Object2(object)) { result2.push(key); } } return result2; } function objectToString2(value) { return nativeObjectToString.call(value); } function overRest(func, start5, transform2) { start5 = nativeMax(start5 === undefined2 ? func.length - 1 : start5, 0); return function() { var args = arguments, index = -1, length = nativeMax(args.length - start5, 0), array = Array2(length); while (++index < length) { array[index] = args[start5 + index]; } index = -1; var otherArgs = Array2(start5 + 1); while (++index < start5) { otherArgs[index] = args[index]; } otherArgs[start5] = transform2(array); return apply(func, this, otherArgs); }; } function parent(object, path) { return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); } function reorder(array, indexes) { var arrLength = array.length, length = nativeMin(indexes.length, arrLength), oldArray = copyArray(array); while (length--) { var index = indexes[length]; array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined2; } return array; } function safeGet(object, key) { if (key === "constructor" && typeof object[key] === "function") { return; } if (key == "__proto__") { return; } return object[key]; } var setData2 = shortOut(baseSetData); var setTimeout2 = ctxSetTimeout || function(func, wait) { return root.setTimeout(func, wait); }; var setToString = shortOut(baseSetToString); function setWrapToString(wrapper, reference2, bitmask) { var source = reference2 + ""; return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); } function shortOut(func) { var count = 0, lastCalled = 0; return function() { var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled); lastCalled = stamp; if (remaining > 0) { if (++count >= HOT_COUNT) { return arguments[0]; } } else { count = 0; } return func.apply(undefined2, arguments); }; } function shuffleSelf(array, size3) { var index = -1, length = array.length, lastIndex = length - 1; size3 = size3 === undefined2 ? length : size3; while (++index < size3) { var rand = baseRandom(index, lastIndex), value = array[rand]; array[rand] = array[index]; array[index] = value; } array.length = size3; return array; } var stringToPath = memoizeCapped(function(string) { var result2 = []; if (string.charCodeAt(0) === 46) { result2.push(""); } string.replace(rePropName, function(match, number, quote, subString) { result2.push(quote ? subString.replace(reEscapeChar, "$1") : number || match); }); return result2; }); function toKey(value) { if (typeof value == "string" || isSymbol2(value)) { return value; } var result2 = value + ""; return result2 == "0" && 1 / value == -INFINITY ? "-0" : result2; } function toSource(func) { if (func != null) { try { return funcToString.call(func); } catch (e3) { } try { return func + ""; } catch (e3) { } } return ""; } function updateWrapDetails(details, bitmask) { arrayEach(wrapFlags, function(pair) { var value = "_." + pair[0]; if (bitmask & pair[1] && !arrayIncludes(details, value)) { details.push(value); } }); return details.sort(); } function wrapperClone(wrapper) { if (wrapper instanceof LazyWrapper) { return wrapper.clone(); } var result2 = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); result2.__actions__ = copyArray(wrapper.__actions__); result2.__index__ = wrapper.__index__; result2.__values__ = wrapper.__values__; return result2; } function chunk(array, size3, guard) { if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) { size3 = 1; } else { size3 = nativeMax(toInteger(size3), 0); } var length = array == null ? 0 : array.length; if (!length || size3 < 1) { return []; } var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size3)); while (index < length) { result2[resIndex++] = baseSlice(array, index, index += size3); } return result2; } function compact(array) { var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result2 = []; while (++index < length) { var value = array[index]; if (value) { result2[resIndex++] = value; } } return result2; } function concat() { var length = arguments.length; if (!length) { return []; } var args = Array2(length - 1), array = arguments[0], index = length; while (index--) { args[index - 1] = arguments[index]; } return arrayPush(isArray2(array) ? copyArray(array) : [array], baseFlatten(args, 1)); } var difference = baseRest(function(array, values2) { return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : []; }); var differenceBy = baseRest(function(array, values2) { var iteratee2 = last(values2); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)) : []; }); var differenceWith = baseRest(function(array, values2) { var comparator = last(values2); if (isArrayLikeObject(comparator)) { comparator = undefined2; } return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true), undefined2, comparator) : []; }); function drop(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); return baseSlice(array, n3 < 0 ? 0 : n3, length); } function dropRight(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); n3 = length - n3; return baseSlice(array, 0, n3 < 0 ? 0 : n3); } function dropRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; } function dropWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; } function fill(array, value, start5, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } if (start5 && typeof start5 != "number" && isIterateeCall(array, value, start5)) { start5 = 0; end2 = length; } return baseFill(array, value, start5, end2); } function findIndex3(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = fromIndex == null ? 0 : toInteger(fromIndex); if (index < 0) { index = nativeMax(length + index, 0); } return baseFindIndex(array, getIteratee(predicate, 3), index); } function findLastIndex(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = length - 1; if (fromIndex !== undefined2) { index = toInteger(fromIndex); index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); } return baseFindIndex(array, getIteratee(predicate, 3), index, true); } function flatten(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array, 1) : []; } function flattenDeep(array) { var length = array == null ? 0 : array.length; return length ? baseFlatten(array, INFINITY) : []; } function flattenDepth(array, depth) { var length = array == null ? 0 : array.length; if (!length) { return []; } depth = depth === undefined2 ? 1 : toInteger(depth); return baseFlatten(array, depth); } function fromPairs(pairs) { var index = -1, length = pairs == null ? 0 : pairs.length, result2 = {}; while (++index < length) { var pair = pairs[index]; result2[pair[0]] = pair[1]; } return result2; } function head(array) { return array && array.length ? array[0] : undefined2; } function indexOf2(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = fromIndex == null ? 0 : toInteger(fromIndex); if (index < 0) { index = nativeMax(length + index, 0); } return baseIndexOf(array, value, index); } function initial(array) { var length = array == null ? 0 : array.length; return length ? baseSlice(array, 0, -1) : []; } var intersection = baseRest(function(arrays) { var mapped = arrayMap(arrays, castArrayLikeObject); return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : []; }); var intersectionBy = baseRest(function(arrays) { var iteratee2 = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); if (iteratee2 === last(mapped)) { iteratee2 = undefined2; } else { mapped.pop(); } return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee2, 2)) : []; }); var intersectionWith = baseRest(function(arrays) { var comparator = last(arrays), mapped = arrayMap(arrays, castArrayLikeObject); comparator = typeof comparator == "function" ? comparator : undefined2; if (comparator) { mapped.pop(); } return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : []; }); function join(array, separator) { return array == null ? "" : nativeJoin.call(array, separator); } function last(array) { var length = array == null ? 0 : array.length; return length ? array[length - 1] : undefined2; } function lastIndexOf(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = length; if (fromIndex !== undefined2) { index = toInteger(fromIndex); index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); } return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true); } function nth(array, n3) { return array && array.length ? baseNth(array, toInteger(n3)) : undefined2; } var pull = baseRest(pullAll); function pullAll(array, values2) { return array && array.length && values2 && values2.length ? basePullAll(array, values2) : array; } function pullAllBy(array, values2, iteratee2) { return array && array.length && values2 && values2.length ? basePullAll(array, values2, getIteratee(iteratee2, 2)) : array; } function pullAllWith(array, values2, comparator) { return array && array.length && values2 && values2.length ? basePullAll(array, values2, undefined2, comparator) : array; } var pullAt = flatRest(function(array, indexes) { var length = array == null ? 0 : array.length, result2 = baseAt(array, indexes); basePullAt(array, arrayMap(indexes, function(index) { return isIndex(index, length) ? +index : index; }).sort(compareAscending)); return result2; }); function remove(array, predicate) { var result2 = []; if (!(array && array.length)) { return result2; } var index = -1, indexes = [], length = array.length; predicate = getIteratee(predicate, 3); while (++index < length) { var value = array[index]; if (predicate(value, index, array)) { result2.push(value); indexes.push(index); } } basePullAt(array, indexes); return result2; } function reverse(array) { return array == null ? array : nativeReverse.call(array); } function slice(array, start5, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } if (end2 && typeof end2 != "number" && isIterateeCall(array, start5, end2)) { start5 = 0; end2 = length; } else { start5 = start5 == null ? 0 : toInteger(start5); end2 = end2 === undefined2 ? length : toInteger(end2); } return baseSlice(array, start5, end2); } function sortedIndex(array, value) { return baseSortedIndex(array, value); } function sortedIndexBy(array, value, iteratee2) { return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2)); } function sortedIndexOf(array, value) { var length = array == null ? 0 : array.length; if (length) { var index = baseSortedIndex(array, value); if (index < length && eq(array[index], value)) { return index; } } return -1; } function sortedLastIndex(array, value) { return baseSortedIndex(array, value, true); } function sortedLastIndexBy(array, value, iteratee2) { return baseSortedIndexBy(array, value, getIteratee(iteratee2, 2), true); } function sortedLastIndexOf(array, value) { var length = array == null ? 0 : array.length; if (length) { var index = baseSortedIndex(array, value, true) - 1; if (eq(array[index], value)) { return index; } } return -1; } function sortedUniq(array) { return array && array.length ? baseSortedUniq(array) : []; } function sortedUniqBy(array, iteratee2) { return array && array.length ? baseSortedUniq(array, getIteratee(iteratee2, 2)) : []; } function tail(array) { var length = array == null ? 0 : array.length; return length ? baseSlice(array, 1, length) : []; } function take(array, n3, guard) { if (!(array && array.length)) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); return baseSlice(array, 0, n3 < 0 ? 0 : n3); } function takeRight(array, n3, guard) { var length = array == null ? 0 : array.length; if (!length) { return []; } n3 = guard || n3 === undefined2 ? 1 : toInteger(n3); n3 = length - n3; return baseSlice(array, n3 < 0 ? 0 : n3, length); } function takeRightWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : []; } function takeWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : []; } var union = baseRest(function(arrays) { return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); }); var unionBy = baseRest(function(arrays) { var iteratee2 = last(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee2, 2)); }); var unionWith = baseRest(function(arrays) { var comparator = last(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined2, comparator); }); function uniq(array) { return array && array.length ? baseUniq(array) : []; } function uniqBy(array, iteratee2) { return array && array.length ? baseUniq(array, getIteratee(iteratee2, 2)) : []; } function uniqWith(array, comparator) { comparator = typeof comparator == "function" ? comparator : undefined2; return array && array.length ? baseUniq(array, undefined2, comparator) : []; } function unzip(array) { if (!(array && array.length)) { return []; } var length = 0; array = arrayFilter(array, function(group) { if (isArrayLikeObject(group)) { length = nativeMax(group.length, length); return true; } }); return baseTimes(length, function(index) { return arrayMap(array, baseProperty(index)); }); } function unzipWith(array, iteratee2) { if (!(array && array.length)) { return []; } var result2 = unzip(array); if (iteratee2 == null) { return result2; } return arrayMap(result2, function(group) { return apply(iteratee2, undefined2, group); }); } var without = baseRest(function(array, values2) { return isArrayLikeObject(array) ? baseDifference(array, values2) : []; }); var xor = baseRest(function(arrays) { return baseXor(arrayFilter(arrays, isArrayLikeObject)); }); var xorBy = baseRest(function(arrays) { var iteratee2 = last(arrays); if (isArrayLikeObject(iteratee2)) { iteratee2 = undefined2; } return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee2, 2)); }); var xorWith = baseRest(function(arrays) { var comparator = last(arrays); comparator = typeof comparator == "function" ? comparator : undefined2; return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined2, comparator); }); var zip = baseRest(unzip); function zipObject(props, values2) { return baseZipObject(props || [], values2 || [], assignValue); } function zipObjectDeep(props, values2) { return baseZipObject(props || [], values2 || [], baseSet); } var zipWith = baseRest(function(arrays) { var length = arrays.length, iteratee2 = length > 1 ? arrays[length - 1] : undefined2; iteratee2 = typeof iteratee2 == "function" ? (arrays.pop(), iteratee2) : undefined2; return unzipWith(arrays, iteratee2); }); function chain(value) { var result2 = lodash(value); result2.__chain__ = true; return result2; } function tap(value, interceptor2) { interceptor2(value); return value; } function thru(value, interceptor2) { return interceptor2(value); } var wrapperAt = flatRest(function(paths) { var length = paths.length, start5 = length ? paths[0] : 0, value = this.__wrapped__, interceptor2 = function(object) { return baseAt(object, paths); }; if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start5)) { return this.thru(interceptor2); } value = value.slice(start5, +start5 + (length ? 1 : 0)); value.__actions__.push({ "func": thru, "args": [interceptor2], "thisArg": undefined2 }); return new LodashWrapper(value, this.__chain__).thru(function(array) { if (length && !array.length) { array.push(undefined2); } return array; }); }); function wrapperChain() { return chain(this); } function wrapperCommit() { return new LodashWrapper(this.value(), this.__chain__); } function wrapperNext() { if (this.__values__ === undefined2) { this.__values__ = toArray2(this.value()); } var done = this.__index__ >= this.__values__.length, value = done ? undefined2 : this.__values__[this.__index__++]; return { "done": done, "value": value }; } function wrapperToIterator() { return this; } function wrapperPlant(value) { var result2, parent2 = this; while (parent2 instanceof baseLodash) { var clone3 = wrapperClone(parent2); clone3.__index__ = 0; clone3.__values__ = undefined2; if (result2) { previous.__wrapped__ = clone3; } else { result2 = clone3; } var previous = clone3; parent2 = parent2.__wrapped__; } previous.__wrapped__ = value; return result2; } function wrapperReverse() { var value = this.__wrapped__; if (value instanceof LazyWrapper) { var wrapped = value; if (this.__actions__.length) { wrapped = new LazyWrapper(this); } wrapped = wrapped.reverse(); wrapped.__actions__.push({ "func": thru, "args": [reverse], "thisArg": undefined2 }); return new LodashWrapper(wrapped, this.__chain__); } return this.thru(reverse); } function wrapperValue() { return baseWrapperValue(this.__wrapped__, this.__actions__); } var countBy = createAggregator(function(result2, value, key) { if (hasOwnProperty3.call(result2, key)) { ++result2[key]; } else { baseAssignValue(result2, key, 1); } }); function every(collection, predicate, guard) { var func = isArray2(collection) ? arrayEvery : baseEvery; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } return func(collection, getIteratee(predicate, 3)); } function filter(collection, predicate) { var func = isArray2(collection) ? arrayFilter : baseFilter; return func(collection, getIteratee(predicate, 3)); } var find = createFind(findIndex3); var findLast = createFind(findLastIndex); function flatMap(collection, iteratee2) { return baseFlatten(map(collection, iteratee2), 1); } function flatMapDeep(collection, iteratee2) { return baseFlatten(map(collection, iteratee2), INFINITY); } function flatMapDepth(collection, iteratee2, depth) { depth = depth === undefined2 ? 1 : toInteger(depth); return baseFlatten(map(collection, iteratee2), depth); } function forEach(collection, iteratee2) { var func = isArray2(collection) ? arrayEach : baseEach; return func(collection, getIteratee(iteratee2, 3)); } function forEachRight(collection, iteratee2) { var func = isArray2(collection) ? arrayEachRight : baseEachRight; return func(collection, getIteratee(iteratee2, 3)); } var groupBy = createAggregator(function(result2, value, key) { if (hasOwnProperty3.call(result2, key)) { result2[key].push(value); } else { baseAssignValue(result2, key, [value]); } }); function includes(collection, value, fromIndex, guard) { collection = isArrayLike(collection) ? collection : values(collection); fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0; var length = collection.length; if (fromIndex < 0) { fromIndex = nativeMax(length + fromIndex, 0); } return isString2(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1; } var invokeMap = baseRest(function(collection, path, args) { var index = -1, isFunc = typeof path == "function", result2 = isArrayLike(collection) ? Array2(collection.length) : []; baseEach(collection, function(value) { result2[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); }); return result2; }); var keyBy2 = createAggregator(function(result2, value, key) { baseAssignValue(result2, key, value); }); function map(collection, iteratee2) { var func = isArray2(collection) ? arrayMap : baseMap; return func(collection, getIteratee(iteratee2, 3)); } function orderBy(collection, iteratees, orders, guard) { if (collection == null) { return []; } if (!isArray2(iteratees)) { iteratees = iteratees == null ? [] : [iteratees]; } orders = guard ? undefined2 : orders; if (!isArray2(orders)) { orders = orders == null ? [] : [orders]; } return baseOrderBy(collection, iteratees, orders); } var partition = createAggregator(function(result2, value, key) { result2[key ? 0 : 1].push(value); }, function() { return [[], []]; }); function reduce(collection, iteratee2, accumulator) { var func = isArray2(collection) ? arrayReduce : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEach); } function reduceRight(collection, iteratee2, accumulator) { var func = isArray2(collection) ? arrayReduceRight : baseReduce, initAccum = arguments.length < 3; return func(collection, getIteratee(iteratee2, 4), accumulator, initAccum, baseEachRight); } function reject(collection, predicate) { var func = isArray2(collection) ? arrayFilter : baseFilter; return func(collection, negate(getIteratee(predicate, 3))); } function sample(collection) { var func = isArray2(collection) ? arraySample : baseSample; return func(collection); } function sampleSize(collection, n3, guard) { if (guard ? isIterateeCall(collection, n3, guard) : n3 === undefined2) { n3 = 1; } else { n3 = toInteger(n3); } var func = isArray2(collection) ? arraySampleSize : baseSampleSize; return func(collection, n3); } function shuffle(collection) { var func = isArray2(collection) ? arrayShuffle : baseShuffle; return func(collection); } function size2(collection) { if (collection == null) { return 0; } if (isArrayLike(collection)) { return isString2(collection) ? stringSize(collection) : collection.length; } var tag = getTag(collection); if (tag == mapTag || tag == setTag) { return collection.size; } return baseKeys(collection).length; } function some(collection, predicate, guard) { var func = isArray2(collection) ? arraySome : baseSome; if (guard && isIterateeCall(collection, predicate, guard)) { predicate = undefined2; } return func(collection, getIteratee(predicate, 3)); } var sortBy = baseRest(function(collection, iteratees) { if (collection == null) { return []; } var length = iteratees.length; if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { iteratees = []; } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { iteratees = [iteratees[0]]; } return baseOrderBy(collection, baseFlatten(iteratees, 1), []); }); var now2 = ctxNow || function() { return root.Date.now(); }; function after(n3, func) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } n3 = toInteger(n3); return function() { if (--n3 < 1) { return func.apply(this, arguments); } }; } function ary(func, n3, guard) { n3 = guard ? undefined2 : n3; n3 = func && n3 == null ? func.length : n3; return createWrap(func, WRAP_ARY_FLAG, undefined2, undefined2, undefined2, undefined2, n3); } function before(n3, func) { var result2; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } n3 = toInteger(n3); return function() { if (--n3 > 0) { result2 = func.apply(this, arguments); } if (n3 <= 1) { func = undefined2; } return result2; }; } var bind4 = baseRest(function(func, thisArg, partials) { var bitmask = WRAP_BIND_FLAG; if (partials.length) { var holders = replaceHolders(partials, getHolder(bind4)); bitmask |= WRAP_PARTIAL_FLAG; } return createWrap(func, bitmask, thisArg, partials, holders); }); var bindKey = baseRest(function(object, key, partials) { var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; if (partials.length) { var holders = replaceHolders(partials, getHolder(bindKey)); bitmask |= WRAP_PARTIAL_FLAG; } return createWrap(key, bitmask, object, partials, holders); }); function curry(func, arity, guard) { arity = guard ? undefined2 : arity; var result2 = createWrap(func, WRAP_CURRY_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); result2.placeholder = curry.placeholder; return result2; } function curryRight(func, arity, guard) { arity = guard ? undefined2 : arity; var result2 = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined2, undefined2, undefined2, undefined2, undefined2, arity); result2.placeholder = curryRight.placeholder; return result2; } function debounce4(func, wait, options) { var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } wait = toNumber(wait) || 0; if (isObject3(options)) { leading = !!options.leading; maxing = "maxWait" in options; maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; trailing = "trailing" in options ? !!options.trailing : trailing; } function invokeFunc(time) { var args = lastArgs, thisArg = lastThis; lastArgs = lastThis = undefined2; lastInvokeTime = time; result2 = func.apply(thisArg, args); return result2; } function leadingEdge(time) { lastInvokeTime = time; timerId = setTimeout2(timerExpired, wait); return leading ? invokeFunc(time) : result2; } function remainingWait(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall; return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; } function shouldInvoke(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; } function timerExpired() { var time = now2(); if (shouldInvoke(time)) { return trailingEdge(time); } timerId = setTimeout2(timerExpired, remainingWait(time)); } function trailingEdge(time) { timerId = undefined2; if (trailing && lastArgs) { return invokeFunc(time); } lastArgs = lastThis = undefined2; return result2; } function cancel() { if (timerId !== undefined2) { clearTimeout2(timerId); } lastInvokeTime = 0; lastArgs = lastCallTime = lastThis = timerId = undefined2; } function flush() { return timerId === undefined2 ? result2 : trailingEdge(now2()); } function debounced() { var time = now2(), isInvoking = shouldInvoke(time); lastArgs = arguments; lastThis = this; lastCallTime = time; if (isInvoking) { if (timerId === undefined2) { return leadingEdge(lastCallTime); } if (maxing) { clearTimeout2(timerId); timerId = setTimeout2(timerExpired, wait); return invokeFunc(lastCallTime); } } if (timerId === undefined2) { timerId = setTimeout2(timerExpired, wait); } return result2; } debounced.cancel = cancel; debounced.flush = flush; return debounced; } var defer = baseRest(function(func, args) { return baseDelay(func, 1, args); }); var delay3 = baseRest(function(func, wait, args) { return baseDelay(func, toNumber(wait) || 0, args); }); function flip2(func) { return createWrap(func, WRAP_FLIP_FLAG); } function memoize(func, resolver) { if (typeof func != "function" || resolver != null && typeof resolver != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } var memoized = function() { var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache; if (cache2.has(key)) { return cache2.get(key); } var result2 = func.apply(this, args); memoized.cache = cache2.set(key, result2) || cache2; return result2; }; memoized.cache = new (memoize.Cache || MapCache)(); return memoized; } memoize.Cache = MapCache; function negate(predicate) { if (typeof predicate != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return function() { var args = arguments; switch (args.length) { case 0: return !predicate.call(this); case 1: return !predicate.call(this, args[0]); case 2: return !predicate.call(this, args[0], args[1]); case 3: return !predicate.call(this, args[0], args[1], args[2]); } return !predicate.apply(this, args); }; } function once2(func) { return before(2, func); } var overArgs = castRest(function(func, transforms) { transforms = transforms.length == 1 && isArray2(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); var funcsLength = transforms.length; return baseRest(function(args) { var index = -1, length = nativeMin(args.length, funcsLength); while (++index < length) { args[index] = transforms[index].call(this, args[index]); } return apply(func, this, args); }); }); var partial = baseRest(function(func, partials) { var holders = replaceHolders(partials, getHolder(partial)); return createWrap(func, WRAP_PARTIAL_FLAG, undefined2, partials, holders); }); var partialRight = baseRest(function(func, partials) { var holders = replaceHolders(partials, getHolder(partialRight)); return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); }); var rearg = flatRest(function(func, indexes) { return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); }); function rest(func, start5) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } start5 = start5 === undefined2 ? start5 : toInteger(start5); return baseRest(func, start5); } function spread(func, start5) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } start5 = start5 == null ? 0 : nativeMax(toInteger(start5), 0); return baseRest(function(args) { var array = args[start5], otherArgs = castSlice(args, 0, start5); if (array) { arrayPush(otherArgs, array); } return apply(func, this, otherArgs); }); } function throttle2(func, wait, options) { var leading = true, trailing = true; if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } if (isObject3(options)) { leading = "leading" in options ? !!options.leading : leading; trailing = "trailing" in options ? !!options.trailing : trailing; } return debounce4(func, wait, { "leading": leading, "maxWait": wait, "trailing": trailing }); } function unary(func) { return ary(func, 1); } function wrap(value, wrapper) { return partial(castFunction(wrapper), value); } function castArray() { if (!arguments.length) { return []; } var value = arguments[0]; return isArray2(value) ? value : [value]; } function clone2(value) { return baseClone(value, CLONE_SYMBOLS_FLAG); } function cloneWith(value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); } function cloneDeep(value) { return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); } function cloneDeepWith(value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); } function conformsTo(object, source) { return source == null || baseConformsTo(object, source, keys(source)); } function eq(value, other) { return value === other || value !== value && other !== other; } var gt = createRelationalOperation(baseGt); var gte = createRelationalOperation(function(value, other) { return value >= other; }); var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { return isObjectLike(value) && hasOwnProperty3.call(value, "callee") && !propertyIsEnumerable.call(value, "callee"); }; var isArray2 = Array2.isArray; var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; function isArrayLike(value) { return value != null && isLength(value.length) && !isFunction(value); } function isArrayLikeObject(value) { return isObjectLike(value) && isArrayLike(value); } function isBoolean(value) { return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag; } var isBuffer = nativeIsBuffer || stubFalse; var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; function isElement3(value) { return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); } function isEmpty(value) { if (value == null) { return true; } if (isArrayLike(value) && (isArray2(value) || typeof value == "string" || typeof value.splice == "function" || isBuffer(value) || isTypedArray(value) || isArguments(value))) { return !value.length; } var tag = getTag(value); if (tag == mapTag || tag == setTag) { return !value.size; } if (isPrototype(value)) { return !baseKeys(value).length; } for (var key in value) { if (hasOwnProperty3.call(value, key)) { return false; } } return true; } function isEqual(value, other) { return baseIsEqual(value, other); } function isEqualWith(value, other, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; var result2 = customizer ? customizer(value, other) : undefined2; return result2 === undefined2 ? baseIsEqual(value, other, undefined2, customizer) : !!result2; } function isError(value) { if (!isObjectLike(value)) { return false; } var tag = baseGetTag(value); return tag == errorTag || tag == domExcTag || typeof value.message == "string" && typeof value.name == "string" && !isPlainObject(value); } function isFinite(value) { return typeof value == "number" && nativeIsFinite(value); } function isFunction(value) { if (!isObject3(value)) { return false; } var tag = baseGetTag(value); return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } function isInteger(value) { return typeof value == "number" && value == toInteger(value); } function isLength(value) { return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; } function isObject3(value) { var type = typeof value; return value != null && (type == "object" || type == "function"); } function isObjectLike(value) { return value != null && typeof value == "object"; } var isMap2 = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; function isMatch(object, source) { return object === source || baseIsMatch(object, source, getMatchData(source)); } function isMatchWith(object, source, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return baseIsMatch(object, source, getMatchData(source), customizer); } function isNaN2(value) { return isNumber(value) && value != +value; } function isNative(value) { if (isMaskable(value)) { throw new Error2(CORE_ERROR_TEXT); } return baseIsNative(value); } function isNull(value) { return value === null; } function isNil(value) { return value == null; } function isNumber(value) { return typeof value == "number" || isObjectLike(value) && baseGetTag(value) == numberTag; } function isPlainObject(value) { if (!isObjectLike(value) || baseGetTag(value) != objectTag) { return false; } var proto = getPrototype(value); if (proto === null) { return true; } var Ctor = hasOwnProperty3.call(proto, "constructor") && proto.constructor; return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString; } var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; function isSafeInteger(value) { return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; } var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; function isString2(value) { return typeof value == "string" || !isArray2(value) && isObjectLike(value) && baseGetTag(value) == stringTag; } function isSymbol2(value) { return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag; } var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; function isUndefined(value) { return value === undefined2; } function isWeakMap(value) { return isObjectLike(value) && getTag(value) == weakMapTag; } function isWeakSet(value) { return isObjectLike(value) && baseGetTag(value) == weakSetTag; } var lt2 = createRelationalOperation(baseLt); var lte = createRelationalOperation(function(value, other) { return value <= other; }); function toArray2(value) { if (!value) { return []; } if (isArrayLike(value)) { return isString2(value) ? stringToArray(value) : copyArray(value); } if (symIterator && value[symIterator]) { return iteratorToArray(value[symIterator]()); } var tag = getTag(value), func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values; return func(value); } function toFinite(value) { if (!value) { return value === 0 ? value : 0; } value = toNumber(value); if (value === INFINITY || value === -INFINITY) { var sign = value < 0 ? -1 : 1; return sign * MAX_INTEGER; } return value === value ? value : 0; } function toInteger(value) { var result2 = toFinite(value), remainder = result2 % 1; return result2 === result2 ? remainder ? result2 - remainder : result2 : 0; } function toLength(value) { return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; } function toNumber(value) { if (typeof value == "number") { return value; } if (isSymbol2(value)) { return NAN; } if (isObject3(value)) { var other = typeof value.valueOf == "function" ? value.valueOf() : value; value = isObject3(other) ? other + "" : other; } if (typeof value != "string") { return value === 0 ? value : +value; } value = baseTrim(value); var isBinary = reIsBinary.test(value); return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value; } function toPlainObject(value) { return copyObject(value, keysIn(value)); } function toSafeInteger(value) { return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0; } function toString(value) { return value == null ? "" : baseToString(value); } var assign = createAssigner(function(object, source) { if (isPrototype(source) || isArrayLike(source)) { copyObject(source, keys(source), object); return; } for (var key in source) { if (hasOwnProperty3.call(source, key)) { assignValue(object, key, source[key]); } } }); var assignIn = createAssigner(function(object, source) { copyObject(source, keysIn(source), object); }); var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { copyObject(source, keysIn(source), object, customizer); }); var assignWith = createAssigner(function(object, source, srcIndex, customizer) { copyObject(source, keys(source), object, customizer); }); var at2 = flatRest(baseAt); function create(prototype, properties) { var result2 = baseCreate(prototype); return properties == null ? result2 : baseAssign(result2, properties); } var defaults = baseRest(function(object, sources) { object = Object2(object); var index = -1; var length = sources.length; var guard = length > 2 ? sources[2] : undefined2; if (guard && isIterateeCall(sources[0], sources[1], guard)) { length = 1; } while (++index < length) { var source = sources[index]; var props = keysIn(source); var propsIndex = -1; var propsLength = props.length; while (++propsIndex < propsLength) { var key = props[propsIndex]; var value = object[key]; if (value === undefined2 || eq(value, objectProto[key]) && !hasOwnProperty3.call(object, key)) { object[key] = source[key]; } } } return object; }); var defaultsDeep = baseRest(function(args) { args.push(undefined2, customDefaultsMerge); return apply(mergeWith, undefined2, args); }); function findKey(object, predicate) { return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); } function findLastKey(object, predicate) { return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); } function forIn(object, iteratee2) { return object == null ? object : baseFor(object, getIteratee(iteratee2, 3), keysIn); } function forInRight(object, iteratee2) { return object == null ? object : baseForRight(object, getIteratee(iteratee2, 3), keysIn); } function forOwn(object, iteratee2) { return object && baseForOwn(object, getIteratee(iteratee2, 3)); } function forOwnRight(object, iteratee2) { return object && baseForOwnRight(object, getIteratee(iteratee2, 3)); } function functions(object) { return object == null ? [] : baseFunctions(object, keys(object)); } function functionsIn(object) { return object == null ? [] : baseFunctions(object, keysIn(object)); } function get3(object, path, defaultValue) { var result2 = object == null ? undefined2 : baseGet(object, path); return result2 === undefined2 ? defaultValue : result2; } function has2(object, path) { return object != null && hasPath(object, path, baseHas); } function hasIn(object, path) { return object != null && hasPath(object, path, baseHasIn); } var invert = createInverter(function(result2, value, key) { if (value != null && typeof value.toString != "function") { value = nativeObjectToString.call(value); } result2[value] = key; }, constant(identity)); var invertBy = createInverter(function(result2, value, key) { if (value != null && typeof value.toString != "function") { value = nativeObjectToString.call(value); } if (hasOwnProperty3.call(result2, value)) { result2[value].push(key); } else { result2[value] = [key]; } }, getIteratee); var invoke = baseRest(baseInvoke); function keys(object) { return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } function keysIn(object) { return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); } function mapKeys(object, iteratee2) { var result2 = {}; iteratee2 = getIteratee(iteratee2, 3); baseForOwn(object, function(value, key, object2) { baseAssignValue(result2, iteratee2(value, key, object2), value); }); return result2; } function mapValues2(object, iteratee2) { var result2 = {}; iteratee2 = getIteratee(iteratee2, 3); baseForOwn(object, function(value, key, object2) { baseAssignValue(result2, key, iteratee2(value, key, object2)); }); return result2; } var merge = createAssigner(function(object, source, srcIndex) { baseMerge(object, source, srcIndex); }); var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { baseMerge(object, source, srcIndex, customizer); }); var omit = flatRest(function(object, paths) { var result2 = {}; if (object == null) { return result2; } var isDeep = false; paths = arrayMap(paths, function(path) { path = castPath(path, object); isDeep || (isDeep = path.length > 1); return path; }); copyObject(object, getAllKeysIn(object), result2); if (isDeep) { result2 = baseClone(result2, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); } var length = paths.length; while (length--) { baseUnset(result2, paths[length]); } return result2; }); function omitBy(object, predicate) { return pickBy(object, negate(getIteratee(predicate))); } var pick = flatRest(function(object, paths) { return object == null ? {} : basePick(object, paths); }); function pickBy(object, predicate) { if (object == null) { return {}; } var props = arrayMap(getAllKeysIn(object), function(prop) { return [prop]; }); predicate = getIteratee(predicate); return basePickBy(object, props, function(value, path) { return predicate(value, path[0]); }); } function result(object, path, defaultValue) { path = castPath(path, object); var index = -1, length = path.length; if (!length) { length = 1; object = undefined2; } while (++index < length) { var value = object == null ? undefined2 : object[toKey(path[index])]; if (value === undefined2) { index = length; value = defaultValue; } object = isFunction(value) ? value.call(object) : value; } return object; } function set3(object, path, value) { return object == null ? object : baseSet(object, path, value); } function setWith(object, path, value, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseSet(object, path, value, customizer); } var toPairs2 = createToPairs(keys); var toPairsIn = createToPairs(keysIn); function transform(object, iteratee2, accumulator) { var isArr = isArray2(object), isArrLike = isArr || isBuffer(object) || isTypedArray(object); iteratee2 = getIteratee(iteratee2, 4); if (accumulator == null) { var Ctor = object && object.constructor; if (isArrLike) { accumulator = isArr ? new Ctor() : []; } else if (isObject3(object)) { accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; } else { accumulator = {}; } } (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object2) { return iteratee2(accumulator, value, index, object2); }); return accumulator; } function unset(object, path) { return object == null ? true : baseUnset(object, path); } function update(object, path, updater) { return object == null ? object : baseUpdate(object, path, castFunction(updater)); } function updateWith(object, path, updater, customizer) { customizer = typeof customizer == "function" ? customizer : undefined2; return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); } function values(object) { return object == null ? [] : baseValues(object, keys(object)); } function valuesIn(object) { return object == null ? [] : baseValues(object, keysIn(object)); } function clamp2(number, lower, upper) { if (upper === undefined2) { upper = lower; lower = undefined2; } if (upper !== undefined2) { upper = toNumber(upper); upper = upper === upper ? upper : 0; } if (lower !== undefined2) { lower = toNumber(lower); lower = lower === lower ? lower : 0; } return baseClamp(toNumber(number), lower, upper); } function inRange(number, start5, end2) { start5 = toFinite(start5); if (end2 === undefined2) { end2 = start5; start5 = 0; } else { end2 = toFinite(end2); } number = toNumber(number); return baseInRange(number, start5, end2); } function random(lower, upper, floating) { if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { upper = floating = undefined2; } if (floating === undefined2) { if (typeof upper == "boolean") { floating = upper; upper = undefined2; } else if (typeof lower == "boolean") { floating = lower; lower = undefined2; } } if (lower === undefined2 && upper === undefined2) { lower = 0; upper = 1; } else { lower = toFinite(lower); if (upper === undefined2) { upper = lower; lower = 0; } else { upper = toFinite(upper); } } if (lower > upper) { var temp = lower; lower = upper; upper = temp; } if (floating || lower % 1 || upper % 1) { var rand = nativeRandom(); return nativeMin(lower + rand * (upper - lower + freeParseFloat("1e-" + ((rand + "").length - 1))), upper); } return baseRandom(lower, upper); } var camelCase6 = createCompounder(function(result2, word, index) { word = word.toLowerCase(); return result2 + (index ? capitalize2(word) : word); }); function capitalize2(string) { return upperFirst(toString(string).toLowerCase()); } function deburr(string) { string = toString(string); return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ""); } function endsWith(string, target, position) { string = toString(string); target = baseToString(target); var length = string.length; position = position === undefined2 ? length : baseClamp(toInteger(position), 0, length); var end2 = position; position -= target.length; return position >= 0 && string.slice(position, end2) == target; } function escape(string) { string = toString(string); return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string; } function escapeRegExp(string) { string = toString(string); return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, "\\$&") : string; } var kebabCase5 = createCompounder(function(result2, word, index) { return result2 + (index ? "-" : "") + word.toLowerCase(); }); var lowerCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + word.toLowerCase(); }); var lowerFirst = createCaseFirst("toLowerCase"); function pad(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; if (!length || strLength >= length) { return string; } var mid = (length - strLength) / 2; return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars); } function padEnd(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? string + createPadding(length - strLength, chars) : string; } function padStart(string, length, chars) { string = toString(string); length = toInteger(length); var strLength = length ? stringSize(string) : 0; return length && strLength < length ? createPadding(length - strLength, chars) + string : string; } function parseInt2(string, radix, guard) { if (guard || radix == null) { radix = 0; } else if (radix) { radix = +radix; } return nativeParseInt(toString(string).replace(reTrimStart, ""), radix || 0); } function repeat(string, n3, guard) { if (guard ? isIterateeCall(string, n3, guard) : n3 === undefined2) { n3 = 1; } else { n3 = toInteger(n3); } return baseRepeat(toString(string), n3); } function replace() { var args = arguments, string = toString(args[0]); return args.length < 3 ? string : string.replace(args[1], args[2]); } var snakeCase = createCompounder(function(result2, word, index) { return result2 + (index ? "_" : "") + word.toLowerCase(); }); function split(string, separator, limit) { if (limit && typeof limit != "number" && isIterateeCall(string, separator, limit)) { separator = limit = undefined2; } limit = limit === undefined2 ? MAX_ARRAY_LENGTH : limit >>> 0; if (!limit) { return []; } string = toString(string); if (string && (typeof separator == "string" || separator != null && !isRegExp(separator))) { separator = baseToString(separator); if (!separator && hasUnicode(string)) { return castSlice(stringToArray(string), 0, limit); } } return string.split(separator, limit); } var startCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + upperFirst(word); }); function startsWith(string, target, position) { string = toString(string); position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length); target = baseToString(target); return string.slice(position, position + target.length) == target; } function template(string, options, guard) { var settings = lodash.templateSettings; if (guard && isIterateeCall(string, options, guard)) { options = undefined2; } string = toString(string); options = assignInWith({}, options, settings, customDefaultsAssignIn); var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); var isEscaping, isEvaluating, index = 0, interpolate2 = options.interpolate || reNoMatch, source = "__p += '"; var reDelimiters = RegExp2( (options.escape || reNoMatch).source + "|" + interpolate2.source + "|" + (interpolate2 === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g" ); var sourceURL = "//# sourceURL=" + (hasOwnProperty3.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) { interpolateValue || (interpolateValue = esTemplateValue); source += string.slice(index, offset2).replace(reUnescapedString, escapeStringChar); if (escapeValue) { isEscaping = true; source += "' +\n__e(" + escapeValue + ") +\n'"; } if (evaluateValue) { isEvaluating = true; source += "';\n" + evaluateValue + ";\n__p += '"; } if (interpolateValue) { source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; } index = offset2 + match.length; return match; }); source += "';\n"; var variable = hasOwnProperty3.call(options, "variable") && options.variable; if (!variable) { source = "with (obj) {\n" + source + "\n}\n"; } else if (reForbiddenIdentifierChars.test(variable)) { throw new Error2(INVALID_TEMPL_VAR_ERROR_TEXT); } source = (isEvaluating ? source.replace(reEmptyStringLeading, "") : source).replace(reEmptyStringMiddle, "$1").replace(reEmptyStringTrailing, "$1;"); source = "function(" + (variable || "obj") + ") {\n" + (variable ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (isEscaping ? ", __e = _.escape" : "") + (isEvaluating ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + source + "return __p\n}"; var result2 = attempt(function() { return Function2(importsKeys, sourceURL + "return " + source).apply(undefined2, importsValues); }); result2.source = source; if (isError(result2)) { throw result2; } return result2; } function toLower(value) { return toString(value).toLowerCase(); } function toUpper(value) { return toString(value).toUpperCase(); } function trim(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return baseTrim(string); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start5 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1; return castSlice(strSymbols, start5, end2).join(""); } function trimEnd(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return string.slice(0, trimmedEndIndex(string) + 1); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), end2 = charsEndIndex(strSymbols, stringToArray(chars)) + 1; return castSlice(strSymbols, 0, end2).join(""); } function trimStart(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return string.replace(reTrimStart, ""); } if (!string || !(chars = baseToString(chars))) { return string; } var strSymbols = stringToArray(string), start5 = charsStartIndex(strSymbols, stringToArray(chars)); return castSlice(strSymbols, start5).join(""); } function truncate(string, options) { var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; if (isObject3(options)) { var separator = "separator" in options ? options.separator : separator; length = "length" in options ? toInteger(options.length) : length; omission = "omission" in options ? baseToString(options.omission) : omission; } string = toString(string); var strLength = string.length; if (hasUnicode(string)) { var strSymbols = stringToArray(string); strLength = strSymbols.length; } if (length >= strLength) { return string; } var end2 = length - stringSize(omission); if (end2 < 1) { return omission; } var result2 = strSymbols ? castSlice(strSymbols, 0, end2).join("") : string.slice(0, end2); if (separator === undefined2) { return result2 + omission; } if (strSymbols) { end2 += result2.length - end2; } if (isRegExp(separator)) { if (string.slice(end2).search(separator)) { var match, substring = result2; if (!separator.global) { separator = RegExp2(separator.source, toString(reFlags.exec(separator)) + "g"); } separator.lastIndex = 0; while (match = separator.exec(substring)) { var newEnd = match.index; } result2 = result2.slice(0, newEnd === undefined2 ? end2 : newEnd); } } else if (string.indexOf(baseToString(separator), end2) != end2) { var index = result2.lastIndexOf(separator); if (index > -1) { result2 = result2.slice(0, index); } } return result2 + omission; } function unescape2(string) { string = toString(string); return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string; } var upperCase = createCompounder(function(result2, word, index) { return result2 + (index ? " " : "") + word.toUpperCase(); }); var upperFirst = createCaseFirst("toUpperCase"); function words(string, pattern, guard) { string = toString(string); pattern = guard ? undefined2 : pattern; if (pattern === undefined2) { return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); } return string.match(pattern) || []; } var attempt = baseRest(function(func, args) { try { return apply(func, undefined2, args); } catch (e3) { return isError(e3) ? e3 : new Error2(e3); } }); var bindAll = flatRest(function(object, methodNames) { arrayEach(methodNames, function(key) { key = toKey(key); baseAssignValue(object, key, bind4(object[key], object)); }); return object; }); function cond(pairs) { var length = pairs == null ? 0 : pairs.length, toIteratee = getIteratee(); pairs = !length ? [] : arrayMap(pairs, function(pair) { if (typeof pair[1] != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } return [toIteratee(pair[0]), pair[1]]; }); return baseRest(function(args) { var index = -1; while (++index < length) { var pair = pairs[index]; if (apply(pair[0], this, args)) { return apply(pair[1], this, args); } } }); } function conforms(source) { return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); } function constant(value) { return function() { return value; }; } function defaultTo(value, defaultValue) { return value == null || value !== value ? defaultValue : value; } var flow = createFlow(); var flowRight = createFlow(true); function identity(value) { return value; } function iteratee(func) { return baseIteratee(typeof func == "function" ? func : baseClone(func, CLONE_DEEP_FLAG)); } function matches2(source) { return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); } function matchesProperty(path, srcValue) { return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); } var method = baseRest(function(path, args) { return function(object) { return baseInvoke(object, path, args); }; }); var methodOf = baseRest(function(object, args) { return function(path) { return baseInvoke(object, path, args); }; }); function mixin(object, source, options) { var props = keys(source), methodNames = baseFunctions(source, props); if (options == null && !(isObject3(source) && (methodNames.length || !props.length))) { options = source; source = object; object = this; methodNames = baseFunctions(source, keys(source)); } var chain2 = !(isObject3(options) && "chain" in options) || !!options.chain, isFunc = isFunction(object); arrayEach(methodNames, function(methodName) { var func = source[methodName]; object[methodName] = func; if (isFunc) { object.prototype[methodName] = function() { var chainAll = this.__chain__; if (chain2 || chainAll) { var result2 = object(this.__wrapped__), actions = result2.__actions__ = copyArray(this.__actions__); actions.push({ "func": func, "args": arguments, "thisArg": object }); result2.__chain__ = chainAll; return result2; } return func.apply(object, arrayPush([this.value()], arguments)); }; } }); return object; } function noConflict() { if (root._ === this) { root._ = oldDash; } return this; } function noop() { } function nthArg(n3) { n3 = toInteger(n3); return baseRest(function(args) { return baseNth(args, n3); }); } var over = createOver(arrayMap); var overEvery = createOver(arrayEvery); var overSome = createOver(arraySome); function property(path) { return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); } function propertyOf(object) { return function(path) { return object == null ? undefined2 : baseGet(object, path); }; } var range = createRange(); var rangeRight = createRange(true); function stubArray() { return []; } function stubFalse() { return false; } function stubObject() { return {}; } function stubString() { return ""; } function stubTrue() { return true; } function times(n3, iteratee2) { n3 = toInteger(n3); if (n3 < 1 || n3 > MAX_SAFE_INTEGER) { return []; } var index = MAX_ARRAY_LENGTH, length = nativeMin(n3, MAX_ARRAY_LENGTH); iteratee2 = getIteratee(iteratee2); n3 -= MAX_ARRAY_LENGTH; var result2 = baseTimes(length, iteratee2); while (++index < n3) { iteratee2(index); } return result2; } function toPath(value) { if (isArray2(value)) { return arrayMap(value, toKey); } return isSymbol2(value) ? [value] : copyArray(stringToPath(toString(value))); } function uniqueId(prefix2) { var id2 = ++idCounter2; return toString(prefix2) + id2; } var add2 = createMathOperation(function(augend, addend) { return augend + addend; }, 0); var ceil = createRound("ceil"); var divide = createMathOperation(function(dividend, divisor) { return dividend / divisor; }, 1); var floor2 = createRound("floor"); function max2(array) { return array && array.length ? baseExtremum(array, identity, baseGt) : undefined2; } function maxBy(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseGt) : undefined2; } function mean(array) { return baseMean(array, identity); } function meanBy(array, iteratee2) { return baseMean(array, getIteratee(iteratee2, 2)); } function min2(array) { return array && array.length ? baseExtremum(array, identity, baseLt) : undefined2; } function minBy(array, iteratee2) { return array && array.length ? baseExtremum(array, getIteratee(iteratee2, 2), baseLt) : undefined2; } var multiply = createMathOperation(function(multiplier, multiplicand) { return multiplier * multiplicand; }, 1); var round3 = createRound("round"); var subtract = createMathOperation(function(minuend, subtrahend) { return minuend - subtrahend; }, 0); function sum(array) { return array && array.length ? baseSum(array, identity) : 0; } function sumBy(array, iteratee2) { return array && array.length ? baseSum(array, getIteratee(iteratee2, 2)) : 0; } lodash.after = after; lodash.ary = ary; lodash.assign = assign; lodash.assignIn = assignIn; lodash.assignInWith = assignInWith; lodash.assignWith = assignWith; lodash.at = at2; lodash.before = before; lodash.bind = bind4; lodash.bindAll = bindAll; lodash.bindKey = bindKey; lodash.castArray = castArray; lodash.chain = chain; lodash.chunk = chunk; lodash.compact = compact; lodash.concat = concat; lodash.cond = cond; lodash.conforms = conforms; lodash.constant = constant; lodash.countBy = countBy; lodash.create = create; lodash.curry = curry; lodash.curryRight = curryRight; lodash.debounce = debounce4; lodash.defaults = defaults; lodash.defaultsDeep = defaultsDeep; lodash.defer = defer; lodash.delay = delay3; lodash.difference = difference; lodash.differenceBy = differenceBy; lodash.differenceWith = differenceWith; lodash.drop = drop; lodash.dropRight = dropRight; lodash.dropRightWhile = dropRightWhile; lodash.dropWhile = dropWhile; lodash.fill = fill; lodash.filter = filter; lodash.flatMap = flatMap; lodash.flatMapDeep = flatMapDeep; lodash.flatMapDepth = flatMapDepth; lodash.flatten = flatten; lodash.flattenDeep = flattenDeep; lodash.flattenDepth = flattenDepth; lodash.flip = flip2; lodash.flow = flow; lodash.flowRight = flowRight; lodash.fromPairs = fromPairs; lodash.functions = functions; lodash.functionsIn = functionsIn; lodash.groupBy = groupBy; lodash.initial = initial; lodash.intersection = intersection; lodash.intersectionBy = intersectionBy; lodash.intersectionWith = intersectionWith; lodash.invert = invert; lodash.invertBy = invertBy; lodash.invokeMap = invokeMap; lodash.iteratee = iteratee; lodash.keyBy = keyBy2; lodash.keys = keys; lodash.keysIn = keysIn; lodash.map = map; lodash.mapKeys = mapKeys; lodash.mapValues = mapValues2; lodash.matches = matches2; lodash.matchesProperty = matchesProperty; lodash.memoize = memoize; lodash.merge = merge; lodash.mergeWith = mergeWith; lodash.method = method; lodash.methodOf = methodOf; lodash.mixin = mixin; lodash.negate = negate; lodash.nthArg = nthArg; lodash.omit = omit; lodash.omitBy = omitBy; lodash.once = once2; lodash.orderBy = orderBy; lodash.over = over; lodash.overArgs = overArgs; lodash.overEvery = overEvery; lodash.overSome = overSome; lodash.partial = partial; lodash.partialRight = partialRight; lodash.partition = partition; lodash.pick = pick; lodash.pickBy = pickBy; lodash.property = property; lodash.propertyOf = propertyOf; lodash.pull = pull; lodash.pullAll = pullAll; lodash.pullAllBy = pullAllBy; lodash.pullAllWith = pullAllWith; lodash.pullAt = pullAt; lodash.range = range; lodash.rangeRight = rangeRight; lodash.rearg = rearg; lodash.reject = reject; lodash.remove = remove; lodash.rest = rest; lodash.reverse = reverse; lodash.sampleSize = sampleSize; lodash.set = set3; lodash.setWith = setWith; lodash.shuffle = shuffle; lodash.slice = slice; lodash.sortBy = sortBy; lodash.sortedUniq = sortedUniq; lodash.sortedUniqBy = sortedUniqBy; lodash.split = split; lodash.spread = spread; lodash.tail = tail; lodash.take = take; lodash.takeRight = takeRight; lodash.takeRightWhile = takeRightWhile; lodash.takeWhile = takeWhile; lodash.tap = tap; lodash.throttle = throttle2; lodash.thru = thru; lodash.toArray = toArray2; lodash.toPairs = toPairs2; lodash.toPairsIn = toPairsIn; lodash.toPath = toPath; lodash.toPlainObject = toPlainObject; lodash.transform = transform; lodash.unary = unary; lodash.union = union; lodash.unionBy = unionBy; lodash.unionWith = unionWith; lodash.uniq = uniq; lodash.uniqBy = uniqBy; lodash.uniqWith = uniqWith; lodash.unset = unset; lodash.unzip = unzip; lodash.unzipWith = unzipWith; lodash.update = update; lodash.updateWith = updateWith; lodash.values = values; lodash.valuesIn = valuesIn; lodash.without = without; lodash.words = words; lodash.wrap = wrap; lodash.xor = xor; lodash.xorBy = xorBy; lodash.xorWith = xorWith; lodash.zip = zip; lodash.zipObject = zipObject; lodash.zipObjectDeep = zipObjectDeep; lodash.zipWith = zipWith; lodash.entries = toPairs2; lodash.entriesIn = toPairsIn; lodash.extend = assignIn; lodash.extendWith = assignInWith; mixin(lodash, lodash); lodash.add = add2; lodash.attempt = attempt; lodash.camelCase = camelCase6; lodash.capitalize = capitalize2; lodash.ceil = ceil; lodash.clamp = clamp2; lodash.clone = clone2; lodash.cloneDeep = cloneDeep; lodash.cloneDeepWith = cloneDeepWith; lodash.cloneWith = cloneWith; lodash.conformsTo = conformsTo; lodash.deburr = deburr; lodash.defaultTo = defaultTo; lodash.divide = divide; lodash.endsWith = endsWith; lodash.eq = eq; lodash.escape = escape; lodash.escapeRegExp = escapeRegExp; lodash.every = every; lodash.find = find; lodash.findIndex = findIndex3; lodash.findKey = findKey; lodash.findLast = findLast; lodash.findLastIndex = findLastIndex; lodash.findLastKey = findLastKey; lodash.floor = floor2; lodash.forEach = forEach; lodash.forEachRight = forEachRight; lodash.forIn = forIn; lodash.forInRight = forInRight; lodash.forOwn = forOwn; lodash.forOwnRight = forOwnRight; lodash.get = get3; lodash.gt = gt; lodash.gte = gte; lodash.has = has2; lodash.hasIn = hasIn; lodash.head = head; lodash.identity = identity; lodash.includes = includes; lodash.indexOf = indexOf2; lodash.inRange = inRange; lodash.invoke = invoke; lodash.isArguments = isArguments; lodash.isArray = isArray2; lodash.isArrayBuffer = isArrayBuffer; lodash.isArrayLike = isArrayLike; lodash.isArrayLikeObject = isArrayLikeObject; lodash.isBoolean = isBoolean; lodash.isBuffer = isBuffer; lodash.isDate = isDate; lodash.isElement = isElement3; lodash.isEmpty = isEmpty; lodash.isEqual = isEqual; lodash.isEqualWith = isEqualWith; lodash.isError = isError; lodash.isFinite = isFinite; lodash.isFunction = isFunction; lodash.isInteger = isInteger; lodash.isLength = isLength; lodash.isMap = isMap2; lodash.isMatch = isMatch; lodash.isMatchWith = isMatchWith; lodash.isNaN = isNaN2; lodash.isNative = isNative; lodash.isNil = isNil; lodash.isNull = isNull; lodash.isNumber = isNumber; lodash.isObject = isObject3; lodash.isObjectLike = isObjectLike; lodash.isPlainObject = isPlainObject; lodash.isRegExp = isRegExp; lodash.isSafeInteger = isSafeInteger; lodash.isSet = isSet; lodash.isString = isString2; lodash.isSymbol = isSymbol2; lodash.isTypedArray = isTypedArray; lodash.isUndefined = isUndefined; lodash.isWeakMap = isWeakMap; lodash.isWeakSet = isWeakSet; lodash.join = join; lodash.kebabCase = kebabCase5; lodash.last = last; lodash.lastIndexOf = lastIndexOf; lodash.lowerCase = lowerCase; lodash.lowerFirst = lowerFirst; lodash.lt = lt2; lodash.lte = lte; lodash.max = max2; lodash.maxBy = maxBy; lodash.mean = mean; lodash.meanBy = meanBy; lodash.min = min2; lodash.minBy = minBy; lodash.stubArray = stubArray; lodash.stubFalse = stubFalse; lodash.stubObject = stubObject; lodash.stubString = stubString; lodash.stubTrue = stubTrue; lodash.multiply = multiply; lodash.nth = nth; lodash.noConflict = noConflict; lodash.noop = noop; lodash.now = now2; lodash.pad = pad; lodash.padEnd = padEnd; lodash.padStart = padStart; lodash.parseInt = parseInt2; lodash.random = random; lodash.reduce = reduce; lodash.reduceRight = reduceRight; lodash.repeat = repeat; lodash.replace = replace; lodash.result = result; lodash.round = round3; lodash.runInContext = runInContext2; lodash.sample = sample; lodash.size = size2; lodash.snakeCase = snakeCase; lodash.some = some; lodash.sortedIndex = sortedIndex; lodash.sortedIndexBy = sortedIndexBy; lodash.sortedIndexOf = sortedIndexOf; lodash.sortedLastIndex = sortedLastIndex; lodash.sortedLastIndexBy = sortedLastIndexBy; lodash.sortedLastIndexOf = sortedLastIndexOf; lodash.startCase = startCase; lodash.startsWith = startsWith; lodash.subtract = subtract; lodash.sum = sum; lodash.sumBy = sumBy; lodash.template = template; lodash.times = times; lodash.toFinite = toFinite; lodash.toInteger = toInteger; lodash.toLength = toLength; lodash.toLower = toLower; lodash.toNumber = toNumber; lodash.toSafeInteger = toSafeInteger; lodash.toString = toString; lodash.toUpper = toUpper; lodash.trim = trim; lodash.trimEnd = trimEnd; lodash.trimStart = trimStart; lodash.truncate = truncate; lodash.unescape = unescape2; lodash.uniqueId = uniqueId; lodash.upperCase = upperCase; lodash.upperFirst = upperFirst; lodash.each = forEach; lodash.eachRight = forEachRight; lodash.first = head; mixin(lodash, function() { var source = {}; baseForOwn(lodash, function(func, methodName) { if (!hasOwnProperty3.call(lodash.prototype, methodName)) { source[methodName] = func; } }); return source; }(), { "chain": false }); lodash.VERSION = VERSION; arrayEach(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(methodName) { lodash[methodName].placeholder = lodash; }); arrayEach(["drop", "take"], function(methodName, index) { LazyWrapper.prototype[methodName] = function(n3) { n3 = n3 === undefined2 ? 1 : nativeMax(toInteger(n3), 0); var result2 = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone(); if (result2.__filtered__) { result2.__takeCount__ = nativeMin(n3, result2.__takeCount__); } else { result2.__views__.push({ "size": nativeMin(n3, MAX_ARRAY_LENGTH), "type": methodName + (result2.__dir__ < 0 ? "Right" : "") }); } return result2; }; LazyWrapper.prototype[methodName + "Right"] = function(n3) { return this.reverse()[methodName](n3).reverse(); }; }); arrayEach(["filter", "map", "takeWhile"], function(methodName, index) { var type = index + 1, isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; LazyWrapper.prototype[methodName] = function(iteratee2) { var result2 = this.clone(); result2.__iteratees__.push({ "iteratee": getIteratee(iteratee2, 3), "type": type }); result2.__filtered__ = result2.__filtered__ || isFilter; return result2; }; }); arrayEach(["head", "last"], function(methodName, index) { var takeName = "take" + (index ? "Right" : ""); LazyWrapper.prototype[methodName] = function() { return this[takeName](1).value()[0]; }; }); arrayEach(["initial", "tail"], function(methodName, index) { var dropName = "drop" + (index ? "" : "Right"); LazyWrapper.prototype[methodName] = function() { return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); }; }); LazyWrapper.prototype.compact = function() { return this.filter(identity); }; LazyWrapper.prototype.find = function(predicate) { return this.filter(predicate).head(); }; LazyWrapper.prototype.findLast = function(predicate) { return this.reverse().find(predicate); }; LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { if (typeof path == "function") { return new LazyWrapper(this); } return this.map(function(value) { return baseInvoke(value, path, args); }); }); LazyWrapper.prototype.reject = function(predicate) { return this.filter(negate(getIteratee(predicate))); }; LazyWrapper.prototype.slice = function(start5, end2) { start5 = toInteger(start5); var result2 = this; if (result2.__filtered__ && (start5 > 0 || end2 < 0)) { return new LazyWrapper(result2); } if (start5 < 0) { result2 = result2.takeRight(-start5); } else if (start5) { result2 = result2.drop(start5); } if (end2 !== undefined2) { end2 = toInteger(end2); result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start5); } return result2; }; LazyWrapper.prototype.takeRightWhile = function(predicate) { return this.reverse().takeWhile(predicate).reverse(); }; LazyWrapper.prototype.toArray = function() { return this.take(MAX_ARRAY_LENGTH); }; baseForOwn(LazyWrapper.prototype, function(func, methodName) { var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), isTaker = /^(?:head|last)$/.test(methodName), lodashFunc = lodash[isTaker ? "take" + (methodName == "last" ? "Right" : "") : methodName], retUnwrapped = isTaker || /^find/.test(methodName); if (!lodashFunc) { return; } lodash.prototype[methodName] = function() { var value = this.__wrapped__, args = isTaker ? [1] : arguments, isLazy = value instanceof LazyWrapper, iteratee2 = args[0], useLazy = isLazy || isArray2(value); var interceptor2 = function(value2) { var result3 = lodashFunc.apply(lodash, arrayPush([value2], args)); return isTaker && chainAll ? result3[0] : result3; }; if (useLazy && checkIteratee && typeof iteratee2 == "function" && iteratee2.length != 1) { isLazy = useLazy = false; } var chainAll = this.__chain__, isHybrid = !!this.__actions__.length, isUnwrapped = retUnwrapped && !chainAll, onlyLazy = isLazy && !isHybrid; if (!retUnwrapped && useLazy) { value = onlyLazy ? value : new LazyWrapper(this); var result2 = func.apply(value, args); result2.__actions__.push({ "func": thru, "args": [interceptor2], "thisArg": undefined2 }); return new LodashWrapper(result2, chainAll); } if (isUnwrapped && onlyLazy) { return func.apply(this, args); } result2 = this.thru(interceptor2); return isUnwrapped ? isTaker ? result2.value()[0] : result2.value() : result2; }; }); arrayEach(["pop", "push", "shift", "sort", "splice", "unshift"], function(methodName) { var func = arrayProto[methodName], chainName = /^(?:push|sort|unshift)$/.test(methodName) ? "tap" : "thru", retUnwrapped = /^(?:pop|shift)$/.test(methodName); lodash.prototype[methodName] = function() { var args = arguments; if (retUnwrapped && !this.__chain__) { var value = this.value(); return func.apply(isArray2(value) ? value : [], args); } return this[chainName](function(value2) { return func.apply(isArray2(value2) ? value2 : [], args); }); }; }); baseForOwn(LazyWrapper.prototype, function(func, methodName) { var lodashFunc = lodash[methodName]; if (lodashFunc) { var key = lodashFunc.name + ""; if (!hasOwnProperty3.call(realNames, key)) { realNames[key] = []; } realNames[key].push({ "name": methodName, "func": lodashFunc }); } }); realNames[createHybrid(undefined2, WRAP_BIND_KEY_FLAG).name] = [{ "name": "wrapper", "func": undefined2 }]; LazyWrapper.prototype.clone = lazyClone; LazyWrapper.prototype.reverse = lazyReverse; LazyWrapper.prototype.value = lazyValue; lodash.prototype.at = wrapperAt; lodash.prototype.chain = wrapperChain; lodash.prototype.commit = wrapperCommit; lodash.prototype.next = wrapperNext; lodash.prototype.plant = wrapperPlant; lodash.prototype.reverse = wrapperReverse; lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; lodash.prototype.first = lodash.prototype.head; if (symIterator) { lodash.prototype[symIterator] = wrapperToIterator; } return lodash; }; var _3 = runInContext(); if (typeof define == "function" && typeof define.amd == "object" && define.amd) { root._ = _3; define(function() { return _3; }); } else if (freeModule) { (freeModule.exports = _3)._ = _3; freeExports._ = _3; } else { root._ = _3; } }).call(exports); } }); // ../../../node_modules/picocolors/picocolors.browser.js var require_picocolors_browser = __commonJS({ "../../../node_modules/picocolors/picocolors.browser.js"(exports, module) { var x3 = String; var create = function() { return { isColorSupported: false, reset: x3, bold: x3, dim: x3, italic: x3, underline: x3, inverse: x3, hidden: x3, strikethrough: x3, black: x3, red: x3, green: x3, yellow: x3, blue: x3, magenta: x3, cyan: x3, white: x3, gray: x3, bgBlack: x3, bgRed: x3, bgGreen: x3, bgYellow: x3, bgBlue: x3, bgMagenta: x3, bgCyan: x3, bgWhite: x3 }; }; module.exports = create(); module.exports.createColors = create; } }); // ../../../node_modules/tailwindcss/lib/util/log.js var require_log = __commonJS({ "../../../node_modules/tailwindcss/lib/util/log.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for (var name in all) Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { dim: function() { return dim; }, default: function() { return _default; } }); var _picocolors = /* @__PURE__ */ _interop_require_default(require_picocolors_browser()); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var alreadyShown = /* @__PURE__ */ new Set(); function log2(type, messages, key) { if (typeof process !== "undefined" && process.env.JEST_WORKER_ID) return; if (key && alreadyShown.has(key)) return; if (key) alreadyShown.add(key); console.warn(""); messages.forEach((message2) => console.warn(type, "-", message2)); } function dim(input) { return _picocolors.default.dim(input); } var _default = { info(key, messages) { log2(_picocolors.default.bold(_picocolors.default.cyan("info")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); }, warn(key, messages) { log2(_picocolors.default.bold(_picocolors.default.yellow("warn")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); }, risk(key, messages) { log2(_picocolors.default.bold(_picocolors.default.magenta("risk")), ...Array.isArray(key) ? [ key ] : [ messages, key ]); } }; } }); // ../../../node_modules/tailwindcss/lib/public/colors.js var require_colors = __commonJS({ "../../../node_modules/tailwindcss/lib/public/colors.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); var _log = /* @__PURE__ */ _interop_require_default(require_log()); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function warn2({ version, from, to }) { _log.default.warn(`${from}-color-renamed`, [ `As of Tailwind CSS ${version}, \`${from}\` has been renamed to \`${to}\`.`, "Update your configuration file to silence this warning." ]); } var _default = { inherit: "inherit", current: "currentColor", transparent: "transparent", black: "#000", white: "#fff", slate: { 50: "#f8fafc", 100: "#f1f5f9", 200: "#e2e8f0", 300: "#cbd5e1", 400: "#94a3b8", 500: "#64748b", 600: "#475569", 700: "#334155", 800: "#1e293b", 900: "#0f172a", 950: "#020617" }, gray: { 50: "#f9fafb", 100: "#f3f4f6", 200: "#e5e7eb", 300: "#d1d5db", 400: "#9ca3af", 500: "#6b7280", 600: "#4b5563", 700: "#374151", 800: "#1f2937", 900: "#111827", 950: "#030712" }, zinc: { 50: "#fafafa", 100: "#f4f4f5", 200: "#e4e4e7", 300: "#d4d4d8", 400: "#a1a1aa", 500: "#71717a", 600: "#52525b", 700: "#3f3f46", 800: "#27272a", 900: "#18181b", 950: "#09090b" }, neutral: { 50: "#fafafa", 100: "#f5f5f5", 200: "#e5e5e5", 300: "#d4d4d4", 400: "#a3a3a3", 500: "#737373", 600: "#525252", 700: "#404040", 800: "#262626", 900: "#171717", 950: "#0a0a0a" }, stone: { 50: "#fafaf9", 100: "#f5f5f4", 200: "#e7e5e4", 300: "#d6d3d1", 400: "#a8a29e", 500: "#78716c", 600: "#57534e", 700: "#44403c", 800: "#292524", 900: "#1c1917", 950: "#0c0a09" }, red: { 50: "#fef2f2", 100: "#fee2e2", 200: "#fecaca", 300: "#fca5a5", 400: "#f87171", 500: "#ef4444", 600: "#dc2626", 700: "#b91c1c", 800: "#991b1b", 900: "#7f1d1d", 950: "#450a0a" }, orange: { 50: "#fff7ed", 100: "#ffedd5", 200: "#fed7aa", 300: "#fdba74", 400: "#fb923c", 500: "#f97316", 600: "#ea580c", 700: "#c2410c", 800: "#9a3412", 900: "#7c2d12", 950: "#431407" }, amber: { 50: "#fffbeb", 100: "#fef3c7", 200: "#fde68a", 300: "#fcd34d", 400: "#fbbf24", 500: "#f59e0b", 600: "#d97706", 700: "#b45309", 800: "#92400e", 900: "#78350f", 950: "#451a03" }, yellow: { 50: "#fefce8", 100: "#fef9c3", 200: "#fef08a", 300: "#fde047", 400: "#facc15", 500: "#eab308", 600: "#ca8a04", 700: "#a16207", 800: "#854d0e", 900: "#713f12", 950: "#422006" }, lime: { 50: "#f7fee7", 100: "#ecfccb", 200: "#d9f99d", 300: "#bef264", 400: "#a3e635", 500: "#84cc16", 600: "#65a30d", 700: "#4d7c0f", 800: "#3f6212", 900: "#365314", 950: "#1a2e05" }, green: { 50: "#f0fdf4", 100: "#dcfce7", 200: "#bbf7d0", 300: "#86efac", 400: "#4ade80", 500: "#22c55e", 600: "#16a34a", 700: "#15803d", 800: "#166534", 900: "#14532d", 950: "#052e16" }, emerald: { 50: "#ecfdf5", 100: "#d1fae5", 200: "#a7f3d0", 300: "#6ee7b7", 400: "#34d399", 500: "#10b981", 600: "#059669", 700: "#047857", 800: "#065f46", 900: "#064e3b", 950: "#022c22" }, teal: { 50: "#f0fdfa", 100: "#ccfbf1", 200: "#99f6e4", 300: "#5eead4", 400: "#2dd4bf", 500: "#14b8a6", 600: "#0d9488", 700: "#0f766e", 800: "#115e59", 900: "#134e4a", 950: "#042f2e" }, cyan: { 50: "#ecfeff", 100: "#cffafe", 200: "#a5f3fc", 300: "#67e8f9", 400: "#22d3ee", 500: "#06b6d4", 600: "#0891b2", 700: "#0e7490", 800: "#155e75", 900: "#164e63", 950: "#083344" }, sky: { 50: "#f0f9ff", 100: "#e0f2fe", 200: "#bae6fd", 300: "#7dd3fc", 400: "#38bdf8", 500: "#0ea5e9", 600: "#0284c7", 700: "#0369a1", 800: "#075985", 900: "#0c4a6e", 950: "#082f49" }, blue: { 50: "#eff6ff", 100: "#dbeafe", 200: "#bfdbfe", 300: "#93c5fd", 400: "#60a5fa", 500: "#3b82f6", 600: "#2563eb", 700: "#1d4ed8", 800: "#1e40af", 900: "#1e3a8a", 950: "#172554" }, indigo: { 50: "#eef2ff", 100: "#e0e7ff", 200: "#c7d2fe", 300: "#a5b4fc", 400: "#818cf8", 500: "#6366f1", 600: "#4f46e5", 700: "#4338ca", 800: "#3730a3", 900: "#312e81", 950: "#1e1b4b" }, violet: { 50: "#f5f3ff", 100: "#ede9fe", 200: "#ddd6fe", 300: "#c4b5fd", 400: "#a78bfa", 500: "#8b5cf6", 600: "#7c3aed", 700: "#6d28d9", 800: "#5b21b6", 900: "#4c1d95", 950: "#2e1065" }, purple: { 50: "#faf5ff", 100: "#f3e8ff", 200: "#e9d5ff", 300: "#d8b4fe", 400: "#c084fc", 500: "#a855f7", 600: "#9333ea", 700: "#7e22ce", 800: "#6b21a8", 900: "#581c87", 950: "#3b0764" }, fuchsia: { 50: "#fdf4ff", 100: "#fae8ff", 200: "#f5d0fe", 300: "#f0abfc", 400: "#e879f9", 500: "#d946ef", 600: "#c026d3", 700: "#a21caf", 800: "#86198f", 900: "#701a75", 950: "#4a044e" }, pink: { 50: "#fdf2f8", 100: "#fce7f3", 200: "#fbcfe8", 300: "#f9a8d4", 400: "#f472b6", 500: "#ec4899", 600: "#db2777", 700: "#be185d", 800: "#9d174d", 900: "#831843", 950: "#500724" }, rose: { 50: "#fff1f2", 100: "#ffe4e6", 200: "#fecdd3", 300: "#fda4af", 400: "#fb7185", 500: "#f43f5e", 600: "#e11d48", 700: "#be123c", 800: "#9f1239", 900: "#881337", 950: "#4c0519" }, get lightBlue() { warn2({ version: "v2.2", from: "lightBlue", to: "sky" }); return this.sky; }, get warmGray() { warn2({ version: "v3.0", from: "warmGray", to: "stone" }); return this.stone; }, get trueGray() { warn2({ version: "v3.0", from: "trueGray", to: "neutral" }); return this.neutral; }, get coolGray() { warn2({ version: "v3.0", from: "coolGray", to: "gray" }); return this.gray; }, get blueGray() { warn2({ version: "v3.0", from: "blueGray", to: "slate" }); return this.slate; } }; } }); // ../../../node_modules/tailwindcss/colors.js var require_colors2 = __commonJS({ "../../../node_modules/tailwindcss/colors.js"(exports, module) { var colors = require_colors(); module.exports = (colors.__esModule ? colors : { default: colors }).default; } }); // ../../../config/tokens.cjs var require_tokens = __commonJS({ "../../../config/tokens.cjs"(exports, module) { var tailwindColors = require_colors2(); var colors = { transparent: "transparent", current: "currentColor", black: tailwindColors.black, white: tailwindColors.white, gray: { 50: "#F9FAFB", 100: "#F3F4F6", 200: "#E5E7EB", 300: "#D1D5DB", 400: "#9CA3AF", 500: "#6B7280", 600: "#4B5563", 700: "#374151", 800: "#1F2937", 900: "#111827", transparent: { 50: "rgba(0, 12, 39, 0.06)", 100: "rgba(0, 12, 39, 0.1)", 200: "rgba(0, 12, 39, 0.18)" } }, green: { 50: "#E8F3F1", 100: "#D1E7E2", 200: "#A3CFC5", 300: "#76B8AA", 400: "#48A08D", 500: "#1A8871", 600: "#137464", 700: "#0D6159", 800: "#084C4E", 900: "#013C43" }, red: { 50: "#FEF2F2", 100: "#FEE2E2", 200: "#FECACA", 300: "#FCA5A5", 400: "#F87171", 500: "#EF4444", 600: "#DC2626", 700: "#B91C1C", 800: "#991B1B", 900: "#7F1D1D" }, amber: { 50: "#FFFBEB", 100: "#FEF3C7", 200: "#FDE68A", 300: "#FCD34D", 400: "#FBBF24", 500: "#F59E0B", 600: "#D97706", 700: "#B45309", 800: "#92400E", 900: "#78350F" }, blue: { 50: "#F0F9FF", 100: "#E0F2FE", 200: "#BAE6FD", 300: "#7DD3FC", 400: "#38BDF8", 500: "#0EA5E9", 600: "#0284C7", 700: "#0369A1", 800: "#075985", 900: "#0C4A6E" }, teal: tailwindColors.teal }; var colorAliases = { primary: __spreadValues({}, colors.green), positive: __spreadValues({}, colors.green), negative: __spreadValues({}, colors.red), warning: __spreadValues({}, colors.amber), info: __spreadValues({}, colors.blue), background: { light: { 1: colors.white, 2: colors.gray[50], 3: colors.gray[100] }, dark: { 1: colors.gray[900], 2: colors.gray[800], 3: colors.gray[700] }, primary: { DEFAULT: colors.green[500], light: colors.green[100] }, negative: { DEFAULT: colors.red[600], light: colors.red[100] }, warning: { DEFAULT: colors.amber[500], light: colors.amber[50] }, positive: { DEFAULT: colors.green[500], light: colors.green[100] }, info: { DEFAULT: colors.blue[600], light: colors.blue[100] } }, content: { dark: { 1: colors.gray[900], 2: colors.gray[800], muted: colors.gray[400] }, light: { 1: colors.white, 2: colors.gray[200], muted: colors.gray[400] }, primary: { DEFAULT: colors.green[500], dark: colors.green[600], inverse: colors.green[300] }, negative: { DEFAULT: colors.red[600], dark: colors.red[700], inverse: colors.red[300] }, warning: { DEFAULT: colors.amber[600], dark: colors.amber[700], inverse: colors.amber[300] }, positive: { DEFAULT: colors.green[500], dark: colors.green[600], inverse: colors.green[300] }, info: { DEFAULT: colors.blue[600], dark: colors.blue[700], inverse: colors.blue[300] } } }; var screens = { xs: "380px", sm: "576px", md: "768px", lg: "992px", xl: "1200px", "2xl": "1400px", max: "1800px", print: { raw: "print" } // Note: PDFs are rendered at a viewport width of 1280px }; var fontSize = { "para-xs": ["12px", "16px"], "para-sm": ["14px", "20px"], "para-md": ["16px", "24px"], "para-lg": ["18px", "27px"], "label-xs": ["12px", "14px"], "label-sm": ["14px", "16px"], "label-md": ["16px", "20px"], "label-lg": ["18px", "24px"], "display-1": ["96px", "96px"], "display-2": ["80px", "84px"], "display-3": ["64px", "68px"], "display-4": ["48px", "52px"], "heading-1": ["48px", "50px"], "heading-2": ["36px", "40px"], "heading-3": ["30px", "36px"], "heading-4": ["24px", "30px"], "heading-5": ["20px", "25px"], "heading-6": ["16px", "20px"], "subheading-1": ["32px", "40px"], "subheading-2": ["24px", "32px"], "subheading-3": ["20px", "28px"], "subheading-4": ["16px", "24px"] }; module.exports = { app: { colors: __spreadValues(__spreadValues({}, colors), colorAliases), screens, fontSize, fontFamily: { displaySans: "proxima-nova", bodySans: "proxima-nova", displaySerif: "merriweather" } }, book: { colors: __spreadValues(__spreadValues({}, colors), colorAliases), screens, fontSize, fontFamily: { displaySans: "proxima-nova", bodySans: "proxima-nova" } } }; } }); // ../../../node_modules/html2canvas/dist/html2canvas.js var require_html2canvas = __commonJS({ "../../../node_modules/html2canvas/dist/html2canvas.js"(exports, module) { (function(global2, factory) { typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.html2canvas = factory()); })(exports, function() { "use strict"; var extendStatics = function(d3, b3) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d4, b4) { d4.__proto__ = b4; } || function(d4, b4) { for (var p2 in b4) if (Object.prototype.hasOwnProperty.call(b4, p2)) d4[p2] = b4[p2]; }; return extendStatics(d3, b3); }; function __extends(d3, b3) { if (typeof b3 !== "function" && b3 !== null) throw new TypeError("Class extends value " + String(b3) + " is not a constructor or null"); extendStatics(d3, b3); function __() { this.constructor = d3; } d3.prototype = b3 === null ? Object.create(b3) : (__.prototype = b3.prototype, new __()); } var __assign = function() { __assign = Object.assign || function __assign2(t3) { for (var s3, i4 = 1, n3 = arguments.length; i4 < n3; i4++) { s3 = arguments[i4]; for (var p2 in s3) if (Object.prototype.hasOwnProperty.call(s3, p2)) t3[p2] = s3[p2]; } return t3; }; return __assign.apply(this, arguments); }; function __awaiter(thisArg, _arguments, P3, generator) { function adopt(value) { return value instanceof P3 ? value : new P3(function(resolve) { resolve(value); }); } return new (P3 || (P3 = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e4) { reject(e4); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e4) { reject(e4); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _3 = { label: 0, sent: function() { if (t3[0] & 1) throw t3[1]; return t3[1]; }, trys: [], ops: [] }, f4, y3, t3, g3; return g3 = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g3[Symbol.iterator] = function() { return this; }), g3; function verb(n3) { return function(v3) { return step([n3, v3]); }; } function step(op) { if (f4) throw new TypeError("Generator is already executing."); while (_3) try { if (f4 = 1, y3 && (t3 = op[0] & 2 ? y3["return"] : op[0] ? y3["throw"] || ((t3 = y3["return"]) && t3.call(y3), 0) : y3.next) && !(t3 = t3.call(y3, op[1])).done) return t3; if (y3 = 0, t3) op = [op[0] & 2, t3.value]; switch (op[0]) { case 0: case 1: t3 = op; break; case 4: _3.label++; return { value: op[1], done: false }; case 5: _3.label++; y3 = op[1]; op = [0]; continue; case 7: op = _3.ops.pop(); _3.trys.pop(); continue; default: if (!(t3 = _3.trys, t3 = t3.length > 0 && t3[t3.length - 1]) && (op[0] === 6 || op[0] === 2)) { _3 = 0; continue; } if (op[0] === 3 && (!t3 || op[1] > t3[0] && op[1] < t3[3])) { _3.label = op[1]; break; } if (op[0] === 6 && _3.label < t3[1]) { _3.label = t3[1]; t3 = op; break; } if (t3 && _3.label < t3[2]) { _3.label = t3[2]; _3.ops.push(op); break; } if (t3[2]) _3.ops.pop(); _3.trys.pop(); continue; } op = body.call(thisArg, _3); } catch (e4) { op = [6, e4]; y3 = 0; } finally { f4 = t3 = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __spreadArray(to, from, pack2) { if (pack2 || arguments.length === 2) for (var i4 = 0, l3 = from.length, ar; i4 < l3; i4++) { if (ar || !(i4 in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i4); ar[i4] = from[i4]; } } return to.concat(ar || from); } var Bounds = ( /** @class */ function() { function Bounds2(left2, top2, width, height) { this.left = left2; this.top = top2; this.width = width; this.height = height; } Bounds2.prototype.add = function(x3, y3, w3, h3) { return new Bounds2(this.left + x3, this.top + y3, this.width + w3, this.height + h3); }; Bounds2.fromClientRect = function(context, clientRect) { return new Bounds2(clientRect.left + context.windowBounds.left, clientRect.top + context.windowBounds.top, clientRect.width, clientRect.height); }; Bounds2.fromDOMRectList = function(context, domRectList) { var domRect = Array.from(domRectList).find(function(rect) { return rect.width !== 0; }); return domRect ? new Bounds2(domRect.left + context.windowBounds.left, domRect.top + context.windowBounds.top, domRect.width, domRect.height) : Bounds2.EMPTY; }; Bounds2.EMPTY = new Bounds2(0, 0, 0, 0); return Bounds2; }() ); var parseBounds = function(context, node) { return Bounds.fromClientRect(context, node.getBoundingClientRect()); }; var parseDocumentSize = function(document2) { var body = document2.body; var documentElement = document2.documentElement; if (!body || !documentElement) { throw new Error("Unable to get document size"); } var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth)); var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight)); return new Bounds(0, 0, width, height); }; var toCodePoints$1 = function(str) { var codePoints = []; var i4 = 0; var length = str.length; while (i4 < length) { var value = str.charCodeAt(i4++); if (value >= 55296 && value <= 56319 && i4 < length) { var extra = str.charCodeAt(i4++); if ((extra & 64512) === 56320) { codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { codePoints.push(value); i4--; } } else { codePoints.push(value); } } return codePoints; }; var fromCodePoint$1 = function() { var codePoints = []; for (var _i = 0; _i < arguments.length; _i++) { codePoints[_i] = arguments[_i]; } if (String.fromCodePoint) { return String.fromCodePoint.apply(String, codePoints); } var length = codePoints.length; if (!length) { return ""; } var codeUnits = []; var index = -1; var result = ""; while (++index < length) { var codePoint = codePoints[index]; if (codePoint <= 65535) { codeUnits.push(codePoint); } else { codePoint -= 65536; codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320); } if (index + 1 === length || codeUnits.length > 16384) { result += String.fromCharCode.apply(String, codeUnits); codeUnits.length = 0; } } return result; }; var chars$2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$2 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$2 = 0; i$2 < chars$2.length; i$2++) { lookup$2[chars$2.charCodeAt(i$2)] = i$2; } var chars$1$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$1$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) { lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1; } var decode$1 = function(base642) { var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4; if (base642[base642.length - 1] === "=") { bufferLength--; if (base642[base642.length - 2] === "=") { bufferLength--; } } var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength); var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); for (i4 = 0; i4 < len; i4 += 4) { encoded1 = lookup$1$1[base642.charCodeAt(i4)]; encoded2 = lookup$1$1[base642.charCodeAt(i4 + 1)]; encoded3 = lookup$1$1[base642.charCodeAt(i4 + 2)]; encoded4 = lookup$1$1[base642.charCodeAt(i4 + 3)]; bytes[p2++] = encoded1 << 2 | encoded2 >> 4; bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer; }; var polyUint16Array$1 = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 2) { bytes.push(buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var polyUint32Array$1 = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 4) { bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var UTRIE2_SHIFT_2$1 = 5; var UTRIE2_SHIFT_1$1 = 6 + 5; var UTRIE2_INDEX_SHIFT$1 = 2; var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1; var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 65536 >> UTRIE2_SHIFT_2$1; var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1; var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1; var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 1024 >> UTRIE2_SHIFT_2$1; var UTRIE2_INDEX_2_BMP_LENGTH$1 = UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1; var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1; var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 = 2048 >> 6; var UTRIE2_INDEX_1_OFFSET$1 = UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1; var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 65536 >> UTRIE2_SHIFT_1$1; var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1; var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1; var slice16$1 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint16Array(Array.prototype.slice.call(view, start5, end2)); }; var slice32$1 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint32Array(Array.prototype.slice.call(view, start5, end2)); }; var createTrieFromBase64$1 = function(base642, _byteLength) { var buffer = decode$1(base642); var view32 = Array.isArray(buffer) ? polyUint32Array$1(buffer) : new Uint32Array(buffer); var view16 = Array.isArray(buffer) ? polyUint16Array$1(buffer) : new Uint16Array(buffer); var headerLength = 24; var index = slice16$1(view16, headerLength / 2, view32[4] / 2); var data2 = view32[5] === 2 ? slice16$1(view16, (headerLength + view32[4]) / 2) : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4)); return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data2); }; var Trie$1 = ( /** @class */ function() { function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) { this.initialValue = initialValue; this.errorValue = errorValue; this.highStart = highStart; this.highValueIndex = highValueIndex; this.index = index; this.data = data2; } Trie2.prototype.get = function(codePoint) { var ix; if (codePoint >= 0) { if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) { ix = this.index[codePoint >> UTRIE2_SHIFT_2$1]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint <= 65535) { ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET$1 + (codePoint - 55296 >> UTRIE2_SHIFT_2$1)]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint < this.highStart) { ix = UTRIE2_INDEX_1_OFFSET$1 - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 + (codePoint >> UTRIE2_SHIFT_1$1); ix = this.index[ix]; ix += codePoint >> UTRIE2_SHIFT_2$1 & UTRIE2_INDEX_2_MASK$1; ix = this.index[ix]; ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1); return this.data[ix]; } if (codePoint <= 1114111) { return this.data[this.highValueIndex]; } } return this.errorValue; }; return Trie2; }() ); var chars$3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$3 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$3 = 0; i$3 < chars$3.length; i$3++) { lookup$3[chars$3.charCodeAt(i$3)] = i$3; } var base64$1 = "KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA=="; var LETTER_NUMBER_MODIFIER = 50; var BK = 1; var CR$1 = 2; var LF$1 = 3; var CM = 4; var NL = 5; var WJ = 7; var ZW = 8; var GL = 9; var SP = 10; var ZWJ$1 = 11; var B2 = 12; var BA = 13; var BB = 14; var HY = 15; var CB = 16; var CL = 17; var CP = 18; var EX = 19; var IN = 20; var NS = 21; var OP = 22; var QU = 23; var IS = 24; var NU = 25; var PO = 26; var PR = 27; var SY = 28; var AI = 29; var AL = 30; var CJ = 31; var EB = 32; var EM = 33; var H22 = 34; var H3 = 35; var HL = 36; var ID = 37; var JL = 38; var JV = 39; var JT = 40; var RI$1 = 41; var SA = 42; var XX = 43; var ea_OP = [9001, 65288]; var BREAK_MANDATORY = "!"; var BREAK_NOT_ALLOWED$1 = "\xD7"; var BREAK_ALLOWED$1 = "\xF7"; var UnicodeTrie$1 = createTrieFromBase64$1(base64$1); var ALPHABETICS = [AL, HL]; var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL]; var SPACE$1 = [SP, ZW]; var PREFIX_POSTFIX = [PR, PO]; var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1); var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H22, H3]; var HYPHEN = [HY, BA]; var codePointsToCharacterClasses = function(codePoints, lineBreak2) { if (lineBreak2 === void 0) { lineBreak2 = "strict"; } var types = []; var indices = []; var categories = []; codePoints.forEach(function(codePoint, index) { var classType = UnicodeTrie$1.get(codePoint); if (classType > LETTER_NUMBER_MODIFIER) { categories.push(true); classType -= LETTER_NUMBER_MODIFIER; } else { categories.push(false); } if (["normal", "auto", "loose"].indexOf(lineBreak2) !== -1) { if ([8208, 8211, 12316, 12448].indexOf(codePoint) !== -1) { indices.push(index); return types.push(CB); } } if (classType === CM || classType === ZWJ$1) { if (index === 0) { indices.push(index); return types.push(AL); } var prev = types[index - 1]; if (LINE_BREAKS.indexOf(prev) === -1) { indices.push(indices[index - 1]); return types.push(prev); } indices.push(index); return types.push(AL); } indices.push(index); if (classType === CJ) { return types.push(lineBreak2 === "strict" ? NS : ID); } if (classType === SA) { return types.push(AL); } if (classType === AI) { return types.push(AL); } if (classType === XX) { if (codePoint >= 131072 && codePoint <= 196605 || codePoint >= 196608 && codePoint <= 262141) { return types.push(ID); } else { return types.push(AL); } } types.push(classType); }); return [indices, types, categories]; }; var isAdjacentWithSpaceIgnored = function(a4, b3, currentIndex, classTypes) { var current = classTypes[currentIndex]; if (Array.isArray(a4) ? a4.indexOf(current) !== -1 : a4 === current) { var i4 = currentIndex; while (i4 <= classTypes.length) { i4++; var next = classTypes[i4]; if (next === b3) { return true; } if (next !== SP) { break; } } } if (current === SP) { var i4 = currentIndex; while (i4 > 0) { i4--; var prev = classTypes[i4]; if (Array.isArray(a4) ? a4.indexOf(prev) !== -1 : a4 === prev) { var n3 = currentIndex; while (n3 <= classTypes.length) { n3++; var next = classTypes[n3]; if (next === b3) { return true; } if (next !== SP) { break; } } } if (prev !== SP) { break; } } } return false; }; var previousNonSpaceClassType = function(currentIndex, classTypes) { var i4 = currentIndex; while (i4 >= 0) { var type = classTypes[i4]; if (type === SP) { i4--; } else { return type; } } return 0; }; var _lineBreakAtIndex = function(codePoints, classTypes, indicies, index, forbiddenBreaks) { if (indicies[index] === 0) { return BREAK_NOT_ALLOWED$1; } var currentIndex = index - 1; if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) { return BREAK_NOT_ALLOWED$1; } var beforeIndex = currentIndex - 1; var afterIndex = currentIndex + 1; var current = classTypes[currentIndex]; var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0; var next = classTypes[afterIndex]; if (current === CR$1 && next === LF$1) { return BREAK_NOT_ALLOWED$1; } if (HARD_LINE_BREAKS.indexOf(current) !== -1) { return BREAK_MANDATORY; } if (HARD_LINE_BREAKS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (SPACE$1.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) { return BREAK_ALLOWED$1; } if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) { return BREAK_NOT_ALLOWED$1; } if ((current === EB || current === EM) && UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1) { return BREAK_NOT_ALLOWED$1; } if (current === WJ || next === WJ) { return BREAK_NOT_ALLOWED$1; } if (current === GL) { return BREAK_NOT_ALLOWED$1; } if ([SP, BA, HY].indexOf(current) === -1 && next === GL) { return BREAK_NOT_ALLOWED$1; } if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (previousNonSpaceClassType(currentIndex, classTypes) === OP) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) { return BREAK_NOT_ALLOWED$1; } if (current === SP) { return BREAK_ALLOWED$1; } if (current === QU || next === QU) { return BREAK_NOT_ALLOWED$1; } if (next === CB || current === CB) { return BREAK_ALLOWED$1; } if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) { return BREAK_NOT_ALLOWED$1; } if (before === HL && HYPHEN.indexOf(current) !== -1) { return BREAK_NOT_ALLOWED$1; } if (current === SY && next === HL) { return BREAK_NOT_ALLOWED$1; } if (next === IN) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(next) !== -1 && current === NU || ALPHABETICS.indexOf(current) !== -1 && next === NU) { return BREAK_NOT_ALLOWED$1; } if (current === PR && [ID, EB, EM].indexOf(next) !== -1 || [ID, EB, EM].indexOf(current) !== -1 && next === PO) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1 || PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if ( // (PR | PO) × ( OP | HY )? NU [PR, PO].indexOf(current) !== -1 && (next === NU || [OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU) || // ( OP | HY ) × NU [OP, HY].indexOf(current) !== -1 && next === NU || // NU × (NU | SY | IS) current === NU && [NU, SY, IS].indexOf(next) !== -1 ) { return BREAK_NOT_ALLOWED$1; } if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) { var prevIndex = currentIndex; while (prevIndex >= 0) { var type = classTypes[prevIndex]; if (type === NU) { return BREAK_NOT_ALLOWED$1; } else if ([SY, IS].indexOf(type) !== -1) { prevIndex--; } else { break; } } } if ([PR, PO].indexOf(next) !== -1) { var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex; while (prevIndex >= 0) { var type = classTypes[prevIndex]; if (type === NU) { return BREAK_NOT_ALLOWED$1; } else if ([SY, IS].indexOf(type) !== -1) { prevIndex--; } else { break; } } } if (JL === current && [JL, JV, H22, H3].indexOf(next) !== -1 || [JV, H22].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1 || [JT, H3].indexOf(current) !== -1 && next === JT) { return BREAK_NOT_ALLOWED$1; } if (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1 || KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (current === IS && ALPHABETICS.indexOf(next) !== -1) { return BREAK_NOT_ALLOWED$1; } if (ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP && ea_OP.indexOf(codePoints[afterIndex]) === -1 || ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP) { return BREAK_NOT_ALLOWED$1; } if (current === RI$1 && next === RI$1) { var i4 = indicies[currentIndex]; var count = 1; while (i4 > 0) { i4--; if (classTypes[i4] === RI$1) { count++; } else { break; } } if (count % 2 !== 0) { return BREAK_NOT_ALLOWED$1; } } if (current === EB && next === EM) { return BREAK_NOT_ALLOWED$1; } return BREAK_ALLOWED$1; }; var cssFormattedClasses = function(codePoints, options) { if (!options) { options = { lineBreak: "normal", wordBreak: "normal" }; } var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2]; if (options.wordBreak === "break-all" || options.wordBreak === "break-word") { classTypes = classTypes.map(function(type) { return [NU, AL, SA].indexOf(type) !== -1 ? ID : type; }); } var forbiddenBreakpoints = options.wordBreak === "keep-all" ? isLetterNumber.map(function(letterNumber, i4) { return letterNumber && codePoints[i4] >= 19968 && codePoints[i4] <= 40959; }) : void 0; return [indicies, classTypes, forbiddenBreakpoints]; }; var Break = ( /** @class */ function() { function Break2(codePoints, lineBreak2, start5, end2) { this.codePoints = codePoints; this.required = lineBreak2 === BREAK_MANDATORY; this.start = start5; this.end = end2; } Break2.prototype.slice = function() { return fromCodePoint$1.apply(void 0, this.codePoints.slice(this.start, this.end)); }; return Break2; }() ); var LineBreaker = function(str, options) { var codePoints = toCodePoints$1(str); var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2]; var length = codePoints.length; var lastEnd = 0; var nextIndex = 0; return { next: function() { if (nextIndex >= length) { return { done: true, value: null }; } var lineBreak2 = BREAK_NOT_ALLOWED$1; while (nextIndex < length && (lineBreak2 = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) === BREAK_NOT_ALLOWED$1) { } if (lineBreak2 !== BREAK_NOT_ALLOWED$1 || nextIndex === length) { var value = new Break(codePoints, lineBreak2, lastEnd, nextIndex); lastEnd = nextIndex; return { value, done: false }; } return { done: true, value: null }; } }; }; var FLAG_UNRESTRICTED = 1 << 0; var FLAG_ID = 1 << 1; var FLAG_INTEGER = 1 << 2; var FLAG_NUMBER = 1 << 3; var LINE_FEED = 10; var SOLIDUS = 47; var REVERSE_SOLIDUS = 92; var CHARACTER_TABULATION = 9; var SPACE = 32; var QUOTATION_MARK = 34; var EQUALS_SIGN = 61; var NUMBER_SIGN = 35; var DOLLAR_SIGN = 36; var PERCENTAGE_SIGN = 37; var APOSTROPHE = 39; var LEFT_PARENTHESIS = 40; var RIGHT_PARENTHESIS = 41; var LOW_LINE = 95; var HYPHEN_MINUS = 45; var EXCLAMATION_MARK = 33; var LESS_THAN_SIGN = 60; var GREATER_THAN_SIGN = 62; var COMMERCIAL_AT = 64; var LEFT_SQUARE_BRACKET = 91; var RIGHT_SQUARE_BRACKET = 93; var CIRCUMFLEX_ACCENT = 61; var LEFT_CURLY_BRACKET = 123; var QUESTION_MARK = 63; var RIGHT_CURLY_BRACKET = 125; var VERTICAL_LINE = 124; var TILDE = 126; var CONTROL = 128; var REPLACEMENT_CHARACTER = 65533; var ASTERISK = 42; var PLUS_SIGN = 43; var COMMA = 44; var COLON = 58; var SEMICOLON = 59; var FULL_STOP = 46; var NULL = 0; var BACKSPACE = 8; var LINE_TABULATION = 11; var SHIFT_OUT = 14; var INFORMATION_SEPARATOR_ONE = 31; var DELETE = 127; var EOF = -1; var ZERO = 48; var a3 = 97; var e3 = 101; var f3 = 102; var u3 = 117; var z3 = 122; var A3 = 65; var E2 = 69; var F2 = 70; var U2 = 85; var Z2 = 90; var isDigit = function(codePoint) { return codePoint >= ZERO && codePoint <= 57; }; var isSurrogateCodePoint = function(codePoint) { return codePoint >= 55296 && codePoint <= 57343; }; var isHex = function(codePoint) { return isDigit(codePoint) || codePoint >= A3 && codePoint <= F2 || codePoint >= a3 && codePoint <= f3; }; var isLowerCaseLetter = function(codePoint) { return codePoint >= a3 && codePoint <= z3; }; var isUpperCaseLetter = function(codePoint) { return codePoint >= A3 && codePoint <= Z2; }; var isLetter = function(codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); }; var isNonASCIICodePoint = function(codePoint) { return codePoint >= CONTROL; }; var isWhiteSpace = function(codePoint) { return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE; }; var isNameStartCodePoint = function(codePoint) { return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE; }; var isNameCodePoint = function(codePoint) { return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS; }; var isNonPrintableCodePoint = function(codePoint) { return codePoint >= NULL && codePoint <= BACKSPACE || codePoint === LINE_TABULATION || codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE || codePoint === DELETE; }; var isValidEscape = function(c1, c22) { if (c1 !== REVERSE_SOLIDUS) { return false; } return c22 !== LINE_FEED; }; var isIdentifierStart = function(c1, c22, c3) { if (c1 === HYPHEN_MINUS) { return isNameStartCodePoint(c22) || isValidEscape(c22, c3); } else if (isNameStartCodePoint(c1)) { return true; } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c22)) { return true; } return false; }; var isNumberStart = function(c1, c22, c3) { if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { if (isDigit(c22)) { return true; } return c22 === FULL_STOP && isDigit(c3); } if (c1 === FULL_STOP) { return isDigit(c22); } return isDigit(c1); }; var stringToNumber = function(codePoints) { var c3 = 0; var sign = 1; if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) { if (codePoints[c3] === HYPHEN_MINUS) { sign = -1; } c3++; } var integers = []; while (isDigit(codePoints[c3])) { integers.push(codePoints[c3++]); } var int = integers.length ? parseInt(fromCodePoint$1.apply(void 0, integers), 10) : 0; if (codePoints[c3] === FULL_STOP) { c3++; } var fraction = []; while (isDigit(codePoints[c3])) { fraction.push(codePoints[c3++]); } var fracd = fraction.length; var frac = fracd ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10) : 0; if (codePoints[c3] === E2 || codePoints[c3] === e3) { c3++; } var expsign = 1; if (codePoints[c3] === PLUS_SIGN || codePoints[c3] === HYPHEN_MINUS) { if (codePoints[c3] === HYPHEN_MINUS) { expsign = -1; } c3++; } var exponent = []; while (isDigit(codePoints[c3])) { exponent.push(codePoints[c3++]); } var exp = exponent.length ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10) : 0; return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp); }; var LEFT_PARENTHESIS_TOKEN = { type: 2 /* LEFT_PARENTHESIS_TOKEN */ }; var RIGHT_PARENTHESIS_TOKEN = { type: 3 /* RIGHT_PARENTHESIS_TOKEN */ }; var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ }; var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ }; var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ }; var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ }; var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ }; var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ }; var LEFT_CURLY_BRACKET_TOKEN = { type: 11 /* LEFT_CURLY_BRACKET_TOKEN */ }; var RIGHT_CURLY_BRACKET_TOKEN = { type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */ }; var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ }; var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ }; var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ }; var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ }; var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ }; var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ }; var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ }; var LEFT_SQUARE_BRACKET_TOKEN = { type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */ }; var RIGHT_SQUARE_BRACKET_TOKEN = { type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */ }; var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ }; var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ }; var Tokenizer = ( /** @class */ function() { function Tokenizer2() { this._value = []; } Tokenizer2.prototype.write = function(chunk) { this._value = this._value.concat(toCodePoints$1(chunk)); }; Tokenizer2.prototype.read = function() { var tokens2 = []; var token = this.consumeToken(); while (token !== EOF_TOKEN) { tokens2.push(token); token = this.consumeToken(); } return tokens2; }; Tokenizer2.prototype.consumeToken = function() { var codePoint = this.consumeCodePoint(); switch (codePoint) { case QUOTATION_MARK: return this.consumeStringToken(QUOTATION_MARK); case NUMBER_SIGN: var c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if (isNameCodePoint(c1) || isValidEscape(c22, c3)) { var flags = isIdentifierStart(c1, c22, c3) ? FLAG_ID : FLAG_UNRESTRICTED; var value = this.consumeName(); return { type: 5, value, flags }; } break; case DOLLAR_SIGN: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return SUFFIX_MATCH_TOKEN; } break; case APOSTROPHE: return this.consumeStringToken(APOSTROPHE); case LEFT_PARENTHESIS: return LEFT_PARENTHESIS_TOKEN; case RIGHT_PARENTHESIS: return RIGHT_PARENTHESIS_TOKEN; case ASTERISK: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return SUBSTRING_MATCH_TOKEN; } break; case PLUS_SIGN: if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } break; case COMMA: return COMMA_TOKEN; case HYPHEN_MINUS: var e1 = codePoint; var e22 = this.peekCodePoint(0); var e32 = this.peekCodePoint(1); if (isNumberStart(e1, e22, e32)) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } if (isIdentifierStart(e1, e22, e32)) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } if (e22 === HYPHEN_MINUS && e32 === GREATER_THAN_SIGN) { this.consumeCodePoint(); this.consumeCodePoint(); return CDC_TOKEN; } break; case FULL_STOP: if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } break; case SOLIDUS: if (this.peekCodePoint(0) === ASTERISK) { this.consumeCodePoint(); while (true) { var c4 = this.consumeCodePoint(); if (c4 === ASTERISK) { c4 = this.consumeCodePoint(); if (c4 === SOLIDUS) { return this.consumeToken(); } } if (c4 === EOF) { return this.consumeToken(); } } } break; case COLON: return COLON_TOKEN; case SEMICOLON: return SEMICOLON_TOKEN; case LESS_THAN_SIGN: if (this.peekCodePoint(0) === EXCLAMATION_MARK && this.peekCodePoint(1) === HYPHEN_MINUS && this.peekCodePoint(2) === HYPHEN_MINUS) { this.consumeCodePoint(); this.consumeCodePoint(); return CDO_TOKEN; } break; case COMMERCIAL_AT: var a1 = this.peekCodePoint(0); var a22 = this.peekCodePoint(1); var a32 = this.peekCodePoint(2); if (isIdentifierStart(a1, a22, a32)) { var value = this.consumeName(); return { type: 7, value }; } break; case LEFT_SQUARE_BRACKET: return LEFT_SQUARE_BRACKET_TOKEN; case REVERSE_SOLIDUS: if (isValidEscape(codePoint, this.peekCodePoint(0))) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } break; case RIGHT_SQUARE_BRACKET: return RIGHT_SQUARE_BRACKET_TOKEN; case CIRCUMFLEX_ACCENT: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return PREFIX_MATCH_TOKEN; } break; case LEFT_CURLY_BRACKET: return LEFT_CURLY_BRACKET_TOKEN; case RIGHT_CURLY_BRACKET: return RIGHT_CURLY_BRACKET_TOKEN; case u3: case U2: var u1 = this.peekCodePoint(0); var u22 = this.peekCodePoint(1); if (u1 === PLUS_SIGN && (isHex(u22) || u22 === QUESTION_MARK)) { this.consumeCodePoint(); this.consumeUnicodeRangeToken(); } this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); case VERTICAL_LINE: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return DASH_MATCH_TOKEN; } if (this.peekCodePoint(0) === VERTICAL_LINE) { this.consumeCodePoint(); return COLUMN_TOKEN; } break; case TILDE: if (this.peekCodePoint(0) === EQUALS_SIGN) { this.consumeCodePoint(); return INCLUDE_MATCH_TOKEN; } break; case EOF: return EOF_TOKEN; } if (isWhiteSpace(codePoint)) { this.consumeWhiteSpace(); return WHITESPACE_TOKEN; } if (isDigit(codePoint)) { this.reconsumeCodePoint(codePoint); return this.consumeNumericToken(); } if (isNameStartCodePoint(codePoint)) { this.reconsumeCodePoint(codePoint); return this.consumeIdentLikeToken(); } return { type: 6, value: fromCodePoint$1(codePoint) }; }; Tokenizer2.prototype.consumeCodePoint = function() { var value = this._value.shift(); return typeof value === "undefined" ? -1 : value; }; Tokenizer2.prototype.reconsumeCodePoint = function(codePoint) { this._value.unshift(codePoint); }; Tokenizer2.prototype.peekCodePoint = function(delta) { if (delta >= this._value.length) { return -1; } return this._value[delta]; }; Tokenizer2.prototype.consumeUnicodeRangeToken = function() { var digits = []; var codePoint = this.consumeCodePoint(); while (isHex(codePoint) && digits.length < 6) { digits.push(codePoint); codePoint = this.consumeCodePoint(); } var questionMarks = false; while (codePoint === QUESTION_MARK && digits.length < 6) { digits.push(codePoint); codePoint = this.consumeCodePoint(); questionMarks = true; } if (questionMarks) { var start_1 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) { return digit === QUESTION_MARK ? ZERO : digit; })), 16); var end2 = parseInt(fromCodePoint$1.apply(void 0, digits.map(function(digit) { return digit === QUESTION_MARK ? F2 : digit; })), 16); return { type: 30, start: start_1, end: end2 }; } var start5 = parseInt(fromCodePoint$1.apply(void 0, digits), 16); if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) { this.consumeCodePoint(); codePoint = this.consumeCodePoint(); var endDigits = []; while (isHex(codePoint) && endDigits.length < 6) { endDigits.push(codePoint); codePoint = this.consumeCodePoint(); } var end2 = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16); return { type: 30, start: start5, end: end2 }; } else { return { type: 30, start: start5, end: start5 }; } }; Tokenizer2.prototype.consumeIdentLikeToken = function() { var value = this.consumeName(); if (value.toLowerCase() === "url" && this.peekCodePoint(0) === LEFT_PARENTHESIS) { this.consumeCodePoint(); return this.consumeUrlToken(); } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) { this.consumeCodePoint(); return { type: 19, value }; } return { type: 20, value }; }; Tokenizer2.prototype.consumeUrlToken = function() { var value = []; this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF) { return { type: 22, value: "" }; } var next = this.peekCodePoint(0); if (next === APOSTROPHE || next === QUOTATION_MARK) { var stringToken = this.consumeStringToken(this.consumeCodePoint()); if (stringToken.type === 0) { this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { this.consumeCodePoint(); return { type: 22, value: stringToken.value }; } } this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } while (true) { var codePoint = this.consumeCodePoint(); if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) { return { type: 22, value: fromCodePoint$1.apply(void 0, value) }; } else if (isWhiteSpace(codePoint)) { this.consumeWhiteSpace(); if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) { this.consumeCodePoint(); return { type: 22, value: fromCodePoint$1.apply(void 0, value) }; } this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } else if (codePoint === QUOTATION_MARK || codePoint === APOSTROPHE || codePoint === LEFT_PARENTHESIS || isNonPrintableCodePoint(codePoint)) { this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } else if (codePoint === REVERSE_SOLIDUS) { if (isValidEscape(codePoint, this.peekCodePoint(0))) { value.push(this.consumeEscapedCodePoint()); } else { this.consumeBadUrlRemnants(); return BAD_URL_TOKEN; } } else { value.push(codePoint); } } }; Tokenizer2.prototype.consumeWhiteSpace = function() { while (isWhiteSpace(this.peekCodePoint(0))) { this.consumeCodePoint(); } }; Tokenizer2.prototype.consumeBadUrlRemnants = function() { while (true) { var codePoint = this.consumeCodePoint(); if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) { return; } if (isValidEscape(codePoint, this.peekCodePoint(0))) { this.consumeEscapedCodePoint(); } } }; Tokenizer2.prototype.consumeStringSlice = function(count) { var SLICE_STACK_SIZE = 5e4; var value = ""; while (count > 0) { var amount = Math.min(SLICE_STACK_SIZE, count); value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount)); count -= amount; } this._value.shift(); return value; }; Tokenizer2.prototype.consumeStringToken = function(endingCodePoint) { var value = ""; var i4 = 0; do { var codePoint = this._value[i4]; if (codePoint === EOF || codePoint === void 0 || codePoint === endingCodePoint) { value += this.consumeStringSlice(i4); return { type: 0, value }; } if (codePoint === LINE_FEED) { this._value.splice(0, i4); return BAD_STRING_TOKEN; } if (codePoint === REVERSE_SOLIDUS) { var next = this._value[i4 + 1]; if (next !== EOF && next !== void 0) { if (next === LINE_FEED) { value += this.consumeStringSlice(i4); i4 = -1; this._value.shift(); } else if (isValidEscape(codePoint, next)) { value += this.consumeStringSlice(i4); value += fromCodePoint$1(this.consumeEscapedCodePoint()); i4 = -1; } } } i4++; } while (true); }; Tokenizer2.prototype.consumeNumber = function() { var repr = []; var type = FLAG_INTEGER; var c1 = this.peekCodePoint(0); if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) { repr.push(this.consumeCodePoint()); } while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); if (c1 === FULL_STOP && isDigit(c22)) { repr.push(this.consumeCodePoint(), this.consumeCodePoint()); type = FLAG_NUMBER; while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } } c1 = this.peekCodePoint(0); c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if ((c1 === E2 || c1 === e3) && ((c22 === PLUS_SIGN || c22 === HYPHEN_MINUS) && isDigit(c3) || isDigit(c22))) { repr.push(this.consumeCodePoint(), this.consumeCodePoint()); type = FLAG_NUMBER; while (isDigit(this.peekCodePoint(0))) { repr.push(this.consumeCodePoint()); } } return [stringToNumber(repr), type]; }; Tokenizer2.prototype.consumeNumericToken = function() { var _a = this.consumeNumber(), number = _a[0], flags = _a[1]; var c1 = this.peekCodePoint(0); var c22 = this.peekCodePoint(1); var c3 = this.peekCodePoint(2); if (isIdentifierStart(c1, c22, c3)) { var unit = this.consumeName(); return { type: 15, number, flags, unit }; } if (c1 === PERCENTAGE_SIGN) { this.consumeCodePoint(); return { type: 16, number, flags }; } return { type: 17, number, flags }; }; Tokenizer2.prototype.consumeEscapedCodePoint = function() { var codePoint = this.consumeCodePoint(); if (isHex(codePoint)) { var hex = fromCodePoint$1(codePoint); while (isHex(this.peekCodePoint(0)) && hex.length < 6) { hex += fromCodePoint$1(this.consumeCodePoint()); } if (isWhiteSpace(this.peekCodePoint(0))) { this.consumeCodePoint(); } var hexCodePoint = parseInt(hex, 16); if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 1114111) { return REPLACEMENT_CHARACTER; } return hexCodePoint; } if (codePoint === EOF) { return REPLACEMENT_CHARACTER; } return codePoint; }; Tokenizer2.prototype.consumeName = function() { var result = ""; while (true) { var codePoint = this.consumeCodePoint(); if (isNameCodePoint(codePoint)) { result += fromCodePoint$1(codePoint); } else if (isValidEscape(codePoint, this.peekCodePoint(0))) { result += fromCodePoint$1(this.consumeEscapedCodePoint()); } else { this.reconsumeCodePoint(codePoint); return result; } } }; return Tokenizer2; }() ); var Parser = ( /** @class */ function() { function Parser2(tokens2) { this._tokens = tokens2; } Parser2.create = function(value) { var tokenizer = new Tokenizer(); tokenizer.write(value); return new Parser2(tokenizer.read()); }; Parser2.parseValue = function(value) { return Parser2.create(value).parseComponentValue(); }; Parser2.parseValues = function(value) { return Parser2.create(value).parseComponentValues(); }; Parser2.prototype.parseComponentValue = function() { var token = this.consumeToken(); while (token.type === 31) { token = this.consumeToken(); } if (token.type === 32) { throw new SyntaxError("Error parsing CSS component value, unexpected EOF"); } this.reconsumeToken(token); var value = this.consumeComponentValue(); do { token = this.consumeToken(); } while (token.type === 31); if (token.type === 32) { return value; } throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one"); }; Parser2.prototype.parseComponentValues = function() { var values = []; while (true) { var value = this.consumeComponentValue(); if (value.type === 32) { return values; } values.push(value); values.push(); } }; Parser2.prototype.consumeComponentValue = function() { var token = this.consumeToken(); switch (token.type) { case 11: case 28: case 2: return this.consumeSimpleBlock(token.type); case 19: return this.consumeFunction(token); } return token; }; Parser2.prototype.consumeSimpleBlock = function(type) { var block = { type, values: [] }; var token = this.consumeToken(); while (true) { if (token.type === 32 || isEndingTokenFor(token, type)) { return block; } this.reconsumeToken(token); block.values.push(this.consumeComponentValue()); token = this.consumeToken(); } }; Parser2.prototype.consumeFunction = function(functionToken) { var cssFunction = { name: functionToken.value, values: [], type: 18 /* FUNCTION */ }; while (true) { var token = this.consumeToken(); if (token.type === 32 || token.type === 3) { return cssFunction; } this.reconsumeToken(token); cssFunction.values.push(this.consumeComponentValue()); } }; Parser2.prototype.consumeToken = function() { var token = this._tokens.shift(); return typeof token === "undefined" ? EOF_TOKEN : token; }; Parser2.prototype.reconsumeToken = function(token) { this._tokens.unshift(token); }; return Parser2; }() ); var isDimensionToken = function(token) { return token.type === 15; }; var isNumberToken = function(token) { return token.type === 17; }; var isIdentToken = function(token) { return token.type === 20; }; var isStringToken = function(token) { return token.type === 0; }; var isIdentWithValue = function(token, value) { return isIdentToken(token) && token.value === value; }; var nonWhiteSpace = function(token) { return token.type !== 31; }; var nonFunctionArgSeparator = function(token) { return token.type !== 31 && token.type !== 4; }; var parseFunctionArgs = function(tokens2) { var args = []; var arg = []; tokens2.forEach(function(token) { if (token.type === 4) { if (arg.length === 0) { throw new Error("Error parsing function args, zero tokens for arg"); } args.push(arg); arg = []; return; } if (token.type !== 31) { arg.push(token); } }); if (arg.length) { args.push(arg); } return args; }; var isEndingTokenFor = function(token, type) { if (type === 11 && token.type === 12) { return true; } if (type === 28 && token.type === 29) { return true; } return type === 2 && token.type === 3; }; var isLength = function(token) { return token.type === 17 || token.type === 15; }; var isLengthPercentage = function(token) { return token.type === 16 || isLength(token); }; var parseLengthPercentageTuple = function(tokens2) { return tokens2.length > 1 ? [tokens2[0], tokens2[1]] : [tokens2[0]]; }; var ZERO_LENGTH = { type: 17, number: 0, flags: FLAG_INTEGER }; var FIFTY_PERCENT = { type: 16, number: 50, flags: FLAG_INTEGER }; var HUNDRED_PERCENT = { type: 16, number: 100, flags: FLAG_INTEGER }; var getAbsoluteValueForTuple = function(tuple, width, height) { var x3 = tuple[0], y3 = tuple[1]; return [getAbsoluteValue(x3, width), getAbsoluteValue(typeof y3 !== "undefined" ? y3 : x3, height)]; }; var getAbsoluteValue = function(token, parent) { if (token.type === 16) { return token.number / 100 * parent; } if (isDimensionToken(token)) { switch (token.unit) { case "rem": case "em": return 16 * token.number; case "px": default: return token.number; } } return token.number; }; var DEG = "deg"; var GRAD = "grad"; var RAD = "rad"; var TURN = "turn"; var angle = { name: "angle", parse: function(_context, value) { if (value.type === 15) { switch (value.unit) { case DEG: return Math.PI * value.number / 180; case GRAD: return Math.PI / 200 * value.number; case RAD: return value.number; case TURN: return Math.PI * 2 * value.number; } } throw new Error("Unsupported angle type"); } }; var isAngle = function(value) { if (value.type === 15) { if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) { return true; } } return false; }; var parseNamedSide = function(tokens2) { var sideOrCorner = tokens2.filter(isIdentToken).map(function(ident) { return ident.value; }).join(" "); switch (sideOrCorner) { case "to bottom right": case "to right bottom": case "left top": case "top left": return [ZERO_LENGTH, ZERO_LENGTH]; case "to top": case "bottom": return deg(0); case "to bottom left": case "to left bottom": case "right top": case "top right": return [ZERO_LENGTH, HUNDRED_PERCENT]; case "to right": case "left": return deg(90); case "to top left": case "to left top": case "right bottom": case "bottom right": return [HUNDRED_PERCENT, HUNDRED_PERCENT]; case "to bottom": case "top": return deg(180); case "to top right": case "to right top": case "left bottom": case "bottom left": return [HUNDRED_PERCENT, ZERO_LENGTH]; case "to left": case "right": return deg(270); } return 0; }; var deg = function(deg2) { return Math.PI * deg2 / 180; }; var color$1 = { name: "color", parse: function(context, value) { if (value.type === 18) { var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name]; if (typeof colorFunction === "undefined") { throw new Error('Attempting to parse an unsupported color function "' + value.name + '"'); } return colorFunction(context, value.values); } if (value.type === 5) { if (value.value.length === 3) { var r3 = value.value.substring(0, 1); var g3 = value.value.substring(1, 2); var b3 = value.value.substring(2, 3); return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), 1); } if (value.value.length === 4) { var r3 = value.value.substring(0, 1); var g3 = value.value.substring(1, 2); var b3 = value.value.substring(2, 3); var a4 = value.value.substring(3, 4); return pack(parseInt(r3 + r3, 16), parseInt(g3 + g3, 16), parseInt(b3 + b3, 16), parseInt(a4 + a4, 16) / 255); } if (value.value.length === 6) { var r3 = value.value.substring(0, 2); var g3 = value.value.substring(2, 4); var b3 = value.value.substring(4, 6); return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), 1); } if (value.value.length === 8) { var r3 = value.value.substring(0, 2); var g3 = value.value.substring(2, 4); var b3 = value.value.substring(4, 6); var a4 = value.value.substring(6, 8); return pack(parseInt(r3, 16), parseInt(g3, 16), parseInt(b3, 16), parseInt(a4, 16) / 255); } } if (value.type === 20) { var namedColor = COLORS[value.value.toUpperCase()]; if (typeof namedColor !== "undefined") { return namedColor; } } return COLORS.TRANSPARENT; } }; var isTransparent = function(color2) { return (255 & color2) === 0; }; var asString = function(color2) { var alpha = 255 & color2; var blue = 255 & color2 >> 8; var green = 255 & color2 >> 16; var red = 255 & color2 >> 24; return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")"; }; var pack = function(r3, g3, b3, a4) { return (r3 << 24 | g3 << 16 | b3 << 8 | Math.round(a4 * 255) << 0) >>> 0; }; var getTokenColorValue = function(token, i4) { if (token.type === 17) { return token.number; } if (token.type === 16) { var max2 = i4 === 3 ? 1 : 255; return i4 === 3 ? token.number / 100 * max2 : Math.round(token.number / 100 * max2); } return 0; }; var rgb = function(_context, args) { var tokens2 = args.filter(nonFunctionArgSeparator); if (tokens2.length === 3) { var _a = tokens2.map(getTokenColorValue), r3 = _a[0], g3 = _a[1], b3 = _a[2]; return pack(r3, g3, b3, 1); } if (tokens2.length === 4) { var _b = tokens2.map(getTokenColorValue), r3 = _b[0], g3 = _b[1], b3 = _b[2], a4 = _b[3]; return pack(r3, g3, b3, a4); } return 0; }; function hue2rgb(t1, t22, hue) { if (hue < 0) { hue += 1; } if (hue >= 1) { hue -= 1; } if (hue < 1 / 6) { return (t22 - t1) * hue * 6 + t1; } else if (hue < 1 / 2) { return t22; } else if (hue < 2 / 3) { return (t22 - t1) * 6 * (2 / 3 - hue) + t1; } else { return t1; } } var hsl = function(context, args) { var tokens2 = args.filter(nonFunctionArgSeparator); var hue = tokens2[0], saturation = tokens2[1], lightness = tokens2[2], alpha = tokens2[3]; var h3 = (hue.type === 17 ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2); var s3 = isLengthPercentage(saturation) ? saturation.number / 100 : 0; var l3 = isLengthPercentage(lightness) ? lightness.number / 100 : 0; var a4 = typeof alpha !== "undefined" && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1; if (s3 === 0) { return pack(l3 * 255, l3 * 255, l3 * 255, 1); } var t22 = l3 <= 0.5 ? l3 * (s3 + 1) : l3 + s3 - l3 * s3; var t1 = l3 * 2 - t22; var r3 = hue2rgb(t1, t22, h3 + 1 / 3); var g3 = hue2rgb(t1, t22, h3); var b3 = hue2rgb(t1, t22, h3 - 1 / 3); return pack(r3 * 255, g3 * 255, b3 * 255, a4); }; var SUPPORTED_COLOR_FUNCTIONS = { hsl, hsla: hsl, rgb, rgba: rgb }; var parseColor = function(context, value) { return color$1.parse(context, Parser.create(value).parseComponentValue()); }; var COLORS = { ALICEBLUE: 4042850303, ANTIQUEWHITE: 4209760255, AQUA: 16777215, AQUAMARINE: 2147472639, AZURE: 4043309055, BEIGE: 4126530815, BISQUE: 4293182719, BLACK: 255, BLANCHEDALMOND: 4293643775, BLUE: 65535, BLUEVIOLET: 2318131967, BROWN: 2771004159, BURLYWOOD: 3736635391, CADETBLUE: 1604231423, CHARTREUSE: 2147418367, CHOCOLATE: 3530104575, CORAL: 4286533887, CORNFLOWERBLUE: 1687547391, CORNSILK: 4294499583, CRIMSON: 3692313855, CYAN: 16777215, DARKBLUE: 35839, DARKCYAN: 9145343, DARKGOLDENROD: 3095837695, DARKGRAY: 2846468607, DARKGREEN: 6553855, DARKGREY: 2846468607, DARKKHAKI: 3182914559, DARKMAGENTA: 2332068863, DARKOLIVEGREEN: 1433087999, DARKORANGE: 4287365375, DARKORCHID: 2570243327, DARKRED: 2332033279, DARKSALMON: 3918953215, DARKSEAGREEN: 2411499519, DARKSLATEBLUE: 1211993087, DARKSLATEGRAY: 793726975, DARKSLATEGREY: 793726975, DARKTURQUOISE: 13554175, DARKVIOLET: 2483082239, DEEPPINK: 4279538687, DEEPSKYBLUE: 12582911, DIMGRAY: 1768516095, DIMGREY: 1768516095, DODGERBLUE: 512819199, FIREBRICK: 2988581631, FLORALWHITE: 4294635775, FORESTGREEN: 579543807, FUCHSIA: 4278255615, GAINSBORO: 3705462015, GHOSTWHITE: 4177068031, GOLD: 4292280575, GOLDENROD: 3668254975, GRAY: 2155905279, GREEN: 8388863, GREENYELLOW: 2919182335, GREY: 2155905279, HONEYDEW: 4043305215, HOTPINK: 4285117695, INDIANRED: 3445382399, INDIGO: 1258324735, IVORY: 4294963455, KHAKI: 4041641215, LAVENDER: 3873897215, LAVENDERBLUSH: 4293981695, LAWNGREEN: 2096890111, LEMONCHIFFON: 4294626815, LIGHTBLUE: 2916673279, LIGHTCORAL: 4034953471, LIGHTCYAN: 3774873599, LIGHTGOLDENRODYELLOW: 4210742015, LIGHTGRAY: 3553874943, LIGHTGREEN: 2431553791, LIGHTGREY: 3553874943, LIGHTPINK: 4290167295, LIGHTSALMON: 4288707327, LIGHTSEAGREEN: 548580095, LIGHTSKYBLUE: 2278488831, LIGHTSLATEGRAY: 2005441023, LIGHTSLATEGREY: 2005441023, LIGHTSTEELBLUE: 2965692159, LIGHTYELLOW: 4294959359, LIME: 16711935, LIMEGREEN: 852308735, LINEN: 4210091775, MAGENTA: 4278255615, MAROON: 2147483903, MEDIUMAQUAMARINE: 1724754687, MEDIUMBLUE: 52735, MEDIUMORCHID: 3126187007, MEDIUMPURPLE: 2473647103, MEDIUMSEAGREEN: 1018393087, MEDIUMSLATEBLUE: 2070474495, MEDIUMSPRINGGREEN: 16423679, MEDIUMTURQUOISE: 1221709055, MEDIUMVIOLETRED: 3340076543, MIDNIGHTBLUE: 421097727, MINTCREAM: 4127193855, MISTYROSE: 4293190143, MOCCASIN: 4293178879, NAVAJOWHITE: 4292783615, NAVY: 33023, OLDLACE: 4260751103, OLIVE: 2155872511, OLIVEDRAB: 1804477439, ORANGE: 4289003775, ORANGERED: 4282712319, ORCHID: 3664828159, PALEGOLDENROD: 4008225535, PALEGREEN: 2566625535, PALETURQUOISE: 2951671551, PALEVIOLETRED: 3681588223, PAPAYAWHIP: 4293907967, PEACHPUFF: 4292524543, PERU: 3448061951, PINK: 4290825215, PLUM: 3718307327, POWDERBLUE: 2967529215, PURPLE: 2147516671, REBECCAPURPLE: 1714657791, RED: 4278190335, ROSYBROWN: 3163525119, ROYALBLUE: 1097458175, SADDLEBROWN: 2336560127, SALMON: 4202722047, SANDYBROWN: 4104413439, SEAGREEN: 780883967, SEASHELL: 4294307583, SIENNA: 2689740287, SILVER: 3233857791, SKYBLUE: 2278484991, SLATEBLUE: 1784335871, SLATEGRAY: 1887473919, SLATEGREY: 1887473919, SNOW: 4294638335, SPRINGGREEN: 16744447, STEELBLUE: 1182971135, TAN: 3535047935, TEAL: 8421631, THISTLE: 3636451583, TOMATO: 4284696575, TRANSPARENT: 0, TURQUOISE: 1088475391, VIOLET: 4001558271, WHEAT: 4125012991, WHITE: 4294967295, WHITESMOKE: 4126537215, YELLOW: 4294902015, YELLOWGREEN: 2597139199 }; var backgroundClip = { name: "background-clip", initialValue: "border-box", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.map(function(token) { if (isIdentToken(token)) { switch (token.value) { case "padding-box": return 1; case "content-box": return 2; } } return 0; }); } }; var backgroundColor = { name: "background-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var parseColorStop = function(context, args) { var color2 = color$1.parse(context, args[0]); var stop2 = args[1]; return stop2 && isLengthPercentage(stop2) ? { color: color2, stop: stop2 } : { color: color2, stop: null }; }; var processColorStops = function(stops, lineLength) { var first = stops[0]; var last = stops[stops.length - 1]; if (first.stop === null) { first.stop = ZERO_LENGTH; } if (last.stop === null) { last.stop = HUNDRED_PERCENT; } var processStops = []; var previous = 0; for (var i4 = 0; i4 < stops.length; i4++) { var stop_1 = stops[i4].stop; if (stop_1 !== null) { var absoluteValue = getAbsoluteValue(stop_1, lineLength); if (absoluteValue > previous) { processStops.push(absoluteValue); } else { processStops.push(previous); } previous = absoluteValue; } else { processStops.push(null); } } var gapBegin = null; for (var i4 = 0; i4 < processStops.length; i4++) { var stop_2 = processStops[i4]; if (stop_2 === null) { if (gapBegin === null) { gapBegin = i4; } } else if (gapBegin !== null) { var gapLength = i4 - gapBegin; var beforeGap = processStops[gapBegin - 1]; var gapValue = (stop_2 - beforeGap) / (gapLength + 1); for (var g3 = 1; g3 <= gapLength; g3++) { processStops[gapBegin + g3 - 1] = gapValue * g3; } gapBegin = null; } } return stops.map(function(_a, i5) { var color2 = _a.color; return { color: color2, stop: Math.max(Math.min(1, processStops[i5] / lineLength), 0) }; }); }; var getAngleFromCorner = function(corner, width, height) { var centerX = width / 2; var centerY = height / 2; var x3 = getAbsoluteValue(corner[0], width) - centerX; var y3 = centerY - getAbsoluteValue(corner[1], height); return (Math.atan2(y3, x3) + Math.PI * 2) % (Math.PI * 2); }; var calculateGradientDirection = function(angle2, width, height) { var radian = typeof angle2 === "number" ? angle2 : getAngleFromCorner(angle2, width, height); var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian)); var halfWidth = width / 2; var halfHeight = height / 2; var halfLineLength = lineLength / 2; var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength; var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength; return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff]; }; var distance = function(a4, b3) { return Math.sqrt(a4 * a4 + b3 * b3); }; var findCorner = function(width, height, x3, y3, closest) { var corners = [ [0, 0], [0, height], [width, 0], [width, height] ]; return corners.reduce(function(stat, corner) { var cx = corner[0], cy = corner[1]; var d3 = distance(x3 - cx, y3 - cy); if (closest ? d3 < stat.optimumDistance : d3 > stat.optimumDistance) { return { optimumCorner: corner, optimumDistance: d3 }; } return stat; }, { optimumDistance: closest ? Infinity : -Infinity, optimumCorner: null }).optimumCorner; }; var calculateRadius = function(gradient, x3, y3, width, height) { var rx = 0; var ry = 0; switch (gradient.size) { case 0: if (gradient.shape === 0) { rx = ry = Math.min(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height)); } else if (gradient.shape === 1) { rx = Math.min(Math.abs(x3), Math.abs(x3 - width)); ry = Math.min(Math.abs(y3), Math.abs(y3 - height)); } break; case 2: if (gradient.shape === 0) { rx = ry = Math.min(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height)); } else if (gradient.shape === 1) { var c3 = Math.min(Math.abs(y3), Math.abs(y3 - height)) / Math.min(Math.abs(x3), Math.abs(x3 - width)); var _a = findCorner(width, height, x3, y3, true), cx = _a[0], cy = _a[1]; rx = distance(cx - x3, (cy - y3) / c3); ry = c3 * rx; } break; case 1: if (gradient.shape === 0) { rx = ry = Math.max(Math.abs(x3), Math.abs(x3 - width), Math.abs(y3), Math.abs(y3 - height)); } else if (gradient.shape === 1) { rx = Math.max(Math.abs(x3), Math.abs(x3 - width)); ry = Math.max(Math.abs(y3), Math.abs(y3 - height)); } break; case 3: if (gradient.shape === 0) { rx = ry = Math.max(distance(x3, y3), distance(x3, y3 - height), distance(x3 - width, y3), distance(x3 - width, y3 - height)); } else if (gradient.shape === 1) { var c3 = Math.max(Math.abs(y3), Math.abs(y3 - height)) / Math.max(Math.abs(x3), Math.abs(x3 - width)); var _b = findCorner(width, height, x3, y3, false), cx = _b[0], cy = _b[1]; rx = distance(cx - x3, (cy - y3) / c3); ry = c3 * rx; } break; } if (Array.isArray(gradient.size)) { rx = getAbsoluteValue(gradient.size[0], width); ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx; } return [rx, ry]; }; var linearGradient = function(context, tokens2) { var angle$1 = deg(180); var stops = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { if (i4 === 0) { var firstToken = arg[0]; if (firstToken.type === 20 && firstToken.value === "to") { angle$1 = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { angle$1 = angle.parse(context, firstToken); return; } } var colorStop = parseColorStop(context, arg); stops.push(colorStop); }); return { angle: angle$1, stops, type: 1 /* LINEAR_GRADIENT */ }; }; var prefixLinearGradient = function(context, tokens2) { var angle$1 = deg(180); var stops = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { if (i4 === 0) { var firstToken = arg[0]; if (firstToken.type === 20 && ["top", "left", "right", "bottom"].indexOf(firstToken.value) !== -1) { angle$1 = parseNamedSide(arg); return; } else if (isAngle(firstToken)) { angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360); return; } } var colorStop = parseColorStop(context, arg); stops.push(colorStop); }); return { angle: angle$1, stops, type: 1 /* LINEAR_GRADIENT */ }; }; var webkitGradient = function(context, tokens2) { var angle2 = deg(180); var stops = []; var type = 1; var shape = 0; var size2 = 3; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var firstToken = arg[0]; if (i4 === 0) { if (isIdentToken(firstToken) && firstToken.value === "linear") { type = 1; return; } else if (isIdentToken(firstToken) && firstToken.value === "radial") { type = 2; return; } } if (firstToken.type === 18) { if (firstToken.name === "from") { var color2 = color$1.parse(context, firstToken.values[0]); stops.push({ stop: ZERO_LENGTH, color: color2 }); } else if (firstToken.name === "to") { var color2 = color$1.parse(context, firstToken.values[0]); stops.push({ stop: HUNDRED_PERCENT, color: color2 }); } else if (firstToken.name === "color-stop") { var values = firstToken.values.filter(nonFunctionArgSeparator); if (values.length === 2) { var color2 = color$1.parse(context, values[1]); var stop_1 = values[0]; if (isNumberToken(stop_1)) { stops.push({ stop: { type: 16, number: stop_1.number * 100, flags: stop_1.flags }, color: color2 }); } } } } }); return type === 1 ? { angle: (angle2 + deg(180)) % deg(360), stops, type } : { size: size2, shape, stops, position: position2, type }; }; var CLOSEST_SIDE = "closest-side"; var FARTHEST_SIDE = "farthest-side"; var CLOSEST_CORNER = "closest-corner"; var FARTHEST_CORNER = "farthest-corner"; var CIRCLE = "circle"; var ELLIPSE = "ellipse"; var COVER = "cover"; var CONTAIN = "contain"; var radialGradient = function(context, tokens2) { var shape = 0; var size2 = 3; var stops = []; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var isColorStop = true; if (i4 === 0) { var isAtPosition_1 = false; isColorStop = arg.reduce(function(acc, token) { if (isAtPosition_1) { if (isIdentToken(token)) { switch (token.value) { case "center": position2.push(FIFTY_PERCENT); return acc; case "top": case "left": position2.push(ZERO_LENGTH); return acc; case "right": case "bottom": position2.push(HUNDRED_PERCENT); return acc; } } else if (isLengthPercentage(token) || isLength(token)) { position2.push(token); } } else if (isIdentToken(token)) { switch (token.value) { case CIRCLE: shape = 0; return false; case ELLIPSE: shape = 1; return false; case "at": isAtPosition_1 = true; return false; case CLOSEST_SIDE: size2 = 0; return false; case COVER: case FARTHEST_SIDE: size2 = 1; return false; case CONTAIN: case CLOSEST_CORNER: size2 = 2; return false; case FARTHEST_CORNER: size2 = 3; return false; } } else if (isLength(token) || isLengthPercentage(token)) { if (!Array.isArray(size2)) { size2 = []; } size2.push(token); return false; } return acc; }, isColorStop); } if (isColorStop) { var colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); return { size: size2, shape, stops, position: position2, type: 2 /* RADIAL_GRADIENT */ }; }; var prefixRadialGradient = function(context, tokens2) { var shape = 0; var size2 = 3; var stops = []; var position2 = []; parseFunctionArgs(tokens2).forEach(function(arg, i4) { var isColorStop = true; if (i4 === 0) { isColorStop = arg.reduce(function(acc, token) { if (isIdentToken(token)) { switch (token.value) { case "center": position2.push(FIFTY_PERCENT); return false; case "top": case "left": position2.push(ZERO_LENGTH); return false; case "right": case "bottom": position2.push(HUNDRED_PERCENT); return false; } } else if (isLengthPercentage(token) || isLength(token)) { position2.push(token); return false; } return acc; }, isColorStop); } else if (i4 === 1) { isColorStop = arg.reduce(function(acc, token) { if (isIdentToken(token)) { switch (token.value) { case CIRCLE: shape = 0; return false; case ELLIPSE: shape = 1; return false; case CONTAIN: case CLOSEST_SIDE: size2 = 0; return false; case FARTHEST_SIDE: size2 = 1; return false; case CLOSEST_CORNER: size2 = 2; return false; case COVER: case FARTHEST_CORNER: size2 = 3; return false; } } else if (isLength(token) || isLengthPercentage(token)) { if (!Array.isArray(size2)) { size2 = []; } size2.push(token); return false; } return acc; }, isColorStop); } if (isColorStop) { var colorStop = parseColorStop(context, arg); stops.push(colorStop); } }); return { size: size2, shape, stops, position: position2, type: 2 /* RADIAL_GRADIENT */ }; }; var isLinearGradient = function(background) { return background.type === 1; }; var isRadialGradient = function(background) { return background.type === 2; }; var image = { name: "image", parse: function(context, value) { if (value.type === 22) { var image_1 = { url: value.value, type: 0 /* URL */ }; context.cache.addImage(value.value); return image_1; } if (value.type === 18) { var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name]; if (typeof imageFunction === "undefined") { throw new Error('Attempting to parse an unsupported image function "' + value.name + '"'); } return imageFunction(context, value.values); } throw new Error("Unsupported image type " + value.type); } }; function isSupportedImage(value) { return !(value.type === 20 && value.value === "none") && (value.type !== 18 || !!SUPPORTED_IMAGE_FUNCTIONS[value.name]); } var SUPPORTED_IMAGE_FUNCTIONS = { "linear-gradient": linearGradient, "-moz-linear-gradient": prefixLinearGradient, "-ms-linear-gradient": prefixLinearGradient, "-o-linear-gradient": prefixLinearGradient, "-webkit-linear-gradient": prefixLinearGradient, "radial-gradient": radialGradient, "-moz-radial-gradient": prefixRadialGradient, "-ms-radial-gradient": prefixRadialGradient, "-o-radial-gradient": prefixRadialGradient, "-webkit-radial-gradient": prefixRadialGradient, "-webkit-gradient": webkitGradient }; var backgroundImage = { name: "background-image", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 0) { return []; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return []; } return tokens2.filter(function(value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(function(value) { return image.parse(context, value); }); } }; var backgroundOrigin = { name: "background-origin", initialValue: "border-box", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.map(function(token) { if (isIdentToken(token)) { switch (token.value) { case "padding-box": return 1; case "content-box": return 2; } } return 0; }); } }; var backgroundPosition = { name: "background-position", initialValue: "0% 0%", type: 1, prefix: false, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isLengthPercentage); }).map(parseLengthPercentageTuple); } }; var backgroundRepeat = { name: "background-repeat", initialValue: "repeat", prefix: false, type: 1, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isIdentToken).map(function(token) { return token.value; }).join(" "); }).map(parseBackgroundRepeat); } }; var parseBackgroundRepeat = function(value) { switch (value) { case "no-repeat": return 1; case "repeat-x": case "repeat no-repeat": return 2; case "repeat-y": case "no-repeat repeat": return 3; case "repeat": default: return 0; } }; var BACKGROUND_SIZE; (function(BACKGROUND_SIZE2) { BACKGROUND_SIZE2["AUTO"] = "auto"; BACKGROUND_SIZE2["CONTAIN"] = "contain"; BACKGROUND_SIZE2["COVER"] = "cover"; })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {})); var backgroundSize = { name: "background-size", initialValue: "0", prefix: false, type: 1, parse: function(_context, tokens2) { return parseFunctionArgs(tokens2).map(function(values) { return values.filter(isBackgroundSizeInfoToken); }); } }; var isBackgroundSizeInfoToken = function(value) { return isIdentToken(value) || isLengthPercentage(value); }; var borderColorForSide = function(side) { return { name: "border-" + side + "-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; }; var borderTopColor = borderColorForSide("top"); var borderRightColor = borderColorForSide("right"); var borderBottomColor = borderColorForSide("bottom"); var borderLeftColor = borderColorForSide("left"); var borderRadiusForSide = function(side) { return { name: "border-radius-" + side, initialValue: "0 0", prefix: false, type: 1, parse: function(_context, tokens2) { return parseLengthPercentageTuple(tokens2.filter(isLengthPercentage)); } }; }; var borderTopLeftRadius = borderRadiusForSide("top-left"); var borderTopRightRadius = borderRadiusForSide("top-right"); var borderBottomRightRadius = borderRadiusForSide("bottom-right"); var borderBottomLeftRadius = borderRadiusForSide("bottom-left"); var borderStyleForSide = function(side) { return { name: "border-" + side + "-style", initialValue: "solid", prefix: false, type: 2, parse: function(_context, style) { switch (style) { case "none": return 0; case "dashed": return 2; case "dotted": return 3; case "double": return 4; } return 1; } }; }; var borderTopStyle = borderStyleForSide("top"); var borderRightStyle = borderStyleForSide("right"); var borderBottomStyle = borderStyleForSide("bottom"); var borderLeftStyle = borderStyleForSide("left"); var borderWidthForSide = function(side) { return { name: "border-" + side + "-width", initialValue: "0", type: 0, prefix: false, parse: function(_context, token) { if (isDimensionToken(token)) { return token.number; } return 0; } }; }; var borderTopWidth = borderWidthForSide("top"); var borderRightWidth = borderWidthForSide("right"); var borderBottomWidth = borderWidthForSide("bottom"); var borderLeftWidth = borderWidthForSide("left"); var color = { name: "color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var direction = { name: "direction", initialValue: "ltr", prefix: false, type: 2, parse: function(_context, direction2) { switch (direction2) { case "rtl": return 1; case "ltr": default: return 0; } } }; var display = { name: "display", initialValue: "inline-block", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).reduce( function(bit, token) { return bit | parseDisplayValue(token.value); }, 0 /* NONE */ ); } }; var parseDisplayValue = function(display2) { switch (display2) { case "block": case "-webkit-box": return 2; case "inline": return 4; case "run-in": return 8; case "flow": return 16; case "flow-root": return 32; case "table": return 64; case "flex": case "-webkit-flex": return 128; case "grid": case "-ms-grid": return 256; case "ruby": return 512; case "subgrid": return 1024; case "list-item": return 2048; case "table-row-group": return 4096; case "table-header-group": return 8192; case "table-footer-group": return 16384; case "table-row": return 32768; case "table-cell": return 65536; case "table-column-group": return 131072; case "table-column": return 262144; case "table-caption": return 524288; case "ruby-base": return 1048576; case "ruby-text": return 2097152; case "ruby-base-container": return 4194304; case "ruby-text-container": return 8388608; case "contents": return 16777216; case "inline-block": return 33554432; case "inline-list-item": return 67108864; case "inline-table": return 134217728; case "inline-flex": return 268435456; case "inline-grid": return 536870912; } return 0; }; var float = { name: "float", initialValue: "none", prefix: false, type: 2, parse: function(_context, float2) { switch (float2) { case "left": return 1; case "right": return 2; case "inline-start": return 3; case "inline-end": return 4; } return 0; } }; var letterSpacing = { name: "letter-spacing", initialValue: "0", prefix: false, type: 0, parse: function(_context, token) { if (token.type === 20 && token.value === "normal") { return 0; } if (token.type === 17) { return token.number; } if (token.type === 15) { return token.number; } return 0; } }; var LINE_BREAK; (function(LINE_BREAK2) { LINE_BREAK2["NORMAL"] = "normal"; LINE_BREAK2["STRICT"] = "strict"; })(LINE_BREAK || (LINE_BREAK = {})); var lineBreak = { name: "line-break", initialValue: "normal", prefix: false, type: 2, parse: function(_context, lineBreak2) { switch (lineBreak2) { case "strict": return LINE_BREAK.STRICT; case "normal": default: return LINE_BREAK.NORMAL; } } }; var lineHeight = { name: "line-height", initialValue: "normal", prefix: false, type: 4 /* TOKEN_VALUE */ }; var computeLineHeight = function(token, fontSize2) { if (isIdentToken(token) && token.value === "normal") { return 1.2 * fontSize2; } else if (token.type === 17) { return fontSize2 * token.number; } else if (isLengthPercentage(token)) { return getAbsoluteValue(token, fontSize2); } return fontSize2; }; var listStyleImage = { name: "list-style-image", initialValue: "none", type: 0, prefix: false, parse: function(context, token) { if (token.type === 20 && token.value === "none") { return null; } return image.parse(context, token); } }; var listStylePosition = { name: "list-style-position", initialValue: "outside", prefix: false, type: 2, parse: function(_context, position2) { switch (position2) { case "inside": return 0; case "outside": default: return 1; } } }; var listStyleType = { name: "list-style-type", initialValue: "none", prefix: false, type: 2, parse: function(_context, type) { switch (type) { case "disc": return 0; case "circle": return 1; case "square": return 2; case "decimal": return 3; case "cjk-decimal": return 4; case "decimal-leading-zero": return 5; case "lower-roman": return 6; case "upper-roman": return 7; case "lower-greek": return 8; case "lower-alpha": return 9; case "upper-alpha": return 10; case "arabic-indic": return 11; case "armenian": return 12; case "bengali": return 13; case "cambodian": return 14; case "cjk-earthly-branch": return 15; case "cjk-heavenly-stem": return 16; case "cjk-ideographic": return 17; case "devanagari": return 18; case "ethiopic-numeric": return 19; case "georgian": return 20; case "gujarati": return 21; case "gurmukhi": return 22; case "hebrew": return 22; case "hiragana": return 23; case "hiragana-iroha": return 24; case "japanese-formal": return 25; case "japanese-informal": return 26; case "kannada": return 27; case "katakana": return 28; case "katakana-iroha": return 29; case "khmer": return 30; case "korean-hangul-formal": return 31; case "korean-hanja-formal": return 32; case "korean-hanja-informal": return 33; case "lao": return 34; case "lower-armenian": return 35; case "malayalam": return 36; case "mongolian": return 37; case "myanmar": return 38; case "oriya": return 39; case "persian": return 40; case "simp-chinese-formal": return 41; case "simp-chinese-informal": return 42; case "tamil": return 43; case "telugu": return 44; case "thai": return 45; case "tibetan": return 46; case "trad-chinese-formal": return 47; case "trad-chinese-informal": return 48; case "upper-armenian": return 49; case "disclosure-open": return 50; case "disclosure-closed": return 51; case "none": default: return -1; } } }; var marginForSide = function(side) { return { name: "margin-" + side, initialValue: "0", prefix: false, type: 4 /* TOKEN_VALUE */ }; }; var marginTop = marginForSide("top"); var marginRight = marginForSide("right"); var marginBottom = marginForSide("bottom"); var marginLeft = marginForSide("left"); var overflow = { name: "overflow", initialValue: "visible", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(overflow2) { switch (overflow2.value) { case "hidden": return 1; case "scroll": return 2; case "clip": return 3; case "auto": return 4; case "visible": default: return 0; } }); } }; var overflowWrap = { name: "overflow-wrap", initialValue: "normal", prefix: false, type: 2, parse: function(_context, overflow2) { switch (overflow2) { case "break-word": return "break-word"; case "normal": default: return "normal"; } } }; var paddingForSide = function(side) { return { name: "padding-" + side, initialValue: "0", prefix: false, type: 3, format: "length-percentage" }; }; var paddingTop = paddingForSide("top"); var paddingRight = paddingForSide("right"); var paddingBottom = paddingForSide("bottom"); var paddingLeft = paddingForSide("left"); var textAlign = { name: "text-align", initialValue: "left", prefix: false, type: 2, parse: function(_context, textAlign2) { switch (textAlign2) { case "right": return 2; case "center": case "justify": return 1; case "left": default: return 0; } } }; var position = { name: "position", initialValue: "static", prefix: false, type: 2, parse: function(_context, position2) { switch (position2) { case "relative": return 1; case "absolute": return 2; case "fixed": return 3; case "sticky": return 4; } return 0; } }; var textShadow = { name: "text-shadow", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) { return []; } return parseFunctionArgs(tokens2).map(function(values) { var shadow = { color: COLORS.TRANSPARENT, offsetX: ZERO_LENGTH, offsetY: ZERO_LENGTH, blur: ZERO_LENGTH }; var c3 = 0; for (var i4 = 0; i4 < values.length; i4++) { var token = values[i4]; if (isLength(token)) { if (c3 === 0) { shadow.offsetX = token; } else if (c3 === 1) { shadow.offsetY = token; } else { shadow.blur = token; } c3++; } else { shadow.color = color$1.parse(context, token); } } return shadow; }); } }; var textTransform = { name: "text-transform", initialValue: "none", prefix: false, type: 2, parse: function(_context, textTransform2) { switch (textTransform2) { case "uppercase": return 2; case "lowercase": return 1; case "capitalize": return 3; } return 0; } }; var transform$1 = { name: "transform", initialValue: "none", prefix: true, type: 0, parse: function(_context, token) { if (token.type === 20 && token.value === "none") { return null; } if (token.type === 18) { var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name]; if (typeof transformFunction === "undefined") { throw new Error('Attempting to parse an unsupported transform function "' + token.name + '"'); } return transformFunction(token.values); } return null; } }; var matrix = function(args) { var values = args.filter(function(arg) { return arg.type === 17; }).map(function(arg) { return arg.number; }); return values.length === 6 ? values : null; }; var matrix3d = function(args) { var values = args.filter(function(arg) { return arg.type === 17; }).map(function(arg) { return arg.number; }); var a1 = values[0], b1 = values[1]; values[2]; values[3]; var a22 = values[4], b22 = values[5]; values[6]; values[7]; values[8]; values[9]; values[10]; values[11]; var a4 = values[12], b4 = values[13]; values[14]; values[15]; return values.length === 16 ? [a1, b1, a22, b22, a4, b4] : null; }; var SUPPORTED_TRANSFORM_FUNCTIONS = { matrix, matrix3d }; var DEFAULT_VALUE = { type: 16, number: 50, flags: FLAG_INTEGER }; var DEFAULT2 = [DEFAULT_VALUE, DEFAULT_VALUE]; var transformOrigin = { name: "transform-origin", initialValue: "50% 50%", prefix: true, type: 1, parse: function(_context, tokens2) { var origins = tokens2.filter(isLengthPercentage); if (origins.length !== 2) { return DEFAULT2; } return [origins[0], origins[1]]; } }; var visibility = { name: "visible", initialValue: "none", prefix: false, type: 2, parse: function(_context, visibility2) { switch (visibility2) { case "hidden": return 1; case "collapse": return 2; case "visible": default: return 0; } } }; var WORD_BREAK; (function(WORD_BREAK2) { WORD_BREAK2["NORMAL"] = "normal"; WORD_BREAK2["BREAK_ALL"] = "break-all"; WORD_BREAK2["KEEP_ALL"] = "keep-all"; })(WORD_BREAK || (WORD_BREAK = {})); var wordBreak = { name: "word-break", initialValue: "normal", prefix: false, type: 2, parse: function(_context, wordBreak2) { switch (wordBreak2) { case "break-all": return WORD_BREAK.BREAK_ALL; case "keep-all": return WORD_BREAK.KEEP_ALL; case "normal": default: return WORD_BREAK.NORMAL; } } }; var zIndex = { name: "z-index", initialValue: "auto", prefix: false, type: 0, parse: function(_context, token) { if (token.type === 20) { return { auto: true, order: 0 }; } if (isNumberToken(token)) { return { auto: false, order: token.number }; } throw new Error("Invalid z-index number parsed"); } }; var time = { name: "time", parse: function(_context, value) { if (value.type === 15) { switch (value.unit.toLowerCase()) { case "s": return 1e3 * value.number; case "ms": return value.number; } } throw new Error("Unsupported time type"); } }; var opacity = { name: "opacity", initialValue: "1", type: 0, prefix: false, parse: function(_context, token) { if (isNumberToken(token)) { return token.number; } return 1; } }; var textDecorationColor = { name: "text-decoration-color", initialValue: "transparent", prefix: false, type: 3, format: "color" }; var textDecorationLine = { name: "text-decoration-line", initialValue: "none", prefix: false, type: 1, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(token) { switch (token.value) { case "underline": return 1; case "overline": return 2; case "line-through": return 3; case "none": return 4; } return 0; }).filter(function(line) { return line !== 0; }); } }; var fontFamily = { name: "font-family", initialValue: "", prefix: false, type: 1, parse: function(_context, tokens2) { var accumulator = []; var results = []; tokens2.forEach(function(token) { switch (token.type) { case 20: case 0: accumulator.push(token.value); break; case 17: accumulator.push(token.number.toString()); break; case 4: results.push(accumulator.join(" ")); accumulator.length = 0; break; } }); if (accumulator.length) { results.push(accumulator.join(" ")); } return results.map(function(result) { return result.indexOf(" ") === -1 ? result : "'" + result + "'"; }); } }; var fontSize = { name: "font-size", initialValue: "0", prefix: false, type: 3, format: "length" }; var fontWeight = { name: "font-weight", initialValue: "normal", type: 0, prefix: false, parse: function(_context, token) { if (isNumberToken(token)) { return token.number; } if (isIdentToken(token)) { switch (token.value) { case "bold": return 700; case "normal": default: return 400; } } return 400; } }; var fontVariant = { name: "font-variant", initialValue: "none", type: 1, prefix: false, parse: function(_context, tokens2) { return tokens2.filter(isIdentToken).map(function(token) { return token.value; }); } }; var fontStyle = { name: "font-style", initialValue: "normal", prefix: false, type: 2, parse: function(_context, overflow2) { switch (overflow2) { case "oblique": return "oblique"; case "italic": return "italic"; case "normal": default: return "normal"; } } }; var contains2 = function(bit, value) { return (bit & value) !== 0; }; var content2 = { name: "content", initialValue: "none", type: 1, prefix: false, parse: function(_context, tokens2) { if (tokens2.length === 0) { return []; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return []; } return tokens2; } }; var counterIncrement = { name: "counter-increment", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return null; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return null; } var increments = []; var filtered = tokens2.filter(nonWhiteSpace); for (var i4 = 0; i4 < filtered.length; i4++) { var counter = filtered[i4]; var next = filtered[i4 + 1]; if (counter.type === 20) { var increment = next && isNumberToken(next) ? next.number : 1; increments.push({ counter: counter.value, increment }); } } return increments; } }; var counterReset = { name: "counter-reset", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return []; } var resets = []; var filtered = tokens2.filter(nonWhiteSpace); for (var i4 = 0; i4 < filtered.length; i4++) { var counter = filtered[i4]; var next = filtered[i4 + 1]; if (isIdentToken(counter) && counter.value !== "none") { var reset = next && isNumberToken(next) ? next.number : 0; resets.push({ counter: counter.value, reset }); } } return resets; } }; var duration = { name: "duration", initialValue: "0s", prefix: false, type: 1, parse: function(context, tokens2) { return tokens2.filter(isDimensionToken).map(function(token) { return time.parse(context, token); }); } }; var quotes = { name: "quotes", initialValue: "none", prefix: true, type: 1, parse: function(_context, tokens2) { if (tokens2.length === 0) { return null; } var first = tokens2[0]; if (first.type === 20 && first.value === "none") { return null; } var quotes2 = []; var filtered = tokens2.filter(isStringToken); if (filtered.length % 2 !== 0) { return null; } for (var i4 = 0; i4 < filtered.length; i4 += 2) { var open_1 = filtered[i4].value; var close_1 = filtered[i4 + 1].value; quotes2.push({ open: open_1, close: close_1 }); } return quotes2; } }; var getQuote = function(quotes2, depth, open) { if (!quotes2) { return ""; } var quote = quotes2[Math.min(depth, quotes2.length - 1)]; if (!quote) { return ""; } return open ? quote.open : quote.close; }; var boxShadow = { name: "box-shadow", initialValue: "none", type: 1, prefix: false, parse: function(context, tokens2) { if (tokens2.length === 1 && isIdentWithValue(tokens2[0], "none")) { return []; } return parseFunctionArgs(tokens2).map(function(values) { var shadow = { color: 255, offsetX: ZERO_LENGTH, offsetY: ZERO_LENGTH, blur: ZERO_LENGTH, spread: ZERO_LENGTH, inset: false }; var c3 = 0; for (var i4 = 0; i4 < values.length; i4++) { var token = values[i4]; if (isIdentWithValue(token, "inset")) { shadow.inset = true; } else if (isLength(token)) { if (c3 === 0) { shadow.offsetX = token; } else if (c3 === 1) { shadow.offsetY = token; } else if (c3 === 2) { shadow.blur = token; } else { shadow.spread = token; } c3++; } else { shadow.color = color$1.parse(context, token); } } return shadow; }); } }; var paintOrder = { name: "paint-order", initialValue: "normal", prefix: false, type: 1, parse: function(_context, tokens2) { var DEFAULT_VALUE2 = [ 0, 1, 2 /* MARKERS */ ]; var layers = []; tokens2.filter(isIdentToken).forEach(function(token) { switch (token.value) { case "stroke": layers.push( 1 /* STROKE */ ); break; case "fill": layers.push( 0 /* FILL */ ); break; case "markers": layers.push( 2 /* MARKERS */ ); break; } }); DEFAULT_VALUE2.forEach(function(value) { if (layers.indexOf(value) === -1) { layers.push(value); } }); return layers; } }; var webkitTextStrokeColor = { name: "-webkit-text-stroke-color", initialValue: "currentcolor", prefix: false, type: 3, format: "color" }; var webkitTextStrokeWidth = { name: "-webkit-text-stroke-width", initialValue: "0", type: 0, prefix: false, parse: function(_context, token) { if (isDimensionToken(token)) { return token.number; } return 0; } }; var CSSParsedDeclaration = ( /** @class */ function() { function CSSParsedDeclaration2(context, declaration) { var _a, _b; this.animationDuration = parse(context, duration, declaration.animationDuration); this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip); this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor); this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage); this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin); this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition); this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat); this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize); this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor); this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor); this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor); this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor); this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius); this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius); this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius); this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius); this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle); this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle); this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle); this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle); this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth); this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth); this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth); this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth); this.boxShadow = parse(context, boxShadow, declaration.boxShadow); this.color = parse(context, color, declaration.color); this.direction = parse(context, direction, declaration.direction); this.display = parse(context, display, declaration.display); this.float = parse(context, float, declaration.cssFloat); this.fontFamily = parse(context, fontFamily, declaration.fontFamily); this.fontSize = parse(context, fontSize, declaration.fontSize); this.fontStyle = parse(context, fontStyle, declaration.fontStyle); this.fontVariant = parse(context, fontVariant, declaration.fontVariant); this.fontWeight = parse(context, fontWeight, declaration.fontWeight); this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing); this.lineBreak = parse(context, lineBreak, declaration.lineBreak); this.lineHeight = parse(context, lineHeight, declaration.lineHeight); this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage); this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition); this.listStyleType = parse(context, listStyleType, declaration.listStyleType); this.marginTop = parse(context, marginTop, declaration.marginTop); this.marginRight = parse(context, marginRight, declaration.marginRight); this.marginBottom = parse(context, marginBottom, declaration.marginBottom); this.marginLeft = parse(context, marginLeft, declaration.marginLeft); this.opacity = parse(context, opacity, declaration.opacity); var overflowTuple = parse(context, overflow, declaration.overflow); this.overflowX = overflowTuple[0]; this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0]; this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap); this.paddingTop = parse(context, paddingTop, declaration.paddingTop); this.paddingRight = parse(context, paddingRight, declaration.paddingRight); this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom); this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft); this.paintOrder = parse(context, paintOrder, declaration.paintOrder); this.position = parse(context, position, declaration.position); this.textAlign = parse(context, textAlign, declaration.textAlign); this.textDecorationColor = parse(context, textDecorationColor, (_a = declaration.textDecorationColor) !== null && _a !== void 0 ? _a : declaration.color); this.textDecorationLine = parse(context, textDecorationLine, (_b = declaration.textDecorationLine) !== null && _b !== void 0 ? _b : declaration.textDecoration); this.textShadow = parse(context, textShadow, declaration.textShadow); this.textTransform = parse(context, textTransform, declaration.textTransform); this.transform = parse(context, transform$1, declaration.transform); this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin); this.visibility = parse(context, visibility, declaration.visibility); this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor); this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth); this.wordBreak = parse(context, wordBreak, declaration.wordBreak); this.zIndex = parse(context, zIndex, declaration.zIndex); } CSSParsedDeclaration2.prototype.isVisible = function() { return this.display > 0 && this.opacity > 0 && this.visibility === 0; }; CSSParsedDeclaration2.prototype.isTransparent = function() { return isTransparent(this.backgroundColor); }; CSSParsedDeclaration2.prototype.isTransformed = function() { return this.transform !== null; }; CSSParsedDeclaration2.prototype.isPositioned = function() { return this.position !== 0; }; CSSParsedDeclaration2.prototype.isPositionedWithZIndex = function() { return this.isPositioned() && !this.zIndex.auto; }; CSSParsedDeclaration2.prototype.isFloating = function() { return this.float !== 0; }; CSSParsedDeclaration2.prototype.isInlineLevel = function() { return contains2( this.display, 4 /* INLINE */ ) || contains2( this.display, 33554432 /* INLINE_BLOCK */ ) || contains2( this.display, 268435456 /* INLINE_FLEX */ ) || contains2( this.display, 536870912 /* INLINE_GRID */ ) || contains2( this.display, 67108864 /* INLINE_LIST_ITEM */ ) || contains2( this.display, 134217728 /* INLINE_TABLE */ ); }; return CSSParsedDeclaration2; }() ); var CSSParsedPseudoDeclaration = ( /** @class */ function() { function CSSParsedPseudoDeclaration2(context, declaration) { this.content = parse(context, content2, declaration.content); this.quotes = parse(context, quotes, declaration.quotes); } return CSSParsedPseudoDeclaration2; }() ); var CSSParsedCounterDeclaration = ( /** @class */ function() { function CSSParsedCounterDeclaration2(context, declaration) { this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement); this.counterReset = parse(context, counterReset, declaration.counterReset); } return CSSParsedCounterDeclaration2; }() ); var parse = function(context, descriptor, style) { var tokenizer = new Tokenizer(); var value = style !== null && typeof style !== "undefined" ? style.toString() : descriptor.initialValue; tokenizer.write(value); var parser = new Parser(tokenizer.read()); switch (descriptor.type) { case 2: var token = parser.parseComponentValue(); return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue); case 0: return descriptor.parse(context, parser.parseComponentValue()); case 1: return descriptor.parse(context, parser.parseComponentValues()); case 4: return parser.parseComponentValue(); case 3: switch (descriptor.format) { case "angle": return angle.parse(context, parser.parseComponentValue()); case "color": return color$1.parse(context, parser.parseComponentValue()); case "image": return image.parse(context, parser.parseComponentValue()); case "length": var length_1 = parser.parseComponentValue(); return isLength(length_1) ? length_1 : ZERO_LENGTH; case "length-percentage": var value_1 = parser.parseComponentValue(); return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH; case "time": return time.parse(context, parser.parseComponentValue()); } break; } }; var elementDebuggerAttribute = "data-html2canvas-debug"; var getElementDebugType = function(element) { var attribute = element.getAttribute(elementDebuggerAttribute); switch (attribute) { case "all": return 1; case "clone": return 2; case "parse": return 3; case "render": return 4; default: return 0; } }; var isDebugging = function(element, type) { var elementType2 = getElementDebugType(element); return elementType2 === 1 || type === elementType2; }; var ElementContainer = ( /** @class */ function() { function ElementContainer2(context, element) { this.context = context; this.textNodes = []; this.elements = []; this.flags = 0; if (isDebugging( element, 3 /* PARSE */ )) { debugger; } this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null)); if (isHTMLElementNode(element)) { if (this.styles.animationDuration.some(function(duration2) { return duration2 > 0; })) { element.style.animationDuration = "0s"; } if (this.styles.transform !== null) { element.style.transform = "none"; } } this.bounds = parseBounds(this.context, element); if (isDebugging( element, 4 /* RENDER */ )) { this.flags |= 16; } } return ElementContainer2; }() ); var base64 = "AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA="; var chars$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup$1 = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i$1 = 0; i$1 < chars$1.length; i$1++) { lookup$1[chars$1.charCodeAt(i$1)] = i$1; } var decode = function(base642) { var bufferLength = base642.length * 0.75, len = base642.length, i4, p2 = 0, encoded1, encoded2, encoded3, encoded4; if (base642[base642.length - 1] === "=") { bufferLength--; if (base642[base642.length - 2] === "=") { bufferLength--; } } var buffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined" && typeof Uint8Array.prototype.slice !== "undefined" ? new ArrayBuffer(bufferLength) : new Array(bufferLength); var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer); for (i4 = 0; i4 < len; i4 += 4) { encoded1 = lookup$1[base642.charCodeAt(i4)]; encoded2 = lookup$1[base642.charCodeAt(i4 + 1)]; encoded3 = lookup$1[base642.charCodeAt(i4 + 2)]; encoded4 = lookup$1[base642.charCodeAt(i4 + 3)]; bytes[p2++] = encoded1 << 2 | encoded2 >> 4; bytes[p2++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p2++] = (encoded3 & 3) << 6 | encoded4 & 63; } return buffer; }; var polyUint16Array = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 2) { bytes.push(buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var polyUint32Array = function(buffer) { var length = buffer.length; var bytes = []; for (var i4 = 0; i4 < length; i4 += 4) { bytes.push(buffer[i4 + 3] << 24 | buffer[i4 + 2] << 16 | buffer[i4 + 1] << 8 | buffer[i4]); } return bytes; }; var UTRIE2_SHIFT_2 = 5; var UTRIE2_SHIFT_1 = 6 + 5; var UTRIE2_INDEX_SHIFT = 2; var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2; var UTRIE2_LSCP_INDEX_2_OFFSET = 65536 >> UTRIE2_SHIFT_2; var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2; var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1; var UTRIE2_LSCP_INDEX_2_LENGTH = 1024 >> UTRIE2_SHIFT_2; var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH; var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH; var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 2048 >> 6; var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH; var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 65536 >> UTRIE2_SHIFT_1; var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2; var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1; var slice16 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint16Array(Array.prototype.slice.call(view, start5, end2)); }; var slice32 = function(view, start5, end2) { if (view.slice) { return view.slice(start5, end2); } return new Uint32Array(Array.prototype.slice.call(view, start5, end2)); }; var createTrieFromBase64 = function(base642, _byteLength) { var buffer = decode(base642); var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer); var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer); var headerLength = 24; var index = slice16(view16, headerLength / 2, view32[4] / 2); var data2 = view32[5] === 2 ? slice16(view16, (headerLength + view32[4]) / 2) : slice32(view32, Math.ceil((headerLength + view32[4]) / 4)); return new Trie(view32[0], view32[1], view32[2], view32[3], index, data2); }; var Trie = ( /** @class */ function() { function Trie2(initialValue, errorValue, highStart, highValueIndex, index, data2) { this.initialValue = initialValue; this.errorValue = errorValue; this.highStart = highStart; this.highValueIndex = highValueIndex; this.index = index; this.data = data2; } Trie2.prototype.get = function(codePoint) { var ix; if (codePoint >= 0) { if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) { ix = this.index[codePoint >> UTRIE2_SHIFT_2]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint <= 65535) { ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> UTRIE2_SHIFT_2)]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint < this.highStart) { ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1); ix = this.index[ix]; ix += codePoint >> UTRIE2_SHIFT_2 & UTRIE2_INDEX_2_MASK; ix = this.index[ix]; ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK); return this.data[ix]; } if (codePoint <= 1114111) { return this.data[this.highValueIndex]; } } return this.errorValue; }; return Trie2; }() ); var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); for (var i3 = 0; i3 < chars.length; i3++) { lookup[chars.charCodeAt(i3)] = i3; } var Prepend = 1; var CR = 2; var LF = 3; var Control = 4; var Extend = 5; var SpacingMark = 7; var L2 = 8; var V2 = 9; var T3 = 10; var LV = 11; var LVT = 12; var ZWJ = 13; var Extended_Pictographic = 14; var RI = 15; var toCodePoints = function(str) { var codePoints = []; var i4 = 0; var length = str.length; while (i4 < length) { var value = str.charCodeAt(i4++); if (value >= 55296 && value <= 56319 && i4 < length) { var extra = str.charCodeAt(i4++); if ((extra & 64512) === 56320) { codePoints.push(((value & 1023) << 10) + (extra & 1023) + 65536); } else { codePoints.push(value); i4--; } } else { codePoints.push(value); } } return codePoints; }; var fromCodePoint = function() { var codePoints = []; for (var _i = 0; _i < arguments.length; _i++) { codePoints[_i] = arguments[_i]; } if (String.fromCodePoint) { return String.fromCodePoint.apply(String, codePoints); } var length = codePoints.length; if (!length) { return ""; } var codeUnits = []; var index = -1; var result = ""; while (++index < length) { var codePoint = codePoints[index]; if (codePoint <= 65535) { codeUnits.push(codePoint); } else { codePoint -= 65536; codeUnits.push((codePoint >> 10) + 55296, codePoint % 1024 + 56320); } if (index + 1 === length || codeUnits.length > 16384) { result += String.fromCharCode.apply(String, codeUnits); codeUnits.length = 0; } } return result; }; var UnicodeTrie = createTrieFromBase64(base64); var BREAK_NOT_ALLOWED = "\xD7"; var BREAK_ALLOWED = "\xF7"; var codePointToClass = function(codePoint) { return UnicodeTrie.get(codePoint); }; var _graphemeBreakAtIndex = function(_codePoints, classTypes, index) { var prevIndex = index - 2; var prev = classTypes[prevIndex]; var current = classTypes[index - 1]; var next = classTypes[index]; if (current === CR && next === LF) { return BREAK_NOT_ALLOWED; } if (current === CR || current === LF || current === Control) { return BREAK_ALLOWED; } if (next === CR || next === LF || next === Control) { return BREAK_ALLOWED; } if (current === L2 && [L2, V2, LV, LVT].indexOf(next) !== -1) { return BREAK_NOT_ALLOWED; } if ((current === LV || current === V2) && (next === V2 || next === T3)) { return BREAK_NOT_ALLOWED; } if ((current === LVT || current === T3) && next === T3) { return BREAK_NOT_ALLOWED; } if (next === ZWJ || next === Extend) { return BREAK_NOT_ALLOWED; } if (next === SpacingMark) { return BREAK_NOT_ALLOWED; } if (current === Prepend) { return BREAK_NOT_ALLOWED; } if (current === ZWJ && next === Extended_Pictographic) { while (prev === Extend) { prev = classTypes[--prevIndex]; } if (prev === Extended_Pictographic) { return BREAK_NOT_ALLOWED; } } if (current === RI && next === RI) { var countRI = 0; while (prev === RI) { countRI++; prev = classTypes[--prevIndex]; } if (countRI % 2 === 0) { return BREAK_NOT_ALLOWED; } } return BREAK_ALLOWED; }; var GraphemeBreaker = function(str) { var codePoints = toCodePoints(str); var length = codePoints.length; var index = 0; var lastEnd = 0; var classTypes = codePoints.map(codePointToClass); return { next: function() { if (index >= length) { return { done: true, value: null }; } var graphemeBreak = BREAK_NOT_ALLOWED; while (index < length && (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED) { } if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) { var value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index)); lastEnd = index; return { value, done: false }; } return { done: true, value: null }; } }; }; var splitGraphemes = function(str) { var breaker = GraphemeBreaker(str); var graphemes = []; var bk; while (!(bk = breaker.next()).done) { if (bk.value) { graphemes.push(bk.value.slice()); } } return graphemes; }; var testRangeBounds = function(document2) { var TEST_HEIGHT = 123; if (document2.createRange) { var range = document2.createRange(); if (range.getBoundingClientRect) { var testElement = document2.createElement("boundtest"); testElement.style.height = TEST_HEIGHT + "px"; testElement.style.display = "block"; document2.body.appendChild(testElement); range.selectNode(testElement); var rangeBounds = range.getBoundingClientRect(); var rangeHeight = Math.round(rangeBounds.height); document2.body.removeChild(testElement); if (rangeHeight === TEST_HEIGHT) { return true; } } } return false; }; var testIOSLineBreak = function(document2) { var testElement = document2.createElement("boundtest"); testElement.style.width = "50px"; testElement.style.display = "block"; testElement.style.fontSize = "12px"; testElement.style.letterSpacing = "0px"; testElement.style.wordSpacing = "0px"; document2.body.appendChild(testElement); var range = document2.createRange(); testElement.innerHTML = typeof "".repeat === "function" ? "👨".repeat(10) : ""; var node = testElement.firstChild; var textList = toCodePoints$1(node.data).map(function(i4) { return fromCodePoint$1(i4); }); var offset2 = 0; var prev = {}; var supports = textList.every(function(text, i4) { range.setStart(node, offset2); range.setEnd(node, offset2 + text.length); var rect = range.getBoundingClientRect(); offset2 += text.length; var boundAhead = rect.x > prev.x || rect.y > prev.y; prev = rect; if (i4 === 0) { return true; } return boundAhead; }); document2.body.removeChild(testElement); return supports; }; var testCORS = function() { return typeof new Image().crossOrigin !== "undefined"; }; var testResponseType = function() { return typeof new XMLHttpRequest().responseType === "string"; }; var testSVG = function(document2) { var img = new Image(); var canvas = document2.createElement("canvas"); var ctx = canvas.getContext("2d"); if (!ctx) { return false; } img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>"; try { ctx.drawImage(img, 0, 0); canvas.toDataURL(); } catch (e4) { return false; } return true; }; var isGreenPixel = function(data2) { return data2[0] === 0 && data2[1] === 255 && data2[2] === 0 && data2[3] === 255; }; var testForeignObject = function(document2) { var canvas = document2.createElement("canvas"); var size2 = 100; canvas.width = size2; canvas.height = size2; var ctx = canvas.getContext("2d"); if (!ctx) { return Promise.reject(false); } ctx.fillStyle = "rgb(0, 255, 0)"; ctx.fillRect(0, 0, size2, size2); var img = new Image(); var greenImageSrc = canvas.toDataURL(); img.src = greenImageSrc; var svg = createForeignObjectSVG(size2, size2, 0, 0, img); ctx.fillStyle = "red"; ctx.fillRect(0, 0, size2, size2); return loadSerializedSVG$1(svg).then(function(img2) { ctx.drawImage(img2, 0, 0); var data2 = ctx.getImageData(0, 0, size2, size2).data; ctx.fillStyle = "red"; ctx.fillRect(0, 0, size2, size2); var node = document2.createElement("div"); node.style.backgroundImage = "url(" + greenImageSrc + ")"; node.style.height = size2 + "px"; return isGreenPixel(data2) ? loadSerializedSVG$1(createForeignObjectSVG(size2, size2, 0, 0, node)) : Promise.reject(false); }).then(function(img2) { ctx.drawImage(img2, 0, 0); return isGreenPixel(ctx.getImageData(0, 0, size2, size2).data); }).catch(function() { return false; }); }; var createForeignObjectSVG = function(width, height, x3, y3, node) { var xmlns = "http://www.w3.org/2000/svg"; var svg = document.createElementNS(xmlns, "svg"); var foreignObject = document.createElementNS(xmlns, "foreignObject"); svg.setAttributeNS(null, "width", width.toString()); svg.setAttributeNS(null, "height", height.toString()); foreignObject.setAttributeNS(null, "width", "100%"); foreignObject.setAttributeNS(null, "height", "100%"); foreignObject.setAttributeNS(null, "x", x3.toString()); foreignObject.setAttributeNS(null, "y", y3.toString()); foreignObject.setAttributeNS(null, "externalResourcesRequired", "true"); svg.appendChild(foreignObject); foreignObject.appendChild(node); return svg; }; var loadSerializedSVG$1 = function(svg) { return new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { return resolve(img); }; img.onerror = reject; img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)); }); }; var FEATURES = { get SUPPORT_RANGE_BOUNDS() { var value = testRangeBounds(document); Object.defineProperty(FEATURES, "SUPPORT_RANGE_BOUNDS", { value }); return value; }, get SUPPORT_WORD_BREAKING() { var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document); Object.defineProperty(FEATURES, "SUPPORT_WORD_BREAKING", { value }); return value; }, get SUPPORT_SVG_DRAWING() { var value = testSVG(document); Object.defineProperty(FEATURES, "SUPPORT_SVG_DRAWING", { value }); return value; }, get SUPPORT_FOREIGNOBJECT_DRAWING() { var value = typeof Array.from === "function" && typeof window.fetch === "function" ? testForeignObject(document) : Promise.resolve(false); Object.defineProperty(FEATURES, "SUPPORT_FOREIGNOBJECT_DRAWING", { value }); return value; }, get SUPPORT_CORS_IMAGES() { var value = testCORS(); Object.defineProperty(FEATURES, "SUPPORT_CORS_IMAGES", { value }); return value; }, get SUPPORT_RESPONSE_TYPE() { var value = testResponseType(); Object.defineProperty(FEATURES, "SUPPORT_RESPONSE_TYPE", { value }); return value; }, get SUPPORT_CORS_XHR() { var value = "withCredentials" in new XMLHttpRequest(); Object.defineProperty(FEATURES, "SUPPORT_CORS_XHR", { value }); return value; }, get SUPPORT_NATIVE_TEXT_SEGMENTATION() { var value = !!(typeof Intl !== "undefined" && Intl.Segmenter); Object.defineProperty(FEATURES, "SUPPORT_NATIVE_TEXT_SEGMENTATION", { value }); return value; } }; var TextBounds = ( /** @class */ function() { function TextBounds2(text, bounds) { this.text = text; this.bounds = bounds; } return TextBounds2; }() ); var parseTextBounds = function(context, value, styles, node) { var textList = breakText(value, styles); var textBounds = []; var offset2 = 0; textList.forEach(function(text) { if (styles.textDecorationLine.length || text.trim().length > 0) { if (FEATURES.SUPPORT_RANGE_BOUNDS) { var clientRects = createRange(node, offset2, text.length).getClientRects(); if (clientRects.length > 1) { var subSegments = segmentGraphemes(text); var subOffset_1 = 0; subSegments.forEach(function(subSegment) { textBounds.push(new TextBounds(subSegment, Bounds.fromDOMRectList(context, createRange(node, subOffset_1 + offset2, subSegment.length).getClientRects()))); subOffset_1 += subSegment.length; }); } else { textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects))); } } else { var replacementNode = node.splitText(text.length); textBounds.push(new TextBounds(text, getWrapperBounds(context, node))); node = replacementNode; } } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) { node = node.splitText(text.length); } offset2 += text.length; }); return textBounds; }; var getWrapperBounds = function(context, node) { var ownerDocument = node.ownerDocument; if (ownerDocument) { var wrapper = ownerDocument.createElement("html2canvaswrapper"); wrapper.appendChild(node.cloneNode(true)); var parentNode = node.parentNode; if (parentNode) { parentNode.replaceChild(wrapper, node); var bounds = parseBounds(context, wrapper); if (wrapper.firstChild) { parentNode.replaceChild(wrapper.firstChild, wrapper); } return bounds; } } return Bounds.EMPTY; }; var createRange = function(node, offset2, length) { var ownerDocument = node.ownerDocument; if (!ownerDocument) { throw new Error("Node has no owner document"); } var range = ownerDocument.createRange(); range.setStart(node, offset2); range.setEnd(node, offset2 + length); return range; }; var segmentGraphemes = function(value) { if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" }); return Array.from(segmenter.segment(value)).map(function(segment) { return segment.segment; }); } return splitGraphemes(value); }; var segmentWords = function(value, styles) { if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) { var segmenter = new Intl.Segmenter(void 0, { granularity: "word" }); return Array.from(segmenter.segment(value)).map(function(segment) { return segment.segment; }); } return breakWords(value, styles); }; var breakText = function(value, styles) { return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles); }; var wordSeparators = [32, 160, 4961, 65792, 65793, 4153, 4241]; var breakWords = function(str, styles) { var breaker = LineBreaker(str, { lineBreak: styles.lineBreak, wordBreak: styles.overflowWrap === "break-word" ? "break-word" : styles.wordBreak }); var words = []; var bk; var _loop_1 = function() { if (bk.value) { var value = bk.value.slice(); var codePoints = toCodePoints$1(value); var word_1 = ""; codePoints.forEach(function(codePoint) { if (wordSeparators.indexOf(codePoint) === -1) { word_1 += fromCodePoint$1(codePoint); } else { if (word_1.length) { words.push(word_1); } words.push(fromCodePoint$1(codePoint)); word_1 = ""; } }); if (word_1.length) { words.push(word_1); } } }; while (!(bk = breaker.next()).done) { _loop_1(); } return words; }; var TextContainer = ( /** @class */ function() { function TextContainer2(context, node, styles) { this.text = transform(node.data, styles.textTransform); this.textBounds = parseTextBounds(context, this.text, styles, node); } return TextContainer2; }() ); var transform = function(text, transform2) { switch (transform2) { case 1: return text.toLowerCase(); case 3: return text.replace(CAPITALIZE, capitalize2); case 2: return text.toUpperCase(); default: return text; } }; var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g; var capitalize2 = function(m3, p1, p2) { if (m3.length > 0) { return p1 + p2.toUpperCase(); } return m3; }; var ImageElementContainer = ( /** @class */ function(_super) { __extends(ImageElementContainer2, _super); function ImageElementContainer2(context, img) { var _this = _super.call(this, context, img) || this; _this.src = img.currentSrc || img.src; _this.intrinsicWidth = img.naturalWidth; _this.intrinsicHeight = img.naturalHeight; _this.context.cache.addImage(_this.src); return _this; } return ImageElementContainer2; }(ElementContainer) ); var CanvasElementContainer = ( /** @class */ function(_super) { __extends(CanvasElementContainer2, _super); function CanvasElementContainer2(context, canvas) { var _this = _super.call(this, context, canvas) || this; _this.canvas = canvas; _this.intrinsicWidth = canvas.width; _this.intrinsicHeight = canvas.height; return _this; } return CanvasElementContainer2; }(ElementContainer) ); var SVGElementContainer = ( /** @class */ function(_super) { __extends(SVGElementContainer2, _super); function SVGElementContainer2(context, img) { var _this = _super.call(this, context, img) || this; var s3 = new XMLSerializer(); var bounds = parseBounds(context, img); img.setAttribute("width", bounds.width + "px"); img.setAttribute("height", bounds.height + "px"); _this.svg = "data:image/svg+xml," + encodeURIComponent(s3.serializeToString(img)); _this.intrinsicWidth = img.width.baseVal.value; _this.intrinsicHeight = img.height.baseVal.value; _this.context.cache.addImage(_this.svg); return _this; } return SVGElementContainer2; }(ElementContainer) ); var LIElementContainer = ( /** @class */ function(_super) { __extends(LIElementContainer2, _super); function LIElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.value = element.value; return _this; } return LIElementContainer2; }(ElementContainer) ); var OLElementContainer = ( /** @class */ function(_super) { __extends(OLElementContainer2, _super); function OLElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.start = element.start; _this.reversed = typeof element.reversed === "boolean" && element.reversed === true; return _this; } return OLElementContainer2; }(ElementContainer) ); var CHECKBOX_BORDER_RADIUS = [ { type: 15, flags: 0, unit: "px", number: 3 } ]; var RADIO_BORDER_RADIUS = [ { type: 16, flags: 0, number: 50 } ]; var reformatInputBounds = function(bounds) { if (bounds.width > bounds.height) { return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height); } else if (bounds.width < bounds.height) { return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width); } return bounds; }; var getInputValue2 = function(node) { var value = node.type === PASSWORD ? new Array(node.value.length + 1).join("\u2022") : node.value; return value.length === 0 ? node.placeholder || "" : value; }; var CHECKBOX = "checkbox"; var RADIO = "radio"; var PASSWORD = "password"; var INPUT_COLOR = 707406591; var InputElementContainer = ( /** @class */ function(_super) { __extends(InputElementContainer2, _super); function InputElementContainer2(context, input) { var _this = _super.call(this, context, input) || this; _this.type = input.type.toLowerCase(); _this.checked = input.checked; _this.value = getInputValue2(input); if (_this.type === CHECKBOX || _this.type === RADIO) { _this.styles.backgroundColor = 3739148031; _this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 2779096575; _this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1; _this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle = 1; _this.styles.backgroundClip = [ 0 /* BORDER_BOX */ ]; _this.styles.backgroundOrigin = [ 0 /* BORDER_BOX */ ]; _this.bounds = reformatInputBounds(_this.bounds); } switch (_this.type) { case CHECKBOX: _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS; break; case RADIO: _this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS; break; } return _this; } return InputElementContainer2; }(ElementContainer) ); var SelectElementContainer = ( /** @class */ function(_super) { __extends(SelectElementContainer2, _super); function SelectElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; var option = element.options[element.selectedIndex || 0]; _this.value = option ? option.text || "" : ""; return _this; } return SelectElementContainer2; }(ElementContainer) ); var TextareaElementContainer = ( /** @class */ function(_super) { __extends(TextareaElementContainer2, _super); function TextareaElementContainer2(context, element) { var _this = _super.call(this, context, element) || this; _this.value = element.value; return _this; } return TextareaElementContainer2; }(ElementContainer) ); var IFrameElementContainer = ( /** @class */ function(_super) { __extends(IFrameElementContainer2, _super); function IFrameElementContainer2(context, iframe) { var _this = _super.call(this, context, iframe) || this; _this.src = iframe.src; _this.width = parseInt(iframe.width, 10) || 0; _this.height = parseInt(iframe.height, 10) || 0; _this.backgroundColor = _this.styles.backgroundColor; try { if (iframe.contentWindow && iframe.contentWindow.document && iframe.contentWindow.document.documentElement) { _this.tree = parseTree(context, iframe.contentWindow.document.documentElement); var documentBackgroundColor = iframe.contentWindow.document.documentElement ? parseColor(context, getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor) : COLORS.TRANSPARENT; var bodyBackgroundColor = iframe.contentWindow.document.body ? parseColor(context, getComputedStyle(iframe.contentWindow.document.body).backgroundColor) : COLORS.TRANSPARENT; _this.backgroundColor = isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? _this.styles.backgroundColor : bodyBackgroundColor : documentBackgroundColor; } } catch (e4) { } return _this; } return IFrameElementContainer2; }(ElementContainer) ); var LIST_OWNERS = ["OL", "UL", "MENU"]; var parseNodeTree = function(context, node, parent, root) { for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) { nextNode = childNode.nextSibling; if (isTextNode(childNode) && childNode.data.trim().length > 0) { parent.textNodes.push(new TextContainer(context, childNode, parent.styles)); } else if (isElementNode(childNode)) { if (isSlotElement(childNode) && childNode.assignedNodes) { childNode.assignedNodes().forEach(function(childNode2) { return parseNodeTree(context, childNode2, parent, root); }); } else { var container = createContainer(context, childNode); if (container.styles.isVisible()) { if (createsRealStackingContext(childNode, container, root)) { container.flags |= 4; } else if (createsStackingContext(container.styles)) { container.flags |= 2; } if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) { container.flags |= 8; } parent.elements.push(container); childNode.slot; if (childNode.shadowRoot) { parseNodeTree(context, childNode.shadowRoot, container, root); } else if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) { parseNodeTree(context, childNode, container, root); } } } } } }; var createContainer = function(context, element) { if (isImageElement(element)) { return new ImageElementContainer(context, element); } if (isCanvasElement(element)) { return new CanvasElementContainer(context, element); } if (isSVGElement(element)) { return new SVGElementContainer(context, element); } if (isLIElement(element)) { return new LIElementContainer(context, element); } if (isOLElement(element)) { return new OLElementContainer(context, element); } if (isInputElement(element)) { return new InputElementContainer(context, element); } if (isSelectElement(element)) { return new SelectElementContainer(context, element); } if (isTextareaElement(element)) { return new TextareaElementContainer(context, element); } if (isIFrameElement(element)) { return new IFrameElementContainer(context, element); } return new ElementContainer(context, element); }; var parseTree = function(context, element) { var container = createContainer(context, element); container.flags |= 4; parseNodeTree(context, element, container, container); return container; }; var createsRealStackingContext = function(node, container, root) { return container.styles.isPositionedWithZIndex() || container.styles.opacity < 1 || container.styles.isTransformed() || isBodyElement(node) && root.styles.isTransparent(); }; var createsStackingContext = function(styles) { return styles.isPositioned() || styles.isFloating(); }; var isTextNode = function(node) { return node.nodeType === Node.TEXT_NODE; }; var isElementNode = function(node) { return node.nodeType === Node.ELEMENT_NODE; }; var isHTMLElementNode = function(node) { return isElementNode(node) && typeof node.style !== "undefined" && !isSVGElementNode(node); }; var isSVGElementNode = function(element) { return typeof element.className === "object"; }; var isLIElement = function(node) { return node.tagName === "LI"; }; var isOLElement = function(node) { return node.tagName === "OL"; }; var isInputElement = function(node) { return node.tagName === "INPUT"; }; var isHTMLElement2 = function(node) { return node.tagName === "HTML"; }; var isSVGElement = function(node) { return node.tagName === "svg"; }; var isBodyElement = function(node) { return node.tagName === "BODY"; }; var isCanvasElement = function(node) { return node.tagName === "CANVAS"; }; var isVideoElement = function(node) { return node.tagName === "VIDEO"; }; var isImageElement = function(node) { return node.tagName === "IMG"; }; var isIFrameElement = function(node) { return node.tagName === "IFRAME"; }; var isStyleElement = function(node) { return node.tagName === "STYLE"; }; var isScriptElement = function(node) { return node.tagName === "SCRIPT"; }; var isTextareaElement = function(node) { return node.tagName === "TEXTAREA"; }; var isSelectElement = function(node) { return node.tagName === "SELECT"; }; var isSlotElement = function(node) { return node.tagName === "SLOT"; }; var isCustomElement = function(node) { return node.tagName.indexOf("-") > 0; }; var CounterState = ( /** @class */ function() { function CounterState2() { this.counters = {}; } CounterState2.prototype.getCounterValue = function(name) { var counter = this.counters[name]; if (counter && counter.length) { return counter[counter.length - 1]; } return 1; }; CounterState2.prototype.getCounterValues = function(name) { var counter = this.counters[name]; return counter ? counter : []; }; CounterState2.prototype.pop = function(counters) { var _this = this; counters.forEach(function(counter) { return _this.counters[counter].pop(); }); }; CounterState2.prototype.parse = function(style) { var _this = this; var counterIncrement2 = style.counterIncrement; var counterReset2 = style.counterReset; var canReset = true; if (counterIncrement2 !== null) { counterIncrement2.forEach(function(entry) { var counter = _this.counters[entry.counter]; if (counter && entry.increment !== 0) { canReset = false; if (!counter.length) { counter.push(1); } counter[Math.max(0, counter.length - 1)] += entry.increment; } }); } var counterNames = []; if (canReset) { counterReset2.forEach(function(entry) { var counter = _this.counters[entry.counter]; counterNames.push(entry.counter); if (!counter) { counter = _this.counters[entry.counter] = []; } counter.push(entry.reset); }); } return counterNames; }; return CounterState2; }() ); var ROMAN_UPPER = { integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], values: ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"] }; var ARMENIAN = { integers: [ 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u0554", "\u0553", "\u0552", "\u0551", "\u0550", "\u054F", "\u054E", "\u054D", "\u054C", "\u054B", "\u054A", "\u0549", "\u0548", "\u0547", "\u0546", "\u0545", "\u0544", "\u0543", "\u0542", "\u0541", "\u0540", "\u053F", "\u053E", "\u053D", "\u053C", "\u053B", "\u053A", "\u0539", "\u0538", "\u0537", "\u0536", "\u0535", "\u0534", "\u0533", "\u0532", "\u0531" ] }; var HEBREW = { integers: [ 1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u05D9\u05F3", "\u05D8\u05F3", "\u05D7\u05F3", "\u05D6\u05F3", "\u05D5\u05F3", "\u05D4\u05F3", "\u05D3\u05F3", "\u05D2\u05F3", "\u05D1\u05F3", "\u05D0\u05F3", "\u05EA", "\u05E9", "\u05E8", "\u05E7", "\u05E6", "\u05E4", "\u05E2", "\u05E1", "\u05E0", "\u05DE", "\u05DC", "\u05DB", "\u05D9\u05D8", "\u05D9\u05D7", "\u05D9\u05D6", "\u05D8\u05D6", "\u05D8\u05D5", "\u05D9", "\u05D8", "\u05D7", "\u05D6", "\u05D5", "\u05D4", "\u05D3", "\u05D2", "\u05D1", "\u05D0" ] }; var GEORGIAN = { integers: [ 1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ], values: [ "\u10F5", "\u10F0", "\u10EF", "\u10F4", "\u10EE", "\u10ED", "\u10EC", "\u10EB", "\u10EA", "\u10E9", "\u10E8", "\u10E7", "\u10E6", "\u10E5", "\u10E4", "\u10F3", "\u10E2", "\u10E1", "\u10E0", "\u10DF", "\u10DE", "\u10DD", "\u10F2", "\u10DC", "\u10DB", "\u10DA", "\u10D9", "\u10D8", "\u10D7", "\u10F1", "\u10D6", "\u10D5", "\u10D4", "\u10D3", "\u10D2", "\u10D1", "\u10D0" ] }; var createAdditiveCounter = function(value, min2, max2, symbols, fallback, suffix) { if (value < min2 || value > max2) { return createCounterText(value, fallback, suffix.length > 0); } return symbols.integers.reduce(function(string, integer, index) { while (value >= integer) { value -= integer; string += symbols.values[index]; } return string; }, "") + suffix; }; var createCounterStyleWithSymbolResolver = function(value, codePointRangeLength, isNumeric5, resolver) { var string = ""; do { if (!isNumeric5) { value--; } string = resolver(value) + string; value /= codePointRangeLength; } while (value * codePointRangeLength >= codePointRangeLength); return string; }; var createCounterStyleFromRange = function(value, codePointRangeStart, codePointRangeEnd, isNumeric5, suffix) { var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1; return (value < 0 ? "-" : "") + (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric5, function(codePoint) { return fromCodePoint$1(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart); }) + suffix); }; var createCounterStyleFromSymbols = function(value, symbols, suffix) { if (suffix === void 0) { suffix = ". "; } var codePointRangeLength = symbols.length; return createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function(codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix; }; var CJK_ZEROS = 1 << 0; var CJK_TEN_COEFFICIENTS = 1 << 1; var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2; var CJK_HUNDRED_COEFFICIENTS = 1 << 3; var createCJKCounter = function(value, numbers, multipliers, negativeSign, suffix, flags) { if (value < -9999 || value > 9999) { return createCounterText(value, 4, suffix.length > 0); } var tmp = Math.abs(value); var string = suffix; if (tmp === 0) { return numbers[0] + string; } for (var digit = 0; tmp > 0 && digit <= 4; digit++) { var coefficient = tmp % 10; if (coefficient === 0 && contains2(flags, CJK_ZEROS) && string !== "") { string = numbers[coefficient] + string; } else if (coefficient > 1 || coefficient === 1 && digit === 0 || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_COEFFICIENTS) || coefficient === 1 && digit === 1 && contains2(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100 || coefficient === 1 && digit > 1 && contains2(flags, CJK_HUNDRED_COEFFICIENTS)) { string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : "") + string; } else if (coefficient === 1 && digit > 0) { string = multipliers[digit - 1] + string; } tmp = Math.floor(tmp / 10); } return (value < 0 ? negativeSign : "") + string; }; var CHINESE_INFORMAL_MULTIPLIERS = "\u5341\u767E\u5343\u842C"; var CHINESE_FORMAL_MULTIPLIERS = "\u62FE\u4F70\u4EDF\u842C"; var JAPANESE_NEGATIVE = "\u30DE\u30A4\u30CA\u30B9"; var KOREAN_NEGATIVE = "\uB9C8\uC774\uB108\uC2A4"; var createCounterText = function(value, type, appendSuffix) { var defaultSuffix = appendSuffix ? ". " : ""; var cjkSuffix = appendSuffix ? "\u3001" : ""; var koreanSuffix = appendSuffix ? ", " : ""; var spaceSuffix = appendSuffix ? " " : ""; switch (type) { case 0: return "\u2022" + spaceSuffix; case 1: return "\u25E6" + spaceSuffix; case 2: return "\u25FE" + spaceSuffix; case 5: var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); return string.length < 4 ? "0" + string : string; case 4: return createCounterStyleFromSymbols(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", cjkSuffix); case 6: return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix).toLowerCase(); case 7: return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, 3, defaultSuffix); case 8: return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix); case 9: return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix); case 10: return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix); case 11: return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix); case 12: case 49: return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix); case 35: return createAdditiveCounter(value, 1, 9999, ARMENIAN, 3, defaultSuffix).toLowerCase(); case 13: return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix); case 14: case 30: return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix); case 15: return createCounterStyleFromSymbols(value, "\u5B50\u4E11\u5BC5\u536F\u8FB0\u5DF3\u5348\u672A\u7533\u9149\u620C\u4EA5", cjkSuffix); case 16: return createCounterStyleFromSymbols(value, "\u7532\u4E59\u4E19\u4E01\u620A\u5DF1\u5E9A\u8F9B\u58EC\u7678", cjkSuffix); case 17: case 48: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 47: return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u8086\u4F0D\u9678\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8CA0", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 42: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", CHINESE_INFORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 41: return createCJKCounter(value, "\u96F6\u58F9\u8D30\u53C1\u8086\u4F0D\u9646\u67D2\u634C\u7396", CHINESE_FORMAL_MULTIPLIERS, "\u8D1F", cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS); case 26: return createCJKCounter(value, "\u3007\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, 0); case 25: return createCJKCounter(value, "\u96F6\u58F1\u5F10\u53C2\u56DB\u4F0D\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343\u4E07", JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 31: return createCJKCounter(value, "\uC601\uC77C\uC774\uC0BC\uC0AC\uC624\uC721\uCE60\uD314\uAD6C", "\uC2ED\uBC31\uCC9C\uB9CC", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 33: return createCJKCounter(value, "\u96F6\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u5341\u767E\u5343\u842C", KOREAN_NEGATIVE, koreanSuffix, 0); case 32: return createCJKCounter(value, "\u96F6\u58F9\u8CB3\u53C3\u56DB\u4E94\u516D\u4E03\u516B\u4E5D", "\u62FE\u767E\u5343", KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS); case 18: return createCounterStyleFromRange(value, 2406, 2415, true, defaultSuffix); case 20: return createAdditiveCounter(value, 1, 19999, GEORGIAN, 3, defaultSuffix); case 21: return createCounterStyleFromRange(value, 2790, 2799, true, defaultSuffix); case 22: return createCounterStyleFromRange(value, 2662, 2671, true, defaultSuffix); case 22: return createAdditiveCounter(value, 1, 10999, HEBREW, 3, defaultSuffix); case 23: return createCounterStyleFromSymbols(value, "\u3042\u3044\u3046\u3048\u304A\u304B\u304D\u304F\u3051\u3053\u3055\u3057\u3059\u305B\u305D\u305F\u3061\u3064\u3066\u3068\u306A\u306B\u306C\u306D\u306E\u306F\u3072\u3075\u3078\u307B\u307E\u307F\u3080\u3081\u3082\u3084\u3086\u3088\u3089\u308A\u308B\u308C\u308D\u308F\u3090\u3091\u3092\u3093"); case 24: return createCounterStyleFromSymbols(value, "\u3044\u308D\u306F\u306B\u307B\u3078\u3068\u3061\u308A\u306C\u308B\u3092\u308F\u304B\u3088\u305F\u308C\u305D\u3064\u306D\u306A\u3089\u3080\u3046\u3090\u306E\u304A\u304F\u3084\u307E\u3051\u3075\u3053\u3048\u3066\u3042\u3055\u304D\u3086\u3081\u307F\u3057\u3091\u3072\u3082\u305B\u3059"); case 27: return createCounterStyleFromRange(value, 3302, 3311, true, defaultSuffix); case 28: return createCounterStyleFromSymbols(value, "\u30A2\u30A4\u30A6\u30A8\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30F3", cjkSuffix); case 29: return createCounterStyleFromSymbols(value, "\u30A4\u30ED\u30CF\u30CB\u30DB\u30D8\u30C8\u30C1\u30EA\u30CC\u30EB\u30F2\u30EF\u30AB\u30E8\u30BF\u30EC\u30BD\u30C4\u30CD\u30CA\u30E9\u30E0\u30A6\u30F0\u30CE\u30AA\u30AF\u30E4\u30DE\u30B1\u30D5\u30B3\u30A8\u30C6\u30A2\u30B5\u30AD\u30E6\u30E1\u30DF\u30B7\u30F1\u30D2\u30E2\u30BB\u30B9", cjkSuffix); case 34: return createCounterStyleFromRange(value, 3792, 3801, true, defaultSuffix); case 37: return createCounterStyleFromRange(value, 6160, 6169, true, defaultSuffix); case 38: return createCounterStyleFromRange(value, 4160, 4169, true, defaultSuffix); case 39: return createCounterStyleFromRange(value, 2918, 2927, true, defaultSuffix); case 40: return createCounterStyleFromRange(value, 1776, 1785, true, defaultSuffix); case 43: return createCounterStyleFromRange(value, 3046, 3055, true, defaultSuffix); case 44: return createCounterStyleFromRange(value, 3174, 3183, true, defaultSuffix); case 45: return createCounterStyleFromRange(value, 3664, 3673, true, defaultSuffix); case 46: return createCounterStyleFromRange(value, 3872, 3881, true, defaultSuffix); case 3: default: return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix); } }; var IGNORE_ATTRIBUTE = "data-html2canvas-ignore"; var DocumentCloner = ( /** @class */ function() { function DocumentCloner2(context, element, options) { this.context = context; this.options = options; this.scrolledElements = []; this.referenceElement = element; this.counters = new CounterState(); this.quoteDepth = 0; if (!element.ownerDocument) { throw new Error("Cloned element does not have an owner document"); } this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false); } DocumentCloner2.prototype.toIFrame = function(ownerDocument, windowSize) { var _this = this; var iframe = createIFrameContainer(ownerDocument, windowSize); if (!iframe.contentWindow) { return Promise.reject("Unable to find iframe window"); } var scrollX = ownerDocument.defaultView.pageXOffset; var scrollY = ownerDocument.defaultView.pageYOffset; var cloneWindow = iframe.contentWindow; var documentClone = cloneWindow.document; var iframeLoad = iframeLoader(iframe).then(function() { return __awaiter(_this, void 0, void 0, function() { var onclone, referenceElement; return __generator(this, function(_a) { switch (_a.label) { case 0: this.scrolledElements.forEach(restoreNodeScroll); if (cloneWindow) { cloneWindow.scrollTo(windowSize.left, windowSize.top); if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) && (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) { this.context.logger.warn("Unable to restore scroll position for cloned document"); this.context.windowBounds = this.context.windowBounds.add(cloneWindow.scrollX - windowSize.left, cloneWindow.scrollY - windowSize.top, 0, 0); } } onclone = this.options.onclone; referenceElement = this.clonedReferenceElement; if (typeof referenceElement === "undefined") { return [2, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")]; } if (!(documentClone.fonts && documentClone.fonts.ready)) return [3, 2]; return [4, documentClone.fonts.ready]; case 1: _a.sent(); _a.label = 2; case 2: if (!/(AppleWebKit)/g.test(navigator.userAgent)) return [3, 4]; return [4, imagesReady(documentClone)]; case 3: _a.sent(); _a.label = 4; case 4: if (typeof onclone === "function") { return [2, Promise.resolve().then(function() { return onclone(documentClone, referenceElement); }).then(function() { return iframe; })]; } return [2, iframe]; } }); }); }); documentClone.open(); documentClone.write(serializeDoctype(document.doctype) + "<html></html>"); restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY); documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement); documentClone.close(); return iframeLoad; }; DocumentCloner2.prototype.createElementClone = function(node) { if (isDebugging( node, 2 /* CLONE */ )) { debugger; } if (isCanvasElement(node)) { return this.createCanvasClone(node); } if (isVideoElement(node)) { return this.createVideoClone(node); } if (isStyleElement(node)) { return this.createStyleClone(node); } var clone2 = node.cloneNode(false); if (isImageElement(clone2)) { if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) { clone2.src = node.currentSrc; clone2.srcset = ""; } if (clone2.loading === "lazy") { clone2.loading = "eager"; } } if (isCustomElement(clone2)) { return this.createCustomElementClone(clone2); } return clone2; }; DocumentCloner2.prototype.createCustomElementClone = function(node) { var clone2 = document.createElement("html2canvascustomelement"); copyCSSStyles(node.style, clone2); return clone2; }; DocumentCloner2.prototype.createStyleClone = function(node) { try { var sheet = node.sheet; if (sheet && sheet.cssRules) { var css = [].slice.call(sheet.cssRules, 0).reduce(function(css2, rule) { if (rule && typeof rule.cssText === "string") { return css2 + rule.cssText; } return css2; }, ""); var style = node.cloneNode(false); style.textContent = css; return style; } } catch (e4) { this.context.logger.error("Unable to access cssRules property", e4); if (e4.name !== "SecurityError") { throw e4; } } return node.cloneNode(false); }; DocumentCloner2.prototype.createCanvasClone = function(canvas) { var _a; if (this.options.inlineImages && canvas.ownerDocument) { var img = canvas.ownerDocument.createElement("img"); try { img.src = canvas.toDataURL(); return img; } catch (e4) { this.context.logger.info("Unable to inline canvas contents, canvas is tainted", canvas); } } var clonedCanvas = canvas.cloneNode(false); try { clonedCanvas.width = canvas.width; clonedCanvas.height = canvas.height; var ctx = canvas.getContext("2d"); var clonedCtx = clonedCanvas.getContext("2d"); if (clonedCtx) { if (!this.options.allowTaint && ctx) { clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0); } else { var gl = (_a = canvas.getContext("webgl2")) !== null && _a !== void 0 ? _a : canvas.getContext("webgl"); if (gl) { var attribs = gl.getContextAttributes(); if ((attribs === null || attribs === void 0 ? void 0 : attribs.preserveDrawingBuffer) === false) { this.context.logger.warn("Unable to clone WebGL context as it has preserveDrawingBuffer=false", canvas); } } clonedCtx.drawImage(canvas, 0, 0); } } return clonedCanvas; } catch (e4) { this.context.logger.info("Unable to clone canvas as it is tainted", canvas); } return clonedCanvas; }; DocumentCloner2.prototype.createVideoClone = function(video) { var canvas = video.ownerDocument.createElement("canvas"); canvas.width = video.offsetWidth; canvas.height = video.offsetHeight; var ctx = canvas.getContext("2d"); try { if (ctx) { ctx.drawImage(video, 0, 0, canvas.width, canvas.height); if (!this.options.allowTaint) { ctx.getImageData(0, 0, canvas.width, canvas.height); } } return canvas; } catch (e4) { this.context.logger.info("Unable to clone video as it is tainted", video); } var blankCanvas = video.ownerDocument.createElement("canvas"); blankCanvas.width = video.offsetWidth; blankCanvas.height = video.offsetHeight; return blankCanvas; }; DocumentCloner2.prototype.appendChildNode = function(clone2, child, copyStyles) { if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) { if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) { clone2.appendChild(this.cloneNode(child, copyStyles)); } } }; DocumentCloner2.prototype.cloneChildNodes = function(node, clone2, copyStyles) { var _this = this; for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) { if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") { var assignedNodes = child.assignedNodes(); if (assignedNodes.length) { assignedNodes.forEach(function(assignedNode) { return _this.appendChildNode(clone2, assignedNode, copyStyles); }); } } else { this.appendChildNode(clone2, child, copyStyles); } } }; DocumentCloner2.prototype.cloneNode = function(node, copyStyles) { if (isTextNode(node)) { return document.createTextNode(node.data); } if (!node.ownerDocument) { return node.cloneNode(false); } var window2 = node.ownerDocument.defaultView; if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) { var clone2 = this.createElementClone(node); clone2.style.transitionProperty = "none"; var style = window2.getComputedStyle(node); var styleBefore = window2.getComputedStyle(node, ":before"); var styleAfter = window2.getComputedStyle(node, ":after"); if (this.referenceElement === node && isHTMLElementNode(clone2)) { this.clonedReferenceElement = clone2; } if (isBodyElement(clone2)) { createPseudoHideStyles(clone2); } var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); var before = this.resolvePseudoContent(node, clone2, styleBefore, PseudoElementType.BEFORE); if (isCustomElement(node)) { copyStyles = true; } if (!isVideoElement(node)) { this.cloneChildNodes(node, clone2, copyStyles); } if (before) { clone2.insertBefore(before, clone2.firstChild); } var after = this.resolvePseudoContent(node, clone2, styleAfter, PseudoElementType.AFTER); if (after) { clone2.appendChild(after); } this.counters.pop(counters); if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) { copyCSSStyles(style, clone2); } if (node.scrollTop !== 0 || node.scrollLeft !== 0) { this.scrolledElements.push([clone2, node.scrollLeft, node.scrollTop]); } if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone2) || isSelectElement(clone2))) { clone2.value = node.value; } return clone2; } return node.cloneNode(false); }; DocumentCloner2.prototype.resolvePseudoContent = function(node, clone2, style, pseudoElt) { var _this = this; if (!style) { return; } var value = style.content; var document2 = clone2.ownerDocument; if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") { return; } this.counters.parse(new CSSParsedCounterDeclaration(this.context, style)); var declaration = new CSSParsedPseudoDeclaration(this.context, style); var anonymousReplacedElement = document2.createElement("html2canvaspseudoelement"); copyCSSStyles(style, anonymousReplacedElement); declaration.content.forEach(function(token) { if (token.type === 0) { anonymousReplacedElement.appendChild(document2.createTextNode(token.value)); } else if (token.type === 22) { var img = document2.createElement("img"); img.src = token.value; img.style.opacity = "1"; anonymousReplacedElement.appendChild(img); } else if (token.type === 18) { if (token.name === "attr") { var attr = token.values.filter(isIdentToken); if (attr.length) { anonymousReplacedElement.appendChild(document2.createTextNode(node.getAttribute(attr[0].value) || "")); } } else if (token.name === "counter") { var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1]; if (counter && isIdentToken(counter)) { var counterState = _this.counters.getCounterValue(counter.value); var counterType = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3; anonymousReplacedElement.appendChild(document2.createTextNode(createCounterText(counterState, counterType, false))); } } else if (token.name === "counters") { var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2]; if (counter && isIdentToken(counter)) { var counterStates = _this.counters.getCounterValues(counter.value); var counterType_1 = counterStyle && isIdentToken(counterStyle) ? listStyleType.parse(_this.context, counterStyle.value) : 3; var separator = delim && delim.type === 0 ? delim.value : ""; var text = counterStates.map(function(value2) { return createCounterText(value2, counterType_1, false); }).join(separator); anonymousReplacedElement.appendChild(document2.createTextNode(text)); } } else ; } else if (token.type === 20) { switch (token.value) { case "open-quote": anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true))); break; case "close-quote": anonymousReplacedElement.appendChild(document2.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false))); break; default: anonymousReplacedElement.appendChild(document2.createTextNode(token.value)); } } }); anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER; if (isSVGElementNode(clone2)) { clone2.className.baseValue += newClassName; } else { clone2.className += newClassName; } return anonymousReplacedElement; }; DocumentCloner2.destroy = function(container) { if (container.parentNode) { container.parentNode.removeChild(container); return true; } return false; }; return DocumentCloner2; }() ); var PseudoElementType; (function(PseudoElementType2) { PseudoElementType2[PseudoElementType2["BEFORE"] = 0] = "BEFORE"; PseudoElementType2[PseudoElementType2["AFTER"] = 1] = "AFTER"; })(PseudoElementType || (PseudoElementType = {})); var createIFrameContainer = function(ownerDocument, bounds) { var cloneIframeContainer = ownerDocument.createElement("iframe"); cloneIframeContainer.className = "html2canvas-container"; cloneIframeContainer.style.visibility = "hidden"; cloneIframeContainer.style.position = "fixed"; cloneIframeContainer.style.left = "-10000px"; cloneIframeContainer.style.top = "0px"; cloneIframeContainer.style.border = "0"; cloneIframeContainer.width = bounds.width.toString(); cloneIframeContainer.height = bounds.height.toString(); cloneIframeContainer.scrolling = "no"; cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, "true"); ownerDocument.body.appendChild(cloneIframeContainer); return cloneIframeContainer; }; var imageReady = function(img) { return new Promise(function(resolve) { if (img.complete) { resolve(); return; } if (!img.src) { resolve(); return; } img.onload = resolve; img.onerror = resolve; }); }; var imagesReady = function(document2) { return Promise.all([].slice.call(document2.images, 0).map(imageReady)); }; var iframeLoader = function(iframe) { return new Promise(function(resolve, reject) { var cloneWindow = iframe.contentWindow; if (!cloneWindow) { return reject("No window assigned for iframe"); } var documentClone = cloneWindow.document; cloneWindow.onload = iframe.onload = function() { cloneWindow.onload = iframe.onload = null; var interval = setInterval(function() { if (documentClone.body.childNodes.length > 0 && documentClone.readyState === "complete") { clearInterval(interval); resolve(iframe); } }, 50); }; }); }; var ignoredStyleProperties = [ "all", "d", "content" // Safari shows pseudoelements if content is set ]; var copyCSSStyles = function(style, target) { for (var i4 = style.length - 1; i4 >= 0; i4--) { var property = style.item(i4); if (ignoredStyleProperties.indexOf(property) === -1) { target.style.setProperty(property, style.getPropertyValue(property)); } } return target; }; var serializeDoctype = function(doctype) { var str = ""; if (doctype) { str += "<!DOCTYPE "; if (doctype.name) { str += doctype.name; } if (doctype.internalSubset) { str += doctype.internalSubset; } if (doctype.publicId) { str += '"' + doctype.publicId + '"'; } if (doctype.systemId) { str += '"' + doctype.systemId + '"'; } str += ">"; } return str; }; var restoreOwnerScroll = function(ownerDocument, x3, y3) { if (ownerDocument && ownerDocument.defaultView && (x3 !== ownerDocument.defaultView.pageXOffset || y3 !== ownerDocument.defaultView.pageYOffset)) { ownerDocument.defaultView.scrollTo(x3, y3); } }; var restoreNodeScroll = function(_a) { var element = _a[0], x3 = _a[1], y3 = _a[2]; element.scrollLeft = x3; element.scrollTop = y3; }; var PSEUDO_BEFORE = ":before"; var PSEUDO_AFTER = ":after"; var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = "___html2canvas___pseudoelement_before"; var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after"; var PSEUDO_HIDE_ELEMENT_STYLE = '{\n content: "" !important;\n display: none !important;\n}'; var createPseudoHideStyles = function(body) { createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE); }; var createStyles = function(body, styles) { var document2 = body.ownerDocument; if (document2) { var style = document2.createElement("style"); style.textContent = styles; body.appendChild(style); } }; var CacheStorage = ( /** @class */ function() { function CacheStorage2() { } CacheStorage2.getOrigin = function(url) { var link = CacheStorage2._link; if (!link) { return "about:blank"; } link.href = url; link.href = link.href; return link.protocol + link.hostname + link.port; }; CacheStorage2.isSameOrigin = function(src) { return CacheStorage2.getOrigin(src) === CacheStorage2._origin; }; CacheStorage2.setContext = function(window2) { CacheStorage2._link = window2.document.createElement("a"); CacheStorage2._origin = CacheStorage2.getOrigin(window2.location.href); }; CacheStorage2._origin = "about:blank"; return CacheStorage2; }() ); var Cache2 = ( /** @class */ function() { function Cache3(context, _options) { this.context = context; this._options = _options; this._cache = {}; } Cache3.prototype.addImage = function(src) { var result = Promise.resolve(); if (this.has(src)) { return result; } if (isBlobImage(src) || isRenderable(src)) { (this._cache[src] = this.loadImage(src)).catch(function() { }); return result; } return result; }; Cache3.prototype.match = function(src) { return this._cache[src]; }; Cache3.prototype.loadImage = function(key) { return __awaiter(this, void 0, void 0, function() { var isSameOrigin, useCORS, useProxy, src; var _this = this; return __generator(this, function(_a) { switch (_a.label) { case 0: isSameOrigin = CacheStorage.isSameOrigin(key); useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin; useProxy = !isInlineImage(key) && !isSameOrigin && !isBlobImage(key) && typeof this._options.proxy === "string" && FEATURES.SUPPORT_CORS_XHR && !useCORS; if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !isBlobImage(key) && !useProxy && !useCORS) { return [ 2 /*return*/ ]; } src = key; if (!useProxy) return [3, 2]; return [4, this.proxy(src)]; case 1: src = _a.sent(); _a.label = 2; case 2: this.context.logger.debug("Added image " + key.substring(0, 256)); return [4, new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { return resolve(img); }; img.onerror = reject; if (isInlineBase64Image(src) || useCORS) { img.crossOrigin = "anonymous"; } img.src = src; if (img.complete === true) { setTimeout(function() { return resolve(img); }, 500); } if (_this._options.imageTimeout > 0) { setTimeout(function() { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout); } })]; case 3: return [2, _a.sent()]; } }); }); }; Cache3.prototype.has = function(key) { return typeof this._cache[key] !== "undefined"; }; Cache3.prototype.keys = function() { return Promise.resolve(Object.keys(this._cache)); }; Cache3.prototype.proxy = function(src) { var _this = this; var proxy = this._options.proxy; if (!proxy) { throw new Error("No proxy defined"); } var key = src.substring(0, 256); return new Promise(function(resolve, reject) { var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? "blob" : "text"; var xhr = new XMLHttpRequest(); xhr.onload = function() { if (xhr.status === 200) { if (responseType === "text") { resolve(xhr.response); } else { var reader_1 = new FileReader(); reader_1.addEventListener("load", function() { return resolve(reader_1.result); }, false); reader_1.addEventListener("error", function(e4) { return reject(e4); }, false); reader_1.readAsDataURL(xhr.response); } } else { reject("Failed to proxy resource " + key + " with status code " + xhr.status); } }; xhr.onerror = reject; var queryString = proxy.indexOf("?") > -1 ? "&" : "?"; xhr.open("GET", "" + proxy + queryString + "url=" + encodeURIComponent(src) + "&responseType=" + responseType); if (responseType !== "text" && xhr instanceof XMLHttpRequest) { xhr.responseType = responseType; } if (_this._options.imageTimeout) { var timeout_1 = _this._options.imageTimeout; xhr.timeout = timeout_1; xhr.ontimeout = function() { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); }; } xhr.send(); }); }; return Cache3; }() ); var INLINE_SVG = /^data:image\/svg\+xml/i; var INLINE_BASE64 = /^data:image\/.*;base64,/i; var INLINE_IMG = /^data:image\/.*/i; var isRenderable = function(src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); }; var isInlineImage = function(src) { return INLINE_IMG.test(src); }; var isInlineBase64Image = function(src) { return INLINE_BASE64.test(src); }; var isBlobImage = function(src) { return src.substr(0, 4) === "blob"; }; var isSVG = function(src) { return src.substr(-3).toLowerCase() === "svg" || INLINE_SVG.test(src); }; var Vector = ( /** @class */ function() { function Vector2(x3, y3) { this.type = 0; this.x = x3; this.y = y3; } Vector2.prototype.add = function(deltaX, deltaY) { return new Vector2(this.x + deltaX, this.y + deltaY); }; return Vector2; }() ); var lerp = function(a4, b3, t3) { return new Vector(a4.x + (b3.x - a4.x) * t3, a4.y + (b3.y - a4.y) * t3); }; var BezierCurve = ( /** @class */ function() { function BezierCurve2(start5, startControl, endControl, end2) { this.type = 1; this.start = start5; this.startControl = startControl; this.endControl = endControl; this.end = end2; } BezierCurve2.prototype.subdivide = function(t3, firstHalf) { var ab = lerp(this.start, this.startControl, t3); var bc = lerp(this.startControl, this.endControl, t3); var cd = lerp(this.endControl, this.end, t3); var abbc = lerp(ab, bc, t3); var bccd = lerp(bc, cd, t3); var dest = lerp(abbc, bccd, t3); return firstHalf ? new BezierCurve2(this.start, ab, abbc, dest) : new BezierCurve2(dest, bccd, cd, this.end); }; BezierCurve2.prototype.add = function(deltaX, deltaY) { return new BezierCurve2(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY)); }; BezierCurve2.prototype.reverse = function() { return new BezierCurve2(this.end, this.endControl, this.startControl, this.start); }; return BezierCurve2; }() ); var isBezierCurve = function(path) { return path.type === 1; }; var BoundCurves = ( /** @class */ function() { function BoundCurves2(element) { var styles = element.styles; var bounds = element.bounds; var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1]; var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1]; var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1]; var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1]; var factors = []; factors.push((tlh + trh) / bounds.width); factors.push((blh + brh) / bounds.width); factors.push((tlv + blv) / bounds.height); factors.push((trv + brv) / bounds.height); var maxFactor = Math.max.apply(Math, factors); if (maxFactor > 1) { tlh /= maxFactor; tlv /= maxFactor; trh /= maxFactor; trv /= maxFactor; brh /= maxFactor; brv /= maxFactor; blh /= maxFactor; blv /= maxFactor; } var topWidth = bounds.width - trh; var rightHeight = bounds.height - brv; var bottomWidth = bounds.width - brh; var leftHeight = bounds.height - blv; var borderTopWidth2 = styles.borderTopWidth; var borderRightWidth2 = styles.borderRightWidth; var borderBottomWidth2 = styles.borderBottomWidth; var borderLeftWidth2 = styles.borderLeftWidth; var paddingTop2 = getAbsoluteValue(styles.paddingTop, element.bounds.width); var paddingRight2 = getAbsoluteValue(styles.paddingRight, element.bounds.width); var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, element.bounds.width); var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, element.bounds.width); this.topLeftBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3, tlh - borderLeftWidth2 / 3, tlv - borderTopWidth2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + borderTopWidth2 / 3); this.topRightBorderDoubleOuterBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 3, trh - borderRightWidth2 / 3, trv - borderTopWidth2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + borderTopWidth2 / 3); this.bottomRightBorderDoubleOuterBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 3, brv - borderBottomWidth2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3); this.bottomLeftBorderDoubleOuterBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 / 3, blv - borderBottomWidth2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 3, bounds.top + bounds.height - borderBottomWidth2 / 3); this.topLeftBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3, tlh - borderLeftWidth2 * 2 / 3, tlv - borderTopWidth2 * 2 / 3, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3); this.topRightBorderDoubleInnerBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 * 2 / 3, trh - borderRightWidth2 * 2 / 3, trv - borderTopWidth2 * 2 / 3, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + borderTopWidth2 * 2 / 3); this.bottomRightBorderDoubleInnerBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 * 2 / 3, brv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3); this.bottomLeftBorderDoubleInnerBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + leftHeight, blh - borderLeftWidth2 * 2 / 3, blv - borderBottomWidth2 * 2 / 3, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 * 2 / 3, bounds.top + bounds.height - borderBottomWidth2 * 2 / 3); this.topLeftBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2, tlh - borderLeftWidth2 / 2, tlv - borderTopWidth2 / 2, CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + borderTopWidth2 / 2); this.topRightBorderStroke = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top + borderTopWidth2 / 2, trh - borderRightWidth2 / 2, trv - borderTopWidth2 / 2, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + borderTopWidth2 / 2); this.bottomRightBorderStroke = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh - borderRightWidth2 / 2, brv - borderBottomWidth2 / 2, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2); this.bottomLeftBorderStroke = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 / 2, bounds.top + leftHeight, blh - borderLeftWidth2 / 2, blv - borderBottomWidth2 / 2, CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 / 2, bounds.top + bounds.height - borderBottomWidth2 / 2); this.topLeftBorderBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT) : new Vector(bounds.left, bounds.top); this.topRightBorderBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top); this.bottomRightBorderBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width, bounds.top + bounds.height); this.bottomLeftBorderBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT) : new Vector(bounds.left, bounds.top + bounds.height); this.topLeftPaddingBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2, Math.max(0, tlh - borderLeftWidth2), Math.max(0, tlv - borderTopWidth2), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + borderTopWidth2); this.topRightPaddingBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width - borderRightWidth2), bounds.top + borderTopWidth2, topWidth > bounds.width + borderRightWidth2 ? 0 : Math.max(0, trh - borderRightWidth2), Math.max(0, trv - borderTopWidth2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + borderTopWidth2); this.bottomRightPaddingBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth2), bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth2), Math.max(0, brh - borderRightWidth2), Math.max(0, brv - borderBottomWidth2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - borderRightWidth2, bounds.top + bounds.height - borderBottomWidth2); this.bottomLeftPaddingBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2, bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth2), Math.max(0, blh - borderLeftWidth2), Math.max(0, blv - borderBottomWidth2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2, bounds.top + bounds.height - borderBottomWidth2); this.topLeftContentBox = tlh > 0 || tlv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2, Math.max(0, tlh - (borderLeftWidth2 + paddingLeft2)), Math.max(0, tlv - (borderTopWidth2 + paddingTop2)), CORNER.TOP_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + borderTopWidth2 + paddingTop2); this.topRightContentBox = trh > 0 || trv > 0 ? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth2 + paddingLeft2), bounds.top + borderTopWidth2 + paddingTop2, topWidth > bounds.width + borderLeftWidth2 + paddingLeft2 ? 0 : trh - borderLeftWidth2 + paddingLeft2, trv - (borderTopWidth2 + paddingTop2), CORNER.TOP_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + borderTopWidth2 + paddingTop2); this.bottomRightContentBox = brh > 0 || brv > 0 ? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth2 + paddingLeft2)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth2 + paddingTop2), Math.max(0, brh - (borderRightWidth2 + paddingRight2)), brv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_RIGHT) : new Vector(bounds.left + bounds.width - (borderRightWidth2 + paddingRight2), bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)); this.bottomLeftContentBox = blh > 0 || blv > 0 ? getCurvePoints(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth2 + paddingLeft2)), blv - (borderBottomWidth2 + paddingBottom2), CORNER.BOTTOM_LEFT) : new Vector(bounds.left + borderLeftWidth2 + paddingLeft2, bounds.top + bounds.height - (borderBottomWidth2 + paddingBottom2)); } return BoundCurves2; }() ); var CORNER; (function(CORNER2) { CORNER2[CORNER2["TOP_LEFT"] = 0] = "TOP_LEFT"; CORNER2[CORNER2["TOP_RIGHT"] = 1] = "TOP_RIGHT"; CORNER2[CORNER2["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT"; CORNER2[CORNER2["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT"; })(CORNER || (CORNER = {})); var getCurvePoints = function(x3, y3, r1, r22, position2) { var kappa = 4 * ((Math.sqrt(2) - 1) / 3); var ox = r1 * kappa; var oy = r22 * kappa; var xm = x3 + r1; var ym = y3 + r22; switch (position2) { case CORNER.TOP_LEFT: return new BezierCurve(new Vector(x3, ym), new Vector(x3, ym - oy), new Vector(xm - ox, y3), new Vector(xm, y3)); case CORNER.TOP_RIGHT: return new BezierCurve(new Vector(x3, y3), new Vector(x3 + ox, y3), new Vector(xm, ym - oy), new Vector(xm, ym)); case CORNER.BOTTOM_RIGHT: return new BezierCurve(new Vector(xm, y3), new Vector(xm, y3 + oy), new Vector(x3 + ox, ym), new Vector(x3, ym)); case CORNER.BOTTOM_LEFT: default: return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x3, y3 + oy), new Vector(x3, y3)); } }; var calculateBorderBoxPath = function(curves) { return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox]; }; var calculateContentBoxPath = function(curves) { return [ curves.topLeftContentBox, curves.topRightContentBox, curves.bottomRightContentBox, curves.bottomLeftContentBox ]; }; var calculatePaddingBoxPath = function(curves) { return [ curves.topLeftPaddingBox, curves.topRightPaddingBox, curves.bottomRightPaddingBox, curves.bottomLeftPaddingBox ]; }; var TransformEffect = ( /** @class */ function() { function TransformEffect2(offsetX, offsetY, matrix2) { this.offsetX = offsetX; this.offsetY = offsetY; this.matrix = matrix2; this.type = 0; this.target = 2 | 4; } return TransformEffect2; }() ); var ClipEffect = ( /** @class */ function() { function ClipEffect2(path, target) { this.path = path; this.target = target; this.type = 1; } return ClipEffect2; }() ); var OpacityEffect = ( /** @class */ function() { function OpacityEffect2(opacity2) { this.opacity = opacity2; this.type = 2; this.target = 2 | 4; } return OpacityEffect2; }() ); var isTransformEffect = function(effect7) { return effect7.type === 0; }; var isClipEffect = function(effect7) { return effect7.type === 1; }; var isOpacityEffect = function(effect7) { return effect7.type === 2; }; var equalPath = function(a4, b3) { if (a4.length === b3.length) { return a4.some(function(v3, i4) { return v3 === b3[i4]; }); } return false; }; var transformPath = function(path, deltaX, deltaY, deltaW, deltaH) { return path.map(function(point, index) { switch (index) { case 0: return point.add(deltaX, deltaY); case 1: return point.add(deltaX + deltaW, deltaY); case 2: return point.add(deltaX + deltaW, deltaY + deltaH); case 3: return point.add(deltaX, deltaY + deltaH); } return point; }); }; var StackingContext = ( /** @class */ function() { function StackingContext2(container) { this.element = container; this.inlineLevel = []; this.nonInlineLevel = []; this.negativeZIndex = []; this.zeroOrAutoZIndexOrTransformedOrOpacity = []; this.positiveZIndex = []; this.nonPositionedFloats = []; this.nonPositionedInlineLevel = []; } return StackingContext2; }() ); var ElementPaint = ( /** @class */ function() { function ElementPaint2(container, parent) { this.container = container; this.parent = parent; this.effects = []; this.curves = new BoundCurves(this.container); if (this.container.styles.opacity < 1) { this.effects.push(new OpacityEffect(this.container.styles.opacity)); } if (this.container.styles.transform !== null) { var offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number; var offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number; var matrix2 = this.container.styles.transform; this.effects.push(new TransformEffect(offsetX, offsetY, matrix2)); } if (this.container.styles.overflowX !== 0) { var borderBox = calculateBorderBoxPath(this.curves); var paddingBox2 = calculatePaddingBoxPath(this.curves); if (equalPath(borderBox, paddingBox2)) { this.effects.push(new ClipEffect( borderBox, 2 | 4 /* CONTENT */ )); } else { this.effects.push(new ClipEffect( borderBox, 2 /* BACKGROUND_BORDERS */ )); this.effects.push(new ClipEffect( paddingBox2, 4 /* CONTENT */ )); } } } ElementPaint2.prototype.getEffects = function(target) { var inFlow = [ 2, 3 /* FIXED */ ].indexOf(this.container.styles.position) === -1; var parent = this.parent; var effects = this.effects.slice(0); while (parent) { var croplessEffects = parent.effects.filter(function(effect7) { return !isClipEffect(effect7); }); if (inFlow || parent.container.styles.position !== 0 || !parent.parent) { effects.unshift.apply(effects, croplessEffects); inFlow = [ 2, 3 /* FIXED */ ].indexOf(parent.container.styles.position) === -1; if (parent.container.styles.overflowX !== 0) { var borderBox = calculateBorderBoxPath(parent.curves); var paddingBox2 = calculatePaddingBoxPath(parent.curves); if (!equalPath(borderBox, paddingBox2)) { effects.unshift(new ClipEffect( paddingBox2, 2 | 4 /* CONTENT */ )); } } } else { effects.unshift.apply(effects, croplessEffects); } parent = parent.parent; } return effects.filter(function(effect7) { return contains2(effect7.target, target); }); }; return ElementPaint2; }() ); var parseStackTree = function(parent, stackingContext, realStackingContext, listItems) { parent.container.elements.forEach(function(child) { var treatAsRealStackingContext = contains2( child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */ ); var createsStackingContext2 = contains2( child.flags, 2 /* CREATES_STACKING_CONTEXT */ ); var paintContainer = new ElementPaint(child, parent); if (contains2( child.styles.display, 2048 /* LIST_ITEM */ )) { listItems.push(paintContainer); } var listOwnerItems = contains2( child.flags, 8 /* IS_LIST_OWNER */ ) ? [] : listItems; if (treatAsRealStackingContext || createsStackingContext2) { var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext; var stack = new StackingContext(paintContainer); if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) { var order_1 = child.styles.zIndex.order; if (order_1 < 0) { var index_1 = 0; parentStack.negativeZIndex.some(function(current, i4) { if (order_1 > current.element.container.styles.zIndex.order) { index_1 = i4; return false; } else if (index_1 > 0) { return true; } return false; }); parentStack.negativeZIndex.splice(index_1, 0, stack); } else if (order_1 > 0) { var index_2 = 0; parentStack.positiveZIndex.some(function(current, i4) { if (order_1 >= current.element.container.styles.zIndex.order) { index_2 = i4 + 1; return false; } else if (index_2 > 0) { return true; } return false; }); parentStack.positiveZIndex.splice(index_2, 0, stack); } else { parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack); } } else { if (child.styles.isFloating()) { parentStack.nonPositionedFloats.push(stack); } else { parentStack.nonPositionedInlineLevel.push(stack); } } parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems); } else { if (child.styles.isInlineLevel()) { stackingContext.inlineLevel.push(paintContainer); } else { stackingContext.nonInlineLevel.push(paintContainer); } parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems); } if (contains2( child.flags, 8 /* IS_LIST_OWNER */ )) { processListItems(child, listOwnerItems); } }); }; var processListItems = function(owner, elements) { var numbering = owner instanceof OLElementContainer ? owner.start : 1; var reversed = owner instanceof OLElementContainer ? owner.reversed : false; for (var i4 = 0; i4 < elements.length; i4++) { var item = elements[i4]; if (item.container instanceof LIElementContainer && typeof item.container.value === "number" && item.container.value !== 0) { numbering = item.container.value; } item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true); numbering += reversed ? -1 : 1; } }; var parseStackingContexts = function(container) { var paintContainer = new ElementPaint(container, null); var root = new StackingContext(paintContainer); var listItems = []; parseStackTree(paintContainer, root, root, listItems); processListItems(paintContainer.container, listItems); return root; }; var parsePathForBorder = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox); case 1: return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox); case 2: return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox); } }; var parsePathForBorderDoubleOuter = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox, curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox); case 1: return createPathFromCurves(curves.topRightBorderBox, curves.topRightBorderDoubleOuterBox, curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox); case 2: return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightBorderDoubleOuterBox, curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftBorderDoubleOuterBox, curves.topLeftBorderBox, curves.topLeftBorderDoubleOuterBox); } }; var parsePathForBorderDoubleInner = function(curves, borderSide) { switch (borderSide) { case 0: return createPathFromCurves(curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox, curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox); case 1: return createPathFromCurves(curves.topRightBorderDoubleInnerBox, curves.topRightPaddingBox, curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox); case 2: return createPathFromCurves(curves.bottomRightBorderDoubleInnerBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox); case 3: default: return createPathFromCurves(curves.bottomLeftBorderDoubleInnerBox, curves.bottomLeftPaddingBox, curves.topLeftBorderDoubleInnerBox, curves.topLeftPaddingBox); } }; var parsePathForBorderStroke = function(curves, borderSide) { switch (borderSide) { case 0: return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke); case 1: return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke); case 2: return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke); case 3: default: return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke); } }; var createStrokePathFromCurves = function(outer1, outer2) { var path = []; if (isBezierCurve(outer1)) { path.push(outer1.subdivide(0.5, false)); } else { path.push(outer1); } if (isBezierCurve(outer2)) { path.push(outer2.subdivide(0.5, true)); } else { path.push(outer2); } return path; }; var createPathFromCurves = function(outer1, inner1, outer2, inner2) { var path = []; if (isBezierCurve(outer1)) { path.push(outer1.subdivide(0.5, false)); } else { path.push(outer1); } if (isBezierCurve(outer2)) { path.push(outer2.subdivide(0.5, true)); } else { path.push(outer2); } if (isBezierCurve(inner2)) { path.push(inner2.subdivide(0.5, true).reverse()); } else { path.push(inner2); } if (isBezierCurve(inner1)) { path.push(inner1.subdivide(0.5, false).reverse()); } else { path.push(inner1); } return path; }; var paddingBox = function(element) { var bounds = element.bounds; var styles = element.styles; return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth)); }; var contentBox = function(element) { var styles = element.styles; var bounds = element.bounds; var paddingLeft2 = getAbsoluteValue(styles.paddingLeft, bounds.width); var paddingRight2 = getAbsoluteValue(styles.paddingRight, bounds.width); var paddingTop2 = getAbsoluteValue(styles.paddingTop, bounds.width); var paddingBottom2 = getAbsoluteValue(styles.paddingBottom, bounds.width); return bounds.add(paddingLeft2 + styles.borderLeftWidth, paddingTop2 + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft2 + paddingRight2), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop2 + paddingBottom2)); }; var calculateBackgroundPositioningArea = function(backgroundOrigin2, element) { if (backgroundOrigin2 === 0) { return element.bounds; } if (backgroundOrigin2 === 2) { return contentBox(element); } return paddingBox(element); }; var calculateBackgroundPaintingArea = function(backgroundClip2, element) { if (backgroundClip2 === 0) { return element.bounds; } if (backgroundClip2 === 2) { return contentBox(element); } return paddingBox(element); }; var calculateBackgroundRendering = function(container, index, intrinsicSize) { var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container); var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container); var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea); var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1]; var position2 = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight); var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position2, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea); var offsetX = Math.round(backgroundPositioningArea.left + position2[0]); var offsetY = Math.round(backgroundPositioningArea.top + position2[1]); return [path, offsetX, offsetY, sizeWidth, sizeHeight]; }; var isAuto = function(token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; }; var hasIntrinsicValue = function(value) { return typeof value === "number"; }; var calculateBackgroundSize = function(size2, _a, bounds) { var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2]; var first = size2[0], second = size2[1]; if (!first) { return [0, 0]; } if (isLengthPercentage(first) && second && isLengthPercentage(second)) { return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)]; } var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion); if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) { if (hasIntrinsicValue(intrinsicProportion)) { var targetRatio = bounds.width / bounds.height; return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER) ? [bounds.width, bounds.width / intrinsicProportion] : [bounds.height * intrinsicProportion, bounds.height]; } return [bounds.width, bounds.height]; } var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth); var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight); var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight; if (isAuto(first) && (!second || isAuto(second))) { if (hasIntrinsicWidth && hasIntrinsicHeight) { return [intrinsicWidth, intrinsicHeight]; } if (!hasIntrinsicProportion && !hasIntrinsicDimensions) { return [bounds.width, bounds.height]; } if (hasIntrinsicDimensions && hasIntrinsicProportion) { var width_1 = hasIntrinsicWidth ? intrinsicWidth : intrinsicHeight * intrinsicProportion; var height_1 = hasIntrinsicHeight ? intrinsicHeight : intrinsicWidth / intrinsicProportion; return [width_1, height_1]; } var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width; var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height; return [width_2, height_2]; } if (hasIntrinsicProportion) { var width_3 = 0; var height_3 = 0; if (isLengthPercentage(first)) { width_3 = getAbsoluteValue(first, bounds.width); } else if (isLengthPercentage(second)) { height_3 = getAbsoluteValue(second, bounds.height); } if (isAuto(first)) { width_3 = height_3 * intrinsicProportion; } else if (!second || isAuto(second)) { height_3 = width_3 / intrinsicProportion; } return [width_3, height_3]; } var width = null; var height = null; if (isLengthPercentage(first)) { width = getAbsoluteValue(first, bounds.width); } else if (second && isLengthPercentage(second)) { height = getAbsoluteValue(second, bounds.height); } if (width !== null && (!second || isAuto(second))) { height = hasIntrinsicWidth && hasIntrinsicHeight ? width / intrinsicWidth * intrinsicHeight : bounds.height; } if (height !== null && isAuto(first)) { width = hasIntrinsicWidth && hasIntrinsicHeight ? height / intrinsicHeight * intrinsicWidth : bounds.width; } if (width !== null && height !== null) { return [width, height]; } throw new Error("Unable to calculate background-size for element"); }; var getBackgroundValueForIndex = function(values, index) { var value = values[index]; if (typeof value === "undefined") { return values[0]; } return value; }; var calculateBackgroundRepeatPath = function(repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) { var x3 = _a[0], y3 = _a[1]; var width = _b[0], height = _b[1]; switch (repeat) { case 2: return [ new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y3)) ]; case 3: return [ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)), new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)) ]; case 1: return [ new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3)), new Vector(Math.round(backgroundPositioningArea.left + x3 + width), Math.round(backgroundPositioningArea.top + y3 + height)), new Vector(Math.round(backgroundPositioningArea.left + x3), Math.round(backgroundPositioningArea.top + y3 + height)) ]; default: return [ new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)), new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)) ]; } }; var SMALL_IMAGE = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; var SAMPLE_TEXT = "Hidden Text"; var FontMetrics = ( /** @class */ function() { function FontMetrics2(document2) { this._data = {}; this._document = document2; } FontMetrics2.prototype.parseMetrics = function(fontFamily2, fontSize2) { var container = this._document.createElement("div"); var img = this._document.createElement("img"); var span = this._document.createElement("span"); var body = this._document.body; container.style.visibility = "hidden"; container.style.fontFamily = fontFamily2; container.style.fontSize = fontSize2; container.style.margin = "0"; container.style.padding = "0"; container.style.whiteSpace = "nowrap"; body.appendChild(container); img.src = SMALL_IMAGE; img.width = 1; img.height = 1; img.style.margin = "0"; img.style.padding = "0"; img.style.verticalAlign = "baseline"; span.style.fontFamily = fontFamily2; span.style.fontSize = fontSize2; span.style.margin = "0"; span.style.padding = "0"; span.appendChild(this._document.createTextNode(SAMPLE_TEXT)); container.appendChild(span); container.appendChild(img); var baseline = img.offsetTop - span.offsetTop + 2; container.removeChild(span); container.appendChild(this._document.createTextNode(SAMPLE_TEXT)); container.style.lineHeight = "normal"; img.style.verticalAlign = "super"; var middle = img.offsetTop - container.offsetTop + 2; body.removeChild(container); return { baseline, middle }; }; FontMetrics2.prototype.getMetrics = function(fontFamily2, fontSize2) { var key = fontFamily2 + " " + fontSize2; if (typeof this._data[key] === "undefined") { this._data[key] = this.parseMetrics(fontFamily2, fontSize2); } return this._data[key]; }; return FontMetrics2; }() ); var Renderer2 = ( /** @class */ function() { function Renderer3(context, options) { this.context = context; this.options = options; } return Renderer3; }() ); var MASK_OFFSET = 1e4; var CanvasRenderer = ( /** @class */ function(_super) { __extends(CanvasRenderer2, _super); function CanvasRenderer2(context, options) { var _this = _super.call(this, context, options) || this; _this._activeEffects = []; _this.canvas = options.canvas ? options.canvas : document.createElement("canvas"); _this.ctx = _this.canvas.getContext("2d"); if (!options.canvas) { _this.canvas.width = Math.floor(options.width * options.scale); _this.canvas.height = Math.floor(options.height * options.scale); _this.canvas.style.width = options.width + "px"; _this.canvas.style.height = options.height + "px"; } _this.fontMetrics = new FontMetrics(document); _this.ctx.scale(_this.options.scale, _this.options.scale); _this.ctx.translate(-options.x, -options.y); _this.ctx.textBaseline = "bottom"; _this._activeEffects = []; _this.context.logger.debug("Canvas renderer initialized (" + options.width + "x" + options.height + ") with scale " + options.scale); return _this; } CanvasRenderer2.prototype.applyEffects = function(effects) { var _this = this; while (this._activeEffects.length) { this.popEffect(); } effects.forEach(function(effect7) { return _this.applyEffect(effect7); }); }; CanvasRenderer2.prototype.applyEffect = function(effect7) { this.ctx.save(); if (isOpacityEffect(effect7)) { this.ctx.globalAlpha = effect7.opacity; } if (isTransformEffect(effect7)) { this.ctx.translate(effect7.offsetX, effect7.offsetY); this.ctx.transform(effect7.matrix[0], effect7.matrix[1], effect7.matrix[2], effect7.matrix[3], effect7.matrix[4], effect7.matrix[5]); this.ctx.translate(-effect7.offsetX, -effect7.offsetY); } if (isClipEffect(effect7)) { this.path(effect7.path); this.ctx.clip(); } this._activeEffects.push(effect7); }; CanvasRenderer2.prototype.popEffect = function() { this._activeEffects.pop(); this.ctx.restore(); }; CanvasRenderer2.prototype.renderStack = function(stack) { return __awaiter(this, void 0, void 0, function() { var styles; return __generator(this, function(_a) { switch (_a.label) { case 0: styles = stack.element.container.styles; if (!styles.isVisible()) return [3, 2]; return [4, this.renderStackContent(stack)]; case 1: _a.sent(); _a.label = 2; case 2: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderNode = function(paint) { return __awaiter(this, void 0, void 0, function() { return __generator(this, function(_a) { switch (_a.label) { case 0: if (contains2( paint.container.flags, 16 /* DEBUG_RENDER */ )) { debugger; } if (!paint.container.styles.isVisible()) return [3, 3]; return [4, this.renderNodeBackgroundAndBorders(paint)]; case 1: _a.sent(); return [4, this.renderNodeContent(paint)]; case 2: _a.sent(); _a.label = 3; case 3: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderTextWithLetterSpacing = function(text, letterSpacing2, baseline) { var _this = this; if (letterSpacing2 === 0) { this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline); } else { var letters = segmentGraphemes(text.text); letters.reduce(function(left2, letter) { _this.ctx.fillText(letter, left2, text.bounds.top + baseline); return left2 + _this.ctx.measureText(letter).width; }, text.bounds.left); } }; CanvasRenderer2.prototype.createFontStyle = function(styles) { var fontVariant2 = styles.fontVariant.filter(function(variant) { return variant === "normal" || variant === "small-caps"; }).join(""); var fontFamily2 = fixIOSSystemFonts(styles.fontFamily).join(", "); var fontSize2 = isDimensionToken(styles.fontSize) ? "" + styles.fontSize.number + styles.fontSize.unit : styles.fontSize.number + "px"; return [ [styles.fontStyle, fontVariant2, styles.fontWeight, fontSize2, fontFamily2].join(" "), fontFamily2, fontSize2 ]; }; CanvasRenderer2.prototype.renderTextNode = function(text, styles) { return __awaiter(this, void 0, void 0, function() { var _a, font, fontFamily2, fontSize2, _b, baseline, middle, paintOrder2; var _this = this; return __generator(this, function(_c) { _a = this.createFontStyle(styles), font = _a[0], fontFamily2 = _a[1], fontSize2 = _a[2]; this.ctx.font = font; this.ctx.direction = styles.direction === 1 ? "rtl" : "ltr"; this.ctx.textAlign = "left"; this.ctx.textBaseline = "alphabetic"; _b = this.fontMetrics.getMetrics(fontFamily2, fontSize2), baseline = _b.baseline, middle = _b.middle; paintOrder2 = styles.paintOrder; text.textBounds.forEach(function(text2) { paintOrder2.forEach(function(paintOrderLayer) { switch (paintOrderLayer) { case 0: _this.ctx.fillStyle = asString(styles.color); _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline); var textShadows = styles.textShadow; if (textShadows.length && text2.text.trim().length) { textShadows.slice(0).reverse().forEach(function(textShadow2) { _this.ctx.shadowColor = asString(textShadow2.color); _this.ctx.shadowOffsetX = textShadow2.offsetX.number * _this.options.scale; _this.ctx.shadowOffsetY = textShadow2.offsetY.number * _this.options.scale; _this.ctx.shadowBlur = textShadow2.blur.number; _this.renderTextWithLetterSpacing(text2, styles.letterSpacing, baseline); }); _this.ctx.shadowColor = ""; _this.ctx.shadowOffsetX = 0; _this.ctx.shadowOffsetY = 0; _this.ctx.shadowBlur = 0; } if (styles.textDecorationLine.length) { _this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color); styles.textDecorationLine.forEach(function(textDecorationLine2) { switch (textDecorationLine2) { case 1: _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top + baseline), text2.bounds.width, 1); break; case 2: _this.ctx.fillRect(text2.bounds.left, Math.round(text2.bounds.top), text2.bounds.width, 1); break; case 3: _this.ctx.fillRect(text2.bounds.left, Math.ceil(text2.bounds.top + middle), text2.bounds.width, 1); break; } }); } break; case 1: if (styles.webkitTextStrokeWidth && text2.text.trim().length) { _this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor); _this.ctx.lineWidth = styles.webkitTextStrokeWidth; _this.ctx.lineJoin = !!window.chrome ? "miter" : "round"; _this.ctx.strokeText(text2.text, text2.bounds.left, text2.bounds.top + baseline); } _this.ctx.strokeStyle = ""; _this.ctx.lineWidth = 0; _this.ctx.lineJoin = "miter"; break; } }); }); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.renderReplacedElement = function(container, curves, image2) { if (image2 && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) { var box = contentBox(container); var path = calculatePaddingBoxPath(curves); this.path(path); this.ctx.save(); this.ctx.clip(); this.ctx.drawImage(image2, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height); this.ctx.restore(); } }; CanvasRenderer2.prototype.renderNodeContent = function(paint) { return __awaiter(this, void 0, void 0, function() { var container, curves, styles, _i, _a, child, image2, image2, iframeRenderer, canvas, size2, _b, fontFamily2, fontSize2, baseline, bounds, x3, textBounds, img, image2, url, fontFamily2, bounds; return __generator(this, function(_c) { switch (_c.label) { case 0: this.applyEffects(paint.getEffects( 4 /* CONTENT */ )); container = paint.container; curves = paint.curves; styles = container.styles; _i = 0, _a = container.textNodes; _c.label = 1; case 1: if (!(_i < _a.length)) return [3, 4]; child = _a[_i]; return [4, this.renderTextNode(child, styles)]; case 2: _c.sent(); _c.label = 3; case 3: _i++; return [3, 1]; case 4: if (!(container instanceof ImageElementContainer)) return [3, 8]; _c.label = 5; case 5: _c.trys.push([5, 7, , 8]); return [4, this.context.cache.match(container.src)]; case 6: image2 = _c.sent(); this.renderReplacedElement(container, curves, image2); return [3, 8]; case 7: _c.sent(); this.context.logger.error("Error loading image " + container.src); return [3, 8]; case 8: if (container instanceof CanvasElementContainer) { this.renderReplacedElement(container, curves, container.canvas); } if (!(container instanceof SVGElementContainer)) return [3, 12]; _c.label = 9; case 9: _c.trys.push([9, 11, , 12]); return [4, this.context.cache.match(container.svg)]; case 10: image2 = _c.sent(); this.renderReplacedElement(container, curves, image2); return [3, 12]; case 11: _c.sent(); this.context.logger.error("Error loading svg " + container.svg.substring(0, 255)); return [3, 12]; case 12: if (!(container instanceof IFrameElementContainer && container.tree)) return [3, 14]; iframeRenderer = new CanvasRenderer2(this.context, { scale: this.options.scale, backgroundColor: container.backgroundColor, x: 0, y: 0, width: container.width, height: container.height }); return [4, iframeRenderer.render(container.tree)]; case 13: canvas = _c.sent(); if (container.width && container.height) { this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height); } _c.label = 14; case 14: if (container instanceof InputElementContainer) { size2 = Math.min(container.bounds.width, container.bounds.height); if (container.type === CHECKBOX) { if (container.checked) { this.ctx.save(); this.path([ new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79), new Vector(container.bounds.left + size2 * 0.16, container.bounds.top + size2 * 0.5549), new Vector(container.bounds.left + size2 * 0.27347, container.bounds.top + size2 * 0.44071), new Vector(container.bounds.left + size2 * 0.39694, container.bounds.top + size2 * 0.5649), new Vector(container.bounds.left + size2 * 0.72983, container.bounds.top + size2 * 0.23), new Vector(container.bounds.left + size2 * 0.84, container.bounds.top + size2 * 0.34085), new Vector(container.bounds.left + size2 * 0.39363, container.bounds.top + size2 * 0.79) ]); this.ctx.fillStyle = asString(INPUT_COLOR); this.ctx.fill(); this.ctx.restore(); } } else if (container.type === RADIO) { if (container.checked) { this.ctx.save(); this.ctx.beginPath(); this.ctx.arc(container.bounds.left + size2 / 2, container.bounds.top + size2 / 2, size2 / 4, 0, Math.PI * 2, true); this.ctx.fillStyle = asString(INPUT_COLOR); this.ctx.fill(); this.ctx.restore(); } } } if (isTextInputElement(container) && container.value.length) { _b = this.createFontStyle(styles), fontFamily2 = _b[0], fontSize2 = _b[1]; baseline = this.fontMetrics.getMetrics(fontFamily2, fontSize2).baseline; this.ctx.font = fontFamily2; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = "alphabetic"; this.ctx.textAlign = canvasTextAlign(container.styles.textAlign); bounds = contentBox(container); x3 = 0; switch (container.styles.textAlign) { case 1: x3 += bounds.width / 2; break; case 2: x3 += bounds.width; break; } textBounds = bounds.add(x3, 0, 0, -bounds.height / 2 + 1); this.ctx.save(); this.path([ new Vector(bounds.left, bounds.top), new Vector(bounds.left + bounds.width, bounds.top), new Vector(bounds.left + bounds.width, bounds.top + bounds.height), new Vector(bounds.left, bounds.top + bounds.height) ]); this.ctx.clip(); this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing, baseline); this.ctx.restore(); this.ctx.textBaseline = "alphabetic"; this.ctx.textAlign = "left"; } if (!contains2( container.styles.display, 2048 /* LIST_ITEM */ )) return [3, 20]; if (!(container.styles.listStyleImage !== null)) return [3, 19]; img = container.styles.listStyleImage; if (!(img.type === 0)) return [3, 18]; image2 = void 0; url = img.url; _c.label = 15; case 15: _c.trys.push([15, 17, , 18]); return [4, this.context.cache.match(url)]; case 16: image2 = _c.sent(); this.ctx.drawImage(image2, container.bounds.left - (image2.width + 10), container.bounds.top); return [3, 18]; case 17: _c.sent(); this.context.logger.error("Error loading list-style-image " + url); return [3, 18]; case 18: return [3, 20]; case 19: if (paint.listValue && container.styles.listStyleType !== -1) { fontFamily2 = this.createFontStyle(styles)[0]; this.ctx.font = fontFamily2; this.ctx.fillStyle = asString(styles.color); this.ctx.textBaseline = "middle"; this.ctx.textAlign = "right"; bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1); this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2); this.ctx.textBaseline = "bottom"; this.ctx.textAlign = "left"; } _c.label = 20; case 20: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderStackContent = function(stack) { return __awaiter(this, void 0, void 0, function() { var _i, _a, child, _b, _c, child, _d, _e2, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child; return __generator(this, function(_p) { switch (_p.label) { case 0: if (contains2( stack.element.container.flags, 16 /* DEBUG_RENDER */ )) { debugger; } return [4, this.renderNodeBackgroundAndBorders(stack.element)]; case 1: _p.sent(); _i = 0, _a = stack.negativeZIndex; _p.label = 2; case 2: if (!(_i < _a.length)) return [3, 5]; child = _a[_i]; return [4, this.renderStack(child)]; case 3: _p.sent(); _p.label = 4; case 4: _i++; return [3, 2]; case 5: return [4, this.renderNodeContent(stack.element)]; case 6: _p.sent(); _b = 0, _c = stack.nonInlineLevel; _p.label = 7; case 7: if (!(_b < _c.length)) return [3, 10]; child = _c[_b]; return [4, this.renderNode(child)]; case 8: _p.sent(); _p.label = 9; case 9: _b++; return [3, 7]; case 10: _d = 0, _e2 = stack.nonPositionedFloats; _p.label = 11; case 11: if (!(_d < _e2.length)) return [3, 14]; child = _e2[_d]; return [4, this.renderStack(child)]; case 12: _p.sent(); _p.label = 13; case 13: _d++; return [3, 11]; case 14: _f = 0, _g = stack.nonPositionedInlineLevel; _p.label = 15; case 15: if (!(_f < _g.length)) return [3, 18]; child = _g[_f]; return [4, this.renderStack(child)]; case 16: _p.sent(); _p.label = 17; case 17: _f++; return [3, 15]; case 18: _h = 0, _j = stack.inlineLevel; _p.label = 19; case 19: if (!(_h < _j.length)) return [3, 22]; child = _j[_h]; return [4, this.renderNode(child)]; case 20: _p.sent(); _p.label = 21; case 21: _h++; return [3, 19]; case 22: _k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity; _p.label = 23; case 23: if (!(_k < _l.length)) return [3, 26]; child = _l[_k]; return [4, this.renderStack(child)]; case 24: _p.sent(); _p.label = 25; case 25: _k++; return [3, 23]; case 26: _m = 0, _o = stack.positiveZIndex; _p.label = 27; case 27: if (!(_m < _o.length)) return [3, 30]; child = _o[_m]; return [4, this.renderStack(child)]; case 28: _p.sent(); _p.label = 29; case 29: _m++; return [3, 27]; case 30: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.mask = function(paths) { this.ctx.beginPath(); this.ctx.moveTo(0, 0); this.ctx.lineTo(this.canvas.width, 0); this.ctx.lineTo(this.canvas.width, this.canvas.height); this.ctx.lineTo(0, this.canvas.height); this.ctx.lineTo(0, 0); this.formatPath(paths.slice(0).reverse()); this.ctx.closePath(); }; CanvasRenderer2.prototype.path = function(paths) { this.ctx.beginPath(); this.formatPath(paths); this.ctx.closePath(); }; CanvasRenderer2.prototype.formatPath = function(paths) { var _this = this; paths.forEach(function(point, index) { var start5 = isBezierCurve(point) ? point.start : point; if (index === 0) { _this.ctx.moveTo(start5.x, start5.y); } else { _this.ctx.lineTo(start5.x, start5.y); } if (isBezierCurve(point)) { _this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y); } }); }; CanvasRenderer2.prototype.renderRepeat = function(path, pattern, offsetX, offsetY) { this.path(path); this.ctx.fillStyle = pattern; this.ctx.translate(offsetX, offsetY); this.ctx.fill(); this.ctx.translate(-offsetX, -offsetY); }; CanvasRenderer2.prototype.resizeImage = function(image2, width, height) { var _a; if (image2.width === width && image2.height === height) { return image2; } var ownerDocument = (_a = this.canvas.ownerDocument) !== null && _a !== void 0 ? _a : document; var canvas = ownerDocument.createElement("canvas"); canvas.width = Math.max(1, width); canvas.height = Math.max(1, height); var ctx = canvas.getContext("2d"); ctx.drawImage(image2, 0, 0, image2.width, image2.height, 0, 0, width, height); return canvas; }; CanvasRenderer2.prototype.renderBackgroundImage = function(container) { return __awaiter(this, void 0, void 0, function() { var index, _loop_1, this_1, _i, _a, backgroundImage2; return __generator(this, function(_b) { switch (_b.label) { case 0: index = container.styles.backgroundImage.length - 1; _loop_1 = function(backgroundImage3) { var image2, url, _c, path, x3, y3, width, height, pattern, _d, path, x3, y3, width, height, _e2, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _f, path, left2, top_1, width, height, position2, x3, y3, _g, rx, ry, radialGradient_1, midX, midY, f4, invF; return __generator(this, function(_h) { switch (_h.label) { case 0: if (!(backgroundImage3.type === 0)) return [3, 5]; image2 = void 0; url = backgroundImage3.url; _h.label = 1; case 1: _h.trys.push([1, 3, , 4]); return [4, this_1.context.cache.match(url)]; case 2: image2 = _h.sent(); return [3, 4]; case 3: _h.sent(); this_1.context.logger.error("Error loading background-image " + url); return [3, 4]; case 4: if (image2) { _c = calculateBackgroundRendering(container, index, [ image2.width, image2.height, image2.width / image2.height ]), path = _c[0], x3 = _c[1], y3 = _c[2], width = _c[3], height = _c[4]; pattern = this_1.ctx.createPattern(this_1.resizeImage(image2, width, height), "repeat"); this_1.renderRepeat(path, pattern, x3, y3); } return [3, 6]; case 5: if (isLinearGradient(backgroundImage3)) { _d = calculateBackgroundRendering(container, index, [null, null, null]), path = _d[0], x3 = _d[1], y3 = _d[2], width = _d[3], height = _d[4]; _e2 = calculateGradientDirection(backgroundImage3.angle, width, height), lineLength = _e2[0], x0 = _e2[1], x1 = _e2[2], y0 = _e2[3], y1 = _e2[4]; canvas = document.createElement("canvas"); canvas.width = width; canvas.height = height; ctx = canvas.getContext("2d"); gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1); processColorStops(backgroundImage3.stops, lineLength).forEach(function(colorStop) { return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color)); }); ctx.fillStyle = gradient_1; ctx.fillRect(0, 0, width, height); if (width > 0 && height > 0) { pattern = this_1.ctx.createPattern(canvas, "repeat"); this_1.renderRepeat(path, pattern, x3, y3); } } else if (isRadialGradient(backgroundImage3)) { _f = calculateBackgroundRendering(container, index, [ null, null, null ]), path = _f[0], left2 = _f[1], top_1 = _f[2], width = _f[3], height = _f[4]; position2 = backgroundImage3.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage3.position; x3 = getAbsoluteValue(position2[0], width); y3 = getAbsoluteValue(position2[position2.length - 1], height); _g = calculateRadius(backgroundImage3, x3, y3, width, height), rx = _g[0], ry = _g[1]; if (rx > 0 && ry > 0) { radialGradient_1 = this_1.ctx.createRadialGradient(left2 + x3, top_1 + y3, 0, left2 + x3, top_1 + y3, rx); processColorStops(backgroundImage3.stops, rx * 2).forEach(function(colorStop) { return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color)); }); this_1.path(path); this_1.ctx.fillStyle = radialGradient_1; if (rx !== ry) { midX = container.bounds.left + 0.5 * container.bounds.width; midY = container.bounds.top + 0.5 * container.bounds.height; f4 = ry / rx; invF = 1 / f4; this_1.ctx.save(); this_1.ctx.translate(midX, midY); this_1.ctx.transform(1, 0, 0, f4, 0, 0); this_1.ctx.translate(-midX, -midY); this_1.ctx.fillRect(left2, invF * (top_1 - midY) + midY, width, height * invF); this_1.ctx.restore(); } else { this_1.ctx.fill(); } } } _h.label = 6; case 6: index--; return [ 2 /*return*/ ]; } }); }; this_1 = this; _i = 0, _a = container.styles.backgroundImage.slice(0).reverse(); _b.label = 1; case 1: if (!(_i < _a.length)) return [3, 4]; backgroundImage2 = _a[_i]; return [5, _loop_1(backgroundImage2)]; case 2: _b.sent(); _b.label = 3; case 3: _i++; return [3, 1]; case 4: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderSolidBorder = function(color2, side, curvePoints) { return __awaiter(this, void 0, void 0, function() { return __generator(this, function(_a) { this.path(parsePathForBorder(curvePoints, side)); this.ctx.fillStyle = asString(color2); this.ctx.fill(); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.renderDoubleBorder = function(color2, width, side, curvePoints) { return __awaiter(this, void 0, void 0, function() { var outerPaths, innerPaths; return __generator(this, function(_a) { switch (_a.label) { case 0: if (!(width < 3)) return [3, 2]; return [4, this.renderSolidBorder(color2, side, curvePoints)]; case 1: _a.sent(); return [ 2 /*return*/ ]; case 2: outerPaths = parsePathForBorderDoubleOuter(curvePoints, side); this.path(outerPaths); this.ctx.fillStyle = asString(color2); this.ctx.fill(); innerPaths = parsePathForBorderDoubleInner(curvePoints, side); this.path(innerPaths); this.ctx.fill(); return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderNodeBackgroundAndBorders = function(paint) { return __awaiter(this, void 0, void 0, function() { var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border; var _this = this; return __generator(this, function(_a) { switch (_a.label) { case 0: this.applyEffects(paint.getEffects( 2 /* BACKGROUND_BORDERS */ )); styles = paint.container.styles; hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length; borders = [ { style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth }, { style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth }, { style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth }, { style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth } ]; backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves); if (!(hasBackground || styles.boxShadow.length)) return [3, 2]; this.ctx.save(); this.path(backgroundPaintingArea); this.ctx.clip(); if (!isTransparent(styles.backgroundColor)) { this.ctx.fillStyle = asString(styles.backgroundColor); this.ctx.fill(); } return [4, this.renderBackgroundImage(paint.container)]; case 1: _a.sent(); this.ctx.restore(); styles.boxShadow.slice(0).reverse().forEach(function(shadow) { _this.ctx.save(); var borderBoxArea = calculateBorderBoxPath(paint.curves); var maskOffset = shadow.inset ? 0 : MASK_OFFSET; var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2)); if (shadow.inset) { _this.path(borderBoxArea); _this.ctx.clip(); _this.mask(shadowPaintingArea); } else { _this.mask(borderBoxArea); _this.ctx.clip(); _this.path(shadowPaintingArea); } _this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset; _this.ctx.shadowOffsetY = shadow.offsetY.number; _this.ctx.shadowColor = asString(shadow.color); _this.ctx.shadowBlur = shadow.blur.number; _this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : "rgba(0,0,0,1)"; _this.ctx.fill(); _this.ctx.restore(); }); _a.label = 2; case 2: side = 0; _i = 0, borders_1 = borders; _a.label = 3; case 3: if (!(_i < borders_1.length)) return [3, 13]; border = borders_1[_i]; if (!(border.style !== 0 && !isTransparent(border.color) && border.width > 0)) return [3, 11]; if (!(border.style === 2)) return [3, 5]; return [4, this.renderDashedDottedBorder( border.color, border.width, side, paint.curves, 2 /* DASHED */ )]; case 4: _a.sent(); return [3, 11]; case 5: if (!(border.style === 3)) return [3, 7]; return [4, this.renderDashedDottedBorder( border.color, border.width, side, paint.curves, 3 /* DOTTED */ )]; case 6: _a.sent(); return [3, 11]; case 7: if (!(border.style === 4)) return [3, 9]; return [4, this.renderDoubleBorder(border.color, border.width, side, paint.curves)]; case 8: _a.sent(); return [3, 11]; case 9: return [4, this.renderSolidBorder(border.color, side, paint.curves)]; case 10: _a.sent(); _a.label = 11; case 11: side++; _a.label = 12; case 12: _i++; return [3, 3]; case 13: return [ 2 /*return*/ ]; } }); }); }; CanvasRenderer2.prototype.renderDashedDottedBorder = function(color2, width, side, curvePoints, style) { return __awaiter(this, void 0, void 0, function() { var strokePaths, boxPaths, startX, startY, endX, endY, length, dashLength, spaceLength, useLineDash, multiplier, numberOfDashes, minSpace, maxSpace, path1, path2, path1, path2; return __generator(this, function(_a) { this.ctx.save(); strokePaths = parsePathForBorderStroke(curvePoints, side); boxPaths = parsePathForBorder(curvePoints, side); if (style === 2) { this.path(boxPaths); this.ctx.clip(); } if (isBezierCurve(boxPaths[0])) { startX = boxPaths[0].start.x; startY = boxPaths[0].start.y; } else { startX = boxPaths[0].x; startY = boxPaths[0].y; } if (isBezierCurve(boxPaths[1])) { endX = boxPaths[1].end.x; endY = boxPaths[1].end.y; } else { endX = boxPaths[1].x; endY = boxPaths[1].y; } if (side === 0 || side === 2) { length = Math.abs(startX - endX); } else { length = Math.abs(startY - endY); } this.ctx.beginPath(); if (style === 3) { this.formatPath(strokePaths); } else { this.formatPath(boxPaths.slice(0, 2)); } dashLength = width < 3 ? width * 3 : width * 2; spaceLength = width < 3 ? width * 2 : width; if (style === 3) { dashLength = width; spaceLength = width; } useLineDash = true; if (length <= dashLength * 2) { useLineDash = false; } else if (length <= dashLength * 2 + spaceLength) { multiplier = length / (2 * dashLength + spaceLength); dashLength *= multiplier; spaceLength *= multiplier; } else { numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength)); minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1); maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes; spaceLength = maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace) ? minSpace : maxSpace; } if (useLineDash) { if (style === 3) { this.ctx.setLineDash([0, dashLength + spaceLength]); } else { this.ctx.setLineDash([dashLength, spaceLength]); } } if (style === 3) { this.ctx.lineCap = "round"; this.ctx.lineWidth = width; } else { this.ctx.lineWidth = width * 2 + 1.1; } this.ctx.strokeStyle = asString(color2); this.ctx.stroke(); this.ctx.setLineDash([]); if (style === 2) { if (isBezierCurve(boxPaths[0])) { path1 = boxPaths[3]; path2 = boxPaths[0]; this.ctx.beginPath(); this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); this.ctx.stroke(); } if (isBezierCurve(boxPaths[1])) { path1 = boxPaths[1]; path2 = boxPaths[2]; this.ctx.beginPath(); this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]); this.ctx.stroke(); } } this.ctx.restore(); return [ 2 /*return*/ ]; }); }); }; CanvasRenderer2.prototype.render = function(element) { return __awaiter(this, void 0, void 0, function() { var stack; return __generator(this, function(_a) { switch (_a.label) { case 0: if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height); } stack = parseStackingContexts(element); return [4, this.renderStack(stack)]; case 1: _a.sent(); this.applyEffects([]); return [2, this.canvas]; } }); }); }; return CanvasRenderer2; }(Renderer2) ); var isTextInputElement = function(container) { if (container instanceof TextareaElementContainer) { return true; } else if (container instanceof SelectElementContainer) { return true; } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) { return true; } return false; }; var calculateBackgroundCurvedPaintingArea = function(clip, curves) { switch (clip) { case 0: return calculateBorderBoxPath(curves); case 2: return calculateContentBoxPath(curves); case 1: default: return calculatePaddingBoxPath(curves); } }; var canvasTextAlign = function(textAlign2) { switch (textAlign2) { case 1: return "center"; case 2: return "right"; case 0: default: return "left"; } }; var iOSBrokenFonts = ["-apple-system", "system-ui"]; var fixIOSSystemFonts = function(fontFamilies) { return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent) ? fontFamilies.filter(function(fontFamily2) { return iOSBrokenFonts.indexOf(fontFamily2) === -1; }) : fontFamilies; }; var ForeignObjectRenderer = ( /** @class */ function(_super) { __extends(ForeignObjectRenderer2, _super); function ForeignObjectRenderer2(context, options) { var _this = _super.call(this, context, options) || this; _this.canvas = options.canvas ? options.canvas : document.createElement("canvas"); _this.ctx = _this.canvas.getContext("2d"); _this.options = options; _this.canvas.width = Math.floor(options.width * options.scale); _this.canvas.height = Math.floor(options.height * options.scale); _this.canvas.style.width = options.width + "px"; _this.canvas.style.height = options.height + "px"; _this.ctx.scale(_this.options.scale, _this.options.scale); _this.ctx.translate(-options.x, -options.y); _this.context.logger.debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale); return _this; } ForeignObjectRenderer2.prototype.render = function(element) { return __awaiter(this, void 0, void 0, function() { var svg, img; return __generator(this, function(_a) { switch (_a.label) { case 0: svg = createForeignObjectSVG(this.options.width * this.options.scale, this.options.height * this.options.scale, this.options.scale, this.options.scale, element); return [4, loadSerializedSVG(svg)]; case 1: img = _a.sent(); if (this.options.backgroundColor) { this.ctx.fillStyle = asString(this.options.backgroundColor); this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale); } this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale); return [2, this.canvas]; } }); }); }; return ForeignObjectRenderer2; }(Renderer2) ); var loadSerializedSVG = function(svg) { return new Promise(function(resolve, reject) { var img = new Image(); img.onload = function() { resolve(img); }; img.onerror = reject; img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)); }); }; var Logger = ( /** @class */ function() { function Logger2(_a) { var id2 = _a.id, enabled = _a.enabled; this.id = id2; this.enabled = enabled; this.start = Date.now(); } Logger2.prototype.debug = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.debug === "function") { console.debug.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.prototype.getTime = function() { return Date.now() - this.start; }; Logger2.prototype.info = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.info === "function") { console.info.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } } }; Logger2.prototype.warn = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.warn === "function") { console.warn.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.prototype.error = function() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.enabled) { if (typeof window !== "undefined" && window.console && typeof console.error === "function") { console.error.apply(console, __spreadArray([this.id, this.getTime() + "ms"], args)); } else { this.info.apply(this, args); } } }; Logger2.instances = {}; return Logger2; }() ); var Context = ( /** @class */ function() { function Context2(options, windowBounds) { var _a; this.windowBounds = windowBounds; this.instanceName = "#" + Context2.instanceCount++; this.logger = new Logger({ id: this.instanceName, enabled: options.logging }); this.cache = (_a = options.cache) !== null && _a !== void 0 ? _a : new Cache2(this, options); } Context2.instanceCount = 1; return Context2; }() ); var html2canvas2 = function(element, options) { if (options === void 0) { options = {}; } return renderElement(element, options); }; if (typeof window !== "undefined") { CacheStorage.setContext(window); } var renderElement = function(element, opts) { return __awaiter(void 0, void 0, void 0, function() { var ownerDocument, defaultView, resourceOptions, contextOptions, windowOptions, windowBounds, context, foreignObjectRendering, cloneOptions, documentCloner, clonedElement, container, _a, width, height, left2, top2, backgroundColor2, renderOptions, canvas, renderer, root, renderer; var _b, _c, _d, _e2, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t; return __generator(this, function(_u) { switch (_u.label) { case 0: if (!element || typeof element !== "object") { return [2, Promise.reject("Invalid element provided as first argument")]; } ownerDocument = element.ownerDocument; if (!ownerDocument) { throw new Error("Element is not attached to a Document"); } defaultView = ownerDocument.defaultView; if (!defaultView) { throw new Error("Document is not attached to a Window"); } resourceOptions = { allowTaint: (_b = opts.allowTaint) !== null && _b !== void 0 ? _b : false, imageTimeout: (_c = opts.imageTimeout) !== null && _c !== void 0 ? _c : 15e3, proxy: opts.proxy, useCORS: (_d = opts.useCORS) !== null && _d !== void 0 ? _d : false }; contextOptions = __assign({ logging: (_e2 = opts.logging) !== null && _e2 !== void 0 ? _e2 : true, cache: opts.cache }, resourceOptions); windowOptions = { windowWidth: (_f = opts.windowWidth) !== null && _f !== void 0 ? _f : defaultView.innerWidth, windowHeight: (_g = opts.windowHeight) !== null && _g !== void 0 ? _g : defaultView.innerHeight, scrollX: (_h = opts.scrollX) !== null && _h !== void 0 ? _h : defaultView.pageXOffset, scrollY: (_j = opts.scrollY) !== null && _j !== void 0 ? _j : defaultView.pageYOffset }; windowBounds = new Bounds(windowOptions.scrollX, windowOptions.scrollY, windowOptions.windowWidth, windowOptions.windowHeight); context = new Context(contextOptions, windowBounds); foreignObjectRendering = (_k = opts.foreignObjectRendering) !== null && _k !== void 0 ? _k : false; cloneOptions = { allowTaint: (_l = opts.allowTaint) !== null && _l !== void 0 ? _l : false, onclone: opts.onclone, ignoreElements: opts.ignoreElements, inlineImages: foreignObjectRendering, copyStyles: foreignObjectRendering }; context.logger.debug("Starting document clone with size " + windowBounds.width + "x" + windowBounds.height + " scrolled to " + -windowBounds.left + "," + -windowBounds.top); documentCloner = new DocumentCloner(context, element, cloneOptions); clonedElement = documentCloner.clonedReferenceElement; if (!clonedElement) { return [2, Promise.reject("Unable to find element in cloned iframe")]; } return [4, documentCloner.toIFrame(ownerDocument, windowBounds)]; case 1: container = _u.sent(); _a = isBodyElement(clonedElement) || isHTMLElement2(clonedElement) ? parseDocumentSize(clonedElement.ownerDocument) : parseBounds(context, clonedElement), width = _a.width, height = _a.height, left2 = _a.left, top2 = _a.top; backgroundColor2 = parseBackgroundColor(context, clonedElement, opts.backgroundColor); renderOptions = { canvas: opts.canvas, backgroundColor: backgroundColor2, scale: (_o = (_m = opts.scale) !== null && _m !== void 0 ? _m : defaultView.devicePixelRatio) !== null && _o !== void 0 ? _o : 1, x: ((_p = opts.x) !== null && _p !== void 0 ? _p : 0) + left2, y: ((_q = opts.y) !== null && _q !== void 0 ? _q : 0) + top2, width: (_r = opts.width) !== null && _r !== void 0 ? _r : Math.ceil(width), height: (_s = opts.height) !== null && _s !== void 0 ? _s : Math.ceil(height) }; if (!foreignObjectRendering) return [3, 3]; context.logger.debug("Document cloned, using foreign object rendering"); renderer = new ForeignObjectRenderer(context, renderOptions); return [4, renderer.render(clonedElement)]; case 2: canvas = _u.sent(); return [3, 5]; case 3: context.logger.debug("Document cloned, element located at " + left2 + "," + top2 + " with size " + width + "x" + height + " using computed rendering"); context.logger.debug("Starting DOM parsing"); root = parseTree(context, clonedElement); if (backgroundColor2 === root.styles.backgroundColor) { root.styles.backgroundColor = COLORS.TRANSPARENT; } context.logger.debug("Starting renderer for element at " + renderOptions.x + "," + renderOptions.y + " with size " + renderOptions.width + "x" + renderOptions.height); renderer = new CanvasRenderer(context, renderOptions); return [4, renderer.render(root)]; case 4: canvas = _u.sent(); _u.label = 5; case 5: if ((_t = opts.removeContainer) !== null && _t !== void 0 ? _t : true) { if (!DocumentCloner.destroy(container)) { context.logger.error("Cannot detach cloned iframe as it is not in the DOM anymore"); } } context.logger.debug("Finished rendering"); return [2, canvas]; } }); }); }; var parseBackgroundColor = function(context, element, backgroundColorOverride) { var ownerDocument = element.ownerDocument; var documentBackgroundColor = ownerDocument.documentElement ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor) : COLORS.TRANSPARENT; var bodyBackgroundColor = ownerDocument.body ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor) : COLORS.TRANSPARENT; var defaultBackgroundColor = typeof backgroundColorOverride === "string" ? parseColor(context, backgroundColorOverride) : backgroundColorOverride === null ? COLORS.TRANSPARENT : 4294967295; return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor; }; return html2canvas2; }); } }); // ../../../package.json var package_default = { name: "coveragebook-components", type: "module", version: "0.5.4", main: "index.js", repository: "git@github.com:coveragebook/coco.git", author: "Mark Perkins <mark@coveragebook.com>", license: "NO LICENSE", browserslist: [ "defaults" ], dependencies: { "@alpinejs/collapse": "^3.11.1", "@alpinejs/focus": "^3.11.1", "@alpinejs/intersect": "^3.11.1", "@alpinejs/mask": "^3.12.0", "@alpinejs/morph": "^3.11.1", "@hotwired/turbo-rails": "^7.3.0", "@jaames/iro": "^5.5.2", "@rails/activestorage": "^7.0.5", "@tailwindcss/container-queries": "^0.1.0", "@tailwindcss/forms": "^0.5.3", "alpine-turbo-drive-adapter": "^2.0.0", alpinejs: "^3.11.1", "container-query-polyfill": "^1.0.2", del: "^7.0.0", html2canvas: "^1.4.1", lodash: "^4.17.21", "lucide-static": "^0.258.0", tailwindcss: "^3.3.0", "tippy.js": "^6.3.7" }, devDependencies: { "@percy/cli": "^1.26.1", "alias-hq": "^6.1.0", "alpinejs-tash": "^1.0.9", autoprefixer: "^10.4.13", esbuild: "^0.17.10", "esbuild-plugin-copy": "^2.0.2", "fast-glob": "^3.2.12", "fast-sort": "^3.2.1", husky: "^8.0.3", jest: "^29.4.3", "jest-environment-jsdom": "^29.4.3", "lint-staged": "^13.1.2", postcss: "^8.4.21", "postcss-cli": "^10.1.0", "postcss-value-parser": "^4.2.0", prettier: "^2.8.4", "release-it": "^15.10.3", svgo: "^3.0.2", vite: "^4.1.4", "vite-plugin-ruby": "^3.1.3" }, scripts: { "js:build": "node esbuild.config.js", "js:dev": "node esbuild.config.js --watch", "js:test": "node --experimental-vm-modules node_modules/jest/bin/jest.js", "css:build": "postcss ./app/assets/css/{app,book}.css -d ./app/assets/build/coco", "css:dev": "postcss ./app/assets/css/{app,book}.css -d ./app/assets/build/coco --watch --ext .dev.css", build: "npm run js:build && npm run css:build", "lint:fix": "bundle exec standardrb --fix && prettier --write .", prepare: "husky install", release: "release-it" }, "lint-staged": { "**/*": [ "prettier --write --ignore-unknown" ], "(**/*.(rb|rake))|Gemfile|Rakefile": [ "standardrb --fix" ] }, prettier: { tabWidth: 2, semi: true, singleQuote: false }, "release-it": { github: { release: true }, npm: { publish: false }, hooks: { "before:init": [ "npm install", "bundle install", "bundle exec rake test", "cd lookbook && bundle" ], "after:bump": [ "npm run lint:fix", "npm run build" ], "after:version:bump": "./bin/bump-version ${version} && bundle", "after:release": "./bin/build-gem ${version}" } } }; // ../../../node_modules/container-query-polyfill/dist/container-query-polyfill.modern.js function e() { return e = Object.assign ? Object.assign.bind() : function(e3) { for (var t3 = 1; t3 < arguments.length; t3++) { var n3 = arguments[t3]; for (var r3 in n3) Object.prototype.hasOwnProperty.call(n3, r3) && (e3[r3] = n3[r3]); } return e3; }, e.apply(this, arguments); } function t(e3, t3) { const n3 = t3.width, r3 = t3.height, u3 = t3.inlineSize, o3 = t3.blockSize; switch (e3) { case 1: return null != n3 ? { type: 3, value: n3, unit: "px" } : { type: 1 }; case 3: return null != u3 ? { type: 3, value: u3, unit: "px" } : { type: 1 }; case 2: return null != r3 ? { type: 3, value: r3, unit: "px" } : { type: 1 }; case 4: return null != o3 ? { type: 3, value: o3, unit: "px" } : { type: 1 }; case 5: return null != n3 && null != r3 && r3 > 0 ? { type: 2, value: n3 / r3 } : { type: 1 }; case 6: return null != n3 && null != r3 ? { type: 4, value: r3 >= n3 ? "portrait" : "landscape" } : { type: 1 }; } } function n(e3, t3) { switch (e3.type) { case 1: case 2: case 3: case 4: return i(e3, t3); case 5: { const n3 = t3.sizeFeatures.get(e3.feature); return null == n3 ? { type: 1 } : n3; } case 6: return e3.value; } } function r(e3) { return { type: 5, value: e3 }; } function u(e3, t3, n3) { return r(function(e4, t4, n4) { switch (n4) { case 1: return e4 === t4; case 2: return e4 > t4; case 3: return e4 >= t4; case 4: return e4 < t4; case 5: return e4 <= t4; } }(e3, t3, n3)); } function o(e3, t3, n3) { return null == e3 ? t3 : null == t3 ? e3 : n3(e3, t3); } function s(e3, t3) { switch (e3) { case "cqw": return t3.cqw; case "cqh": return t3.cqh; case "cqi": return 0 === t3.writingAxis ? t3.cqw : t3.cqh; case "cqb": return 1 === t3.writingAxis ? t3.cqw : t3.cqh; case "cqmin": return o(s("cqi", t3), s("cqb", t3), Math.min); case "cqmax": return o(s("cqi", t3), s("cqb", t3), Math.max); } } function l(e3, { treeContext: t3 }) { switch (e3.unit) { case "px": return e3.value; case "rem": return e3.value * t3.rootFontSize; case "em": return e3.value * t3.fontSize; case "cqw": case "cqh": case "cqi": case "cqb": case "cqmin": case "cqmax": return o(e3.value, s(e3.unit, t3), (e4, t4) => e4 * t4); } return null; } function c(e3, t3) { switch (e3.type) { case 2: return 0 === e3.value ? 0 : null; case 3: return l(e3, t3); } return null; } function i(e3, t3) { switch (e3.type) { case 4: return function(e4, t4) { const o3 = n(e4.left, t4), s3 = n(e4.right, t4), l3 = e4.operator; if (4 === o3.type && 4 === s3.type || 5 === o3.type && 5 === s3.type) return function(e5, t5, n3) { return 1 === n3 ? r(e5.value === t5.value) : { type: 1 }; }(o3, s3, l3); if (3 === o3.type || 3 === s3.type) { const e5 = c(o3, t4), n3 = c(s3, t4); if (null != e5 && null != n3) return u(e5, n3, l3); } else if (2 === o3.type && 2 === s3.type) return u(o3.value, s3.value, l3); return { type: 1 }; }(e3, t3); case 2: return function(e4, t4) { const n3 = i(e4.left, t4); return 5 !== n3.type || true !== n3.value ? n3 : i(e4.right, t4); }(e3, t3); case 3: return function(e4, t4) { const n3 = i(e4.left, t4); return 5 === n3.type && true === n3.value ? n3 : i(e4.right, t4); }(e3, t3); case 1: { const n3 = i(e3.value, t3); return 5 === n3.type ? { type: 5, value: !n3.value } : { type: 1 }; } case 5: return a(n(e3, t3)); case 6: return a(e3.value); } } function a(e3) { switch (e3.type) { case 5: return e3; case 2: case 3: return { type: 5, value: e3.value > 0 }; } return { type: 1 }; } var f = Array.from({ length: 4 }, () => Math.floor(256 * Math.random()).toString(16)).join(""); var p = S("container"); var y = S("container-type"); var h = S("container-name"); var v = `data-cqs-${f}`; var d = `data-cqc-${f}`; var m = S("cqw"); var w = S("cqh"); var g = S("cqi"); var b = S("cqb"); function S(e3) { return `--cq-${e3}-${f}`; } var x = Symbol(); function q(e3, t3) { const n3 = { value: t3, errorIndices: [], index: -1, at(r3) { const u3 = n3.index + r3; return u3 >= e3.length ? t3 : e3[u3]; }, consume: (e4) => (n3.index += e4, n3.value = n3.at(0), n3.value), reconsume() { n3.index -= 1; }, error() { n3.errorIndices.push(n3.index); } }; return n3; } function C(e3) { return q(e3, { type: 0 }); } function* $(e3) { const t3 = []; let n3 = false; for (const r4 of e3) { const e4 = r4.codePointAt(0); n3 && 10 !== e4 && (n3 = false, t3.push(10)), 0 === e4 || e4 >= 55296 && e4 <= 57343 ? t3.push(65533) : 13 === e4 ? n3 = true : t3.push(e4); } const r3 = q(t3, -1), { at: u3, consume: o3, error: s3, reconsume: l3 } = r3; function c3() { return String.fromCodePoint(r3.value); } function i3() { return { type: 13, value: c3() }; } function a3() { for (; z(u3(1)); ) o3(1); } function f3() { for (; -1 !== r3.value; ) if (o3(1), 42 === u3(0) && 47 === u3(1)) return void o3(1); s3(); } function p2() { const [e4, t4] = function() { let e5 = 0, t5 = "", n5 = u3(1); for (43 !== n5 && 45 !== n5 || (o3(1), t5 += c3()); k(u3(1)); ) o3(1), t5 += c3(); if (46 === u3(1) && k(u3(2))) for (e5 = 1, o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); if (n5 = u3(1), 69 === n5 || 101 === n5) { const n6 = u3(2); if (k(n6)) for (e5 = 1, o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); else if ((45 === n6 || 43 === n6) && k(u3(3))) for (e5 = 1, o3(1), t5 += c3(), o3(1), t5 += c3(); k(u3(1)); ) o3(1), t5 += c3(); } return [t5, e5]; }(), n4 = u3(1); return d3(n4, u3(1), u3(2)) ? { type: 15, value: e4, flag: t4, unit: w3() } : 37 === n4 ? (o3(1), { type: 16, value: e4 }) : { type: 17, value: e4, flag: t4 }; } function y3() { const e4 = w3(); let t4 = u3(1); if ("url" === e4.toLowerCase() && 40 === t4) { for (o3(1); z(u3(1)) && z(u3(2)); ) o3(1); t4 = u3(1); const n4 = u3(2); return 34 === t4 || 39 === t4 ? { type: 23, value: e4 } : !z(t4) || 34 !== n4 && 39 !== n4 ? function() { let e5 = ""; for (a3(); ; ) { const n5 = o3(1); if (41 === n5) return { type: 20, value: e5 }; if (-1 === n5) return s3(), { type: 20, value: e5 }; if (z(n5)) { a3(); const t6 = u3(1); return 41 === t6 || -1 === t6 ? (o3(1), -1 === n5 && s3(), { type: 20, value: e5 }) : (g3(), { type: 21 }); } if (34 === n5 || 39 === n5 || 40 === n5 || (t5 = n5) >= 0 && t5 <= 8 || 11 === t5 || t5 >= 14 && t5 <= 31 || 127 === t5) return s3(), g3(), { type: 21 }; if (92 === n5) { if (!j(n5, u3(1))) return s3(), { type: 21 }; e5 += v3(); } else e5 += c3(); } var t5; }() : { type: 23, value: e4 }; } return 40 === t4 ? (o3(1), { type: 23, value: e4 }) : { type: 24, value: e4 }; } function h3(e4) { let t4 = ""; for (; ; ) { const n4 = o3(1); if (-1 === n4 || n4 === e4) return -1 === n4 && s3(), { type: 2, value: t4 }; if (E(n4)) return s3(), l3(), { type: 3 }; if (92 === n4) { const e5 = u3(1); if (-1 === e5) continue; E(e5) ? o3(1) : t4 += v3(); } else t4 += c3(); } } function v3() { const e4 = o3(1); if (A(e4)) { const t4 = [e4]; for (let e5 = 0; e5 < 5; e5++) { const e6 = u3(1); if (!A(e6)) break; t4.push(e6), o3(1); } z(u3(1)) && o3(1); let n4 = parseInt(String.fromCodePoint(...t4), 16); return (0 === n4 || n4 >= 55296 && n4 <= 57343 || n4 > 1114111) && (n4 = 65533), String.fromCodePoint(n4); } return -1 === e4 ? (s3(), String.fromCodePoint(65533)) : c3(); } function d3(e4, t4, n4) { return 45 === e4 ? L(t4) || 45 === t4 || j(t4, n4) : !!L(e4); } function m3(e4, t4, n4) { return 43 === e4 || 45 === e4 ? k(t4) || 46 === t4 && k(n4) : !(46 !== e4 || !k(t4)) || !!k(e4); } function w3() { let e4 = ""; for (; ; ) { const t4 = o3(1); if (M(t4)) e4 += c3(); else { if (!j(t4, u3(1))) return l3(), e4; e4 += v3(); } } } function g3() { for (; ; ) { const e4 = o3(1); if (-1 === e4) return; j(e4, u3(1)) && v3(); } } for (; ; ) { const e4 = o3(1); if (47 === e4 && 42 === u3(1)) o3(2), f3(); else if (z(e4)) a3(), yield { type: 1 }; else if (34 === e4) yield h3(e4); else if (35 === e4) { const e5 = u3(1); M(e5) || j(e5, u3(2)) ? yield { type: 14, flag: d3(u3(1), u3(2), u3(3)) ? 1 : 0, value: w3() } : yield i3(); } else if (39 === e4) yield h3(e4); else if (40 === e4) yield { type: 4 }; else if (41 === e4) yield { type: 5 }; else if (43 === e4) m3(e4, u3(1), u3(2)) ? (l3(), yield p2()) : yield i3(); else if (44 === e4) yield { type: 6 }; else if (45 === e4) { const t4 = u3(1), n4 = u3(2); m3(e4, t4, n4) ? (l3(), yield p2()) : 45 === t4 && 62 === n4 ? (o3(2), yield { type: 19 }) : d3(e4, t4, n4) ? (l3(), yield y3()) : yield i3(); } else if (46 === e4) m3(e4, u3(1), u3(2)) ? (l3(), yield p2()) : yield i3(); else if (58 === e4) yield { type: 7 }; else if (59 === e4) yield { type: 8 }; else if (60 === e4) 33 === u3(1) && 45 === u3(2) && 45 === u3(3) ? yield { type: 18 } : yield i3(); else if (64 === e4) if (d3(u3(1), u3(2), u3(3))) { const e5 = w3(); yield { type: 22, value: e5 }; } else yield i3(); else if (91 === e4) yield { type: 9 }; else if (92 === e4) j(e4, u3(1)) ? (l3(), yield y3()) : (s3(), yield i3()); else if (93 === e4) yield { type: 10 }; else if (123 === e4) yield { type: 11 }; else if (125 === e4) yield { type: 12 }; else if (k(e4)) l3(), yield p2(); else if (L(e4)) l3(), yield y3(); else { if (-1 === e4) return yield { type: 0 }, r3.errorIndices; yield { type: 13, value: c3() }; } } } function k(e3) { return e3 >= 48 && e3 <= 57; } function A(e3) { return k(e3) || e3 >= 65 && e3 <= 70 || e3 >= 97 && e3 <= 102; } function E(e3) { return 10 === e3 || 13 === e3 || 12 === e3; } function z(e3) { return E(e3) || 9 === e3 || 32 === e3; } function L(e3) { return e3 >= 65 && e3 <= 90 || e3 >= 97 && e3 <= 122 || e3 >= 128 || 95 === e3; } function j(e3, t3) { return 92 === e3 && !E(t3); } function M(e3) { return L(e3) || k(e3) || 45 === e3; } var T = { 11: 12, 9: 10, 4: 5 }; function P(t3, n3) { const r3 = function(e3, t4) { const n4 = []; for (; ; ) switch (e3.consume(1).type) { case 1: break; case 0: return { type: 3, value: n4 }; case 18: case 19: if (false !== t4) { e3.reconsume(); const t5 = R(e3); t5 !== x && n4.push(t5); } break; case 22: e3.reconsume(), n4.push(U(e3)); break; default: { e3.reconsume(); const t5 = R(e3); t5 !== x && n4.push(t5); break; } } }(C(t3), true === n3); return e({}, r3, { value: r3.value.map((t4) => 26 === t4.type ? function(t5, n4) { return 0 === t5.value.value.type ? e({}, t5, { value: e({}, t5.value, { value: O(t5.value.value.value) }) }) : t5; }(t4) : t4) }); } function N(e3) { const t3 = C(e3), n3 = []; for (; ; ) { if (0 === t3.consume(1).type) return n3; t3.reconsume(), n3.push(Q(t3)); } } function O(e3) { return function(e4) { const t3 = [], n3 = []; for (; ; ) { const r3 = e4.consume(1); switch (r3.type) { case 1: case 8: break; case 0: return { type: 1, value: [...n3, ...t3] }; case 22: e4.reconsume(), t3.push(U(e4)); break; case 24: { const t4 = [r3]; let u3 = e4.at(1); for (; 8 !== u3.type && 0 !== u3.type; ) t4.push(Q(e4)), u3 = e4.at(1); const o3 = I(C(t4)); o3 !== x && n3.push(o3); break; } case 13: if ("&" === r3.value) { e4.reconsume(); const n4 = R(e4); n4 !== x && t3.push(n4); break; } default: { e4.error(), e4.reconsume(); let t4 = e4.at(1); for (; 8 !== t4.type && 0 !== t4.type; ) Q(e4), t4 = e4.at(1); break; } } } }(C(e3)); } function F(e3) { for (; 1 === e3.at(1).type; ) e3.consume(1); } function U(e3) { let t3 = e3.consume(1); if (22 !== t3.type) throw new Error(`Unexpected type ${t3.type}`); const n3 = t3.value, r3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case 8: return { type: 25, name: n3, prelude: r3, value: null }; case 0: return e3.error(), { type: 25, name: n3, prelude: r3, value: null }; case 11: return { type: 25, name: n3, prelude: r3, value: H(e3) }; case 28: if (11 === t3.source.type) return { type: 25, name: n3, prelude: r3, value: t3 }; default: e3.reconsume(), r3.push(Q(e3)); } } function R(e3) { let t3 = e3.value; const n3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case 0: return e3.error(), x; case 11: return { type: 26, prelude: n3, value: H(e3) }; case 28: if (11 === t3.source.type) return { type: 26, prelude: n3, value: t3 }; default: e3.reconsume(), n3.push(Q(e3)); } } function I(e3) { const t3 = e3.consume(1); if (24 !== t3.type) throw new Error(`Unexpected type ${t3.type}`); const n3 = t3.value, r3 = []; let u3 = false; if (F(e3), 7 !== e3.at(1).type) return e3.error(), x; for (e3.consume(1), F(e3); 0 !== e3.at(1).type; ) r3.push(Q(e3)); const o3 = r3[r3.length - 2], s3 = r3[r3.length - 1]; return o3 && 13 === o3.type && "!" === o3.value && 24 === s3.type && "important" === s3.value.toLowerCase() && (u3 = true, r3.splice(r3.length - 2)), { type: 29, name: n3, value: r3, important: u3 }; } function Q(e3) { const t3 = e3.consume(1); switch (t3.type) { case 11: case 9: case 4: return H(e3); case 23: return function(e4) { let t4 = e4.value; if (23 !== t4.type) throw new Error(`Unexpected type ${t4.type}`); const n3 = t4.value, r3 = []; for (; ; ) switch (t4 = e4.consume(1), t4.type) { case 5: return { type: 27, name: n3, value: r3 }; case 0: return e4.error(), { type: 27, name: n3, value: r3 }; default: e4.reconsume(), r3.push(Q(e4)); } }(e3); default: return t3; } } function H(e3) { let t3 = e3.value; const n3 = t3, r3 = T[n3.type]; if (!r3) throw new Error(`Unexpected type ${t3.type}`); const u3 = []; for (; ; ) switch (t3 = e3.consume(1), t3.type) { case r3: return { type: 28, source: n3, value: { type: 0, value: u3 } }; case 0: return e3.error(), { type: 28, source: n3, value: { type: 0, value: u3 } }; default: e3.reconsume(), u3.push(Q(e3)); } } function V(e3) { return F(e3), 0 === e3.at(1).type; } var D = { 11: ["{", "}"], 9: ["[", "]"], 4: ["(", ")"] }; function W(e3, t3) { switch (e3.type) { case 25: return `@${CSS.escape(e3.name)} ${e3.prelude.map((e4) => W(e4)).join("")}${e3.value ? W(e3.value) : ";"}`; case 26: return `${e3.prelude.map((e4) => W(e4)).join("")}${W(e3.value)}`; case 28: { const [t4, n3] = D[e3.source.type]; return `${t4}${_(e3.value)}${n3}`; } case 27: return `${CSS.escape(e3.name)}(${e3.value.map((e4) => W(e4)).join("")})`; case 29: return `${CSS.escape(e3.name)}:${e3.value.map((e4) => W(e4)).join("")}${e3.important ? " !important" : ""}`; case 1: return " "; case 8: return ";"; case 7: return ":"; case 14: return "#" + CSS.escape(e3.value); case 24: return CSS.escape(e3.value); case 15: return e3.value + CSS.escape(e3.unit); case 13: case 17: return e3.value; case 2: return `"${CSS.escape(e3.value)}"`; case 6: return ","; case 20: return "url(" + CSS.escape(e3.value) + ")"; case 22: return "@" + CSS.escape(e3.value); case 16: return e3.value + "%"; default: throw new Error(`Unsupported token ${e3.type}`); } } function _(e3, t3) { return e3.value.map((t4) => { let n3 = W(t4); return 29 === t4.type && 0 !== e3.type && (n3 += ";"), n3; }).join(""); } function B(e3) { return W(e3); } function G(e3) { const t3 = e3.at(1); return 13 === t3.type && "=" === t3.value && (e3.consume(1), true); } function Y(e3, t3) { const n3 = []; for (; ; ) { const r3 = e3.at(1); if (0 === r3.type || t3 && 7 === r3.type || 13 === r3.type && (">" === r3.value || "<" === r3.value || "=" === r3.value)) break; n3.push(e3.consume(1)); } return n3; } function J(e3) { F(e3); const t3 = e3.consume(1); return 13 !== t3.type ? x : ">" === t3.value ? G(e3) ? 3 : 2 : "<" === t3.value ? G(e3) ? 5 : 4 : "=" === t3.value ? 1 : x; } function K(e3) { return 4 === e3 || 5 === e3; } function X(e3) { return 2 === e3 || 3 === e3; } function Z(e3, t3, n3) { const r3 = function(e4) { F(e4); const t4 = e4.consume(1); return F(e4), 24 !== t4.type || 0 !== e4.at(1).type ? x : t4.value; }(C(e3)); if (r3 === x) return x; let u3 = r3.toLowerCase(); return u3 = n3 ? n3(u3) : u3, t3.has(u3) ? u3 : x; } function ee(e3) { return { type: 13, value: e3 }; } function te(e3, t3) { return { type: 29, name: e3, value: t3, important: false }; } function ne(e3) { return { type: 24, value: e3 }; } function re(e3, t3) { return { type: 27, name: e3, value: t3 }; } function ue(e3) { return re("var", [ne(e3)]); } function oe(e3, t3) { F(e3); let n3 = false, r3 = e3.at(1); if (24 === r3.type) { if ("not" !== r3.value.toLowerCase()) return x; e3.consume(1), F(e3), n3 = true; } let u3 = function(e4) { const t4 = e4.consume(1); switch (t4.type) { case 28: { if (4 !== t4.source.type) return x; const e5 = oe(C(t4.value.value), null); return e5 !== x ? e5 : { type: 4, value: t4 }; } case 27: return { type: 4, value: t4 }; default: return x; } }(e3); if (u3 === x) return x; u3 = n3 ? { type: 1, value: u3 } : u3, F(e3), r3 = e3.at(1); const o3 = 24 === r3.type ? r3.value.toLowerCase() : null; if (null !== o3) { if (e3.consume(1), F(e3), "and" !== o3 && "or" !== o3 || null !== t3 && o3 !== t3) return x; const n4 = oe(e3, o3); return n4 === x ? x : { type: "and" === o3 ? 2 : 3, left: u3, right: n4 }; } return V(e3) ? u3 : x; } function se(e3) { return oe(e3, null); } function le(e3) { switch (e3.type) { case 1: return [ne("not"), { type: 1 }, ...le(e3.value)]; case 2: case 3: return [...le(e3.left), { type: 1 }, ne(2 === e3.type ? "and" : "or"), { type: 1 }, ...le(e3.right)]; case 4: return [e3.value]; } } var ce = { width: 1, height: 2, "inline-size": 3, "block-size": 4, "aspect-ratio": 5, orientation: 6 }; var ie = new Set(Object.keys(ce)); var ae = /* @__PURE__ */ new Set(["none", "and", "not", "or", "normal", "auto"]); var fe = /* @__PURE__ */ new Set(["initial", "inherit", "revert", "revert-layer", "unset"]); var pe = /* @__PURE__ */ new Set(["size", "inline-size"]); function ye(e3, t3, n3, r3) { const u3 = n3(); if (u3 === x) return x; let o3 = [u3, null]; F(e3); const s3 = e3.at(1); if (13 === s3.type) { if (s3.value !== t3) return x; e3.consume(1), F(e3); const n4 = r3(); F(e3), n4 !== x && (o3 = [u3, n4]); } return V(e3) ? o3 : x; } function he(e3) { const t3 = e3.consume(1); return 17 === t3.type ? parseInt(t3.value) : x; } function ve(e3) { const t3 = C(e3); F(t3); const n3 = t3.consume(1); let r3 = x; switch (n3.type) { case 17: t3.reconsume(), r3 = function(e4) { const t4 = ye(e4, "/", () => he(e4), () => he(e4)); return t4 === x ? x : { type: 2, value: t4[0] / (null !== t4[1] ? t4[1] : 1) }; }(t3); break; case 15: r3 = { type: 3, value: parseInt(n3.value), unit: n3.unit.toLowerCase() }; break; case 24: { const e4 = n3.value.toLowerCase(); switch (e4) { case "landscape": case "portrait": r3 = { type: 4, value: e4 }; } } } return r3 === x ? x : V(t3) ? { type: 6, value: r3 } : x; } function de(e3) { return !ge(e3 = e3.toLowerCase()) && !ae.has(e3); } function me(e3, t3) { const n3 = []; for (; ; ) { F(e3); const r3 = e3.at(1); if (24 !== r3.type || !t3(r3.value)) return n3; e3.consume(1), n3.push(r3.value); } } function we(e3) { const t3 = []; for (; ; ) { F(e3); const n3 = e3.at(1); if (24 !== n3.type) break; const r3 = n3.value; if (!de(r3)) break; e3.consume(1), t3.push(r3); } return t3; } function ge(e3) { return fe.has(e3); } function be(e3) { return e3.map((e4) => "cq-" + e4); } function Se(e3) { const t3 = me(e3, (e4) => ge(e4)); return 1 === t3.length ? be(t3) : x; } function xe(e3, t3) { const n3 = me(e3, (e4) => "none" === e4); if (1 === n3.length) return be(n3); if (0 !== n3.length) return x; if (t3) { const t4 = Se(e3); if (t4 !== x) return t4; } const r3 = we(e3); return r3.length > 0 && (!t3 || V(e3)) ? r3 : x; } function qe(e3, t3) { if (t3) { const t4 = Se(e3); if (t4 !== x) return t4; } return function(e4) { const t4 = me(e4, (e5) => "normal" === e5); if (1 === t4.length) return be(t4); if (0 !== t4.length) return x; const n3 = me(e4, (e5) => pe.has(e5)); return n3.length > 0 && V(e4) ? n3 : x; }(e3); } function Ce(e3) { const t3 = C(e3), n3 = Se(t3); if (n3 !== x) return [n3, n3]; const r3 = ye(t3, "/", () => xe(t3, false), () => qe(t3, false)); return r3 !== x && V(t3) ? [r3[0], r3[1] || []] : x; } function $e(e3) { const t3 = C(e3), n3 = we(t3); if (!n3 || n3.length > 1) return x; const r3 = se(t3); if (r3 === x) return x; const u3 = { features: /* @__PURE__ */ new Set() }, o3 = ke(r3, u3); return V(t3) ? { name: n3.length > 0 ? n3[0] : null, condition: o3, features: u3.features } : x; } function ke(e3, t3) { switch (e3.type) { case 1: return { type: 1, value: ke(e3.value, t3) }; case 2: case 3: return { type: 2 === e3.type ? 2 : 3, left: ke(e3.left, t3), right: ke(e3.right, t3) }; case 4: if (28 === e3.value.type) { const n3 = function(e4, t4) { const n4 = function(e5, t5) { const n5 = Y(e5, true), r4 = e5.at(1); if (0 === r4.type) { const e6 = Z(n5, t5); return e6 !== x && t5.has(e6) ? { type: 1, feature: e6 } : x; } if (7 === r4.type) { e5.consume(1); const r5 = Y(e5, false); let u4 = 1; const o4 = Z(n5, t5, (e6) => e6.startsWith("min-") ? (u4 = 3, e6.substring(4)) : e6.startsWith("max-") ? (u4 = 5, e6.substring(4)) : e6); return o4 !== x ? { type: 2, feature: o4, bounds: [null, [u4, r5]] } : x; } const u3 = J(e5); if (u3 === x) return x; const o3 = Y(e5, false); if (0 === e5.at(1).type) { const e6 = Z(n5, t5); if (e6 !== x) return { type: 2, feature: e6, bounds: [null, [u3, o3]] }; const r5 = Z(o3, t5); return r5 !== x ? { type: 2, feature: r5, bounds: [[u3, n5], null] } : x; } const s3 = J(e5); if (s3 === x || !(X(u3) && X(s3) || K(u3) && K(s3))) return x; const l3 = Y(e5, false), c3 = Z(o3, t5); return c3 !== x ? { type: 2, feature: c3, bounds: [[u3, n5], [s3, l3]] } : x; }(e4, ie); if (n4 === x) return x; const r3 = ce[n4.feature]; if (null == r3) return x; if (t4.features.add(r3), 1 === n4.type) return { type: 5, feature: r3 }; { const e5 = { type: 5, feature: r3 }; let t5 = x; if (null !== n4.bounds[0]) { const r4 = ve(n4.bounds[0][1]); if (r4 === x) return x; t5 = { type: 4, operator: n4.bounds[0][0], left: r4, right: e5 }; } if (null !== n4.bounds[1]) { const r4 = ve(n4.bounds[1][1]); if (r4 === x) return x; const u3 = { type: 4, operator: n4.bounds[1][0], left: e5, right: r4 }; t5 = t5 !== x ? { type: 2, left: t5, right: u3 } : u3; } return t5; } }(C(e3.value.value.value), t3); if (n3 !== x) return n3; } return { type: 6, value: { type: 1 } }; } } var Ae = 0; var Ee = { cqw: m, cqh: w, cqi: g, cqb: b }; var ze = CSS.supports("selector(:where(div))"); var Le = ":not(.container-query-polyfill)"; N(Array.from($(Le))); var je = document.createElement("div"); var Me = /* @__PURE__ */ new Set(["before", "after", "first-line", "first-letter"]); function Te(e3, t3) { return re("calc", [{ type: 17, flag: e3.flag, value: e3.value }, ee("*"), t3]); } function Pe(t3) { return t3.map((t4) => { switch (t4.type) { case 15: return function(e3) { const t5 = e3.unit, n3 = Ee[t5]; return null != n3 ? Te(e3, ue(n3)) : "cqmin" === t5 || "cqmax" === t5 ? Te(e3, re(e3.unit.slice(2), [ue(g), { type: 6 }, ue(b)])) : e3; }(t4); case 27: return e({}, t4, { value: Pe(t4.value) }); } return t4; }); } function Ne(t3) { switch (t3.name) { case "container": return Ce(t3.value) ? e({}, t3, { name: p }) : t3; case "container-name": return xe(C(t3.value), true) ? e({}, t3, { name: h }) : t3; case "container-type": return null != qe(C(t3.value), true) ? e({}, t3, { name: y }) : t3; } return e({}, t3, { value: Pe(t3.value) }); } function Oe(t3, n3) { return e({}, t3, { value: t3.value.map((t4) => { switch (t4.type) { case 25: return He(t4, n3); case 26: return function(t5, n4) { return n4.transformStyleRule(e({}, t5, { value: Re(t5.value, n4) })); }(t4, n3); default: return t4; } }) }); } function Fe(e3) { return 0 === e3.type || 6 === e3.type; } function Ue(e3) { for (let t3 = e3.length - 1; t3 >= 0; t3--) if (1 !== e3[t3].type) return e3.slice(0, t3 + 1); return e3; } function Re(t3, n3) { return function(t4, n4) { const r3 = []; let u3 = null, o3 = null; for (const e3 of t4.value.value) switch (e3.type) { case 25: { const t5 = n4 ? n4(e3) : e3; t5 && r3.push(t5); } break; case 29: { const t5 = Ne(e3); switch (t5.name) { case p: { const t6 = Ce(e3.value); t6 !== x && (u3 = t6[0], o3 = t6[1]); break; } case h: { const t6 = xe(C(e3.value), true); t6 !== x && (u3 = t6); break; } case y: { const t6 = qe(C(e3.value), true); t6 !== x && (o3 = t6); break; } default: r3.push(t5); } } } return u3 && u3.length > 0 && r3.push(te(h, [ne(u3.join(" "))])), o3 && o3.length > 0 && r3.push(te(y, [ne(o3.join(" "))])), e({}, t4, { value: { type: 2, value: r3 } }); }(t3, (e3) => He(e3, n3)); } function Ie(t3) { if (1 === t3.type) return e({}, t3, { value: Ie(t3.value) }); if (2 === t3.type || 3 === t3.type) return e({}, t3, { left: Ie(t3.left), right: Ie(t3.right) }); if (4 === t3.type && 28 === t3.value.type) { const n3 = function(e3) { const t4 = C(e3); return F(t4), 24 !== t4.at(1).type ? x : I(t4) || x; }(t3.value.value.value); if (n3 !== x) return e({}, t3, { value: e({}, t3.value, { value: { type: 0, value: [Ne(n3)] } }) }); } return t3; } function Qe(t3, n3) { let r3 = se(C(t3.prelude)); return r3 = r3 !== x ? Ie(r3) : x, e({}, t3, { prelude: r3 !== x ? le(r3) : t3.prelude, value: t3.value ? e({}, t3.value, { value: Oe(P(t3.value.value.value), n3) }) : null }); } function He(t3, n3) { switch (t3.name.toLocaleLowerCase()) { case "media": case "layer": return function(t4, n4) { return e({}, t4, { value: t4.value ? e({}, t4.value, { value: Oe(P(t4.value.value.value), n4) }) : null }); }(t3, n3); case "keyframes": return function(t4, n4) { let r3 = null; return t4.value && (r3 = e({}, t4.value, { value: { type: 3, value: P(t4.value.value.value).value.map((t5) => { switch (t5.type) { case 26: return function(t6, n5) { return e({}, t6, { value: Re(t6.value, n5) }); }(t5, n4); case 25: return He(t5, n4); } }) } })), e({}, t4, { value: r3 }); }(t3, n3); case "supports": return Qe(t3, n3); case "container": return function(t4, n4) { if (t4.value) { const r3 = $e(t4.prelude); if (r3 !== x) { const u3 = { rule: r3, selector: null, parent: n4.parent, uid: "c" + Ae++ }, o3 = /* @__PURE__ */ new Set(), s3 = [], l3 = Oe(P(t4.value.value.value), { descriptors: n4.descriptors, parent: u3, transformStyleRule: (t5) => { const [n5, r4] = function(e3, t6, n6) { const r5 = C(e3), u4 = [], o4 = []; for (; ; ) { if (0 === r5.at(1).type) return [u4, o4]; const n7 = Math.max(0, r5.index); for (; l5 = r5.at(1), c3 = r5.at(2), !(Fe(l5) || 7 === l5.type && (7 === c3.type || 24 === c3.type && Me.has(c3.value.toLowerCase()))); ) r5.consume(1); const i3 = r5.index + 1, a3 = e3.slice(n7, i3), f3 = a3.length > 0 ? Ue(a3) : [ee("*")]; for (; !Fe(r5.at(1)); ) r5.consume(1); const p2 = e3.slice(i3, Math.max(0, r5.index + 1)); let y3 = f3, h3 = [{ type: 28, source: { type: 9 }, value: { type: 0, value: [ne(p2.length > 0 ? v : d), ee("~"), ee("="), { type: 2, value: t6 }] } }]; if (ze) h3 = [ee(":"), re("where", h3)]; else { const e4 = f3.map(B).join(""); e4.endsWith(Le) ? y3 = N(Array.from($(e4.substring(0, e4.length - Le.length)))) : s3.push({ actual: e4, expected: e4 + Le }); } u4.push(...f3), o4.push(...y3), o4.push(...h3), o4.push(...p2), r5.consume(1); } var l5, c3; }(t5.prelude, u3.uid); if (s3.length > 0) return t5; const l4 = n5.map(B).join(""); try { je.matches(l4), o3.add(l4); } catch (e3) { } return e({}, t5, { prelude: r4 }); } }).value; if (s3.length > 0) { const e3 = /* @__PURE__ */ new Set(), t5 = []; let n5 = 0; for (const { actual: e4 } of s3) n5 = Math.max(n5, e4.length); const r4 = Array.from({ length: n5 }, () => " ").join(""); for (const { actual: u4, expected: o4 } of s3) e3.has(u4) || (t5.push(`${u4}${r4.substring(0, n5 - u4.length)} => ${o4}`), e3.add(u4)); console.warn(`The :where() pseudo-class is not supported by this browser. To use the Container Query Polyfill, you must modify the selectors under your @container rules: ${t5.join("\n")}`); } return o3.size > 0 && (u3.selector = Array.from(o3).join(", ")), n4.descriptors.push(u3), { type: 25, name: "media", prelude: [ne("all")], value: e({}, t4.value, { value: { type: 3, value: l3 } }) }; } } return t4; }(t3, n3); } return t3; } var Ve = class { constructor(e3) { this.value = void 0, this.value = e3; } }; function De(e3, t3) { if (e3 === t3) return true; if (typeof e3 == typeof t3 && null !== e3 && null !== t3 && "object" == typeof e3) { if (Array.isArray(e3)) { if (!Array.isArray(t3) || t3.length !== e3.length) return false; for (let n3 = 0, r3 = e3.length; n3 < r3; n3++) if (!De(e3[n3], t3[n3])) return false; return true; } if (e3 instanceof Ve) return t3 instanceof Ve && e3.value === t3.value; { const n3 = Object.keys(e3); if (n3.length !== Object.keys(t3).length) return false; for (let r3 = 0, u3 = n3.length; r3 < u3; r3++) { const u4 = n3[r3]; if (!De(e3[u4], t3[u4])) return false; } return true; } } return false; } var We = Symbol("CQ_INSTANCE"); var _e = Symbol("CQ_STYLESHEET"); var Be = CSS.supports("width: 1svh"); var Ge = /* @__PURE__ */ new Set(["vertical-lr", "vertical-rl", "sideways-rl", "sideways-lr", "tb", "tb-lr", "tb-rl"]); var Ye = ["padding-left", "padding-right", "border-left-width", "border-right-width"]; var Je = ["padding-top", "padding-bottom", "border-top-width", "border-bottom-width"]; var Ke = /(\w*(\s|-))?(table|ruby)(-\w*)?/; var Xe = class { constructor(e3) { this.node = void 0, this.node = e3; } connected() { } disconnected() { } updated() { } }; var Ze = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.controller = null, this.styleSheet = null, this.context = t3; } connected() { var e3 = this; const t3 = this.node; if ("stylesheet" === t3.rel) { const n3 = new URL(t3.href, document.baseURI); n3.origin === location.origin && (this.controller = rt(async function(r3) { const u3 = await fetch(n3.toString(), { signal: r3 }), o3 = await u3.text(), s3 = e3.styleSheet = await e3.context.registerStyleSheet({ source: o3, url: n3, signal: r3 }), l3 = new Blob([s3.source], { type: "text/css" }), c3 = new Image(); c3.onload = c3.onerror = s3.refresh, c3.src = t3.href = URL.createObjectURL(l3); })); } } disconnected() { var e3, t3; null == (e3 = this.controller) || e3.abort(), this.controller = null, null == (t3 = this.styleSheet) || t3.dispose(), this.styleSheet = null; } }; var et = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.controller = null, this.styleSheet = null, this.context = t3; } connected() { var e3 = this; this.controller = rt(async function(t3) { const n3 = e3.node, r3 = e3.styleSheet = await e3.context.registerStyleSheet({ source: n3.innerHTML, signal: t3 }); n3.innerHTML = r3.source, r3.refresh(); }); } disconnected() { var e3, t3; null == (e3 = this.controller) || e3.abort(), this.controller = null, null == (t3 = this.styleSheet) || t3.dispose(), this.styleSheet = null; } }; var tt = class extends Xe { connected() { const e3 = `* { ${y}: cq-normal; ${h}: cq-none; }`; this.node.innerHTML = void 0 === window.CSSLayerBlockRule ? e3 : `@layer cq-polyfill-${f} { ${e3} }`; } }; var nt = class extends Xe { constructor(e3, t3) { super(e3), this.context = void 0, this.styles = void 0, this.context = t3, this.styles = window.getComputedStyle(e3); } connected() { this.node.style.cssText = "position: fixed; top: 0; left: 0; visibility: hidden; " + (Be ? "width: 1svw; height: 1svh;" : "width: 1%; height: 1%;"); } updated() { const e3 = ct((e4) => this.styles.getPropertyValue(e4)); this.context.viewportChanged({ width: e3.width, height: e3.height }); } }; function rt(e3) { const t3 = new AbortController(); return e3(t3.signal).catch((e4) => { if (!(e4 instanceof DOMException && "AbortError" === e4.message)) throw e4; }), t3; } function ut(e3) { let t3 = 0; if (0 === e3.length) return t3; if (e3.startsWith("cq-") && ("normal" === (e3 = e3.substring("cq-".length)) || ge(e3))) return t3; const n3 = e3.split(" "); for (const e4 of n3) switch (e4) { case "size": t3 |= 3; break; case "inline-size": t3 |= 1; break; default: return 0; } return t3; } function ot(e3) { let t3 = 0; return "none" !== e3 && (t3 |= 1, "contents" === e3 || "inline" === e3 || Ke.test(e3) || (t3 |= 2)), t3; } function st(e3, t3) { return parseFloat(e3(t3)); } function lt(e3, t3) { return t3.reduce((t4, n3) => t4 + st(e3, n3), 0); } function ct(e3) { let t3 = 0, n3 = 0; return "border-box" === e3("box-sizing") && (t3 = lt(e3, Ye), n3 = lt(e3, Je)), { fontSize: st(e3, "font-size"), width: st(e3, "width") - t3, height: st(e3, "height") - n3 }; } function it(e3) { return { containerType: ut(e3(y).trim()), containerNames: (n3 = e3(h).trim(), n3.startsWith("cq-") && ("none" === (n3 = n3.substring("cq-".length)) || ge(n3)) ? /* @__PURE__ */ new Set([]) : new Set(0 === n3.length ? [] : n3.split(" "))), writingAxis: (t3 = e3("writing-mode").trim(), Ge.has(t3) ? 1 : 0), displayFlags: ot(e3("display").trim()) }; var t3, n3; } function at(e3, t3, n3) { null != n3 ? n3 != e3.getPropertyValue(t3) && e3.setProperty(t3, n3) : e3.removeProperty(t3); } function ft(e3) { const t3 = e3[_e]; return null != t3 ? t3 : []; } function pt(e3, t3) { e3[_e] = t3; } new Promise((e3) => { }), window.CQPolyfill = { version: "1.0.2" }, "container" in document.documentElement.style || function(n3) { function r3(e3) { return e3[We] || null; } const u3 = document.documentElement; if (r3(u3)) return; const o3 = document.createElement(`cq-polyfill-${f}`), s3 = document.createElement("style"); new MutationObserver((e3) => { for (const t3 of e3) { for (const e4 of t3.removedNodes) { const t4 = r3(e4); null == t4 || t4.disconnect(); } t3.target.nodeType !== Node.DOCUMENT_NODE && t3.target.nodeType !== Node.DOCUMENT_FRAGMENT_NODE && null === t3.target.parentNode || "attributes" === t3.type && t3.attributeName && (t3.attributeName === v || t3.attributeName === d || t3.target instanceof Element && t3.target.getAttribute(t3.attributeName) === t3.oldValue) || (A3(t3.target).mutate(), S2()); } }).observe(u3, { childList: true, subtree: true, attributes: true, attributeOldValue: true }); const l3 = new ResizeObserver((e3) => { for (const t3 of e3) A3(t3.target).resize(); A3(u3).update(C3()); }), c3 = new Xe(u3); async function a3(e3, { source: t3, url: n4, signal: r4 }) { const o4 = function(e4, t4) { try { const n5 = Array.from($(e4)); if (t4) for (let e5 = 0; e5 < n5.length; e5++) { const r6 = n5[e5]; if (20 === r6.type) r6.value = new URL(r6.value, t4).toString(); else if (23 === r6.type && "url" === r6.value.toLowerCase()) { const r7 = e5 + 1 < n5.length ? n5[e5 + 1] : null; r7 && 2 === r7.type && (r7.value = new URL(r7.value, t4).toString()); } } const r5 = { descriptors: [], parent: null, transformStyleRule: (e5) => e5 }; return { source: _(Oe(P(n5, true), r5)), descriptors: r5.descriptors }; } catch (t5) { return console.warn("An error occurred while transpiling stylesheet: " + t5), { source: e4, descriptors: [] }; } }(t3, n4 ? n4.toString() : void 0); let s4 = () => { }, l4 = () => { }; const c4 = A3(u3); let i3 = false; return null != r4 && r4.aborted || (l4 = () => { if (!i3) { const { sheet: t4 } = e3; null != t4 && (pt(t4, o4.descriptors), i3 = true, s4 = () => { pt(t4), c4.mutate(), S2(); }, c4.mutate(), S2()); } }), { source: o4.source, dispose: s4, refresh: l4 }; } const p2 = { cqw: null, cqh: null }; function y3({ width: e3, height: t3 }) { p2.cqw = e3, p2.cqh = t3; } function h3(e3, t3, n4) { if (e3 instanceof Element && t3) { let r4 = ""; for (const [n5, u4] of t3.conditions) { const t4 = n5.value; null != t4.selector && null != u4 && 2 == (2 & u4) && e3.matches(t4.selector) && (r4.length > 0 && (r4 += " "), r4 += t4.uid); } r4.length > 0 ? e3.setAttribute(n4, r4) : e3.removeAttribute(n4); } } function S2() { l3.unobserve(u3), l3.observe(u3); } const x3 = () => { const e3 = []; for (const t3 of document.styleSheets) for (const n4 of ft(t3)) e3.push([new Ve(n4), 0]); return e3; }, q2 = window.getComputedStyle(u3), C3 = () => { const t3 = (e3) => q2.getPropertyValue(e3), n4 = it(t3), r4 = ct(t3); return { parentState: null, conditions: x3(), context: e({}, p2, { fontSize: r4.fontSize, rootFontSize: r4.fontSize, writingAxis: n4.writingAxis }), displayFlags: n4.displayFlags, isQueryContainer: false }; }, k3 = (e3) => e3; function A3(n4) { let f3 = r3(n4); if (!f3) { let p3, S3 = null, x4 = false; n4 === u3 ? (p3 = c3, S3 = k3) : n4 === o3 ? (x4 = true, p3 = new nt(o3, { viewportChanged: y3 })) : p3 = n4 === s3 ? new tt(s3) : n4 instanceof HTMLLinkElement ? new Ze(n4, { registerStyleSheet: (t3) => a3(n4, e({}, t3)) }) : n4 instanceof HTMLStyleElement ? new et(n4, { registerStyleSheet: (t3) => a3(n4, e({}, t3)) }) : new Xe(n4); let q3 = Symbol(); if (null == S3 && n4 instanceof Element) { const r4 = function(n5) { const r5 = window.getComputedStyle(n5); return function(n6) { let u4 = null; return (...n7) => { if (null == u4 || !De(u4[0], n7)) { const o4 = ((n8, u5) => { const { context: o5, conditions: s4 } = n8, l4 = (e3) => r5.getPropertyValue(e3), c4 = it(l4), a4 = e({}, o5, { writingAxis: c4.writingAxis }); let f4 = s4, p4 = false, y4 = c4.displayFlags; 0 == (1 & n8.displayFlags) && (y4 = 0); const { containerType: h4, containerNames: v3 } = c4; if (h4 > 0) { const e3 = h4 > 0 && 2 == (2 & y4), n9 = new Map(s4.map((e4) => [e4[0].value, e4[1]])); if (f4 = [], p4 = true, e3) { const e4 = ct(l4); a4.fontSize = e4.fontSize; const r6 = function(e5, t3) { const n10 = { value: t3.width }, r7 = { value: t3.height }; let u7 = n10, o6 = r7; if (1 === e5.writingAxis) { const e6 = u7; u7 = o6, o6 = e6; } return 2 != (2 & e5.containerType) && (o6.value = void 0), { width: n10.value, height: r7.value, inlineSize: u7.value, blockSize: o6.value }; }(c4, e4), u6 = { sizeFeatures: r6, treeContext: a4 }, p5 = (e5) => { const { rule: r7 } = e5, o6 = r7.name, s5 = null == o6 || v3.has(o6) ? function(e6, n10) { const r8 = /* @__PURE__ */ new Map(), u7 = n10.sizeFeatures; for (const n11 of e6.features) { const e7 = t(n11, u7); if (1 === e7.type) return null; r8.set(n11, e7); } const o7 = i(e6.condition, { sizeFeatures: r8, treeContext: n10.treeContext }); return 5 === o7.type ? o7.value : null; }(r7, u6) : null; var l5; return null == s5 ? 1 === ((null != (l5 = n9.get(e5)) ? l5 : 0) && 1) : true === s5; }, y5 = (e5, t3) => { let n10 = e5.get(t3); if (null == n10) { const r7 = p5(t3); n10 = (r7 ? 1 : 0) | (true !== r7 || null != t3.parent && 1 != (1 & y5(e5, t3.parent)) ? 0 : 2), e5.set(t3, n10); } return n10; }, h5 = /* @__PURE__ */ new Map(); for (const e5 of s4) f4.push([e5[0], y5(h5, e5[0].value)]); a4.cqw = null != r6.width ? r6.width / 100 : o5.cqw, a4.cqh = null != r6.height ? r6.height / 100 : o5.cqh; } } return { parentState: new Ve(n8), conditions: f4, context: a4, displayFlags: y4, isQueryContainer: p4 }; })(...n7); null != u4 && De(u4[1], o4) || (u4 = [n7, o4]); } return u4[1]; }; }(); }(n4); S3 = (e3) => r4(e3, q3); } const C4 = S3 || k3; let $3 = null; const E2 = (e3) => { const t3 = $3, n5 = C4(e3); return $3 = n5, [$3, $3 !== t3]; }, z3 = n4 instanceof HTMLElement || n4 instanceof SVGElement ? n4.style : null; let L2 = false; f3 = { connect() { for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) A3(e3); p3.connected(); }, disconnect() { n4 instanceof Element && (l3.unobserve(n4), n4.removeAttribute(v), n4.removeAttribute(d)), z3 && (z3.removeProperty(g), z3.removeProperty(b), z3.removeProperty(m), z3.removeProperty(w)); for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) { const t3 = r3(e3); null == t3 || t3.disconnect(); } p3.disconnected(), delete n4[We]; }, update(e3) { const [t3, r4] = E2(e3); if (r4) { if (h3(n4, e3, d), h3(n4, t3, v), n4 instanceof Element) { const e4 = x4 || t3.isQueryContainer; e4 && !L2 ? (l3.observe(n4), L2 = true) : !e4 && L2 && (l3.unobserve(n4), L2 = false); } if (z3) { const n5 = t3.context, r5 = n5.writingAxis; let u4 = null, o4 = null, s4 = null, l4 = null; (r5 !== e3.context.writingAxis || t3.isQueryContainer) && (u4 = `var(${0 === r5 ? m : w})`, o4 = `var(${1 === r5 ? m : w})`), e3 && !t3.isQueryContainer || (n5.cqw && (s4 = n5.cqw + "px"), n5.cqh && (l4 = n5.cqh + "px")), at(z3, g, u4), at(z3, b, o4), at(z3, m, s4), at(z3, w, l4); } p3.updated(); } for (let e4 = n4.firstChild; null != e4; e4 = e4.nextSibling) A3(e4).update(t3); }, resize() { q3 = Symbol(); }, mutate() { q3 = Symbol(); for (let e3 = n4.firstChild; null != e3; e3 = e3.nextSibling) A3(e3).mutate(); } }, n4[We] = f3, f3.connect(); } return f3; } u3.prepend(s3, o3), A3(u3), S2(); }(); // ../../../node_modules/alpine-turbo-drive-adapter/dist/alpine-turbo-drive-adapter.esm.js function isValidVersion(required, current) { var requiredArray = required.split("."); var currentArray = current.split("."); for (var i3 = 0; i3 < requiredArray.length; i3++) { if (currentArray[i3] && currentArray[i3] > requiredArray[i3]) { return true; } } return currentArray[requiredArray.length - 1] === requiredArray[requiredArray.length - 1]; } function dispatch(el, name) { var detail = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; el.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable: true })); } var Bridge = class { init() { if (!window.Alpine.version || !isValidVersion("3.0.0", window.Alpine.version)) { throw new Error("Invalid Alpine version. Please use Alpine 3.0.0 or above"); } window.Alpine.mutateDom(() => { document.body.querySelectorAll("[x-cloak]").forEach((el) => { var _el$getAttribute; el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute = el.getAttribute("x-cloak")) !== null && _el$getAttribute !== void 0 ? _el$getAttribute : ""); }); }); this.configureEventHandlers(); } configureEventHandlers() { var renderCallback = (event) => { if (document.documentElement.hasAttribute("data-turbo-preview")) { return; } dispatch(document, "alpine:init"); dispatch(document, "alpine:initializing"); window.Alpine.flushAndStopDeferringMutations(); dispatch(document, "alpine:initialised"); window.Alpine.mutateDom(() => { document.querySelectorAll("[data-alpine-ignored]").forEach((el) => { el.removeAttribute("x-ignore"); el.removeAttribute("data-alpine-ignored"); }); }); }; var beforeRenderCallback = (event) => { window.Alpine.mutateDom(() => { if (document.documentElement.hasAttribute("data-turbo-preview")) { return; } event.detail.newBody.querySelectorAll("[data-alpine-generated-me],[x-cloak]").forEach((el) => { if (el.hasAttribute("x-cloak")) { var _el$getAttribute2; el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute2 = el.getAttribute("x-cloak")) !== null && _el$getAttribute2 !== void 0 ? _el$getAttribute2 : ""); } if (el.hasAttribute("data-alpine-generated-me")) { el.removeAttribute("data-alpine-generated-me"); el.remove(); } }); }); window.Alpine.deferMutations(); }; var beforeCacheCallback = (event) => { window.Alpine.mutateDom(() => { document.body.querySelectorAll("[x-for],[x-if],[data-alpine-was-cloaked]").forEach((el) => { if (el.hasAttribute("data-alpine-was-cloaked")) { var _el$getAttribute3; el.setAttribute("x-cloak", (_el$getAttribute3 = el.getAttribute("data-alpine-was-cloaked")) !== null && _el$getAttribute3 !== void 0 ? _el$getAttribute3 : ""); el.removeAttribute("data-alpine-was-cloaked"); } if (el.hasAttribute("x-for") && el._x_lookup) { Object.values(el._x_lookup).forEach((el2) => el2.setAttribute("data-alpine-generated-me", true)); } if (el.hasAttribute("x-if") && el._x_currentIfEl) { el._x_currentIfEl.setAttribute("data-alpine-generated-me", true); } }); }); document.querySelectorAll("[data-turbo-permanent]").forEach((el) => { window.Alpine.mutateDom(() => { if (!el.hasAttribute("x-ignore")) { el.setAttribute("x-ignore", true); el.setAttribute("data-alpine-ignored", true); } el.querySelectorAll("[data-alpine-generated-me]").forEach((sub) => { sub.removeAttribute("data-alpine-generated-me"); }); }); }); }; document.addEventListener("turbo:render", renderCallback); document.addEventListener("turbo:before-render", beforeRenderCallback); document.addEventListener("turbo:before-cache", beforeCacheCallback); } }; if (window.Alpine) { console.error("Alpine-turbo-drive-adapter must be included before AlpineJs"); } if (!Object.getOwnPropertyDescriptor(NodeList.prototype, "forEach")) { Object.defineProperty(NodeList.prototype, "forEach", Object.getOwnPropertyDescriptor(Array.prototype, "forEach")); } document.addEventListener("alpine:init", () => { var bridge = new Bridge(); bridge.init(); }, { once: true }); // ../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js (function() { if (window.Reflect === void 0 || window.customElements === void 0 || window.customElements.polyfillWrapFlushCallback) { return; } const BuiltInHTMLElement = HTMLElement; const wrapperForTheName = { HTMLElement: function HTMLElement2() { return Reflect.construct(BuiltInHTMLElement, [], this.constructor); } }; window.HTMLElement = wrapperForTheName["HTMLElement"]; HTMLElement.prototype = BuiltInHTMLElement.prototype; HTMLElement.prototype.constructor = HTMLElement; Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement); })(); (function(prototype) { if (typeof prototype.requestSubmit == "function") return; prototype.requestSubmit = function(submitter) { if (submitter) { validateSubmitter(submitter, this); submitter.click(); } else { submitter = document.createElement("input"); submitter.type = "submit"; submitter.hidden = true; this.appendChild(submitter); submitter.click(); this.removeChild(submitter); } }; function validateSubmitter(submitter, form) { submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'"); submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button"); submitter.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError"); } function raise(errorConstructor, message2, name) { throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message2 + ".", name); } })(HTMLFormElement.prototype); var submittersByForm = /* @__PURE__ */ new WeakMap(); function findSubmitterFromClickTarget(target) { const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; const candidate = element ? element.closest("input, button") : null; return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == "submit" ? candidate : null; } function clickCaptured(event) { const submitter = findSubmitterFromClickTarget(event.target); if (submitter && submitter.form) { submittersByForm.set(submitter.form, submitter); } } (function() { if ("submitter" in Event.prototype) return; let prototype = window.Event.prototype; if ("SubmitEvent" in window && /Apple Computer/.test(navigator.vendor)) { prototype = window.SubmitEvent.prototype; } else if ("SubmitEvent" in window) { return; } addEventListener("click", clickCaptured, true); Object.defineProperty(prototype, "submitter", { get() { if (this.type == "submit" && this.target instanceof HTMLFormElement) { return submittersByForm.get(this.target); } } }); })(); var FrameLoadingStyle; (function(FrameLoadingStyle2) { FrameLoadingStyle2["eager"] = "eager"; FrameLoadingStyle2["lazy"] = "lazy"; })(FrameLoadingStyle || (FrameLoadingStyle = {})); var FrameElement = class extends HTMLElement { static get observedAttributes() { return ["disabled", "complete", "loading", "src"]; } constructor() { super(); this.loaded = Promise.resolve(); this.delegate = new FrameElement.delegateConstructor(this); } connectedCallback() { this.delegate.connect(); } disconnectedCallback() { this.delegate.disconnect(); } reload() { return this.delegate.sourceURLReloaded(); } attributeChangedCallback(name) { if (name == "loading") { this.delegate.loadingStyleChanged(); } else if (name == "complete") { this.delegate.completeChanged(); } else if (name == "src") { this.delegate.sourceURLChanged(); } else { this.delegate.disabledChanged(); } } get src() { return this.getAttribute("src"); } set src(value) { if (value) { this.setAttribute("src", value); } else { this.removeAttribute("src"); } } get loading() { return frameLoadingStyleFromString(this.getAttribute("loading") || ""); } set loading(value) { if (value) { this.setAttribute("loading", value); } else { this.removeAttribute("loading"); } } get disabled() { return this.hasAttribute("disabled"); } set disabled(value) { if (value) { this.setAttribute("disabled", ""); } else { this.removeAttribute("disabled"); } } get autoscroll() { return this.hasAttribute("autoscroll"); } set autoscroll(value) { if (value) { this.setAttribute("autoscroll", ""); } else { this.removeAttribute("autoscroll"); } } get complete() { return !this.delegate.isLoading; } get isActive() { return this.ownerDocument === document && !this.isPreview; } get isPreview() { var _a, _b; return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute("data-turbo-preview"); } }; function frameLoadingStyleFromString(style) { switch (style.toLowerCase()) { case "lazy": return FrameLoadingStyle.lazy; default: return FrameLoadingStyle.eager; } } function expandURL(locatable) { return new URL(locatable.toString(), document.baseURI); } function getAnchor(url) { let anchorMatch; if (url.hash) { return url.hash.slice(1); } else if (anchorMatch = url.href.match(/#(.*)$/)) { return anchorMatch[1]; } } function getAction(form, submitter) { const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formaction")) || form.getAttribute("action") || form.action; return expandURL(action); } function getExtension(url) { return (getLastPathComponent(url).match(/\.[^.]*$/) || [])[0] || ""; } function isHTML(url) { return !!getExtension(url).match(/^(?:|\.(?:htm|html|xhtml|php))$/); } function isPrefixedBy(baseURL, url) { const prefix2 = getPrefix(url); return baseURL.href === expandURL(prefix2).href || baseURL.href.startsWith(prefix2); } function locationIsVisitable(location2, rootLocation) { return isPrefixedBy(location2, rootLocation) && isHTML(location2); } function getRequestURL(url) { const anchor = getAnchor(url); return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href; } function toCacheKey(url) { return getRequestURL(url); } function urlsAreEqual(left2, right2) { return expandURL(left2).href == expandURL(right2).href; } function getPathComponents(url) { return url.pathname.split("/").slice(1); } function getLastPathComponent(url) { return getPathComponents(url).slice(-1)[0]; } function getPrefix(url) { return addTrailingSlash(url.origin + url.pathname); } function addTrailingSlash(value) { return value.endsWith("/") ? value : value + "/"; } var FetchResponse = class { constructor(response) { this.response = response; } get succeeded() { return this.response.ok; } get failed() { return !this.succeeded; } get clientError() { return this.statusCode >= 400 && this.statusCode <= 499; } get serverError() { return this.statusCode >= 500 && this.statusCode <= 599; } get redirected() { return this.response.redirected; } get location() { return expandURL(this.response.url); } get isHTML() { return this.contentType && this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/); } get statusCode() { return this.response.status; } get contentType() { return this.header("Content-Type"); } get responseText() { return this.response.clone().text(); } get responseHTML() { if (this.isHTML) { return this.response.clone().text(); } else { return Promise.resolve(void 0); } } header(name) { return this.response.headers.get(name); } }; function activateScriptElement(element) { if (element.getAttribute("data-turbo-eval") == "false") { return element; } else { const createdScriptElement = document.createElement("script"); const cspNonce = getMetaContent("csp-nonce"); if (cspNonce) { createdScriptElement.nonce = cspNonce; } createdScriptElement.textContent = element.textContent; createdScriptElement.async = false; copyElementAttributes(createdScriptElement, element); return createdScriptElement; } } function copyElementAttributes(destinationElement, sourceElement) { for (const { name, value } of sourceElement.attributes) { destinationElement.setAttribute(name, value); } } function createDocumentFragment(html) { const template = document.createElement("template"); template.innerHTML = html; return template.content; } function dispatch2(eventName, { target, cancelable, detail } = {}) { const event = new CustomEvent(eventName, { cancelable, bubbles: true, composed: true, detail }); if (target && target.isConnected) { target.dispatchEvent(event); } else { document.documentElement.dispatchEvent(event); } return event; } function nextAnimationFrame() { return new Promise((resolve) => requestAnimationFrame(() => resolve())); } function nextEventLoopTick() { return new Promise((resolve) => setTimeout(() => resolve(), 0)); } function nextMicrotask() { return Promise.resolve(); } function parseHTMLDocument(html = "") { return new DOMParser().parseFromString(html, "text/html"); } function unindent(strings, ...values) { const lines = interpolate(strings, values).replace(/^\n/, "").split("\n"); const match = lines[0].match(/^\s+/); const indent = match ? match[0].length : 0; return lines.map((line) => line.slice(indent)).join("\n"); } function interpolate(strings, values) { return strings.reduce((result, string, i3) => { const value = values[i3] == void 0 ? "" : values[i3]; return result + string + value; }, ""); } function uuid() { return Array.from({ length: 36 }).map((_3, i3) => { if (i3 == 8 || i3 == 13 || i3 == 18 || i3 == 23) { return "-"; } else if (i3 == 14) { return "4"; } else if (i3 == 19) { return (Math.floor(Math.random() * 4) + 8).toString(16); } else { return Math.floor(Math.random() * 15).toString(16); } }).join(""); } function getAttribute(attributeName, ...elements) { for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) { if (typeof value == "string") return value; } return null; } function hasAttribute(attributeName, ...elements) { return elements.some((element) => element && element.hasAttribute(attributeName)); } function markAsBusy(...elements) { for (const element of elements) { if (element.localName == "turbo-frame") { element.setAttribute("busy", ""); } element.setAttribute("aria-busy", "true"); } } function clearBusyState(...elements) { for (const element of elements) { if (element.localName == "turbo-frame") { element.removeAttribute("busy"); } element.removeAttribute("aria-busy"); } } function waitForLoad(element, timeoutInMilliseconds = 2e3) { return new Promise((resolve) => { const onComplete = () => { element.removeEventListener("error", onComplete); element.removeEventListener("load", onComplete); resolve(); }; element.addEventListener("load", onComplete, { once: true }); element.addEventListener("error", onComplete, { once: true }); setTimeout(resolve, timeoutInMilliseconds); }); } function getHistoryMethodForAction(action) { switch (action) { case "replace": return history.replaceState; case "advance": case "restore": return history.pushState; } } function isAction(action) { return action == "advance" || action == "replace" || action == "restore"; } function getVisitAction(...elements) { const action = getAttribute("data-turbo-action", ...elements); return isAction(action) ? action : null; } function getMetaElement(name) { return document.querySelector(`meta[name="${name}"]`); } function getMetaContent(name) { const element = getMetaElement(name); return element && element.content; } function setMetaContent(name, content2) { let element = getMetaElement(name); if (!element) { element = document.createElement("meta"); element.setAttribute("name", name); document.head.appendChild(element); } element.setAttribute("content", content2); return element; } function findClosestRecursively(element, selector) { var _a; if (element instanceof Element) { return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector); } } var FetchMethod; (function(FetchMethod2) { FetchMethod2[FetchMethod2["get"] = 0] = "get"; FetchMethod2[FetchMethod2["post"] = 1] = "post"; FetchMethod2[FetchMethod2["put"] = 2] = "put"; FetchMethod2[FetchMethod2["patch"] = 3] = "patch"; FetchMethod2[FetchMethod2["delete"] = 4] = "delete"; })(FetchMethod || (FetchMethod = {})); function fetchMethodFromString(method) { switch (method.toLowerCase()) { case "get": return FetchMethod.get; case "post": return FetchMethod.post; case "put": return FetchMethod.put; case "patch": return FetchMethod.patch; case "delete": return FetchMethod.delete; } } var FetchRequest = class { constructor(delegate, method, location2, body = new URLSearchParams(), target = null) { this.abortController = new AbortController(); this.resolveRequestPromise = (_value) => { }; this.delegate = delegate; this.method = method; this.headers = this.defaultHeaders; this.body = body; this.url = location2; this.target = target; } get location() { return this.url; } get params() { return this.url.searchParams; } get entries() { return this.body ? Array.from(this.body.entries()) : []; } cancel() { this.abortController.abort(); } async perform() { const { fetchOptions } = this; this.delegate.prepareRequest(this); await this.allowRequestToBeIntercepted(fetchOptions); try { this.delegate.requestStarted(this); const response = await fetch(this.url.href, fetchOptions); return await this.receive(response); } catch (error2) { if (error2.name !== "AbortError") { if (this.willDelegateErrorHandling(error2)) { this.delegate.requestErrored(this, error2); } throw error2; } } finally { this.delegate.requestFinished(this); } } async receive(response) { const fetchResponse = new FetchResponse(response); const event = dispatch2("turbo:before-fetch-response", { cancelable: true, detail: { fetchResponse }, target: this.target }); if (event.defaultPrevented) { this.delegate.requestPreventedHandlingResponse(this, fetchResponse); } else if (fetchResponse.succeeded) { this.delegate.requestSucceededWithResponse(this, fetchResponse); } else { this.delegate.requestFailedWithResponse(this, fetchResponse); } return fetchResponse; } get fetchOptions() { var _a; return { method: FetchMethod[this.method].toUpperCase(), credentials: "same-origin", headers: this.headers, redirect: "follow", body: this.isSafe ? null : this.body, signal: this.abortSignal, referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href }; } get defaultHeaders() { return { Accept: "text/html, application/xhtml+xml" }; } get isSafe() { return this.method === FetchMethod.get; } get abortSignal() { return this.abortController.signal; } acceptResponseType(mimeType) { this.headers["Accept"] = [mimeType, this.headers["Accept"]].join(", "); } async allowRequestToBeIntercepted(fetchOptions) { const requestInterception = new Promise((resolve) => this.resolveRequestPromise = resolve); const event = dispatch2("turbo:before-fetch-request", { cancelable: true, detail: { fetchOptions, url: this.url, resume: this.resolveRequestPromise }, target: this.target }); if (event.defaultPrevented) await requestInterception; } willDelegateErrorHandling(error2) { const event = dispatch2("turbo:fetch-request-error", { target: this.target, cancelable: true, detail: { request: this, error: error2 } }); return !event.defaultPrevented; } }; var AppearanceObserver = class { constructor(delegate, element) { this.started = false; this.intersect = (entries) => { const lastEntry = entries.slice(-1)[0]; if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) { this.delegate.elementAppearedInViewport(this.element); } }; this.delegate = delegate; this.element = element; this.intersectionObserver = new IntersectionObserver(this.intersect); } start() { if (!this.started) { this.started = true; this.intersectionObserver.observe(this.element); } } stop() { if (this.started) { this.started = false; this.intersectionObserver.unobserve(this.element); } } }; var StreamMessage = class { static wrap(message2) { if (typeof message2 == "string") { return new this(createDocumentFragment(message2)); } else { return message2; } } constructor(fragment) { this.fragment = importStreamElements(fragment); } }; StreamMessage.contentType = "text/vnd.turbo-stream.html"; function importStreamElements(fragment) { for (const element of fragment.querySelectorAll("turbo-stream")) { const streamElement = document.importNode(element, true); for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script")) { inertScriptElement.replaceWith(activateScriptElement(inertScriptElement)); } element.replaceWith(streamElement); } return fragment; } var FormSubmissionState; (function(FormSubmissionState2) { FormSubmissionState2[FormSubmissionState2["initialized"] = 0] = "initialized"; FormSubmissionState2[FormSubmissionState2["requesting"] = 1] = "requesting"; FormSubmissionState2[FormSubmissionState2["waiting"] = 2] = "waiting"; FormSubmissionState2[FormSubmissionState2["receiving"] = 3] = "receiving"; FormSubmissionState2[FormSubmissionState2["stopping"] = 4] = "stopping"; FormSubmissionState2[FormSubmissionState2["stopped"] = 5] = "stopped"; })(FormSubmissionState || (FormSubmissionState = {})); var FormEnctype; (function(FormEnctype2) { FormEnctype2["urlEncoded"] = "application/x-www-form-urlencoded"; FormEnctype2["multipart"] = "multipart/form-data"; FormEnctype2["plain"] = "text/plain"; })(FormEnctype || (FormEnctype = {})); function formEnctypeFromString(encoding) { switch (encoding.toLowerCase()) { case FormEnctype.multipart: return FormEnctype.multipart; case FormEnctype.plain: return FormEnctype.plain; default: return FormEnctype.urlEncoded; } } var FormSubmission = class { static confirmMethod(message2, _element, _submitter) { return Promise.resolve(confirm(message2)); } constructor(delegate, formElement, submitter, mustRedirect = false) { this.state = FormSubmissionState.initialized; this.delegate = delegate; this.formElement = formElement; this.submitter = submitter; this.formData = buildFormData(formElement, submitter); this.location = expandURL(this.action); if (this.method == FetchMethod.get) { mergeFormDataEntries(this.location, [...this.body.entries()]); } this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement); this.mustRedirect = mustRedirect; } get method() { var _a; const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formmethod")) || this.formElement.getAttribute("method") || ""; return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get; } get action() { var _a; const formElementAction = typeof this.formElement.action === "string" ? this.formElement.action : null; if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute("formaction")) { return this.submitter.getAttribute("formaction") || ""; } else { return this.formElement.getAttribute("action") || formElementAction || ""; } } get body() { if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) { return new URLSearchParams(this.stringFormData); } else { return this.formData; } } get enctype() { var _a; return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formenctype")) || this.formElement.enctype); } get isSafe() { return this.fetchRequest.isSafe; } get stringFormData() { return [...this.formData].reduce((entries, [name, value]) => { return entries.concat(typeof value == "string" ? [[name, value]] : []); }, []); } async start() { const { initialized, requesting } = FormSubmissionState; const confirmationMessage = getAttribute("data-turbo-confirm", this.submitter, this.formElement); if (typeof confirmationMessage === "string") { const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter); if (!answer) { return; } } if (this.state == initialized) { this.state = requesting; return this.fetchRequest.perform(); } } stop() { const { stopping, stopped } = FormSubmissionState; if (this.state != stopping && this.state != stopped) { this.state = stopping; this.fetchRequest.cancel(); return true; } } prepareRequest(request) { if (!request.isSafe) { const token = getCookieValue(getMetaContent("csrf-param")) || getMetaContent("csrf-token"); if (token) { request.headers["X-CSRF-Token"] = token; } } if (this.requestAcceptsTurboStreamResponse(request)) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted(_request) { var _a; this.state = FormSubmissionState.waiting; (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute("disabled", ""); this.setSubmitsWith(); dispatch2("turbo:submit-start", { target: this.formElement, detail: { formSubmission: this } }); this.delegate.formSubmissionStarted(this); } requestPreventedHandlingResponse(request, response) { this.result = { success: response.succeeded, fetchResponse: response }; } requestSucceededWithResponse(request, response) { if (response.clientError || response.serverError) { this.delegate.formSubmissionFailedWithResponse(this, response); } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) { const error2 = new Error("Form responses must redirect to another location"); this.delegate.formSubmissionErrored(this, error2); } else { this.state = FormSubmissionState.receiving; this.result = { success: true, fetchResponse: response }; this.delegate.formSubmissionSucceededWithResponse(this, response); } } requestFailedWithResponse(request, response) { this.result = { success: false, fetchResponse: response }; this.delegate.formSubmissionFailedWithResponse(this, response); } requestErrored(request, error2) { this.result = { success: false, error: error2 }; this.delegate.formSubmissionErrored(this, error2); } requestFinished(_request) { var _a; this.state = FormSubmissionState.stopped; (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute("disabled"); this.resetSubmitterText(); dispatch2("turbo:submit-end", { target: this.formElement, detail: Object.assign({ formSubmission: this }, this.result) }); this.delegate.formSubmissionFinished(this); } setSubmitsWith() { if (!this.submitter || !this.submitsWith) return; if (this.submitter.matches("button")) { this.originalSubmitText = this.submitter.innerHTML; this.submitter.innerHTML = this.submitsWith; } else if (this.submitter.matches("input")) { const input = this.submitter; this.originalSubmitText = input.value; input.value = this.submitsWith; } } resetSubmitterText() { if (!this.submitter || !this.originalSubmitText) return; if (this.submitter.matches("button")) { this.submitter.innerHTML = this.originalSubmitText; } else if (this.submitter.matches("input")) { const input = this.submitter; input.value = this.originalSubmitText; } } requestMustRedirect(request) { return !request.isSafe && this.mustRedirect; } requestAcceptsTurboStreamResponse(request) { return !request.isSafe || hasAttribute("data-turbo-stream", this.submitter, this.formElement); } get submitsWith() { var _a; return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("data-turbo-submits-with"); } }; function buildFormData(formElement, submitter) { const formData = new FormData(formElement); const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("name"); const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("value"); if (name) { formData.append(name, value || ""); } return formData; } function getCookieValue(cookieName) { if (cookieName != null) { const cookies = document.cookie ? document.cookie.split("; ") : []; const cookie = cookies.find((cookie2) => cookie2.startsWith(cookieName)); if (cookie) { const value = cookie.split("=").slice(1).join("="); return value ? decodeURIComponent(value) : void 0; } } } function responseSucceededWithoutRedirect(response) { return response.statusCode == 200 && !response.redirected; } function mergeFormDataEntries(url, entries) { const searchParams = new URLSearchParams(); for (const [name, value] of entries) { if (value instanceof File) continue; searchParams.append(name, value); } url.search = searchParams.toString(); return url; } var Snapshot = class { constructor(element) { this.element = element; } get activeElement() { return this.element.ownerDocument.activeElement; } get children() { return [...this.element.children]; } hasAnchor(anchor) { return this.getElementForAnchor(anchor) != null; } getElementForAnchor(anchor) { return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null; } get isConnected() { return this.element.isConnected; } get firstAutofocusableElement() { const inertDisabledOrHidden = "[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"; for (const element of this.element.querySelectorAll("[autofocus]")) { if (element.closest(inertDisabledOrHidden) == null) return element; else continue; } return null; } get permanentElements() { return queryPermanentElementsAll(this.element); } getPermanentElementById(id2) { return getPermanentElementById(this.element, id2); } getPermanentElementMapForSnapshot(snapshot) { const permanentElementMap = {}; for (const currentPermanentElement of this.permanentElements) { const { id: id2 } = currentPermanentElement; const newPermanentElement = snapshot.getPermanentElementById(id2); if (newPermanentElement) { permanentElementMap[id2] = [currentPermanentElement, newPermanentElement]; } } return permanentElementMap; } }; function getPermanentElementById(node, id2) { return node.querySelector(`#${id2}[data-turbo-permanent]`); } function queryPermanentElementsAll(node) { return node.querySelectorAll("[id][data-turbo-permanent]"); } var FormSubmitObserver = class { constructor(delegate, eventTarget) { this.started = false; this.submitCaptured = () => { this.eventTarget.removeEventListener("submit", this.submitBubbled, false); this.eventTarget.addEventListener("submit", this.submitBubbled, false); }; this.submitBubbled = (event) => { if (!event.defaultPrevented) { const form = event.target instanceof HTMLFormElement ? event.target : void 0; const submitter = event.submitter || void 0; if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) { event.preventDefault(); event.stopImmediatePropagation(); this.delegate.formSubmitted(form, submitter); } } }; this.delegate = delegate; this.eventTarget = eventTarget; } start() { if (!this.started) { this.eventTarget.addEventListener("submit", this.submitCaptured, true); this.started = true; } } stop() { if (this.started) { this.eventTarget.removeEventListener("submit", this.submitCaptured, true); this.started = false; } } }; function submissionDoesNotDismissDialog(form, submitter) { const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formmethod")) || form.getAttribute("method"); return method != "dialog"; } function submissionDoesNotTargetIFrame(form, submitter) { if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute("formtarget")) || form.hasAttribute("target")) { const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formtarget")) || form.target; for (const element of document.getElementsByName(target)) { if (element instanceof HTMLIFrameElement) return false; } return true; } else { return true; } } var View = class { constructor(delegate, element) { this.resolveRenderPromise = (_value) => { }; this.resolveInterceptionPromise = (_value) => { }; this.delegate = delegate; this.element = element; } scrollToAnchor(anchor) { const element = this.snapshot.getElementForAnchor(anchor); if (element) { this.scrollToElement(element); this.focusElement(element); } else { this.scrollToPosition({ x: 0, y: 0 }); } } scrollToAnchorFromLocation(location2) { this.scrollToAnchor(getAnchor(location2)); } scrollToElement(element) { element.scrollIntoView(); } focusElement(element) { if (element instanceof HTMLElement) { if (element.hasAttribute("tabindex")) { element.focus(); } else { element.setAttribute("tabindex", "-1"); element.focus(); element.removeAttribute("tabindex"); } } } scrollToPosition({ x: x3, y: y3 }) { this.scrollRoot.scrollTo(x3, y3); } scrollToTop() { this.scrollToPosition({ x: 0, y: 0 }); } get scrollRoot() { return window; } async render(renderer) { const { isPreview, shouldRender, newSnapshot: snapshot } = renderer; if (shouldRender) { try { this.renderPromise = new Promise((resolve) => this.resolveRenderPromise = resolve); this.renderer = renderer; await this.prepareToRenderSnapshot(renderer); const renderInterception = new Promise((resolve) => this.resolveInterceptionPromise = resolve); const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement }; const immediateRender = this.delegate.allowsImmediateRender(snapshot, options); if (!immediateRender) await renderInterception; await this.renderSnapshot(renderer); this.delegate.viewRenderedSnapshot(snapshot, isPreview); this.delegate.preloadOnLoadLinksForView(this.element); this.finishRenderingSnapshot(renderer); } finally { delete this.renderer; this.resolveRenderPromise(void 0); delete this.renderPromise; } } else { this.invalidate(renderer.reloadReason); } } invalidate(reason) { this.delegate.viewInvalidated(reason); } async prepareToRenderSnapshot(renderer) { this.markAsPreview(renderer.isPreview); await renderer.prepareToRender(); } markAsPreview(isPreview) { if (isPreview) { this.element.setAttribute("data-turbo-preview", ""); } else { this.element.removeAttribute("data-turbo-preview"); } } async renderSnapshot(renderer) { await renderer.render(); } finishRenderingSnapshot(renderer) { renderer.finishRendering(); } }; var FrameView = class extends View { missing() { this.element.innerHTML = `<strong class="turbo-frame-error">Content missing</strong>`; } get snapshot() { return new Snapshot(this.element); } }; var LinkInterceptor = class { constructor(delegate, element) { this.clickBubbled = (event) => { if (this.respondsToEventTarget(event.target)) { this.clickEvent = event; } else { delete this.clickEvent; } }; this.linkClicked = (event) => { if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) { if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) { this.clickEvent.preventDefault(); event.preventDefault(); this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent); } } delete this.clickEvent; }; this.willVisit = (_event) => { delete this.clickEvent; }; this.delegate = delegate; this.element = element; } start() { this.element.addEventListener("click", this.clickBubbled); document.addEventListener("turbo:click", this.linkClicked); document.addEventListener("turbo:before-visit", this.willVisit); } stop() { this.element.removeEventListener("click", this.clickBubbled); document.removeEventListener("turbo:click", this.linkClicked); document.removeEventListener("turbo:before-visit", this.willVisit); } respondsToEventTarget(target) { const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; return element && element.closest("turbo-frame, html") == this.element; } }; var LinkClickObserver = class { constructor(delegate, eventTarget) { this.started = false; this.clickCaptured = () => { this.eventTarget.removeEventListener("click", this.clickBubbled, false); this.eventTarget.addEventListener("click", this.clickBubbled, false); }; this.clickBubbled = (event) => { if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) { const target = event.composedPath && event.composedPath()[0] || event.target; const link = this.findLinkFromClickTarget(target); if (link && doesNotTargetIFrame(link)) { const location2 = this.getLocationForLink(link); if (this.delegate.willFollowLinkToLocation(link, location2, event)) { event.preventDefault(); this.delegate.followedLinkToLocation(link, location2); } } } }; this.delegate = delegate; this.eventTarget = eventTarget; } start() { if (!this.started) { this.eventTarget.addEventListener("click", this.clickCaptured, true); this.started = true; } } stop() { if (this.started) { this.eventTarget.removeEventListener("click", this.clickCaptured, true); this.started = false; } } clickEventIsSignificant(event) { return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey); } findLinkFromClickTarget(target) { return findClosestRecursively(target, "a[href]:not([target^=_]):not([download])"); } getLocationForLink(link) { return expandURL(link.getAttribute("href") || ""); } }; function doesNotTargetIFrame(anchor) { if (anchor.hasAttribute("target")) { for (const element of document.getElementsByName(anchor.target)) { if (element instanceof HTMLIFrameElement) return false; } return true; } else { return true; } } var FormLinkClickObserver = class { constructor(delegate, element) { this.delegate = delegate; this.linkInterceptor = new LinkClickObserver(this, element); } start() { this.linkInterceptor.start(); } stop() { this.linkInterceptor.stop(); } willFollowLinkToLocation(link, location2, originalEvent) { return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && link.hasAttribute("data-turbo-method"); } followedLinkToLocation(link, location2) { const form = document.createElement("form"); const type = "hidden"; for (const [name, value] of location2.searchParams) { form.append(Object.assign(document.createElement("input"), { type, name, value })); } const action = Object.assign(location2, { search: "" }); form.setAttribute("data-turbo", "true"); form.setAttribute("action", action.href); form.setAttribute("hidden", ""); const method = link.getAttribute("data-turbo-method"); if (method) form.setAttribute("method", method); const turboFrame = link.getAttribute("data-turbo-frame"); if (turboFrame) form.setAttribute("data-turbo-frame", turboFrame); const turboAction = getVisitAction(link); if (turboAction) form.setAttribute("data-turbo-action", turboAction); const turboConfirm = link.getAttribute("data-turbo-confirm"); if (turboConfirm) form.setAttribute("data-turbo-confirm", turboConfirm); const turboStream = link.hasAttribute("data-turbo-stream"); if (turboStream) form.setAttribute("data-turbo-stream", ""); this.delegate.submittedFormLinkToLocation(link, location2, form); document.body.appendChild(form); form.addEventListener("turbo:submit-end", () => form.remove(), { once: true }); requestAnimationFrame(() => form.requestSubmit()); } }; var Bardo = class { static async preservingPermanentElements(delegate, permanentElementMap, callback) { const bardo = new this(delegate, permanentElementMap); bardo.enter(); await callback(); bardo.leave(); } constructor(delegate, permanentElementMap) { this.delegate = delegate; this.permanentElementMap = permanentElementMap; } enter() { for (const id2 in this.permanentElementMap) { const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id2]; this.delegate.enteringBardo(currentPermanentElement, newPermanentElement); this.replaceNewPermanentElementWithPlaceholder(newPermanentElement); } } leave() { for (const id2 in this.permanentElementMap) { const [currentPermanentElement] = this.permanentElementMap[id2]; this.replaceCurrentPermanentElementWithClone(currentPermanentElement); this.replacePlaceholderWithPermanentElement(currentPermanentElement); this.delegate.leavingBardo(currentPermanentElement); } } replaceNewPermanentElementWithPlaceholder(permanentElement) { const placeholder = createPlaceholderForPermanentElement(permanentElement); permanentElement.replaceWith(placeholder); } replaceCurrentPermanentElementWithClone(permanentElement) { const clone2 = permanentElement.cloneNode(true); permanentElement.replaceWith(clone2); } replacePlaceholderWithPermanentElement(permanentElement) { const placeholder = this.getPlaceholderById(permanentElement.id); placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement); } getPlaceholderById(id2) { return this.placeholders.find((element) => element.content == id2); } get placeholders() { return [...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")]; } }; function createPlaceholderForPermanentElement(permanentElement) { const element = document.createElement("meta"); element.setAttribute("name", "turbo-permanent-placeholder"); element.setAttribute("content", permanentElement.id); return element; } var Renderer = class { constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { this.activeElement = null; this.currentSnapshot = currentSnapshot; this.newSnapshot = newSnapshot; this.isPreview = isPreview; this.willRender = willRender; this.renderElement = renderElement; this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject }); } get shouldRender() { return true; } get reloadReason() { return; } prepareToRender() { return; } finishRendering() { if (this.resolvingFunctions) { this.resolvingFunctions.resolve(); delete this.resolvingFunctions; } } async preservingPermanentElements(callback) { await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback); } focusFirstAutofocusableElement() { const element = this.connectedSnapshot.firstAutofocusableElement; if (elementIsFocusable(element)) { element.focus(); } } enteringBardo(currentPermanentElement) { if (this.activeElement) return; if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) { this.activeElement = this.currentSnapshot.activeElement; } } leavingBardo(currentPermanentElement) { if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) { this.activeElement.focus(); this.activeElement = null; } } get connectedSnapshot() { return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot; } get currentElement() { return this.currentSnapshot.element; } get newElement() { return this.newSnapshot.element; } get permanentElementMap() { return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot); } }; function elementIsFocusable(element) { return element && typeof element.focus == "function"; } var FrameRenderer = class extends Renderer { static renderElement(currentElement, newElement) { var _a; const destinationRange = document.createRange(); destinationRange.selectNodeContents(currentElement); destinationRange.deleteContents(); const frameElement = newElement; const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange(); if (sourceRange) { sourceRange.selectNodeContents(frameElement); currentElement.appendChild(sourceRange.extractContents()); } } constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender); this.delegate = delegate; } get shouldRender() { return true; } async render() { await nextAnimationFrame(); this.preservingPermanentElements(() => { this.loadFrameElement(); }); this.scrollFrameIntoView(); await nextAnimationFrame(); this.focusFirstAutofocusableElement(); await nextAnimationFrame(); this.activateScriptElements(); } loadFrameElement() { this.delegate.willRenderFrame(this.currentElement, this.newElement); this.renderElement(this.currentElement, this.newElement); } scrollFrameIntoView() { if (this.currentElement.autoscroll || this.newElement.autoscroll) { const element = this.currentElement.firstElementChild; const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end"); const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto"); if (element) { element.scrollIntoView({ block, behavior }); return true; } } return false; } activateScriptElements() { for (const inertScriptElement of this.newScriptElements) { const activatedScriptElement = activateScriptElement(inertScriptElement); inertScriptElement.replaceWith(activatedScriptElement); } } get newScriptElements() { return this.currentElement.querySelectorAll("script"); } }; function readScrollLogicalPosition(value, defaultValue) { if (value == "end" || value == "start" || value == "center" || value == "nearest") { return value; } else { return defaultValue; } } function readScrollBehavior(value, defaultValue) { if (value == "auto" || value == "smooth") { return value; } else { return defaultValue; } } var ProgressBar = class { static get defaultCSS() { return unindent` .turbo-progress-bar { position: fixed; display: block; top: 0; left: 0; height: 3px; background: #0076ff; z-index: 2147483647; transition: width ${ProgressBar.animationDuration}ms ease-out, opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in; transform: translate3d(0, 0, 0); } `; } constructor() { this.hiding = false; this.value = 0; this.visible = false; this.trickle = () => { this.setValue(this.value + Math.random() / 100); }; this.stylesheetElement = this.createStylesheetElement(); this.progressElement = this.createProgressElement(); this.installStylesheetElement(); this.setValue(0); } show() { if (!this.visible) { this.visible = true; this.installProgressElement(); this.startTrickling(); } } hide() { if (this.visible && !this.hiding) { this.hiding = true; this.fadeProgressElement(() => { this.uninstallProgressElement(); this.stopTrickling(); this.visible = false; this.hiding = false; }); } } setValue(value) { this.value = value; this.refresh(); } installStylesheetElement() { document.head.insertBefore(this.stylesheetElement, document.head.firstChild); } installProgressElement() { this.progressElement.style.width = "0"; this.progressElement.style.opacity = "1"; document.documentElement.insertBefore(this.progressElement, document.body); this.refresh(); } fadeProgressElement(callback) { this.progressElement.style.opacity = "0"; setTimeout(callback, ProgressBar.animationDuration * 1.5); } uninstallProgressElement() { if (this.progressElement.parentNode) { document.documentElement.removeChild(this.progressElement); } } startTrickling() { if (!this.trickleInterval) { this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration); } } stopTrickling() { window.clearInterval(this.trickleInterval); delete this.trickleInterval; } refresh() { requestAnimationFrame(() => { this.progressElement.style.width = `${10 + this.value * 90}%`; }); } createStylesheetElement() { const element = document.createElement("style"); element.type = "text/css"; element.textContent = ProgressBar.defaultCSS; if (this.cspNonce) { element.nonce = this.cspNonce; } return element; } createProgressElement() { const element = document.createElement("div"); element.className = "turbo-progress-bar"; return element; } get cspNonce() { return getMetaContent("csp-nonce"); } }; ProgressBar.animationDuration = 300; var HeadSnapshot = class extends Snapshot { constructor() { super(...arguments); this.detailsByOuterHTML = this.children.filter((element) => !elementIsNoscript(element)).map((element) => elementWithoutNonce(element)).reduce((result, element) => { const { outerHTML } = element; const details = outerHTML in result ? result[outerHTML] : { type: elementType(element), tracked: elementIsTracked(element), elements: [] }; return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) }); }, {}); } get trackedElementSignature() { return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked).join(""); } getScriptElementsNotInSnapshot(snapshot) { return this.getElementsMatchingTypeNotInSnapshot("script", snapshot); } getStylesheetElementsNotInSnapshot(snapshot) { return this.getElementsMatchingTypeNotInSnapshot("stylesheet", snapshot); } getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) { return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML)).map((outerHTML) => this.detailsByOuterHTML[outerHTML]).filter(({ type }) => type == matchedType).map(({ elements: [element] }) => element); } get provisionalElements() { return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML]; if (type == null && !tracked) { return [...result, ...elements]; } else if (elements.length > 1) { return [...result, ...elements.slice(1)]; } else { return result; } }, []); } getMetaValue(name) { const element = this.findMetaElementByName(name); return element ? element.getAttribute("content") : null; } findMetaElementByName(name) { return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { const { elements: [element] } = this.detailsByOuterHTML[outerHTML]; return elementIsMetaElementWithName(element, name) ? element : result; }, void 0); } }; function elementType(element) { if (elementIsScript(element)) { return "script"; } else if (elementIsStylesheet(element)) { return "stylesheet"; } } function elementIsTracked(element) { return element.getAttribute("data-turbo-track") == "reload"; } function elementIsScript(element) { const tagName = element.localName; return tagName == "script"; } function elementIsNoscript(element) { const tagName = element.localName; return tagName == "noscript"; } function elementIsStylesheet(element) { const tagName = element.localName; return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet"; } function elementIsMetaElementWithName(element, name) { const tagName = element.localName; return tagName == "meta" && element.getAttribute("name") == name; } function elementWithoutNonce(element) { if (element.hasAttribute("nonce")) { element.setAttribute("nonce", ""); } return element; } var PageSnapshot = class extends Snapshot { static fromHTMLString(html = "") { return this.fromDocument(parseHTMLDocument(html)); } static fromElement(element) { return this.fromDocument(element.ownerDocument); } static fromDocument({ head, body }) { return new this(body, new HeadSnapshot(head)); } constructor(element, headSnapshot) { super(element); this.headSnapshot = headSnapshot; } clone() { const clonedElement = this.element.cloneNode(true); const selectElements = this.element.querySelectorAll("select"); const clonedSelectElements = clonedElement.querySelectorAll("select"); for (const [index, source] of selectElements.entries()) { const clone2 = clonedSelectElements[index]; for (const option of clone2.selectedOptions) option.selected = false; for (const option of source.selectedOptions) clone2.options[option.index].selected = true; } for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) { clonedPasswordInput.value = ""; } return new PageSnapshot(clonedElement, this.headSnapshot); } get headElement() { return this.headSnapshot.element; } get rootLocation() { var _a; const root = (_a = this.getSetting("root")) !== null && _a !== void 0 ? _a : "/"; return expandURL(root); } get cacheControlValue() { return this.getSetting("cache-control"); } get isPreviewable() { return this.cacheControlValue != "no-preview"; } get isCacheable() { return this.cacheControlValue != "no-cache"; } get isVisitable() { return this.getSetting("visit-control") != "reload"; } getSetting(name) { return this.headSnapshot.getMetaValue(`turbo-${name}`); } }; var TimingMetric; (function(TimingMetric2) { TimingMetric2["visitStart"] = "visitStart"; TimingMetric2["requestStart"] = "requestStart"; TimingMetric2["requestEnd"] = "requestEnd"; TimingMetric2["visitEnd"] = "visitEnd"; })(TimingMetric || (TimingMetric = {})); var VisitState; (function(VisitState2) { VisitState2["initialized"] = "initialized"; VisitState2["started"] = "started"; VisitState2["canceled"] = "canceled"; VisitState2["failed"] = "failed"; VisitState2["completed"] = "completed"; })(VisitState || (VisitState = {})); var defaultOptions = { action: "advance", historyChanged: false, visitCachedSnapshot: () => { }, willRender: true, updateHistory: true, shouldCacheSnapshot: true, acceptsStreamResponse: false }; var SystemStatusCode; (function(SystemStatusCode2) { SystemStatusCode2[SystemStatusCode2["networkFailure"] = 0] = "networkFailure"; SystemStatusCode2[SystemStatusCode2["timeoutFailure"] = -1] = "timeoutFailure"; SystemStatusCode2[SystemStatusCode2["contentTypeMismatch"] = -2] = "contentTypeMismatch"; })(SystemStatusCode || (SystemStatusCode = {})); var Visit = class { constructor(delegate, location2, restorationIdentifier, options = {}) { this.identifier = uuid(); this.timingMetrics = {}; this.followedRedirect = false; this.historyChanged = false; this.scrolled = false; this.shouldCacheSnapshot = true; this.acceptsStreamResponse = false; this.snapshotCached = false; this.state = VisitState.initialized; this.delegate = delegate; this.location = location2; this.restorationIdentifier = restorationIdentifier || uuid(); const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse } = Object.assign(Object.assign({}, defaultOptions), options); this.action = action; this.historyChanged = historyChanged; this.referrer = referrer; this.snapshot = snapshot; this.snapshotHTML = snapshotHTML; this.response = response; this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action); this.visitCachedSnapshot = visitCachedSnapshot; this.willRender = willRender; this.updateHistory = updateHistory; this.scrolled = !willRender; this.shouldCacheSnapshot = shouldCacheSnapshot; this.acceptsStreamResponse = acceptsStreamResponse; } get adapter() { return this.delegate.adapter; } get view() { return this.delegate.view; } get history() { return this.delegate.history; } get restorationData() { return this.history.getRestorationDataForIdentifier(this.restorationIdentifier); } get silent() { return this.isSamePage; } start() { if (this.state == VisitState.initialized) { this.recordTimingMetric(TimingMetric.visitStart); this.state = VisitState.started; this.adapter.visitStarted(this); this.delegate.visitStarted(this); } } cancel() { if (this.state == VisitState.started) { if (this.request) { this.request.cancel(); } this.cancelRender(); this.state = VisitState.canceled; } } complete() { if (this.state == VisitState.started) { this.recordTimingMetric(TimingMetric.visitEnd); this.state = VisitState.completed; this.followRedirect(); if (!this.followedRedirect) { this.adapter.visitCompleted(this); this.delegate.visitCompleted(this); } } } fail() { if (this.state == VisitState.started) { this.state = VisitState.failed; this.adapter.visitFailed(this); } } changeHistory() { var _a; if (!this.historyChanged && this.updateHistory) { const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? "replace" : this.action; const method = getHistoryMethodForAction(actionForHistory); this.history.update(method, this.location, this.restorationIdentifier); this.historyChanged = true; } } issueRequest() { if (this.hasPreloadedResponse()) { this.simulateRequest(); } else if (this.shouldIssueRequest() && !this.request) { this.request = new FetchRequest(this, FetchMethod.get, this.location); this.request.perform(); } } simulateRequest() { if (this.response) { this.startRequest(); this.recordResponse(); this.finishRequest(); } } startRequest() { this.recordTimingMetric(TimingMetric.requestStart); this.adapter.visitRequestStarted(this); } recordResponse(response = this.response) { this.response = response; if (response) { const { statusCode } = response; if (isSuccessful(statusCode)) { this.adapter.visitRequestCompleted(this); } else { this.adapter.visitRequestFailedWithStatusCode(this, statusCode); } } } finishRequest() { this.recordTimingMetric(TimingMetric.requestEnd); this.adapter.visitRequestFinished(this); } loadResponse() { if (this.response) { const { statusCode, responseHTML } = this.response; this.render(async () => { if (this.shouldCacheSnapshot) this.cacheSnapshot(); if (this.view.renderPromise) await this.view.renderPromise; if (isSuccessful(statusCode) && responseHTML != null) { await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this); this.performScroll(); this.adapter.visitRendered(this); this.complete(); } else { await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this); this.adapter.visitRendered(this); this.fail(); } }); } } getCachedSnapshot() { const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot(); if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) { if (this.action == "restore" || snapshot.isPreviewable) { return snapshot; } } } getPreloadedSnapshot() { if (this.snapshotHTML) { return PageSnapshot.fromHTMLString(this.snapshotHTML); } } hasCachedSnapshot() { return this.getCachedSnapshot() != null; } loadCachedSnapshot() { const snapshot = this.getCachedSnapshot(); if (snapshot) { const isPreview = this.shouldIssueRequest(); this.render(async () => { this.cacheSnapshot(); if (this.isSamePage) { this.adapter.visitRendered(this); } else { if (this.view.renderPromise) await this.view.renderPromise; await this.view.renderPage(snapshot, isPreview, this.willRender, this); this.performScroll(); this.adapter.visitRendered(this); if (!isPreview) { this.complete(); } } }); } } followRedirect() { var _a; if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) { this.adapter.visitProposedToLocation(this.redirectedToLocation, { action: "replace", response: this.response, shouldCacheSnapshot: false, willRender: false }); this.followedRedirect = true; } } goToSamePageAnchor() { if (this.isSamePage) { this.render(async () => { this.cacheSnapshot(); this.performScroll(); this.changeHistory(); this.adapter.visitRendered(this); }); } } prepareRequest(request) { if (this.acceptsStreamResponse) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted() { this.startRequest(); } requestPreventedHandlingResponse(_request, _response) { } async requestSucceededWithResponse(request, response) { const responseHTML = await response.responseHTML; const { redirected, statusCode } = response; if (responseHTML == void 0) { this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected }); } else { this.redirectedToLocation = response.redirected ? response.location : void 0; this.recordResponse({ statusCode, responseHTML, redirected }); } } async requestFailedWithResponse(request, response) { const responseHTML = await response.responseHTML; const { redirected, statusCode } = response; if (responseHTML == void 0) { this.recordResponse({ statusCode: SystemStatusCode.contentTypeMismatch, redirected }); } else { this.recordResponse({ statusCode, responseHTML, redirected }); } } requestErrored(_request, _error) { this.recordResponse({ statusCode: SystemStatusCode.networkFailure, redirected: false }); } requestFinished() { this.finishRequest(); } performScroll() { if (!this.scrolled && !this.view.forceReloaded) { if (this.action == "restore") { this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop(); } else { this.scrollToAnchor() || this.view.scrollToTop(); } if (this.isSamePage) { this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location); } this.scrolled = true; } } scrollToRestoredPosition() { const { scrollPosition } = this.restorationData; if (scrollPosition) { this.view.scrollToPosition(scrollPosition); return true; } } scrollToAnchor() { const anchor = getAnchor(this.location); if (anchor != null) { this.view.scrollToAnchor(anchor); return true; } } recordTimingMetric(metric) { this.timingMetrics[metric] = (/* @__PURE__ */ new Date()).getTime(); } getTimingMetrics() { return Object.assign({}, this.timingMetrics); } getHistoryMethodForAction(action) { switch (action) { case "replace": return history.replaceState; case "advance": case "restore": return history.pushState; } } hasPreloadedResponse() { return typeof this.response == "object"; } shouldIssueRequest() { if (this.isSamePage) { return false; } else if (this.action == "restore") { return !this.hasCachedSnapshot(); } else { return this.willRender; } } cacheSnapshot() { if (!this.snapshotCached) { this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot)); this.snapshotCached = true; } } async render(callback) { this.cancelRender(); await new Promise((resolve) => { this.frame = requestAnimationFrame(() => resolve()); }); await callback(); delete this.frame; } cancelRender() { if (this.frame) { cancelAnimationFrame(this.frame); delete this.frame; } } }; function isSuccessful(statusCode) { return statusCode >= 200 && statusCode < 300; } var BrowserAdapter = class { constructor(session2) { this.progressBar = new ProgressBar(); this.showProgressBar = () => { this.progressBar.show(); }; this.session = session2; } visitProposedToLocation(location2, options) { this.navigator.startVisit(location2, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options); } visitStarted(visit2) { this.location = visit2.location; visit2.loadCachedSnapshot(); visit2.issueRequest(); visit2.goToSamePageAnchor(); } visitRequestStarted(visit2) { this.progressBar.setValue(0); if (visit2.hasCachedSnapshot() || visit2.action != "restore") { this.showVisitProgressBarAfterDelay(); } else { this.showProgressBar(); } } visitRequestCompleted(visit2) { visit2.loadResponse(); } visitRequestFailedWithStatusCode(visit2, statusCode) { switch (statusCode) { case SystemStatusCode.networkFailure: case SystemStatusCode.timeoutFailure: case SystemStatusCode.contentTypeMismatch: return this.reload({ reason: "request_failed", context: { statusCode } }); default: return visit2.loadResponse(); } } visitRequestFinished(_visit) { this.progressBar.setValue(1); this.hideVisitProgressBar(); } visitCompleted(_visit) { } pageInvalidated(reason) { this.reload(reason); } visitFailed(_visit) { } visitRendered(_visit) { } formSubmissionStarted(_formSubmission) { this.progressBar.setValue(0); this.showFormProgressBarAfterDelay(); } formSubmissionFinished(_formSubmission) { this.progressBar.setValue(1); this.hideFormProgressBar(); } showVisitProgressBarAfterDelay() { this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); } hideVisitProgressBar() { this.progressBar.hide(); if (this.visitProgressBarTimeout != null) { window.clearTimeout(this.visitProgressBarTimeout); delete this.visitProgressBarTimeout; } } showFormProgressBarAfterDelay() { if (this.formProgressBarTimeout == null) { this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); } } hideFormProgressBar() { this.progressBar.hide(); if (this.formProgressBarTimeout != null) { window.clearTimeout(this.formProgressBarTimeout); delete this.formProgressBarTimeout; } } reload(reason) { var _a; dispatch2("turbo:reload", { detail: reason }); window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href; } get navigator() { return this.session.navigator; } }; var CacheObserver = class { constructor() { this.selector = "[data-turbo-temporary]"; this.deprecatedSelector = "[data-turbo-cache=false]"; this.started = false; this.removeTemporaryElements = (_event) => { for (const element of this.temporaryElements) { element.remove(); } }; } start() { if (!this.started) { this.started = true; addEventListener("turbo:before-cache", this.removeTemporaryElements, false); } } stop() { if (this.started) { this.started = false; removeEventListener("turbo:before-cache", this.removeTemporaryElements, false); } } get temporaryElements() { return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]; } get temporaryElementsWithDeprecation() { const elements = document.querySelectorAll(this.deprecatedSelector); if (elements.length) { console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`); } return [...elements]; } }; var FrameRedirector = class { constructor(session2, element) { this.session = session2; this.element = element; this.linkInterceptor = new LinkInterceptor(this, element); this.formSubmitObserver = new FormSubmitObserver(this, element); } start() { this.linkInterceptor.start(); this.formSubmitObserver.start(); } stop() { this.linkInterceptor.stop(); this.formSubmitObserver.stop(); } shouldInterceptLinkClick(element, _location, _event) { return this.shouldRedirect(element); } linkClickIntercepted(element, url, event) { const frame = this.findFrameElement(element); if (frame) { frame.delegate.linkClickIntercepted(element, url, event); } } willSubmitForm(element, submitter) { return element.closest("turbo-frame") == null && this.shouldSubmit(element, submitter) && this.shouldRedirect(element, submitter); } formSubmitted(element, submitter) { const frame = this.findFrameElement(element, submitter); if (frame) { frame.delegate.formSubmitted(element, submitter); } } shouldSubmit(form, submitter) { var _a; const action = getAction(form, submitter); const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"); return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation); } shouldRedirect(element, submitter) { const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element); if (isNavigatable) { const frame = this.findFrameElement(element, submitter); return frame ? frame != element.closest("turbo-frame") : false; } else { return false; } } findFrameElement(element, submitter) { const id2 = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("data-turbo-frame")) || element.getAttribute("data-turbo-frame"); if (id2 && id2 != "_top") { const frame = this.element.querySelector(`#${id2}:not([disabled])`); if (frame instanceof FrameElement) { return frame; } } } }; var History = class { constructor(delegate) { this.restorationIdentifier = uuid(); this.restorationData = {}; this.started = false; this.pageLoaded = false; this.onPopState = (event) => { if (this.shouldHandlePopState()) { const { turbo } = event.state || {}; if (turbo) { this.location = new URL(window.location.href); const { restorationIdentifier } = turbo; this.restorationIdentifier = restorationIdentifier; this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier); } } }; this.onPageLoad = async (_event) => { await nextMicrotask(); this.pageLoaded = true; }; this.delegate = delegate; } start() { if (!this.started) { addEventListener("popstate", this.onPopState, false); addEventListener("load", this.onPageLoad, false); this.started = true; this.replace(new URL(window.location.href)); } } stop() { if (this.started) { removeEventListener("popstate", this.onPopState, false); removeEventListener("load", this.onPageLoad, false); this.started = false; } } push(location2, restorationIdentifier) { this.update(history.pushState, location2, restorationIdentifier); } replace(location2, restorationIdentifier) { this.update(history.replaceState, location2, restorationIdentifier); } update(method, location2, restorationIdentifier = uuid()) { const state = { turbo: { restorationIdentifier } }; method.call(history, state, "", location2.href); this.location = location2; this.restorationIdentifier = restorationIdentifier; } getRestorationDataForIdentifier(restorationIdentifier) { return this.restorationData[restorationIdentifier] || {}; } updateRestorationData(additionalData) { const { restorationIdentifier } = this; const restorationData = this.restorationData[restorationIdentifier]; this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData); } assumeControlOfScrollRestoration() { var _a; if (!this.previousScrollRestoration) { this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : "auto"; history.scrollRestoration = "manual"; } } relinquishControlOfScrollRestoration() { if (this.previousScrollRestoration) { history.scrollRestoration = this.previousScrollRestoration; delete this.previousScrollRestoration; } } shouldHandlePopState() { return this.pageIsLoaded(); } pageIsLoaded() { return this.pageLoaded || document.readyState == "complete"; } }; var Navigator = class { constructor(delegate) { this.delegate = delegate; } proposeVisit(location2, options = {}) { if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) { if (locationIsVisitable(location2, this.view.snapshot.rootLocation)) { this.delegate.visitProposedToLocation(location2, options); } else { window.location.href = location2.toString(); } } } startVisit(locatable, restorationIdentifier, options = {}) { this.stop(); this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options)); this.currentVisit.start(); } submitForm(form, submitter) { this.stop(); this.formSubmission = new FormSubmission(this, form, submitter, true); this.formSubmission.start(); } stop() { if (this.formSubmission) { this.formSubmission.stop(); delete this.formSubmission; } if (this.currentVisit) { this.currentVisit.cancel(); delete this.currentVisit; } } get adapter() { return this.delegate.adapter; } get view() { return this.delegate.view; } get history() { return this.delegate.history; } formSubmissionStarted(formSubmission) { if (typeof this.adapter.formSubmissionStarted === "function") { this.adapter.formSubmissionStarted(formSubmission); } } async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) { if (formSubmission == this.formSubmission) { const responseHTML = await fetchResponse.responseHTML; if (responseHTML) { const shouldCacheSnapshot = formSubmission.isSafe; if (!shouldCacheSnapshot) { this.view.clearSnapshotCache(); } const { statusCode, redirected } = fetchResponse; const action = this.getActionForFormSubmission(formSubmission); const visitOptions = { action, shouldCacheSnapshot, response: { statusCode, responseHTML, redirected } }; this.proposeVisit(fetchResponse.location, visitOptions); } } } async formSubmissionFailedWithResponse(formSubmission, fetchResponse) { const responseHTML = await fetchResponse.responseHTML; if (responseHTML) { const snapshot = PageSnapshot.fromHTMLString(responseHTML); if (fetchResponse.serverError) { await this.view.renderError(snapshot, this.currentVisit); } else { await this.view.renderPage(snapshot, false, true, this.currentVisit); } this.view.scrollToTop(); this.view.clearSnapshotCache(); } } formSubmissionErrored(formSubmission, error2) { console.error(error2); } formSubmissionFinished(formSubmission) { if (typeof this.adapter.formSubmissionFinished === "function") { this.adapter.formSubmissionFinished(formSubmission); } } visitStarted(visit2) { this.delegate.visitStarted(visit2); } visitCompleted(visit2) { this.delegate.visitCompleted(visit2); } locationWithActionIsSamePage(location2, action) { const anchor = getAnchor(location2); const currentAnchor = getAnchor(this.view.lastRenderedLocation); const isRestorationToTop = action === "restore" && typeof anchor === "undefined"; return action !== "replace" && getRequestURL(location2) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor); } visitScrolledToSamePageLocation(oldURL, newURL) { this.delegate.visitScrolledToSamePageLocation(oldURL, newURL); } get location() { return this.history.location; } get restorationIdentifier() { return this.history.restorationIdentifier; } getActionForFormSubmission({ submitter, formElement }) { return getVisitAction(submitter, formElement) || "advance"; } }; var PageStage; (function(PageStage2) { PageStage2[PageStage2["initial"] = 0] = "initial"; PageStage2[PageStage2["loading"] = 1] = "loading"; PageStage2[PageStage2["interactive"] = 2] = "interactive"; PageStage2[PageStage2["complete"] = 3] = "complete"; })(PageStage || (PageStage = {})); var PageObserver = class { constructor(delegate) { this.stage = PageStage.initial; this.started = false; this.interpretReadyState = () => { const { readyState } = this; if (readyState == "interactive") { this.pageIsInteractive(); } else if (readyState == "complete") { this.pageIsComplete(); } }; this.pageWillUnload = () => { this.delegate.pageWillUnload(); }; this.delegate = delegate; } start() { if (!this.started) { if (this.stage == PageStage.initial) { this.stage = PageStage.loading; } document.addEventListener("readystatechange", this.interpretReadyState, false); addEventListener("pagehide", this.pageWillUnload, false); this.started = true; } } stop() { if (this.started) { document.removeEventListener("readystatechange", this.interpretReadyState, false); removeEventListener("pagehide", this.pageWillUnload, false); this.started = false; } } pageIsInteractive() { if (this.stage == PageStage.loading) { this.stage = PageStage.interactive; this.delegate.pageBecameInteractive(); } } pageIsComplete() { this.pageIsInteractive(); if (this.stage == PageStage.interactive) { this.stage = PageStage.complete; this.delegate.pageLoaded(); } } get readyState() { return document.readyState; } }; var ScrollObserver = class { constructor(delegate) { this.started = false; this.onScroll = () => { this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset }); }; this.delegate = delegate; } start() { if (!this.started) { addEventListener("scroll", this.onScroll, false); this.onScroll(); this.started = true; } } stop() { if (this.started) { removeEventListener("scroll", this.onScroll, false); this.started = false; } } updatePosition(position) { this.delegate.scrollPositionChanged(position); } }; var StreamMessageRenderer = class { render({ fragment }) { Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment)); } enteringBardo(currentPermanentElement, newPermanentElement) { newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true)); } leavingBardo() { } }; function getPermanentElementMapForFragment(fragment) { const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement); const permanentElementMap = {}; for (const permanentElementInDocument of permanentElementsInDocument) { const { id: id2 } = permanentElementInDocument; for (const streamElement of fragment.querySelectorAll("turbo-stream")) { const elementInStream = getPermanentElementById(streamElement.templateElement.content, id2); if (elementInStream) { permanentElementMap[id2] = [permanentElementInDocument, elementInStream]; } } } return permanentElementMap; } var StreamObserver = class { constructor(delegate) { this.sources = /* @__PURE__ */ new Set(); this.started = false; this.inspectFetchResponse = (event) => { const response = fetchResponseFromEvent(event); if (response && fetchResponseIsStream(response)) { event.preventDefault(); this.receiveMessageResponse(response); } }; this.receiveMessageEvent = (event) => { if (this.started && typeof event.data == "string") { this.receiveMessageHTML(event.data); } }; this.delegate = delegate; } start() { if (!this.started) { this.started = true; addEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); } } stop() { if (this.started) { this.started = false; removeEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); } } connectStreamSource(source) { if (!this.streamSourceIsConnected(source)) { this.sources.add(source); source.addEventListener("message", this.receiveMessageEvent, false); } } disconnectStreamSource(source) { if (this.streamSourceIsConnected(source)) { this.sources.delete(source); source.removeEventListener("message", this.receiveMessageEvent, false); } } streamSourceIsConnected(source) { return this.sources.has(source); } async receiveMessageResponse(response) { const html = await response.responseHTML; if (html) { this.receiveMessageHTML(html); } } receiveMessageHTML(html) { this.delegate.receivedMessageFromStream(StreamMessage.wrap(html)); } }; function fetchResponseFromEvent(event) { var _a; const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse; if (fetchResponse instanceof FetchResponse) { return fetchResponse; } } function fetchResponseIsStream(response) { var _a; const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : ""; return contentType.startsWith(StreamMessage.contentType); } var ErrorRenderer = class extends Renderer { static renderElement(currentElement, newElement) { const { documentElement, body } = document; documentElement.replaceChild(newElement, body); } async render() { this.replaceHeadAndBody(); this.activateScriptElements(); } replaceHeadAndBody() { const { documentElement, head } = document; documentElement.replaceChild(this.newHead, head); this.renderElement(this.currentElement, this.newElement); } activateScriptElements() { for (const replaceableElement of this.scriptElements) { const parentNode = replaceableElement.parentNode; if (parentNode) { const element = activateScriptElement(replaceableElement); parentNode.replaceChild(element, replaceableElement); } } } get newHead() { return this.newSnapshot.headSnapshot.element; } get scriptElements() { return document.documentElement.querySelectorAll("script"); } }; var PageRenderer = class extends Renderer { static renderElement(currentElement, newElement) { if (document.body && newElement instanceof HTMLBodyElement) { document.body.replaceWith(newElement); } else { document.documentElement.appendChild(newElement); } } get shouldRender() { return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical; } get reloadReason() { if (!this.newSnapshot.isVisitable) { return { reason: "turbo_visit_control_is_reload" }; } if (!this.trackedElementsAreIdentical) { return { reason: "tracked_element_mismatch" }; } } async prepareToRender() { await this.mergeHead(); } async render() { if (this.willRender) { await this.replaceBody(); } } finishRendering() { super.finishRendering(); if (!this.isPreview) { this.focusFirstAutofocusableElement(); } } get currentHeadSnapshot() { return this.currentSnapshot.headSnapshot; } get newHeadSnapshot() { return this.newSnapshot.headSnapshot; } get newElement() { return this.newSnapshot.element; } async mergeHead() { const mergedHeadElements = this.mergeProvisionalElements(); const newStylesheetElements = this.copyNewHeadStylesheetElements(); this.copyNewHeadScriptElements(); await mergedHeadElements; await newStylesheetElements; } async replaceBody() { await this.preservingPermanentElements(async () => { this.activateNewBody(); await this.assignNewBody(); }); } get trackedElementsAreIdentical() { return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature; } async copyNewHeadStylesheetElements() { const loadingElements = []; for (const element of this.newHeadStylesheetElements) { loadingElements.push(waitForLoad(element)); document.head.appendChild(element); } await Promise.all(loadingElements); } copyNewHeadScriptElements() { for (const element of this.newHeadScriptElements) { document.head.appendChild(activateScriptElement(element)); } } async mergeProvisionalElements() { const newHeadElements = [...this.newHeadProvisionalElements]; for (const element of this.currentHeadProvisionalElements) { if (!this.isCurrentElementInElementList(element, newHeadElements)) { document.head.removeChild(element); } } for (const element of newHeadElements) { document.head.appendChild(element); } } isCurrentElementInElementList(element, elementList) { for (const [index, newElement] of elementList.entries()) { if (element.tagName == "TITLE") { if (newElement.tagName != "TITLE") { continue; } if (element.innerHTML == newElement.innerHTML) { elementList.splice(index, 1); return true; } } if (newElement.isEqualNode(element)) { elementList.splice(index, 1); return true; } } return false; } removeCurrentHeadProvisionalElements() { for (const element of this.currentHeadProvisionalElements) { document.head.removeChild(element); } } copyNewHeadProvisionalElements() { for (const element of this.newHeadProvisionalElements) { document.head.appendChild(element); } } activateNewBody() { document.adoptNode(this.newElement); this.activateNewBodyScriptElements(); } activateNewBodyScriptElements() { for (const inertScriptElement of this.newBodyScriptElements) { const activatedScriptElement = activateScriptElement(inertScriptElement); inertScriptElement.replaceWith(activatedScriptElement); } } async assignNewBody() { await this.renderElement(this.currentElement, this.newElement); } get newHeadStylesheetElements() { return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot); } get newHeadScriptElements() { return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot); } get currentHeadProvisionalElements() { return this.currentHeadSnapshot.provisionalElements; } get newHeadProvisionalElements() { return this.newHeadSnapshot.provisionalElements; } get newBodyScriptElements() { return this.newElement.querySelectorAll("script"); } }; var SnapshotCache = class { constructor(size2) { this.keys = []; this.snapshots = {}; this.size = size2; } has(location2) { return toCacheKey(location2) in this.snapshots; } get(location2) { if (this.has(location2)) { const snapshot = this.read(location2); this.touch(location2); return snapshot; } } put(location2, snapshot) { this.write(location2, snapshot); this.touch(location2); return snapshot; } clear() { this.snapshots = {}; } read(location2) { return this.snapshots[toCacheKey(location2)]; } write(location2, snapshot) { this.snapshots[toCacheKey(location2)] = snapshot; } touch(location2) { const key = toCacheKey(location2); const index = this.keys.indexOf(key); if (index > -1) this.keys.splice(index, 1); this.keys.unshift(key); this.trim(); } trim() { for (const key of this.keys.splice(this.size)) { delete this.snapshots[key]; } } }; var PageView = class extends View { constructor() { super(...arguments); this.snapshotCache = new SnapshotCache(10); this.lastRenderedLocation = new URL(location.href); this.forceReloaded = false; } renderPage(snapshot, isPreview = false, willRender = true, visit2) { const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender); if (!renderer.shouldRender) { this.forceReloaded = true; } else { visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); } return this.render(renderer); } renderError(snapshot, visit2) { visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false); return this.render(renderer); } clearSnapshotCache() { this.snapshotCache.clear(); } async cacheSnapshot(snapshot = this.snapshot) { if (snapshot.isCacheable) { this.delegate.viewWillCacheSnapshot(); const { lastRenderedLocation: location2 } = this; await nextEventLoopTick(); const cachedSnapshot = snapshot.clone(); this.snapshotCache.put(location2, cachedSnapshot); return cachedSnapshot; } } getCachedSnapshotForLocation(location2) { return this.snapshotCache.get(location2); } get snapshot() { return PageSnapshot.fromElement(this.element); } }; var Preloader = class { constructor(delegate) { this.selector = "a[data-turbo-preload]"; this.delegate = delegate; } get snapshotCache() { return this.delegate.navigator.view.snapshotCache; } start() { if (document.readyState === "loading") { return document.addEventListener("DOMContentLoaded", () => { this.preloadOnLoadLinksForView(document.body); }); } else { this.preloadOnLoadLinksForView(document.body); } } preloadOnLoadLinksForView(element) { for (const link of element.querySelectorAll(this.selector)) { this.preloadURL(link); } } async preloadURL(link) { const location2 = new URL(link.href); if (this.snapshotCache.has(location2)) { return; } try { const response = await fetch(location2.toString(), { headers: { "VND.PREFETCH": "true", Accept: "text/html" } }); const responseText = await response.text(); const snapshot = PageSnapshot.fromHTMLString(responseText); this.snapshotCache.put(location2, snapshot); } catch (_3) { } } }; var Session = class { constructor() { this.navigator = new Navigator(this); this.history = new History(this); this.preloader = new Preloader(this); this.view = new PageView(this, document.documentElement); this.adapter = new BrowserAdapter(this); this.pageObserver = new PageObserver(this); this.cacheObserver = new CacheObserver(); this.linkClickObserver = new LinkClickObserver(this, window); this.formSubmitObserver = new FormSubmitObserver(this, document); this.scrollObserver = new ScrollObserver(this); this.streamObserver = new StreamObserver(this); this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement); this.frameRedirector = new FrameRedirector(this, document.documentElement); this.streamMessageRenderer = new StreamMessageRenderer(); this.drive = true; this.enabled = true; this.progressBarDelay = 500; this.started = false; this.formMode = "on"; } start() { if (!this.started) { this.pageObserver.start(); this.cacheObserver.start(); this.formLinkClickObserver.start(); this.linkClickObserver.start(); this.formSubmitObserver.start(); this.scrollObserver.start(); this.streamObserver.start(); this.frameRedirector.start(); this.history.start(); this.preloader.start(); this.started = true; this.enabled = true; } } disable() { this.enabled = false; } stop() { if (this.started) { this.pageObserver.stop(); this.cacheObserver.stop(); this.formLinkClickObserver.stop(); this.linkClickObserver.stop(); this.formSubmitObserver.stop(); this.scrollObserver.stop(); this.streamObserver.stop(); this.frameRedirector.stop(); this.history.stop(); this.started = false; } } registerAdapter(adapter) { this.adapter = adapter; } visit(location2, options = {}) { const frameElement = options.frame ? document.getElementById(options.frame) : null; if (frameElement instanceof FrameElement) { frameElement.src = location2.toString(); frameElement.loaded; } else { this.navigator.proposeVisit(expandURL(location2), options); } } connectStreamSource(source) { this.streamObserver.connectStreamSource(source); } disconnectStreamSource(source) { this.streamObserver.disconnectStreamSource(source); } renderStreamMessage(message2) { this.streamMessageRenderer.render(StreamMessage.wrap(message2)); } clearCache() { this.view.clearSnapshotCache(); } setProgressBarDelay(delay3) { this.progressBarDelay = delay3; } setFormMode(mode) { this.formMode = mode; } get location() { return this.history.location; } get restorationIdentifier() { return this.history.restorationIdentifier; } historyPoppedToLocationWithRestorationIdentifier(location2, restorationIdentifier) { if (this.enabled) { this.navigator.startVisit(location2, restorationIdentifier, { action: "restore", historyChanged: true }); } else { this.adapter.pageInvalidated({ reason: "turbo_disabled" }); } } scrollPositionChanged(position) { this.history.updateRestorationData({ scrollPosition: position }); } willSubmitFormLinkToLocation(link, location2) { return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation); } submittedFormLinkToLocation() { } willFollowLinkToLocation(link, location2, event) { return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event); } followedLinkToLocation(link, location2) { const action = this.getActionForLink(link); const acceptsStreamResponse = link.hasAttribute("data-turbo-stream"); this.visit(location2.href, { action, acceptsStreamResponse }); } allowsVisitingLocationWithAction(location2, action) { return this.locationWithActionIsSamePage(location2, action) || this.applicationAllowsVisitingLocation(location2); } visitProposedToLocation(location2, options) { extendURLWithDeprecatedProperties(location2); this.adapter.visitProposedToLocation(location2, options); } visitStarted(visit2) { if (!visit2.acceptsStreamResponse) { markAsBusy(document.documentElement); } extendURLWithDeprecatedProperties(visit2.location); if (!visit2.silent) { this.notifyApplicationAfterVisitingLocation(visit2.location, visit2.action); } } visitCompleted(visit2) { clearBusyState(document.documentElement); this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics()); } locationWithActionIsSamePage(location2, action) { return this.navigator.locationWithActionIsSamePage(location2, action); } visitScrolledToSamePageLocation(oldURL, newURL) { this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL); } willSubmitForm(form, submitter) { const action = getAction(form, submitter); return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation); } formSubmitted(form, submitter) { this.navigator.submitForm(form, submitter); } pageBecameInteractive() { this.view.lastRenderedLocation = this.location; this.notifyApplicationAfterPageLoad(); } pageLoaded() { this.history.assumeControlOfScrollRestoration(); } pageWillUnload() { this.history.relinquishControlOfScrollRestoration(); } receivedMessageFromStream(message2) { this.renderStreamMessage(message2); } viewWillCacheSnapshot() { var _a; if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) { this.notifyApplicationBeforeCachingSnapshot(); } } allowsImmediateRender({ element }, options) { const event = this.notifyApplicationBeforeRender(element, options); const { defaultPrevented, detail: { render: render2 } } = event; if (this.view.renderer && render2) { this.view.renderer.renderElement = render2; } return !defaultPrevented; } viewRenderedSnapshot(_snapshot, _isPreview) { this.view.lastRenderedLocation = this.history.location; this.notifyApplicationAfterRender(); } preloadOnLoadLinksForView(element) { this.preloader.preloadOnLoadLinksForView(element); } viewInvalidated(reason) { this.adapter.pageInvalidated(reason); } frameLoaded(frame) { this.notifyApplicationAfterFrameLoad(frame); } frameRendered(fetchResponse, frame) { this.notifyApplicationAfterFrameRender(fetchResponse, frame); } applicationAllowsFollowingLinkToLocation(link, location2, ev) { const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev); return !event.defaultPrevented; } applicationAllowsVisitingLocation(location2) { const event = this.notifyApplicationBeforeVisitingLocation(location2); return !event.defaultPrevented; } notifyApplicationAfterClickingLinkToLocation(link, location2, event) { return dispatch2("turbo:click", { target: link, detail: { url: location2.href, originalEvent: event }, cancelable: true }); } notifyApplicationBeforeVisitingLocation(location2) { return dispatch2("turbo:before-visit", { detail: { url: location2.href }, cancelable: true }); } notifyApplicationAfterVisitingLocation(location2, action) { return dispatch2("turbo:visit", { detail: { url: location2.href, action } }); } notifyApplicationBeforeCachingSnapshot() { return dispatch2("turbo:before-cache"); } notifyApplicationBeforeRender(newBody, options) { return dispatch2("turbo:before-render", { detail: Object.assign({ newBody }, options), cancelable: true }); } notifyApplicationAfterRender() { return dispatch2("turbo:render"); } notifyApplicationAfterPageLoad(timing = {}) { return dispatch2("turbo:load", { detail: { url: this.location.href, timing } }); } notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) { dispatchEvent(new HashChangeEvent("hashchange", { oldURL: oldURL.toString(), newURL: newURL.toString() })); } notifyApplicationAfterFrameLoad(frame) { return dispatch2("turbo:frame-load", { target: frame }); } notifyApplicationAfterFrameRender(fetchResponse, frame) { return dispatch2("turbo:frame-render", { detail: { fetchResponse }, target: frame, cancelable: true }); } submissionIsNavigatable(form, submitter) { if (this.formMode == "off") { return false; } else { const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true; if (this.formMode == "optin") { return submitterIsNavigatable && form.closest('[data-turbo="true"]') != null; } else { return submitterIsNavigatable && this.elementIsNavigatable(form); } } } elementIsNavigatable(element) { const container = findClosestRecursively(element, "[data-turbo]"); const withinFrame = findClosestRecursively(element, "turbo-frame"); if (this.drive || withinFrame) { if (container) { return container.getAttribute("data-turbo") != "false"; } else { return true; } } else { if (container) { return container.getAttribute("data-turbo") == "true"; } else { return false; } } } getActionForLink(link) { return getVisitAction(link) || "advance"; } get snapshot() { return this.view.snapshot; } }; function extendURLWithDeprecatedProperties(url) { Object.defineProperties(url, deprecatedLocationPropertyDescriptors); } var deprecatedLocationPropertyDescriptors = { absoluteURL: { get() { return this.toString(); } } }; var Cache = class { constructor(session2) { this.session = session2; } clear() { this.session.clearCache(); } resetCacheControl() { this.setCacheControl(""); } exemptPageFromCache() { this.setCacheControl("no-cache"); } exemptPageFromPreview() { this.setCacheControl("no-preview"); } setCacheControl(value) { setMetaContent("turbo-cache-control", value); } }; var StreamActions = { after() { this.targetElements.forEach((e3) => { var _a; return (_a = e3.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e3.nextSibling); }); }, append() { this.removeDuplicateTargetChildren(); this.targetElements.forEach((e3) => e3.append(this.templateContent)); }, before() { this.targetElements.forEach((e3) => { var _a; return (_a = e3.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e3); }); }, prepend() { this.removeDuplicateTargetChildren(); this.targetElements.forEach((e3) => e3.prepend(this.templateContent)); }, remove() { this.targetElements.forEach((e3) => e3.remove()); }, replace() { this.targetElements.forEach((e3) => e3.replaceWith(this.templateContent)); }, update() { this.targetElements.forEach((targetElement) => { targetElement.innerHTML = ""; targetElement.append(this.templateContent); }); } }; var session = new Session(); var cache = new Cache(session); var { navigator: navigator$1 } = session; function start() { session.start(); } function registerAdapter(adapter) { session.registerAdapter(adapter); } function visit(location2, options) { session.visit(location2, options); } function connectStreamSource(source) { session.connectStreamSource(source); } function disconnectStreamSource(source) { session.disconnectStreamSource(source); } function renderStreamMessage(message2) { session.renderStreamMessage(message2); } function clearCache() { console.warn("Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`"); session.clearCache(); } function setProgressBarDelay(delay3) { session.setProgressBarDelay(delay3); } function setConfirmMethod(confirmMethod) { FormSubmission.confirmMethod = confirmMethod; } function setFormMode(mode) { session.setFormMode(mode); } var Turbo = /* @__PURE__ */ Object.freeze({ __proto__: null, navigator: navigator$1, session, cache, PageRenderer, PageSnapshot, FrameRenderer, start, registerAdapter, visit, connectStreamSource, disconnectStreamSource, renderStreamMessage, clearCache, setProgressBarDelay, setConfirmMethod, setFormMode, StreamActions }); var TurboFrameMissingError = class extends Error { }; var FrameController = class { constructor(element) { this.fetchResponseLoaded = (_fetchResponse) => { }; this.currentFetchRequest = null; this.resolveVisitPromise = () => { }; this.connected = false; this.hasBeenLoaded = false; this.ignoredAttributes = /* @__PURE__ */ new Set(); this.action = null; this.visitCachedSnapshot = ({ element: element2 }) => { const frame = element2.querySelector("#" + this.element.id); if (frame && this.previousFrameElement) { frame.replaceChildren(...this.previousFrameElement.children); } delete this.previousFrameElement; }; this.element = element; this.view = new FrameView(this, this.element); this.appearanceObserver = new AppearanceObserver(this, this.element); this.formLinkClickObserver = new FormLinkClickObserver(this, this.element); this.linkInterceptor = new LinkInterceptor(this, this.element); this.restorationIdentifier = uuid(); this.formSubmitObserver = new FormSubmitObserver(this, this.element); } connect() { if (!this.connected) { this.connected = true; if (this.loadingStyle == FrameLoadingStyle.lazy) { this.appearanceObserver.start(); } else { this.loadSourceURL(); } this.formLinkClickObserver.start(); this.linkInterceptor.start(); this.formSubmitObserver.start(); } } disconnect() { if (this.connected) { this.connected = false; this.appearanceObserver.stop(); this.formLinkClickObserver.stop(); this.linkInterceptor.stop(); this.formSubmitObserver.stop(); } } disabledChanged() { if (this.loadingStyle == FrameLoadingStyle.eager) { this.loadSourceURL(); } } sourceURLChanged() { if (this.isIgnoringChangesTo("src")) return; if (this.element.isConnected) { this.complete = false; } if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) { this.loadSourceURL(); } } sourceURLReloaded() { const { src } = this.element; this.ignoringChangesToAttribute("complete", () => { this.element.removeAttribute("complete"); }); this.element.src = null; this.element.src = src; return this.element.loaded; } completeChanged() { if (this.isIgnoringChangesTo("complete")) return; this.loadSourceURL(); } loadingStyleChanged() { if (this.loadingStyle == FrameLoadingStyle.lazy) { this.appearanceObserver.start(); } else { this.appearanceObserver.stop(); this.loadSourceURL(); } } async loadSourceURL() { if (this.enabled && this.isActive && !this.complete && this.sourceURL) { this.element.loaded = this.visit(expandURL(this.sourceURL)); this.appearanceObserver.stop(); await this.element.loaded; this.hasBeenLoaded = true; } } async loadResponse(fetchResponse) { if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) { this.sourceURL = fetchResponse.response.url; } try { const html = await fetchResponse.responseHTML; if (html) { const document2 = parseHTMLDocument(html); const pageSnapshot = PageSnapshot.fromDocument(document2); if (pageSnapshot.isVisitable) { await this.loadFrameResponse(fetchResponse, document2); } else { await this.handleUnvisitableFrameResponse(fetchResponse); } } } finally { this.fetchResponseLoaded = () => { }; } } elementAppearedInViewport(element) { this.proposeVisitIfNavigatedWithAction(element, element); this.loadSourceURL(); } willSubmitFormLinkToLocation(link) { return this.shouldInterceptNavigation(link); } submittedFormLinkToLocation(link, _location, form) { const frame = this.findFrameElement(link); if (frame) form.setAttribute("data-turbo-frame", frame.id); } shouldInterceptLinkClick(element, _location, _event) { return this.shouldInterceptNavigation(element); } linkClickIntercepted(element, location2) { this.navigateFrame(element, location2); } willSubmitForm(element, submitter) { return element.closest("turbo-frame") == this.element && this.shouldInterceptNavigation(element, submitter); } formSubmitted(element, submitter) { if (this.formSubmission) { this.formSubmission.stop(); } this.formSubmission = new FormSubmission(this, element, submitter); const { fetchRequest } = this.formSubmission; this.prepareRequest(fetchRequest); this.formSubmission.start(); } prepareRequest(request) { var _a; request.headers["Turbo-Frame"] = this.id; if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute("data-turbo-stream")) { request.acceptResponseType(StreamMessage.contentType); } } requestStarted(_request) { markAsBusy(this.element); } requestPreventedHandlingResponse(_request, _response) { this.resolveVisitPromise(); } async requestSucceededWithResponse(request, response) { await this.loadResponse(response); this.resolveVisitPromise(); } async requestFailedWithResponse(request, response) { await this.loadResponse(response); this.resolveVisitPromise(); } requestErrored(request, error2) { console.error(error2); this.resolveVisitPromise(); } requestFinished(_request) { clearBusyState(this.element); } formSubmissionStarted({ formElement }) { markAsBusy(formElement, this.findFrameElement(formElement)); } formSubmissionSucceededWithResponse(formSubmission, response) { const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter); frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter); frame.delegate.loadResponse(response); if (!formSubmission.isSafe) { session.clearCache(); } } formSubmissionFailedWithResponse(formSubmission, fetchResponse) { this.element.delegate.loadResponse(fetchResponse); session.clearCache(); } formSubmissionErrored(formSubmission, error2) { console.error(error2); } formSubmissionFinished({ formElement }) { clearBusyState(formElement, this.findFrameElement(formElement)); } allowsImmediateRender({ element: newFrame }, options) { const event = dispatch2("turbo:before-frame-render", { target: this.element, detail: Object.assign({ newFrame }, options), cancelable: true }); const { defaultPrevented, detail: { render: render2 } } = event; if (this.view.renderer && render2) { this.view.renderer.renderElement = render2; } return !defaultPrevented; } viewRenderedSnapshot(_snapshot, _isPreview) { } preloadOnLoadLinksForView(element) { session.preloadOnLoadLinksForView(element); } viewInvalidated() { } willRenderFrame(currentElement, _newElement) { this.previousFrameElement = currentElement.cloneNode(true); } async loadFrameResponse(fetchResponse, document2) { const newFrameElement = await this.extractForeignFrameElement(document2.body); if (newFrameElement) { const snapshot = new Snapshot(newFrameElement); const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false); if (this.view.renderPromise) await this.view.renderPromise; this.changeHistory(); await this.view.render(renderer); this.complete = true; session.frameRendered(fetchResponse, this.element); session.frameLoaded(this.element); this.fetchResponseLoaded(fetchResponse); } else if (this.willHandleFrameMissingFromResponse(fetchResponse)) { this.handleFrameMissingFromResponse(fetchResponse); } } async visit(url) { var _a; const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element); (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel(); this.currentFetchRequest = request; return new Promise((resolve) => { this.resolveVisitPromise = () => { this.resolveVisitPromise = () => { }; this.currentFetchRequest = null; resolve(); }; request.perform(); }); } navigateFrame(element, url, submitter) { const frame = this.findFrameElement(element, submitter); frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter); this.withCurrentNavigationElement(element, () => { frame.src = url; }); } proposeVisitIfNavigatedWithAction(frame, element, submitter) { this.action = getVisitAction(submitter, element, frame); if (this.action) { const pageSnapshot = PageSnapshot.fromElement(frame).clone(); const { visitCachedSnapshot } = frame.delegate; frame.delegate.fetchResponseLoaded = (fetchResponse) => { if (frame.src) { const { statusCode, redirected } = fetchResponse; const responseHTML = frame.ownerDocument.documentElement.outerHTML; const response = { statusCode, redirected, responseHTML }; const options = { response, visitCachedSnapshot, willRender: false, updateHistory: false, restorationIdentifier: this.restorationIdentifier, snapshot: pageSnapshot }; if (this.action) options.action = this.action; session.visit(frame.src, options); } }; } } changeHistory() { if (this.action) { const method = getHistoryMethodForAction(this.action); session.history.update(method, expandURL(this.element.src || ""), this.restorationIdentifier); } } async handleUnvisitableFrameResponse(fetchResponse) { console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id="${this.element.id}"> is performing a full page visit due to turbo-visit-control.`); await this.visitResponse(fetchResponse.response); } willHandleFrameMissingFromResponse(fetchResponse) { this.element.setAttribute("complete", ""); const response = fetchResponse.response; const visit2 = async (url, options = {}) => { if (url instanceof Response) { this.visitResponse(url); } else { session.visit(url, options); } }; const event = dispatch2("turbo:frame-missing", { target: this.element, detail: { response, visit: visit2 }, cancelable: true }); return !event.defaultPrevented; } handleFrameMissingFromResponse(fetchResponse) { this.view.missing(); this.throwFrameMissingError(fetchResponse); } throwFrameMissingError(fetchResponse) { const message2 = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id="${this.element.id}"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`; throw new TurboFrameMissingError(message2); } async visitResponse(response) { const wrapped = new FetchResponse(response); const responseHTML = await wrapped.responseHTML; const { location: location2, redirected, statusCode } = wrapped; return session.visit(location2, { response: { redirected, statusCode, responseHTML } }); } findFrameElement(element, submitter) { var _a; const id2 = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); return (_a = getFrameElementById(id2)) !== null && _a !== void 0 ? _a : this.element; } async extractForeignFrameElement(container) { let element; const id2 = CSS.escape(this.id); try { element = activateElement(container.querySelector(`turbo-frame#${id2}`), this.sourceURL); if (element) { return element; } element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id2}]`), this.sourceURL); if (element) { await element.loaded; return await this.extractForeignFrameElement(element); } } catch (error2) { console.error(error2); return new FrameElement(); } return null; } formActionIsVisitable(form, submitter) { const action = getAction(form, submitter); return locationIsVisitable(expandURL(action), this.rootLocation); } shouldInterceptNavigation(element, submitter) { const id2 = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) { return false; } if (!this.enabled || id2 == "_top") { return false; } if (id2) { const frameElement = getFrameElementById(id2); if (frameElement) { return !frameElement.disabled; } } if (!session.elementIsNavigatable(element)) { return false; } if (submitter && !session.elementIsNavigatable(submitter)) { return false; } return true; } get id() { return this.element.id; } get enabled() { return !this.element.disabled; } get sourceURL() { if (this.element.src) { return this.element.src; } } set sourceURL(sourceURL) { this.ignoringChangesToAttribute("src", () => { this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null; }); } get loadingStyle() { return this.element.loading; } get isLoading() { return this.formSubmission !== void 0 || this.resolveVisitPromise() !== void 0; } get complete() { return this.element.hasAttribute("complete"); } set complete(value) { this.ignoringChangesToAttribute("complete", () => { if (value) { this.element.setAttribute("complete", ""); } else { this.element.removeAttribute("complete"); } }); } get isActive() { return this.element.isActive && this.connected; } get rootLocation() { var _a; const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"; return expandURL(root); } isIgnoringChangesTo(attributeName) { return this.ignoredAttributes.has(attributeName); } ignoringChangesToAttribute(attributeName, callback) { this.ignoredAttributes.add(attributeName); callback(); this.ignoredAttributes.delete(attributeName); } withCurrentNavigationElement(element, callback) { this.currentNavigationElement = element; callback(); delete this.currentNavigationElement; } }; function getFrameElementById(id2) { if (id2 != null) { const element = document.getElementById(id2); if (element instanceof FrameElement) { return element; } } } function activateElement(element, currentURL) { if (element) { const src = element.getAttribute("src"); if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) { throw new Error(`Matching <turbo-frame id="${element.id}"> element has a source URL which references itself`); } if (element.ownerDocument !== document) { element = document.importNode(element, true); } if (element instanceof FrameElement) { element.connectedCallback(); element.disconnectedCallback(); return element; } } } var StreamElement = class extends HTMLElement { static async renderElement(newElement) { await newElement.performAction(); } async connectedCallback() { try { await this.render(); } catch (error2) { console.error(error2); } finally { this.disconnect(); } } async render() { var _a; return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = (async () => { const event = this.beforeRenderEvent; if (this.dispatchEvent(event)) { await nextAnimationFrame(); await event.detail.render(this); } })(); } disconnect() { try { this.remove(); } catch (_a) { } } removeDuplicateTargetChildren() { this.duplicateChildren.forEach((c3) => c3.remove()); } get duplicateChildren() { var _a; const existingChildren = this.targetElements.flatMap((e3) => [...e3.children]).filter((c3) => !!c3.id); const newChildrenIds = [...((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || []].filter((c3) => !!c3.id).map((c3) => c3.id); return existingChildren.filter((c3) => newChildrenIds.includes(c3.id)); } get performAction() { if (this.action) { const actionFunction = StreamActions[this.action]; if (actionFunction) { return actionFunction; } this.raise("unknown action"); } this.raise("action attribute is missing"); } get targetElements() { if (this.target) { return this.targetElementsById; } else if (this.targets) { return this.targetElementsByQuery; } else { this.raise("target or targets attribute is missing"); } } get templateContent() { return this.templateElement.content.cloneNode(true); } get templateElement() { if (this.firstElementChild === null) { const template = this.ownerDocument.createElement("template"); this.appendChild(template); return template; } else if (this.firstElementChild instanceof HTMLTemplateElement) { return this.firstElementChild; } this.raise("first child element must be a <template> element"); } get action() { return this.getAttribute("action"); } get target() { return this.getAttribute("target"); } get targets() { return this.getAttribute("targets"); } raise(message2) { throw new Error(`${this.description}: ${message2}`); } get description() { var _a, _b; return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : "<turbo-stream>"; } get beforeRenderEvent() { return new CustomEvent("turbo:before-stream-render", { bubbles: true, cancelable: true, detail: { newStream: this, render: StreamElement.renderElement } }); } get targetElementsById() { var _a; const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target); if (element !== null) { return [element]; } else { return []; } } get targetElementsByQuery() { var _a; const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets); if (elements.length !== 0) { return Array.prototype.slice.call(elements); } else { return []; } } }; var StreamSourceElement = class extends HTMLElement { constructor() { super(...arguments); this.streamSource = null; } connectedCallback() { this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src); connectStreamSource(this.streamSource); } disconnectedCallback() { if (this.streamSource) { disconnectStreamSource(this.streamSource); } } get src() { return this.getAttribute("src") || ""; } }; FrameElement.delegateConstructor = FrameController; if (customElements.get("turbo-frame") === void 0) { customElements.define("turbo-frame", FrameElement); } if (customElements.get("turbo-stream") === void 0) { customElements.define("turbo-stream", StreamElement); } if (customElements.get("turbo-stream-source") === void 0) { customElements.define("turbo-stream-source", StreamSourceElement); } (() => { let element = document.currentScript; if (!element) return; if (element.hasAttribute("data-turbo-suppress-warning")) return; element = element.parentElement; while (element) { if (element == document.body) { return console.warn(unindent` You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do! Load your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change. For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements —— Suppress this warning by adding a "data-turbo-suppress-warning" attribute to: %s `, element.outerHTML); } element = element.parentElement; } })(); window.Turbo = Turbo; start(); // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js var consumer; async function getConsumer() { return consumer || setConsumer(createConsumer2().then(setConsumer)); } function setConsumer(newConsumer) { return consumer = newConsumer; } async function createConsumer2() { const { createConsumer: createConsumer3 } = await Promise.resolve().then(() => (init_src(), src_exports)); return createConsumer3(); } async function subscribeTo(channel, mixin) { const { subscriptions } = await getConsumer(); return subscriptions.create(channel, mixin); } // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js function walk(obj) { if (!obj || typeof obj !== "object") return obj; if (obj instanceof Date || obj instanceof RegExp) return obj; if (Array.isArray(obj)) return obj.map(walk); return Object.keys(obj).reduce(function(acc, key) { var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function(m3, x3) { return "_" + x3.toLowerCase(); }); acc[camel] = walk(obj[key]); return acc; }, {}); } // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js var TurboCableStreamSourceElement = class extends HTMLElement { async connectedCallback() { connectStreamSource(this); this.subscription = await subscribeTo(this.channel, { received: this.dispatchMessageEvent.bind(this), connected: this.subscriptionConnected.bind(this), disconnected: this.subscriptionDisconnected.bind(this) }); } disconnectedCallback() { disconnectStreamSource(this); if (this.subscription) this.subscription.unsubscribe(); } dispatchMessageEvent(data2) { const event = new MessageEvent("message", { data: data2 }); return this.dispatchEvent(event); } subscriptionConnected() { this.setAttribute("connected", ""); } subscriptionDisconnected() { this.removeAttribute("connected"); } get channel() { const channel = this.getAttribute("channel"); const signed_stream_name = this.getAttribute("signed-stream-name"); return __spreadValues({ channel, signed_stream_name }, walk(__spreadValues({}, this.dataset))); } }; if (customElements.get("turbo-cable-stream-source") === void 0) { customElements.define("turbo-cable-stream-source", TurboCableStreamSourceElement); } // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js function encodeMethodIntoRequestBody(event) { if (event.target instanceof HTMLFormElement) { const { target: form, detail: { fetchOptions } } = event; form.addEventListener("turbo:submit-start", ({ detail: { formSubmission: { submitter } } }) => { const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams(); const method = determineFetchMethod(submitter, body, form); if (!/get/i.test(method)) { if (/post/i.test(method)) { body.delete("_method"); } else { body.set("_method", method); } fetchOptions.method = "post"; } }, { once: true }); } } function determineFetchMethod(submitter, body, form) { const formMethod = determineFormMethod(submitter); const overrideMethod = body.get("_method"); const method = form.getAttribute("method") || "get"; if (typeof formMethod == "string") { return formMethod; } else if (typeof overrideMethod == "string") { return overrideMethod; } else { return method; } } function determineFormMethod(submitter) { if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) { if (submitter.hasAttribute("formmethod")) { return submitter.formMethod; } else { return null; } } else { return null; } } function isBodyInit(body) { return body instanceof FormData || body instanceof URLSearchParams; } // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js addEventListener("turbo:before-fetch-request", encodeMethodIntoRequestBody); // ../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js var sparkMd5 = { exports: {} }; (function(module, exports) { (function(factory) { { module.exports = factory(); } })(function(undefined$1) { var hex_chr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; function md5cycle(x3, k3) { var a3 = x3[0], b3 = x3[1], c3 = x3[2], d3 = x3[3]; a3 += (b3 & c3 | ~b3 & d3) + k3[0] - 680876936 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[1] - 389564586 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[2] + 606105819 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[3] - 1044525330 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[4] - 176418897 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[5] + 1200080426 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[6] - 1473231341 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[7] - 45705983 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[8] + 1770035416 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[9] - 1958414417 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[10] - 42063 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[11] - 1990404162 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & c3 | ~b3 & d3) + k3[12] + 1804603682 | 0; a3 = (a3 << 7 | a3 >>> 25) + b3 | 0; d3 += (a3 & b3 | ~a3 & c3) + k3[13] - 40341101 | 0; d3 = (d3 << 12 | d3 >>> 20) + a3 | 0; c3 += (d3 & a3 | ~d3 & b3) + k3[14] - 1502002290 | 0; c3 = (c3 << 17 | c3 >>> 15) + d3 | 0; b3 += (c3 & d3 | ~c3 & a3) + k3[15] + 1236535329 | 0; b3 = (b3 << 22 | b3 >>> 10) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[1] - 165796510 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[6] - 1069501632 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[11] + 643717713 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[0] - 373897302 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[5] - 701558691 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[10] + 38016083 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[15] - 660478335 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[4] - 405537848 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[9] + 568446438 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[14] - 1019803690 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[3] - 187363961 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[8] + 1163531501 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 & d3 | c3 & ~d3) + k3[13] - 1444681467 | 0; a3 = (a3 << 5 | a3 >>> 27) + b3 | 0; d3 += (a3 & c3 | b3 & ~c3) + k3[2] - 51403784 | 0; d3 = (d3 << 9 | d3 >>> 23) + a3 | 0; c3 += (d3 & b3 | a3 & ~b3) + k3[7] + 1735328473 | 0; c3 = (c3 << 14 | c3 >>> 18) + d3 | 0; b3 += (c3 & a3 | d3 & ~a3) + k3[12] - 1926607734 | 0; b3 = (b3 << 20 | b3 >>> 12) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[5] - 378558 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[8] - 2022574463 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[11] + 1839030562 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[14] - 35309556 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[1] - 1530992060 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[4] + 1272893353 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[7] - 155497632 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[10] - 1094730640 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[13] + 681279174 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[0] - 358537222 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[3] - 722521979 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[6] + 76029189 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (b3 ^ c3 ^ d3) + k3[9] - 640364487 | 0; a3 = (a3 << 4 | a3 >>> 28) + b3 | 0; d3 += (a3 ^ b3 ^ c3) + k3[12] - 421815835 | 0; d3 = (d3 << 11 | d3 >>> 21) + a3 | 0; c3 += (d3 ^ a3 ^ b3) + k3[15] + 530742520 | 0; c3 = (c3 << 16 | c3 >>> 16) + d3 | 0; b3 += (c3 ^ d3 ^ a3) + k3[2] - 995338651 | 0; b3 = (b3 << 23 | b3 >>> 9) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[0] - 198630844 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[7] + 1126891415 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[14] - 1416354905 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[5] - 57434055 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[12] + 1700485571 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[3] - 1894986606 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[10] - 1051523 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[1] - 2054922799 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[8] + 1873313359 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[15] - 30611744 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[6] - 1560198380 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[13] + 1309151649 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; a3 += (c3 ^ (b3 | ~d3)) + k3[4] - 145523070 | 0; a3 = (a3 << 6 | a3 >>> 26) + b3 | 0; d3 += (b3 ^ (a3 | ~c3)) + k3[11] - 1120210379 | 0; d3 = (d3 << 10 | d3 >>> 22) + a3 | 0; c3 += (a3 ^ (d3 | ~b3)) + k3[2] + 718787259 | 0; c3 = (c3 << 15 | c3 >>> 17) + d3 | 0; b3 += (d3 ^ (c3 | ~a3)) + k3[9] - 343485551 | 0; b3 = (b3 << 21 | b3 >>> 11) + c3 | 0; x3[0] = a3 + x3[0] | 0; x3[1] = b3 + x3[1] | 0; x3[2] = c3 + x3[2] | 0; x3[3] = d3 + x3[3] | 0; } function md5blk(s3) { var md5blks = [], i3; for (i3 = 0; i3 < 64; i3 += 4) { md5blks[i3 >> 2] = s3.charCodeAt(i3) + (s3.charCodeAt(i3 + 1) << 8) + (s3.charCodeAt(i3 + 2) << 16) + (s3.charCodeAt(i3 + 3) << 24); } return md5blks; } function md5blk_array(a3) { var md5blks = [], i3; for (i3 = 0; i3 < 64; i3 += 4) { md5blks[i3 >> 2] = a3[i3] + (a3[i3 + 1] << 8) + (a3[i3 + 2] << 16) + (a3[i3 + 3] << 24); } return md5blks; } function md51(s3) { var n3 = s3.length, state = [1732584193, -271733879, -1732584194, 271733878], i3, length, tail, tmp, lo, hi; for (i3 = 64; i3 <= n3; i3 += 64) { md5cycle(state, md5blk(s3.substring(i3 - 64, i3))); } s3 = s3.substring(i3 - 64); length = s3.length; tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= s3.charCodeAt(i3) << (i3 % 4 << 3); } tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(state, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = n3 * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(state, tail); return state; } function md51_array(a3) { var n3 = a3.length, state = [1732584193, -271733879, -1732584194, 271733878], i3, length, tail, tmp, lo, hi; for (i3 = 64; i3 <= n3; i3 += 64) { md5cycle(state, md5blk_array(a3.subarray(i3 - 64, i3))); } a3 = i3 - 64 < n3 ? a3.subarray(i3 - 64) : new Uint8Array(0); length = a3.length; tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= a3[i3] << (i3 % 4 << 3); } tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(state, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = n3 * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(state, tail); return state; } function rhex(n3) { var s3 = "", j3; for (j3 = 0; j3 < 4; j3 += 1) { s3 += hex_chr[n3 >> j3 * 8 + 4 & 15] + hex_chr[n3 >> j3 * 8 & 15]; } return s3; } function hex(x3) { var i3; for (i3 = 0; i3 < x3.length; i3 += 1) { x3[i3] = rhex(x3[i3]); } return x3.join(""); } if (hex(md51("hello")) !== "5d41402abc4b2a76b9719d911017c592") ; if (typeof ArrayBuffer !== "undefined" && !ArrayBuffer.prototype.slice) { (function() { function clamp2(val, length) { val = val | 0 || 0; if (val < 0) { return Math.max(val + length, 0); } return Math.min(val, length); } ArrayBuffer.prototype.slice = function(from, to) { var length = this.byteLength, begin = clamp2(from, length), end2 = length, num, target, targetArray, sourceArray; if (to !== undefined$1) { end2 = clamp2(to, length); } if (begin > end2) { return new ArrayBuffer(0); } num = end2 - begin; target = new ArrayBuffer(num); targetArray = new Uint8Array(target); sourceArray = new Uint8Array(this, begin, num); targetArray.set(sourceArray); return target; }; })(); } function toUtf8(str) { if (/[\u0080-\uFFFF]/.test(str)) { str = unescape(encodeURIComponent(str)); } return str; } function utf8Str2ArrayBuffer(str, returnUInt8Array) { var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i3; for (i3 = 0; i3 < length; i3 += 1) { arr[i3] = str.charCodeAt(i3); } return returnUInt8Array ? arr : buff; } function arrayBuffer2Utf8Str(buff) { return String.fromCharCode.apply(null, new Uint8Array(buff)); } function concatenateArrayBuffers(first, second, returnUInt8Array) { var result = new Uint8Array(first.byteLength + second.byteLength); result.set(new Uint8Array(first)); result.set(new Uint8Array(second), first.byteLength); return returnUInt8Array ? result : result.buffer; } function hexToBinaryString(hex2) { var bytes = [], length = hex2.length, x3; for (x3 = 0; x3 < length - 1; x3 += 2) { bytes.push(parseInt(hex2.substr(x3, 2), 16)); } return String.fromCharCode.apply(String, bytes); } function SparkMD52() { this.reset(); } SparkMD52.prototype.append = function(str) { this.appendBinary(toUtf8(str)); return this; }; SparkMD52.prototype.appendBinary = function(contents) { this._buff += contents; this._length += contents.length; var length = this._buff.length, i3; for (i3 = 64; i3 <= length; i3 += 64) { md5cycle(this._hash, md5blk(this._buff.substring(i3 - 64, i3))); } this._buff = this._buff.substring(i3 - 64); return this; }; SparkMD52.prototype.end = function(raw2) { var buff = this._buff, length = buff.length, i3, tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ret; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= buff.charCodeAt(i3) << (i3 % 4 << 3); } this._finish(tail, length); ret = hex(this._hash); if (raw2) { ret = hexToBinaryString(ret); } this.reset(); return ret; }; SparkMD52.prototype.reset = function() { this._buff = ""; this._length = 0; this._hash = [1732584193, -271733879, -1732584194, 271733878]; return this; }; SparkMD52.prototype.getState = function() { return { buff: this._buff, length: this._length, hash: this._hash.slice() }; }; SparkMD52.prototype.setState = function(state) { this._buff = state.buff; this._length = state.length; this._hash = state.hash; return this; }; SparkMD52.prototype.destroy = function() { delete this._hash; delete this._buff; delete this._length; }; SparkMD52.prototype._finish = function(tail, length) { var i3 = length, tmp, lo, hi; tail[i3 >> 2] |= 128 << (i3 % 4 << 3); if (i3 > 55) { md5cycle(this._hash, tail); for (i3 = 0; i3 < 16; i3 += 1) { tail[i3] = 0; } } tmp = this._length * 8; tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/); lo = parseInt(tmp[2], 16); hi = parseInt(tmp[1], 16) || 0; tail[14] = lo; tail[15] = hi; md5cycle(this._hash, tail); }; SparkMD52.hash = function(str, raw2) { return SparkMD52.hashBinary(toUtf8(str), raw2); }; SparkMD52.hashBinary = function(content2, raw2) { var hash3 = md51(content2), ret = hex(hash3); return raw2 ? hexToBinaryString(ret) : ret; }; SparkMD52.ArrayBuffer = function() { this.reset(); }; SparkMD52.ArrayBuffer.prototype.append = function(arr) { var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i3; this._length += arr.byteLength; for (i3 = 64; i3 <= length; i3 += 64) { md5cycle(this._hash, md5blk_array(buff.subarray(i3 - 64, i3))); } this._buff = i3 - 64 < length ? new Uint8Array(buff.buffer.slice(i3 - 64)) : new Uint8Array(0); return this; }; SparkMD52.ArrayBuffer.prototype.end = function(raw2) { var buff = this._buff, length = buff.length, tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], i3, ret; for (i3 = 0; i3 < length; i3 += 1) { tail[i3 >> 2] |= buff[i3] << (i3 % 4 << 3); } this._finish(tail, length); ret = hex(this._hash); if (raw2) { ret = hexToBinaryString(ret); } this.reset(); return ret; }; SparkMD52.ArrayBuffer.prototype.reset = function() { this._buff = new Uint8Array(0); this._length = 0; this._hash = [1732584193, -271733879, -1732584194, 271733878]; return this; }; SparkMD52.ArrayBuffer.prototype.getState = function() { var state = SparkMD52.prototype.getState.call(this); state.buff = arrayBuffer2Utf8Str(state.buff); return state; }; SparkMD52.ArrayBuffer.prototype.setState = function(state) { state.buff = utf8Str2ArrayBuffer(state.buff, true); return SparkMD52.prototype.setState.call(this, state); }; SparkMD52.ArrayBuffer.prototype.destroy = SparkMD52.prototype.destroy; SparkMD52.ArrayBuffer.prototype._finish = SparkMD52.prototype._finish; SparkMD52.ArrayBuffer.hash = function(arr, raw2) { var hash3 = md51_array(new Uint8Array(arr)), ret = hex(hash3); return raw2 ? hexToBinaryString(ret) : ret; }; return SparkMD52; }); })(sparkMd5); var SparkMD5 = sparkMd5.exports; var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; var FileChecksum = class { static create(file, callback) { const instance = new FileChecksum(file); instance.create(callback); } constructor(file) { this.file = file; this.chunkSize = 2097152; this.chunkCount = Math.ceil(this.file.size / this.chunkSize); this.chunkIndex = 0; } create(callback) { this.callback = callback; this.md5Buffer = new SparkMD5.ArrayBuffer(); this.fileReader = new FileReader(); this.fileReader.addEventListener("load", (event) => this.fileReaderDidLoad(event)); this.fileReader.addEventListener("error", (event) => this.fileReaderDidError(event)); this.readNextChunk(); } fileReaderDidLoad(event) { this.md5Buffer.append(event.target.result); if (!this.readNextChunk()) { const binaryDigest = this.md5Buffer.end(true); const base64digest = btoa(binaryDigest); this.callback(null, base64digest); } } fileReaderDidError(event) { this.callback(`Error reading ${this.file.name}`); } readNextChunk() { if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) { const start5 = this.chunkIndex * this.chunkSize; const end2 = Math.min(start5 + this.chunkSize, this.file.size); const bytes = fileSlice.call(this.file, start5, end2); this.fileReader.readAsArrayBuffer(bytes); this.chunkIndex++; return true; } else { return false; } } }; function getMetaValue(name) { const element = findElement(document.head, `meta[name="${name}"]`); if (element) { return element.getAttribute("content"); } } function findElements(root, selector) { if (typeof root == "string") { selector = root; root = document; } const elements = root.querySelectorAll(selector); return toArray(elements); } function findElement(root, selector) { if (typeof root == "string") { selector = root; root = document; } return root.querySelector(selector); } function dispatchEvent2(element, type, eventInit = {}) { const { disabled } = element; const { bubbles, cancelable, detail } = eventInit; const event = document.createEvent("Event"); event.initEvent(type, bubbles || true, cancelable || true); event.detail = detail || {}; try { element.disabled = false; element.dispatchEvent(event); } finally { element.disabled = disabled; } return event; } function toArray(value) { if (Array.isArray(value)) { return value; } else if (Array.from) { return Array.from(value); } else { return [].slice.call(value); } } var BlobRecord = class { constructor(file, checksum, url) { this.file = file; this.attributes = { filename: file.name, content_type: file.type || "application/octet-stream", byte_size: file.size, checksum }; this.xhr = new XMLHttpRequest(); this.xhr.open("POST", url, true); this.xhr.responseType = "json"; this.xhr.setRequestHeader("Content-Type", "application/json"); this.xhr.setRequestHeader("Accept", "application/json"); this.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); const csrfToken = getMetaValue("csrf-token"); if (csrfToken != void 0) { this.xhr.setRequestHeader("X-CSRF-Token", csrfToken); } this.xhr.addEventListener("load", (event) => this.requestDidLoad(event)); this.xhr.addEventListener("error", (event) => this.requestDidError(event)); } get status() { return this.xhr.status; } get response() { const { responseType, response } = this.xhr; if (responseType == "json") { return response; } else { return JSON.parse(response); } } create(callback) { this.callback = callback; this.xhr.send(JSON.stringify({ blob: this.attributes })); } requestDidLoad(event) { if (this.status >= 200 && this.status < 300) { const { response } = this; const { direct_upload } = response; delete response.direct_upload; this.attributes = response; this.directUploadData = direct_upload; this.callback(null, this.toJSON()); } else { this.requestDidError(event); } } requestDidError(event) { this.callback(`Error creating Blob for "${this.file.name}". Status: ${this.status}`); } toJSON() { const result = {}; for (const key in this.attributes) { result[key] = this.attributes[key]; } return result; } }; var BlobUpload = class { constructor(blob) { this.blob = blob; this.file = blob.file; const { url, headers } = blob.directUploadData; this.xhr = new XMLHttpRequest(); this.xhr.open("PUT", url, true); this.xhr.responseType = "text"; for (const key in headers) { this.xhr.setRequestHeader(key, headers[key]); } this.xhr.addEventListener("load", (event) => this.requestDidLoad(event)); this.xhr.addEventListener("error", (event) => this.requestDidError(event)); } create(callback) { this.callback = callback; this.xhr.send(this.file.slice()); } requestDidLoad(event) { const { status, response } = this.xhr; if (status >= 200 && status < 300) { this.callback(null, response); } else { this.requestDidError(event); } } requestDidError(event) { this.callback(`Error storing "${this.file.name}". Status: ${this.xhr.status}`); } }; var id = 0; var DirectUpload = class { constructor(file, url, delegate) { this.id = ++id; this.file = file; this.url = url; this.delegate = delegate; } create(callback) { FileChecksum.create(this.file, (error2, checksum) => { if (error2) { callback(error2); return; } const blob = new BlobRecord(this.file, checksum, this.url); notify(this.delegate, "directUploadWillCreateBlobWithXHR", blob.xhr); blob.create((error3) => { if (error3) { callback(error3); } else { const upload = new BlobUpload(blob); notify(this.delegate, "directUploadWillStoreFileWithXHR", upload.xhr); upload.create((error4) => { if (error4) { callback(error4); } else { callback(null, blob.toJSON()); } }); } }); }); } }; function notify(object, methodName, ...messages) { if (object && typeof object[methodName] == "function") { return object[methodName](...messages); } } var DirectUploadController = class { constructor(input, file) { this.input = input; this.file = file; this.directUpload = new DirectUpload(this.file, this.url, this); this.dispatch("initialize"); } start(callback) { const hiddenInput = document.createElement("input"); hiddenInput.type = "hidden"; hiddenInput.name = this.input.name; this.input.insertAdjacentElement("beforebegin", hiddenInput); this.dispatch("start"); this.directUpload.create((error2, attributes) => { if (error2) { hiddenInput.parentNode.removeChild(hiddenInput); this.dispatchError(error2); } else { hiddenInput.value = attributes.signed_id; } this.dispatch("end"); callback(error2); }); } uploadRequestDidProgress(event) { const progress = event.loaded / event.total * 100; if (progress) { this.dispatch("progress", { progress }); } } get url() { return this.input.getAttribute("data-direct-upload-url"); } dispatch(name, detail = {}) { detail.file = this.file; detail.id = this.directUpload.id; return dispatchEvent2(this.input, `direct-upload:${name}`, { detail }); } dispatchError(error2) { const event = this.dispatch("error", { error: error2 }); if (!event.defaultPrevented) { alert(error2); } } directUploadWillCreateBlobWithXHR(xhr) { this.dispatch("before-blob-request", { xhr }); } directUploadWillStoreFileWithXHR(xhr) { this.dispatch("before-storage-request", { xhr }); xhr.upload.addEventListener("progress", (event) => this.uploadRequestDidProgress(event)); } }; var inputSelector = "input[type=file][data-direct-upload-url]:not([disabled])"; var DirectUploadsController = class { constructor(form) { this.form = form; this.inputs = findElements(form, inputSelector).filter((input) => input.files.length); } start(callback) { const controllers = this.createDirectUploadControllers(); const startNextController = () => { const controller = controllers.shift(); if (controller) { controller.start((error2) => { if (error2) { callback(error2); this.dispatch("end"); } else { startNextController(); } }); } else { callback(); this.dispatch("end"); } }; this.dispatch("start"); startNextController(); } createDirectUploadControllers() { const controllers = []; this.inputs.forEach((input) => { toArray(input.files).forEach((file) => { const controller = new DirectUploadController(input, file); controllers.push(controller); }); }); return controllers; } dispatch(name, detail = {}) { return dispatchEvent2(this.form, `direct-uploads:${name}`, { detail }); } }; var processingAttribute = "data-direct-uploads-processing"; var submitButtonsByForm = /* @__PURE__ */ new WeakMap(); var started = false; function start2() { if (!started) { started = true; document.addEventListener("click", didClick, true); document.addEventListener("submit", didSubmitForm, true); document.addEventListener("ajax:before", didSubmitRemoteElement); } } function didClick(event) { const { target } = event; if ((target.tagName == "INPUT" || target.tagName == "BUTTON") && target.type == "submit" && target.form) { submitButtonsByForm.set(target.form, target); } } function didSubmitForm(event) { handleFormSubmissionEvent(event); } function didSubmitRemoteElement(event) { if (event.target.tagName == "FORM") { handleFormSubmissionEvent(event); } } function handleFormSubmissionEvent(event) { const form = event.target; if (form.hasAttribute(processingAttribute)) { event.preventDefault(); return; } const controller = new DirectUploadsController(form); const { inputs } = controller; if (inputs.length) { event.preventDefault(); form.setAttribute(processingAttribute, ""); inputs.forEach(disable); controller.start((error2) => { form.removeAttribute(processingAttribute); if (error2) { inputs.forEach(enable); } else { submitForm(form); } }); } } function submitForm(form) { let button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit], button[type=submit]"); if (button) { const { disabled } = button; button.disabled = false; button.focus(); button.click(); button.disabled = disabled; } else { button = document.createElement("input"); button.type = "submit"; button.style.display = "none"; form.appendChild(button); button.click(); form.removeChild(button); } submitButtonsByForm.delete(form); } function disable(input) { input.disabled = true; } function enable(input) { input.disabled = false; } function autostart() { if (window.ActiveStorage) { start2(); } } setTimeout(autostart, 1); // ../../../node_modules/alpinejs/dist/module.esm.js var flushPending = false; var flushing = false; var queue = []; var lastFlushedIndex = -1; function scheduler(callback) { queueJob(callback); } function queueJob(job) { if (!queue.includes(job)) queue.push(job); queueFlush(); } function dequeueJob(job) { let index = queue.indexOf(job); if (index !== -1 && index > lastFlushedIndex) queue.splice(index, 1); } function queueFlush() { if (!flushing && !flushPending) { flushPending = true; queueMicrotask(flushJobs); } } function flushJobs() { flushPending = false; flushing = true; for (let i3 = 0; i3 < queue.length; i3++) { queue[i3](); lastFlushedIndex = i3; } queue.length = 0; lastFlushedIndex = -1; flushing = false; } var reactive; var effect; var release; var raw; var shouldSchedule = true; function disableEffectScheduling(callback) { shouldSchedule = false; callback(); shouldSchedule = true; } function setReactivityEngine(engine) { reactive = engine.reactive; release = engine.release; effect = (callback) => engine.effect(callback, { scheduler: (task) => { if (shouldSchedule) { scheduler(task); } else { task(); } } }); raw = engine.raw; } function overrideEffect(override) { effect = override; } function elementBoundEffect(el) { let cleanup2 = () => { }; let wrappedEffect = (callback) => { let effectReference = effect(callback); if (!el._x_effects) { el._x_effects = /* @__PURE__ */ new Set(); el._x_runEffects = () => { el._x_effects.forEach((i3) => i3()); }; } el._x_effects.add(effectReference); cleanup2 = () => { if (effectReference === void 0) return; el._x_effects.delete(effectReference); release(effectReference); }; return effectReference; }; return [wrappedEffect, () => { cleanup2(); }]; } var onAttributeAddeds = []; var onElRemoveds = []; var onElAddeds = []; function onElAdded(callback) { onElAddeds.push(callback); } function onElRemoved(el, callback) { if (typeof callback === "function") { if (!el._x_cleanups) el._x_cleanups = []; el._x_cleanups.push(callback); } else { callback = el; onElRemoveds.push(callback); } } function onAttributesAdded(callback) { onAttributeAddeds.push(callback); } function onAttributeRemoved(el, name, callback) { if (!el._x_attributeCleanups) el._x_attributeCleanups = {}; if (!el._x_attributeCleanups[name]) el._x_attributeCleanups[name] = []; el._x_attributeCleanups[name].push(callback); } function cleanupAttributes(el, names) { if (!el._x_attributeCleanups) return; Object.entries(el._x_attributeCleanups).forEach(([name, value]) => { if (names === void 0 || names.includes(name)) { value.forEach((i3) => i3()); delete el._x_attributeCleanups[name]; } }); } var observer = new MutationObserver(onMutate); var currentlyObserving = false; function startObservingMutations() { observer.observe(document, { subtree: true, childList: true, attributes: true, attributeOldValue: true }); currentlyObserving = true; } function stopObservingMutations() { flushObserver(); observer.disconnect(); currentlyObserving = false; } var recordQueue = []; var willProcessRecordQueue = false; function flushObserver() { recordQueue = recordQueue.concat(observer.takeRecords()); if (recordQueue.length && !willProcessRecordQueue) { willProcessRecordQueue = true; queueMicrotask(() => { processRecordQueue(); willProcessRecordQueue = false; }); } } function processRecordQueue() { onMutate(recordQueue); recordQueue.length = 0; } function mutateDom(callback) { if (!currentlyObserving) return callback(); stopObservingMutations(); let result = callback(); startObservingMutations(); return result; } var isCollecting = false; var deferredMutations = []; function deferMutations() { isCollecting = true; } function flushAndStopDeferringMutations() { isCollecting = false; onMutate(deferredMutations); deferredMutations = []; } function onMutate(mutations) { if (isCollecting) { deferredMutations = deferredMutations.concat(mutations); return; } let addedNodes = []; let removedNodes = []; let addedAttributes = /* @__PURE__ */ new Map(); let removedAttributes = /* @__PURE__ */ new Map(); for (let i3 = 0; i3 < mutations.length; i3++) { if (mutations[i3].target._x_ignoreMutationObserver) continue; if (mutations[i3].type === "childList") { mutations[i3].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.push(node)); mutations[i3].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.push(node)); } if (mutations[i3].type === "attributes") { let el = mutations[i3].target; let name = mutations[i3].attributeName; let oldValue = mutations[i3].oldValue; let add2 = () => { if (!addedAttributes.has(el)) addedAttributes.set(el, []); addedAttributes.get(el).push({ name, value: el.getAttribute(name) }); }; let remove = () => { if (!removedAttributes.has(el)) removedAttributes.set(el, []); removedAttributes.get(el).push(name); }; if (el.hasAttribute(name) && oldValue === null) { add2(); } else if (el.hasAttribute(name)) { remove(); add2(); } else { remove(); } } } removedAttributes.forEach((attrs, el) => { cleanupAttributes(el, attrs); }); addedAttributes.forEach((attrs, el) => { onAttributeAddeds.forEach((i3) => i3(el, attrs)); }); for (let node of removedNodes) { if (addedNodes.includes(node)) continue; onElRemoveds.forEach((i3) => i3(node)); if (node._x_cleanups) { while (node._x_cleanups.length) node._x_cleanups.pop()(); } } addedNodes.forEach((node) => { node._x_ignoreSelf = true; node._x_ignore = true; }); for (let node of addedNodes) { if (removedNodes.includes(node)) continue; if (!node.isConnected) continue; delete node._x_ignoreSelf; delete node._x_ignore; onElAddeds.forEach((i3) => i3(node)); node._x_ignore = true; node._x_ignoreSelf = true; } addedNodes.forEach((node) => { delete node._x_ignoreSelf; delete node._x_ignore; }); addedNodes = null; removedNodes = null; addedAttributes = null; removedAttributes = null; } function scope(node) { return mergeProxies(closestDataStack(node)); } function addScopeToNode(node, data2, referenceNode) { node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)]; return () => { node._x_dataStack = node._x_dataStack.filter((i3) => i3 !== data2); }; } function closestDataStack(node) { if (node._x_dataStack) return node._x_dataStack; if (typeof ShadowRoot === "function" && node instanceof ShadowRoot) { return closestDataStack(node.host); } if (!node.parentNode) { return []; } return closestDataStack(node.parentNode); } function mergeProxies(objects) { let thisProxy = new Proxy({}, { ownKeys: () => { return Array.from(new Set(objects.flatMap((i3) => Object.keys(i3)))); }, has: (target, name) => { return objects.some((obj) => obj.hasOwnProperty(name)); }, get: (target, name) => { return (objects.find((obj) => { if (obj.hasOwnProperty(name)) { let descriptor = Object.getOwnPropertyDescriptor(obj, name); if (descriptor.get && descriptor.get._x_alreadyBound || descriptor.set && descriptor.set._x_alreadyBound) { return true; } if ((descriptor.get || descriptor.set) && descriptor.enumerable) { let getter = descriptor.get; let setter = descriptor.set; let property = descriptor; getter = getter && getter.bind(thisProxy); setter = setter && setter.bind(thisProxy); if (getter) getter._x_alreadyBound = true; if (setter) setter._x_alreadyBound = true; Object.defineProperty(obj, name, __spreadProps(__spreadValues({}, property), { get: getter, set: setter })); } return true; } return false; }) || {})[name]; }, set: (target, name, value) => { let closestObjectWithKey = objects.find((obj) => obj.hasOwnProperty(name)); if (closestObjectWithKey) { closestObjectWithKey[name] = value; } else { objects[objects.length - 1][name] = value; } return true; } }); return thisProxy; } function initInterceptors(data2) { let isObject22 = (val) => typeof val === "object" && !Array.isArray(val) && val !== null; let recurse = (obj, basePath = "") => { Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value, enumerable }]) => { if (enumerable === false || value === void 0) return; let path = basePath === "" ? key : `${basePath}.${key}`; if (typeof value === "object" && value !== null && value._x_interceptor) { obj[key] = value.initialize(data2, path, key); } else { if (isObject22(value) && value !== obj && !(value instanceof Element)) { recurse(value, path); } } }); }; return recurse(data2); } function interceptor(callback, mutateObj = () => { }) { let obj = { initialValue: void 0, _x_interceptor: true, initialize(data2, path, key) { return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key); } }; mutateObj(obj); return (initialValue) => { if (typeof initialValue === "object" && initialValue !== null && initialValue._x_interceptor) { let initialize = obj.initialize.bind(obj); obj.initialize = (data2, path, key) => { let innerValue = initialValue.initialize(data2, path, key); obj.initialValue = innerValue; return initialize(data2, path, key); }; } else { obj.initialValue = initialValue; } return obj; }; } function get(obj, path) { return path.split(".").reduce((carry, segment) => carry[segment], obj); } function set(obj, path, value) { if (typeof path === "string") path = path.split("."); if (path.length === 1) obj[path[0]] = value; else if (path.length === 0) throw error; else { if (obj[path[0]]) return set(obj[path[0]], path.slice(1), value); else { obj[path[0]] = {}; return set(obj[path[0]], path.slice(1), value); } } } var magics = {}; function magic(name, callback) { magics[name] = callback; } function injectMagics(obj, el) { Object.entries(magics).forEach(([name, callback]) => { let memoizedUtilities = null; function getUtilities() { if (memoizedUtilities) { return memoizedUtilities; } else { let [utilities, cleanup2] = getElementBoundUtilities(el); memoizedUtilities = __spreadValues({ interceptor }, utilities); onElRemoved(el, cleanup2); return memoizedUtilities; } } Object.defineProperty(obj, `$${name}`, { get() { return callback(el, getUtilities()); }, enumerable: false }); }); return obj; } function tryCatch(el, expression, callback, ...args) { try { return callback(...args); } catch (e3) { handleError(e3, el, expression); } } function handleError(error2, el, expression = void 0) { Object.assign(error2, { el, expression }); console.warn(`Alpine Expression Error: ${error2.message} ${expression ? 'Expression: "' + expression + '"\n\n' : ""}`, el); setTimeout(() => { throw error2; }, 0); } var shouldAutoEvaluateFunctions = true; function dontAutoEvaluateFunctions(callback) { let cache2 = shouldAutoEvaluateFunctions; shouldAutoEvaluateFunctions = false; callback(); shouldAutoEvaluateFunctions = cache2; } function evaluate(el, expression, extras = {}) { let result; evaluateLater(el, expression)((value) => result = value, extras); return result; } function evaluateLater(...args) { return theEvaluatorFunction(...args); } var theEvaluatorFunction = normalEvaluator; function setEvaluator(newEvaluator) { theEvaluatorFunction = newEvaluator; } function normalEvaluator(el, expression) { let overriddenMagics = {}; injectMagics(overriddenMagics, el); let dataStack = [overriddenMagics, ...closestDataStack(el)]; let evaluator = typeof expression === "function" ? generateEvaluatorFromFunction(dataStack, expression) : generateEvaluatorFromString(dataStack, expression, el); return tryCatch.bind(null, el, expression, evaluator); } function generateEvaluatorFromFunction(dataStack, func) { return (receiver = () => { }, { scope: scope2 = {}, params = [] } = {}) => { let result = func.apply(mergeProxies([scope2, ...dataStack]), params); runIfTypeOfFunction(receiver, result); }; } var evaluatorMemo = {}; function generateFunctionFromString(expression, el) { if (evaluatorMemo[expression]) { return evaluatorMemo[expression]; } let AsyncFunction = Object.getPrototypeOf(async function() { }).constructor; let rightSideSafeExpression = /^[\n\s]*if.*\(.*\)/.test(expression) || /^(let|const)\s/.test(expression) ? `(async()=>{ ${expression} })()` : expression; const safeAsyncFunction = () => { try { return new AsyncFunction(["__self", "scope"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`); } catch (error2) { handleError(error2, el, expression); return Promise.resolve(); } }; let func = safeAsyncFunction(); evaluatorMemo[expression] = func; return func; } function generateEvaluatorFromString(dataStack, expression, el) { let func = generateFunctionFromString(expression, el); return (receiver = () => { }, { scope: scope2 = {}, params = [] } = {}) => { func.result = void 0; func.finished = false; let completeScope = mergeProxies([scope2, ...dataStack]); if (typeof func === "function") { let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression)); if (func.finished) { runIfTypeOfFunction(receiver, func.result, completeScope, params, el); func.result = void 0; } else { promise.then((result) => { runIfTypeOfFunction(receiver, result, completeScope, params, el); }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0); } } }; } function runIfTypeOfFunction(receiver, value, scope2, params, el) { if (shouldAutoEvaluateFunctions && typeof value === "function") { let result = value.apply(scope2, params); if (result instanceof Promise) { result.then((i3) => runIfTypeOfFunction(receiver, i3, scope2, params)).catch((error2) => handleError(error2, el, value)); } else { receiver(result); } } else if (typeof value === "object" && value instanceof Promise) { value.then((i3) => receiver(i3)); } else { receiver(value); } } var prefixAsString = "x-"; function prefix(subject = "") { return prefixAsString + subject; } function setPrefix(newPrefix) { prefixAsString = newPrefix; } var directiveHandlers = {}; function directive(name, callback) { directiveHandlers[name] = callback; return { before(directive2) { if (!directiveHandlers[directive2]) { console.warn("Cannot find directive `${directive}`. `${name}` will use the default order of execution"); return; } const pos = directiveOrder.indexOf(directive2); directiveOrder.splice(pos >= 0 ? pos : directiveOrder.indexOf("DEFAULT"), 0, name); } }; } function directives(el, attributes, originalAttributeOverride) { attributes = Array.from(attributes); if (el._x_virtualDirectives) { let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({ name, value })); let staticAttributes = attributesOnly(vAttributes); vAttributes = vAttributes.map((attribute) => { if (staticAttributes.find((attr) => attr.name === attribute.name)) { return { name: `x-bind:${attribute.name}`, value: `"${attribute.value}"` }; } return attribute; }); attributes = attributes.concat(vAttributes); } let transformedAttributeMap = {}; let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority); return directives2.map((directive2) => { return getDirectiveHandler(el, directive2); }); } function attributesOnly(attributes) { return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr)); } var isDeferringHandlers = false; var directiveHandlerStacks = /* @__PURE__ */ new Map(); var currentHandlerStackKey = Symbol(); function deferHandlingDirectives(callback) { isDeferringHandlers = true; let key = Symbol(); currentHandlerStackKey = key; directiveHandlerStacks.set(key, []); let flushHandlers = () => { while (directiveHandlerStacks.get(key).length) directiveHandlerStacks.get(key).shift()(); directiveHandlerStacks.delete(key); }; let stopDeferring = () => { isDeferringHandlers = false; flushHandlers(); }; callback(flushHandlers); stopDeferring(); } function getElementBoundUtilities(el) { let cleanups = []; let cleanup2 = (callback) => cleanups.push(callback); let [effect32, cleanupEffect] = elementBoundEffect(el); cleanups.push(cleanupEffect); let utilities = { Alpine: alpine_default, effect: effect32, cleanup: cleanup2, evaluateLater: evaluateLater.bind(evaluateLater, el), evaluate: evaluate.bind(evaluate, el) }; let doCleanup = () => cleanups.forEach((i3) => i3()); return [utilities, doCleanup]; } function getDirectiveHandler(el, directive2) { let noop = () => { }; let handler3 = directiveHandlers[directive2.type] || noop; let [utilities, cleanup2] = getElementBoundUtilities(el); onAttributeRemoved(el, directive2.original, cleanup2); let fullHandler = () => { if (el._x_ignore || el._x_ignoreSelf) return; handler3.inline && handler3.inline(el, directive2, utilities); handler3 = handler3.bind(handler3, el, directive2, utilities); isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler3) : handler3(); }; fullHandler.runCleanups = cleanup2; return fullHandler; } var startingWith = (subject, replacement) => ({ name, value }) => { if (name.startsWith(subject)) name = name.replace(subject, replacement); return { name, value }; }; var into = (i3) => i3; function toTransformedAttributes(callback = () => { }) { return ({ name, value }) => { let { name: newName, value: newValue } = attributeTransformers.reduce((carry, transform) => { return transform(carry); }, { name, value }); if (newName !== name) callback(newName, name); return { name: newName, value: newValue }; }; } var attributeTransformers = []; function mapAttributes(callback) { attributeTransformers.push(callback); } function outNonAlpineAttributes({ name }) { return alpineAttributeRegex().test(name); } var alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\b`); function toParsedDirectives(transformedAttributeMap, originalAttributeOverride) { return ({ name, value }) => { let typeMatch = name.match(alpineAttributeRegex()); let valueMatch = name.match(/:([a-zA-Z0-9\-:]+)/); let modifiers = name.match(/\.[^.\]]+(?=[^\]]*$)/g) || []; let original = originalAttributeOverride || transformedAttributeMap[name] || name; return { type: typeMatch ? typeMatch[1] : null, value: valueMatch ? valueMatch[1] : null, modifiers: modifiers.map((i3) => i3.replace(".", "")), expression: value, original }; }; } var DEFAULT = "DEFAULT"; var directiveOrder = [ "ignore", "ref", "data", "id", "bind", "init", "for", "model", "modelable", "transition", "show", "if", DEFAULT, "teleport" ]; function byPriority(a3, b3) { let typeA = directiveOrder.indexOf(a3.type) === -1 ? DEFAULT : a3.type; let typeB = directiveOrder.indexOf(b3.type) === -1 ? DEFAULT : b3.type; return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB); } function dispatch3(el, name, detail = {}) { el.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable: true })); } function walk2(el, callback) { if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { Array.from(el.children).forEach((el2) => walk2(el2, callback)); return; } let skip = false; callback(el, () => skip = true); if (skip) return; let node = el.firstElementChild; while (node) { walk2(node, callback, false); node = node.nextElementSibling; } } function warn(message2, ...args) { console.warn(`Alpine Warning: ${message2}`, ...args); } var started2 = false; function start3() { if (started2) warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); started2 = true; if (!document.body) warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?"); dispatch3(document, "alpine:init"); dispatch3(document, "alpine:initializing"); startObservingMutations(); onElAdded((el) => initTree(el, walk2)); onElRemoved((el) => destroyTree(el)); onAttributesAdded((el, attrs) => { directives(el, attrs).forEach((handle) => handle()); }); let outNestedComponents = (el) => !closestRoot(el.parentElement, true); Array.from(document.querySelectorAll(allSelectors())).filter(outNestedComponents).forEach((el) => { initTree(el); }); dispatch3(document, "alpine:initialized"); } var rootSelectorCallbacks = []; var initSelectorCallbacks = []; function rootSelectors() { return rootSelectorCallbacks.map((fn3) => fn3()); } function allSelectors() { return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn3) => fn3()); } function addRootSelector(selectorCallback) { rootSelectorCallbacks.push(selectorCallback); } function addInitSelector(selectorCallback) { initSelectorCallbacks.push(selectorCallback); } function closestRoot(el, includeInitSelectors = false) { return findClosest(el, (element) => { const selectors = includeInitSelectors ? allSelectors() : rootSelectors(); if (selectors.some((selector) => element.matches(selector))) return true; }); } function findClosest(el, callback) { if (!el) return; if (callback(el)) return el; if (el._x_teleportBack) el = el._x_teleportBack; if (!el.parentElement) return; return findClosest(el.parentElement, callback); } function isRoot(el) { return rootSelectors().some((selector) => el.matches(selector)); } var initInterceptors2 = []; function interceptInit(callback) { initInterceptors2.push(callback); } function initTree(el, walker = walk2, intercept = () => { }) { deferHandlingDirectives(() => { walker(el, (el2, skip) => { intercept(el2, skip); initInterceptors2.forEach((i3) => i3(el2, skip)); directives(el2, el2.attributes).forEach((handle) => handle()); el2._x_ignore && skip(); }); }); } function destroyTree(root) { walk2(root, (el) => cleanupAttributes(el)); } var tickStack = []; var isHolding = false; function nextTick(callback = () => { }) { queueMicrotask(() => { isHolding || setTimeout(() => { releaseNextTicks(); }); }); return new Promise((res) => { tickStack.push(() => { callback(); res(); }); }); } function releaseNextTicks() { isHolding = false; while (tickStack.length) tickStack.shift()(); } function holdNextTicks() { isHolding = true; } function setClasses(el, value) { if (Array.isArray(value)) { return setClassesFromString(el, value.join(" ")); } else if (typeof value === "object" && value !== null) { return setClassesFromObject(el, value); } else if (typeof value === "function") { return setClasses(el, value()); } return setClassesFromString(el, value); } function setClassesFromString(el, classString) { let split = (classString2) => classString2.split(" ").filter(Boolean); let missingClasses = (classString2) => classString2.split(" ").filter((i3) => !el.classList.contains(i3)).filter(Boolean); let addClassesAndReturnUndo = (classes) => { el.classList.add(...classes); return () => { el.classList.remove(...classes); }; }; classString = classString === true ? classString = "" : classString || ""; return addClassesAndReturnUndo(missingClasses(classString)); } function setClassesFromObject(el, classObject) { let split = (classString) => classString.split(" ").filter(Boolean); let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean); let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean); let added = []; let removed = []; forRemove.forEach((i3) => { if (el.classList.contains(i3)) { el.classList.remove(i3); removed.push(i3); } }); forAdd.forEach((i3) => { if (!el.classList.contains(i3)) { el.classList.add(i3); added.push(i3); } }); return () => { removed.forEach((i3) => el.classList.add(i3)); added.forEach((i3) => el.classList.remove(i3)); }; } function setStyles(el, value) { if (typeof value === "object" && value !== null) { return setStylesFromObject(el, value); } return setStylesFromString(el, value); } function setStylesFromObject(el, value) { let previousStyles = {}; Object.entries(value).forEach(([key, value2]) => { previousStyles[key] = el.style[key]; if (!key.startsWith("--")) { key = kebabCase(key); } el.style.setProperty(key, value2); }); setTimeout(() => { if (el.style.length === 0) { el.removeAttribute("style"); } }); return () => { setStyles(el, previousStyles); }; } function setStylesFromString(el, value) { let cache2 = el.getAttribute("style", value); el.setAttribute("style", value); return () => { el.setAttribute("style", cache2 || ""); }; } function kebabCase(subject) { return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); } function once(callback, fallback = () => { }) { let called = false; return function() { if (!called) { called = true; callback.apply(this, arguments); } else { fallback.apply(this, arguments); } }; } directive("transition", (el, { value, modifiers, expression }, { evaluate: evaluate2 }) => { if (typeof expression === "function") expression = evaluate2(expression); if (expression === false) return; if (!expression || typeof expression === "boolean") { registerTransitionsFromHelper(el, modifiers, value); } else { registerTransitionsFromClassString(el, expression, value); } }); function registerTransitionsFromClassString(el, classString, stage) { registerTransitionObject(el, setClasses, ""); let directiveStorageMap = { enter: (classes) => { el._x_transition.enter.during = classes; }, "enter-start": (classes) => { el._x_transition.enter.start = classes; }, "enter-end": (classes) => { el._x_transition.enter.end = classes; }, leave: (classes) => { el._x_transition.leave.during = classes; }, "leave-start": (classes) => { el._x_transition.leave.start = classes; }, "leave-end": (classes) => { el._x_transition.leave.end = classes; } }; directiveStorageMap[stage](classString); } function registerTransitionsFromHelper(el, modifiers, stage) { registerTransitionObject(el, setStyles); let doesntSpecify = !modifiers.includes("in") && !modifiers.includes("out") && !stage; let transitioningIn = doesntSpecify || modifiers.includes("in") || ["enter"].includes(stage); let transitioningOut = doesntSpecify || modifiers.includes("out") || ["leave"].includes(stage); if (modifiers.includes("in") && !doesntSpecify) { modifiers = modifiers.filter((i3, index) => index < modifiers.indexOf("out")); } if (modifiers.includes("out") && !doesntSpecify) { modifiers = modifiers.filter((i3, index) => index > modifiers.indexOf("out")); } let wantsAll = !modifiers.includes("opacity") && !modifiers.includes("scale"); let wantsOpacity = wantsAll || modifiers.includes("opacity"); let wantsScale = wantsAll || modifiers.includes("scale"); let opacityValue = wantsOpacity ? 0 : 1; let scaleValue = wantsScale ? modifierValue(modifiers, "scale", 95) / 100 : 1; let delay3 = modifierValue(modifiers, "delay", 0) / 1e3; let origin = modifierValue(modifiers, "origin", "center"); let property = "opacity, transform"; let durationIn = modifierValue(modifiers, "duration", 150) / 1e3; let durationOut = modifierValue(modifiers, "duration", 75) / 1e3; let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`; if (transitioningIn) { el._x_transition.enter.during = { transformOrigin: origin, transitionDelay: `${delay3}s`, transitionProperty: property, transitionDuration: `${durationIn}s`, transitionTimingFunction: easing }; el._x_transition.enter.start = { opacity: opacityValue, transform: `scale(${scaleValue})` }; el._x_transition.enter.end = { opacity: 1, transform: `scale(1)` }; } if (transitioningOut) { el._x_transition.leave.during = { transformOrigin: origin, transitionDelay: `${delay3}s`, transitionProperty: property, transitionDuration: `${durationOut}s`, transitionTimingFunction: easing }; el._x_transition.leave.start = { opacity: 1, transform: `scale(1)` }; el._x_transition.leave.end = { opacity: opacityValue, transform: `scale(${scaleValue})` }; } } function registerTransitionObject(el, setFunction, defaultValue = {}) { if (!el._x_transition) el._x_transition = { enter: { during: defaultValue, start: defaultValue, end: defaultValue }, leave: { during: defaultValue, start: defaultValue, end: defaultValue }, in(before = () => { }, after = () => { }) { transition(el, setFunction, { during: this.enter.during, start: this.enter.start, end: this.enter.end }, before, after); }, out(before = () => { }, after = () => { }) { transition(el, setFunction, { during: this.leave.during, start: this.leave.start, end: this.leave.end }, before, after); } }; } window.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide2) { const nextTick2 = document.visibilityState === "visible" ? requestAnimationFrame : setTimeout; let clickAwayCompatibleShow = () => nextTick2(show); if (value) { if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) { el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow(); } else { el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow(); } return; } el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => { el._x_transition.out(() => { }, () => resolve(hide2)); el._x_transitioning.beforeCancel(() => reject({ isFromCancelledTransition: true })); }) : Promise.resolve(hide2); queueMicrotask(() => { let closest = closestHide(el); if (closest) { if (!closest._x_hideChildren) closest._x_hideChildren = []; closest._x_hideChildren.push(el); } else { nextTick2(() => { let hideAfterChildren = (el2) => { let carry = Promise.all([ el2._x_hidePromise, ...(el2._x_hideChildren || []).map(hideAfterChildren) ]).then(([i3]) => i3()); delete el2._x_hidePromise; delete el2._x_hideChildren; return carry; }; hideAfterChildren(el).catch((e3) => { if (!e3.isFromCancelledTransition) throw e3; }); }); } }); }; function closestHide(el) { let parent = el.parentNode; if (!parent) return; return parent._x_hidePromise ? parent : closestHide(parent); } function transition(el, setFunction, { during, start: start22, end: end2 } = {}, before = () => { }, after = () => { }) { if (el._x_transitioning) el._x_transitioning.cancel(); if (Object.keys(during).length === 0 && Object.keys(start22).length === 0 && Object.keys(end2).length === 0) { before(); after(); return; } let undoStart, undoDuring, undoEnd; performTransition(el, { start() { undoStart = setFunction(el, start22); }, during() { undoDuring = setFunction(el, during); }, before, end() { undoStart(); undoEnd = setFunction(el, end2); }, after, cleanup() { undoDuring(); undoEnd(); } }); } function performTransition(el, stages) { let interrupted, reachedBefore, reachedEnd; let finish = once(() => { mutateDom(() => { interrupted = true; if (!reachedBefore) stages.before(); if (!reachedEnd) { stages.end(); releaseNextTicks(); } stages.after(); if (el.isConnected) stages.cleanup(); delete el._x_transitioning; }); }); el._x_transitioning = { beforeCancels: [], beforeCancel(callback) { this.beforeCancels.push(callback); }, cancel: once(function() { while (this.beforeCancels.length) { this.beforeCancels.shift()(); } ; finish(); }), finish }; mutateDom(() => { stages.start(); stages.during(); }); holdNextTicks(); requestAnimationFrame(() => { if (interrupted) return; let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, "").replace("s", "")) * 1e3; let delay3 = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, "").replace("s", "")) * 1e3; if (duration === 0) duration = Number(getComputedStyle(el).animationDuration.replace("s", "")) * 1e3; mutateDom(() => { stages.before(); }); reachedBefore = true; requestAnimationFrame(() => { if (interrupted) return; mutateDom(() => { stages.end(); }); releaseNextTicks(); setTimeout(el._x_transitioning.finish, duration + delay3); reachedEnd = true; }); }); } function modifierValue(modifiers, key, fallback) { if (modifiers.indexOf(key) === -1) return fallback; const rawValue = modifiers[modifiers.indexOf(key) + 1]; if (!rawValue) return fallback; if (key === "scale") { if (isNaN(rawValue)) return fallback; } if (key === "duration" || key === "delay") { let match = rawValue.match(/([0-9]+)ms/); if (match) return match[1]; } if (key === "origin") { if (["top", "right", "left", "center", "bottom"].includes(modifiers[modifiers.indexOf(key) + 2])) { return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(" "); } } return rawValue; } var isCloning = false; function skipDuringClone(callback, fallback = () => { }) { return (...args) => isCloning ? fallback(...args) : callback(...args); } function onlyDuringClone(callback) { return (...args) => isCloning && callback(...args); } function clone(oldEl, newEl) { if (!newEl._x_dataStack) newEl._x_dataStack = oldEl._x_dataStack; isCloning = true; dontRegisterReactiveSideEffects(() => { cloneTree(newEl); }); isCloning = false; } function cloneTree(el) { let hasRunThroughFirstEl = false; let shallowWalker = (el2, callback) => { walk2(el2, (el3, skip) => { if (hasRunThroughFirstEl && isRoot(el3)) return skip(); hasRunThroughFirstEl = true; callback(el3, skip); }); }; initTree(el, shallowWalker); } function dontRegisterReactiveSideEffects(callback) { let cache2 = effect; overrideEffect((callback2, el) => { let storedEffect = cache2(callback2); release(storedEffect); return () => { }; }); callback(); overrideEffect(cache2); } function bind(el, name, value, modifiers = []) { if (!el._x_bindings) el._x_bindings = reactive({}); el._x_bindings[name] = value; name = modifiers.includes("camel") ? camelCase(name) : name; switch (name) { case "value": bindInputValue(el, value); break; case "style": bindStyles(el, value); break; case "class": bindClasses(el, value); break; case "selected": case "checked": bindAttributeAndProperty(el, name, value); break; default: bindAttribute(el, name, value); break; } } function bindInputValue(el, value) { if (el.type === "radio") { if (el.attributes.value === void 0) { el.value = value; } if (window.fromModel) { el.checked = checkedAttrLooseCompare(el.value, value); } } else if (el.type === "checkbox") { if (Number.isInteger(value)) { el.value = value; } else if (!Number.isInteger(value) && !Array.isArray(value) && typeof value !== "boolean" && ![null, void 0].includes(value)) { el.value = String(value); } else { if (Array.isArray(value)) { el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value)); } else { el.checked = !!value; } } } else if (el.tagName === "SELECT") { updateSelect(el, value); } else { if (el.value === value) return; el.value = value; } } function bindClasses(el, value) { if (el._x_undoAddedClasses) el._x_undoAddedClasses(); el._x_undoAddedClasses = setClasses(el, value); } function bindStyles(el, value) { if (el._x_undoAddedStyles) el._x_undoAddedStyles(); el._x_undoAddedStyles = setStyles(el, value); } function bindAttributeAndProperty(el, name, value) { bindAttribute(el, name, value); setPropertyIfChanged(el, name, value); } function bindAttribute(el, name, value) { if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) { el.removeAttribute(name); } else { if (isBooleanAttr(name)) value = name; setIfChanged(el, name, value); } } function setIfChanged(el, attrName, value) { if (el.getAttribute(attrName) != value) { el.setAttribute(attrName, value); } } function setPropertyIfChanged(el, propName, value) { if (el[propName] !== value) { el[propName] = value; } } function updateSelect(el, value) { const arrayWrappedValue = [].concat(value).map((value2) => { return value2 + ""; }); Array.from(el.options).forEach((option) => { option.selected = arrayWrappedValue.includes(option.value); }); } function camelCase(subject) { return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase()); } function checkedAttrLooseCompare(valueA, valueB) { return valueA == valueB; } function isBooleanAttr(attrName) { const booleanAttributes = [ "disabled", "checked", "required", "readonly", "hidden", "open", "selected", "autofocus", "itemscope", "multiple", "novalidate", "allowfullscreen", "allowpaymentrequest", "formnovalidate", "autoplay", "controls", "loop", "muted", "playsinline", "default", "ismap", "reversed", "async", "defer", "nomodule" ]; return booleanAttributes.includes(attrName); } function attributeShouldntBePreservedIfFalsy(name) { return !["aria-pressed", "aria-checked", "aria-expanded", "aria-selected"].includes(name); } function getBinding(el, name, fallback) { if (el._x_bindings && el._x_bindings[name] !== void 0) return el._x_bindings[name]; let attr = el.getAttribute(name); if (attr === null) return typeof fallback === "function" ? fallback() : fallback; if (attr === "") return true; if (isBooleanAttr(name)) { return !![name, "true"].includes(attr); } return attr; } function debounce(func, wait) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; func.apply(context, args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; } function throttle(func, limit) { let inThrottle; return function() { let context = this, args = arguments; if (!inThrottle) { func.apply(context, args); inThrottle = true; setTimeout(() => inThrottle = false, limit); } }; } function plugin(callback) { let callbacks = Array.isArray(callback) ? callback : [callback]; callbacks.forEach((i3) => i3(alpine_default)); } var stores = {}; var isReactive = false; function store(name, value) { if (!isReactive) { stores = reactive(stores); isReactive = true; } if (value === void 0) { return stores[name]; } stores[name] = value; if (typeof value === "object" && value !== null && value.hasOwnProperty("init") && typeof value.init === "function") { stores[name].init(); } initInterceptors(stores[name]); } function getStores() { return stores; } var binds = {}; function bind2(name, bindings) { let getBindings = typeof bindings !== "function" ? () => bindings : bindings; if (name instanceof Element) { applyBindingsObject(name, getBindings()); } else { binds[name] = getBindings; } } function injectBindingProviders(obj) { Object.entries(binds).forEach(([name, callback]) => { Object.defineProperty(obj, name, { get() { return (...args) => { return callback(...args); }; } }); }); return obj; } function applyBindingsObject(el, obj, original) { let cleanupRunners = []; while (cleanupRunners.length) cleanupRunners.pop()(); let attributes = Object.entries(obj).map(([name, value]) => ({ name, value })); let staticAttributes = attributesOnly(attributes); attributes = attributes.map((attribute) => { if (staticAttributes.find((attr) => attr.name === attribute.name)) { return { name: `x-bind:${attribute.name}`, value: `"${attribute.value}"` }; } return attribute; }); directives(el, attributes, original).map((handle) => { cleanupRunners.push(handle.runCleanups); handle(); }); } var datas = {}; function data(name, callback) { datas[name] = callback; } function injectDataProviders(obj, context) { Object.entries(datas).forEach(([name, callback]) => { Object.defineProperty(obj, name, { get() { return (...args) => { return callback.bind(context)(...args); }; }, enumerable: false }); }); return obj; } var Alpine2 = { get reactive() { return reactive; }, get release() { return release; }, get effect() { return effect; }, get raw() { return raw; }, version: "3.12.2", flushAndStopDeferringMutations, dontAutoEvaluateFunctions, disableEffectScheduling, startObservingMutations, stopObservingMutations, setReactivityEngine, closestDataStack, skipDuringClone, onlyDuringClone, addRootSelector, addInitSelector, addScopeToNode, deferMutations, mapAttributes, evaluateLater, interceptInit, setEvaluator, mergeProxies, findClosest, closestRoot, destroyTree, interceptor, transition, setStyles, mutateDom, directive, throttle, debounce, evaluate, initTree, nextTick, prefixed: prefix, prefix: setPrefix, plugin, magic, store, start: start3, clone, bound: getBinding, $data: scope, walk: walk2, data, bind: bind2 }; var alpine_default = Alpine2; function makeMap(str, expectsLowerCase) { const map = /* @__PURE__ */ Object.create(null); const list = str.split(","); for (let i3 = 0; i3 < list.length; i3++) { map[list[i3]] = true; } return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; } var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`); var EMPTY_OBJ = true ? Object.freeze({}) : {}; var EMPTY_ARR = true ? Object.freeze([]) : []; var extend2 = Object.assign; var hasOwnProperty = Object.prototype.hasOwnProperty; var hasOwn = (val, key) => hasOwnProperty.call(val, key); var isArray = Array.isArray; var isMap = (val) => toTypeString(val) === "[object Map]"; var isString = (val) => typeof val === "string"; var isSymbol = (val) => typeof val === "symbol"; var isObject = (val) => val !== null && typeof val === "object"; var objectToString = Object.prototype.toString; var toTypeString = (value) => objectToString.call(value); var toRawType = (value) => { return toTypeString(value).slice(8, -1); }; var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; var cacheStringFunction = (fn3) => { const cache2 = /* @__PURE__ */ Object.create(null); return (str) => { const hit = cache2[str]; return hit || (cache2[str] = fn3(str)); }; }; var camelizeRE = /-(\w)/g; var camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_3, c3) => c3 ? c3.toUpperCase() : ""); }); var hyphenateRE = /\B([A-Z])/g; var hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, "-$1").toLowerCase()); var capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); var toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``); var hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue); var targetMap = /* @__PURE__ */ new WeakMap(); var effectStack = []; var activeEffect; var ITERATE_KEY = Symbol(true ? "iterate" : ""); var MAP_KEY_ITERATE_KEY = Symbol(true ? "Map key iterate" : ""); function isEffect(fn3) { return fn3 && fn3._isEffect === true; } function effect2(fn3, options = EMPTY_OBJ) { if (isEffect(fn3)) { fn3 = fn3.raw; } const effect32 = createReactiveEffect(fn3, options); if (!options.lazy) { effect32(); } return effect32; } function stop(effect32) { if (effect32.active) { cleanup(effect32); if (effect32.options.onStop) { effect32.options.onStop(); } effect32.active = false; } } var uid = 0; function createReactiveEffect(fn3, options) { const effect32 = function reactiveEffect() { if (!effect32.active) { return fn3(); } if (!effectStack.includes(effect32)) { cleanup(effect32); try { enableTracking(); effectStack.push(effect32); activeEffect = effect32; return fn3(); } finally { effectStack.pop(); resetTracking(); activeEffect = effectStack[effectStack.length - 1]; } } }; effect32.id = uid++; effect32.allowRecurse = !!options.allowRecurse; effect32._isEffect = true; effect32.active = true; effect32.raw = fn3; effect32.deps = []; effect32.options = options; return effect32; } function cleanup(effect32) { const { deps } = effect32; if (deps.length) { for (let i3 = 0; i3 < deps.length; i3++) { deps[i3].delete(effect32); } deps.length = 0; } } var shouldTrack = true; var trackStack = []; function pauseTracking() { trackStack.push(shouldTrack); shouldTrack = false; } function enableTracking() { trackStack.push(shouldTrack); shouldTrack = true; } function resetTracking() { const last = trackStack.pop(); shouldTrack = last === void 0 ? true : last; } function track(target, type, key) { if (!shouldTrack || activeEffect === void 0) { return; } let depsMap = targetMap.get(target); if (!depsMap) { targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); } let dep = depsMap.get(key); if (!dep) { depsMap.set(key, dep = /* @__PURE__ */ new Set()); } if (!dep.has(activeEffect)) { dep.add(activeEffect); activeEffect.deps.push(dep); if (activeEffect.options.onTrack) { activeEffect.options.onTrack({ effect: activeEffect, target, type, key }); } } } function trigger(target, type, key, newValue, oldValue, oldTarget) { const depsMap = targetMap.get(target); if (!depsMap) { return; } const effects = /* @__PURE__ */ new Set(); const add2 = (effectsToAdd) => { if (effectsToAdd) { effectsToAdd.forEach((effect32) => { if (effect32 !== activeEffect || effect32.allowRecurse) { effects.add(effect32); } }); } }; if (type === "clear") { depsMap.forEach(add2); } else if (key === "length" && isArray(target)) { depsMap.forEach((dep, key2) => { if (key2 === "length" || key2 >= newValue) { add2(dep); } }); } else { if (key !== void 0) { add2(depsMap.get(key)); } switch (type) { case "add": if (!isArray(target)) { add2(depsMap.get(ITERATE_KEY)); if (isMap(target)) { add2(depsMap.get(MAP_KEY_ITERATE_KEY)); } } else if (isIntegerKey(key)) { add2(depsMap.get("length")); } break; case "delete": if (!isArray(target)) { add2(depsMap.get(ITERATE_KEY)); if (isMap(target)) { add2(depsMap.get(MAP_KEY_ITERATE_KEY)); } } break; case "set": if (isMap(target)) { add2(depsMap.get(ITERATE_KEY)); } break; } } const run = (effect32) => { if (effect32.options.onTrigger) { effect32.options.onTrigger({ effect: effect32, target, key, type, newValue, oldValue, oldTarget }); } if (effect32.options.scheduler) { effect32.options.scheduler(effect32); } else { effect32(); } }; effects.forEach(run); } var isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); var builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol)); var get2 = /* @__PURE__ */ createGetter(); var shallowGet = /* @__PURE__ */ createGetter(false, true); var readonlyGet = /* @__PURE__ */ createGetter(true); var shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true); var arrayInstrumentations = {}; ["includes", "indexOf", "lastIndexOf"].forEach((key) => { const method = Array.prototype[key]; arrayInstrumentations[key] = function(...args) { const arr = toRaw(this); for (let i3 = 0, l3 = this.length; i3 < l3; i3++) { track(arr, "get", i3 + ""); } const res = method.apply(arr, args); if (res === -1 || res === false) { return method.apply(arr, args.map(toRaw)); } else { return res; } }; }); ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { const method = Array.prototype[key]; arrayInstrumentations[key] = function(...args) { pauseTracking(); const res = method.apply(this, args); resetTracking(); return res; }; }); function createGetter(isReadonly = false, shallow = false) { return function get3(target, key, receiver) { if (key === "__v_isReactive") { return !isReadonly; } else if (key === "__v_isReadonly") { return isReadonly; } else if (key === "__v_raw" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { return target; } const targetIsArray = isArray(target); if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) { return Reflect.get(arrayInstrumentations, key, receiver); } const res = Reflect.get(target, key, receiver); if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { return res; } if (!isReadonly) { track(target, "get", key); } if (shallow) { return res; } if (isRef(res)) { const shouldUnwrap = !targetIsArray || !isIntegerKey(key); return shouldUnwrap ? res.value : res; } if (isObject(res)) { return isReadonly ? readonly(res) : reactive2(res); } return res; }; } var set2 = /* @__PURE__ */ createSetter(); var shallowSet = /* @__PURE__ */ createSetter(true); function createSetter(shallow = false) { return function set3(target, key, value, receiver) { let oldValue = target[key]; if (!shallow) { value = toRaw(value); oldValue = toRaw(oldValue); if (!isArray(target) && isRef(oldValue) && !isRef(value)) { oldValue.value = value; return true; } } const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); const result = Reflect.set(target, key, value, receiver); if (target === toRaw(receiver)) { if (!hadKey) { trigger(target, "add", key, value); } else if (hasChanged(value, oldValue)) { trigger(target, "set", key, value, oldValue); } } return result; }; } function deleteProperty(target, key) { const hadKey = hasOwn(target, key); const oldValue = target[key]; const result = Reflect.deleteProperty(target, key); if (result && hadKey) { trigger(target, "delete", key, void 0, oldValue); } return result; } function has(target, key) { const result = Reflect.has(target, key); if (!isSymbol(key) || !builtInSymbols.has(key)) { track(target, "has", key); } return result; } function ownKeys(target) { track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); return Reflect.ownKeys(target); } var mutableHandlers = { get: get2, set: set2, deleteProperty, has, ownKeys }; var readonlyHandlers = { get: readonlyGet, set(target, key) { if (true) { console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target); } return true; }, deleteProperty(target, key) { if (true) { console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); } return true; } }; var shallowReactiveHandlers = extend2({}, mutableHandlers, { get: shallowGet, set: shallowSet }); var shallowReadonlyHandlers = extend2({}, readonlyHandlers, { get: shallowReadonlyGet }); var toReactive = (value) => isObject(value) ? reactive2(value) : value; var toReadonly = (value) => isObject(value) ? readonly(value) : value; var toShallow = (value) => value; var getProto = (v3) => Reflect.getPrototypeOf(v3); function get$1(target, key, isReadonly = false, isShallow = false) { target = target["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (key !== rawKey) { !isReadonly && track(rawTarget, "get", key); } !isReadonly && track(rawTarget, "get", rawKey); const { has: has2 } = getProto(rawTarget); const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; if (has2.call(rawTarget, key)) { return wrap(target.get(key)); } else if (has2.call(rawTarget, rawKey)) { return wrap(target.get(rawKey)); } else if (target !== rawTarget) { target.get(key); } } function has$1(key, isReadonly = false) { const target = this["__v_raw"]; const rawTarget = toRaw(target); const rawKey = toRaw(key); if (key !== rawKey) { !isReadonly && track(rawTarget, "has", key); } !isReadonly && track(rawTarget, "has", rawKey); return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); } function size(target, isReadonly = false) { target = target["__v_raw"]; !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); return Reflect.get(target, "size", target); } function add(value) { value = toRaw(value); const target = toRaw(this); const proto = getProto(target); const hadKey = proto.has.call(target, value); if (!hadKey) { target.add(value); trigger(target, "add", value, value); } return this; } function set$1(key, value) { value = toRaw(value); const target = toRaw(this); const { has: has2, get: get3 } = getProto(target); let hadKey = has2.call(target, key); if (!hadKey) { key = toRaw(key); hadKey = has2.call(target, key); } else if (true) { checkIdentityKeys(target, has2, key); } const oldValue = get3.call(target, key); target.set(key, value); if (!hadKey) { trigger(target, "add", key, value); } else if (hasChanged(value, oldValue)) { trigger(target, "set", key, value, oldValue); } return this; } function deleteEntry(key) { const target = toRaw(this); const { has: has2, get: get3 } = getProto(target); let hadKey = has2.call(target, key); if (!hadKey) { key = toRaw(key); hadKey = has2.call(target, key); } else if (true) { checkIdentityKeys(target, has2, key); } const oldValue = get3 ? get3.call(target, key) : void 0; const result = target.delete(key); if (hadKey) { trigger(target, "delete", key, void 0, oldValue); } return result; } function clear() { const target = toRaw(this); const hadItems = target.size !== 0; const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0; const result = target.clear(); if (hadItems) { trigger(target, "clear", void 0, void 0, oldTarget); } return result; } function createForEach(isReadonly, isShallow) { return function forEach(callback, thisArg) { const observed = this; const target = observed["__v_raw"]; const rawTarget = toRaw(target); const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); return target.forEach((value, key) => { return callback.call(thisArg, wrap(value), wrap(key), observed); }); }; } function createIterableMethod(method, isReadonly, isShallow) { return function(...args) { const target = this["__v_raw"]; const rawTarget = toRaw(target); const targetIsMap = isMap(rawTarget); const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; const isKeyOnly = method === "keys" && targetIsMap; const innerIterator = target[method](...args); const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; !isReadonly && track(rawTarget, "iterate", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); return { next() { const { value, done } = innerIterator.next(); return done ? { value, done } : { value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), done }; }, [Symbol.iterator]() { return this; } }; }; } function createReadonlyMethod(type) { return function(...args) { if (true) { const key = args[0] ? `on key "${args[0]}" ` : ``; console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this)); } return type === "delete" ? false : this; }; } var mutableInstrumentations = { get(key) { return get$1(this, key); }, get size() { return size(this); }, has: has$1, add, set: set$1, delete: deleteEntry, clear, forEach: createForEach(false, false) }; var shallowInstrumentations = { get(key) { return get$1(this, key, false, true); }, get size() { return size(this); }, has: has$1, add, set: set$1, delete: deleteEntry, clear, forEach: createForEach(false, true) }; var readonlyInstrumentations = { get(key) { return get$1(this, key, true); }, get size() { return size(this, true); }, has(key) { return has$1.call(this, key, true); }, add: createReadonlyMethod("add"), set: createReadonlyMethod("set"), delete: createReadonlyMethod("delete"), clear: createReadonlyMethod("clear"), forEach: createForEach(true, false) }; var shallowReadonlyInstrumentations = { get(key) { return get$1(this, key, true, true); }, get size() { return size(this, true); }, has(key) { return has$1.call(this, key, true); }, add: createReadonlyMethod("add"), set: createReadonlyMethod("set"), delete: createReadonlyMethod("delete"), clear: createReadonlyMethod("clear"), forEach: createForEach(true, true) }; var iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; iteratorMethods.forEach((method) => { mutableInstrumentations[method] = createIterableMethod(method, false, false); readonlyInstrumentations[method] = createIterableMethod(method, true, false); shallowInstrumentations[method] = createIterableMethod(method, false, true); shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); }); function createInstrumentationGetter(isReadonly, shallow) { const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; return (target, key, receiver) => { if (key === "__v_isReactive") { return !isReadonly; } else if (key === "__v_isReadonly") { return isReadonly; } else if (key === "__v_raw") { return target; } return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver); }; } var mutableCollectionHandlers = { get: createInstrumentationGetter(false, false) }; var shallowCollectionHandlers = { get: createInstrumentationGetter(false, true) }; var readonlyCollectionHandlers = { get: createInstrumentationGetter(true, false) }; var shallowReadonlyCollectionHandlers = { get: createInstrumentationGetter(true, true) }; function checkIdentityKeys(target, has2, key) { const rawKey = toRaw(key); if (rawKey !== key && has2.call(target, rawKey)) { const type = toRawType(target); console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`); } } var reactiveMap = /* @__PURE__ */ new WeakMap(); var shallowReactiveMap = /* @__PURE__ */ new WeakMap(); var readonlyMap = /* @__PURE__ */ new WeakMap(); var shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); function targetTypeMap(rawType) { switch (rawType) { case "Object": case "Array": return 1; case "Map": case "Set": case "WeakMap": case "WeakSet": return 2; default: return 0; } } function getTargetType(value) { return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value)); } function reactive2(target) { if (target && target["__v_isReadonly"]) { return target; } return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); } function readonly(target) { return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); } function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { if (!isObject(target)) { if (true) { console.warn(`value cannot be made reactive: ${String(target)}`); } return target; } if (target["__v_raw"] && !(isReadonly && target["__v_isReactive"])) { return target; } const existingProxy = proxyMap.get(target); if (existingProxy) { return existingProxy; } const targetType = getTargetType(target); if (targetType === 0) { return target; } const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers); proxyMap.set(target, proxy); return proxy; } function toRaw(observed) { return observed && toRaw(observed["__v_raw"]) || observed; } function isRef(r3) { return Boolean(r3 && r3.__v_isRef === true); } magic("nextTick", () => nextTick); magic("dispatch", (el) => dispatch3.bind(dispatch3, el)); magic("watch", (el, { evaluateLater: evaluateLater2, effect: effect32 }) => (key, callback) => { let evaluate2 = evaluateLater2(key); let firstTime = true; let oldValue; let effectReference = effect32(() => evaluate2((value) => { JSON.stringify(value); if (!firstTime) { queueMicrotask(() => { callback(value, oldValue); oldValue = value; }); } else { oldValue = value; } firstTime = false; })); el._x_effects.delete(effectReference); }); magic("store", getStores); magic("data", (el) => scope(el)); magic("root", (el) => closestRoot(el)); magic("refs", (el) => { if (el._x_refs_proxy) return el._x_refs_proxy; el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el)); return el._x_refs_proxy; }); function getArrayOfRefObject(el) { let refObjects = []; let currentEl = el; while (currentEl) { if (currentEl._x_refs) refObjects.push(currentEl._x_refs); currentEl = currentEl.parentNode; } return refObjects; } var globalIdMemo = {}; function findAndIncrementId(name) { if (!globalIdMemo[name]) globalIdMemo[name] = 0; return ++globalIdMemo[name]; } function closestIdRoot(el, name) { return findClosest(el, (element) => { if (element._x_ids && element._x_ids[name]) return true; }); } function setIdRoot(el, name) { if (!el._x_ids) el._x_ids = {}; if (!el._x_ids[name]) el._x_ids[name] = findAndIncrementId(name); } magic("id", (el) => (name, key = null) => { let root = closestIdRoot(el, name); let id2 = root ? root._x_ids[name] : findAndIncrementId(name); return key ? `${name}-${id2}-${key}` : `${name}-${id2}`; }); magic("el", (el) => el); warnMissingPluginMagic("Focus", "focus", "focus"); warnMissingPluginMagic("Persist", "persist", "persist"); function warnMissingPluginMagic(name, magicName, slug) { magic(magicName, (el) => warn(`You can't use [$${directiveName}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el)); } function entangle({ get: outerGet, set: outerSet }, { get: innerGet, set: innerSet }) { let firstRun = true; let outerHash, innerHash, outerHashLatest, innerHashLatest; let reference2 = effect(() => { let outer, inner; if (firstRun) { outer = outerGet(); innerSet(outer); inner = innerGet(); firstRun = false; } else { outer = outerGet(); inner = innerGet(); outerHashLatest = JSON.stringify(outer); innerHashLatest = JSON.stringify(inner); if (outerHashLatest !== outerHash) { inner = innerGet(); innerSet(outer); inner = outer; } else { outerSet(inner); outer = inner; } } outerHash = JSON.stringify(outer); innerHash = JSON.stringify(inner); }); return () => { release(reference2); }; } directive("modelable", (el, { expression }, { effect: effect32, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { let func = evaluateLater2(expression); let innerGet = () => { let result; func((i3) => result = i3); return result; }; let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`); let innerSet = (val) => evaluateInnerSet(() => { }, { scope: { __placeholder: val } }); let initialValue = innerGet(); innerSet(initialValue); queueMicrotask(() => { if (!el._x_model) return; el._x_removeModelListeners["default"](); let outerGet = el._x_model.get; let outerSet = el._x_model.set; let releaseEntanglement = entangle({ get() { return outerGet(); }, set(value) { outerSet(value); } }, { get() { return innerGet(); }, set(value) { innerSet(value); } }); cleanup2(releaseEntanglement); }); }); var teleportContainerDuringClone = document.createElement("div"); directive("teleport", (el, { modifiers, expression }, { cleanup: cleanup2 }) => { if (el.tagName.toLowerCase() !== "template") warn("x-teleport can only be used on a <template> tag", el); let target = skipDuringClone(() => { return document.querySelector(expression); }, () => { return teleportContainerDuringClone; })(); if (!target) warn(`Cannot find x-teleport element for selector: "${expression}"`); let clone2 = el.content.cloneNode(true).firstElementChild; el._x_teleport = clone2; clone2._x_teleportBack = el; if (el._x_forwardEvents) { el._x_forwardEvents.forEach((eventName) => { clone2.addEventListener(eventName, (e3) => { e3.stopPropagation(); el.dispatchEvent(new e3.constructor(e3.type, e3)); }); }); } addScopeToNode(clone2, {}, el); mutateDom(() => { if (modifiers.includes("prepend")) { target.parentNode.insertBefore(clone2, target); } else if (modifiers.includes("append")) { target.parentNode.insertBefore(clone2, target.nextSibling); } else { target.appendChild(clone2); } initTree(clone2); clone2._x_ignore = true; }); cleanup2(() => clone2.remove()); }); var handler = () => { }; handler.inline = (el, { modifiers }, { cleanup: cleanup2 }) => { modifiers.includes("self") ? el._x_ignoreSelf = true : el._x_ignore = true; cleanup2(() => { modifiers.includes("self") ? delete el._x_ignoreSelf : delete el._x_ignore; }); }; directive("ignore", handler); directive("effect", (el, { expression }, { effect: effect32 }) => effect32(evaluateLater(el, expression))); function on(el, event, modifiers, callback) { let listenerTarget = el; let handler3 = (e3) => callback(e3); let options = {}; let wrapHandler = (callback2, wrapper) => (e3) => wrapper(callback2, e3); if (modifiers.includes("dot")) event = dotSyntax(event); if (modifiers.includes("camel")) event = camelCase2(event); if (modifiers.includes("passive")) options.passive = true; if (modifiers.includes("capture")) options.capture = true; if (modifiers.includes("window")) listenerTarget = window; if (modifiers.includes("document")) listenerTarget = document; if (modifiers.includes("debounce")) { let nextModifier = modifiers[modifiers.indexOf("debounce") + 1] || "invalid-wait"; let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250; handler3 = debounce(handler3, wait); } if (modifiers.includes("throttle")) { let nextModifier = modifiers[modifiers.indexOf("throttle") + 1] || "invalid-wait"; let wait = isNumeric(nextModifier.split("ms")[0]) ? Number(nextModifier.split("ms")[0]) : 250; handler3 = throttle(handler3, wait); } if (modifiers.includes("prevent")) handler3 = wrapHandler(handler3, (next, e3) => { e3.preventDefault(); next(e3); }); if (modifiers.includes("stop")) handler3 = wrapHandler(handler3, (next, e3) => { e3.stopPropagation(); next(e3); }); if (modifiers.includes("self")) handler3 = wrapHandler(handler3, (next, e3) => { e3.target === el && next(e3); }); if (modifiers.includes("away") || modifiers.includes("outside")) { listenerTarget = document; handler3 = wrapHandler(handler3, (next, e3) => { if (el.contains(e3.target)) return; if (e3.target.isConnected === false) return; if (el.offsetWidth < 1 && el.offsetHeight < 1) return; if (el._x_isShown === false) return; next(e3); }); } if (modifiers.includes("once")) { handler3 = wrapHandler(handler3, (next, e3) => { next(e3); listenerTarget.removeEventListener(event, handler3, options); }); } handler3 = wrapHandler(handler3, (next, e3) => { if (isKeyEvent(event)) { if (isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers)) { return; } } next(e3); }); listenerTarget.addEventListener(event, handler3, options); return () => { listenerTarget.removeEventListener(event, handler3, options); }; } function dotSyntax(subject) { return subject.replace(/-/g, "."); } function camelCase2(subject) { return subject.toLowerCase().replace(/-(\w)/g, (match, char) => char.toUpperCase()); } function isNumeric(subject) { return !Array.isArray(subject) && !isNaN(subject); } function kebabCase2(subject) { if ([" ", "_"].includes(subject)) return subject; return subject.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\s]/, "-").toLowerCase(); } function isKeyEvent(event) { return ["keydown", "keyup"].includes(event); } function isListeningForASpecificKeyThatHasntBeenPressed(e3, modifiers) { let keyModifiers = modifiers.filter((i3) => { return !["window", "document", "prevent", "stop", "once", "capture"].includes(i3); }); if (keyModifiers.includes("debounce")) { let debounceIndex = keyModifiers.indexOf("debounce"); keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1); } if (keyModifiers.includes("throttle")) { let debounceIndex = keyModifiers.indexOf("throttle"); keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || "invalid-wait").split("ms")[0]) ? 2 : 1); } if (keyModifiers.length === 0) return false; if (keyModifiers.length === 1 && keyToModifiers(e3.key).includes(keyModifiers[0])) return false; const systemKeyModifiers = ["ctrl", "shift", "alt", "meta", "cmd", "super"]; const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier)); keyModifiers = keyModifiers.filter((i3) => !selectedSystemKeyModifiers.includes(i3)); if (selectedSystemKeyModifiers.length > 0) { const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => { if (modifier === "cmd" || modifier === "super") modifier = "meta"; return e3[`${modifier}Key`]; }); if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) { if (keyToModifiers(e3.key).includes(keyModifiers[0])) return false; } } return true; } function keyToModifiers(key) { if (!key) return []; key = kebabCase2(key); let modifierToKeyMap = { ctrl: "control", slash: "/", space: " ", spacebar: " ", cmd: "meta", esc: "escape", up: "arrow-up", down: "arrow-down", left: "arrow-left", right: "arrow-right", period: ".", equal: "=", minus: "-", underscore: "_" }; modifierToKeyMap[key] = key; return Object.keys(modifierToKeyMap).map((modifier) => { if (modifierToKeyMap[modifier] === key) return modifier; }).filter((modifier) => modifier); } directive("model", (el, { modifiers, expression }, { effect: effect32, cleanup: cleanup2 }) => { let scopeTarget = el; if (modifiers.includes("parent")) { scopeTarget = el.parentNode; } let evaluateGet = evaluateLater(scopeTarget, expression); let evaluateSet; if (typeof expression === "string") { evaluateSet = evaluateLater(scopeTarget, `${expression} = __placeholder`); } else if (typeof expression === "function" && typeof expression() === "string") { evaluateSet = evaluateLater(scopeTarget, `${expression()} = __placeholder`); } else { evaluateSet = () => { }; } let getValue = () => { let result; evaluateGet((value) => result = value); return isGetterSetter(result) ? result.get() : result; }; let setValue = (value) => { let result; evaluateGet((value2) => result = value2); if (isGetterSetter(result)) { result.set(value); } else { evaluateSet(() => { }, { scope: { __placeholder: value } }); } }; if (typeof expression === "string" && el.type === "radio") { mutateDom(() => { if (!el.hasAttribute("name")) el.setAttribute("name", expression); }); } var event = el.tagName.toLowerCase() === "select" || ["checkbox", "radio"].includes(el.type) || modifiers.includes("lazy") ? "change" : "input"; let removeListener = isCloning ? () => { } : on(el, event, modifiers, (e3) => { setValue(getInputValue(el, modifiers, e3, getValue())); }); if (modifiers.includes("fill") && [null, ""].includes(getValue())) { el.dispatchEvent(new Event(event, {})); } if (!el._x_removeModelListeners) el._x_removeModelListeners = {}; el._x_removeModelListeners["default"] = removeListener; cleanup2(() => el._x_removeModelListeners["default"]()); if (el.form) { let removeResetListener = on(el.form, "reset", [], (e3) => { nextTick(() => el._x_model && el._x_model.set(el.value)); }); cleanup2(() => removeResetListener()); } el._x_model = { get() { return getValue(); }, set(value) { setValue(value); } }; el._x_forceModelUpdate = (value) => { value = value === void 0 ? getValue() : value; if (value === void 0 && typeof expression === "string" && expression.match(/\./)) value = ""; window.fromModel = true; mutateDom(() => bind(el, "value", value)); delete window.fromModel; }; effect32(() => { let value = getValue(); if (modifiers.includes("unintrusive") && document.activeElement.isSameNode(el)) return; el._x_forceModelUpdate(value); }); }); function getInputValue(el, modifiers, event, currentValue) { return mutateDom(() => { var _a; if (event instanceof CustomEvent && event.detail !== void 0) return (_a = event.detail) != null ? _a : event.target.value; else if (el.type === "checkbox") { if (Array.isArray(currentValue)) { let newValue = modifiers.includes("number") ? safeParseNumber(event.target.value) : event.target.value; return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue)); } else { return event.target.checked; } } else if (el.tagName.toLowerCase() === "select" && el.multiple) { return modifiers.includes("number") ? Array.from(event.target.selectedOptions).map((option) => { let rawValue = option.value || option.text; return safeParseNumber(rawValue); }) : Array.from(event.target.selectedOptions).map((option) => { return option.value || option.text; }); } else { let rawValue = event.target.value; return modifiers.includes("number") ? safeParseNumber(rawValue) : modifiers.includes("trim") ? rawValue.trim() : rawValue; } }); } function safeParseNumber(rawValue) { let number = rawValue ? parseFloat(rawValue) : null; return isNumeric2(number) ? number : rawValue; } function checkedAttrLooseCompare2(valueA, valueB) { return valueA == valueB; } function isNumeric2(subject) { return !Array.isArray(subject) && !isNaN(subject); } function isGetterSetter(value) { return value !== null && typeof value === "object" && typeof value.get === "function" && typeof value.set === "function"; } directive("cloak", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix("cloak"))))); addInitSelector(() => `[${prefix("init")}]`); directive("init", skipDuringClone((el, { expression }, { evaluate: evaluate2 }) => { if (typeof expression === "string") { return !!expression.trim() && evaluate2(expression, {}, false); } return evaluate2(expression, {}, false); })); directive("text", (el, { expression }, { effect: effect32, evaluateLater: evaluateLater2 }) => { let evaluate2 = evaluateLater2(expression); effect32(() => { evaluate2((value) => { mutateDom(() => { el.textContent = value; }); }); }); }); directive("html", (el, { expression }, { effect: effect32, evaluateLater: evaluateLater2 }) => { let evaluate2 = evaluateLater2(expression); effect32(() => { evaluate2((value) => { mutateDom(() => { el.innerHTML = value; el._x_ignoreSelf = true; initTree(el); delete el._x_ignoreSelf; }); }); }); }); mapAttributes(startingWith(":", into(prefix("bind:")))); directive("bind", (el, { value, modifiers, expression, original }, { effect: effect32 }) => { if (!value) { let bindingProviders = {}; injectBindingProviders(bindingProviders); let getBindings = evaluateLater(el, expression); getBindings((bindings) => { applyBindingsObject(el, bindings, original); }, { scope: bindingProviders }); return; } if (value === "key") return storeKeyForXFor(el, expression); let evaluate2 = evaluateLater(el, expression); effect32(() => evaluate2((result) => { if (result === void 0 && typeof expression === "string" && expression.match(/\./)) { result = ""; } mutateDom(() => bind(el, value, result, modifiers)); })); }); function storeKeyForXFor(el, expression) { el._x_keyExpression = expression; } addRootSelector(() => `[${prefix("data")}]`); directive("data", skipDuringClone((el, { expression }, { cleanup: cleanup2 }) => { expression = expression === "" ? "{}" : expression; let magicContext = {}; injectMagics(magicContext, el); let dataProviderContext = {}; injectDataProviders(dataProviderContext, magicContext); let data2 = evaluate(el, expression, { scope: dataProviderContext }); if (data2 === void 0 || data2 === true) data2 = {}; injectMagics(data2, el); let reactiveData = reactive(data2); initInterceptors(reactiveData); let undo = addScopeToNode(el, reactiveData); reactiveData["init"] && evaluate(el, reactiveData["init"]); cleanup2(() => { reactiveData["destroy"] && evaluate(el, reactiveData["destroy"]); undo(); }); })); directive("show", (el, { modifiers, expression }, { effect: effect32 }) => { let evaluate2 = evaluateLater(el, expression); if (!el._x_doHide) el._x_doHide = () => { mutateDom(() => { el.style.setProperty("display", "none", modifiers.includes("important") ? "important" : void 0); }); }; if (!el._x_doShow) el._x_doShow = () => { mutateDom(() => { if (el.style.length === 1 && el.style.display === "none") { el.removeAttribute("style"); } else { el.style.removeProperty("display"); } }); }; let hide2 = () => { el._x_doHide(); el._x_isShown = false; }; let show = () => { el._x_doShow(); el._x_isShown = true; }; let clickAwayCompatibleShow = () => setTimeout(show); let toggle = once((value) => value ? show() : hide2(), (value) => { if (typeof el._x_toggleAndCascadeWithTransitions === "function") { el._x_toggleAndCascadeWithTransitions(el, value, show, hide2); } else { value ? clickAwayCompatibleShow() : hide2(); } }); let oldValue; let firstTime = true; effect32(() => evaluate2((value) => { if (!firstTime && value === oldValue) return; if (modifiers.includes("immediate")) value ? clickAwayCompatibleShow() : hide2(); toggle(value); oldValue = value; firstTime = false; })); }); directive("for", (el, { expression }, { effect: effect32, cleanup: cleanup2 }) => { let iteratorNames = parseForExpression(expression); let evaluateItems = evaluateLater(el, iteratorNames.items); let evaluateKey = evaluateLater(el, el._x_keyExpression || "index"); el._x_prevKeys = []; el._x_lookup = {}; effect32(() => loop(el, iteratorNames, evaluateItems, evaluateKey)); cleanup2(() => { Object.values(el._x_lookup).forEach((el2) => el2.remove()); delete el._x_prevKeys; delete el._x_lookup; }); }); function loop(el, iteratorNames, evaluateItems, evaluateKey) { let isObject22 = (i3) => typeof i3 === "object" && !Array.isArray(i3); let templateEl = el; evaluateItems((items) => { if (isNumeric3(items) && items >= 0) { items = Array.from(Array(items).keys(), (i3) => i3 + 1); } if (items === void 0) items = []; let lookup = el._x_lookup; let prevKeys = el._x_prevKeys; let scopes = []; let keys = []; if (isObject22(items)) { items = Object.entries(items).map(([key, value]) => { let scope2 = getIterationScopeVariables(iteratorNames, value, key, items); evaluateKey((value2) => keys.push(value2), { scope: __spreadValues({ index: key }, scope2) }); scopes.push(scope2); }); } else { for (let i3 = 0; i3 < items.length; i3++) { let scope2 = getIterationScopeVariables(iteratorNames, items[i3], i3, items); evaluateKey((value) => keys.push(value), { scope: __spreadValues({ index: i3 }, scope2) }); scopes.push(scope2); } } let adds = []; let moves = []; let removes = []; let sames = []; for (let i3 = 0; i3 < prevKeys.length; i3++) { let key = prevKeys[i3]; if (keys.indexOf(key) === -1) removes.push(key); } prevKeys = prevKeys.filter((key) => !removes.includes(key)); let lastKey = "template"; for (let i3 = 0; i3 < keys.length; i3++) { let key = keys[i3]; let prevIndex = prevKeys.indexOf(key); if (prevIndex === -1) { prevKeys.splice(i3, 0, key); adds.push([lastKey, i3]); } else if (prevIndex !== i3) { let keyInSpot = prevKeys.splice(i3, 1)[0]; let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0]; prevKeys.splice(i3, 0, keyForSpot); prevKeys.splice(prevIndex, 0, keyInSpot); moves.push([keyInSpot, keyForSpot]); } else { sames.push(key); } lastKey = key; } for (let i3 = 0; i3 < removes.length; i3++) { let key = removes[i3]; if (!!lookup[key]._x_effects) { lookup[key]._x_effects.forEach(dequeueJob); } lookup[key].remove(); lookup[key] = null; delete lookup[key]; } for (let i3 = 0; i3 < moves.length; i3++) { let [keyInSpot, keyForSpot] = moves[i3]; let elInSpot = lookup[keyInSpot]; let elForSpot = lookup[keyForSpot]; let marker = document.createElement("div"); mutateDom(() => { if (!elForSpot) warn(`x-for ":key" is undefined or invalid`, templateEl); elForSpot.after(marker); elInSpot.after(elForSpot); elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl); marker.before(elInSpot); elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl); marker.remove(); }); elForSpot._x_refreshXForScope(scopes[keys.indexOf(keyForSpot)]); } for (let i3 = 0; i3 < adds.length; i3++) { let [lastKey2, index] = adds[i3]; let lastEl = lastKey2 === "template" ? templateEl : lookup[lastKey2]; if (lastEl._x_currentIfEl) lastEl = lastEl._x_currentIfEl; let scope2 = scopes[index]; let key = keys[index]; let clone2 = document.importNode(templateEl.content, true).firstElementChild; let reactiveScope = reactive(scope2); addScopeToNode(clone2, reactiveScope, templateEl); clone2._x_refreshXForScope = (newScope) => { Object.entries(newScope).forEach(([key2, value]) => { reactiveScope[key2] = value; }); }; mutateDom(() => { lastEl.after(clone2); initTree(clone2); }); if (typeof key === "object") { warn("x-for key cannot be an object, it must be a string or an integer", templateEl); } lookup[key] = clone2; } for (let i3 = 0; i3 < sames.length; i3++) { lookup[sames[i3]]._x_refreshXForScope(scopes[keys.indexOf(sames[i3])]); } templateEl._x_prevKeys = keys; }); } function parseForExpression(expression) { let forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; let stripParensRE = /^\s*\(|\)\s*$/g; let forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; let inMatch = expression.match(forAliasRE); if (!inMatch) return; let res = {}; res.items = inMatch[2].trim(); let item = inMatch[1].replace(stripParensRE, "").trim(); let iteratorMatch = item.match(forIteratorRE); if (iteratorMatch) { res.item = item.replace(forIteratorRE, "").trim(); res.index = iteratorMatch[1].trim(); if (iteratorMatch[2]) { res.collection = iteratorMatch[2].trim(); } } else { res.item = item; } return res; } function getIterationScopeVariables(iteratorNames, item, index, items) { let scopeVariables = {}; if (/^\[.*\]$/.test(iteratorNames.item) && Array.isArray(item)) { let names = iteratorNames.item.replace("[", "").replace("]", "").split(",").map((i3) => i3.trim()); names.forEach((name, i3) => { scopeVariables[name] = item[i3]; }); } else if (/^\{.*\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === "object") { let names = iteratorNames.item.replace("{", "").replace("}", "").split(",").map((i3) => i3.trim()); names.forEach((name) => { scopeVariables[name] = item[name]; }); } else { scopeVariables[iteratorNames.item] = item; } if (iteratorNames.index) scopeVariables[iteratorNames.index] = index; if (iteratorNames.collection) scopeVariables[iteratorNames.collection] = items; return scopeVariables; } function isNumeric3(subject) { return !Array.isArray(subject) && !isNaN(subject); } function handler2() { } handler2.inline = (el, { expression }, { cleanup: cleanup2 }) => { let root = closestRoot(el); if (!root._x_refs) root._x_refs = {}; root._x_refs[expression] = el; cleanup2(() => delete root._x_refs[expression]); }; directive("ref", handler2); directive("if", (el, { expression }, { effect: effect32, cleanup: cleanup2 }) => { let evaluate2 = evaluateLater(el, expression); let show = () => { if (el._x_currentIfEl) return el._x_currentIfEl; let clone2 = el.content.cloneNode(true).firstElementChild; addScopeToNode(clone2, {}, el); mutateDom(() => { el.after(clone2); initTree(clone2); }); el._x_currentIfEl = clone2; el._x_undoIf = () => { walk2(clone2, (node) => { if (!!node._x_effects) { node._x_effects.forEach(dequeueJob); } }); clone2.remove(); delete el._x_currentIfEl; }; return clone2; }; let hide2 = () => { if (!el._x_undoIf) return; el._x_undoIf(); delete el._x_undoIf; }; effect32(() => evaluate2((value) => { value ? show() : hide2(); })); cleanup2(() => el._x_undoIf && el._x_undoIf()); }); directive("id", (el, { expression }, { evaluate: evaluate2 }) => { let names = evaluate2(expression); names.forEach((name) => setIdRoot(el, name)); }); mapAttributes(startingWith("@", into(prefix("on:")))); directive("on", skipDuringClone((el, { value, modifiers, expression }, { cleanup: cleanup2 }) => { let evaluate2 = expression ? evaluateLater(el, expression) : () => { }; if (el.tagName.toLowerCase() === "template") { if (!el._x_forwardEvents) el._x_forwardEvents = []; if (!el._x_forwardEvents.includes(value)) el._x_forwardEvents.push(value); } let removeListener = on(el, value, modifiers, (e3) => { evaluate2(() => { }, { scope: { $event: e3 }, params: [e3] }); }); cleanup2(() => removeListener()); })); warnMissingPluginDirective("Collapse", "collapse", "collapse"); warnMissingPluginDirective("Intersect", "intersect", "intersect"); warnMissingPluginDirective("Focus", "trap", "focus"); warnMissingPluginDirective("Mask", "mask", "mask"); function warnMissingPluginDirective(name, directiveName2, slug) { directive(directiveName2, (el) => warn(`You can't use [x-${directiveName2}] without first installing the "${name}" plugin here: https://alpinejs.dev/plugins/${slug}`, el)); } alpine_default.setEvaluator(normalEvaluator); alpine_default.setReactivityEngine({ reactive: reactive2, effect: effect2, release: stop, raw: toRaw }); var src_default = alpine_default; var module_default = src_default; // ../../../node_modules/@alpinejs/morph/dist/module.esm.js function createElement(html) { const template = document.createElement("template"); template.innerHTML = html; return template.content.firstElementChild; } function textOrComment(el) { return el.nodeType === 3 || el.nodeType === 8; } var dom = { replace(children, old, replacement) { let index = children.indexOf(old); if (index === -1) throw "Cant find element in children"; old.replaceWith(replacement); children[index] = replacement; return children; }, before(children, reference2, subject) { let index = children.indexOf(reference2); if (index === -1) throw "Cant find element in children"; reference2.before(subject); children.splice(index, 0, subject); return children; }, append(children, subject, appendFn) { let last = children[children.length - 1]; appendFn(subject); children.push(subject); return children; }, remove(children, subject) { let index = children.indexOf(subject); if (index === -1) throw "Cant find element in children"; subject.remove(); return children.filter((i3) => i3 !== subject); }, first(children) { return this.teleportTo(children[0]); }, next(children, reference2) { let index = children.indexOf(reference2); if (index === -1) return; return this.teleportTo(this.teleportBack(children[index + 1])); }, teleportTo(el) { if (!el) return el; if (el._x_teleport) return el._x_teleport; return el; }, teleportBack(el) { if (!el) return el; if (el._x_teleportBack) return el._x_teleportBack; return el; } }; var resolveStep = () => { }; var logger = () => { }; function morph(from, toHtml, options) { monkeyPatchDomSetAttributeToAllowAtSymbols(); let fromEl; let toEl; let key, lookahead, updating, updated, removing, removed, adding, added; function assignOptions(options2 = {}) { let defaultGetKey = (el) => el.getAttribute("key"); let noop = () => { }; updating = options2.updating || noop; updated = options2.updated || noop; removing = options2.removing || noop; removed = options2.removed || noop; adding = options2.adding || noop; added = options2.added || noop; key = options2.key || defaultGetKey; lookahead = options2.lookahead || false; } function patch(from2, to) { if (differentElementNamesTypesOrKeys(from2, to)) { return patchElement(from2, to); } let updateChildrenOnly = false; if (shouldSkip(updating, from2, to, () => updateChildrenOnly = true)) return; window.Alpine && initializeAlpineOnTo(from2, to, () => updateChildrenOnly = true); if (textOrComment(to)) { patchNodeValue(from2, to); updated(from2, to); return; } if (!updateChildrenOnly) { patchAttributes(from2, to); } updated(from2, to); patchChildren(Array.from(from2.childNodes), Array.from(to.childNodes), (toAppend) => { from2.appendChild(toAppend); }); } function differentElementNamesTypesOrKeys(from2, to) { return from2.nodeType != to.nodeType || from2.nodeName != to.nodeName || getKey(from2) != getKey(to); } function patchElement(from2, to) { if (shouldSkip(removing, from2)) return; let toCloned = to.cloneNode(true); if (shouldSkip(adding, toCloned)) return; dom.replace([from2], from2, toCloned); removed(from2); added(toCloned); } function patchNodeValue(from2, to) { let value = to.nodeValue; if (from2.nodeValue !== value) { from2.nodeValue = value; } } function patchAttributes(from2, to) { if (from2._x_isShown && !to._x_isShown) { return; } if (!from2._x_isShown && to._x_isShown) { return; } let domAttributes = Array.from(from2.attributes); let toAttributes = Array.from(to.attributes); for (let i3 = domAttributes.length - 1; i3 >= 0; i3--) { let name = domAttributes[i3].name; if (!to.hasAttribute(name)) { from2.removeAttribute(name); } } for (let i3 = toAttributes.length - 1; i3 >= 0; i3--) { let name = toAttributes[i3].name; let value = toAttributes[i3].value; if (from2.getAttribute(name) !== value) { from2.setAttribute(name, value); } } } function patchChildren(fromChildren, toChildren, appendFn) { let fromKeyDomNodeMap = {}; let fromKeyHoldovers = {}; let currentTo = dom.first(toChildren); let currentFrom = dom.first(fromChildren); while (currentTo) { let toKey = getKey(currentTo); let fromKey = getKey(currentFrom); if (!currentFrom) { if (toKey && fromKeyHoldovers[toKey]) { let holdover = fromKeyHoldovers[toKey]; fromChildren = dom.append(fromChildren, holdover, appendFn); currentFrom = holdover; } else { if (!shouldSkip(adding, currentTo)) { let clone2 = currentTo.cloneNode(true); fromChildren = dom.append(fromChildren, clone2, appendFn); added(clone2); } currentTo = dom.next(toChildren, currentTo); continue; } } let isIf = (node) => node.nodeType === 8 && node.textContent === " __BLOCK__ "; let isEnd = (node) => node.nodeType === 8 && node.textContent === " __ENDBLOCK__ "; if (isIf(currentTo) && isIf(currentFrom)) { let newFromChildren = []; let appendPoint; let nestedIfCount = 0; while (currentFrom) { let next = dom.next(fromChildren, currentFrom); if (isIf(next)) { nestedIfCount++; } else if (isEnd(next) && nestedIfCount > 0) { nestedIfCount--; } else if (isEnd(next) && nestedIfCount === 0) { currentFrom = dom.next(fromChildren, next); appendPoint = next; break; } newFromChildren.push(next); currentFrom = next; } let newToChildren = []; nestedIfCount = 0; while (currentTo) { let next = dom.next(toChildren, currentTo); if (isIf(next)) { nestedIfCount++; } else if (isEnd(next) && nestedIfCount > 0) { nestedIfCount--; } else if (isEnd(next) && nestedIfCount === 0) { currentTo = dom.next(toChildren, next); break; } newToChildren.push(next); currentTo = next; } patchChildren(newFromChildren, newToChildren, (node) => appendPoint.before(node)); continue; } if (currentFrom.nodeType === 1 && lookahead) { let nextToElementSibling = dom.next(toChildren, currentTo); let found = false; while (!found && nextToElementSibling) { if (currentFrom.isEqualNode(nextToElementSibling)) { found = true; [fromChildren, currentFrom] = addNodeBefore(fromChildren, currentTo, currentFrom); fromKey = getKey(currentFrom); } nextToElementSibling = dom.next(toChildren, nextToElementSibling); } } if (toKey !== fromKey) { if (!toKey && fromKey) { fromKeyHoldovers[fromKey] = currentFrom; [fromChildren, currentFrom] = addNodeBefore(fromChildren, currentTo, currentFrom); fromChildren = dom.remove(fromChildren, fromKeyHoldovers[fromKey]); currentFrom = dom.next(fromChildren, currentFrom); currentTo = dom.next(toChildren, currentTo); continue; } if (toKey && !fromKey) { if (fromKeyDomNodeMap[toKey]) { fromChildren = dom.replace(fromChildren, currentFrom, fromKeyDomNodeMap[toKey]); currentFrom = fromKeyDomNodeMap[toKey]; } } if (toKey && fromKey) { let fromKeyNode = fromKeyDomNodeMap[toKey]; if (fromKeyNode) { fromKeyHoldovers[fromKey] = currentFrom; fromChildren = dom.replace(fromChildren, currentFrom, fromKeyNode); currentFrom = fromKeyNode; } else { fromKeyHoldovers[fromKey] = currentFrom; [fromChildren, currentFrom] = addNodeBefore(fromChildren, currentTo, currentFrom); fromChildren = dom.remove(fromChildren, fromKeyHoldovers[fromKey]); currentFrom = dom.next(fromChildren, currentFrom); currentTo = dom.next(toChildren, currentTo); continue; } } } let currentFromNext = currentFrom && dom.next(fromChildren, currentFrom); patch(currentFrom, currentTo); currentTo = currentTo && dom.next(toChildren, currentTo); currentFrom = currentFromNext; } let removals = []; while (currentFrom) { if (!shouldSkip(removing, currentFrom)) removals.push(currentFrom); currentFrom = dom.next(fromChildren, currentFrom); } while (removals.length) { let domForRemoval = removals.shift(); domForRemoval.remove(); removed(domForRemoval); } } function getKey(el) { return el && el.nodeType === 1 && key(el); } function keyToMap(els) { let map = {}; els.forEach((el) => { let theKey = getKey(el); if (theKey) { map[theKey] = el; } }); return map; } function addNodeBefore(children, node, beforeMe) { if (!shouldSkip(adding, node)) { let clone2 = node.cloneNode(true); children = dom.before(children, beforeMe, clone2); added(clone2); return [children, clone2]; } return [children, node]; } assignOptions(options); fromEl = from; toEl = typeof toHtml === "string" ? createElement(toHtml) : toHtml; if (window.Alpine && window.Alpine.closestDataStack && !from._x_dataStack) { toEl._x_dataStack = window.Alpine.closestDataStack(from); toEl._x_dataStack && window.Alpine.clone(from, toEl); } patch(from, toEl); fromEl = void 0; toEl = void 0; return from; } morph.step = () => resolveStep(); morph.log = (theLogger) => { logger = theLogger; }; function shouldSkip(hook, ...args) { let skip = false; hook(...args, () => skip = true); return skip; } function initializeAlpineOnTo(from, to, childrenOnly) { if (from.nodeType !== 1) return; if (from._x_dataStack) { window.Alpine.clone(from, to); } } var patched = false; function monkeyPatchDomSetAttributeToAllowAtSymbols() { if (patched) return; patched = true; let original = Element.prototype.setAttribute; let hostDiv = document.createElement("div"); Element.prototype.setAttribute = function newSetAttribute(name, value) { if (!name.includes("@")) { return original.call(this, name, value); } hostDiv.innerHTML = `<span ${name}="${value}"></span>`; let attr = hostDiv.firstElementChild.getAttributeNode(name); hostDiv.firstElementChild.removeAttributeNode(attr); this.setAttributeNode(attr); }; } function src_default2(Alpine3) { Alpine3.morph = morph; } var module_default2 = src_default2; // ../../../node_modules/@alpinejs/collapse/dist/module.esm.js function src_default3(Alpine3) { Alpine3.directive("collapse", collapse); collapse.inline = (el, { modifiers }) => { if (!modifiers.includes("min")) return; el._x_doShow = () => { }; el._x_doHide = () => { }; }; function collapse(el, { modifiers }) { let duration = modifierValue2(modifiers, "duration", 250) / 1e3; let floor2 = modifierValue2(modifiers, "min", 0); let fullyHide = !modifiers.includes("min"); if (!el._x_isShown) el.style.height = `${floor2}px`; if (!el._x_isShown && fullyHide) el.hidden = true; if (!el._x_isShown) el.style.overflow = "hidden"; let setFunction = (el2, styles) => { let revertFunction = Alpine3.setStyles(el2, styles); return styles.height ? () => { } : revertFunction; }; let transitionStyles = { transitionProperty: "height", transitionDuration: `${duration}s`, transitionTimingFunction: "cubic-bezier(0.4, 0.0, 0.2, 1)" }; el._x_transition = { in(before = () => { }, after = () => { }) { if (fullyHide) el.hidden = false; if (fullyHide) el.style.display = null; let current = el.getBoundingClientRect().height; el.style.height = "auto"; let full = el.getBoundingClientRect().height; if (current === full) { current = floor2; } Alpine3.transition(el, Alpine3.setStyles, { during: transitionStyles, start: { height: current + "px" }, end: { height: full + "px" } }, () => el._x_isShown = true, () => { if (el.getBoundingClientRect().height == full) { el.style.overflow = null; } }); }, out(before = () => { }, after = () => { }) { let full = el.getBoundingClientRect().height; Alpine3.transition(el, setFunction, { during: transitionStyles, start: { height: full + "px" }, end: { height: floor2 + "px" } }, () => el.style.overflow = "hidden", () => { el._x_isShown = false; if (el.style.height == `${floor2}px` && fullyHide) { el.style.display = "none"; el.hidden = true; } }); } }; } } function modifierValue2(modifiers, key, fallback) { if (modifiers.indexOf(key) === -1) return fallback; const rawValue = modifiers[modifiers.indexOf(key) + 1]; if (!rawValue) return fallback; if (key === "duration") { let match = rawValue.match(/([0-9]+)ms/); if (match) return match[1]; } if (key === "min") { let match = rawValue.match(/([0-9]+)px/); if (match) return match[1]; } return rawValue; } var module_default3 = src_default3; // ../../../node_modules/@alpinejs/intersect/dist/module.esm.js function src_default4(Alpine3) { Alpine3.directive("intersect", (el, { value, expression, modifiers }, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { let evaluate2 = evaluateLater2(expression); let options = { rootMargin: getRootMargin(modifiers), threshold: getThreshhold(modifiers) }; let observer2 = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting === (value === "leave")) return; evaluate2(); modifiers.includes("once") && observer2.disconnect(); }); }, options); observer2.observe(el); cleanup2(() => { observer2.disconnect(); }); }); } function getThreshhold(modifiers) { if (modifiers.includes("full")) return 0.99; if (modifiers.includes("half")) return 0.5; if (!modifiers.includes("threshold")) return 0; let threshold = modifiers[modifiers.indexOf("threshold") + 1]; if (threshold === "100") return 1; if (threshold === "0") return 0; return Number(`.${threshold}`); } function getLengthValue(rawValue) { let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/); return match ? match[1] + (match[2] || "px") : void 0; } function getRootMargin(modifiers) { const key = "margin"; const fallback = "0px 0px 0px 0px"; const index = modifiers.indexOf(key); if (index === -1) return fallback; let values = []; for (let i3 = 1; i3 < 5; i3++) { values.push(getLengthValue(modifiers[index + i3] || "")); } values = values.filter((v3) => v3 !== void 0); return values.length ? values.join(" ").trim() : fallback; } var module_default4 = src_default4; // ../../../node_modules/@alpinejs/mask/dist/module.esm.js function src_default5(Alpine3) { Alpine3.directive("mask", (el, { value, expression }, { effect: effect7, evaluateLater: evaluateLater2 }) => { let templateFn = () => expression; let lastInputValue = ""; queueMicrotask(() => { if (["function", "dynamic"].includes(value)) { let evaluator = evaluateLater2(expression); effect7(() => { templateFn = (input) => { let result; Alpine3.dontAutoEvaluateFunctions(() => { evaluator((value2) => { result = typeof value2 === "function" ? value2(input) : value2; }, { scope: { $input: input, $money: formatMoney.bind({ el }) } }); }); return result; }; processInputValue(el, false); }); } else { processInputValue(el, false); } if (el._x_model) el._x_model.set(el.value); }); el.addEventListener("input", () => processInputValue(el)); el.addEventListener("blur", () => processInputValue(el, false)); function processInputValue(el2, shouldRestoreCursor = true) { let input = el2.value; let template = templateFn(input); if (!template || template === "false") return false; if (lastInputValue.length - el2.value.length === 1) { return lastInputValue = el2.value; } let setInput = () => { lastInputValue = el2.value = formatInput(input, template); }; if (shouldRestoreCursor) { restoreCursorPosition(el2, template, () => { setInput(); }); } else { setInput(); } } function formatInput(input, template) { if (input === "") return ""; let strippedDownInput = stripDown(template, input); let rebuiltInput = buildUp(template, strippedDownInput); return rebuiltInput; } }).before("model"); } function restoreCursorPosition(el, template, callback) { let cursorPosition = el.selectionStart; let unformattedValue = el.value; callback(); let beforeLeftOfCursorBeforeFormatting = unformattedValue.slice(0, cursorPosition); let newPosition = buildUp(template, stripDown(template, beforeLeftOfCursorBeforeFormatting)).length; el.setSelectionRange(newPosition, newPosition); } function stripDown(template, input) { let inputToBeStripped = input; let output = ""; let regexes = { "9": /[0-9]/, a: /[a-zA-Z]/, "*": /[a-zA-Z0-9]/ }; let wildcardTemplate = ""; for (let i3 = 0; i3 < template.length; i3++) { if (["9", "a", "*"].includes(template[i3])) { wildcardTemplate += template[i3]; continue; } for (let j3 = 0; j3 < inputToBeStripped.length; j3++) { if (inputToBeStripped[j3] === template[i3]) { inputToBeStripped = inputToBeStripped.slice(0, j3) + inputToBeStripped.slice(j3 + 1); break; } } } for (let i3 = 0; i3 < wildcardTemplate.length; i3++) { let found = false; for (let j3 = 0; j3 < inputToBeStripped.length; j3++) { if (regexes[wildcardTemplate[i3]].test(inputToBeStripped[j3])) { output += inputToBeStripped[j3]; inputToBeStripped = inputToBeStripped.slice(0, j3) + inputToBeStripped.slice(j3 + 1); found = true; break; } } if (!found) break; } return output; } function buildUp(template, input) { let clean2 = Array.from(input); let output = ""; for (let i3 = 0; i3 < template.length; i3++) { if (!["9", "a", "*"].includes(template[i3])) { output += template[i3]; continue; } if (clean2.length === 0) break; output += clean2.shift(); } return output; } function formatMoney(input, delimiter = ".", thousands, precision = 2) { if (input === "-") return "-"; if (/^\D+$/.test(input)) return "9"; thousands = thousands != null ? thousands : delimiter === "," ? "." : ","; let addThousands = (input2, thousands2) => { let output = ""; let counter = 0; for (let i3 = input2.length - 1; i3 >= 0; i3--) { if (input2[i3] === thousands2) continue; if (counter === 3) { output = input2[i3] + thousands2 + output; counter = 0; } else { output = input2[i3] + output; } counter++; } return output; }; let minus = input.startsWith("-") ? "-" : ""; let strippedInput = input.replaceAll(new RegExp(`[^0-9\\${delimiter}]`, "g"), ""); let template = Array.from({ length: strippedInput.split(delimiter)[0].length }).fill("9").join(""); template = `${minus}${addThousands(template, thousands)}`; if (precision > 0 && input.includes(delimiter)) template += `${delimiter}` + "9".repeat(precision); queueMicrotask(() => { if (this.el.value.endsWith(delimiter)) return; if (this.el.value[this.el.selectionStart - 1] === delimiter) { this.el.setSelectionRange(this.el.selectionStart - 1, this.el.selectionStart - 1); } }); return template; } var module_default5 = src_default5; // ../../../node_modules/@alpinejs/focus/dist/module.esm.js var candidateSelectors = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])', "details>summary:first-of-type", "details"]; var candidateSelector = /* @__PURE__ */ candidateSelectors.join(","); var matches = typeof Element === "undefined" ? function() { } : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; var getCandidates = function getCandidates2(el, includeContainer, filter) { var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector)); if (includeContainer && matches.call(el, candidateSelector)) { candidates.unshift(el); } candidates = candidates.filter(filter); return candidates; }; var isContentEditable = function isContentEditable2(node) { return node.contentEditable === "true"; }; var getTabindex = function getTabindex2(node) { var tabindexAttr = parseInt(node.getAttribute("tabindex"), 10); if (!isNaN(tabindexAttr)) { return tabindexAttr; } if (isContentEditable(node)) { return 0; } if ((node.nodeName === "AUDIO" || node.nodeName === "VIDEO" || node.nodeName === "DETAILS") && node.getAttribute("tabindex") === null) { return 0; } return node.tabIndex; }; var sortOrderedTabbables = function sortOrderedTabbables2(a3, b3) { return a3.tabIndex === b3.tabIndex ? a3.documentOrder - b3.documentOrder : a3.tabIndex - b3.tabIndex; }; var isInput = function isInput2(node) { return node.tagName === "INPUT"; }; var isHiddenInput = function isHiddenInput2(node) { return isInput(node) && node.type === "hidden"; }; var isDetailsWithSummary = function isDetailsWithSummary2(node) { var r3 = node.tagName === "DETAILS" && Array.prototype.slice.apply(node.children).some(function(child) { return child.tagName === "SUMMARY"; }); return r3; }; var getCheckedRadio = function getCheckedRadio2(nodes, form) { for (var i3 = 0; i3 < nodes.length; i3++) { if (nodes[i3].checked && nodes[i3].form === form) { return nodes[i3]; } } }; var isTabbableRadio = function isTabbableRadio2(node) { if (!node.name) { return true; } var radioScope = node.form || node.ownerDocument; var queryRadios = function queryRadios2(name) { return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); }; var radioSet; if (typeof window !== "undefined" && typeof window.CSS !== "undefined" && typeof window.CSS.escape === "function") { radioSet = queryRadios(window.CSS.escape(node.name)); } else { try { radioSet = queryRadios(node.name); } catch (err) { console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s", err.message); return false; } } var checked = getCheckedRadio(radioSet, node.form); return !checked || checked === node; }; var isRadio = function isRadio2(node) { return isInput(node) && node.type === "radio"; }; var isNonTabbableRadio = function isNonTabbableRadio2(node) { return isRadio(node) && !isTabbableRadio(node); }; var isHidden = function isHidden2(node, displayCheck) { if (getComputedStyle(node).visibility === "hidden") { return true; } var isDirectSummary = matches.call(node, "details>summary:first-of-type"); var nodeUnderDetails = isDirectSummary ? node.parentElement : node; if (matches.call(nodeUnderDetails, "details:not([open]) *")) { return true; } if (!displayCheck || displayCheck === "full") { while (node) { if (getComputedStyle(node).display === "none") { return true; } node = node.parentElement; } } else if (displayCheck === "non-zero-area") { var _node$getBoundingClie = node.getBoundingClientRect(), width = _node$getBoundingClie.width, height = _node$getBoundingClie.height; return width === 0 && height === 0; } return false; }; var isDisabledFromFieldset = function isDisabledFromFieldset2(node) { if (isInput(node) || node.tagName === "SELECT" || node.tagName === "TEXTAREA" || node.tagName === "BUTTON") { var parentNode = node.parentElement; while (parentNode) { if (parentNode.tagName === "FIELDSET" && parentNode.disabled) { for (var i3 = 0; i3 < parentNode.children.length; i3++) { var child = parentNode.children.item(i3); if (child.tagName === "LEGEND") { if (child.contains(node)) { return false; } return true; } } return true; } parentNode = parentNode.parentElement; } } return false; }; var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable2(options, node) { if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) || isDetailsWithSummary(node) || isDisabledFromFieldset(node)) { return false; } return true; }; var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable2(options, node) { if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) { return false; } return true; }; var tabbable = function tabbable2(el, options) { options = options || {}; var regularTabbables = []; var orderedTabbables = []; var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options)); candidates.forEach(function(candidate, i3) { var candidateTabindex = getTabindex(candidate); if (candidateTabindex === 0) { regularTabbables.push(candidate); } else { orderedTabbables.push({ documentOrder: i3, tabIndex: candidateTabindex, node: candidate }); } }); var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function(a3) { return a3.node; }).concat(regularTabbables); return tabbableNodes; }; var focusable = function focusable2(el, options) { options = options || {}; var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options)); return candidates; }; var focusableCandidateSelector = /* @__PURE__ */ candidateSelectors.concat("iframe").join(","); var isFocusable = function isFocusable2(node, options) { options = options || {}; if (!node) { throw new Error("No node provided"); } if (matches.call(node, focusableCandidateSelector) === false) { return false; } return isNodeMatchingSelectorFocusable(options, node); }; function ownKeys2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function(sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i3 = 1; i3 < arguments.length; i3++) { var source = arguments[i3] != null ? arguments[i3] : {}; if (i3 % 2) { ownKeys2(Object(source), true).forEach(function(key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys2(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var activeFocusTraps = function() { var trapQueue = []; return { activateTrap: function activateTrap(trap) { if (trapQueue.length > 0) { var activeTrap = trapQueue[trapQueue.length - 1]; if (activeTrap !== trap) { activeTrap.pause(); } } var trapIndex = trapQueue.indexOf(trap); if (trapIndex === -1) { trapQueue.push(trap); } else { trapQueue.splice(trapIndex, 1); trapQueue.push(trap); } }, deactivateTrap: function deactivateTrap(trap) { var trapIndex = trapQueue.indexOf(trap); if (trapIndex !== -1) { trapQueue.splice(trapIndex, 1); } if (trapQueue.length > 0) { trapQueue[trapQueue.length - 1].unpause(); } } }; }(); var isSelectableInput = function isSelectableInput2(node) { return node.tagName && node.tagName.toLowerCase() === "input" && typeof node.select === "function"; }; var isEscapeEvent = function isEscapeEvent2(e3) { return e3.key === "Escape" || e3.key === "Esc" || e3.keyCode === 27; }; var isTabEvent = function isTabEvent2(e3) { return e3.key === "Tab" || e3.keyCode === 9; }; var delay = function delay2(fn3) { return setTimeout(fn3, 0); }; var findIndex = function findIndex2(arr, fn3) { var idx = -1; arr.every(function(value, i3) { if (fn3(value)) { idx = i3; return false; } return true; }); return idx; }; var valueOrHandler = function valueOrHandler2(value) { for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { params[_key - 1] = arguments[_key]; } return typeof value === "function" ? value.apply(void 0, params) : value; }; var createFocusTrap = function createFocusTrap2(elements, userOptions) { var doc = document; var config = _objectSpread2({ returnFocusOnDeactivate: true, escapeDeactivates: true, delayInitialFocus: true }, userOptions); var state = { containers: [], tabbableGroups: [], nodeFocusedBeforeActivation: null, mostRecentlyFocusedNode: null, active: false, paused: false, delayInitialFocusTimer: void 0 }; var trap; var getOption = function getOption2(configOverrideOptions, optionName, configOptionName) { return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : config[configOptionName || optionName]; }; var containersContain = function containersContain2(element) { return state.containers.some(function(container) { return container.contains(element); }); }; var getNodeForOption = function getNodeForOption2(optionName) { var optionValue = config[optionName]; if (!optionValue) { return null; } var node = optionValue; if (typeof optionValue === "string") { node = doc.querySelector(optionValue); if (!node) { throw new Error("`".concat(optionName, "` refers to no known node")); } } if (typeof optionValue === "function") { node = optionValue(); if (!node) { throw new Error("`".concat(optionName, "` did not return a node")); } } return node; }; var getInitialFocusNode = function getInitialFocusNode2() { var node; if (getOption({}, "initialFocus") === false) { return false; } if (getNodeForOption("initialFocus") !== null) { node = getNodeForOption("initialFocus"); } else if (containersContain(doc.activeElement)) { node = doc.activeElement; } else { var firstTabbableGroup = state.tabbableGroups[0]; var firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode; node = firstTabbableNode || getNodeForOption("fallbackFocus"); } if (!node) { throw new Error("Your focus-trap needs to have at least one focusable element"); } return node; }; var updateTabbableNodes = function updateTabbableNodes2() { state.tabbableGroups = state.containers.map(function(container) { var tabbableNodes = tabbable(container); if (tabbableNodes.length > 0) { return { container, firstTabbableNode: tabbableNodes[0], lastTabbableNode: tabbableNodes[tabbableNodes.length - 1] }; } return void 0; }).filter(function(group) { return !!group; }); if (state.tabbableGroups.length <= 0 && !getNodeForOption("fallbackFocus")) { throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times"); } }; var tryFocus = function tryFocus2(node) { if (node === false) { return; } if (node === doc.activeElement) { return; } if (!node || !node.focus) { tryFocus2(getInitialFocusNode()); return; } node.focus({ preventScroll: !!config.preventScroll }); state.mostRecentlyFocusedNode = node; if (isSelectableInput(node)) { node.select(); } }; var getReturnFocusNode = function getReturnFocusNode2(previousActiveElement) { var node = getNodeForOption("setReturnFocus"); return node ? node : previousActiveElement; }; var checkPointerDown = function checkPointerDown2(e3) { if (containersContain(e3.target)) { return; } if (valueOrHandler(config.clickOutsideDeactivates, e3)) { trap.deactivate({ returnFocus: config.returnFocusOnDeactivate && !isFocusable(e3.target) }); return; } if (valueOrHandler(config.allowOutsideClick, e3)) { return; } e3.preventDefault(); }; var checkFocusIn = function checkFocusIn2(e3) { var targetContained = containersContain(e3.target); if (targetContained || e3.target instanceof Document) { if (targetContained) { state.mostRecentlyFocusedNode = e3.target; } } else { e3.stopImmediatePropagation(); tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode()); } }; var checkTab = function checkTab2(e3) { updateTabbableNodes(); var destinationNode = null; if (state.tabbableGroups.length > 0) { var containerIndex = findIndex(state.tabbableGroups, function(_ref) { var container = _ref.container; return container.contains(e3.target); }); if (containerIndex < 0) { if (e3.shiftKey) { destinationNode = state.tabbableGroups[state.tabbableGroups.length - 1].lastTabbableNode; } else { destinationNode = state.tabbableGroups[0].firstTabbableNode; } } else if (e3.shiftKey) { var startOfGroupIndex = findIndex(state.tabbableGroups, function(_ref2) { var firstTabbableNode = _ref2.firstTabbableNode; return e3.target === firstTabbableNode; }); if (startOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e3.target) { startOfGroupIndex = containerIndex; } if (startOfGroupIndex >= 0) { var destinationGroupIndex = startOfGroupIndex === 0 ? state.tabbableGroups.length - 1 : startOfGroupIndex - 1; var destinationGroup = state.tabbableGroups[destinationGroupIndex]; destinationNode = destinationGroup.lastTabbableNode; } } else { var lastOfGroupIndex = findIndex(state.tabbableGroups, function(_ref3) { var lastTabbableNode = _ref3.lastTabbableNode; return e3.target === lastTabbableNode; }); if (lastOfGroupIndex < 0 && state.tabbableGroups[containerIndex].container === e3.target) { lastOfGroupIndex = containerIndex; } if (lastOfGroupIndex >= 0) { var _destinationGroupIndex = lastOfGroupIndex === state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1; var _destinationGroup = state.tabbableGroups[_destinationGroupIndex]; destinationNode = _destinationGroup.firstTabbableNode; } } } else { destinationNode = getNodeForOption("fallbackFocus"); } if (destinationNode) { e3.preventDefault(); tryFocus(destinationNode); } }; var checkKey = function checkKey2(e3) { if (isEscapeEvent(e3) && valueOrHandler(config.escapeDeactivates) !== false) { e3.preventDefault(); trap.deactivate(); return; } if (isTabEvent(e3)) { checkTab(e3); return; } }; var checkClick = function checkClick2(e3) { if (valueOrHandler(config.clickOutsideDeactivates, e3)) { return; } if (containersContain(e3.target)) { return; } if (valueOrHandler(config.allowOutsideClick, e3)) { return; } e3.preventDefault(); e3.stopImmediatePropagation(); }; var addListeners = function addListeners2() { if (!state.active) { return; } activeFocusTraps.activateTrap(trap); state.delayInitialFocusTimer = config.delayInitialFocus ? delay(function() { tryFocus(getInitialFocusNode()); }) : tryFocus(getInitialFocusNode()); doc.addEventListener("focusin", checkFocusIn, true); doc.addEventListener("mousedown", checkPointerDown, { capture: true, passive: false }); doc.addEventListener("touchstart", checkPointerDown, { capture: true, passive: false }); doc.addEventListener("click", checkClick, { capture: true, passive: false }); doc.addEventListener("keydown", checkKey, { capture: true, passive: false }); return trap; }; var removeListeners = function removeListeners2() { if (!state.active) { return; } doc.removeEventListener("focusin", checkFocusIn, true); doc.removeEventListener("mousedown", checkPointerDown, true); doc.removeEventListener("touchstart", checkPointerDown, true); doc.removeEventListener("click", checkClick, true); doc.removeEventListener("keydown", checkKey, true); return trap; }; trap = { activate: function activate(activateOptions) { if (state.active) { return this; } var onActivate = getOption(activateOptions, "onActivate"); var onPostActivate = getOption(activateOptions, "onPostActivate"); var checkCanFocusTrap = getOption(activateOptions, "checkCanFocusTrap"); if (!checkCanFocusTrap) { updateTabbableNodes(); } state.active = true; state.paused = false; state.nodeFocusedBeforeActivation = doc.activeElement; if (onActivate) { onActivate(); } var finishActivation = function finishActivation2() { if (checkCanFocusTrap) { updateTabbableNodes(); } addListeners(); if (onPostActivate) { onPostActivate(); } }; if (checkCanFocusTrap) { checkCanFocusTrap(state.containers.concat()).then(finishActivation, finishActivation); return this; } finishActivation(); return this; }, deactivate: function deactivate(deactivateOptions) { if (!state.active) { return this; } clearTimeout(state.delayInitialFocusTimer); state.delayInitialFocusTimer = void 0; removeListeners(); state.active = false; state.paused = false; activeFocusTraps.deactivateTrap(trap); var onDeactivate = getOption(deactivateOptions, "onDeactivate"); var onPostDeactivate = getOption(deactivateOptions, "onPostDeactivate"); var checkCanReturnFocus = getOption(deactivateOptions, "checkCanReturnFocus"); if (onDeactivate) { onDeactivate(); } var returnFocus = getOption(deactivateOptions, "returnFocus", "returnFocusOnDeactivate"); var finishDeactivation = function finishDeactivation2() { delay(function() { if (returnFocus) { tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)); } if (onPostDeactivate) { onPostDeactivate(); } }); }; if (returnFocus && checkCanReturnFocus) { checkCanReturnFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation)).then(finishDeactivation, finishDeactivation); return this; } finishDeactivation(); return this; }, pause: function pause() { if (state.paused || !state.active) { return this; } state.paused = true; removeListeners(); return this; }, unpause: function unpause() { if (!state.paused || !state.active) { return this; } state.paused = false; updateTabbableNodes(); addListeners(); return this; }, updateContainerElements: function updateContainerElements(containerElements) { var elementsAsArray = [].concat(containerElements).filter(Boolean); state.containers = elementsAsArray.map(function(element) { return typeof element === "string" ? doc.querySelector(element) : element; }); if (state.active) { updateTabbableNodes(); } return this; } }; trap.updateContainerElements(elements); return trap; }; function src_default6(Alpine3) { let lastFocused; let currentFocused; window.addEventListener("focusin", () => { lastFocused = currentFocused; currentFocused = document.activeElement; }); Alpine3.magic("focus", (el) => { let within2 = el; return { __noscroll: false, __wrapAround: false, within(el2) { within2 = el2; return this; }, withoutScrolling() { this.__noscroll = true; return this; }, noscroll() { this.__noscroll = true; return this; }, withWrapAround() { this.__wrapAround = true; return this; }, wrap() { return this.withWrapAround(); }, focusable(el2) { return isFocusable(el2); }, previouslyFocused() { return lastFocused; }, lastFocused() { return lastFocused; }, focused() { return currentFocused; }, focusables() { if (Array.isArray(within2)) return within2; return focusable(within2, { displayCheck: "none" }); }, all() { return this.focusables(); }, isFirst(el2) { let els = this.all(); return els[0] && els[0].isSameNode(el2); }, isLast(el2) { let els = this.all(); return els.length && els.slice(-1)[0].isSameNode(el2); }, getFirst() { return this.all()[0]; }, getLast() { return this.all().slice(-1)[0]; }, getNext() { let list = this.all(); let current = document.activeElement; if (list.indexOf(current) === -1) return; if (this.__wrapAround && list.indexOf(current) === list.length - 1) { return list[0]; } return list[list.indexOf(current) + 1]; }, getPrevious() { let list = this.all(); let current = document.activeElement; if (list.indexOf(current) === -1) return; if (this.__wrapAround && list.indexOf(current) === 0) { return list.slice(-1)[0]; } return list[list.indexOf(current) - 1]; }, first() { this.focus(this.getFirst()); }, last() { this.focus(this.getLast()); }, next() { this.focus(this.getNext()); }, previous() { this.focus(this.getPrevious()); }, prev() { return this.previous(); }, focus(el2) { if (!el2) return; setTimeout(() => { if (!el2.hasAttribute("tabindex")) el2.setAttribute("tabindex", "0"); el2.focus({ preventScroll: this._noscroll }); }); } }; }); Alpine3.directive("trap", Alpine3.skipDuringClone((el, { expression, modifiers }, { effect: effect7, evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { let evaluator = evaluateLater2(expression); let oldValue = false; let options = { escapeDeactivates: false, allowOutsideClick: true, fallbackFocus: () => el }; let autofocusEl = el.querySelector("[autofocus]"); if (autofocusEl) options.initialFocus = autofocusEl; let trap = createFocusTrap(el, options); let undoInert = () => { }; let undoDisableScrolling = () => { }; const releaseFocus = () => { undoInert(); undoInert = () => { }; undoDisableScrolling(); undoDisableScrolling = () => { }; trap.deactivate({ returnFocus: !modifiers.includes("noreturn") }); }; effect7(() => evaluator((value) => { if (oldValue === value) return; if (value && !oldValue) { setTimeout(() => { if (modifiers.includes("inert")) undoInert = setInert(el); if (modifiers.includes("noscroll")) undoDisableScrolling = disableScrolling(); trap.activate(); }); } if (!value && oldValue) { releaseFocus(); } oldValue = !!value; })); cleanup2(releaseFocus); }, (el, { expression, modifiers }, { evaluate: evaluate2 }) => { if (modifiers.includes("inert") && evaluate2(expression)) setInert(el); })); } function setInert(el) { let undos = []; crawlSiblingsUp(el, (sibling) => { let cache2 = sibling.hasAttribute("aria-hidden"); sibling.setAttribute("aria-hidden", "true"); undos.push(() => cache2 || sibling.removeAttribute("aria-hidden")); }); return () => { while (undos.length) undos.pop()(); }; } function crawlSiblingsUp(el, callback) { if (el.isSameNode(document.body) || !el.parentNode) return; Array.from(el.parentNode.children).forEach((sibling) => { if (sibling.isSameNode(el)) { crawlSiblingsUp(el.parentNode, callback); } else { callback(sibling); } }); } function disableScrolling() { let overflow = document.documentElement.style.overflow; let paddingRight = document.documentElement.style.paddingRight; let scrollbarWidth = window.innerWidth - document.documentElement.clientWidth; document.documentElement.style.overflow = "hidden"; document.documentElement.style.paddingRight = `${scrollbarWidth}px`; return () => { document.documentElement.style.overflow = overflow; document.documentElement.style.paddingRight = paddingRight; }; } var module_default6 = src_default6; // ../../../node_modules/alpinejs-tash/dist/tash.esm.js function l2(s3) { s3.directive("tash", (r3, { modifiers: c3, expression: a3 }, { evaluate: u3, effect: m3 }) => { let p2 = (e3) => new RegExp(`${d3}${e3}${f3}`, "g"), i3 = c3.includes("vue"), o3 = c3.includes("angular"), d3 = i3 ? "{{ " : o3 ? "{{" : "{", f3 = i3 ? " }}" : o3 ? "}}" : "}", g3 = a3.split(",").map((e3) => e3.trim()), t3 = document.createElement("template"); t3.innerHTML = r3.innerHTML; let n3 = `${t3.innerHTML}`; m3(() => { g3.forEach((e3) => { let H3 = u3(e3), h3 = p2(e3); n3 = n3.replace(h3, H3); }), r3.innerHTML = n3, n3 = t3.innerHTML; }); }); } var M2 = l2; // libs/alpine/plugins/options.js var import_lodash = __toESM(require_lodash(), 1); // helpers/lang.js function nameFunction(name, body) { return { [name](...args) { return body.apply(this, args); } }[name]; } function isObject2(thing) { return typeof thing === "object" && thing !== null; } function isNumeric4(str) { if (typeof str != "string") return false; return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)... !isNaN(parseFloat(str)); } function roughSizeOfObject(object) { const objectList = []; const stack = [object]; let bytes = 0; while (stack.length) { const value = stack.pop(); if (typeof value === "boolean") { bytes += 4; } else if (typeof value === "string") { bytes += value.length * 2; } else if (typeof value === "number") { bytes += 8; } else if (typeof value === "object" && objectList.indexOf(value) === -1) { objectList.push(value); for (var i3 in value) { stack.push(value[i3]); } } } return bytes; } // helpers/dom.js function getHiddenElementDimensions(el, display = "block") { let size2; if (el.style.display === "none") { el.style.display = display; size2 = el.getBoundingClientRect(); el.style.display = "none"; } else { size2 = el.getBoundingClientRect(); } return size2; } function castAttributeValue(value) { if (value === "false") { return false; } if (value === "true") { return true; } if (isNumeric4(value)) { return parseInt(value, 10); } return value; } function isNode(o3) { return typeof Node === "object" ? o3 instanceof Node : o3 && typeof o3 === "object" && typeof o3.nodeType === "number" && typeof o3.nodeName === "string"; } // helpers/alpine.js function registerComponents(components) { document.addEventListener("alpine:init", () => { components.forEach((module) => { if (module.default && module.default.component === true) { Alpine.data(module.default.name, module.default); } }); }); return components; } function getComponent(el, throwOnError = false) { try { return Alpine.$data(el); } catch (error2) { if (throwOnError) { throw error2; } else { return null; } } } function getData(el) { const root = Alpine.closestRoot(el); return root ? Alpine.$data(root) : null; } function setData(el, newData) { const data2 = getData(el); return data2 ? Object.assign(data2, newData) : null; } // libs/alpine/plugins/options.js function options_default(Alpine3) { Alpine3.directive( "options", (el, { expression }, { evaluate: evaluate2, effect: effect7, cleanup: cleanup2 }) => { const optionNames = evaluate2(expression); const optionsData = buildOptionsData(el, optionNames); const optionAttrs = optionsData.map((option) => option.attr); const data2 = setData( el, Alpine3.reactive({ $options: toPairs(optionsData) }) ); effect7(() => { Object.entries(data2.$options).forEach(([key, value]) => { Alpine3.mutateDom(() => { const attrName = `data-${(0, import_lodash.kebabCase)(key)}`; if (value === null) { el.removeAttribute(attrName); } else { el.setAttribute(attrName, value); } }); }); }); const attrObserver = new MutationObserver((mutationsList) => { for (const mutation of mutationsList) { const attrName = mutation.attributeName; if (mutation.type !== "attributes" || !optionAttrs.includes(attrName)) { return; } const value = mutation.target.getAttribute(attrName); const option = (0, import_lodash.camelCase)(attrName.replace("data-", "")); data2.$options[option] = castAttributeValue(value); } }).observe(el, { attributes: true }); cleanup2(() => { attrObserver && attrObserver.disconnect(); }); } ).before("bind"); } function buildOptionsData(el, optionNames) { return optionNames.map((name) => { const key = (0, import_lodash.camelCase)(name); const attr = `data-${(0, import_lodash.kebabCase)(name)}`; let value = null; if (el.hasAttribute(attr)) { const strValue = el.getAttribute(attr); value = castAttributeValue(strValue); } return { name, key, attr, value }; }); } function toPairs(optionsData) { return (0, import_lodash.mapValues)((0, import_lodash.keyBy)(optionsData, "key"), "value"); } // ../../../node_modules/@popperjs/core/lib/enums.js var top = "top"; var bottom = "bottom"; var right = "right"; var left = "left"; var auto = "auto"; var basePlacements = [top, bottom, right, left]; var start4 = "start"; var end = "end"; var clippingParents = "clippingParents"; var viewport = "viewport"; var popper = "popper"; var reference = "reference"; var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { return acc.concat([placement + "-" + start4, placement + "-" + end]); }, []); var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { return acc.concat([placement, placement + "-" + start4, placement + "-" + end]); }, []); var beforeRead = "beforeRead"; var read = "read"; var afterRead = "afterRead"; var beforeMain = "beforeMain"; var main = "main"; var afterMain = "afterMain"; var beforeWrite = "beforeWrite"; var write = "write"; var afterWrite = "afterWrite"; var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; // ../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js function getNodeName(element) { return element ? (element.nodeName || "").toLowerCase() : null; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js function getWindow(node) { if (node == null) { return window; } if (node.toString() !== "[object Window]") { var ownerDocument = node.ownerDocument; return ownerDocument ? ownerDocument.defaultView || window : window; } return node; } // ../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js function isElement(node) { var OwnElement = getWindow(node).Element; return node instanceof OwnElement || node instanceof Element; } function isHTMLElement(node) { var OwnElement = getWindow(node).HTMLElement; return node instanceof OwnElement || node instanceof HTMLElement; } function isShadowRoot(node) { if (typeof ShadowRoot === "undefined") { return false; } var OwnElement = getWindow(node).ShadowRoot; return node instanceof OwnElement || node instanceof ShadowRoot; } // ../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js function applyStyles(_ref) { var state = _ref.state; Object.keys(state.elements).forEach(function(name) { var style = state.styles[name] || {}; var attributes = state.attributes[name] || {}; var element = state.elements[name]; if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function(name2) { var value = attributes[name2]; if (value === false) { element.removeAttribute(name2); } else { element.setAttribute(name2, value === true ? "" : value); } }); }); } function effect3(_ref2) { var state = _ref2.state; var initialStyles = { popper: { position: state.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } return function() { Object.keys(state.elements).forEach(function(name) { var element = state.elements[name]; var attributes = state.attributes[name] || {}; var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); var style = styleProperties.reduce(function(style2, property) { style2[property] = ""; return style2; }, {}); if (!isHTMLElement(element) || !getNodeName(element)) { return; } Object.assign(element.style, style); Object.keys(attributes).forEach(function(attribute) { element.removeAttribute(attribute); }); }); }; } var applyStyles_default = { name: "applyStyles", enabled: true, phase: "write", fn: applyStyles, effect: effect3, requires: ["computeStyles"] }; // ../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js function getBasePlacement(placement) { return placement.split("-")[0]; } // ../../../node_modules/@popperjs/core/lib/utils/math.js var max = Math.max; var min = Math.min; var round = Math.round; // ../../../node_modules/@popperjs/core/lib/utils/userAgent.js function getUAString() { var uaData = navigator.userAgentData; if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { return uaData.brands.map(function(item) { return item.brand + "/" + item.version; }).join(" "); } return navigator.userAgent; } // ../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js function isLayoutViewport() { return !/^((?!chrome|android).)*safari/i.test(getUAString()); } // ../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js function getBoundingClientRect(element, includeScale, isFixedStrategy) { if (includeScale === void 0) { includeScale = false; } if (isFixedStrategy === void 0) { isFixedStrategy = false; } var clientRect = element.getBoundingClientRect(); var scaleX = 1; var scaleY = 1; if (includeScale && isHTMLElement(element)) { scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; } var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport; var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; var x3 = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; var y3 = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; var width = clientRect.width / scaleX; var height = clientRect.height / scaleY; return { width, height, top: y3, right: x3 + width, bottom: y3 + height, left: x3, x: x3, y: y3 }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js function getLayoutRect(element) { var clientRect = getBoundingClientRect(element); var width = element.offsetWidth; var height = element.offsetHeight; if (Math.abs(clientRect.width - width) <= 1) { width = clientRect.width; } if (Math.abs(clientRect.height - height) <= 1) { height = clientRect.height; } return { x: element.offsetLeft, y: element.offsetTop, width, height }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/contains.js function contains(parent, child) { var rootNode = child.getRootNode && child.getRootNode(); if (parent.contains(child)) { return true; } else if (rootNode && isShadowRoot(rootNode)) { var next = child; do { if (next && parent.isSameNode(next)) { return true; } next = next.parentNode || next.host; } while (next); } return false; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js function getComputedStyle2(element) { return getWindow(element).getComputedStyle(element); } // ../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js function isTableElement(element) { return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js function getDocumentElement(element) { return ((isElement(element) ? element.ownerDocument : ( // $FlowFixMe[prop-missing] element.document )) || window.document).documentElement; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js function getParentNode(element) { if (getNodeName(element) === "html") { return element; } return ( // this is a quicker (but less type safe) way to save quite some bytes from the bundle // $FlowFixMe[incompatible-return] // $FlowFixMe[prop-missing] element.assignedSlot || // step into the shadow DOM of the parent of a slotted node element.parentNode || // DOM Element detected (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected // $FlowFixMe[incompatible-call]: HTMLElement is a Node getDocumentElement(element) ); } // ../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js function getTrueOffsetParent(element) { if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 getComputedStyle2(element).position === "fixed") { return null; } return element.offsetParent; } function getContainingBlock(element) { var isFirefox = /firefox/i.test(getUAString()); var isIE = /Trident/i.test(getUAString()); if (isIE && isHTMLElement(element)) { var elementCss = getComputedStyle2(element); if (elementCss.position === "fixed") { return null; } } var currentNode = getParentNode(element); if (isShadowRoot(currentNode)) { currentNode = currentNode.host; } while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle2(currentNode); if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { return currentNode; } else { currentNode = currentNode.parentNode; } } return null; } function getOffsetParent(element) { var window2 = getWindow(element); var offsetParent = getTrueOffsetParent(element); while (offsetParent && isTableElement(offsetParent) && getComputedStyle2(offsetParent).position === "static") { offsetParent = getTrueOffsetParent(offsetParent); } if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static")) { return window2; } return offsetParent || getContainingBlock(element) || window2; } // ../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js function getMainAxisFromPlacement(placement) { return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; } // ../../../node_modules/@popperjs/core/lib/utils/within.js function within(min2, value, max2) { return max(min2, min(value, max2)); } function withinMaxClamp(min2, value, max2) { var v3 = within(min2, value, max2); return v3 > max2 ? max2 : v3; } // ../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js function getFreshSideObject() { return { top: 0, right: 0, bottom: 0, left: 0 }; } // ../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js function mergePaddingObject(paddingObject) { return Object.assign({}, getFreshSideObject(), paddingObject); } // ../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js function expandToHashMap(value, keys) { return keys.reduce(function(hashMap, key) { hashMap[key] = value; return hashMap; }, {}); } // ../../../node_modules/@popperjs/core/lib/modifiers/arrow.js var toPaddingObject = function toPaddingObject2(padding, state) { padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { placement: state.placement })) : padding; return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); }; function arrow(_ref) { var _state$modifiersData$; var state = _ref.state, name = _ref.name, options = _ref.options; var arrowElement = state.elements.arrow; var popperOffsets2 = state.modifiersData.popperOffsets; var basePlacement = getBasePlacement(state.placement); var axis = getMainAxisFromPlacement(basePlacement); var isVertical = [left, right].indexOf(basePlacement) >= 0; var len = isVertical ? "height" : "width"; if (!arrowElement || !popperOffsets2) { return; } var paddingObject = toPaddingObject(options.padding, state); var arrowRect = getLayoutRect(arrowElement); var minProp = axis === "y" ? top : left; var maxProp = axis === "y" ? bottom : right; var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; var arrowOffsetParent = getOffsetParent(arrowElement); var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; var centerToReference = endDiff / 2 - startDiff / 2; var min2 = paddingObject[minProp]; var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; var offset2 = within(min2, center, max2); var axisProp = axis; state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); } function effect4(_ref2) { var state = _ref2.state, options = _ref2.options; var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; if (arrowElement == null) { return; } if (typeof arrowElement === "string") { arrowElement = state.elements.popper.querySelector(arrowElement); if (!arrowElement) { return; } } if (!contains(state.elements.popper, arrowElement)) { return; } state.elements.arrow = arrowElement; } var arrow_default = { name: "arrow", enabled: true, phase: "main", fn: arrow, effect: effect4, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] }; // ../../../node_modules/@popperjs/core/lib/utils/getVariation.js function getVariation(placement) { return placement.split("-")[1]; } // ../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js var unsetSides = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function roundOffsetsByDPR(_ref, win) { var x3 = _ref.x, y3 = _ref.y; var dpr = win.devicePixelRatio || 1; return { x: round(x3 * dpr) / dpr || 0, y: round(y3 * dpr) / dpr || 0 }; } function mapToStyles(_ref2) { var _Object$assign2; var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; var _offsets$x = offsets.x, x3 = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y3 = _offsets$y === void 0 ? 0 : _offsets$y; var _ref3 = typeof roundOffsets === "function" ? roundOffsets({ x: x3, y: y3 }) : { x: x3, y: y3 }; x3 = _ref3.x; y3 = _ref3.y; var hasX = offsets.hasOwnProperty("x"); var hasY = offsets.hasOwnProperty("y"); var sideX = left; var sideY = top; var win = window; if (adaptive) { var offsetParent = getOffsetParent(popper2); var heightProp = "clientHeight"; var widthProp = "clientWidth"; if (offsetParent === getWindow(popper2)) { offsetParent = getDocumentElement(popper2); if (getComputedStyle2(offsetParent).position !== "static" && position === "absolute") { heightProp = "scrollHeight"; widthProp = "scrollWidth"; } } offsetParent = offsetParent; if (placement === top || (placement === left || placement === right) && variation === end) { sideY = bottom; var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : ( // $FlowFixMe[prop-missing] offsetParent[heightProp] ); y3 -= offsetY - popperRect.height; y3 *= gpuAcceleration ? 1 : -1; } if (placement === left || (placement === top || placement === bottom) && variation === end) { sideX = right; var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : ( // $FlowFixMe[prop-missing] offsetParent[widthProp] ); x3 -= offsetX - popperRect.width; x3 *= gpuAcceleration ? 1 : -1; } } var commonStyles = Object.assign({ position }, adaptive && unsetSides); var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ x: x3, y: y3 }, getWindow(popper2)) : { x: x3, y: y3 }; x3 = _ref4.x; y3 = _ref4.y; if (gpuAcceleration) { var _Object$assign; return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x3 + "px, " + y3 + "px)" : "translate3d(" + x3 + "px, " + y3 + "px, 0)", _Object$assign)); } return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y3 + "px" : "", _Object$assign2[sideX] = hasX ? x3 + "px" : "", _Object$assign2.transform = "", _Object$assign2)); } function computeStyles(_ref5) { var state = _ref5.state, options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, gpuAcceleration, isFixed: state.options.strategy === "fixed" }; if (state.modifiersData.popperOffsets != null) { state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.popperOffsets, position: state.options.strategy, adaptive, roundOffsets }))); } if (state.modifiersData.arrow != null) { state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { offsets: state.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets }))); } state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-placement": state.placement }); } var computeStyles_default = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: computeStyles, data: {} }; // ../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js var passive = { passive: true }; function effect5(_ref) { var state = _ref.state, instance = _ref.instance, options = _ref.options; var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; var window2 = getWindow(state.elements.popper); var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.addEventListener("scroll", instance.update, passive); }); } if (resize) { window2.addEventListener("resize", instance.update, passive); } return function() { if (scroll) { scrollParents.forEach(function(scrollParent) { scrollParent.removeEventListener("scroll", instance.update, passive); }); } if (resize) { window2.removeEventListener("resize", instance.update, passive); } }; } var eventListeners_default = { name: "eventListeners", enabled: true, phase: "write", fn: function fn() { }, effect: effect5, data: {} }; // ../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js var hash = { left: "right", right: "left", bottom: "top", top: "bottom" }; function getOppositePlacement(placement) { return placement.replace(/left|right|bottom|top/g, function(matched) { return hash[matched]; }); } // ../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js var hash2 = { start: "end", end: "start" }; function getOppositeVariationPlacement(placement) { return placement.replace(/start|end/g, function(matched) { return hash2[matched]; }); } // ../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js function getWindowScroll(node) { var win = getWindow(node); var scrollLeft = win.pageXOffset; var scrollTop = win.pageYOffset; return { scrollLeft, scrollTop }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js function getWindowScrollBarX(element) { return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js function getViewportRect(element, strategy) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x3 = 0; var y3 = 0; if (visualViewport) { width = visualViewport.width; height = visualViewport.height; var layoutViewport = isLayoutViewport(); if (layoutViewport || !layoutViewport && strategy === "fixed") { x3 = visualViewport.offsetLeft; y3 = visualViewport.offsetTop; } } return { width, height, x: x3 + getWindowScrollBarX(element), y: y3 }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js function getDocumentRect(element) { var _element$ownerDocumen; var html = getDocumentElement(element); var winScroll = getWindowScroll(element); var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); var x3 = -winScroll.scrollLeft + getWindowScrollBarX(element); var y3 = -winScroll.scrollTop; if (getComputedStyle2(body || html).direction === "rtl") { x3 += max(html.clientWidth, body ? body.clientWidth : 0) - width; } return { width, height, x: x3, y: y3 }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js function isScrollParent(element) { var _getComputedStyle = getComputedStyle2(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); } // ../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js function getScrollParent(node) { if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { return node.ownerDocument.body; } if (isHTMLElement(node) && isScrollParent(node)) { return node; } return getScrollParent(getParentNode(node)); } // ../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js function listScrollParents(element, list) { var _element$ownerDocumen; if (list === void 0) { list = []; } var scrollParent = getScrollParent(element); var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); var win = getWindow(scrollParent); var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; var updatedList = list.concat(target); return isBody ? updatedList : ( // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here updatedList.concat(listScrollParents(getParentNode(target))) ); } // ../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js function rectToClientRect(rect) { return Object.assign({}, rect, { left: rect.x, top: rect.y, right: rect.x + rect.width, bottom: rect.y + rect.height }); } // ../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js function getInnerBoundingClientRect(element, strategy) { var rect = getBoundingClientRect(element, false, strategy === "fixed"); rect.top = rect.top + element.clientTop; rect.left = rect.left + element.clientLeft; rect.bottom = rect.top + element.clientHeight; rect.right = rect.left + element.clientWidth; rect.width = element.clientWidth; rect.height = element.clientHeight; rect.x = rect.left; rect.y = rect.top; return rect; } function getClientRectFromMixedType(element, clippingParent, strategy) { return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } function getClippingParents(element) { var clippingParents2 = listScrollParents(getParentNode(element)); var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle2(element).position) >= 0; var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; if (!isElement(clipperElement)) { return []; } return clippingParents2.filter(function(clippingParent) { return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body"; }); } function getClippingRect(element, boundary, rootBoundary, strategy) { var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents2[0]; var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { var rect = getClientRectFromMixedType(element, clippingParent, strategy); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; }, getClientRectFromMixedType(element, firstClippingParent, strategy)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; clippingRect.y = clippingRect.top; return clippingRect; } // ../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js function computeOffsets(_ref) { var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; var basePlacement = placement ? getBasePlacement(placement) : null; var variation = placement ? getVariation(placement) : null; var commonX = reference2.x + reference2.width / 2 - element.width / 2; var commonY = reference2.y + reference2.height / 2 - element.height / 2; var offsets; switch (basePlacement) { case top: offsets = { x: commonX, y: reference2.y - element.height }; break; case bottom: offsets = { x: commonX, y: reference2.y + reference2.height }; break; case right: offsets = { x: reference2.x + reference2.width, y: commonY }; break; case left: offsets = { x: reference2.x - element.width, y: commonY }; break; default: offsets = { x: reference2.x, y: reference2.y }; } var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; if (mainAxis != null) { var len = mainAxis === "y" ? "height" : "width"; switch (variation) { case start4: offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); break; case end: offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); break; default: } } return offsets; } // ../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js function detectOverflow(state, options) { if (options === void 0) { options = {}; } var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding; var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); var altContext = elementContext === popper ? reference : popper; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); var referenceClientRect = getBoundingClientRect(state.elements.reference); var popperOffsets2 = computeOffsets({ reference: referenceClientRect, element: popperRect, strategy: "absolute", placement }); var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; var overflowOffsets = { top: clippingClientRect.top - elementClientRect.top + paddingObject.top, bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, left: clippingClientRect.left - elementClientRect.left + paddingObject.left, right: elementClientRect.right - clippingClientRect.right + paddingObject.right }; var offsetData = state.modifiersData.offset; if (elementContext === popper && offsetData) { var offset2 = offsetData[placement]; Object.keys(overflowOffsets).forEach(function(key) { var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; overflowOffsets[key] += offset2[axis] * multiply; }); } return overflowOffsets; } // ../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js function computeAutoPlacement(state, options) { if (options === void 0) { options = {}; } var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; var variation = getVariation(placement); var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { return getVariation(placement2) === variation; }) : basePlacements; var allowedPlacements = placements2.filter(function(placement2) { return allowedAutoPlacements.indexOf(placement2) >= 0; }); if (allowedPlacements.length === 0) { allowedPlacements = placements2; } var overflows = allowedPlacements.reduce(function(acc, placement2) { acc[placement2] = detectOverflow(state, { placement: placement2, boundary, rootBoundary, padding })[getBasePlacement(placement2)]; return acc; }, {}); return Object.keys(overflows).sort(function(a3, b3) { return overflows[a3] - overflows[b3]; }); } // ../../../node_modules/@popperjs/core/lib/modifiers/flip.js function getExpandedFallbackPlacements(placement) { if (getBasePlacement(placement) === auto) { return []; } var oppositePlacement = getOppositePlacement(placement); return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; } function flip(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; if (state.modifiersData[name]._skip) { return; } var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; var preferredPlacement = state.options.placement; var basePlacement = getBasePlacement(preferredPlacement); var isBasePlacement = basePlacement === preferredPlacement; var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { placement: placement2, boundary, rootBoundary, padding, flipVariations, allowedAutoPlacements }) : placement2); }, []); var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var checksMap = /* @__PURE__ */ new Map(); var makeFallbackChecks = true; var firstFittingPlacement = placements2[0]; for (var i3 = 0; i3 < placements2.length; i3++) { var placement = placements2[i3]; var _basePlacement = getBasePlacement(placement); var isStartVariation = getVariation(placement) === start4; var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; var len = isVertical ? "width" : "height"; var overflow = detectOverflow(state, { placement, boundary, rootBoundary, altBoundary, padding }); var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; if (referenceRect[len] > popperRect[len]) { mainVariationSide = getOppositePlacement(mainVariationSide); } var altVariationSide = getOppositePlacement(mainVariationSide); var checks = []; if (checkMainAxis) { checks.push(overflow[_basePlacement] <= 0); } if (checkAltAxis) { checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); } if (checks.every(function(check) { return check; })) { firstFittingPlacement = placement; makeFallbackChecks = false; break; } checksMap.set(placement, checks); } if (makeFallbackChecks) { var numberOfChecks = flipVariations ? 3 : 1; var _loop = function _loop2(_i2) { var fittingPlacement = placements2.find(function(placement2) { var checks2 = checksMap.get(placement2); if (checks2) { return checks2.slice(0, _i2).every(function(check) { return check; }); } }); if (fittingPlacement) { firstFittingPlacement = fittingPlacement; return "break"; } }; for (var _i = numberOfChecks; _i > 0; _i--) { var _ret = _loop(_i); if (_ret === "break") break; } } if (state.placement !== firstFittingPlacement) { state.modifiersData[name]._skip = true; state.placement = firstFittingPlacement; state.reset = true; } } var flip_default = { name: "flip", enabled: true, phase: "main", fn: flip, requiresIfExists: ["offset"], data: { _skip: false } }; // ../../../node_modules/@popperjs/core/lib/modifiers/hide.js function getSideOffsets(overflow, rect, preventedOffsets) { if (preventedOffsets === void 0) { preventedOffsets = { x: 0, y: 0 }; } return { top: overflow.top - rect.height - preventedOffsets.y, right: overflow.right - rect.width + preventedOffsets.x, bottom: overflow.bottom - rect.height + preventedOffsets.y, left: overflow.left - rect.width - preventedOffsets.x }; } function isAnySideFullyClipped(overflow) { return [top, right, bottom, left].some(function(side) { return overflow[side] >= 0; }); } function hide(_ref) { var state = _ref.state, name = _ref.name; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var preventedOffsets = state.modifiersData.preventOverflow; var referenceOverflow = detectOverflow(state, { elementContext: "reference" }); var popperAltOverflow = detectOverflow(state, { altBoundary: true }); var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); state.modifiersData[name] = { referenceClippingOffsets, popperEscapeOffsets, isReferenceHidden, hasPopperEscaped }; state.attributes.popper = Object.assign({}, state.attributes.popper, { "data-popper-reference-hidden": isReferenceHidden, "data-popper-escaped": hasPopperEscaped }); } var hide_default = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: hide }; // ../../../node_modules/@popperjs/core/lib/modifiers/offset.js function distanceAndSkiddingToXY(placement, rects, offset2) { var basePlacement = getBasePlacement(placement); var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { placement })) : offset2, skidding = _ref[0], distance = _ref[1]; skidding = skidding || 0; distance = (distance || 0) * invertDistance; return [left, right].indexOf(basePlacement) >= 0 ? { x: distance, y: skidding } : { x: skidding, y: distance }; } function offset(_ref2) { var state = _ref2.state, options = _ref2.options, name = _ref2.name; var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; var data2 = placements.reduce(function(acc, placement) { acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); return acc; }, {}); var _data$state$placement = data2[state.placement], x3 = _data$state$placement.x, y3 = _data$state$placement.y; if (state.modifiersData.popperOffsets != null) { state.modifiersData.popperOffsets.x += x3; state.modifiersData.popperOffsets.y += y3; } state.modifiersData[name] = data2; } var offset_default = { name: "offset", enabled: true, phase: "main", requires: ["popperOffsets"], fn: offset }; // ../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js function popperOffsets(_ref) { var state = _ref.state, name = _ref.name; state.modifiersData[name] = computeOffsets({ reference: state.rects.reference, element: state.rects.popper, strategy: "absolute", placement: state.placement }); } var popperOffsets_default = { name: "popperOffsets", enabled: true, phase: "read", fn: popperOffsets, data: {} }; // ../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js function getAltAxis(axis) { return axis === "x" ? "y" : "x"; } // ../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js function preventOverflow(_ref) { var state = _ref.state, options = _ref.options, name = _ref.name; var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; var overflow = detectOverflow(state, { boundary, rootBoundary, padding, altBoundary }); var basePlacement = getBasePlacement(state.placement); var variation = getVariation(state.placement); var isBasePlacement = !variation; var mainAxis = getMainAxisFromPlacement(basePlacement); var altAxis = getAltAxis(mainAxis); var popperOffsets2 = state.modifiersData.popperOffsets; var referenceRect = state.rects.reference; var popperRect = state.rects.popper; var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { mainAxis: tetherOffsetValue, altAxis: tetherOffsetValue } : Object.assign({ mainAxis: 0, altAxis: 0 }, tetherOffsetValue); var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; var data2 = { x: 0, y: 0 }; if (!popperOffsets2) { return; } if (checkMainAxis) { var _offsetModifierState$; var mainSide = mainAxis === "y" ? top : left; var altSide = mainAxis === "y" ? bottom : right; var len = mainAxis === "y" ? "height" : "width"; var offset2 = popperOffsets2[mainAxis]; var min2 = offset2 + overflow[mainSide]; var max2 = offset2 - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start4 ? referenceRect[len] : popperRect[len]; var maxLen = variation === start4 ? -popperRect[len] : -referenceRect[len]; var arrowElement = state.elements.arrow; var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { width: 0, height: 0 }; var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); var arrowPaddingMin = arrowPaddingObject[mainSide]; var arrowPaddingMax = arrowPaddingObject[altSide]; var arrowLen = within(0, referenceRect[len], arrowRect[len]); var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; var tetherMax = offset2 + maxOffset - offsetModifierValue; var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2); popperOffsets2[mainAxis] = preventedOffset; data2[mainAxis] = preventedOffset - offset2; } if (checkAltAxis) { var _offsetModifierState$2; var _mainSide = mainAxis === "x" ? top : left; var _altSide = mainAxis === "x" ? bottom : right; var _offset = popperOffsets2[altAxis]; var _len = altAxis === "y" ? "height" : "width"; var _min = _offset + overflow[_mainSide]; var _max = _offset - overflow[_altSide]; var isOriginSide = [top, left].indexOf(basePlacement) !== -1; var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); popperOffsets2[altAxis] = _preventedOffset; data2[altAxis] = _preventedOffset - _offset; } state.modifiersData[name] = data2; } var preventOverflow_default = { name: "preventOverflow", enabled: true, phase: "main", fn: preventOverflow, requiresIfExists: ["offset"] }; // ../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js function getHTMLElementScroll(element) { return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop }; } // ../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js function getNodeScroll(node) { if (node === getWindow(node) || !isHTMLElement(node)) { return getWindowScroll(node); } else { return getHTMLElementScroll(node); } } // ../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js function isElementScaled(element) { var rect = element.getBoundingClientRect(); var scaleX = round(rect.width) / element.offsetWidth || 1; var scaleY = round(rect.height) / element.offsetHeight || 1; return scaleX !== 1 || scaleY !== 1; } function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { if (isFixed === void 0) { isFixed = false; } var isOffsetParentAnElement = isHTMLElement(offsetParent); var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); var documentElement = getDocumentElement(offsetParent); var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); var scroll = { scrollLeft: 0, scrollTop: 0 }; var offsets = { x: 0, y: 0 }; if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 isScrollParent(documentElement)) { scroll = getNodeScroll(offsetParent); } if (isHTMLElement(offsetParent)) { offsets = getBoundingClientRect(offsetParent, true); offsets.x += offsetParent.clientLeft; offsets.y += offsetParent.clientTop; } else if (documentElement) { offsets.x = getWindowScrollBarX(documentElement); } } return { x: rect.left + scroll.scrollLeft - offsets.x, y: rect.top + scroll.scrollTop - offsets.y, width: rect.width, height: rect.height }; } // ../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js function order(modifiers) { var map = /* @__PURE__ */ new Map(); var visited = /* @__PURE__ */ new Set(); var result = []; modifiers.forEach(function(modifier) { map.set(modifier.name, modifier); }); function sort(modifier) { visited.add(modifier.name); var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); requires.forEach(function(dep) { if (!visited.has(dep)) { var depModifier = map.get(dep); if (depModifier) { sort(depModifier); } } }); result.push(modifier); } modifiers.forEach(function(modifier) { if (!visited.has(modifier.name)) { sort(modifier); } }); return result; } function orderModifiers(modifiers) { var orderedModifiers = order(modifiers); return modifierPhases.reduce(function(acc, phase) { return acc.concat(orderedModifiers.filter(function(modifier) { return modifier.phase === phase; })); }, []); } // ../../../node_modules/@popperjs/core/lib/utils/debounce.js function debounce2(fn3) { var pending; return function() { if (!pending) { pending = new Promise(function(resolve) { Promise.resolve().then(function() { pending = void 0; resolve(fn3()); }); }); } return pending; }; } // ../../../node_modules/@popperjs/core/lib/utils/mergeByName.js function mergeByName(modifiers) { var merged = modifiers.reduce(function(merged2, current) { var existing = merged2[current.name]; merged2[current.name] = existing ? Object.assign({}, existing, current, { options: Object.assign({}, existing.options, current.options), data: Object.assign({}, existing.data, current.data) }) : current; return merged2; }, {}); return Object.keys(merged).map(function(key) { return merged[key]; }); } // ../../../node_modules/@popperjs/core/lib/createPopper.js var DEFAULT_OPTIONS = { placement: "bottom", modifiers: [], strategy: "absolute" }; function areValidElements() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return !args.some(function(element) { return !(element && typeof element.getBoundingClientRect === "function"); }); } function popperGenerator(generatorOptions) { if (generatorOptions === void 0) { generatorOptions = {}; } var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions2 = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; return function createPopper2(reference2, popper2, options) { if (options === void 0) { options = defaultOptions2; } var state = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions2), modifiersData: {}, elements: { reference: reference2, popper: popper2 }, attributes: {}, styles: {} }; var effectCleanupFns = []; var isDestroyed = false; var instance = { state, setOptions: function setOptions(setOptionsAction) { var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; cleanupModifierEffects(); state.options = Object.assign({}, defaultOptions2, state.options, options2); state.scrollParents = { reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], popper: listScrollParents(popper2) }; var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); state.orderedModifiers = orderedModifiers.filter(function(m3) { return m3.enabled; }); runModifierEffects(); return instance.update(); }, // Sync update – it will always be executed, even if not necessary. This // is useful for low frequency updates where sync behavior simplifies the // logic. // For high frequency updates (e.g. `resize` and `scroll` events), always // prefer the async Popper#update method forceUpdate: function forceUpdate() { if (isDestroyed) { return; } var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; if (!areValidElements(reference3, popper3)) { return; } state.rects = { reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), popper: getLayoutRect(popper3) }; state.reset = false; state.placement = state.options.placement; state.orderedModifiers.forEach(function(modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); for (var index = 0; index < state.orderedModifiers.length; index++) { if (state.reset === true) { state.reset = false; index = -1; continue; } var _state$orderedModifie = state.orderedModifiers[index], fn3 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; if (typeof fn3 === "function") { state = fn3({ state, options: _options, name, instance }) || state; } } }, // Async and optimistically optimized update – it will not be executed if // not necessary (debounced to run at most once-per-tick) update: debounce2(function() { return new Promise(function(resolve) { instance.forceUpdate(); resolve(state); }); }), destroy: function destroy() { cleanupModifierEffects(); isDestroyed = true; } }; if (!areValidElements(reference2, popper2)) { return instance; } instance.setOptions(options).then(function(state2) { if (!isDestroyed && options.onFirstUpdate) { options.onFirstUpdate(state2); } }); function runModifierEffects() { state.orderedModifiers.forEach(function(_ref) { var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect7 = _ref.effect; if (typeof effect7 === "function") { var cleanupFn = effect7({ state, name, instance, options: options2 }); var noopFn = function noopFn2() { }; effectCleanupFns.push(cleanupFn || noopFn); } }); } function cleanupModifierEffects() { effectCleanupFns.forEach(function(fn3) { return fn3(); }); effectCleanupFns = []; } return instance; }; } // ../../../node_modules/@popperjs/core/lib/popper.js var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default]; var createPopper = /* @__PURE__ */ popperGenerator({ defaultModifiers }); // ../../../node_modules/tippy.js/dist/tippy.esm.js var ROUND_ARROW = '<svg width="16" height="6" xmlns="http://www.w3.org/2000/svg"><path d="M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z"></svg>'; var BOX_CLASS = "tippy-box"; var CONTENT_CLASS = "tippy-content"; var BACKDROP_CLASS = "tippy-backdrop"; var ARROW_CLASS = "tippy-arrow"; var SVG_ARROW_CLASS = "tippy-svg-arrow"; var TOUCH_OPTIONS = { passive: true, capture: true }; var TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO2() { return document.body; }; function hasOwnProperty2(obj, key) { return {}.hasOwnProperty.call(obj, key); } function getValueAtIndexOrReturn(value, index, defaultValue) { if (Array.isArray(value)) { var v3 = value[index]; return v3 == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v3; } return value; } function isType(value, type) { var str = {}.toString.call(value); return str.indexOf("[object") === 0 && str.indexOf(type + "]") > -1; } function invokeWithArgsOrReturn(value, args) { return typeof value === "function" ? value.apply(void 0, args) : value; } function debounce3(fn3, ms) { if (ms === 0) { return fn3; } var timeout; return function(arg) { clearTimeout(timeout); timeout = setTimeout(function() { fn3(arg); }, ms); }; } function removeProperties(obj, keys) { var clone2 = Object.assign({}, obj); keys.forEach(function(key) { delete clone2[key]; }); return clone2; } function splitBySpaces(value) { return value.split(/\s+/).filter(Boolean); } function normalizeToArray(value) { return [].concat(value); } function pushIfUnique(arr, value) { if (arr.indexOf(value) === -1) { arr.push(value); } } function unique(arr) { return arr.filter(function(item, index) { return arr.indexOf(item) === index; }); } function getBasePlacement2(placement) { return placement.split("-")[0]; } function arrayFrom(value) { return [].slice.call(value); } function removeUndefinedProps(obj) { return Object.keys(obj).reduce(function(acc, key) { if (obj[key] !== void 0) { acc[key] = obj[key]; } return acc; }, {}); } function div() { return document.createElement("div"); } function isElement2(value) { return ["Element", "Fragment"].some(function(type) { return isType(value, type); }); } function isNodeList(value) { return isType(value, "NodeList"); } function isMouseEvent(value) { return isType(value, "MouseEvent"); } function isReferenceElement(value) { return !!(value && value._tippy && value._tippy.reference === value); } function getArrayOfElements(value) { if (isElement2(value)) { return [value]; } if (isNodeList(value)) { return arrayFrom(value); } if (Array.isArray(value)) { return value; } return arrayFrom(document.querySelectorAll(value)); } function setTransitionDuration(els, value) { els.forEach(function(el) { if (el) { el.style.transitionDuration = value + "ms"; } }); } function setVisibilityState(els, state) { els.forEach(function(el) { if (el) { el.setAttribute("data-state", state); } }); } function getOwnerDocument(elementOrElements) { var _element$ownerDocumen; var _normalizeToArray = normalizeToArray(elementOrElements), element = _normalizeToArray[0]; return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document; } function isCursorOutsideInteractiveBorder(popperTreeData, event) { var clientX = event.clientX, clientY = event.clientY; return popperTreeData.every(function(_ref) { var popperRect = _ref.popperRect, popperState = _ref.popperState, props = _ref.props; var interactiveBorder = props.interactiveBorder; var basePlacement = getBasePlacement2(popperState.placement); var offsetData = popperState.modifiersData.offset; if (!offsetData) { return true; } var topDistance = basePlacement === "bottom" ? offsetData.top.y : 0; var bottomDistance = basePlacement === "top" ? offsetData.bottom.y : 0; var leftDistance = basePlacement === "right" ? offsetData.left.x : 0; var rightDistance = basePlacement === "left" ? offsetData.right.x : 0; var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder; var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder; var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder; var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder; return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight; }); } function updateTransitionEndListener(box, action, listener) { var method = action + "EventListener"; ["transitionend", "webkitTransitionEnd"].forEach(function(event) { box[method](event, listener); }); } function actualContains(parent, child) { var target = child; while (target) { var _target$getRootNode; if (parent.contains(target)) { return true; } target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host; } return false; } var currentInput = { isTouch: false }; var lastMouseMoveTime = 0; function onDocumentTouchStart() { if (currentInput.isTouch) { return; } currentInput.isTouch = true; if (window.performance) { document.addEventListener("mousemove", onDocumentMouseMove); } } function onDocumentMouseMove() { var now2 = performance.now(); if (now2 - lastMouseMoveTime < 20) { currentInput.isTouch = false; document.removeEventListener("mousemove", onDocumentMouseMove); } lastMouseMoveTime = now2; } function onWindowBlur() { var activeElement = document.activeElement; if (isReferenceElement(activeElement)) { var instance = activeElement._tippy; if (activeElement.blur && !instance.state.isVisible) { activeElement.blur(); } } } function bindGlobalEventListeners() { document.addEventListener("touchstart", onDocumentTouchStart, TOUCH_OPTIONS); window.addEventListener("blur", onWindowBlur); } var isBrowser = typeof window !== "undefined" && typeof document !== "undefined"; var isIE11 = isBrowser ? ( // @ts-ignore !!window.msCrypto ) : false; function createMemoryLeakWarning(method) { var txt = method === "destroy" ? "n already-" : " "; return [method + "() was called on a" + txt + "destroyed instance. This is a no-op but", "indicates a potential memory leak."].join(" "); } function clean(value) { var spacesAndTabs = /[ \t]{2,}/g; var lineStartWithSpaces = /^[ \t]*/gm; return value.replace(spacesAndTabs, " ").replace(lineStartWithSpaces, "").trim(); } function getDevMessage(message2) { return clean("\n %ctippy.js\n\n %c" + clean(message2) + "\n\n %c\u{1F477}\u200D This is a development-only message. It will be removed in production.\n "); } function getFormattedMessage(message2) { return [ getDevMessage(message2), // title "color: #00C584; font-size: 1.3em; font-weight: bold;", // message "line-height: 1.5", // footer "color: #a6a095;" ]; } var visitedMessages; if (true) { resetVisitedMessages(); } function resetVisitedMessages() { visitedMessages = /* @__PURE__ */ new Set(); } function warnWhen(condition, message2) { if (condition && !visitedMessages.has(message2)) { var _console; visitedMessages.add(message2); (_console = console).warn.apply(_console, getFormattedMessage(message2)); } } function errorWhen(condition, message2) { if (condition && !visitedMessages.has(message2)) { var _console2; visitedMessages.add(message2); (_console2 = console).error.apply(_console2, getFormattedMessage(message2)); } } function validateTargets(targets) { var didPassFalsyValue = !targets; var didPassPlainObject = Object.prototype.toString.call(targets) === "[object Object]" && !targets.addEventListener; errorWhen(didPassFalsyValue, ["tippy() was passed", "`" + String(targets) + "`", "as its targets (first) argument. Valid types are: String, Element,", "Element[], or NodeList."].join(" ")); errorWhen(didPassPlainObject, ["tippy() was passed a plain object which is not supported as an argument", "for virtual positioning. Use props.getReferenceClientRect instead."].join(" ")); } var pluginProps = { animateFill: false, followCursor: false, inlinePositioning: false, sticky: false }; var renderProps = { allowHTML: false, animation: "fade", arrow: true, content: "", inertia: false, maxWidth: 350, role: "tooltip", theme: "", zIndex: 9999 }; var defaultProps = Object.assign({ appendTo: TIPPY_DEFAULT_APPEND_TO, aria: { content: "auto", expanded: "auto" }, delay: 0, duration: [300, 250], getReferenceClientRect: null, hideOnClick: true, ignoreAttributes: false, interactive: false, interactiveBorder: 2, interactiveDebounce: 0, moveTransition: "", offset: [0, 10], onAfterUpdate: function onAfterUpdate() { }, onBeforeUpdate: function onBeforeUpdate() { }, onCreate: function onCreate() { }, onDestroy: function onDestroy() { }, onHidden: function onHidden() { }, onHide: function onHide() { }, onMount: function onMount() { }, onShow: function onShow() { }, onShown: function onShown() { }, onTrigger: function onTrigger() { }, onUntrigger: function onUntrigger() { }, onClickOutside: function onClickOutside() { }, placement: "top", plugins: [], popperOptions: {}, render: null, showOnCreate: false, touch: true, trigger: "mouseenter focus", triggerTarget: null }, pluginProps, renderProps); var defaultKeys = Object.keys(defaultProps); var setDefaultProps = function setDefaultProps2(partialProps) { if (true) { validateProps(partialProps, []); } var keys = Object.keys(partialProps); keys.forEach(function(key) { defaultProps[key] = partialProps[key]; }); }; function getExtendedPassedProps(passedProps) { var plugins = passedProps.plugins || []; var pluginProps2 = plugins.reduce(function(acc, plugin2) { var name = plugin2.name, defaultValue = plugin2.defaultValue; if (name) { var _name; acc[name] = passedProps[name] !== void 0 ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue; } return acc; }, {}); return Object.assign({}, passedProps, pluginProps2); } function getDataAttributeProps(reference2, plugins) { var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, { plugins }))) : defaultKeys; var props = propKeys.reduce(function(acc, key) { var valueAsString = (reference2.getAttribute("data-tippy-" + key) || "").trim(); if (!valueAsString) { return acc; } if (key === "content") { acc[key] = valueAsString; } else { try { acc[key] = JSON.parse(valueAsString); } catch (e3) { acc[key] = valueAsString; } } return acc; }, {}); return props; } function evaluateProps(reference2, props) { var out = Object.assign({}, props, { content: invokeWithArgsOrReturn(props.content, [reference2]) }, props.ignoreAttributes ? {} : getDataAttributeProps(reference2, props.plugins)); out.aria = Object.assign({}, defaultProps.aria, out.aria); out.aria = { expanded: out.aria.expanded === "auto" ? props.interactive : out.aria.expanded, content: out.aria.content === "auto" ? props.interactive ? null : "describedby" : out.aria.content }; return out; } function validateProps(partialProps, plugins) { if (partialProps === void 0) { partialProps = {}; } if (plugins === void 0) { plugins = []; } var keys = Object.keys(partialProps); keys.forEach(function(prop) { var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps)); var didPassUnknownProp = !hasOwnProperty2(nonPluginProps, prop); if (didPassUnknownProp) { didPassUnknownProp = plugins.filter(function(plugin2) { return plugin2.name === prop; }).length === 0; } warnWhen(didPassUnknownProp, ["`" + prop + "`", "is not a valid prop. You may have spelled it incorrectly, or if it's", "a plugin, forgot to pass it in an array as props.plugins.", "\n\n", "All props: https://atomiks.github.io/tippyjs/v6/all-props/\n", "Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" ")); }); } var innerHTML = function innerHTML2() { return "innerHTML"; }; function dangerouslySetInnerHTML(element, html) { element[innerHTML()] = html; } function createArrowElement(value) { var arrow2 = div(); if (value === true) { arrow2.className = ARROW_CLASS; } else { arrow2.className = SVG_ARROW_CLASS; if (isElement2(value)) { arrow2.appendChild(value); } else { dangerouslySetInnerHTML(arrow2, value); } } return arrow2; } function setContent(content2, props) { if (isElement2(props.content)) { dangerouslySetInnerHTML(content2, ""); content2.appendChild(props.content); } else if (typeof props.content !== "function") { if (props.allowHTML) { dangerouslySetInnerHTML(content2, props.content); } else { content2.textContent = props.content; } } } function getChildren(popper2) { var box = popper2.firstElementChild; var boxChildren = arrayFrom(box.children); return { box, content: boxChildren.find(function(node) { return node.classList.contains(CONTENT_CLASS); }), arrow: boxChildren.find(function(node) { return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS); }), backdrop: boxChildren.find(function(node) { return node.classList.contains(BACKDROP_CLASS); }) }; } function render(instance) { var popper2 = div(); var box = div(); box.className = BOX_CLASS; box.setAttribute("data-state", "hidden"); box.setAttribute("tabindex", "-1"); var content2 = div(); content2.className = CONTENT_CLASS; content2.setAttribute("data-state", "hidden"); setContent(content2, instance.props); popper2.appendChild(box); box.appendChild(content2); onUpdate(instance.props, instance.props); function onUpdate(prevProps, nextProps) { var _getChildren = getChildren(popper2), box2 = _getChildren.box, content3 = _getChildren.content, arrow2 = _getChildren.arrow; if (nextProps.theme) { box2.setAttribute("data-theme", nextProps.theme); } else { box2.removeAttribute("data-theme"); } if (typeof nextProps.animation === "string") { box2.setAttribute("data-animation", nextProps.animation); } else { box2.removeAttribute("data-animation"); } if (nextProps.inertia) { box2.setAttribute("data-inertia", ""); } else { box2.removeAttribute("data-inertia"); } box2.style.maxWidth = typeof nextProps.maxWidth === "number" ? nextProps.maxWidth + "px" : nextProps.maxWidth; if (nextProps.role) { box2.setAttribute("role", nextProps.role); } else { box2.removeAttribute("role"); } if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) { setContent(content3, instance.props); } if (nextProps.arrow) { if (!arrow2) { box2.appendChild(createArrowElement(nextProps.arrow)); } else if (prevProps.arrow !== nextProps.arrow) { box2.removeChild(arrow2); box2.appendChild(createArrowElement(nextProps.arrow)); } } else if (arrow2) { box2.removeChild(arrow2); } } return { popper: popper2, onUpdate }; } render.$$tippy = true; var idCounter = 1; var mouseMoveListeners = []; var mountedInstances = []; function createTippy(reference2, passedProps) { var props = evaluateProps(reference2, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); var showTimeout; var hideTimeout; var scheduleHideAnimationFrame; var isVisibleFromClick = false; var didHideDueToDocumentMouseDown = false; var didTouchMove = false; var ignoreOnFirstUpdate = false; var lastTriggerEvent; var currentTransitionEndListener; var onFirstUpdate; var listeners = []; var debouncedOnMouseMove = debounce3(onMouseMove, props.interactiveDebounce); var currentTarget; var id2 = idCounter++; var popperInstance = null; var plugins = unique(props.plugins); var state = { // Is the instance currently enabled? isEnabled: true, // Is the tippy currently showing and not transitioning out? isVisible: false, // Has the instance been destroyed? isDestroyed: false, // Is the tippy currently mounted to the DOM? isMounted: false, // Has the tippy finished transitioning in? isShown: false }; var instance = { // properties id: id2, reference: reference2, popper: div(), popperInstance, props, state, plugins, // methods clearDelayTimeouts, setProps, setContent: setContent2, show, hide: hide2, hideWithInteractivity, enable: enable2, disable: disable2, unmount, destroy }; if (!props.render) { if (true) { errorWhen(true, "render() function has not been supplied."); } return instance; } var _props$render = props.render(instance), popper2 = _props$render.popper, onUpdate = _props$render.onUpdate; popper2.setAttribute("data-tippy-root", ""); popper2.id = "tippy-" + instance.id; instance.popper = popper2; reference2._tippy = instance; popper2._tippy = instance; var pluginsHooks = plugins.map(function(plugin2) { return plugin2.fn(instance); }); var hasAriaExpanded = reference2.hasAttribute("aria-expanded"); addListeners(); handleAriaExpandedAttribute(); handleStyles(); invokeHook("onCreate", [instance]); if (props.showOnCreate) { scheduleShow(); } popper2.addEventListener("mouseenter", function() { if (instance.props.interactive && instance.state.isVisible) { instance.clearDelayTimeouts(); } }); popper2.addEventListener("mouseleave", function() { if (instance.props.interactive && instance.props.trigger.indexOf("mouseenter") >= 0) { getDocument().addEventListener("mousemove", debouncedOnMouseMove); } }); return instance; function getNormalizedTouchSettings() { var touch = instance.props.touch; return Array.isArray(touch) ? touch : [touch, 0]; } function getIsCustomTouchBehavior() { return getNormalizedTouchSettings()[0] === "hold"; } function getIsDefaultRenderFn() { var _instance$props$rende; return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy); } function getCurrentTarget() { return currentTarget || reference2; } function getDocument() { var parent = getCurrentTarget().parentNode; return parent ? getOwnerDocument(parent) : document; } function getDefaultTemplateChildren() { return getChildren(popper2); } function getDelay(isShow) { if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === "focus") { return 0; } return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay); } function handleStyles(fromHide) { if (fromHide === void 0) { fromHide = false; } popper2.style.pointerEvents = instance.props.interactive && !fromHide ? "" : "none"; popper2.style.zIndex = "" + instance.props.zIndex; } function invokeHook(hook, args, shouldInvokePropsHook) { if (shouldInvokePropsHook === void 0) { shouldInvokePropsHook = true; } pluginsHooks.forEach(function(pluginHooks) { if (pluginHooks[hook]) { pluginHooks[hook].apply(pluginHooks, args); } }); if (shouldInvokePropsHook) { var _instance$props; (_instance$props = instance.props)[hook].apply(_instance$props, args); } } function handleAriaContentAttribute() { var aria = instance.props.aria; if (!aria.content) { return; } var attr = "aria-" + aria.content; var id3 = popper2.id; var nodes = normalizeToArray(instance.props.triggerTarget || reference2); nodes.forEach(function(node) { var currentValue = node.getAttribute(attr); if (instance.state.isVisible) { node.setAttribute(attr, currentValue ? currentValue + " " + id3 : id3); } else { var nextValue = currentValue && currentValue.replace(id3, "").trim(); if (nextValue) { node.setAttribute(attr, nextValue); } else { node.removeAttribute(attr); } } }); } function handleAriaExpandedAttribute() { if (hasAriaExpanded || !instance.props.aria.expanded) { return; } var nodes = normalizeToArray(instance.props.triggerTarget || reference2); nodes.forEach(function(node) { if (instance.props.interactive) { node.setAttribute("aria-expanded", instance.state.isVisible && node === getCurrentTarget() ? "true" : "false"); } else { node.removeAttribute("aria-expanded"); } }); } function cleanupInteractiveMouseListeners() { getDocument().removeEventListener("mousemove", debouncedOnMouseMove); mouseMoveListeners = mouseMoveListeners.filter(function(listener) { return listener !== debouncedOnMouseMove; }); } function onDocumentPress(event) { if (currentInput.isTouch) { if (didTouchMove || event.type === "mousedown") { return; } } var actualTarget = event.composedPath && event.composedPath()[0] || event.target; if (instance.props.interactive && actualContains(popper2, actualTarget)) { return; } if (normalizeToArray(instance.props.triggerTarget || reference2).some(function(el) { return actualContains(el, actualTarget); })) { if (currentInput.isTouch) { return; } if (instance.state.isVisible && instance.props.trigger.indexOf("click") >= 0) { return; } } else { invokeHook("onClickOutside", [instance, event]); } if (instance.props.hideOnClick === true) { instance.clearDelayTimeouts(); instance.hide(); didHideDueToDocumentMouseDown = true; setTimeout(function() { didHideDueToDocumentMouseDown = false; }); if (!instance.state.isMounted) { removeDocumentPress(); } } } function onTouchMove() { didTouchMove = true; } function onTouchStart() { didTouchMove = false; } function addDocumentPress() { var doc = getDocument(); doc.addEventListener("mousedown", onDocumentPress, true); doc.addEventListener("touchend", onDocumentPress, TOUCH_OPTIONS); doc.addEventListener("touchstart", onTouchStart, TOUCH_OPTIONS); doc.addEventListener("touchmove", onTouchMove, TOUCH_OPTIONS); } function removeDocumentPress() { var doc = getDocument(); doc.removeEventListener("mousedown", onDocumentPress, true); doc.removeEventListener("touchend", onDocumentPress, TOUCH_OPTIONS); doc.removeEventListener("touchstart", onTouchStart, TOUCH_OPTIONS); doc.removeEventListener("touchmove", onTouchMove, TOUCH_OPTIONS); } function onTransitionedOut(duration, callback) { onTransitionEnd(duration, function() { if (!instance.state.isVisible && popper2.parentNode && popper2.parentNode.contains(popper2)) { callback(); } }); } function onTransitionedIn(duration, callback) { onTransitionEnd(duration, callback); } function onTransitionEnd(duration, callback) { var box = getDefaultTemplateChildren().box; function listener(event) { if (event.target === box) { updateTransitionEndListener(box, "remove", listener); callback(); } } if (duration === 0) { return callback(); } updateTransitionEndListener(box, "remove", currentTransitionEndListener); updateTransitionEndListener(box, "add", listener); currentTransitionEndListener = listener; } function on2(eventType, handler3, options) { if (options === void 0) { options = false; } var nodes = normalizeToArray(instance.props.triggerTarget || reference2); nodes.forEach(function(node) { node.addEventListener(eventType, handler3, options); listeners.push({ node, eventType, handler: handler3, options }); }); } function addListeners() { if (getIsCustomTouchBehavior()) { on2("touchstart", onTrigger2, { passive: true }); on2("touchend", onMouseLeave, { passive: true }); } splitBySpaces(instance.props.trigger).forEach(function(eventType) { if (eventType === "manual") { return; } on2(eventType, onTrigger2); switch (eventType) { case "mouseenter": on2("mouseleave", onMouseLeave); break; case "focus": on2(isIE11 ? "focusout" : "blur", onBlurOrFocusOut); break; case "focusin": on2("focusout", onBlurOrFocusOut); break; } }); } function removeListeners() { listeners.forEach(function(_ref) { var node = _ref.node, eventType = _ref.eventType, handler3 = _ref.handler, options = _ref.options; node.removeEventListener(eventType, handler3, options); }); listeners = []; } function onTrigger2(event) { var _lastTriggerEvent; var shouldScheduleClickHide = false; if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) { return; } var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === "focus"; lastTriggerEvent = event; currentTarget = event.currentTarget; handleAriaExpandedAttribute(); if (!instance.state.isVisible && isMouseEvent(event)) { mouseMoveListeners.forEach(function(listener) { return listener(event); }); } if (event.type === "click" && (instance.props.trigger.indexOf("mouseenter") < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) { shouldScheduleClickHide = true; } else { scheduleShow(event); } if (event.type === "click") { isVisibleFromClick = !shouldScheduleClickHide; } if (shouldScheduleClickHide && !wasFocused) { scheduleHide(event); } } function onMouseMove(event) { var target = event.target; var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper2.contains(target); if (event.type === "mousemove" && isCursorOverReferenceOrPopper) { return; } var popperTreeData = getNestedPopperTree().concat(popper2).map(function(popper3) { var _instance$popperInsta; var instance2 = popper3._tippy; var state2 = (_instance$popperInsta = instance2.popperInstance) == null ? void 0 : _instance$popperInsta.state; if (state2) { return { popperRect: popper3.getBoundingClientRect(), popperState: state2, props }; } return null; }).filter(Boolean); if (isCursorOutsideInteractiveBorder(popperTreeData, event)) { cleanupInteractiveMouseListeners(); scheduleHide(event); } } function onMouseLeave(event) { var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf("click") >= 0 && isVisibleFromClick; if (shouldBail) { return; } if (instance.props.interactive) { instance.hideWithInteractivity(event); return; } scheduleHide(event); } function onBlurOrFocusOut(event) { if (instance.props.trigger.indexOf("focusin") < 0 && event.target !== getCurrentTarget()) { return; } if (instance.props.interactive && event.relatedTarget && popper2.contains(event.relatedTarget)) { return; } scheduleHide(event); } function isEventListenerStopped(event) { return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf("touch") >= 0 : false; } function createPopperInstance() { destroyPopperInstance(); var _instance$props2 = instance.props, popperOptions = _instance$props2.popperOptions, placement = _instance$props2.placement, offset2 = _instance$props2.offset, getReferenceClientRect = _instance$props2.getReferenceClientRect, moveTransition = _instance$props2.moveTransition; var arrow2 = getIsDefaultRenderFn() ? getChildren(popper2).arrow : null; var computedReference = getReferenceClientRect ? { getBoundingClientRect: getReferenceClientRect, contextElement: getReferenceClientRect.contextElement || getCurrentTarget() } : reference2; var tippyModifier = { name: "$$tippy", enabled: true, phase: "beforeWrite", requires: ["computeStyles"], fn: function fn3(_ref2) { var state2 = _ref2.state; if (getIsDefaultRenderFn()) { var _getDefaultTemplateCh = getDefaultTemplateChildren(), box = _getDefaultTemplateCh.box; ["placement", "reference-hidden", "escaped"].forEach(function(attr) { if (attr === "placement") { box.setAttribute("data-placement", state2.placement); } else { if (state2.attributes.popper["data-popper-" + attr]) { box.setAttribute("data-" + attr, ""); } else { box.removeAttribute("data-" + attr); } } }); state2.attributes.popper = {}; } } }; var modifiers = [{ name: "offset", options: { offset: offset2 } }, { name: "preventOverflow", options: { padding: { top: 2, bottom: 2, left: 5, right: 5 } } }, { name: "flip", options: { padding: 5 } }, { name: "computeStyles", options: { adaptive: !moveTransition } }, tippyModifier]; if (getIsDefaultRenderFn() && arrow2) { modifiers.push({ name: "arrow", options: { element: arrow2, padding: 3 } }); } modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []); instance.popperInstance = createPopper(computedReference, popper2, Object.assign({}, popperOptions, { placement, onFirstUpdate, modifiers })); } function destroyPopperInstance() { if (instance.popperInstance) { instance.popperInstance.destroy(); instance.popperInstance = null; } } function mount() { var appendTo = instance.props.appendTo; var parentNode; var node = getCurrentTarget(); if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === "parent") { parentNode = node.parentNode; } else { parentNode = invokeWithArgsOrReturn(appendTo, [node]); } if (!parentNode.contains(popper2)) { parentNode.appendChild(popper2); } instance.state.isMounted = true; createPopperInstance(); if (true) { warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper2, ["Interactive tippy element may not be accessible via keyboard", "navigation because it is not directly after the reference element", "in the DOM source order.", "\n\n", "Using a wrapper <div> or <span> tag around the reference element", "solves this by creating a new parentNode context.", "\n\n", "Specifying `appendTo: document.body` silences this warning, but it", "assumes you are using a focus management solution to handle", "keyboard navigation.", "\n\n", "See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" ")); } } function getNestedPopperTree() { return arrayFrom(popper2.querySelectorAll("[data-tippy-root]")); } function scheduleShow(event) { instance.clearDelayTimeouts(); if (event) { invokeHook("onTrigger", [instance, event]); } addDocumentPress(); var delay3 = getDelay(true); var _getNormalizedTouchSe = getNormalizedTouchSettings(), touchValue = _getNormalizedTouchSe[0], touchDelay = _getNormalizedTouchSe[1]; if (currentInput.isTouch && touchValue === "hold" && touchDelay) { delay3 = touchDelay; } if (delay3) { showTimeout = setTimeout(function() { instance.show(); }, delay3); } else { instance.show(); } } function scheduleHide(event) { instance.clearDelayTimeouts(); invokeHook("onUntrigger", [instance, event]); if (!instance.state.isVisible) { removeDocumentPress(); return; } if (instance.props.trigger.indexOf("mouseenter") >= 0 && instance.props.trigger.indexOf("click") >= 0 && ["mouseleave", "mousemove"].indexOf(event.type) >= 0 && isVisibleFromClick) { return; } var delay3 = getDelay(false); if (delay3) { hideTimeout = setTimeout(function() { if (instance.state.isVisible) { instance.hide(); } }, delay3); } else { scheduleHideAnimationFrame = requestAnimationFrame(function() { instance.hide(); }); } } function enable2() { instance.state.isEnabled = true; } function disable2() { instance.hide(); instance.state.isEnabled = false; } function clearDelayTimeouts() { clearTimeout(showTimeout); clearTimeout(hideTimeout); cancelAnimationFrame(scheduleHideAnimationFrame); } function setProps(partialProps) { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("setProps")); } if (instance.state.isDestroyed) { return; } invokeHook("onBeforeUpdate", [instance, partialProps]); removeListeners(); var prevProps = instance.props; var nextProps = evaluateProps(reference2, Object.assign({}, prevProps, removeUndefinedProps(partialProps), { ignoreAttributes: true })); instance.props = nextProps; addListeners(); if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) { cleanupInteractiveMouseListeners(); debouncedOnMouseMove = debounce3(onMouseMove, nextProps.interactiveDebounce); } if (prevProps.triggerTarget && !nextProps.triggerTarget) { normalizeToArray(prevProps.triggerTarget).forEach(function(node) { node.removeAttribute("aria-expanded"); }); } else if (nextProps.triggerTarget) { reference2.removeAttribute("aria-expanded"); } handleAriaExpandedAttribute(); handleStyles(); if (onUpdate) { onUpdate(prevProps, nextProps); } if (instance.popperInstance) { createPopperInstance(); getNestedPopperTree().forEach(function(nestedPopper) { requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate); }); } invokeHook("onAfterUpdate", [instance, partialProps]); } function setContent2(content2) { instance.setProps({ content: content2 }); } function show() { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("show")); } var isAlreadyVisible = instance.state.isVisible; var isDestroyed = instance.state.isDestroyed; var isDisabled = !instance.state.isEnabled; var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch; var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration); if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) { return; } if (getCurrentTarget().hasAttribute("disabled")) { return; } invokeHook("onShow", [instance], false); if (instance.props.onShow(instance) === false) { return; } instance.state.isVisible = true; if (getIsDefaultRenderFn()) { popper2.style.visibility = "visible"; } handleStyles(); addDocumentPress(); if (!instance.state.isMounted) { popper2.style.transition = "none"; } if (getIsDefaultRenderFn()) { var _getDefaultTemplateCh2 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh2.box, content2 = _getDefaultTemplateCh2.content; setTransitionDuration([box, content2], 0); } onFirstUpdate = function onFirstUpdate2() { var _instance$popperInsta2; if (!instance.state.isVisible || ignoreOnFirstUpdate) { return; } ignoreOnFirstUpdate = true; void popper2.offsetHeight; popper2.style.transition = instance.props.moveTransition; if (getIsDefaultRenderFn() && instance.props.animation) { var _getDefaultTemplateCh3 = getDefaultTemplateChildren(), _box = _getDefaultTemplateCh3.box, _content = _getDefaultTemplateCh3.content; setTransitionDuration([_box, _content], duration); setVisibilityState([_box, _content], "visible"); } handleAriaContentAttribute(); handleAriaExpandedAttribute(); pushIfUnique(mountedInstances, instance); (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate(); invokeHook("onMount", [instance]); if (instance.props.animation && getIsDefaultRenderFn()) { onTransitionedIn(duration, function() { instance.state.isShown = true; invokeHook("onShown", [instance]); }); } }; mount(); } function hide2() { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hide")); } var isAlreadyHidden = !instance.state.isVisible; var isDestroyed = instance.state.isDestroyed; var isDisabled = !instance.state.isEnabled; var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration); if (isAlreadyHidden || isDestroyed || isDisabled) { return; } invokeHook("onHide", [instance], false); if (instance.props.onHide(instance) === false) { return; } instance.state.isVisible = false; instance.state.isShown = false; ignoreOnFirstUpdate = false; isVisibleFromClick = false; if (getIsDefaultRenderFn()) { popper2.style.visibility = "hidden"; } cleanupInteractiveMouseListeners(); removeDocumentPress(); handleStyles(true); if (getIsDefaultRenderFn()) { var _getDefaultTemplateCh4 = getDefaultTemplateChildren(), box = _getDefaultTemplateCh4.box, content2 = _getDefaultTemplateCh4.content; if (instance.props.animation) { setTransitionDuration([box, content2], duration); setVisibilityState([box, content2], "hidden"); } } handleAriaContentAttribute(); handleAriaExpandedAttribute(); if (instance.props.animation) { if (getIsDefaultRenderFn()) { onTransitionedOut(duration, instance.unmount); } } else { instance.unmount(); } } function hideWithInteractivity(event) { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("hideWithInteractivity")); } getDocument().addEventListener("mousemove", debouncedOnMouseMove); pushIfUnique(mouseMoveListeners, debouncedOnMouseMove); debouncedOnMouseMove(event); } function unmount() { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("unmount")); } if (instance.state.isVisible) { instance.hide(); } if (!instance.state.isMounted) { return; } destroyPopperInstance(); getNestedPopperTree().forEach(function(nestedPopper) { nestedPopper._tippy.unmount(); }); if (popper2.parentNode) { popper2.parentNode.removeChild(popper2); } mountedInstances = mountedInstances.filter(function(i3) { return i3 !== instance; }); instance.state.isMounted = false; invokeHook("onHidden", [instance]); } function destroy() { if (true) { warnWhen(instance.state.isDestroyed, createMemoryLeakWarning("destroy")); } if (instance.state.isDestroyed) { return; } instance.clearDelayTimeouts(); instance.unmount(); removeListeners(); delete reference2._tippy; instance.state.isDestroyed = true; invokeHook("onDestroy", [instance]); } } function tippy(targets, optionalProps) { if (optionalProps === void 0) { optionalProps = {}; } var plugins = defaultProps.plugins.concat(optionalProps.plugins || []); if (true) { validateTargets(targets); validateProps(optionalProps, plugins); } bindGlobalEventListeners(); var passedProps = Object.assign({}, optionalProps, { plugins }); var elements = getArrayOfElements(targets); if (true) { var isSingleContentElement = isElement2(passedProps.content); var isMoreThanOneReferenceElement = elements.length > 1; warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ["tippy() was passed an Element as the `content` prop, but more than", "one tippy instance was created by this invocation. This means the", "content element will only be appended to the last tippy instance.", "\n\n", "Instead, pass the .innerHTML of the element, or use a function that", "returns a cloned version of the element instead.", "\n\n", "1) content: element.innerHTML\n", "2) content: () => element.cloneNode(true)"].join(" ")); } var instances = elements.reduce(function(acc, reference2) { var instance = reference2 && createTippy(reference2, passedProps); if (instance) { acc.push(instance); } return acc; }, []); return isElement2(targets) ? instances[0] : instances; } tippy.defaultProps = defaultProps; tippy.setDefaultProps = setDefaultProps; tippy.currentInput = currentInput; var applyStylesModifier = Object.assign({}, applyStyles_default, { effect: function effect6(_ref) { var state = _ref.state; var initialStyles = { popper: { position: state.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; Object.assign(state.elements.popper.style, initialStyles.popper); state.styles = initialStyles; if (state.elements.arrow) { Object.assign(state.elements.arrow.style, initialStyles.arrow); } } }); var createSingleton = function createSingleton2(tippyInstances, optionalProps) { var _optionalProps$popper; if (optionalProps === void 0) { optionalProps = {}; } if (true) { errorWhen(!Array.isArray(tippyInstances), ["The first argument passed to createSingleton() must be an array of", "tippy instances. The passed value was", String(tippyInstances)].join(" ")); } var individualInstances = tippyInstances; var references = []; var triggerTargets = []; var currentTarget; var overrides = optionalProps.overrides; var interceptSetPropsCleanups = []; var shownOnCreate = false; function setTriggerTargets() { triggerTargets = individualInstances.map(function(instance) { return normalizeToArray(instance.props.triggerTarget || instance.reference); }).reduce(function(acc, item) { return acc.concat(item); }, []); } function setReferences() { references = individualInstances.map(function(instance) { return instance.reference; }); } function enableInstances(isEnabled) { individualInstances.forEach(function(instance) { if (isEnabled) { instance.enable(); } else { instance.disable(); } }); } function interceptSetProps(singleton2) { return individualInstances.map(function(instance) { var originalSetProps2 = instance.setProps; instance.setProps = function(props) { originalSetProps2(props); if (instance.reference === currentTarget) { singleton2.setProps(props); } }; return function() { instance.setProps = originalSetProps2; }; }); } function prepareInstance(singleton2, target) { var index = triggerTargets.indexOf(target); if (target === currentTarget) { return; } currentTarget = target; var overrideProps = (overrides || []).concat("content").reduce(function(acc, prop) { acc[prop] = individualInstances[index].props[prop]; return acc; }, {}); singleton2.setProps(Object.assign({}, overrideProps, { getReferenceClientRect: typeof overrideProps.getReferenceClientRect === "function" ? overrideProps.getReferenceClientRect : function() { var _references$index; return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect(); } })); } enableInstances(false); setReferences(); setTriggerTargets(); var plugin2 = { fn: function fn3() { return { onDestroy: function onDestroy2() { enableInstances(true); }, onHidden: function onHidden2() { currentTarget = null; }, onClickOutside: function onClickOutside2(instance) { if (instance.props.showOnCreate && !shownOnCreate) { shownOnCreate = true; currentTarget = null; } }, onShow: function onShow2(instance) { if (instance.props.showOnCreate && !shownOnCreate) { shownOnCreate = true; prepareInstance(instance, references[0]); } }, onTrigger: function onTrigger2(instance, event) { prepareInstance(instance, event.currentTarget); } }; } }; var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ["overrides"]), { plugins: [plugin2].concat(optionalProps.plugins || []), triggerTarget: triggerTargets, popperOptions: Object.assign({}, optionalProps.popperOptions, { modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier]) }) })); var originalShow = singleton.show; singleton.show = function(target) { originalShow(); if (!currentTarget && target == null) { return prepareInstance(singleton, references[0]); } if (currentTarget && target == null) { return; } if (typeof target === "number") { return references[target] && prepareInstance(singleton, references[target]); } if (individualInstances.indexOf(target) >= 0) { var ref = target.reference; return prepareInstance(singleton, ref); } if (references.indexOf(target) >= 0) { return prepareInstance(singleton, target); } }; singleton.showNext = function() { var first = references[0]; if (!currentTarget) { return singleton.show(0); } var index = references.indexOf(currentTarget); singleton.show(references[index + 1] || first); }; singleton.showPrevious = function() { var last = references[references.length - 1]; if (!currentTarget) { return singleton.show(last); } var index = references.indexOf(currentTarget); var target = references[index - 1] || last; singleton.show(target); }; var originalSetProps = singleton.setProps; singleton.setProps = function(props) { overrides = props.overrides || overrides; originalSetProps(props); }; singleton.setInstances = function(nextInstances) { enableInstances(true); interceptSetPropsCleanups.forEach(function(fn3) { return fn3(); }); individualInstances = nextInstances; enableInstances(false); setReferences(); setTriggerTargets(); interceptSetPropsCleanups = interceptSetProps(singleton); singleton.setProps({ triggerTarget: triggerTargets }); }; interceptSetPropsCleanups = interceptSetProps(singleton); return singleton; }; var mouseCoords = { clientX: 0, clientY: 0 }; var activeInstances = []; function storeMouseCoords(_ref) { var clientX = _ref.clientX, clientY = _ref.clientY; mouseCoords = { clientX, clientY }; } function addMouseCoordsListener(doc) { doc.addEventListener("mousemove", storeMouseCoords); } function removeMouseCoordsListener(doc) { doc.removeEventListener("mousemove", storeMouseCoords); } var followCursor = { name: "followCursor", defaultValue: false, fn: function fn2(instance) { var reference2 = instance.reference; var doc = getOwnerDocument(instance.props.triggerTarget || reference2); var isInternalUpdate = false; var wasFocusEvent = false; var isUnmounted = true; var prevProps = instance.props; function getIsInitialBehavior() { return instance.props.followCursor === "initial" && instance.state.isVisible; } function addListener() { doc.addEventListener("mousemove", onMouseMove); } function removeListener() { doc.removeEventListener("mousemove", onMouseMove); } function unsetGetReferenceClientRect() { isInternalUpdate = true; instance.setProps({ getReferenceClientRect: null }); isInternalUpdate = false; } function onMouseMove(event) { var isCursorOverReference = event.target ? reference2.contains(event.target) : true; var followCursor2 = instance.props.followCursor; var clientX = event.clientX, clientY = event.clientY; var rect = reference2.getBoundingClientRect(); var relativeX = clientX - rect.left; var relativeY = clientY - rect.top; if (isCursorOverReference || !instance.props.interactive) { instance.setProps({ // @ts-ignore - unneeded DOMRect properties getReferenceClientRect: function getReferenceClientRect() { var rect2 = reference2.getBoundingClientRect(); var x3 = clientX; var y3 = clientY; if (followCursor2 === "initial") { x3 = rect2.left + relativeX; y3 = rect2.top + relativeY; } var top2 = followCursor2 === "horizontal" ? rect2.top : y3; var right2 = followCursor2 === "vertical" ? rect2.right : x3; var bottom2 = followCursor2 === "horizontal" ? rect2.bottom : y3; var left2 = followCursor2 === "vertical" ? rect2.left : x3; return { width: right2 - left2, height: bottom2 - top2, top: top2, right: right2, bottom: bottom2, left: left2 }; } }); } } function create() { if (instance.props.followCursor) { activeInstances.push({ instance, doc }); addMouseCoordsListener(doc); } } function destroy() { activeInstances = activeInstances.filter(function(data2) { return data2.instance !== instance; }); if (activeInstances.filter(function(data2) { return data2.doc === doc; }).length === 0) { removeMouseCoordsListener(doc); } } return { onCreate: create, onDestroy: destroy, onBeforeUpdate: function onBeforeUpdate2() { prevProps = instance.props; }, onAfterUpdate: function onAfterUpdate2(_3, _ref2) { var followCursor2 = _ref2.followCursor; if (isInternalUpdate) { return; } if (followCursor2 !== void 0 && prevProps.followCursor !== followCursor2) { destroy(); if (followCursor2) { create(); if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) { addListener(); } } else { removeListener(); unsetGetReferenceClientRect(); } } }, onMount: function onMount2() { if (instance.props.followCursor && !wasFocusEvent) { if (isUnmounted) { onMouseMove(mouseCoords); isUnmounted = false; } if (!getIsInitialBehavior()) { addListener(); } } }, onTrigger: function onTrigger2(_3, event) { if (isMouseEvent(event)) { mouseCoords = { clientX: event.clientX, clientY: event.clientY }; } wasFocusEvent = event.type === "focus"; }, onHidden: function onHidden2() { if (instance.props.followCursor) { unsetGetReferenceClientRect(); removeListener(); isUnmounted = true; } } }; } }; tippy.setDefaultProps({ render }); var tippy_esm_default = tippy; // libs/tippy/plugins/hide_on_esc.js var hide_on_esc_default = hideOnEsc = { name: "hideOnEsc", defaultValue: true, fn({ hide: hide2 }) { function onKeyDown(event) { if (event.keyCode === 27) { hide2(); } } return { onShow() { document.addEventListener("keydown", onKeyDown); }, onHide() { document.removeEventListener("keydown", onKeyDown); } }; } }; // libs/tippy/index.js tippy_esm_default.setDefaultProps({ theme: null, allowHTML: true, arrow: ROUND_ARROW + ROUND_ARROW, plugins: [hide_on_esc_default, followCursor] }); var tippy_default = tippy_esm_default; // libs/alpine/utils/tippy_modifiers.js function tippyModifiers(modifiers) { if (modifiers.length === 0) return {}; const config = { plugins: [] }; const getModifierArgument = (modifier) => { return modifiers[modifiers.indexOf(modifier) + 1]; }; if (modifiers.includes("duration")) { config.duration = parseInt(getModifierArgument("duration")); } if (modifiers.includes("delay")) { const delay3 = getModifierArgument("delay"); config.delay = delay3.includes("-") ? delay3.split("-").map((n3) => parseInt(n3)) : parseInt(delay3); } if (modifiers.includes("debounce") && config.interactive) { config.interactiveDebounce = parseInt(getModifierArgument("debounce")); } if (modifiers.includes("theme")) { config.theme = getModifierArgument("theme"); } if (modifiers.includes("placement")) { config.placement = getModifierArgument("placement"); } return config; } // libs/alpine/plugins/tooltip.js function tooltip_default(Alpine3) { Alpine3.directive( "tooltip", (el, { modifiers, expression }, { evaluate: evaluate2, evaluateLater: evaluateLater2, effect: effect7 }) => { const config = tippyModifiers(modifiers); if (!el.__x_tippy) { el.__x_tippy = tippy_default(el, __spreadValues({ theme: "coco-tooltip" }, config)); } let initialContent = null; const enableTooltip = () => el.__x_tippy.enable(); const disableTooltip = () => el.__x_tippy.disable(); const setupTooltip = (content2) => { if (!content2) { disableTooltip(); } else { enableTooltip(); el.__x_tippy.setContent(content2); initialContent = initialContent || content2; } }; if (modifiers.includes("raw")) { setupTooltip(expression); } else { const getContent = evaluateLater2(expression); effect7(() => { getContent((content2) => { if (typeof content2 === "object" && content2 !== null) { el.__x_tippy.setProps(content2); initialContent = initialContent || content2.content; enableTooltip(); } else { setupTooltip(content2); } }); }); } setData(el, { tooltip: { setContent(content2) { setupTooltip(content2); }, disable: () => disableTooltip(), enable: () => enableTooltip(), reset() { if (initialContent) setupTooltip(initialContent); } } }); } ).before("bind"); } // libs/alpine/plugins/dropdown.js function dropdown_default(Alpine3) { Alpine3.directive( "dropdown", (el, { value, modifiers, expression }, { evaluate: evaluate2, effect: effect7 }) => { if (value) return; const data2 = getData(el); const settings = tippyModifiers(modifiers); const result = expression ? evaluate2(expression) : {}; const directiveConfig = isObject2(result) ? result : {}; let _a = directiveConfig, { triggerTarget, contentTarget } = _a, config = __objRest(_a, ["triggerTarget", "contentTarget"]); contentTarget = contentTarget || el.querySelector("[x-dropdown\\:content]"); content = isNode(contentTarget) ? contentTarget.firstElementChild : contentTarget; triggerTarget = triggerTarget || el.querySelector("[x-dropdown\\:trigger]") || el; if (!el.__x_dropdown) { const mixin = Alpine3.reactive({ dropdown: { open: false, trigger: triggerTarget, content: contentTarget, hide() { el.__x_dropdown.hide(); }, show() { el.__x_dropdown.show(); } } }); setData(el, mixin); const dropdown = el.__x_dropdown = tippy_default(el, __spreadValues(__spreadValues({ theme: "coco-app-dropdown", placement: "bottom-start", offset: [0, 0], trigger: "click", interactive: true, animation: false, triggerTarget, content, onShow: (...args) => { mixin.dropdown.open = true; data2.$dispatch("dropdown:show", { dropdown: el.__x_dropdown }); }, onHide: (...args) => { mixin.dropdown.open = false; data2.$dispatch("dropdown:hide", { dropdown: el.__x_dropdown }); }, onMount() { data2.$dispatch("dropdown:mount", { dropdown: el.__x_dropdown }); }, onCreate() { data2.$dispatch("dropdown:create", { dropdown: el.__x_dropdown }); } }, settings), config)); } } ).before("bind"); } // libs/alpine/plugins/destroy.js function destroy_default(Alpine3) { Alpine3.directive( "destroy", (el, { expression }, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { const clean2 = evaluateLater2(expression); cleanup2(() => clean2()); } ); } // libs/alpine/plugins/dimensions.js function dimensions_default(Alpine3) { Alpine3.directive( "dimensions", (el, { value, modifiers, expression }, { evaluateLater: evaluateLater2, cleanup: cleanup2 }) => { if (value) return; const data2 = getData(el); let target; if (modifiers.includes("parent")) { target = el.parentNode; } else { target = el.querySelector("[x-dimensions\\:target]") || el; } const evaluate2 = evaluateLater2(expression); const sizeObserver = new ResizeObserver((entries) => { const dimensions = entries[0].contentRect; evaluate2(() => { }, { scope: { dimensions: { width: dimensions.width, height: dimensions.height, x: dimensions.x, y: dimensions.y } } }); }); sizeObserver.observe(target); cleanup2(() => { sizeObserver && sizeObserver.disconnect(); }); } ); } // libs/alpine/plugins/notification.js function notification_default(Alpine3) { let notificationId = 0; let queuePosition = 0; Alpine3.directive("notification", (el, { expression }, { evaluate: evaluate2 }) => { notificationId++; const data2 = getData(el); const type = evaluate2(expression); const options = evaluate2("$options"); const notification = Alpine3.reactive({ id: notificationId, type, autoShow: options.show, showDelay: options.showDelay, shown: false, autoDismiss: options.dismiss, dismissDelay: options.dismissDelay, dismissed: false, dismissTimer: null, position: options.position, queuePosition: 0, init() { data2.$dispatch(`${type}:init`, { id: notification.id, type: notification.type, [type]: notification }); if (notification.autoShow) { setTimeout(() => notification.show(), notification.showDelay); } }, show() { if (!notification.shown) { notification.queuePosition = queuePosition++; notification.startAutoDismiss(); notification.shown = true; data2.$dispatch(`${type}:show`, { id: notification.id, queuePosition: notification.queuePosition, type: notification.type, [type]: notification }); } }, dismiss() { notification.dismissed = true; notification.clearAutoDismiss(); data2.$dispatch(`${type}:dismiss`, { id: notification.id, [type]: notification }); setTimeout(() => el.remove(), 500); }, startAutoDismiss() { if (notification.autoDismiss === true) { notification.dismissTimer = setTimeout( () => notification.dismiss(), notification.dismissDelay ); } }, clearAutoDismiss() { clearTimeout(notification.dismissTimer); }, clearFromQueue(event) { if (notification.type === event.detail.type && notification.position === "fixed" && notification.id !== event.detail.id && notification.queuePosition < event.detail.queuePosition) { notification.dismiss(); } } }); setData(el, { notification }); evaluate2("notification.init"); }).before("init"); } // libs/alpine/index.js module_default.plugin(module_default2); module_default.plugin(module_default5); module_default.plugin(module_default3); module_default.plugin(module_default4); module_default.plugin(module_default6); module_default.plugin(M2); module_default.plugin(options_default); module_default.plugin(tooltip_default); module_default.plugin(dropdown_default); module_default.plugin(destroy_default); module_default.plugin(dimensions_default); module_default.plugin(notification_default); window.Alpine = module_default; var alpine_default2 = module_default; // ../../components/coco/base/button/button.js var button_exports = {}; __export(button_exports, { default: () => button_default }); // base/mixins/attrs.js function withAttrs(props = {}) { return function(component) { return Object.assign( component, Alpine.reactive({ getAttr(name) { return this.$root.getAttribute(name); }, setAttr(name, value) { this.$root.setAttribute(name, value); return this; }, hasAttr(name) { return this.$root.hasAttribute(name); }, removeAttr(name) { component.$root.removeAttribute(name); return this; }, assertAttr(name, testValue) { return this.$root.getAttribute(name) === String(testValue); }, refuteAttr(name, testValue) { return !this.assertAttr(name, testValue); }, getData(name) { return this.getAttr(`data-${name}`); }, setData(name, value) { return this.setAttr(`data-${name}`, value); }, hasData(name) { return this.hasAttr(`data-${name}`); }, removeData(name) { return this.removeAttr(`data-${name}`); }, assertData(name, testValue) { return this.assertAttr(`data-${name}`, testValue); }, refuteData(name, testValue) { return !this.assertData(name, testValue); } }) ); }; } // base/mixins/options.js var import_lodash2 = __toESM(require_lodash(), 1); function withOptions(props = {}) { return function(component) { if (!component.options) { return component; } const el = component.$root; const oldDestroy = component.destroy; const optionsProps = component.options || {}; const optionsAttrs = Object.keys(optionsProps).map( (name) => `data-${(0, import_lodash2.kebabCase)(name)}` ); Object.keys(optionsProps).forEach((name) => { const attrName = `data-${(0, import_lodash2.kebabCase)(name)}`; if (el.hasAttribute(attrName)) { component.options[name] = el.getAttribute(attrName); } }); let attrObserver = new MutationObserver((mutationsList) => { for (const mutation of mutationsList) { if (mutation.type !== "attributes" || !optionsAttrs.includes(mutation.attributeName)) { return; } const propName = (0, import_lodash2.camelCase)(mutation.attributeName.replace("data-", "")); let value = mutation.target.getAttribute(mutation.attributeName); switch (value) { case "true": value = true; break; case "false": value = false; break; } component.options[propName] = value; } }); Object.assign( component, Alpine.reactive({ destroy() { attrObserver.disconnect(); attrObserver = null; if (oldDestroy) { oldDestroy.call(this); } } }) ); attrObserver.observe(el, { attributes: true }); component.$watch("options", (options, oldOptions) => { for (const [key, value] of Object.entries(options)) { el.setAttribute(`data-${(0, import_lodash2.kebabCase)(key)}`, value); if (component.onOptionChange) { component.onOptionChange(key, value); } } }); return component; }; } // base/mixins/size-observer.js function withSizeObserver(props = {}) { return function(component) { const resizeTarget = props.target || component.$root; const oldDestroy = component.destroy; const sizeObserver = Alpine.reactive({ observer: null, handler(target) { if (component.onResize) { component.onResize(target.contentRect, target); } } }); sizeObserver.observer = new ResizeObserver( (entries) => sizeObserver.handler(entries[0]) ); Object.assign(component, { destroy() { sizeObserver.observer.disconnect(); sizeObserver.observer = null; if (oldDestroy) { oldDestroy.call(this); } } }); sizeObserver.observer.observe(resizeTarget); return component; }; } // base/mixins/undo.js function withUndo(props = {}) { function withUndoMixin(component) { const maxHistorySize = props.maxEntries || 100; const history2 = Alpine.reactive({ stack: [], stackPos: -1, adding: false, clear() { history2.stack.length = 0; history2.stackPos = -1; }, add(name, newValue, oldValue) { if (!history2.adding && newValue !== oldValue) { if (history2.stackPos < history2.stackSize - 1) { const stack = Alpine.raw(history2.stack); history2.stack = stack.slice(0, history2.stackPos + 1); } history2.stack.push({ name, newValue, oldValue }); if (history2.stackSize > maxHistorySize) { history2.stack.pop(); } else { history2.stackPos++; } } }, undo() { if (!component.undo) { console.error("Missing `undo` method"); return; } if (history2.undoable) { history2.adding = true; const entry = history2.stack[history2.stackPos]; component.undo(entry.name, entry.oldValue); history2.stackPos--; this.$nextTick(() => history2.adding = false); } }, redo() { if (!component.redo) { console.error("Missing `redo` method"); return; } if (history2.redoable) { history2.adding = true; history2.stackPos++; const entry = history2.stack[history2.stackPos]; component.redo(entry.name, entry.newValue); this.$nextTick(() => history2.adding = false); } }, get undoable() { return history2.stackPos >= 0; }, get redoable() { return history2.stackPos < history2.stackSize - 1; }, get stackSize() { return history2.stack.length; }, get stackMemoryUsage() { return roughSizeOfObject(history2.stack); } }); return Object.assign(component, { history: history2 }); } withUndoMixin.props = ["history"]; return withUndoMixin; } // coco.js function CocoComponent(name, fn3) { const func = nameFunction(name, (...args) => { const data2 = fn3(...args); Object.defineProperties(data2, { $parent: { get() { return getData(this.$root.parentElement); } } }); data2.$options = {}; if (data2.use === false) return data2; const originalInit = data2.init; const mixins = [withAttrs(), withOptions(), ...data2.use || []]; mixins.forEach((mixin) => { if (mixin.props) { mixin.props.forEach((prop) => { if (!data2[prop]) { data2[prop] = null; } }); } }); return Object.assign(data2, { init() { mixins.forEach((mixin) => mixin(this)); if (originalInit) { originalInit.call(this); } } }); }); func.component = true; return func; } // ../../components/coco/base/button/button.js var import_lodash3 = __toESM(require_lodash(), 1); var button_default = CocoComponent("button", (data2 = {}) => { return __spreadProps(__spreadValues({ use: false, options: ["state", "confirm", "size", "disabled", "collapsible"], isCollapsed: false, approving: false, confirmed: true, lastState: null, stateTooltips: data2.tooltips || {}, tooltipText: null }, data2.props || {}), { init() { this.lastState = this.state; this.$nextTick(() => { if (this.$options.confirm) { this.confirmed = false; } }); this.$watch("collapsed", (collapsed) => { if (collapsed && !this.collapsible) { this.collapsed = false; return; } this.$root.setAttribute("data-collapsed", collapsed ? "true" : "false"); }); }, setTooltipText() { if (this.disabled) { this.tooltipText = null; return; } const defaultContent = this.$el.getAttribute("data-tippy-content"); const tooltipForState = this.stateTooltips[this.state]; if (this.collapsed) { const labelText = this.getContentForState(this.state); this.tooltipText = tooltipForState || labelText || defaultContent; } else { this.tooltipText = tooltipForState || defaultContent; } }, showTooltip() { return !!this.tooltipText; }, get disabled() { return this.$options.disabled === true; }, set disabled(value) { this.$options.disabled = value; }, /* confirmation */ checkConfirmation(event) { if (!this.confirmed) { this.approving = true; event.preventDefault(); } }, approveAndRun(event) { if (this.approving) { event.stopPropagation(); this.confirmed = true; this.dropdown.trigger.click(); this.dropdown.hide(); this.confirmed = false; this.approving = false; } }, cancelConfirmation(event) { if (this.approving) { event.stopPropagation(); this.approving = false; this.dropdown.hide(); } }, /* state */ get state() { return this.$options.state || "default"; }, set state(name) { this.setState(name); }, get loading() { return this.state === "loading"; }, set loading(value) { this.$options.state = value === true ? "loading" : "default"; }, setState(name) { this.lastState = this.state; this.$options.state = (0, import_lodash3.camelCase)(name); }, resetState() { this.$options.state = this.lastState || "default"; this.lastState = this.$options.state; }, toggleState(state1, state2 = this.laststate) { this.state = this.state === state1 ? state2 : state1; }, getContentForState(state) { const content2 = this.$refs[`${state}Content`]; return content2 ? content2.innerText : null; }, hasIconForState(state) { return !!this.$refs[`${state}Icon`]; }, hasContentForState(state) { return !!this.getContentForState(state); }, showIcon(state) { return state === this.state || !this.hasIconForState(this.state) && state === "default"; }, showContent(state) { return state === this.state || !this.hasContentForState(this.state) && state === "default"; }, /* collapsing */ get collapsed() { return this.isCollapsed; }, set collapsed(value) { this.isCollapsed = this.collapsible ? value : false; }, get collapsible() { return this.$options.collapsible !== false && this.hasIconForState(this.$options.state || "default"); }, /* bindings */ root: { "x-options": "options", "x-tooltip": "tooltipText", "x-effect": "setTooltipText", "@confirmation:confirm": "approveAndRun", "@confirmation:cancel": "cancelConfirmation", "@dropdown:show": "setState('active')", "@dropdown:hide": "resetState()" } }); }); // ../../components/coco/base/dropdown/dropdown.js var dropdown_exports = {}; __export(dropdown_exports, { default: () => dropdown_default2 }); var dropdown_default2 = CocoComponent("dropdown", () => { return { use: false }; }); // ../../components/coco/base/icon/icon.js var icon_exports = {}; __export(icon_exports, { default: () => icon_default }); var icon_default = CocoComponent("icon", () => { return { options: ["style", "spin"], get spin() { return this.$options.spin; }, set spin(val) { this.$options.spin = val; }, get fill() { return this.$options.style === "fill"; }, set fill(val) { this.$options.style = val === true ? "fill" : "line"; }, root: { "x-options": "options" } }; }); // ../../components/coco/base/image_uploader/image_uploader.js var image_uploader_exports = {}; __export(image_uploader_exports, { default: () => image_uploader_default }); var image_uploader_default = CocoComponent("imageUploader", ({ click, drop }) => { return { file: null, errors: [], active: false, clickable: click, droppable: drop, input: null, get fileName() { return this.file && this.file.name; }, get fileType() { return this.file && this.file.type; }, get fileSize() { return this.file && this.file.size; }, get fileData() { return this.file && this.file.data; }, init() { this.input = this.$refs.input; this.$watch("file", (file) => { const dataTransfer = new DataTransfer(); if (file && file.file instanceof File) { dataTransfer.items.add(file.file); } this.input.files = dataTransfer.files; }); }, setFile(file) { this.file = file; }, openPicker() { this.input.click(); }, clear() { this.file = null; this.$dispatch("image-uploader:clear"); }, handleDrop(event) { const files = event.detail.files || event.dataTransfer.files; this.handleFiles(files); }, handleFiles(files) { Array.from(files).forEach((file) => this.readFile(file)); }, readFile(file) { const reader = new FileReader(); reader.addEventListener("load", () => { this.file = { name: file.name, size: file.size, type: file.type, file, data: reader.result }; this.$dispatch("image-uploader:load", { file: this.file }); }); reader.addEventListener("error", () => { this.errors.push(`Error reading file: ${file.name}`); }); reader.readAsDataURL(file); } }; }); // import-glob:/home/runner/work/coco/coco/app/assets/js/base|@baseComponents/**/*.js var modules = [button_exports, dropdown_exports, icon_exports, image_uploader_exports]; var __default = modules; // base/components.js var components_default = registerComponents(__default); // import-glob:/home/runner/work/coco/coco/app/assets/js/book|@bookComponents/**/*.js var modules2 = []; var __default2 = modules2; // book/components.js var components_default2 = registerComponents(__default2); // ../../components/coco/app/blocks/nav_bar/nav_bar.js var nav_bar_exports = {}; __export(nav_bar_exports, { default: () => nav_bar_default }); var import_tokens = __toESM(require_tokens(), 1); var nav_bar_default = CocoComponent("appNavBar", () => { const mobileMaxWidth = parseInt(import_tokens.default.app.screens.md, 10); return { mobile: true, init() { const sizeObserver = new ResizeObserver( Alpine.throttle((entries) => { this.$nextTick(() => { const navWidth = entries[0].contentRect.width; const linksWidth = this.$refs.links.offsetWidth; const primaryWidth = getHiddenElementDimensions(this.$refs.primaryLinks, "flex").width; const secondaryWidth = getHiddenElementDimensions( this.$refs.secondaryLinks, "flex" ).width; const difference = linksWidth - primaryWidth - secondaryWidth; this.mobile = navWidth < mobileMaxWidth || this.mobudifference <= 50; }); }, 20) ); sizeObserver.observe(this.$root); } }; }); // ../../components/coco/app/blocks/nav_drawer/nav_drawer.js var nav_drawer_exports = {}; __export(nav_drawer_exports, { default: () => nav_drawer_default }); var nav_drawer_default = CocoComponent("appNavDrawer", () => { return { open: false }; }); // ../../components/coco/app/blocks/slide_editor/slide_editor.js var slide_editor_exports = {}; __export(slide_editor_exports, { default: () => slide_editor_default }); // helpers/screenshot.js var import_html2canvas = __toESM(require_html2canvas(), 1); // helpers/path.js function stripExtension(filename) { return filename.substring(0, filename.lastIndexOf(".")) || filename; } function basename(path) { return path ? path.replace(/.*\//, "") : path; } // helpers/file.js function blobToFile(blob, fileName, type) { return new File([blob], fileName, { type }); } // helpers/screenshot.js var screenshotDefaultOptions = { useCORS: true, logging: false }; function generateScreenshotFilename(name = null, ext = null) { name = [stripExtension(name || "screenshot"), (/* @__PURE__ */ new Date()).getTime()].join("-"); return ext ? `${name}.${ext}` : name; } async function captureElementScreenshot(el, filename, opts = {}) { if (isObject2(filename)) { filename = null; opts = filename; } const screenshotFilename = generateScreenshotFilename(filename, "jpg"); const screenshotOptions = __spreadValues(__spreadValues({}, screenshotDefaultOptions), opts); const canvas = await (0, import_html2canvas.default)(el, screenshotOptions); const imageBlob = await new Promise((resolve, reject) => { canvas.toBlob((result) => { return result ? resolve(result) : reject(new Error("Screenshot could not be created")); }); }); return blobToFile(imageBlob, screenshotFilename, "image/jpg"); } // helpers/color.js function isDark(color) { let r3; let g3; let b3; let hsp; color = +`0x${color.slice(1).replace(color.length < 5 && /./g, "$&$&")}`; r3 = color >> 16; g3 = color >> 8 & 255; b3 = color & 255; hsp = Math.sqrt(0.299 * (r3 * r3) + 0.587 * (g3 * g3) + 0.114 * (b3 * b3)); if (hsp > 127.5) { return false; } return true; } function isValidHex(color) { if (!color || typeof color !== "string") return false; if (color.substring(0, 1) === "#") color = color.substring(1); switch (color.length) { case 3: return /^[0-9A-F]{3}$/i.test(color); case 6: return /^[0-9A-F]{6}$/i.test(color); case 8: return /^[0-9A-F]{8}$/i.test(color); default: return false; } } function formatHex(str) { return `#${str.toUpperCase().replace("#", "")}`; } // helpers/turbo_events.js function wasSuccessful(event) { return getEventDetail(event).success; } function getEventDetail(obj) { return obj instanceof CustomEvent ? obj.detail : obj; } // ../../components/coco/app/blocks/slide_editor/slide_editor.js var slide_editor_default = CocoComponent("appSlideEditor", (data2) => { const initialData = { layout: data2.layout, title: data2.title, text1: data2.text1, bgColor: data2.bgColor, textColor: data2.textColor, bgImage: { name: data2.bgImage, data: data2.bgImage } }; return __spreadProps(__spreadValues({ use: [withUndo()] }, initialData), { saved: __spreadValues({}, initialData), saving: false, ready: false, dragging: false, errors: [], thumbnailFile: null, get bgImagePicker() { return getData(this.$root.querySelector("[data-role='bg-image-picker']")); }, init() { this.$watch("errors", (errors) => { errors.forEach((error2) => console.error(error2.message)); }); this.$nextTick(() => { this._fields.forEach((name) => { this.$watch( name, (value, oldValue) => this.history.add(name, value, oldValue) ); }); this.ready = true; }); }, undo(name, value) { this[name] = value; this.$nextTick(() => this.updateTextareaSizes()); }, redo(name, value) { this[name] = value; this.$nextTick(() => this.updateTextareaSizes()); }, updateTextareaSizes() { const inputs = this.$root.querySelectorAll( "[data-component='app-seamless-textarea']" ); Array.from(inputs).forEach((el) => getData(el).onResize()); }, handleImageDrop(event) { this.dragging = false; if (this.bgImagePicker) { this.bgImagePicker.handleExternalDrop(event); } else { event.preventDefault(); } }, async save() { this.clearErrors(); this.saving = true; if (this.$refs.thumbnail) { try { await this._generateThumbnail(); } catch (error2) { this.thumbnailFile = null; message = error2.message || "Error generating slide thumbnail"; this.handleSaveError(message, { error: error2 }); return; } } const form = this.$refs.form && this.$refs.form.querySelector("form"); if (form && form.dataset.submit !== "false") { const submitButton = form.querySelector("[type='submit']"); if (submitButton) { submitButton.click(); } else { this.handleSaveError("Slide form is missing a submit button"); } } else { this.submitSuccess(); } }, submitEnd($event) { this[wasSuccessful($event) ? "submitSuccess" : "submitError"]($event); }, submitSuccess($event) { this.history.clear(); this._fields.forEach((name) => this.saved[name] = this[name]); this.saving = false; console.info("Slide changes saved"); this.$dispatch("slide:save-end", { success: true }); }, submitError($event) { const message2 = "Error saving slide - form could not be submitted"; this.handleSaveError(message2, { event: $event }); }, directUploadError($event) { $event.preventDefault(); const message2 = $event.detail.error || "Error uploading file to storage"; this.handleSaveError(message2, { event: $event }); }, handleSaveError(message2 = "Error saving slide", context = {}) { this.errors.push({ message: message2, context }); this.saving = false; this.$dispatch("slide:save-end", { success: false }); }, clearErrors() { this.errors.length = 0; }, syncFileInput(input, file) { const dataTransfer = new DataTransfer(); if (file && file instanceof File) { dataTransfer.items.add(file); } input.files = dataTransfer.files; }, get hasBgImage() { return !!(this.bgImage && this.bgImage.data); }, get bgColorHex() { return this.bgColor.replace("#", ""); }, get textColorHex() { return this.textColor.replace("#", ""); }, get isDarkBg() { return this.hasBgImage || this.bgColor ? isDark(this.bgColor) : false; }, get _fields() { return Object.keys(initialData); }, async _generateThumbnail() { this.thumbnailFile = await captureElementScreenshot( this.$refs.thumbnail.firstElementChild, "slide-thumbnail" ); console.info( "Slide thumbnail generated", `${this.thumbnailFile.size / 1e3}KiB` ); }, /* bindings */ slide: { [":style"]() { return { backgroundColor: this.bgColor, color: this.textColor, backgroundImage: this.hasBgImage ? `url('${this.bgImage.data}')` : "none" }; }, [":class"]() { return { "slide-bg-dark": this.isDarkBg, "slide-bg-light": !this.isDarkBg }; } }, input: { layout: { "x-model.fill": "layout" }, title: { "x-model.fill": "title" }, text1: { "x-model.fill": "text1" }, bgColor: { "x-model.fill": "bgColorHex" }, textColor: { "x-model.fill": "textColorHex" }, bgImage: { "x-effect": "syncFileInput($el, bgImage.file)" }, bgImagePurge: { ":checked": "!hasBgImage" }, thumbnailImage: { "x-effect": "syncFileInput($el, thumbnailFile)" } } }); }); // ../../components/coco/app/elements/alert/alert.js var alert_exports = {}; __export(alert_exports, { default: () => alert_default }); var alert_default = CocoComponent("appAlert", () => { return { alert: null, dismissed: false, forceMultiLine: false, dismissDuration: 300, dismiss() { if (this.$options.dismissable) { this.$dispatch("alert:dismiss", { alert: this, duration: this.dismissDuration }); this.dismissed = true; setTimeout(() => this.remove(), this.dismissDuration); } }, remove() { this.$root.remove(); }, checkSingleLineWrap({ height }) { if (!this.forceMultiLine) { this.forceMultiLine = height > 24 && this.$options.singleLine; } }, root: { "x-options": '["dismissable", "singleLine"]', "x-show": "!dismissed", ":class": "{'force-multi-line': forceMultiLine}" } }; }); // ../../components/coco/app/elements/button_group/button_group.js var button_group_exports = {}; __export(button_group_exports, { default: () => button_group_default }); var button_group_default = CocoComponent("appButtonGroup", () => { return { options: ["collapsible"], containerWidth: 0, contentWidth: 0, collapsed: false, tooltip: null, get collapsible() { return this.$options.collapsible !== false; }, get buttons() { const buttonElements = this.$el.querySelectorAll( "[data-component='app-button']" ); return Array.from(buttonElements).map((el) => getData(el)); }, get parent() { return this.$root.parentElement; }, init() { this.$nextTick(() => { if (!this.collapsible) return; this.createTooltipsSingleton(); this.onResize(); }); this.$watch("collapsed", (value) => { this.buttons.forEach((button) => { button.isCollapsed = value; }); }); }, createTooltipsSingleton() { const tippys = this.buttons.map((button) => { return button.showTooltip() && button.$root.__x_tippy; }).filter((t3) => t3); this.tooltip = createSingleton(tippys, { theme: "coco-tooltip", onShow: () => this.collapsed }); }, onResize() { if (!this.collapsible) return; this.containerWidth = Math.ceil(this.parent.offsetWidth); if (this.collapsed) { if (this.containerWidth > this.contentWidth) { this.collapsed = false; } } else { if (this.containerWidth < this.contentWidth) { this.collapsed = true; } else { const contentWidth = Math.ceil(this.$refs.buttons.scrollWidth); this.contentWidth = contentWidth; } } }, destroy() { if (this.tooltip) { this.tooltip.destroy(); this.tooltip = null; } } }; }); // ../../components/coco/app/elements/color_picker/color_picker.js var color_picker_exports = {}; __export(color_picker_exports, { default: () => color_picker_default }); // ../../../node_modules/@jaames/iro/dist/iro.es.js var n2; var u2; var t2; var i2; var r2; var o2; var f2 = {}; var e2 = []; var c2 = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|^--/i; function s2(n3, l3) { for (var u3 in l3) { n3[u3] = l3[u3]; } return n3; } function a2(n3) { var l3 = n3.parentNode; l3 && l3.removeChild(n3); } function h2(n3, l3, u3) { var t3, i3, r3, o3, f3 = arguments; if (l3 = s2({}, l3), arguments.length > 3) { for (u3 = [u3], t3 = 3; t3 < arguments.length; t3++) { u3.push(f3[t3]); } } if (null != u3 && (l3.children = u3), null != n3 && null != n3.defaultProps) { for (i3 in n3.defaultProps) { void 0 === l3[i3] && (l3[i3] = n3.defaultProps[i3]); } } return o3 = l3.key, null != (r3 = l3.ref) && delete l3.ref, null != o3 && delete l3.key, v2(n3, l3, o3, r3); } function v2(l3, u3, t3, i3) { var r3 = { type: l3, props: u3, key: t3, ref: i3, __k: null, __p: null, __b: 0, __e: null, l: null, __c: null, constructor: void 0 }; return n2.vnode && n2.vnode(r3), r3; } function d2(n3) { return n3.children; } function y2(n3) { if (null == n3 || "boolean" == typeof n3) { return null; } if ("string" == typeof n3 || "number" == typeof n3) { return v2(null, n3, null, null); } if (null != n3.__e || null != n3.__c) { var l3 = v2(n3.type, n3.props, n3.key, null); return l3.__e = n3.__e, l3; } return n3; } function m2(n3, l3) { this.props = n3, this.context = l3; } function w2(n3, l3) { if (null == l3) { return n3.__p ? w2(n3.__p, n3.__p.__k.indexOf(n3) + 1) : null; } for (var u3; l3 < n3.__k.length; l3++) { if (null != (u3 = n3.__k[l3]) && null != u3.__e) { return u3.__e; } } return "function" == typeof n3.type ? w2(n3) : null; } function g2(n3) { var l3, u3; if (null != (n3 = n3.__p) && null != n3.__c) { for (n3.__e = n3.__c.base = null, l3 = 0; l3 < n3.__k.length; l3++) { if (null != (u3 = n3.__k[l3]) && null != u3.__e) { n3.__e = n3.__c.base = u3.__e; break; } } return g2(n3); } } function k2(l3) { (!l3.__d && (l3.__d = true) && 1 === u2.push(l3) || i2 !== n2.debounceRendering) && (i2 = n2.debounceRendering, (n2.debounceRendering || t2)(_2)); } function _2() { var n3, l3, t3, i3, r3, o3, f3, e3; for (u2.sort(function(n4, l4) { return l4.__v.__b - n4.__v.__b; }); n3 = u2.pop(); ) { n3.__d && (t3 = void 0, i3 = void 0, o3 = (r3 = (l3 = n3).__v).__e, f3 = l3.__P, e3 = l3.u, l3.u = false, f3 && (t3 = [], i3 = $2(f3, r3, s2({}, r3), l3.__n, void 0 !== f3.ownerSVGElement, null, t3, e3, null == o3 ? w2(r3) : o3), j2(t3, r3), i3 != o3 && g2(r3))); } } function b2(n3, l3, u3, t3, i3, r3, o3, c3, s3) { var h3, v3, p2, d3, y3, m3, g3, k3 = u3 && u3.__k || e2, _3 = k3.length; if (c3 == f2 && (c3 = null != r3 ? r3[0] : _3 ? w2(u3, 0) : null), h3 = 0, l3.__k = x2(l3.__k, function(u4) { if (null != u4) { if (u4.__p = l3, u4.__b = l3.__b + 1, null === (p2 = k3[h3]) || p2 && u4.key == p2.key && u4.type === p2.type) { k3[h3] = void 0; } else { for (v3 = 0; v3 < _3; v3++) { if ((p2 = k3[v3]) && u4.key == p2.key && u4.type === p2.type) { k3[v3] = void 0; break; } p2 = null; } } if (d3 = $2(n3, u4, p2 = p2 || f2, t3, i3, r3, o3, null, c3, s3), (v3 = u4.ref) && p2.ref != v3 && (g3 || (g3 = [])).push(v3, u4.__c || d3, u4), null != d3) { if (null == m3 && (m3 = d3), null != u4.l) { d3 = u4.l, u4.l = null; } else if (r3 == p2 || d3 != c3 || null == d3.parentNode) { n: if (null == c3 || c3.parentNode !== n3) { n3.appendChild(d3); } else { for (y3 = c3, v3 = 0; (y3 = y3.nextSibling) && v3 < _3; v3 += 2) { if (y3 == d3) { break n; } } n3.insertBefore(d3, c3); } "option" == l3.type && (n3.value = ""); } c3 = d3.nextSibling, "function" == typeof l3.type && (l3.l = d3); } } return h3++, u4; }), l3.__e = m3, null != r3 && "function" != typeof l3.type) { for (h3 = r3.length; h3--; ) { null != r3[h3] && a2(r3[h3]); } } for (h3 = _3; h3--; ) { null != k3[h3] && D2(k3[h3], k3[h3]); } if (g3) { for (h3 = 0; h3 < g3.length; h3++) { A2(g3[h3], g3[++h3], g3[++h3]); } } } function x2(n3, l3, u3) { if (null == u3 && (u3 = []), null == n3 || "boolean" == typeof n3) { l3 && u3.push(l3(null)); } else if (Array.isArray(n3)) { for (var t3 = 0; t3 < n3.length; t3++) { x2(n3[t3], l3, u3); } } else { u3.push(l3 ? l3(y2(n3)) : n3); } return u3; } function C2(n3, l3, u3, t3, i3) { var r3; for (r3 in u3) { r3 in l3 || N2(n3, r3, null, u3[r3], t3); } for (r3 in l3) { i3 && "function" != typeof l3[r3] || "value" === r3 || "checked" === r3 || u3[r3] === l3[r3] || N2(n3, r3, l3[r3], u3[r3], t3); } } function P2(n3, l3, u3) { "-" === l3[0] ? n3.setProperty(l3, u3) : n3[l3] = "number" == typeof u3 && false === c2.test(l3) ? u3 + "px" : null == u3 ? "" : u3; } function N2(n3, l3, u3, t3, i3) { var r3, o3, f3, e3, c3; if ("key" === (l3 = i3 ? "className" === l3 ? "class" : l3 : "class" === l3 ? "className" : l3) || "children" === l3) ; else if ("style" === l3) { if (r3 = n3.style, "string" == typeof u3) { r3.cssText = u3; } else { if ("string" == typeof t3 && (r3.cssText = "", t3 = null), t3) { for (o3 in t3) { u3 && o3 in u3 || P2(r3, o3, ""); } } if (u3) { for (f3 in u3) { t3 && u3[f3] === t3[f3] || P2(r3, f3, u3[f3]); } } } } else { "o" === l3[0] && "n" === l3[1] ? (e3 = l3 !== (l3 = l3.replace(/Capture$/, "")), c3 = l3.toLowerCase(), l3 = (c3 in n3 ? c3 : l3).slice(2), u3 ? (t3 || n3.addEventListener(l3, T2, e3), (n3.t || (n3.t = {}))[l3] = u3) : n3.removeEventListener(l3, T2, e3)) : "list" !== l3 && "tagName" !== l3 && "form" !== l3 && !i3 && l3 in n3 ? n3[l3] = null == u3 ? "" : u3 : "function" != typeof u3 && "dangerouslySetInnerHTML" !== l3 && (l3 !== (l3 = l3.replace(/^xlink:?/, "")) ? null == u3 || false === u3 ? n3.removeAttributeNS("http://www.w3.org/1999/xlink", l3.toLowerCase()) : n3.setAttributeNS("http://www.w3.org/1999/xlink", l3.toLowerCase(), u3) : null == u3 || false === u3 ? n3.removeAttribute(l3) : n3.setAttribute(l3, u3)); } } function T2(l3) { return this.t[l3.type](n2.event ? n2.event(l3) : l3); } function $2(l3, u3, t3, i3, r3, o3, f3, e3, c3, a3) { var h3, v3, p2, y3, w3, g3, k3, _3, C3, P3, N3 = u3.type; if (void 0 !== u3.constructor) { return null; } (h3 = n2.__b) && h3(u3); try { n: if ("function" == typeof N3) { if (_3 = u3.props, C3 = (h3 = N3.contextType) && i3[h3.__c], P3 = h3 ? C3 ? C3.props.value : h3.__p : i3, t3.__c ? k3 = (v3 = u3.__c = t3.__c).__p = v3.__E : ("prototype" in N3 && N3.prototype.render ? u3.__c = v3 = new N3(_3, P3) : (u3.__c = v3 = new m2(_3, P3), v3.constructor = N3, v3.render = H2), C3 && C3.sub(v3), v3.props = _3, v3.state || (v3.state = {}), v3.context = P3, v3.__n = i3, p2 = v3.__d = true, v3.__h = []), null == v3.__s && (v3.__s = v3.state), null != N3.getDerivedStateFromProps && s2(v3.__s == v3.state ? v3.__s = s2({}, v3.__s) : v3.__s, N3.getDerivedStateFromProps(_3, v3.__s)), p2) { null == N3.getDerivedStateFromProps && null != v3.componentWillMount && v3.componentWillMount(), null != v3.componentDidMount && f3.push(v3); } else { if (null == N3.getDerivedStateFromProps && null == e3 && null != v3.componentWillReceiveProps && v3.componentWillReceiveProps(_3, P3), !e3 && null != v3.shouldComponentUpdate && false === v3.shouldComponentUpdate(_3, v3.__s, P3)) { for (v3.props = _3, v3.state = v3.__s, v3.__d = false, v3.__v = u3, u3.__e = null != c3 ? c3 !== t3.__e ? c3 : t3.__e : null, u3.__k = t3.__k, h3 = 0; h3 < u3.__k.length; h3++) { u3.__k[h3] && (u3.__k[h3].__p = u3); } break n; } null != v3.componentWillUpdate && v3.componentWillUpdate(_3, v3.__s, P3); } for (y3 = v3.props, w3 = v3.state, v3.context = P3, v3.props = _3, v3.state = v3.__s, (h3 = n2.__r) && h3(u3), v3.__d = false, v3.__v = u3, v3.__P = l3, h3 = v3.render(v3.props, v3.state, v3.context), u3.__k = x2(null != h3 && h3.type == d2 && null == h3.key ? h3.props.children : h3), null != v3.getChildContext && (i3 = s2(s2({}, i3), v3.getChildContext())), p2 || null == v3.getSnapshotBeforeUpdate || (g3 = v3.getSnapshotBeforeUpdate(y3, w3)), b2(l3, u3, t3, i3, r3, o3, f3, c3, a3), v3.base = u3.__e; h3 = v3.__h.pop(); ) { v3.__s && (v3.state = v3.__s), h3.call(v3); } p2 || null == y3 || null == v3.componentDidUpdate || v3.componentDidUpdate(y3, w3, g3), k3 && (v3.__E = v3.__p = null); } else { u3.__e = z2(t3.__e, u3, t3, i3, r3, o3, f3, a3); } (h3 = n2.diffed) && h3(u3); } catch (l4) { n2.__e(l4, u3, t3); } return u3.__e; } function j2(l3, u3) { for (var t3; t3 = l3.pop(); ) { try { t3.componentDidMount(); } catch (l4) { n2.__e(l4, t3.__v); } } n2.__c && n2.__c(u3); } function z2(n3, l3, u3, t3, i3, r3, o3, c3) { var s3, a3, h3, v3, p2 = u3.props, d3 = l3.props; if (i3 = "svg" === l3.type || i3, null == n3 && null != r3) { for (s3 = 0; s3 < r3.length; s3++) { if (null != (a3 = r3[s3]) && (null === l3.type ? 3 === a3.nodeType : a3.localName === l3.type)) { n3 = a3, r3[s3] = null; break; } } } if (null == n3) { if (null === l3.type) { return document.createTextNode(d3); } n3 = i3 ? document.createElementNS("http://www.w3.org/2000/svg", l3.type) : document.createElement(l3.type), r3 = null; } return null === l3.type ? p2 !== d3 && (null != r3 && (r3[r3.indexOf(n3)] = null), n3.data = d3) : l3 !== u3 && (null != r3 && (r3 = e2.slice.call(n3.childNodes)), h3 = (p2 = u3.props || f2).dangerouslySetInnerHTML, v3 = d3.dangerouslySetInnerHTML, c3 || (v3 || h3) && (v3 && h3 && v3.__html == h3.__html || (n3.innerHTML = v3 && v3.__html || "")), C2(n3, d3, p2, i3, c3), l3.__k = l3.props.children, v3 || b2(n3, l3, u3, t3, "foreignObject" !== l3.type && i3, r3, o3, f2, c3), c3 || ("value" in d3 && void 0 !== d3.value && d3.value !== n3.value && (n3.value = null == d3.value ? "" : d3.value), "checked" in d3 && void 0 !== d3.checked && d3.checked !== n3.checked && (n3.checked = d3.checked))), n3; } function A2(l3, u3, t3) { try { "function" == typeof l3 ? l3(u3) : l3.current = u3; } catch (l4) { n2.__e(l4, t3); } } function D2(l3, u3, t3) { var i3, r3, o3; if (n2.unmount && n2.unmount(l3), (i3 = l3.ref) && A2(i3, null, u3), t3 || "function" == typeof l3.type || (t3 = null != (r3 = l3.__e)), l3.__e = l3.l = null, null != (i3 = l3.__c)) { if (i3.componentWillUnmount) { try { i3.componentWillUnmount(); } catch (l4) { n2.__e(l4, u3); } } i3.base = i3.__P = null; } if (i3 = l3.__k) { for (o3 = 0; o3 < i3.length; o3++) { i3[o3] && D2(i3[o3], u3, t3); } } null != r3 && a2(r3); } function H2(n3, l3, u3) { return this.constructor(n3, u3); } function I2(l3, u3, t3) { var i3, o3, c3; n2.__p && n2.__p(l3, u3), o3 = (i3 = t3 === r2) ? null : t3 && t3.__k || u3.__k, l3 = h2(d2, null, [l3]), c3 = [], $2(u3, i3 ? u3.__k = l3 : (t3 || u3).__k = l3, o3 || f2, f2, void 0 !== u3.ownerSVGElement, t3 && !i3 ? [t3] : o3 ? null : e2.slice.call(u3.childNodes), c3, false, t3 || f2, i3), j2(c3, l3); } n2 = {}, m2.prototype.setState = function(n3, l3) { var u3 = this.__s !== this.state && this.__s || (this.__s = s2({}, this.state)); ("function" != typeof n3 || (n3 = n3(u3, this.props))) && s2(u3, n3), null != n3 && this.__v && (this.u = false, l3 && this.__h.push(l3), k2(this)); }, m2.prototype.forceUpdate = function(n3) { this.__v && (n3 && this.__h.push(n3), this.u = true, k2(this)); }, m2.prototype.render = d2, u2 = [], t2 = "function" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, i2 = n2.debounceRendering, n2.__e = function(n3, l3, u3) { for (var t3; l3 = l3.__p; ) { if ((t3 = l3.__c) && !t3.__p) { try { if (t3.constructor && null != t3.constructor.getDerivedStateFromError) { t3.setState(t3.constructor.getDerivedStateFromError(n3)); } else { if (null == t3.componentDidCatch) { continue; } t3.componentDidCatch(n3); } return k2(t3.__E = t3); } catch (l4) { n3 = l4; } } } throw n3; }, r2 = f2, o2 = 0; function _defineProperties(target, props) { for (var i3 = 0; i3 < props.length; i3++) { var descriptor = props[i3]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) { descriptor.writable = true; } Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) { _defineProperties(Constructor.prototype, protoProps); } if (staticProps) { _defineProperties(Constructor, staticProps); } return Constructor; } function _extends() { _extends = Object.assign || function(target) { var arguments$1 = arguments; for (var i3 = 1; i3 < arguments.length; i3++) { var source = arguments$1[i3]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var CSS_INTEGER = "[-\\+]?\\d+%?"; var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; var PERMISSIVE_MATCH_3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; var PERMISSIVE_MATCH_4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; var REGEX_FUNCTIONAL_RGB = new RegExp("rgb" + PERMISSIVE_MATCH_3); var REGEX_FUNCTIONAL_RGBA = new RegExp("rgba" + PERMISSIVE_MATCH_4); var REGEX_FUNCTIONAL_HSL = new RegExp("hsl" + PERMISSIVE_MATCH_3); var REGEX_FUNCTIONAL_HSLA = new RegExp("hsla" + PERMISSIVE_MATCH_4); var HEX_START = "^(?:#?|0x?)"; var HEX_INT_SINGLE = "([0-9a-fA-F]{1})"; var HEX_INT_DOUBLE = "([0-9a-fA-F]{2})"; var REGEX_HEX_3 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + "$"); var REGEX_HEX_4 = new RegExp(HEX_START + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + HEX_INT_SINGLE + "$"); var REGEX_HEX_6 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + "$"); var REGEX_HEX_8 = new RegExp(HEX_START + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + HEX_INT_DOUBLE + "$"); var KELVIN_MIN = 2e3; var KELVIN_MAX = 4e4; var log = Math.log; var round2 = Math.round; var floor = Math.floor; function clamp(num, min2, max2) { return Math.min(Math.max(num, min2), max2); } function parseUnit(str, max2) { var isPercentage = str.indexOf("%") > -1; var num = parseFloat(str); return isPercentage ? max2 / 100 * num : num; } function parseHexInt(str) { return parseInt(str, 16); } function intToHex(_int) { return _int.toString(16).padStart(2, "0"); } var IroColor = /* @__PURE__ */ function() { function IroColor2(value, onChange) { this.$ = { h: 0, s: 0, v: 0, a: 1 }; if (value) { this.set(value); } this.onChange = onChange; this.initialValue = _extends({}, this.$); } var _proto = IroColor2.prototype; _proto.set = function set3(value) { if (typeof value === "string") { if (/^(?:#?|0x?)[0-9a-fA-F]{3,8}$/.test(value)) { this.hexString = value; } else if (/^rgba?/.test(value)) { this.rgbString = value; } else if (/^hsla?/.test(value)) { this.hslString = value; } } else if (typeof value === "object") { if (value instanceof IroColor2) { this.hsva = value.hsva; } else if ("r" in value && "g" in value && "b" in value) { this.rgb = value; } else if ("h" in value && "s" in value && "v" in value) { this.hsv = value; } else if ("h" in value && "s" in value && "l" in value) { this.hsl = value; } else if ("kelvin" in value) { this.kelvin = value.kelvin; } } else { throw new Error("Invalid color value"); } }; _proto.setChannel = function setChannel(format, channel, value) { var _extends2; this[format] = _extends({}, this[format], (_extends2 = {}, _extends2[channel] = value, _extends2)); }; _proto.reset = function reset() { this.hsva = this.initialValue; }; _proto.clone = function clone2() { return new IroColor2(this); }; _proto.unbind = function unbind() { this.onChange = void 0; }; IroColor2.hsvToRgb = function hsvToRgb(hsv) { var h3 = hsv.h / 60; var s3 = hsv.s / 100; var v3 = hsv.v / 100; var i3 = floor(h3); var f3 = h3 - i3; var p2 = v3 * (1 - s3); var q2 = v3 * (1 - f3 * s3); var t3 = v3 * (1 - (1 - f3) * s3); var mod3 = i3 % 6; var r3 = [v3, q2, p2, p2, t3, v3][mod3]; var g3 = [t3, v3, v3, q2, p2, p2][mod3]; var b3 = [p2, p2, t3, v3, v3, q2][mod3]; return { r: clamp(r3 * 255, 0, 255), g: clamp(g3 * 255, 0, 255), b: clamp(b3 * 255, 0, 255) }; }; IroColor2.rgbToHsv = function rgbToHsv(rgb) { var r3 = rgb.r / 255; var g3 = rgb.g / 255; var b3 = rgb.b / 255; var max2 = Math.max(r3, g3, b3); var min2 = Math.min(r3, g3, b3); var delta = max2 - min2; var hue = 0; var value = max2; var saturation = max2 === 0 ? 0 : delta / max2; switch (max2) { case min2: hue = 0; break; case r3: hue = (g3 - b3) / delta + (g3 < b3 ? 6 : 0); break; case g3: hue = (b3 - r3) / delta + 2; break; case b3: hue = (r3 - g3) / delta + 4; break; } return { h: hue * 60 % 360, s: clamp(saturation * 100, 0, 100), v: clamp(value * 100, 0, 100) }; }; IroColor2.hsvToHsl = function hsvToHsl(hsv) { var s3 = hsv.s / 100; var v3 = hsv.v / 100; var l3 = (2 - s3) * v3; var divisor = l3 <= 1 ? l3 : 2 - l3; var saturation = divisor < 1e-9 ? 0 : s3 * v3 / divisor; return { h: hsv.h, s: clamp(saturation * 100, 0, 100), l: clamp(l3 * 50, 0, 100) }; }; IroColor2.hslToHsv = function hslToHsv(hsl) { var l3 = hsl.l * 2; var s3 = hsl.s * (l3 <= 100 ? l3 : 200 - l3) / 100; var saturation = l3 + s3 < 1e-9 ? 0 : 2 * s3 / (l3 + s3); return { h: hsl.h, s: clamp(saturation * 100, 0, 100), v: clamp((l3 + s3) / 2, 0, 100) }; }; IroColor2.kelvinToRgb = function kelvinToRgb(kelvin) { var temp = kelvin / 100; var r3, g3, b3; if (temp < 66) { r3 = 255; g3 = -155.25485562709179 - 0.44596950469579133 * (g3 = temp - 2) + 104.49216199393888 * log(g3); b3 = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b3 = temp - 10) + 115.67994401066147 * log(b3); } else { r3 = 351.97690566805693 + 0.114206453784165 * (r3 = temp - 55) - 40.25366309332127 * log(r3); g3 = 325.4494125711974 + 0.07943456536662342 * (g3 = temp - 50) - 28.0852963507957 * log(g3); b3 = 255; } return { r: clamp(floor(r3), 0, 255), g: clamp(floor(g3), 0, 255), b: clamp(floor(b3), 0, 255) }; }; IroColor2.rgbToKelvin = function rgbToKelvin(rgb) { var r3 = rgb.r, b3 = rgb.b; var eps = 0.4; var minTemp = KELVIN_MIN; var maxTemp = KELVIN_MAX; var temp; while (maxTemp - minTemp > eps) { temp = (maxTemp + minTemp) * 0.5; var _rgb = IroColor2.kelvinToRgb(temp); if (_rgb.b / _rgb.r >= b3 / r3) { maxTemp = temp; } else { minTemp = temp; } } return temp; }; _createClass(IroColor2, [{ key: "hsv", get: function get3() { var value = this.$; return { h: value.h, s: value.s, v: value.v }; }, set: function set3(newValue) { var oldValue = this.$; newValue = _extends({}, oldValue, newValue); if (this.onChange) { var changes = { h: false, v: false, s: false, a: false }; for (var key in oldValue) { changes[key] = newValue[key] != oldValue[key]; } this.$ = newValue; if (changes.h || changes.s || changes.v || changes.a) { this.onChange(this, changes); } } else { this.$ = newValue; } } }, { key: "hsva", get: function get3() { return _extends({}, this.$); }, set: function set3(value) { this.hsv = value; } }, { key: "hue", get: function get3() { return this.$.h; }, set: function set3(value) { this.hsv = { h: value }; } }, { key: "saturation", get: function get3() { return this.$.s; }, set: function set3(value) { this.hsv = { s: value }; } }, { key: "value", get: function get3() { return this.$.v; }, set: function set3(value) { this.hsv = { v: value }; } }, { key: "alpha", get: function get3() { return this.$.a; }, set: function set3(value) { this.hsv = _extends({}, this.hsv, { a: value }); } }, { key: "kelvin", get: function get3() { return IroColor2.rgbToKelvin(this.rgb); }, set: function set3(value) { this.rgb = IroColor2.kelvinToRgb(value); } }, { key: "red", get: function get3() { var rgb = this.rgb; return rgb.r; }, set: function set3(value) { this.rgb = _extends({}, this.rgb, { r: value }); } }, { key: "green", get: function get3() { var rgb = this.rgb; return rgb.g; }, set: function set3(value) { this.rgb = _extends({}, this.rgb, { g: value }); } }, { key: "blue", get: function get3() { var rgb = this.rgb; return rgb.b; }, set: function set3(value) { this.rgb = _extends({}, this.rgb, { b: value }); } }, { key: "rgb", get: function get3() { var _IroColor$hsvToRgb = IroColor2.hsvToRgb(this.$), r3 = _IroColor$hsvToRgb.r, g3 = _IroColor$hsvToRgb.g, b3 = _IroColor$hsvToRgb.b; return { r: round2(r3), g: round2(g3), b: round2(b3) }; }, set: function set3(value) { this.hsv = _extends({}, IroColor2.rgbToHsv(value), { a: value.a === void 0 ? 1 : value.a }); } }, { key: "rgba", get: function get3() { return _extends({}, this.rgb, { a: this.alpha }); }, set: function set3(value) { this.rgb = value; } }, { key: "hsl", get: function get3() { var _IroColor$hsvToHsl = IroColor2.hsvToHsl(this.$), h3 = _IroColor$hsvToHsl.h, s3 = _IroColor$hsvToHsl.s, l3 = _IroColor$hsvToHsl.l; return { h: round2(h3), s: round2(s3), l: round2(l3) }; }, set: function set3(value) { this.hsv = _extends({}, IroColor2.hslToHsv(value), { a: value.a === void 0 ? 1 : value.a }); } }, { key: "hsla", get: function get3() { return _extends({}, this.hsl, { a: this.alpha }); }, set: function set3(value) { this.hsl = value; } }, { key: "rgbString", get: function get3() { var rgb = this.rgb; return "rgb(" + rgb.r + ", " + rgb.g + ", " + rgb.b + ")"; }, set: function set3(value) { var match; var r3, g3, b3, a3 = 1; if (match = REGEX_FUNCTIONAL_RGB.exec(value)) { r3 = parseUnit(match[1], 255); g3 = parseUnit(match[2], 255); b3 = parseUnit(match[3], 255); } else if (match = REGEX_FUNCTIONAL_RGBA.exec(value)) { r3 = parseUnit(match[1], 255); g3 = parseUnit(match[2], 255); b3 = parseUnit(match[3], 255); a3 = parseUnit(match[4], 1); } if (match) { this.rgb = { r: r3, g: g3, b: b3, a: a3 }; } else { throw new Error("Invalid rgb string"); } } }, { key: "rgbaString", get: function get3() { var rgba = this.rgba; return "rgba(" + rgba.r + ", " + rgba.g + ", " + rgba.b + ", " + rgba.a + ")"; }, set: function set3(value) { this.rgbString = value; } }, { key: "hexString", get: function get3() { var rgb = this.rgb; return "#" + intToHex(rgb.r) + intToHex(rgb.g) + intToHex(rgb.b); }, set: function set3(value) { var match; var r3, g3, b3, a3 = 255; if (match = REGEX_HEX_3.exec(value)) { r3 = parseHexInt(match[1]) * 17; g3 = parseHexInt(match[2]) * 17; b3 = parseHexInt(match[3]) * 17; } else if (match = REGEX_HEX_4.exec(value)) { r3 = parseHexInt(match[1]) * 17; g3 = parseHexInt(match[2]) * 17; b3 = parseHexInt(match[3]) * 17; a3 = parseHexInt(match[4]) * 17; } else if (match = REGEX_HEX_6.exec(value)) { r3 = parseHexInt(match[1]); g3 = parseHexInt(match[2]); b3 = parseHexInt(match[3]); } else if (match = REGEX_HEX_8.exec(value)) { r3 = parseHexInt(match[1]); g3 = parseHexInt(match[2]); b3 = parseHexInt(match[3]); a3 = parseHexInt(match[4]); } if (match) { this.rgb = { r: r3, g: g3, b: b3, a: a3 / 255 }; } else { throw new Error("Invalid hex string"); } } }, { key: "hex8String", get: function get3() { var rgba = this.rgba; return "#" + intToHex(rgba.r) + intToHex(rgba.g) + intToHex(rgba.b) + intToHex(floor(rgba.a * 255)); }, set: function set3(value) { this.hexString = value; } }, { key: "hslString", get: function get3() { var hsl = this.hsl; return "hsl(" + hsl.h + ", " + hsl.s + "%, " + hsl.l + "%)"; }, set: function set3(value) { var match; var h3, s3, l3, a3 = 1; if (match = REGEX_FUNCTIONAL_HSL.exec(value)) { h3 = parseUnit(match[1], 360); s3 = parseUnit(match[2], 100); l3 = parseUnit(match[3], 100); } else if (match = REGEX_FUNCTIONAL_HSLA.exec(value)) { h3 = parseUnit(match[1], 360); s3 = parseUnit(match[2], 100); l3 = parseUnit(match[3], 100); a3 = parseUnit(match[4], 1); } if (match) { this.hsl = { h: h3, s: s3, l: l3, a: a3 }; } else { throw new Error("Invalid hsl string"); } } }, { key: "hslaString", get: function get3() { var hsla = this.hsla; return "hsla(" + hsla.h + ", " + hsla.s + "%, " + hsla.l + "%, " + hsla.a + ")"; }, set: function set3(value) { this.hslString = value; } }]); return IroColor2; }(); var sliderDefaultOptions = { sliderShape: "bar", sliderType: "value", minTemperature: 2200, maxTemperature: 11e3 }; function getSliderDimensions(props) { var _sliderSize; var width = props.width, sliderSize = props.sliderSize, borderWidth = props.borderWidth, handleRadius = props.handleRadius, padding = props.padding, sliderShape = props.sliderShape; var ishorizontal = props.layoutDirection === "horizontal"; sliderSize = (_sliderSize = sliderSize) != null ? _sliderSize : padding * 2 + handleRadius * 2; if (sliderShape === "circle") { return { handleStart: props.padding + props.handleRadius, handleRange: width - padding * 2 - handleRadius * 2, width, height: width, cx: width / 2, cy: width / 2, radius: width / 2 - borderWidth / 2 }; } else { return { handleStart: sliderSize / 2, handleRange: width - sliderSize, radius: sliderSize / 2, x: 0, y: 0, width: ishorizontal ? sliderSize : width, height: ishorizontal ? width : sliderSize }; } } function getCurrentSliderValue(props, color) { var hsva = color.hsva; var rgb = color.rgb; switch (props.sliderType) { case "red": return rgb.r / 2.55; case "green": return rgb.g / 2.55; case "blue": return rgb.b / 2.55; case "alpha": return hsva.a * 100; case "kelvin": var minTemperature = props.minTemperature, maxTemperature = props.maxTemperature; var temperatureRange = maxTemperature - minTemperature; var percent = (color.kelvin - minTemperature) / temperatureRange * 100; return Math.max(0, Math.min(percent, 100)); case "hue": return hsva.h /= 3.6; case "saturation": return hsva.s; case "value": default: return hsva.v; } } function getSliderValueFromInput(props, x3, y3) { var _getSliderDimensions = getSliderDimensions(props), handleRange = _getSliderDimensions.handleRange, handleStart = _getSliderDimensions.handleStart; var handlePos; if (props.layoutDirection === "horizontal") { handlePos = -1 * y3 + handleRange + handleStart; } else { handlePos = x3 - handleStart; } handlePos = Math.max(Math.min(handlePos, handleRange), 0); var percent = Math.round(100 / handleRange * handlePos); switch (props.sliderType) { case "kelvin": var minTemperature = props.minTemperature, maxTemperature = props.maxTemperature; var temperatureRange = maxTemperature - minTemperature; return minTemperature + temperatureRange * (percent / 100); case "alpha": return percent / 100; case "hue": return percent * 3.6; case "red": case "blue": case "green": return percent * 2.55; default: return percent; } } function getSliderHandlePosition(props, color) { var _getSliderDimensions2 = getSliderDimensions(props), width = _getSliderDimensions2.width, height = _getSliderDimensions2.height, handleRange = _getSliderDimensions2.handleRange, handleStart = _getSliderDimensions2.handleStart; var ishorizontal = props.layoutDirection === "horizontal"; var sliderValue = getCurrentSliderValue(props, color); var midPoint = ishorizontal ? width / 2 : height / 2; var handlePos = handleStart + sliderValue / 100 * handleRange; if (ishorizontal) { handlePos = -1 * handlePos + handleRange + handleStart * 2; } return { x: ishorizontal ? midPoint : handlePos, y: ishorizontal ? handlePos : midPoint }; } function getSliderGradient(props, color) { var hsv = color.hsv; var rgb = color.rgb; switch (props.sliderType) { case "red": return [[0, "rgb(0," + rgb.g + "," + rgb.b + ")"], [100, "rgb(255," + rgb.g + "," + rgb.b + ")"]]; case "green": return [[0, "rgb(" + rgb.r + ",0," + rgb.b + ")"], [100, "rgb(" + rgb.r + ",255," + rgb.b + ")"]]; case "blue": return [[0, "rgb(" + rgb.r + "," + rgb.g + ",0)"], [100, "rgb(" + rgb.r + "," + rgb.g + ",255)"]]; case "alpha": return [[0, "rgba(" + rgb.r + "," + rgb.g + "," + rgb.b + ",0)"], [100, "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")"]]; case "kelvin": var stops = []; var min2 = props.minTemperature; var max2 = props.maxTemperature; var numStops = 8; var range = max2 - min2; for (var kelvin = min2, stop2 = 0; kelvin < max2; kelvin += range / numStops, stop2 += 1) { var _IroColor$kelvinToRgb = IroColor.kelvinToRgb(kelvin), r3 = _IroColor$kelvinToRgb.r, g3 = _IroColor$kelvinToRgb.g, b3 = _IroColor$kelvinToRgb.b; stops.push([100 / numStops * stop2, "rgb(" + r3 + "," + g3 + "," + b3 + ")"]); } return stops; case "hue": return [[0, "#f00"], [16.666, "#ff0"], [33.333, "#0f0"], [50, "#0ff"], [66.666, "#00f"], [83.333, "#f0f"], [100, "#f00"]]; case "saturation": var noSat = IroColor.hsvToHsl({ h: hsv.h, s: 0, v: hsv.v }); var fullSat = IroColor.hsvToHsl({ h: hsv.h, s: 100, v: hsv.v }); return [[0, "hsl(" + noSat.h + "," + noSat.s + "%," + noSat.l + "%)"], [100, "hsl(" + fullSat.h + "," + fullSat.s + "%," + fullSat.l + "%)"]]; case "value": default: var hsl = IroColor.hsvToHsl({ h: hsv.h, s: hsv.s, v: 100 }); return [[0, "#000"], [100, "hsl(" + hsl.h + "," + hsl.s + "%," + hsl.l + "%)"]]; } } var TAU = Math.PI * 2; var mod = function mod2(a3, n3) { return (a3 % n3 + n3) % n3; }; var dist = function dist2(x3, y3) { return Math.sqrt(x3 * x3 + y3 * y3); }; function getHandleRange(props) { return props.width / 2 - props.padding - props.handleRadius - props.borderWidth; } function isInputInsideWheel(props, x3, y3) { var _getWheelDimensions = getWheelDimensions(props), cx = _getWheelDimensions.cx, cy = _getWheelDimensions.cy; var r3 = props.width / 2; return dist(cx - x3, cy - y3) < r3; } function getWheelDimensions(props) { var r3 = props.width / 2; return { width: props.width, radius: r3 - props.borderWidth, cx: r3, cy: r3 }; } function translateWheelAngle(props, angle, invert) { var wheelAngle = props.wheelAngle; var wheelDirection = props.wheelDirection; if (invert && wheelDirection === "clockwise") { angle = wheelAngle + angle; } else if (wheelDirection === "clockwise") { angle = 360 - wheelAngle + angle; } else if (invert && wheelDirection === "anticlockwise") { angle = wheelAngle + 180 - angle; } else if (wheelDirection === "anticlockwise") { angle = wheelAngle - angle; } return mod(angle, 360); } function getWheelHandlePosition(props, color) { var hsv = color.hsv; var _getWheelDimensions2 = getWheelDimensions(props), cx = _getWheelDimensions2.cx, cy = _getWheelDimensions2.cy; var handleRange = getHandleRange(props); var handleAngle = (180 + translateWheelAngle(props, hsv.h, true)) * (TAU / 360); var handleDist = hsv.s / 100 * handleRange; var direction = props.wheelDirection === "clockwise" ? -1 : 1; return { x: cx + handleDist * Math.cos(handleAngle) * direction, y: cy + handleDist * Math.sin(handleAngle) * direction }; } function getWheelValueFromInput(props, x3, y3) { var _getWheelDimensions3 = getWheelDimensions(props), cx = _getWheelDimensions3.cx, cy = _getWheelDimensions3.cy; var handleRange = getHandleRange(props); x3 = cx - x3; y3 = cy - y3; var hue = translateWheelAngle(props, Math.atan2(-y3, -x3) * (360 / TAU)); var handleDist = Math.min(dist(x3, y3), handleRange); return { h: Math.round(hue), s: Math.round(100 / handleRange * handleDist) }; } function getBoxDimensions(props) { var width = props.width, boxHeight = props.boxHeight, padding = props.padding, handleRadius = props.handleRadius; return { width, height: boxHeight != null ? boxHeight : width, radius: padding + handleRadius }; } function getBoxValueFromInput(props, x3, y3) { var _getBoxDimensions = getBoxDimensions(props), width = _getBoxDimensions.width, height = _getBoxDimensions.height, radius = _getBoxDimensions.radius; var handleStart = radius; var handleRangeX = width - radius * 2; var handleRangeY = height - radius * 2; var percentX = (x3 - handleStart) / handleRangeX * 100; var percentY = (y3 - handleStart) / handleRangeY * 100; return { s: Math.max(0, Math.min(percentX, 100)), v: Math.max(0, Math.min(100 - percentY, 100)) }; } function getBoxHandlePosition(props, color) { var _getBoxDimensions2 = getBoxDimensions(props), width = _getBoxDimensions2.width, height = _getBoxDimensions2.height, radius = _getBoxDimensions2.radius; var hsv = color.hsv; var handleStart = radius; var handleRangeX = width - radius * 2; var handleRangeY = height - radius * 2; return { x: handleStart + hsv.s / 100 * handleRangeX, y: handleStart + (handleRangeY - hsv.v / 100 * handleRangeY) }; } function getBoxGradients(props, color) { var hue = color.hue; return [ // saturation gradient [[0, "#fff"], [100, "hsl(" + hue + ",100%,50%)"]], // lightness gradient [[0, "rgba(0,0,0,0)"], [100, "#000"]] ]; } var BASE_ELEMENTS; function resolveSvgUrl(url) { if (!BASE_ELEMENTS) { BASE_ELEMENTS = document.getElementsByTagName("base"); } var ua = window.navigator.userAgent; var isSafari = /^((?!chrome|android).)*safari/i.test(ua); var isIos = /iPhone|iPod|iPad/i.test(ua); var location2 = window.location; return (isSafari || isIos) && BASE_ELEMENTS.length > 0 ? location2.protocol + "//" + location2.host + location2.pathname + location2.search + url : url; } function getHandleAtPoint(props, x3, y3, handlePositions) { for (var i3 = 0; i3 < handlePositions.length; i3++) { var dX = handlePositions[i3].x - x3; var dY = handlePositions[i3].y - y3; var dist3 = Math.sqrt(dX * dX + dY * dY); if (dist3 < props.handleRadius) { return i3; } } return null; } function cssBorderStyles(props) { return { boxSizing: "border-box", border: props.borderWidth + "px solid " + props.borderColor }; } function cssGradient(type, direction, stops) { return type + "-gradient(" + direction + ", " + stops.map(function(_ref) { var o3 = _ref[0], col = _ref[1]; return col + " " + o3 + "%"; }).join(",") + ")"; } function cssValue(value) { if (typeof value === "string") { return value; } return value + "px"; } var iroColorPickerOptionDefaults = { width: 300, height: 300, color: "#fff", colors: [], padding: 6, layoutDirection: "vertical", borderColor: "#fff", borderWidth: 0, handleRadius: 8, activeHandleRadius: null, handleSvg: null, handleProps: { x: 0, y: 0 }, wheelLightness: true, wheelAngle: 0, wheelDirection: "anticlockwise", sliderSize: null, sliderMargin: 12, boxHeight: null }; var SECONDARY_EVENTS = [ "mousemove", "touchmove", "mouseup", "touchend" /* TouchEnd */ ]; var IroComponentWrapper = /* @__PURE__ */ function(Component) { function IroComponentWrapper2(props) { Component.call(this, props); this.uid = (Math.random() + 1).toString(36).substring(5); } if (Component) IroComponentWrapper2.__proto__ = Component; IroComponentWrapper2.prototype = Object.create(Component && Component.prototype); IroComponentWrapper2.prototype.constructor = IroComponentWrapper2; IroComponentWrapper2.prototype.render = function render2(props) { var eventHandler = this.handleEvent.bind(this); var rootProps = { onMouseDown: eventHandler, // https://github.com/jaames/iro.js/issues/126 // https://github.com/preactjs/preact/issues/2113#issuecomment-553408767 ontouchstart: eventHandler }; var isHorizontal = props.layoutDirection === "horizontal"; var margin = props.margin === null ? props.sliderMargin : props.margin; var rootStyles = { overflow: "visible", display: isHorizontal ? "inline-block" : "block" }; if (props.index > 0) { rootStyles[isHorizontal ? "marginLeft" : "marginTop"] = margin; } return h2(d2, null, props.children(this.uid, rootProps, rootStyles)); }; IroComponentWrapper2.prototype.handleEvent = function handleEvent(e3) { var this$1 = this; var inputHandler = this.props.onInput; var bounds = this.base.getBoundingClientRect(); e3.preventDefault(); var point = e3.touches ? e3.changedTouches[0] : e3; var x3 = point.clientX - bounds.left; var y3 = point.clientY - bounds.top; switch (e3.type) { case "mousedown": case "touchstart": var result = inputHandler( x3, y3, 0 /* Start */ ); if (result !== false) { SECONDARY_EVENTS.forEach(function(event) { document.addEventListener(event, this$1, { passive: false }); }); } break; case "mousemove": case "touchmove": inputHandler( x3, y3, 1 /* Move */ ); break; case "mouseup": case "touchend": inputHandler( x3, y3, 2 /* End */ ); SECONDARY_EVENTS.forEach(function(event) { document.removeEventListener(event, this$1, { passive: false }); }); break; } }; return IroComponentWrapper2; }(m2); function IroHandle(props) { var radius = props.r; var url = props.url; var cx = radius; var cy = radius; return h2( "svg", { className: "IroHandle IroHandle--" + props.index + " " + (props.isActive ? "IroHandle--isActive" : ""), style: { "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0);", transform: "translate(" + cssValue(props.x) + ", " + cssValue(props.y) + ")", willChange: "transform", top: cssValue(-radius), left: cssValue(-radius), width: cssValue(radius * 2), height: cssValue(radius * 2), position: "absolute", overflow: "visible" } }, url && h2("use", Object.assign({ xlinkHref: resolveSvgUrl(url) }, props.props)), !url && h2("circle", { cx, cy, r: radius, fill: "none", "stroke-width": 2, stroke: "#000" }), !url && h2("circle", { cx, cy, r: radius - 2, fill: props.fill, "stroke-width": 2, stroke: "#fff" }) ); } IroHandle.defaultProps = { fill: "none", x: 0, y: 0, r: 8, url: null, props: { x: 0, y: 0 } }; function IroSlider(props) { var activeIndex = props.activeIndex; var activeColor = activeIndex !== void 0 && activeIndex < props.colors.length ? props.colors[activeIndex] : props.color; var ref = getSliderDimensions(props); var width = ref.width; var height = ref.height; var radius = ref.radius; var handlePos = getSliderHandlePosition(props, activeColor); var gradient = getSliderGradient(props, activeColor); function handleInput(x3, y3, type) { var value = getSliderValueFromInput(props, x3, y3); props.parent.inputActive = true; activeColor[props.sliderType] = value; props.onInput(type, props.id); } return h2(IroComponentWrapper, Object.assign({}, props, { onInput: handleInput }), function(uid2, rootProps, rootStyles) { return h2( "div", Object.assign({}, rootProps, { className: "IroSlider", style: Object.assign( {}, { position: "relative", width: cssValue(width), height: cssValue(height), borderRadius: cssValue(radius), // checkered bg to represent alpha background: "conic-gradient(#ccc 25%, #fff 0 50%, #ccc 0 75%, #fff 0)", backgroundSize: "8px 8px" }, rootStyles ) }), h2("div", { className: "IroSliderGradient", style: Object.assign( {}, { position: "absolute", top: 0, left: 0, width: "100%", height: "100%", borderRadius: cssValue(radius), background: cssGradient("linear", props.layoutDirection === "horizontal" ? "to top" : "to right", gradient) }, cssBorderStyles(props) ) }), h2(IroHandle, { isActive: true, index: activeColor.index, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePos.x, y: handlePos.y }) ); }); } IroSlider.defaultProps = Object.assign({}, sliderDefaultOptions); function IroBox(props) { var ref = getBoxDimensions(props); var width = ref.width; var height = ref.height; var radius = ref.radius; var colors = props.colors; var colorPicker = props.parent; var activeIndex = props.activeIndex; var activeColor = activeIndex !== void 0 && activeIndex < props.colors.length ? props.colors[activeIndex] : props.color; var gradients = getBoxGradients(props, activeColor); var handlePositions = colors.map(function(color) { return getBoxHandlePosition(props, color); }); function handleInput(x3, y3, inputType) { if (inputType === 0) { var activeHandle = getHandleAtPoint(props, x3, y3, handlePositions); if (activeHandle !== null) { colorPicker.setActiveColor(activeHandle); } else { colorPicker.inputActive = true; activeColor.hsv = getBoxValueFromInput(props, x3, y3); props.onInput(inputType, props.id); } } else if (inputType === 1) { colorPicker.inputActive = true; activeColor.hsv = getBoxValueFromInput(props, x3, y3); } props.onInput(inputType, props.id); } return h2(IroComponentWrapper, Object.assign({}, props, { onInput: handleInput }), function(uid2, rootProps, rootStyles) { return h2( "div", Object.assign({}, rootProps, { className: "IroBox", style: Object.assign( {}, { width: cssValue(width), height: cssValue(height), position: "relative" }, rootStyles ) }), h2("div", { className: "IroBox", style: Object.assign( {}, { width: "100%", height: "100%", borderRadius: cssValue(radius) }, cssBorderStyles(props), { background: cssGradient("linear", "to bottom", gradients[1]) + "," + cssGradient("linear", "to right", gradients[0]) } ) }), colors.filter(function(color) { return color !== activeColor; }).map(function(color) { return h2(IroHandle, { isActive: false, index: color.index, fill: color.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[color.index].x, y: handlePositions[color.index].y }); }), h2(IroHandle, { isActive: true, index: activeColor.index, fill: activeColor.hslString, r: props.activeHandleRadius || props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[activeColor.index].x, y: handlePositions[activeColor.index].y }) ); }); } var HUE_GRADIENT_CLOCKWISE = "conic-gradient(red, yellow, lime, aqua, blue, magenta, red)"; var HUE_GRADIENT_ANTICLOCKWISE = "conic-gradient(red, magenta, blue, aqua, lime, yellow, red)"; function IroWheel(props) { var ref = getWheelDimensions(props); var width = ref.width; var colors = props.colors; var borderWidth = props.borderWidth; var colorPicker = props.parent; var activeColor = props.color; var hsv = activeColor.hsv; var handlePositions = colors.map(function(color) { return getWheelHandlePosition(props, color); }); var circleStyles = { position: "absolute", top: 0, left: 0, width: "100%", height: "100%", borderRadius: "50%", boxSizing: "border-box" }; function handleInput(x3, y3, inputType) { if (inputType === 0) { if (!isInputInsideWheel(props, x3, y3)) { return false; } var activeHandle = getHandleAtPoint(props, x3, y3, handlePositions); if (activeHandle !== null) { colorPicker.setActiveColor(activeHandle); } else { colorPicker.inputActive = true; activeColor.hsv = getWheelValueFromInput(props, x3, y3); props.onInput(inputType, props.id); } } else if (inputType === 1) { colorPicker.inputActive = true; activeColor.hsv = getWheelValueFromInput(props, x3, y3); } props.onInput(inputType, props.id); } return h2(IroComponentWrapper, Object.assign({}, props, { onInput: handleInput }), function(uid2, rootProps, rootStyles) { return h2( "div", Object.assign({}, rootProps, { className: "IroWheel", style: Object.assign( {}, { width: cssValue(width), height: cssValue(width), position: "relative" }, rootStyles ) }), h2("div", { className: "IroWheelHue", style: Object.assign( {}, circleStyles, { transform: "rotateZ(" + (props.wheelAngle + 90) + "deg)", background: props.wheelDirection === "clockwise" ? HUE_GRADIENT_CLOCKWISE : HUE_GRADIENT_ANTICLOCKWISE } ) }), h2("div", { className: "IroWheelSaturation", style: Object.assign( {}, circleStyles, { background: "radial-gradient(circle closest-side, #fff, transparent)" } ) }), props.wheelLightness && h2("div", { className: "IroWheelLightness", style: Object.assign( {}, circleStyles, { background: "#000", opacity: 1 - hsv.v / 100 } ) }), h2("div", { className: "IroWheelBorder", style: Object.assign( {}, circleStyles, cssBorderStyles(props) ) }), colors.filter(function(color) { return color !== activeColor; }).map(function(color) { return h2(IroHandle, { isActive: false, index: color.index, fill: color.hslString, r: props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[color.index].x, y: handlePositions[color.index].y }); }), h2(IroHandle, { isActive: true, index: activeColor.index, fill: activeColor.hslString, r: props.activeHandleRadius || props.handleRadius, url: props.handleSvg, props: props.handleProps, x: handlePositions[activeColor.index].x, y: handlePositions[activeColor.index].y }) ); }); } function createWidget(WidgetComponent) { var widgetFactory = function(parent, props) { var widget; var widgetRoot = document.createElement("div"); I2(h2(WidgetComponent, Object.assign( {}, { ref: function(ref) { return widget = ref; } }, props )), widgetRoot); function mountWidget() { var container = parent instanceof Element ? parent : document.querySelector(parent); container.appendChild(widget.base); widget.onMount(container); } if (document.readyState !== "loading") { mountWidget(); } else { document.addEventListener("DOMContentLoaded", mountWidget); } return widget; }; widgetFactory.prototype = WidgetComponent.prototype; Object.assign(widgetFactory, WidgetComponent); widgetFactory.__component = WidgetComponent; return widgetFactory; } var IroColorPicker = /* @__PURE__ */ function(Component) { function IroColorPicker2(props) { var this$1 = this; Component.call(this, props); this.colors = []; this.inputActive = false; this.events = {}; this.activeEvents = {}; this.deferredEvents = {}; this.id = props.id; var colors = props.colors.length > 0 ? props.colors : [props.color]; colors.forEach(function(colorValue) { return this$1.addColor(colorValue); }); this.setActiveColor(0); this.state = Object.assign( {}, props, { color: this.color, colors: this.colors, layout: props.layout } ); } if (Component) IroColorPicker2.__proto__ = Component; IroColorPicker2.prototype = Object.create(Component && Component.prototype); IroColorPicker2.prototype.constructor = IroColorPicker2; IroColorPicker2.prototype.addColor = function addColor(color, index) { if (index === void 0) index = this.colors.length; var newColor = new IroColor(color, this.onColorChange.bind(this)); this.colors.splice(index, 0, newColor); this.colors.forEach(function(color2, index2) { return color2.index = index2; }); if (this.state) { this.setState({ colors: this.colors }); } this.deferredEmit("color:init", newColor); }; IroColorPicker2.prototype.removeColor = function removeColor(index) { var color = this.colors.splice(index, 1)[0]; color.unbind(); this.colors.forEach(function(color2, index2) { return color2.index = index2; }); if (this.state) { this.setState({ colors: this.colors }); } if (color.index === this.color.index) { this.setActiveColor(0); } this.emit("color:remove", color); }; IroColorPicker2.prototype.setActiveColor = function setActiveColor(index) { this.color = this.colors[index]; if (this.state) { this.setState({ color: this.color }); } this.emit("color:setActive", this.color); }; IroColorPicker2.prototype.setColors = function setColors(newColorValues, activeColorIndex) { var this$1 = this; if (activeColorIndex === void 0) activeColorIndex = 0; this.colors.forEach(function(color) { return color.unbind(); }); this.colors = []; newColorValues.forEach(function(colorValue) { return this$1.addColor(colorValue); }); this.setActiveColor(activeColorIndex); this.emit("color:setAll", this.colors); }; IroColorPicker2.prototype.on = function on2(eventList, callback) { var this$1 = this; var events = this.events; (!Array.isArray(eventList) ? [eventList] : eventList).forEach(function(eventType) { (events[eventType] || (events[eventType] = [])).push(callback); if (this$1.deferredEvents[eventType]) { this$1.deferredEvents[eventType].forEach(function(args) { callback.apply(null, args); }); this$1.deferredEvents[eventType] = []; } }); }; IroColorPicker2.prototype.off = function off(eventList, callback) { var this$1 = this; (!Array.isArray(eventList) ? [eventList] : eventList).forEach(function(eventType) { var callbackList = this$1.events[eventType]; if (callbackList) { callbackList.splice(callbackList.indexOf(callback), 1); } }); }; IroColorPicker2.prototype.emit = function emit(eventType) { var this$1 = this; var args = [], len = arguments.length - 1; while (len-- > 0) args[len] = arguments[len + 1]; var activeEvents = this.activeEvents; var isEventActive = activeEvents.hasOwnProperty(eventType) ? activeEvents[eventType] : false; if (!isEventActive) { activeEvents[eventType] = true; var callbackList = this.events[eventType] || []; callbackList.forEach(function(fn3) { return fn3.apply(this$1, args); }); activeEvents[eventType] = false; } }; IroColorPicker2.prototype.deferredEmit = function deferredEmit(eventType) { var ref; var args = [], len = arguments.length - 1; while (len-- > 0) args[len] = arguments[len + 1]; var deferredEvents = this.deferredEvents; (ref = this).emit.apply(ref, [eventType].concat(args)); (deferredEvents[eventType] || (deferredEvents[eventType] = [])).push(args); }; IroColorPicker2.prototype.setOptions = function setOptions(newOptions) { this.setState(newOptions); }; IroColorPicker2.prototype.resize = function resize(width) { this.setOptions({ width }); }; IroColorPicker2.prototype.reset = function reset() { this.colors.forEach(function(color) { return color.reset(); }); this.setState({ colors: this.colors }); }; IroColorPicker2.prototype.onMount = function onMount2(container) { this.el = container; this.deferredEmit("mount", this); }; IroColorPicker2.prototype.onColorChange = function onColorChange(color, changes) { this.setState({ color: this.color }); if (this.inputActive) { this.inputActive = false; this.emit("input:change", color, changes); } this.emit("color:change", color, changes); }; IroColorPicker2.prototype.emitInputEvent = function emitInputEvent(type, originId) { if (type === 0) { this.emit("input:start", this.color, originId); } else if (type === 1) { this.emit("input:move", this.color, originId); } else if (type === 2) { this.emit("input:end", this.color, originId); } }; IroColorPicker2.prototype.render = function render2(props, state) { var this$1 = this; var layout = state.layout; if (!Array.isArray(layout)) { switch (layout) { default: layout = [ { component: IroWheel }, { component: IroSlider } ]; } if (state.transparency) { layout.push({ component: IroSlider, options: { sliderType: "alpha" } }); } } return h2("div", { class: "IroColorPicker", id: state.id, style: { display: state.display } }, layout.map(function(ref, componentIndex) { var UiComponent = ref.component; var options = ref.options; return h2(UiComponent, Object.assign({}, state, options, { ref: void 0, onInput: this$1.emitInputEvent.bind(this$1), parent: this$1, index: componentIndex })); })); }; return IroColorPicker2; }(m2); IroColorPicker.defaultProps = Object.assign( {}, iroColorPickerOptionDefaults, { colors: [], display: "block", id: null, layout: "default", margin: null } ); var IroColorPickerWidget = createWidget(IroColorPicker); var iro; (function(iro2) { iro2.version = "5.5.2"; iro2.Color = IroColor; iro2.ColorPicker = IroColorPickerWidget; var ui; (function(ui2) { ui2.h = h2; ui2.ComponentBase = IroComponentWrapper; ui2.Handle = IroHandle; ui2.Slider = IroSlider; ui2.Wheel = IroWheel; ui2.Box = IroBox; })(ui = iro2.ui || (iro2.ui = {})); })(iro || (iro = {})); var iro$1 = iro; var iro_es_default = iro$1; // ../../components/coco/app/elements/color_picker/color_picker.js var color_picker_default = CocoComponent("appColorPicker", ({ selected }) => { return { use: false, selectedColor: selected, display: selected, updating: false, invalid: false, colorWheel: { show: false, instance: null, interacting: false }, getColorWheelToggle() { return getComponent(this.$refs.display.querySelector(".coco-button")); }, init() { this.initColorWheel(); this.$watch("display", (value) => { if (!this.updating) { if (isValidHex(value)) { this.invalid = false; this.selectedColor = formatHex(value); } else { this.invalid = true; } } }); this.$watch("selectedColor", (value) => { const hex = formatHex(value); this.updating = true; this.display = hex; if (this.colorWheel.instance) { this.colorWheel.instance.color.hexString = hex; } this.$dispatch("color-picker:select", { selectedColor: this.selectedColor }); this.$nextTick(() => this.updating = false); }); }, setSelectedColor(color) { this.selectedColor = color; this.invalid = false; }, toggleAdvancedView() { this.colorWheel.show = !this.colorWheel.show; }, initColorWheel() { this.cleanupColorWheel(); const colorWheel = new iro_es_default.ColorPicker(this.$refs.colorWheel, { width: this.$refs.swatches.clientWidth, color: this.selectedColor }); colorWheel.on("input:end", (color) => { if (!this.updating) { this.selectedColor = color.hexString; this.invalid = false; } }); this.colorWheel.instance = colorWheel; }, onResize() { if (this.colorWheel.instance) { this.colorWheel.instance.resize(this.$refs.swatches.clientWidth); } }, toggleColorWheel() { this.colorWheel.show = !this.colorWheel.show; }, cleanupColorWheel() { this.colorWheel.instance = null; this.$refs.colorWheel.innerHTML = ""; }, destroy() { this.getColorWheelToggle().resetState(); this.cleanupColorWheel(); } }; }); // ../../components/coco/app/elements/color_picker_button/color_picker_button.js var color_picker_button_exports = {}; __export(color_picker_button_exports, { default: () => color_picker_button_default }); var color_picker_button_default = CocoComponent("appColorPickerButton", ({ selected }) => { selected = selected ? "#" + selected.replace("#", "") : "#FFFFFF"; return { selectedColor: selected, getPicker() { return getData( this.$root.querySelector("[data-role='color-picker']").firstElementChild ); }, onDropdownMount() { this.getPicker().setSelectedColor(this.selectedColor); } }; }); // ../../components/coco/app/elements/confirm_panel/confirm_panel.js var confirm_panel_exports = {}; __export(confirm_panel_exports, { default: () => confirm_panel_default }); var confirm_panel_default = CocoComponent("appConfirmPanel", () => { return { confirm() { this.$dispatch("confirmation:confirm"); }, cancel() { this.$dispatch("confirmation:cancel"); } }; }); // ../../components/coco/app/elements/image_picker/image_picker.js var image_picker_exports = {}; __export(image_picker_exports, { default: () => image_picker_default }); var image_picker_default = CocoComponent("appImagePicker", ({ src }) => { return { use: [], image: { name: basename(src), file: null, data: src }, get name() { return this.image.name; }, get src() { return this.image.data; }, get hasImage() { return !!this.src; }, get uploader() { return getComponent(this.$refs.uploader.firstElementChild); }, setImage(file, silent = false) { this.image = { file: file.file, name: file.name, data: file.data }; this.uploader.setFile(file); if (silent === false) { this.$dispatch("image-picker:select", { image: this.image }); } }, clearImage(silent = false) { this.uploader.clear(); this.image = { name: null, data: null, file: null }; if (silent === false) { this.$dispatch("image-picker:clear"); } }, browseFiles() { this.uploader.openPicker(); }, replaceImage() { this.uploader.openPicker(); } }; }); // ../../components/coco/app/elements/image_picker_button/image_picker_button.js var image_picker_button_exports = {}; __export(image_picker_button_exports, { default: () => image_picker_button_default }); var image_picker_button_default = CocoComponent("appImagePickerButton", ({ src }) => { return { selectedImage: { name: basename(src), file: null, data: src }, getPicker() { return getData( this.$root.querySelector("[data-role='image-picker'").firstElementChild ); }, handleExternalDrop(event) { this.readFile(event.dataTransfer.files[0]); }, readFile(file) { const reader = new FileReader(); reader.addEventListener("load", () => { this.selectedImage = { name: file.name, file, data: reader.result }; this.dropdown.hide(); }); reader.readAsDataURL(file); }, clearSelectedImage() { this.dropdown.hide(); this.selectedImage = { name: null, data: null, file: null }; }, setSelectedImage(image) { this.dropdown.hide(); this.selectedImage = image; }, onDropdownMount({ detail }) { this.dropdown = detail.dropdown; this.getPicker().setImage(this.selectedImage, true); } }; }); // ../../components/coco/app/elements/menu_button/menu_button.js var menu_button_exports = {}; __export(menu_button_exports, { default: () => menu_button_default }); var menu_button_default = CocoComponent("appMenuButton", () => { return {}; }); // ../../components/coco/app/elements/notice/notice.js var notice_exports = {}; __export(notice_exports, { default: () => notice_default }); var notice_default = CocoComponent("appNotice", () => { return {}; }); // ../../components/coco/app/elements/seamless_textarea/seamless_textarea.js var seamless_textarea_exports = {}; __export(seamless_textarea_exports, { default: () => seamless_textarea_default }); var seamless_textarea_default = CocoComponent("appSeamlessTextarea", () => { return { use: [withSizeObserver()], height: null, observer: null, value: null, options: ["multiline", "focus"], init() { this.value = this.$refs.textarea.value; this.$nextTick(() => { this.onResize(); if (this.$options.focus) { this.$refs.textarea.focus(); this.$refs.textarea.selectionStart = this.$refs.textarea.value.length; } }); }, onResize() { const textarea = this.$refs.textarea; if (textarea) { const styles = window.getComputedStyle(textarea); const fontSize = styles.getPropertyValue("font-size"); textarea.style.height = "4px"; let newHeight = textarea.scrollHeight - parseInt(fontSize, 10) * 0.16; textarea.style.height = `${newHeight}px`; if (this.height !== newHeight) { this.height = newHeight; } } } }; }); // ../../components/coco/app/elements/snackbar/snackbar.js var snackbar_exports = {}; __export(snackbar_exports, { default: () => snackbar_default }); var snackbar_default = CocoComponent("appSnackbar", () => { return { use: false, notificationType: "snackbar", options: ["show", "dismiss", "showDelay", "dismissDelay", "position"], root: { "x-options": "options", "x-notification": "notificationType", "x-show": "notification.shown && !notification.dismissed", "@mouseover": "notification.clearAutoDismiss", "@mouseout": "notification.startAutoDismiss", "@snackbar:show.document": "notification.clearFromQueue", "x-transition:enter": "snackbar-enter", "x-transition:enter-start": "snackbar-enter-start", "x-transition:enter-end": "snackbar-enter-end", "x-transition:leave": "snackbar-leave", "x-transition:leave-start": "snackbar-leave-start", "x-transition:leave-end": "snackbar-leave-end" } }; }); // ../../components/coco/app/elements/system_banner/system_banner.js var system_banner_exports = {}; __export(system_banner_exports, { default: () => system_banner_default }); var system_banner_default = CocoComponent("appSystemBanner", () => { return {}; }); // ../../components/coco/app/elements/toast/toast.js var toast_exports = {}; __export(toast_exports, { default: () => toast_default }); var toast_default = CocoComponent("appToast", () => { return { use: false, notificationType: "toast", options: ["show", "dismiss", "showDelay", "dismissDelay", "position"], root: { "x-options": "options", "x-notification": "notificationType", "x-show": "notification.shown && !notification.dismissed", "x-transition:enter": "toast-enter", "x-transition:enter-start": "toast-enter-start", "x-transition:enter-end": "toast-enter-end", "x-transition:leave": "toast-leave", "x-transition:leave-start": "toast-leave-start", "x-transition:leave-end": "toast-leave-end", "@mouseover": "notification.clearAutoDismiss", "@mouseout": "notification.startAutoDismiss", "@alert:dismiss": "notification.dismiss", "@toast:show.document": "notification.clearFromQueue" } }; }); // ../../components/coco/app/elements/toolbar/toolbar.js var toolbar_exports = {}; __export(toolbar_exports, { default: () => toolbar_default }); var toolbar_default = CocoComponent("appToolbar", () => { return { ready: false, startSectionWidth: null, endSectionWidth: null, get startGroupEl() { return this.$refs.startSection.firstElementChild; }, get endGroupEl() { return this.$refs.endSection.firstElementChild; }, get groups() { return [this.startGroupEl, this.endGroupEl].filter((g3) => g3).map((el) => getComponent(el, false)); }, init() { const toolbarWidth = this.$el.offsetWidth; let startSectionWidth = 0; let endSectionWidth = 0; if (this.startGroupEl) { startSectionWidth = Math.ceil( this.startGroupEl.offsetWidth / toolbarWidth * 100 ); } if (this.endGroupEl) { endSectionWidth = Math.ceil( this.endGroupEl.offsetWidth / toolbarWidth * 100 ); } this.$nextTick(() => { this.startSectionWidth = `${startSectionWidth}%`; this.endSectionWidth = `${endSectionWidth}%`; this.groups.forEach((group) => group.onResize()); this.ready = true; }); } }; }); // import-glob:/home/runner/work/coco/coco/app/assets/js/app|@appComponents/**/*.js var modules3 = [nav_bar_exports, nav_drawer_exports, slide_editor_exports, alert_exports, button_group_exports, color_picker_exports, color_picker_button_exports, confirm_panel_exports, image_picker_exports, image_picker_button_exports, menu_button_exports, notice_exports, seamless_textarea_exports, snackbar_exports, system_banner_exports, toast_exports, toolbar_exports]; var __default3 = modules3; // app/components.js var components_default3 = registerComponents(__default3); // app.js console.info("Initializing Coco JS", package_default.version); start2(); alpine_default2.start(); })(); /*! Bundled license information: lodash/lodash.js: (** * @license * Lodash <https://lodash.com/> * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> * Released under MIT license <https://lodash.com/license> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors *) html2canvas/dist/html2canvas.js: (*! * html2canvas 1.4.1 <https://html2canvas.hertzen.com> * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com> * Released under MIT License *) (*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** *) @alpinejs/focus/dist/module.esm.js: (*! * tabbable 5.2.1 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE *) (*! * focus-trap 6.6.1 * @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE *) @jaames/iro/dist/iro.es.js: (*! * iro.js v5.5.2 * 2016-2021 James Daniel * Licensed under MPL 2.0 * github.com/jaames/iro.js *) */