@trustme24/flext 1.10.0 → 1.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/striptags/src/striptags.js", "../node_modules/handlebars/lib/handlebars/utils.js", "../node_modules/handlebars/lib/handlebars/exception.js", "../node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "../node_modules/handlebars/lib/handlebars/helpers/each.js", "../node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "../node_modules/handlebars/lib/handlebars/helpers/if.js", "../node_modules/handlebars/lib/handlebars/helpers/log.js", "../node_modules/handlebars/lib/handlebars/helpers/lookup.js", "../node_modules/handlebars/lib/handlebars/helpers/with.js", "../node_modules/handlebars/lib/handlebars/helpers.js", "../node_modules/handlebars/lib/handlebars/decorators/inline.js", "../node_modules/handlebars/lib/handlebars/decorators.js", "../node_modules/handlebars/lib/handlebars/logger.js", "../node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "../node_modules/handlebars/lib/handlebars/internal/proto-access.js", "../node_modules/handlebars/lib/handlebars/base.js", "../node_modules/handlebars/lib/handlebars/safe-string.js", "../node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "../node_modules/handlebars/lib/handlebars/runtime.js", "../node_modules/handlebars/lib/handlebars/no-conflict.js", "../node_modules/handlebars/lib/handlebars.runtime.js", "../node_modules/handlebars/lib/handlebars/compiler/ast.js", "../node_modules/handlebars/lib/handlebars/compiler/parser.js", "../node_modules/handlebars/lib/handlebars/compiler/visitor.js", "../node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "../node_modules/handlebars/lib/handlebars/compiler/helpers.js", "../node_modules/handlebars/lib/handlebars/compiler/base.js", "../node_modules/handlebars/lib/handlebars/compiler/compiler.js", "../node_modules/source-map/lib/base64.js", "../node_modules/source-map/lib/base64-vlq.js", "../node_modules/source-map/lib/util.js", "../node_modules/source-map/lib/array-set.js", "../node_modules/source-map/lib/mapping-list.js", "../node_modules/source-map/lib/source-map-generator.js", "../node_modules/source-map/lib/binary-search.js", "../node_modules/source-map/lib/quick-sort.js", "../node_modules/source-map/lib/source-map-consumer.js", "../node_modules/source-map/lib/source-node.js", "../node_modules/source-map/source-map.js", "../node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "../node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "../node_modules/handlebars/lib/handlebars.js", "../node_modules/handlebars/lib/handlebars/compiler/printer.js", "../node_modules/handlebars/lib/index.js", "../node_modules/written-number/lib/util.js", "../node_modules/written-number/lib/i18n/en.json", "../node_modules/written-number/lib/i18n/es.json", "../node_modules/written-number/lib/i18n/ar.json", "../node_modules/written-number/lib/i18n/az.json", "../node_modules/written-number/lib/i18n/pt.json", "../node_modules/written-number/lib/i18n/pt-PT.json", "../node_modules/written-number/lib/i18n/fr.json", "../node_modules/written-number/lib/i18n/eo.json", "../node_modules/written-number/lib/i18n/it.json", "../node_modules/written-number/lib/i18n/vi.json", "../node_modules/written-number/lib/i18n/tr.json", "../node_modules/written-number/lib/i18n/hu.json", "../node_modules/written-number/lib/i18n/en-indian.json", "../node_modules/written-number/lib/i18n/uk.json", "../node_modules/written-number/lib/i18n/ru.json", "../node_modules/written-number/lib/i18n/id.json", "../node_modules/written-number/lib/index.js", "../src/types.ts", "../src/errors.ts", "../src/lib/index.ts", "../node_modules/luxon/src/errors.js", "../node_modules/luxon/src/impl/formats.js", "../node_modules/luxon/src/zone.js", "../node_modules/luxon/src/zones/systemZone.js", "../node_modules/luxon/src/zones/IANAZone.js", "../node_modules/luxon/src/impl/locale.js", "../node_modules/luxon/src/zones/fixedOffsetZone.js", "../node_modules/luxon/src/zones/invalidZone.js", "../node_modules/luxon/src/impl/zoneUtil.js", "../node_modules/luxon/src/impl/digits.js", "../node_modules/luxon/src/settings.js", "../node_modules/luxon/src/impl/invalid.js", "../node_modules/luxon/src/impl/conversions.js", "../node_modules/luxon/src/impl/util.js", "../node_modules/luxon/src/impl/english.js", "../node_modules/luxon/src/impl/formatter.js", "../node_modules/luxon/src/impl/regexParser.js", "../node_modules/luxon/src/duration.js", "../node_modules/luxon/src/interval.js", "../node_modules/luxon/src/info.js", "../node_modules/luxon/src/impl/diff.js", "../node_modules/luxon/src/impl/tokenParser.js", "../node_modules/luxon/src/datetime.js", "../node_modules/luxon/src/luxon.js", "../node_modules/@unocss/core/dist/index.mjs", "../node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../node_modules/magic-string/src/BitSet.js", "../node_modules/magic-string/src/Chunk.js", "../node_modules/magic-string/src/SourceMap.js", "../node_modules/magic-string/src/utils/guessIndent.js", "../node_modules/magic-string/src/utils/getRelativePath.js", "../node_modules/magic-string/src/utils/isObject.js", "../node_modules/magic-string/src/utils/getLocator.js", "../node_modules/magic-string/src/utils/Mappings.js", "../node_modules/magic-string/src/MagicString.js", "../node_modules/magic-string/src/Bundle.js", "../node_modules/@unocss/rule-utils/dist/index.mjs", "../node_modules/@unocss/extractor-arbitrary-variants/dist/index.mjs", "../node_modules/@unocss/preset-typography/dist/index.mjs", "../node_modules/@unocss/preset-wind4/dist/postprocess.mjs", "../node_modules/@unocss/preset-wind4/dist/chunk-w_xFUvYo.mjs", "../node_modules/@unocss/preset-wind4/dist/utils-BiCtQrPC.mjs", "../node_modules/@unocss/preset-wind4/dist/container-Bma9LDm4.mjs", "../node_modules/@unocss/preset-wind4/dist/rules.mjs", "../node_modules/@unocss/preset-wind4/dist/shortcuts.mjs", "../node_modules/@unocss/preset-wind4/dist/colors-hDdKuL6f.mjs", "../node_modules/@unocss/preset-wind4/dist/theme.mjs", "../node_modules/@unocss/preset-wind4/dist/variants-jhZqwv4U.mjs", "../node_modules/@unocss/preset-wind4/dist/index.mjs", "../src/lib/unocssShadowDomHack.css", "../src/modules/index.ts", "../src/modules/array/index.ts", "../src/modules/cond/index.ts", "../src/modules/date/index.ts", "../src/modules/match/index.ts", "../src/modules/math/index.ts", "../src/modules/media/index.ts", "../src/modules/number/index.ts", "../src/modules/number/locales/kkKz.json", "../src/modules/number/localeNames.json", "../src/modules/put/index.ts", "../src/modules/string/index.ts", "../src/index.ts"],
4
+ "sourcesContent": ["'use strict';\n\n(function (global) {\n\n // minimal symbol polyfill for IE11 and others\n if (typeof Symbol !== 'function') {\n var Symbol = function(name) {\n return name;\n }\n\n Symbol.nonNative = true;\n }\n\n const STATE_PLAINTEXT = Symbol('plaintext');\n const STATE_HTML = Symbol('html');\n const STATE_COMMENT = Symbol('comment');\n\n const ALLOWED_TAGS_REGEX = /<(\\w*)>/g;\n const NORMALIZE_TAG_REGEX = /<\\/?([^\\s\\/>]+)/;\n\n function striptags(html, allowable_tags, tag_replacement) {\n html = html || '';\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return striptags_internal(html, context);\n }\n\n function init_striptags_stream(allowable_tags, tag_replacement) {\n allowable_tags = allowable_tags || [];\n tag_replacement = tag_replacement || '';\n\n let context = init_context(allowable_tags, tag_replacement);\n\n return function striptags_stream(html) {\n return striptags_internal(html || '', context);\n };\n }\n\n striptags.init_streaming_mode = init_striptags_stream;\n\n function init_context(allowable_tags, tag_replacement) {\n allowable_tags = parse_allowable_tags(allowable_tags);\n\n return {\n allowable_tags : allowable_tags,\n tag_replacement: tag_replacement,\n\n state : STATE_PLAINTEXT,\n tag_buffer : '',\n depth : 0,\n in_quote_char : ''\n };\n }\n\n function striptags_internal(html, context) {\n if (typeof html != \"string\") {\n throw new TypeError(\"'html' parameter must be a string\");\n }\n\n let allowable_tags = context.allowable_tags;\n let tag_replacement = context.tag_replacement;\n\n let state = context.state;\n let tag_buffer = context.tag_buffer;\n let depth = context.depth;\n let in_quote_char = context.in_quote_char;\n let output = '';\n\n for (let idx = 0, length = html.length; idx < length; idx++) {\n let char = html[idx];\n\n if (state === STATE_PLAINTEXT) {\n switch (char) {\n case '<':\n state = STATE_HTML;\n tag_buffer += char;\n break;\n\n default:\n output += char;\n break;\n }\n }\n\n else if (state === STATE_HTML) {\n switch (char) {\n case '<':\n // ignore '<' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // we're seeing a nested '<'\n depth++;\n break;\n\n case '>':\n // ignore '>' if inside a quote\n if (in_quote_char) {\n break;\n }\n\n // something like this is happening: '<<>>'\n if (depth) {\n depth--;\n\n break;\n }\n\n // this is closing the tag in tag_buffer\n in_quote_char = '';\n state = STATE_PLAINTEXT;\n tag_buffer += '>';\n\n if (allowable_tags.has(normalize_tag(tag_buffer))) {\n output += tag_buffer;\n } else {\n output += tag_replacement;\n }\n\n tag_buffer = '';\n break;\n\n case '\"':\n case '\\'':\n // catch both single and double quotes\n\n if (char === in_quote_char) {\n in_quote_char = '';\n } else {\n in_quote_char = in_quote_char || char;\n }\n\n tag_buffer += char;\n break;\n\n case '-':\n if (tag_buffer === '<!-') {\n state = STATE_COMMENT;\n }\n\n tag_buffer += char;\n break;\n\n case ' ':\n case '\\n':\n if (tag_buffer === '<') {\n state = STATE_PLAINTEXT;\n output += '< ';\n tag_buffer = '';\n\n break;\n }\n\n tag_buffer += char;\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n\n else if (state === STATE_COMMENT) {\n switch (char) {\n case '>':\n if (tag_buffer.slice(-2) == '--') {\n // close the comment\n state = STATE_PLAINTEXT;\n }\n\n tag_buffer = '';\n break;\n\n default:\n tag_buffer += char;\n break;\n }\n }\n }\n\n // save the context for future iterations\n context.state = state;\n context.tag_buffer = tag_buffer;\n context.depth = depth;\n context.in_quote_char = in_quote_char;\n\n return output;\n }\n\n function parse_allowable_tags(allowable_tags) {\n let tag_set = new Set();\n\n if (typeof allowable_tags === 'string') {\n let match;\n\n while ((match = ALLOWED_TAGS_REGEX.exec(allowable_tags))) {\n tag_set.add(match[1]);\n }\n }\n\n else if (!Symbol.nonNative &&\n typeof allowable_tags[Symbol.iterator] === 'function') {\n\n tag_set = new Set(allowable_tags);\n }\n\n else if (typeof allowable_tags.forEach === 'function') {\n // IE11 compatible\n allowable_tags.forEach(tag_set.add, tag_set);\n }\n\n return tag_set;\n }\n\n function normalize_tag(tag_buffer) {\n let match = NORMALIZE_TAG_REGEX.exec(tag_buffer);\n\n return match ? match[1].toLowerCase() : null;\n }\n\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(function module_factory() { return striptags; });\n }\n\n else if (typeof module === 'object' && module.exports) {\n // Node\n module.exports = striptags;\n }\n\n else {\n // Browser\n global.striptags = striptags;\n }\n}(this));\n", "const escape = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;',\n '=': '&#x3D;'\n};\n\nconst badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n for (let i = 1; i < arguments.length; i++) {\n for (let key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n isFunction = function(value) {\n return (\n typeof value === 'function' &&\n toString.call(value) === '[object Function]'\n );\n };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n Array.isArray ||\n function(value) {\n return value && typeof value === 'object'\n ? toString.call(value) === '[object Array]'\n : false;\n };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n for (let i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nexport function escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nexport function createFrame(object) {\n let frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nexport function blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n 'description',\n 'fileName',\n 'lineNumber',\n 'endLineNumber',\n 'message',\n 'name',\n 'number',\n 'stack'\n];\n\nfunction Exception(message, node) {\n let loc = node && node.loc,\n line,\n endLineNumber,\n column,\n endColumn;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n let tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (let idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n instance.registerHelper('blockHelperMissing', function(context, options) {\n let inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n let data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.name\n );\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isArray,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('each', function(context, options) {\n if (!options) {\n throw new Exception('Must pass iterator to #each');\n }\n\n let fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data,\n contextPath;\n\n if (options.data && options.ids) {\n contextPath =\n appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret =\n ret +\n fn(context[field], {\n data: data,\n blockParams: blockParams(\n [context[field], field],\n [contextPath + field, null]\n )\n });\n }\n\n if (context && typeof context === 'object') {\n if (isArray(context)) {\n for (let j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n const newContext = [];\n const iterator = context[Symbol.iterator]();\n for (let it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (let j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n let priorKey;\n\n Object.keys(context).forEach(key => {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new Exception(\n 'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n );\n }\n });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('if', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#if requires exactly one argument');\n }\n if (isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function(conditional, options) {\n if (arguments.length != 2) {\n throw new Exception('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n}\n", "export default function(instance) {\n instance.registerHelper('log', function(/* message, options */) {\n let args = [undefined],\n options = arguments[arguments.length - 1];\n for (let i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n let level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log(...args);\n });\n}\n", "export default function(instance) {\n instance.registerHelper('lookup', function(obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n}\n", "import {\n appendContextPath,\n blockParams,\n createFrame,\n isEmpty,\n isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n instance.registerHelper('with', function(context, options) {\n if (arguments.length != 2) {\n throw new Exception('#with requires exactly one argument');\n }\n if (isFunction(context)) {\n context = context.call(this);\n }\n\n let fn = options.fn;\n\n if (!isEmpty(context)) {\n let data = options.data;\n if (options.data && options.ids) {\n data = createFrame(options.data);\n data.contextPath = appendContextPath(\n options.data.contextPath,\n options.ids[0]\n );\n }\n\n return fn(context, {\n data: data,\n blockParams: blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n registerBlockHelperMissing(instance);\n registerEach(instance);\n registerHelperMissing(instance);\n registerIf(instance);\n registerLog(instance);\n registerLookup(instance);\n registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n instance.registerDecorator('inline', function(fn, props, container, options) {\n let ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function(context, options) {\n // Create a new partials stack frame prior to exec.\n let original = container.partials;\n container.partials = extend({}, original, props.partials);\n let ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function(level) {\n if (typeof level === 'string') {\n let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function(level, ...message) {\n level = logger.lookupLevel(level);\n\n if (\n typeof console !== 'undefined' &&\n logger.lookupLevel(logger.level) <= level\n ) {\n let method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n console[method](...message); // eslint-disable-line no-console\n }\n }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n let defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n let defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: createNewLookupObject(\n defaultPropertyWhiteList,\n runtimeOptions.allowedProtoProperties\n ),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: createNewLookupObject(\n defaultMethodWhiteList,\n runtimeOptions.allowedProtoMethods\n ),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log(\n 'error',\n `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n `You can add a runtime option to disable the check or this warning:\\n` +\n `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n );\n }\n}\n\nexport function resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(propertyName => {\n delete loggedProperties[propertyName];\n });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n registerDefaultHelpers(this);\n registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: logger,\n log: logger.log,\n\n registerHelper: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple helpers');\n }\n extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function(name, partial) {\n if (toString.call(name) === objectType) {\n extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new Exception(\n `Attempting to register a partial called \"${name}\" as undefined`\n );\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function(name, fn) {\n if (toString.call(name) === objectType) {\n if (fn) {\n throw new Exception('Arg not supported with multiple decorators');\n }\n extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses() {\n resetLoggedProperties();\n }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n let wrapper = function(/* dynamic arguments */) {\n const options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n COMPILER_REVISION,\n createFrame,\n LAST_COMPATIBLE_COMPILER_REVISION,\n REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n createProtoAccessControl,\n resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n currentRevision = COMPILER_REVISION;\n\n if (\n compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n compilerRevision <= COMPILER_REVISION\n ) {\n return;\n }\n\n if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n const runtimeVersions = REVISION_CHANGES[currentRevision],\n compilerVersions = REVISION_CHANGES[compilerRevision];\n throw new Exception(\n 'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n 'Please update your precompiler to a newer version (' +\n runtimeVersions +\n ') or downgrade your runtime to an older version (' +\n compilerVersions +\n ').'\n );\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new Exception(\n 'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n 'Please update your runtime to a newer version (' +\n compilerInfo[1] +\n ').'\n );\n }\n}\n\nexport function template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new Exception('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new Exception('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n const templateWasPrecompiledWithCompilerV7 =\n templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n let extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n let result = env.VM.invokePartial.call(\n this,\n partial,\n context,\n extendedOptions\n );\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(\n partial,\n templateSpec.compilerOptions,\n env\n );\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n let lines = result.split('\\n');\n for (let i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new Exception(\n 'The partial ' +\n options.name +\n ' could not be compiled when running in runtime-only mode'\n );\n }\n }\n\n // Just add water\n let container = {\n strict: function(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new Exception('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function(parent, propertyName) {\n let result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function(depths, name) {\n const len = depths.length;\n for (let i = 0; i < len; i++) {\n let result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function(i) {\n let ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function(i, data, declaredBlockParams, blockParams, depths) {\n let programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(\n this,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n );\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function(param, common) {\n let obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context, options = {}) {\n let data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n let depths,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths =\n context != options.depths[0]\n ? [context].concat(options.depths)\n : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return (\n '' +\n templateSpec.main(\n container,\n context,\n container.helpers,\n container.partials,\n data,\n blockParams,\n depths\n )\n );\n }\n\n main = executeDecorators(\n templateSpec.main,\n main,\n container,\n options.depths || [],\n data,\n blockParams\n );\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function(options) {\n if (!options.partial) {\n let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(\n options.partials,\n env.partials\n );\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend(\n {},\n env.decorators,\n options.decorators\n );\n }\n\n container.hooks = {};\n container.protoAccessControl = createProtoAccessControl(options);\n\n let keepHelperInHelpers =\n options.allowCallsToHelperMissing ||\n templateWasPrecompiledWithCompilerV7;\n moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function(i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new Exception('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new Exception('must pass parent depths');\n }\n\n return wrapProgram(\n container,\n i,\n templateSpec[i],\n data,\n 0,\n blockParams,\n depths\n );\n };\n return ret;\n}\n\nexport function wrapProgram(\n container,\n i,\n fn,\n data,\n declaredBlockParams,\n blockParams,\n depths\n) {\n function prog(context, options = {}) {\n let currentDepths = depths;\n if (\n depths &&\n context != depths[0] &&\n !(context === container.nullContext && depths[0] === null)\n ) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(\n container,\n context,\n container.helpers,\n container.partials,\n options.data || data,\n blockParams && [options.blockParams].concat(blockParams),\n currentDepths\n );\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n const currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n let partialBlock;\n if (options.fn && options.fn !== noop) {\n options.data = createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n let fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n context,\n options = {}\n ) {\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new Exception('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nexport function noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n let props = {};\n prog = fn.decorator(\n prog,\n props,\n container,\n depths && depths[0],\n data,\n blockParams,\n depths\n );\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(helperName => {\n let helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n const lookupProperty = container.lookupProperty;\n return wrapHelper(helper, options => {\n return Utils.extend({ lookupProperty }, options);\n });\n}\n", "/* global globalThis */\nexport default function(Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function() {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function() {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n const $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function() {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n let hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = SafeString;\n hb.Exception = Exception;\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function(spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function(node) {\n return (\n node.type === 'SubExpression' ||\n ((node.type === 'MustacheStatement' ||\n node.type === 'BlockStatement') &&\n !!((node.params && node.params.length) || node.hash))\n );\n },\n\n scopedId: function(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function(path) {\n return (\n path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n );\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0-1].loc);\n program.chained = true;\n\n this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n indent: '',\n strip: yy.stripFlags($$[$0-4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0-3],\n params: $$[$0-2],\n hash: $$[$0-1],\n loc: yy.locInfo(this._$)\n };\n \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n throw new Error(str);\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\")\n this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\")\n this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state])\n if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0)\n recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\nsetInput:function (input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n if (this.options.ranges) this.yylloc.range = [0,0];\n this.offset = 0;\n return this;\n },\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n\n this._input = this._input.slice(1);\n return ch;\n },\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length-1);\n this.matched = this.matched.substr(0, this.matched.length-1);\n\n if (lines.length-1) this.yylineno -= lines.length-1;\n var r = this.yylloc.range;\n\n this.yylloc = {first_line: this.yylloc.first_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\nmore:function () {\n this._more = true;\n return this;\n },\nless:function (n) {\n this.unput(this.match.slice(n));\n },\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n },\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n },\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n\n var token,\n match,\n tempMatch,\n index,\n col,\n lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i=0;i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {first_line: this.yylloc.last_line,\n last_line: this.yylineno+1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;\n else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n {text: \"\", token: null, line: this.yylineno});\n }\n },\nlex:function lex () {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\npopState:function popState () {\n return this.conditionStack.pop();\n },\n_currentRules:function _currentRules () {\n return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n },\ntopState:function () {\n return this.conditionStack[this.conditionStack.length-2];\n },\npushState:function begin (condition) {\n this.begin(condition);\n }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0,1);\n this.begin(\"mu\");\n } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0,1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if(yy_.yytext) return 15;\n \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n this.popState();\n return 15;\n \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n this.popState();\n return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n this.popState();\n this.begin('raw');\n return 23;\n \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n\nbreak;\ncase 22:\n this.popState();\n return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n this.parents = [];\n}\n\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function(node, name) {\n let value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new Exception(\n 'Unexpected node type \"' +\n value.type +\n '\" found when accepting ' +\n name +\n ' on ' +\n node.type\n );\n }\n node[name] = value;\n }\n },\n\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function(node, name) {\n this.acceptKey(node, name);\n\n if (!node[name]) {\n throw new Exception(node.type + ' requires ' + name);\n }\n },\n\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function(array) {\n for (let i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n\n accept: function(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new Exception('Unknown type: ' + object.type, object);\n }\n\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n\n let ret = this[object.type](object);\n\n this.current = this.parents.shift();\n\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n\n Program: function(program) {\n this.acceptArray(program.body);\n },\n\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n\n PartialStatement: visitPartial,\n PartialBlockStatement: function(partial) {\n visitPartial.call(this, partial);\n\n this.acceptKey(partial, 'program');\n },\n\n ContentStatement: function(/* content */) {},\n CommentStatement: function(/* comment */) {},\n\n SubExpression: visitSubExpression,\n\n PathExpression: function(/* path */) {},\n\n StringLiteral: function(/* string */) {},\n NumberLiteral: function(/* number */) {},\n BooleanLiteral: function(/* bool */) {},\n UndefinedLiteral: function(/* literal */) {},\n NullLiteral: function(/* literal */) {},\n\n Hash: function(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\n\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n const doStandalone = !this.options.ignoreStandalone;\n\n let isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n\n let body = program.body;\n for (let i = 0, l = body.length; i < l; i++) {\n let current = body[i],\n strip = this.accept(current);\n\n if (!strip) {\n continue;\n }\n\n let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone =\n strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n\n omitLeft((current.inverse || current.program).body);\n }\n }\n\n return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n block\n) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n let program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n\n let strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n\n if (inverse) {\n let inverseStrip = block.inverseStrip;\n\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (\n !this.options.ignoreStandalone &&\n isPrevWhitespace(program.body) &&\n isNextWhitespace(firstInverse.body)\n ) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n\n return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n mustache\n) {\n return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n node\n) {\n /* istanbul ignore next */\n let strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n let prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n prev.original\n );\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n\n let next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n next.original\n );\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n let current = body[i == null ? 0 : i + 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.rightStripped)\n ) {\n return;\n }\n\n let original = current.value;\n current.value = current.value.replace(\n multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n ''\n );\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n let current = body[i == null ? body.length - 1 : i - 1];\n if (\n !current ||\n current.type !== 'ContentStatement' ||\n (!multiple && current.leftStripped)\n ) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n let original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n\n if (open.path.original !== close) {\n let errorNode = { loc: open.path.loc };\n\n throw new Exception(\n open.path.original + \" doesn't match \" + close,\n errorNode\n );\n }\n}\n\nexport function SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\n\nexport function id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\n\nexport function stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\n\nexport function stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n\n let original = data ? '@' : '',\n dig = [],\n depth = 0;\n\n for (let i = 0, l = parts.length; i < l; i++) {\n let part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new Exception('Invalid path: ' + original, { loc });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n\n return {\n type: 'PathExpression',\n data,\n depth,\n parts: dig,\n original,\n loc\n };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n let escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n let decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path,\n params,\n hash,\n escaped,\n strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n\n locInfo = this.locInfo(locInfo);\n let program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\n\nexport function prepareBlock(\n openBlock,\n program,\n inverseAndProgram,\n close,\n inverted,\n locInfo\n) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n\n let decorator = /\\*/.test(openBlock.open);\n\n program.blockParams = openBlock.blockParams;\n\n let inverse, inverseStrip;\n\n if (inverseAndProgram) {\n if (decorator) {\n throw new Exception(\n 'Unexpected inverse block on decorator',\n inverseAndProgram\n );\n }\n\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program,\n inverse,\n openStrip: openBlock.strip,\n inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n\nexport function prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n const firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n\n parser.yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function(locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n\n let ast = parser.parse(input);\n\n return ast;\n}\n\nexport function parse(input, options) {\n let ast = parseWithoutProcessing(input, options);\n let strip = new WhitespaceControl(options);\n\n return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n\n equals: function(other) {\n let len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n let opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (\n opcode.opcode !== otherOpcode.opcode ||\n !argEquals(opcode.args, otherOpcode.args)\n ) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (let i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n\n return true;\n },\n\n guid: 0,\n\n compile: function(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n\n options.blockParams = options.blockParams || [];\n\n options.knownHelpers = extend(\n Object.create(null),\n {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n if: true,\n unless: true,\n with: true,\n log: true,\n lookup: true\n },\n options.knownHelpers\n );\n\n return this.accept(program);\n },\n\n compileProgram: function(program) {\n let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n\n this.usePartial = this.usePartial || result.usePartial;\n\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n\n return guid;\n },\n\n accept: function(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new Exception('Unknown type: ' + node.type, node);\n }\n\n this.sourceNode.unshift(node);\n let ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n\n Program: function(program) {\n this.options.blockParams.unshift(program.blockParams);\n\n let body = program.body,\n bodyLength = body.length;\n for (let i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n\n this.options.blockParams.shift();\n\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n return this;\n },\n\n BlockStatement: function(block) {\n transformLiteralToPath(block);\n\n let program = block.program,\n inverse = block.inverse;\n\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n\n let type = this.classifySexpr(block);\n\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n\n this.opcode('append');\n },\n\n DecoratorBlock(decorator) {\n let program = decorator.program && this.compileProgram(decorator.program);\n let params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n\n PartialStatement: function(partial) {\n this.usePartial = true;\n\n let program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n\n let params = partial.params;\n if (params.length > 1) {\n throw new Exception(\n 'Unsupported number of partial arguments: ' + params.length,\n partial\n );\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({ type: 'PathExpression', parts: [], depth: 0 });\n }\n }\n\n let partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n\n this.setupFullMustacheParams(partial, program, undefined, true);\n\n let indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n\n MustacheStatement: function(mustache) {\n this.SubExpression(mustache);\n\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n\n ContentStatement: function(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n\n CommentStatement: function() {},\n\n SubExpression: function(sexpr) {\n transformLiteralToPath(sexpr);\n let type = this.classifySexpr(sexpr);\n\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function(sexpr, program, inverse) {\n let path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n\n this.opcode('getContext', path.depth);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n path.strict = true;\n this.accept(path);\n\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n\n simpleSexpr: function(sexpr) {\n let path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n\n helperSexpr: function(sexpr, program, inverse) {\n let params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new Exception(\n 'You specified knownHelpersOnly, but used the unknown helper ' + name,\n sexpr\n );\n } else {\n path.strict = true;\n path.falsy = true;\n\n this.accept(path);\n this.opcode(\n 'invokeHelper',\n params.length,\n path.original,\n AST.helpers.simpleId(path)\n );\n }\n },\n\n PathExpression: function(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n\n let name = path.parts[0],\n scoped = AST.helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode(\n 'lookupOnContext',\n path.parts,\n path.falsy,\n path.strict,\n scoped\n );\n }\n },\n\n StringLiteral: function(string) {\n this.opcode('pushString', string.value);\n },\n\n NumberLiteral: function(number) {\n this.opcode('pushLiteral', number.value);\n },\n\n BooleanLiteral: function(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n\n UndefinedLiteral: function() {\n this.opcode('pushLiteral', 'undefined');\n },\n\n NullLiteral: function() {\n this.opcode('pushLiteral', 'null');\n },\n\n Hash: function(hash) {\n let pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n\n this.opcode('pushHash');\n\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n\n // HELPERS\n opcode: function(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n\n addDepth: function(depth) {\n if (!depth) {\n return;\n }\n\n this.useDepths = true;\n },\n\n classifySexpr: function(sexpr) {\n let isSimple = AST.helpers.simpleId(sexpr.path);\n\n let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n let isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n let name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n\n pushParams: function(params) {\n for (let i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n\n pushParam: function(val) {\n let value = val.value != null ? val.value : val.original || '';\n\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n let blockParamIndex;\n if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n let blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value\n .replace(/^this(?:\\.|$)/, '')\n .replace(/^\\.\\//, '')\n .replace(/^\\.$/, '');\n }\n\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n\n setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n let params = sexpr.params;\n this.pushParams(params);\n\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n\n return params;\n },\n\n blockParamIndex: function(name) {\n for (\n let depth = 0, len = this.options.blockParams.length;\n depth < len;\n depth++\n ) {\n let blockParams = this.options.blockParams[depth],\n param = blockParams && indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\n\nexport function precompile(input, options, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n input\n );\n }\n\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n if (\n input == null ||\n (typeof input !== 'string' && input.type !== 'Program')\n ) {\n throw new Exception(\n 'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n input\n );\n }\n\n options = extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n\n let compiled;\n\n function compileInput() {\n let ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(\n environment,\n options,\n undefined,\n true\n );\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function(setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function(i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\n\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n\n if (isArray(a) && isArray(b) && a.length === b.length) {\n for (let i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\n\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n let literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // \u201Csources\u201D entry. This value is prepended to the individual\n // entries in the \u201Csource\u201D field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // \u201CsourceRoot\u201D, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n let SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {\n /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function(line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function(chunks) {\n if (isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function() {\n return { code: this.toString() };\n },\n toString: function() {\n return this.src;\n }\n };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n if (isArray(chunk)) {\n let ret = [];\n\n for (let i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\n\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\n\nCodeGen.prototype = {\n isEmpty() {\n return !this.source.length;\n },\n prepend: function(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n\n merge: function() {\n let source = this.empty();\n this.each(function(line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n\n each: function(iter) {\n for (let i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n\n empty: function() {\n let loc = this.currentLocation || { start: {} };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n\n chunk = castChunk(chunk, this, loc);\n\n return new SourceNode(\n loc.start.line,\n loc.start.column,\n this.srcFile,\n chunk\n );\n },\n\n functionCall: function(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n\n quotedString: function(str) {\n return (\n '\"' +\n (str + '')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') +\n '\"'\n );\n },\n\n objectLiteral: function(obj) {\n let pairs = [];\n\n Object.keys(obj).forEach(key => {\n let value = castChunk(obj[key], this);\n if (value !== 'undefined') {\n pairs.push([this.quotedString(key), ':', value]);\n }\n });\n\n let ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n\n generateList: function(entries) {\n let ret = this.empty();\n\n for (let i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n\n ret.add(castChunk(entries[i], this));\n }\n\n return ret;\n },\n\n generateArray: function(entries) {\n let ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n\n return ret;\n }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function(name) {\n return [\n this.aliasable('container.lookup'),\n '(depths, ',\n JSON.stringify(name),\n ')'\n ];\n },\n\n compilerInfo: function() {\n const revision = COMPILER_REVISION,\n versions = REVISION_CHANGES[revision];\n return [revision, versions];\n },\n\n appendToBuffer: function(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n\n initializeBuffer: function() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n\n lookupPropertyFunctionIsUsed: false,\n\n compile: function(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n\n this.preamble();\n\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = { list: [] };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n\n this.compileChildren(environment, options);\n\n this.useDepths =\n this.useDepths ||\n environment.useDepths ||\n environment.useDecorators ||\n this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n let opcodes = environment.opcodes,\n opcode,\n firstLoc,\n i,\n l;\n\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new Exception('Compile completed with content left on stack');\n }\n\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n\n this.decorators.prepend([\n 'var decorators = container.decorators, ',\n this.lookupPropertyFunctionVarDeclaration(),\n ';\\n'\n ]);\n this.decorators.push('return fn;');\n\n if (asObject) {\n this.decorators = Function.apply(this, [\n 'fn',\n 'props',\n 'container',\n 'depth0',\n 'data',\n 'blockParams',\n 'depths',\n this.decorators.merge()\n ]);\n } else {\n this.decorators.prepend(\n 'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n );\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n\n let fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n let ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n\n let { programs, decorators } = this.context;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n\n this.source.currentLocation = { start: { line: 1, column: 0 } };\n ret = this.objectLiteral(ret);\n\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({ file: options.destName });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n\n return ret;\n } else {\n return fn;\n }\n },\n\n preamble: function() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new CodeGen(this.options.srcName);\n this.decorators = new CodeGen(this.options.srcName);\n },\n\n createFunctionContext: function(asObject) {\n let varDeclarations = '';\n\n let locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n let aliasCount = 0;\n Object.keys(this.aliases).forEach(alias => {\n let node = this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n\n let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n let source = this.mergeSource(varDeclarations);\n\n if (asObject) {\n params.push(source);\n\n return Function.apply(this, params);\n } else {\n return this.source.wrap([\n 'function(',\n params.join(','),\n ') {\\n ',\n source,\n '}'\n ]);\n }\n },\n mergeSource: function(varDeclarations) {\n let isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst,\n sourceSeen,\n bufferStart,\n bufferEnd;\n this.source.each(line => {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations +=\n ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n\n if (varDeclarations) {\n this.source.prepend(\n 'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n );\n }\n\n return this.source.merge();\n },\n\n lookupPropertyFunctionVarDeclaration: function() {\n return `\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n `.trim();\n },\n\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function(name) {\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n\n let blockName = this.popStack();\n params.splice(1, 0, blockName);\n\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n let blockHelperMissing = this.aliasable(\n 'container.hooks.blockHelperMissing'\n ),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n\n this.flushInline();\n\n let current = this.topStack();\n params.splice(1, 0, current);\n\n this.pushSource([\n 'if (!',\n this.lastHelper,\n ') { ',\n current,\n ' = ',\n this.source.functionCall(blockHelperMissing, 'call', params),\n '}'\n ]);\n },\n\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n\n this.pendingContent = content;\n },\n\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function() {\n if (this.isInline()) {\n this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n let local = this.popStack();\n this.pushSource([\n 'if (',\n local,\n ' != null) { ',\n this.appendToBuffer(local, undefined, true),\n ' }'\n ]);\n if (this.environment.isSimple) {\n this.pushSource([\n 'else { ',\n this.appendToBuffer(\"''\", undefined, true),\n ' }'\n ]);\n }\n }\n },\n\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function() {\n this.pushSource(\n this.appendToBuffer([\n this.aliasable('container.escapeExpression'),\n '(',\n this.popStack(),\n ')'\n ])\n );\n },\n\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function(depth) {\n this.lastContext = depth;\n },\n\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function(parts, falsy, strict, scoped) {\n let i = 0;\n\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n\n this.resolvePath('context', parts, i, falsy, strict);\n },\n\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function(blockParamId, parts) {\n this.useBlockParams = true;\n\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n\n this.resolvePath('data', parts, 0, true, strict);\n },\n\n resolvePath: function(type, parts, i, falsy, strict) {\n if (this.options.strict || this.options.assumeObjects) {\n this.push(\n strictLookup(this.options.strict && strict, this, parts, i, type)\n );\n return;\n }\n\n let len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(current => {\n let lookup = this.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function() {\n this.push([\n this.aliasable('container.lambda'),\n '(',\n this.popStack(),\n ', ',\n this.contextName(0),\n ')'\n ]);\n },\n\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n\n emptyHash: function(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = { values: {}, types: [], contexts: [], ids: [] };\n },\n popHash: function() {\n let hash = this.hash;\n this.hash = this.hashes.pop();\n\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n\n this.push(this.objectLiteral(hash.values));\n },\n\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function(value) {\n this.pushStackLiteral(value);\n },\n\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator(paramSize, name) {\n let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n\n this.decorators.push([\n 'fn = ',\n this.decorators.functionCall(foundDecorator, '', [\n 'fn',\n 'props',\n 'container',\n options\n ]),\n ' || fn;'\n ]);\n },\n\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function(paramSize, name, isSimple) {\n let nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n\n let possibleFunctionCalls = [];\n\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n let functionLookupCode = [\n '(',\n this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n ')'\n ];\n let functionCall = this.source.functionCall(\n functionLookupCode,\n 'call',\n helper.callParams\n );\n this.push(functionCall);\n },\n\n itemsSeparatedBy: function(items, separator) {\n let result = [];\n result.push(items[0]);\n for (let i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function(paramSize, name) {\n let helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function(name, helperCall) {\n this.useRegister('helper');\n\n let nonHelper = this.popStack();\n\n this.emptyHash();\n let helper = this.setupHelper(0, name, helperCall);\n\n let helperName = (this.lastHelper = this.nameLookup(\n 'helpers',\n name,\n 'helper'\n ));\n\n let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(\n ' != null ? helper : ',\n this.aliasable('container.hooks.helperMissing')\n );\n }\n\n this.push([\n '(',\n lookup,\n helper.paramsInit ? ['),(', helper.paramsInit] : [],\n '),',\n '(typeof helper === ',\n this.aliasable('\"function\"'),\n ' ? ',\n this.source.functionCall('helper', 'call', helper.callParams),\n ' : helper))'\n ]);\n },\n\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function(isDynamic, name, indent) {\n let params = [],\n options = this.setupParams(name, 1, params);\n\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function(key) {\n let value = this.popStack(),\n context,\n type,\n id;\n\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n\n let hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n\n pushId: function(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral(\n 'blockParams[' +\n name[0] +\n '].path[' +\n name[1] +\n ']' +\n (child ? ' + ' + JSON.stringify('.' + child) : '')\n );\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n\n // HELPERS\n\n compiler: JavaScriptCompiler,\n\n compileChildren: function(environment, options) {\n let children = environment.children,\n child,\n compiler;\n\n for (let i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n let existing = this.matchExistingProgram(child);\n\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n let index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(\n child,\n options,\n this.context,\n !this.precompile\n );\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function(child) {\n for (let i = 0, len = this.context.environments.length; i < len; i++) {\n let environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n\n programExpression: function(guid) {\n let child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n\n return 'container.program(' + programParams.join(', ') + ')';\n },\n\n useRegister: function(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n\n push: function(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n\n this.inlineStack.push(expr);\n return expr;\n },\n\n pushStackLiteral: function(item) {\n this.push(new Literal(item));\n },\n\n pushSource: function(source) {\n if (this.pendingContent) {\n this.source.push(\n this.appendToBuffer(\n this.source.quotedString(this.pendingContent),\n this.pendingLocation\n )\n );\n this.pendingContent = undefined;\n }\n\n if (source) {\n this.source.push(source);\n }\n },\n\n replaceStack: function(callback) {\n let prefix = ['('],\n stack,\n createdStack,\n usedLiteral;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new Exception('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n let top = this.popStack(true);\n\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n let name = this.incrStack();\n\n prefix = ['((', this.push(name), ' = ', top, ')'];\n stack = this.topStack();\n }\n\n let item = callback.call(this, stack);\n\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n\n incrStack: function() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function() {\n let inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (let i = 0, len = inlineStack.length; i < len; i++) {\n let entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n let stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function() {\n return this.inlineStack.length;\n },\n\n popStack: function(wrapped) {\n let inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new Exception('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n\n topStack: function() {\n let stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n\n contextName: function(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n\n quotedString: function(str) {\n return this.source.quotedString(str);\n },\n\n objectLiteral: function(obj) {\n return this.source.objectLiteral(obj);\n },\n\n aliasable: function(name) {\n let ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n\n return ret;\n },\n\n setupHelper: function(paramSize, name, blockHelper) {\n let params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n let foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(\n `${this.contextName(0)} != null ? ${this.contextName(\n 0\n )} : (container.nullContext || {})`\n );\n\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n\n setupParams: function(helper, paramSize, params) {\n let options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param;\n\n if (objectArgs) {\n params = [];\n }\n\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n\n let inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n let i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n\n setupHelperArgs: function(helper, paramSize, params, useRegister) {\n let options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n\n(function() {\n const reservedWords = (\n 'break else new var' +\n ' case finally return void' +\n ' catch for switch while' +\n ' continue function this with' +\n ' default if throw' +\n ' delete in try' +\n ' do instanceof typeof' +\n ' abstract enum int short' +\n ' boolean export interface static' +\n ' byte extends long super' +\n ' char final native synchronized' +\n ' class float package throws' +\n ' const goto private transient' +\n ' debugger implements protected volatile' +\n ' double import public let yield await' +\n ' null true false'\n ).split(' ');\n\n const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n for (let i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n return (\n !JavaScriptCompiler.RESERVED_WORDS[name] &&\n /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n let stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n\n if (requireTerminal) {\n return [\n compiler.aliasable('container.strict'),\n '(',\n stack,\n ', ',\n compiler.quotedString(parts[i]),\n ', ',\n JSON.stringify(compiler.source.currentLocation),\n ' )'\n ];\n } else {\n return stack;\n }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n parser as Parser,\n parse,\n parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n let hb = _create();\n\n hb.compile = function(input, options) {\n return compile(input, options, hb);\n };\n hb.precompile = function(input, options) {\n return precompile(input, options, hb);\n };\n\n hb.AST = AST;\n hb.Compiler = Compiler;\n hb.JavaScriptCompiler = JavaScriptCompiler;\n hb.Parser = Parser;\n hb.parse = parse;\n hb.parseWithoutProcessing = parseWithoutProcessing;\n\n return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/* eslint-disable new-cap */\nimport Visitor from './visitor';\n\nexport function print(ast) {\n return new PrintVisitor().accept(ast);\n}\n\nexport function PrintVisitor() {\n this.padding = 0;\n}\n\nPrintVisitor.prototype = new Visitor();\n\nPrintVisitor.prototype.pad = function(string) {\n let out = '';\n\n for (let i = 0, l = this.padding; i < l; i++) {\n out += ' ';\n }\n\n out += string + '\\n';\n return out;\n};\n\nPrintVisitor.prototype.Program = function(program) {\n let out = '',\n body = program.body,\n i,\n l;\n\n if (program.blockParams) {\n let blockParams = 'BLOCK PARAMS: [';\n for (i = 0, l = program.blockParams.length; i < l; i++) {\n blockParams += ' ' + program.blockParams[i];\n }\n blockParams += ' ]';\n out += this.pad(blockParams);\n }\n\n for (i = 0, l = body.length; i < l; i++) {\n out += this.accept(body[i]);\n }\n\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.MustacheStatement = function(mustache) {\n return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n};\nPrintVisitor.prototype.Decorator = function(mustache) {\n return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n};\n\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function(\n block\n) {\n let out = '';\n\n out += this.pad(\n (block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'\n );\n this.padding++;\n out += this.pad(this.SubExpression(block));\n if (block.program) {\n out += this.pad('PROGRAM:');\n this.padding++;\n out += this.accept(block.program);\n this.padding--;\n }\n if (block.inverse) {\n if (block.program) {\n this.padding++;\n }\n out += this.pad('{{^}}');\n this.padding++;\n out += this.accept(block.inverse);\n this.padding--;\n if (block.program) {\n this.padding--;\n }\n }\n this.padding--;\n\n return out;\n};\n\nPrintVisitor.prototype.PartialStatement = function(partial) {\n let content = 'PARTIAL:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function(partial) {\n let content = 'PARTIAL BLOCK:' + partial.name.original;\n if (partial.params[0]) {\n content += ' ' + this.accept(partial.params[0]);\n }\n if (partial.hash) {\n content += ' ' + this.accept(partial.hash);\n }\n\n content += ' ' + this.pad('PROGRAM:');\n this.padding++;\n content += this.accept(partial.program);\n this.padding--;\n\n return this.pad('{{> ' + content + ' }}');\n};\n\nPrintVisitor.prototype.ContentStatement = function(content) {\n return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\n\nPrintVisitor.prototype.CommentStatement = function(comment) {\n return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\n\nPrintVisitor.prototype.SubExpression = function(sexpr) {\n let params = sexpr.params,\n paramStrings = [],\n hash;\n\n for (let i = 0, l = params.length; i < l; i++) {\n paramStrings.push(this.accept(params[i]));\n }\n\n params = '[' + paramStrings.join(', ') + ']';\n\n hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n\n return this.accept(sexpr.path) + ' ' + params + hash;\n};\n\nPrintVisitor.prototype.PathExpression = function(id) {\n let path = id.parts.join('/');\n return (id.data ? '@' : '') + 'PATH:' + path;\n};\n\nPrintVisitor.prototype.StringLiteral = function(string) {\n return '\"' + string.value + '\"';\n};\n\nPrintVisitor.prototype.NumberLiteral = function(number) {\n return 'NUMBER{' + number.value + '}';\n};\n\nPrintVisitor.prototype.BooleanLiteral = function(bool) {\n return 'BOOLEAN{' + bool.value + '}';\n};\n\nPrintVisitor.prototype.UndefinedLiteral = function() {\n return 'UNDEFINED';\n};\n\nPrintVisitor.prototype.NullLiteral = function() {\n return 'NULL';\n};\n\nPrintVisitor.prototype.Hash = function(hash) {\n let pairs = hash.pairs,\n joinedPairs = [];\n\n for (let i = 0, l = pairs.length; i < l; i++) {\n joinedPairs.push(this.accept(pairs[i]));\n }\n\n return 'HASH{' + joinedPairs.join(', ') + '}';\n};\nPrintVisitor.prototype.HashPair = function(pair) {\n return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n", "// USAGE:\n// var handlebars = require('handlebars');\n/* eslint-env node */\n/* eslint-disable no-var */\n\n// var local = handlebars.create();\n\nvar handlebars = require('../dist/cjs/handlebars')['default'];\n\nvar printer = require('../dist/cjs/handlebars/compiler/printer');\nhandlebars.PrintVisitor = printer.PrintVisitor;\nhandlebars.print = printer.print;\n\nmodule.exports = handlebars;\n\n// Publish a Node.js require() handler for .handlebars and .hbs files\nfunction extension(module, filename) {\n var fs = require('fs');\n var templateString = fs.readFileSync(filename, 'utf8');\n module.exports = handlebars.compile(templateString);\n}\n/* istanbul ignore else */\nif (typeof require !== 'undefined' && require.extensions) {\n require.extensions['.handlebars'] = extension;\n require.extensions['.hbs'] = extension;\n}\n", "\"use strict\";\n/**\n * Merges a set of default keys with a target object\n * (Like _.defaults, but will also extend onto null/undefined)\n *\n * @param {Object} [target] The object to extend\n * @param {Object} defaults The object to default to\n * @return {Object} extendedTarget\n */\n\nfunction defaults(target, defs) {\n if (target == null) target = {};\n var ret = {};\n var keys = Object.keys(defs);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n ret[key] = target[key] || defs[key];\n }\n return ret;\n}\nexports.defaults = defaults;\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \"-\",\n \"unitSeparator\": \"and \",\n \"base\": {\n \"0\": \"zero\",\n \"1\": \"one\",\n \"2\": \"two\",\n \"3\": \"three\",\n \"4\": \"four\",\n \"5\": \"five\",\n \"6\": \"six\",\n \"7\": \"seven\",\n \"8\": \"eight\",\n \"9\": \"nine\",\n \"10\": \"ten\",\n \"11\": \"eleven\",\n \"12\": \"twelve\",\n \"13\": \"thirteen\",\n \"14\": \"fourteen\",\n \"15\": \"fifteen\",\n \"16\": \"sixteen\",\n \"17\": \"seventeen\",\n \"18\": \"eighteen\",\n \"19\": \"nineteen\",\n \"20\": \"twenty\",\n \"30\": \"thirty\",\n \"40\": \"forty\",\n \"50\": \"fifty\",\n \"60\": \"sixty\",\n \"70\": \"seventy\",\n \"80\": \"eighty\",\n \"90\": \"ninety\"\n },\n \"units\" : [\n \"hundred\",\n \"thousand\",\n \"million\",\n \"billion\",\n \"trillion\",\n \"quadrillion\",\n \"quintillion\",\n \"sextillion\",\n \"septillion\",\n \"octillion\",\n \"nonillion\",\n \"decillion\",\n \"undecillion\",\n \"duodecillion\",\n \"tredecillion\",\n \"quattuordecillion\",\n \"quindecillion\"\n ],\n \"unitExceptions\": []\n}", "{\n \"useLongScale\": true,\n \"baseSeparator\": \" y \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"cero\",\n \"1\": \"uno\",\n \"2\": \"dos\",\n \"3\": \"tres\",\n \"4\": \"cuatro\",\n \"5\": \"cinco\",\n \"6\": \"seis\",\n \"7\": \"siete\",\n \"8\": \"ocho\",\n \"9\": \"nueve\",\n \"10\": \"diez\",\n \"11\": \"once\",\n \"12\": \"doce\",\n \"13\": \"trece\",\n \"14\": \"catorce\",\n \"15\": \"quince\",\n \"16\": \"diecis\u00E9is\",\n \"17\": \"diecisiete\",\n \"18\": \"dieciocho\",\n \"19\": \"diecinueve\",\n \"20\": \"veinte\",\n \"21\": \"veintiuno\",\n \"22\": \"veintid\u00F3s\",\n \"23\": \"veintitr\u00E9s\",\n \"24\": \"veinticuatro\",\n \"25\": \"veinticinco\",\n \"26\": \"veintis\u00E9is\",\n \"27\": \"veintisiete\",\n \"28\": \"veintiocho\",\n \"29\": \"veintinueve\",\n \"30\": \"treinta\",\n \"40\": \"cuarenta\",\n \"50\": \"cincuenta\",\n \"60\": \"sesenta\",\n \"70\": \"setenta\",\n \"80\": \"ochenta\",\n \"90\": \"noventa\",\n \"100\": \"cien\",\n \"200\": \"doscientos\",\n \"300\": \"trescientos\",\n \"400\": \"cuatrocientos\",\n \"500\": \"quinientos\",\n \"600\": \"seiscientos\",\n \"700\": \"setecientos\",\n \"800\": \"ochocientos\",\n \"900\": \"novecientos\",\n \"1000\": \"mil\"\n },\n \"unitExceptions\": {\n \"1000000\": \"un mill\u00F3n\",\n \"1000000000000\": \"un bill\u00F3n\",\n \"1000000000000000000\": \"un trill\u00F3n\",\n \"1000000000000000000000000\": \"un cuatrillones\",\n \"1000000000000000000000000000000\": \"un quintill\u00F3n\",\n \"1000000000000000000000000000000000000\": \"un sextill\u00F3n\",\n \"1000000000000000000000000000000000000000000\": \"un septill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000\": \"un octill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000\": \"un nonill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000\": \"un decill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000000000\": \"un undecill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000000000000000\": \"un duodecill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000000000000000000000\": \"un tredecill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000000000000000000000000000\": \"un cuatordecill\u00F3n\",\n \"1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\": \"un quindecill\u00F3n\"\n },\n \"units\" : [\n {\n \"singular\": \"ciento\",\n \"useBaseInstead\": true,\n \"useBaseException\": [1],\n \"useBaseExceptionWhenNoTrailingNumbers\": true\n },\n {\n \"singular\": \"mil\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"mill\u00F3n\",\n \"plural\": \"millones\"\n },\n {\n \"singular\": \"bill\u00F3n\",\n \"plural\": \"billones\"\n },\n {\n \"singular\": \"trill\u00F3n\",\n \"plural\": \"trillones\"\n },\n {\n \"singular\": \"cuatrill\u00F3n\",\n \"plural\": \"cuatrillones\"\n },\n {\n \"singular\": \"quintill\u00F3n\",\n \"plural\": \"quintillones\"\n },\n {\n \"singular\": \"sextill\u00F3n\",\n \"plural\": \"sextillones\"\n },\n {\n \"singular\": \"septill\u00F3n\",\n \"plural\": \"septillones\"\n },\n {\n \"singular\": \"octill\u00F3n\",\n \"plural\": \"octillones\"\n },\n {\n \"singular\": \"nonill\u00F3n\",\n \"plural\": \"nonillones\"\n },\n {\n \"singular\": \"decill\u00F3n\",\n \"plural\": \"decillones\"\n },\n {\n \"singular\": \"undecill\u00F3n\",\n \"plural\": \"undecillones\"\n },\n {\n \"singular\": \"duodecill\u00F3n\",\n \"plural\": \"duodecillones\"\n },\n {\n \"singular\": \"tredecill\u00F3n\",\n \"plural\": \"tredecillones\"\n },\n {\n \"singular\": \"cuatrodecill\u00F3n\",\n \"plural\": \"cuatrodecillones\"\n },\n {\n \"singular\": \"quindecill\u00F3n\",\n \"plural\": \"quindecillones\"\n }\n ]\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \"\",\n \"unitSeparator\": \"\",\n \"allSeparator\": \"\u0648\",\n \"base\": {\n \"0\": \"\u0635\u0641\u0631\",\n \"1\": \"\u0648\u0627\u062D\u062F\",\n \"2\": \"\u0627\u062B\u0646\u0627\u0646\",\n \"3\": \"\u062B\u0644\u0627\u062B\u0629\",\n \"4\": \"\u0623\u0631\u0628\u0639\u0629\",\n \"5\": \"\u062E\u0645\u0633\u0629\",\n \"6\": \"\u0633\u062A\u0629\",\n \"7\": \"\u0633\u0628\u0639\u0629\",\n \"8\": \"\u062B\u0645\u0627\u0646\u064A\u0629\",\n \"9\": \"\u062A\u0633\u0639\u0629\",\n\n \"10\": \"\u0639\u0634\u0631\u0629\",\n \"11\": \"\u0623\u062D\u062F \u0639\u0634\u0631\",\n \"12\": \"\u0625\u062B\u0646\u0627 \u0639\u0634\u0631\",\n \"13\": \"\u062B\u0644\u0627\u062B\u0629 \u0639\u0634\u0631\",\n \"14\": \"\u0623\u0631\u0628\u0639\u0629 \u0639\u0634\u0631\",\n \"15\": \"\u062E\u0645\u0633\u0629 \u0639\u0634\u0631\",\n \"16\": \"\u0633\u062A\u0629 \u0639\u0634\u0631\",\n \"17\": \"\u0633\u0628\u0639\u0629 \u0639\u0634\u0631\",\n \"18\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0639\u0634\u0631\",\n \"19\": \"\u062A\u0633\u0639\u0629 \u0639\u0634\u0631\",\n\n \"20\": \"\u0639\u0634\u0631\u0648\u0646\",\n \"21\": \"\u0648\u0627\u062D\u062F \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"22\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"23\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"24\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"25\": \"\u062E\u0645\u0633\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"26\": \"\u0633\u062A\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"27\": \"\u0633\u0628\u0639\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"28\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \"29\": \"\u062A\u0633\u0639\u0629 \u0648\u0639\u0634\u0631\u0648\u0646\",\n \n \"30\": \"\u062B\u0644\u0627\u062B\u0648\u0646\", \n \"31\": \"\u0648\u0627\u062D\u062F \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"32\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"33\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"34\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"35\": \"\u062E\u0645\u0633\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"36\": \"\u0633\u062A\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"37\": \"\u0633\u0628\u0639\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"38\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n \"39\": \"\u062A\u0633\u0639\u0629 \u0648\u062B\u0644\u0627\u062B\u0648\u0646\",\n\n \"40\": \"\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"41\": \"\u0648\u0627\u062D\u062F \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"42\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"43\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"44\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"45\": \"\u062E\u0645\u0633\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"46\": \"\u0633\u062A\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"47\": \"\u0633\u0628\u0639\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"48\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n \"49\": \"\u062A\u0633\u0639\u0629 \u0648\u0623\u0631\u0628\u0639\u0648\u0646\",\n\n \"50\": \"\u062E\u0645\u0633\u0648\u0646\",\n \"51\": \"\u0648\u0627\u062D\u062F \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"52\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"53\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"54\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"55\": \"\u062E\u0645\u0633\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"56\": \"\u0633\u062A\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"57\": \"\u0633\u0628\u0639\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"58\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n \"59\": \"\u062A\u0633\u0639\u0629 \u0648\u062E\u0645\u0633\u0648\u0646\",\n\n \"60\": \"\u0633\u062A\u0648\u0646\",\n \"61\": \"\u0648\u0627\u062D\u062F \u0648\u0633\u062A\u0648\u0646\",\n \"62\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u0633\u062A\u0648\u0646\",\n \"63\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"64\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"65\": \"\u062E\u0645\u0633\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"66\": \"\u0633\u062A\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"67\": \"\u0633\u0628\u0639\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"68\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u0633\u062A\u0648\u0646\",\n \"69\": \"\u062A\u0633\u0639\u0629 \u0648\u0633\u062A\u0648\u0646\",\n\n \"70\": \"\u0633\u0628\u0639\u0648\u0646\",\n \"71\": \"\u0648\u0627\u062D\u062F \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"72\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"73\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"74\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"75\": \"\u062E\u0645\u0633\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"76\": \"\u0633\u062A\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"77\": \"\u0633\u0628\u0639\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"78\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n \"79\": \"\u062A\u0633\u0639\u0629 \u0648\u0633\u0628\u0639\u0648\u0646\",\n\n \"80\": \"\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"81\": \"\u0648\u0627\u062D\u062F \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"82\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"83\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"84\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"85\": \"\u062E\u0645\u0633\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"86\": \"\u0633\u062A\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"87\": \"\u0633\u0628\u0639\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"88\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \"89\": \"\u062A\u0633\u0639\u0629 \u0648\u062B\u0645\u0627\u0646\u0648\u0646\",\n \n \"90\": \"\u062A\u0633\u0639\u0648\u0646\",\n \"91\": \"\u0648\u0627\u062D\u062F \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"92\": \"\u0627\u062B\u0646\u0627\u0646 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"93\": \"\u062B\u0644\u0627\u062B\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"94\": \"\u0623\u0631\u0628\u0639\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"95\": \"\u062E\u0645\u0633\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"96\": \"\u0633\u062A\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"97\": \"\u0633\u0628\u0639\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"98\": \"\u062B\u0645\u0627\u0646\u064A\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n \"99\": \"\u062A\u0633\u0639\u0629 \u0648\u062A\u0633\u0639\u0648\u0646\",\n\n \"200\": \"\u0645\u0627\u0626\u062A\u0627\u0646\",\n \"300\": \"\u062B\u0644\u0627\u062B\u0645\u0627\u0626\u0629\",\n \"400\": \"\u0623\u0631\u0628\u0639\u0645\u0627\u0626\u0629\",\n \"500\": \"\u062E\u0645\u0633\u0645\u0627\u0626\u0629\",\n \"600\": \"\u0633\u062A\u0645\u0627\u0626\u0629\",\n \"700\": \"\u0633\u0628\u0639\u0645\u0627\u0626\u0629\",\n \"800\": \"\u062B\u0645\u0627\u0646\u0645\u0627\u0626\u0629\",\n \"900\": \"\u062A\u0633\u0639\u0645\u0627\u0626\u0629\"\n },\n \"units\" : [\n {\"singular\":\"\u0645\u0627\u0626\u0629\", \"useBaseInstead\": true, \"useBaseException\": [1]},\n {\"singular\":\"\u0623\u0644\u0641\", \"dual\":\"\u0623\u0644\u0641\u0627\u0646\", \"plural\":\"\u0622\u0644\u0627\u0641\", \"restrictedPlural\": true, \"avoidPrefixException\": [1, 2]},\n {\"singular\":\"\u0645\u0644\u064A\u0648\u0646\", \"dual\":\"\u0645\u0644\u064A\u0648\u0646\u0627\u0646\", \"plural\":\"\u0645\u0644\u0627\u064A\u064A\u0646\", \"restrictedPlural\": true, \"avoidPrefixException\": [1, 2]},\n {\"singular\":\"\u0645\u0644\u064A\u0627\u0631\", \"dual\":\"\u0645\u0644\u064A\u0627\u0631\u0627\u0646\", \"plural\":\"\u0645\u0644\u0627\u064A\u064A\u0631\", \"restrictedPlural\": true, \"avoidPrefixException\": [1, 2]},\n\n {\"singular\":\"\u062A\u0631\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0643\u0648\u064A\u0646\u062A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0633\u0628\u062A\u064A\u0644\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0623\u0648\u0643\u062A\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0646\u0648\u0646\u064A\u0644\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u062F\u0634\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0623\u0648\u0646\u062F\u0634\u064A\u0644\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u062F\u0648\u062F\u0634\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u062A\u0631\u064A\u062F\u0634\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0643\u0648\u0627\u062A\u0648\u0631\u062F\u0634\u064A\u0644\u064A\u0648\u0646\", \"avoidPrefixException\": [1]},\n {\"singular\":\"\u0643\u0648\u064A\u0646\u062F\u0634\u064A\u0644\u064A\u0648\u0646\" , \"avoidPrefixException\": [1]}\n ],\n \"unitExceptions\": {}\n}", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"s\u0131f\u0131r\",\n \"1\": \"bir\",\n \"2\": \"iki\",\n \"3\": \"\u00FC\u00E7\",\n \"4\": \"d\u00F6rd\",\n \"5\": \"be\u015F\",\n \"6\": \"alt\u0131\",\n \"7\": \"yeddi\",\n \"8\": \"s\u0259kkiz\",\n \"9\": \"doqquz\",\n \"10\": \"on\",\n \"20\": \"iyirmi\",\n \"30\": \"otuz\",\n \"40\": \"q\u0131rx\",\n \"50\": \"\u0259lli\",\n \"60\": \"altm\u0131\u015F\",\n \"70\": \"yetmi\u015F\",\n \"80\": \"s\u0259ks\u0259n\",\n \"90\": \"doxsan\"\n },\n \"units\" : [\n { \n \"singular\": \"y\u00FCz\",\n \"avoidPrefixException\": [1]\n },\n { \n \"singular\": \"min\",\n \"avoidPrefixException\": [1]\n },\n \"milyon\",\n \"milyard\",\n \"trilyon\",\n \"kvadrilyon\",\n \"kentilyon\",\n \"sekstilyon\",\n \"septilyon\",\n \"oktilyon\",\n \"nonilyon\",\n \"desilyon\",\n \"andesilyon\",\n \"dodesilyon\",\n \"tredesilyon\",\n \"katordesilyon\",\n \"kendesilyon\"\n ],\n \"unitExceptions\": []\n }", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" e \",\n \"unitSeparator\": \"e \",\n \"andWhenTrailing\": true,\n \"base\": {\n \"0\": \"zero\",\n \"1\": \"um\",\n \"2\": \"dois\",\n \"3\": \"tr\u00EAs\",\n \"4\": \"quatro\",\n \"5\": \"cinco\",\n \"6\": \"seis\",\n \"7\": \"sete\",\n \"8\": \"oito\",\n \"9\": \"nove\",\n \"10\": \"dez\",\n \"11\": \"onze\",\n \"12\": \"doze\",\n \"13\": \"treze\",\n \"14\": \"catorze\",\n \"15\": \"quinze\",\n \"16\": \"dezesseis\",\n \"17\": \"dezessete\",\n \"18\": \"dezoito\",\n \"19\": \"dezenove\",\n \"20\": \"vinte\",\n \"30\": \"trinta\",\n \"40\": \"quarenta\",\n \"50\": \"cinquenta\",\n \"60\": \"sessenta\",\n \"70\": \"setenta\",\n \"80\": \"oitenta\",\n \"90\": \"noventa\",\n \"100\": \"cem\",\n \"200\": \"duzentos\",\n \"300\": \"trezentos\",\n \"400\": \"quatrocentos\",\n \"500\": \"quinhentos\",\n \"600\": \"seiscentos\",\n \"700\": \"setecentos\",\n \"800\": \"oitocentos\",\n \"900\": \"novecentos\",\n \"1000\": \"mil\"\n },\n \"unitExceptions\": {\n \"1\": \"um\"\n },\n \"units\" : [\n {\n \"singular\": \"cento\",\n \"useBaseInstead\": true,\n \"useBaseException\": [\n 1\n ],\n \"useBaseExceptionWhenNoTrailingNumbers\": true,\n \"andException\": true\n },\n {\n \"singular\": \"mil\",\n \"avoidPrefixException\": [1],\n \"andException\": true\n },\n {\n \"singular\": \"milh\u00E3o\",\n \"plural\": \"milh\u00F5es\"\n },\n {\n \"singular\": \"bilh\u00E3o\",\n \"plural\": \"bilh\u00F5es\"\n },\n {\n \"singular\": \"trilh\u00E3o\",\n \"plural\": \"trilh\u00F5es\"\n },\n {\n \"singular\": \"quadrilh\u00E3o\",\n \"plural\": \"quadrilh\u00E3o\"\n },\n {\n \"singular\": \"quintilh\u00E3o\",\n \"plural\": \"quintilh\u00F5es\"\n },\n {\n \"singular\": \"sextilh\u00E3o\",\n \"plural\": \"sextilh\u00F5es\"\n },\n {\n \"singular\": \"septilh\u00E3o\",\n \"plural\": \"septilh\u00F5es\"\n },\n {\n \"singular\": \"octilh\u00E3o\",\n \"plural\": \"octilh\u00F5es\"\n },\n {\n \"singular\": \"nonilh\u00E3o\",\n \"plural\": \"nonilh\u00F5es\"\n },\n {\n \"singular\": \"decilh\u00E3o\",\n \"plural\": \"decilh\u00F5es\"\n },\n {\n \"singular\": \"undecilh\u00E3o\",\n \"plural\": \"undecilh\u00F5es\"\n },\n {\n \"singular\": \"doudecilh\u00E3o\",\n \"plural\": \"doudecilh\u00F5es\"\n },\n {\n \"singular\": \"tredecilh\u00E3o\",\n \"plural\": \"tredecilh\u00F5es\"\n }\n ]\n}\n", "{\n \"useLongScale\": true,\n \"baseSeparator\": \" e \",\n \"unitSeparator\": \"e \",\n \"andWhenTrailing\": true,\n \"base\": {\n \"0\": \"zero\",\n \"1\": \"um\",\n \"2\": \"dois\",\n \"3\": \"tr\u00EAs\",\n \"4\": \"quatro\",\n \"5\": \"cinco\",\n \"6\": \"seis\",\n \"7\": \"sete\",\n \"8\": \"oito\",\n \"9\": \"nove\",\n \"10\": \"dez\",\n \"11\": \"onze\",\n \"12\": \"doze\",\n \"13\": \"treze\",\n \"14\": \"catorze\",\n \"15\": \"quinze\",\n \"16\": \"dezasseis\",\n \"17\": \"dezassete\",\n \"18\": \"dezoito\",\n \"19\": \"dezanove\",\n \"20\": \"vinte\",\n \"30\": \"trinta\",\n \"40\": \"quarenta\",\n \"50\": \"cinquenta\",\n \"60\": \"sessenta\",\n \"70\": \"setenta\",\n \"80\": \"oitenta\",\n \"90\": \"noventa\",\n \"100\": \"cem\",\n \"200\": \"duzentos\",\n \"300\": \"trezentos\",\n \"400\": \"quatrocentos\",\n \"500\": \"quinhentos\",\n \"600\": \"seiscentos\",\n \"700\": \"setecentos\",\n \"800\": \"oitocentos\",\n \"900\": \"novecentos\",\n \"1000\": \"mil\"\n },\n \"unitExceptions\": {\n \"1\": \"um\"\n },\n \"units\" : [\n {\n \"singular\": \"cento\",\n \"useBaseInstead\": true,\n \"useBaseException\": [\n 1\n ],\n \"useBaseExceptionWhenNoTrailingNumbers\": true,\n \"andException\": true\n },\n {\n \"singular\": \"mil\",\n \"avoidPrefixException\": [1],\n \"andException\": true\n },\n {\n \"singular\": \"milh\u00E3o\",\n \"plural\": \"milh\u00F5es\"\n },\n {\n \"singular\": \"bili\u00E3o\",\n \"plural\": \"bili\u00F5es\"\n },\n {\n \"singular\": \"trili\u00E3o\",\n \"plural\": \"trili\u00F5es\"\n },\n {\n \"singular\": \"quadrili\u00E3o\",\n \"plural\": \"quadrili\u00F5es\"\n },\n {\n \"singular\": \"quintili\u00E3o\",\n \"plural\": \"quintili\u00F5es\"\n },\n {\n \"singular\": \"sextili\u00E3o\",\n \"plural\": \"sextili\u00F5es\"\n },\n {\n \"singular\": \"septili\u00E3o\",\n \"plural\": \"septili\u00F5es\"\n },\n {\n \"singular\": \"octili\u00E3o\",\n \"plural\": \"octili\u00F5es\"\n },\n {\n \"singular\": \"nonili\u00E3o\",\n \"plural\": \"nonili\u00F5es\"\n },\n {\n \"singular\": \"decili\u00E3o\",\n \"plural\": \"decili\u00F5es\"\n }\n ]\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \"-\",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"z\u00E9ro\",\n \"1\": \"un\",\n \"2\": \"deux\",\n \"3\": \"trois\",\n \"4\": \"quatre\",\n \"5\": \"cinq\",\n \"6\": \"six\",\n \"7\": \"sept\",\n \"8\": \"huit\",\n \"9\": \"neuf\",\n \"10\": \"dix\",\n \"11\": \"onze\",\n \"12\": \"douze\",\n \"13\": \"treize\",\n \"14\": \"quatorze\",\n \"15\": \"quinze\",\n \"16\": \"seize\",\n \"17\": \"dix-sept\",\n \"18\": \"dix-huit\",\n \"19\": \"dix-neuf\",\n \"20\": \"vingt\",\n \"30\": \"trente\",\n \"40\": \"quarante\",\n \"50\": \"cinquante\",\n \"60\": \"soixante\",\n \"70\": \"soixante-dix\",\n \"80\": \"quatre-vingt\",\n \"90\": \"quatre-vingt-dix\"\n },\n \"units\" : [\n {\n \"singular\": \"cent\",\n \"plural\": \"cents\",\n \"avoidInNumberPlural\": true,\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"mille\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"million\",\n \"plural\": \"millions\"\n },\n {\n \"singular\": \"milliard\",\n \"plural\": \"milliards\"\n },\n {\n \"singular\": \"billion\",\n \"plural\": \"billions\"\n },\n {\n \"singular\": \"billiard\",\n \"plural\": \"billiards\"\n },\n {\n \"singular\": \"trillion\",\n \"plural\": \"trillions\"\n },\n {\n \"singular\": \"trilliard\",\n \"plural\": \"trilliards\"\n },\n {\n \"singular\": \"quadrillion\",\n \"plural\": \"quadrillions\"\n },\n {\n \"singular\": \"quadrilliard\",\n \"plural\": \"quadrilliards\"\n },\n {\n \"singular\": \"quintillion\",\n \"plural\": \"quintillions\"\n },\n {\n \"singular\": \"quintilliard\",\n \"plural\": \"quintilliards\"\n },\n {\n \"singular\": \"sextillion\",\n \"plural\": \"sextillions\"\n },\n {\n \"singular\": \"sextilliard\",\n \"plural\": \"sextilliards\"\n },\n {\n \"singular\": \"septillion\",\n \"plural\": \"septillions\"\n },\n {\n \"singular\": \"septilliard\",\n \"plural\": \"septilliards\"\n },\n {\n \"singular\": \"octillion\",\n \"plural\": \"octillions\"\n }\n ],\n \"unitExceptions\": {\n \"21\": \"vingt et un\",\n \"31\": \"trente et un\",\n \"41\": \"quarante et un\",\n \"51\": \"cinquante et un\",\n \"61\": \"soixante et un\",\n \"71\": \"soixante et onze\",\n \"72\": \"soixante-douze\",\n \"73\": \"soixante-treize\",\n \"74\": \"soixante-quatorze\",\n \"75\": \"soixante-quinze\",\n \"76\": \"soixante-seize\",\n \"77\": \"soixante-dix-sept\",\n \"78\": \"soixante-dix-huit\",\n \"79\": \"soixante-dix-neuf\",\n \"80\": \"quatre-vingts\",\n \"91\": \"quatre-vingt-onze\",\n \"92\": \"quatre-vingt-douze\",\n \"93\": \"quatre-vingt-treize\",\n \"94\": \"quatre-vingt-quatorze\",\n \"95\": \"quatre-vingt-quinze\",\n \"96\": \"quatre-vingt-seize\",\n \"97\": \"quatre-vingt-dix-sept\",\n \"98\": \"quatre-vingt-dix-huit\",\n \"99\": \"quatre-vingt-dix-neuf\"\n }\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"nulo\",\n \"1\": \"unu\",\n \"2\": \"du\",\n \"3\": \"tri\",\n \"4\": \"kvar\",\n \"5\": \"kvin\",\n \"6\": \"ses\",\n \"7\": \"sep\",\n \"8\": \"ok\",\n \"9\": \"na\u016D\",\n \"10\": \"dek\",\n \"20\": \"dudek\",\n \"30\": \"tridek\",\n \"40\": \"kvardek\",\n \"50\": \"kvindek\",\n \"60\": \"sesdek\",\n \"70\": \"sepdek\",\n \"80\": \"okdek\",\n \"90\": \"na\u016Ddek\",\n \"100\": \"cent\",\n \"200\": \"ducent\",\n \"300\": \"tricent\",\n \"400\": \"kvarcent\",\n \"500\": \"kvincent\",\n \"600\": \"sescent\",\n \"700\": \"sepcent\",\n \"800\": \"okcent\",\n \"900\": \"na\u016Dcent\"\n },\n \"units\" : [\n {\n \"useBaseInstead\": true,\n \"useBaseException\": []\n },\n {\n \"singular\": \"mil\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"miliono\",\n \"plural\": \"milionoj\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"miliardo\",\n \"plural\": \"miliardoj\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"biliono\",\n \"plural\": \"bilionoj\",\n \"avoidPrefixException\": [1]\n }\n ],\n \"unitExceptions\": []\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \"\",\n \"unitSeparator\": \"\",\n \"generalSeparator\": \"\",\n \"wordSeparator\": \"\",\n \"base\": {\n \"0\": \"zero\",\n \"1\": \"uno\",\n \"2\": \"due\",\n \"3\": \"tre\",\n \"4\": \"quattro\",\n \"5\": \"cinque\",\n \"6\": \"sei\",\n \"7\": \"sette\",\n \"8\": \"otto\",\n \"9\": \"nove\",\n \"10\": \"dieci\",\n \"11\": \"undici\",\n \"12\": \"dodici\",\n \"13\": \"tredici\",\n \"14\": \"quattordici\",\n \"15\": \"quindici\",\n \"16\": \"sedici\",\n \"17\": \"diciassette\",\n \"18\": \"diciotto\",\n \"19\": \"diciannove\",\n \"20\": \"venti\",\n \"21\": \"ventuno\",\n \"23\": \"ventitr\u00E9\",\n \"28\": \"ventotto\",\n \"30\": \"trenta\",\n \"31\": \"trentuno\",\n \"33\": \"trentatr\u00E9\",\n \"38\": \"trentotto\",\n \"40\": \"quaranta\",\n \"41\": \"quarantuno\",\n \"43\": \"quaranta\u00ADtr\u00E9\",\n \"48\": \"quarantotto\",\n \"50\": \"cinquanta\",\n \"51\": \"cinquantuno\",\n \"53\": \"cinquantatr\u00E9\",\n \"58\": \"cinquantotto\",\n \"60\": \"sessanta\",\n \"61\": \"sessantuno\",\n \"63\": \"sessanta\u00ADtr\u00E9\",\n \"68\": \"sessantotto\",\n \"70\": \"settanta\",\n \"71\": \"settantuno\",\n \"73\": \"settantatr\u00E9\",\n \"78\": \"settantotto\",\n \"80\": \"ottanta\",\n \"81\": \"ottantuno\",\n \"83\": \"ottantatr\u00E9\",\n \"88\": \"ottantotto\",\n \"90\": \"novanta\",\n \"91\": \"novantuno\",\n \"93\": \"novantatr\u00E9\",\n \"98\": \"novantotto\",\n \"100\": \"cento\",\n \"101\": \"centuno\",\n \"108\": \"centootto\",\n \"180\": \"centottanta\",\n \"201\": \"duecentuno\",\n \"301\": \"tre\u00ADcent\u00ADuno\",\n \"401\": \"quattro\u00ADcent\u00ADuno\",\n \"501\": \"cinque\u00ADcent\u00ADuno\",\n \"601\": \"sei\u00ADcent\u00ADuno\",\n \"701\": \"sette\u00ADcent\u00ADuno\",\n \"801\": \"otto\u00ADcent\u00ADuno\",\n \"901\": \"nove\u00ADcent\u00ADuno\"\n },\n \"unitExceptions\": {\n \"1\": \"un\"\n },\n \"units\": [\n {\n \"singular\": \"cento\",\n \"avoidPrefixException\": [\n 1\n ]\n },\n {\n \"singular\": \"mille\",\n \"plural\": \"mila\",\n \"avoidPrefixException\": [\n 1\n ]\n },\n {\n \"singular\": \"milione\",\n \"plural\": \"milioni\"\n },\n {\n \"singular\": \"miliardo\",\n \"plural\": \"miliardi\"\n },\n {\n \"singular\": \"bilione\",\n \"plural\": \"bilioni\"\n },\n {\n \"singular\": \"biliardo\",\n \"plural\": \"biliardi\"\n },\n {\n \"singular\": \"trilione\",\n \"plural\": \"trilioni\"\n },\n {\n \"singular\": \"triliardo\",\n \"plural\": \"triliardi\"\n },\n {\n \"singular\": \"quadrilione\",\n \"plural\": \"quadrilioni\"\n },\n {\n \"singular\": \"quadriliardo\",\n \"plural\": \"quadriliardi\"\n }\n ]\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"v\u00E0 \",\n \"base\": {\n \"0\": \"kh\u00F4ng\",\n \"1\": \"m\u1ED9t\",\n \"2\": \"hai\",\n \"3\": \"ba\",\n \"4\": \"b\u1ED1n\",\n \"5\": \"n\u0103m\",\n \"6\": \"s\u00E1u\",\n \"7\": \"b\u1EA3y\",\n \"8\": \"t\u00E1m\",\n \"9\": \"ch\u00EDn\",\n \"10\": \"m\u01B0\u1EDDi\",\n \"15\": \"m\u01B0\u1EDDi l\u0103m\",\n \"20\": \"hai m\u01B0\u01A1i\",\n \"21\": \"hai m\u01B0\u01A1i m\u1ED1t\",\n \"25\": \"hai m\u01B0\u01A1i l\u0103m\",\n \"30\": \"ba m\u01B0\u01A1i\",\n \"31\": \"ba m\u01B0\u01A1i m\u1ED1t\",\n \"40\": \"b\u1ED1n m\u01B0\u01A1i\",\n \"41\": \"b\u1ED1n m\u01B0\u01A1i m\u1ED1t\",\n \"45\": \"b\u1ED1n m\u01B0\u01A1i l\u0103m\",\n \"50\": \"n\u0103m m\u01B0\u01A1i\",\n \"51\": \"n\u0103m m\u01B0\u01A1i m\u1ED1t\",\n \"55\": \"n\u0103m m\u01B0\u01A1i l\u0103m\",\n \"60\": \"s\u00E1u m\u01B0\u01A1i\",\n \"61\": \"s\u00E1u m\u01B0\u01A1i m\u1ED1t\",\n \"65\": \"s\u00E1u m\u01B0\u01A1i l\u0103m\",\n \"70\": \"b\u1EA3y m\u01B0\u01A1i\",\n \"71\": \"b\u1EA3y m\u01B0\u01A1i m\u1ED1t\",\n \"75\": \"b\u1EA3y m\u01B0\u01A1i l\u0103m\",\n \"80\": \"t\u00E1m m\u01B0\u01A1i\",\n \"81\": \"t\u00E1m m\u01B0\u01A1i m\u1ED1t\",\n \"85\": \"t\u00E1m m\u01B0\u01A1i l\u0103m\",\n \"90\": \"ch\u00EDn m\u01B0\u01A1i\",\n \"91\": \"ch\u00EDn m\u01B0\u01A1i m\u1ED1t\",\n \"95\": \"ch\u00EDn m\u01B0\u01A1i l\u0103m\"\n },\n \"units\" : [\n \"tr\u0103m\",\n \"ng\u00E0n\",\n \"tri\u1EC7u\",\n \"t\u1EF7\",\n \"ngh\u00ECn t\u1EF7\"\n ],\n \"unitExceptions\": []\n}", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"s\u0131f\u0131r\",\n \"1\": \"bir\",\n \"2\": \"iki\",\n \"3\": \"\u00FC\u00E7\",\n \"4\": \"d\u00F6rt\",\n \"5\": \"be\u015F\",\n \"6\": \"alt\u0131\",\n \"7\": \"yedi\",\n \"8\": \"sekiz\",\n \"9\": \"dokuz\",\n \"10\": \"on\",\n \"20\": \"yirmi\",\n \"30\": \"otuz\",\n \"40\": \"k\u0131rk\",\n \"50\": \"elli\",\n \"60\": \"altm\u0131\u015F\",\n \"70\": \"yetmi\u015F\",\n \"80\": \"seksen\",\n \"90\": \"doksan\"\n },\n \"units\" : [\n { \n \"singular\": \"y\u00FCz\",\n \"avoidPrefixException\": [1]\n },\n { \n \"singular\": \"bin\",\n \"avoidPrefixException\": [1]\n },\n \"milyon\",\n \"milyar\",\n \"trilyon\",\n \"katrilyon\",\n \"kentilyon\",\n \"sekstilyon\",\n \"septilyon\",\n \"oktilyon\",\n \"nonilyon\",\n \"desilyon\",\n \"andesilyon\",\n \"dodesilyon\",\n \"tredesilyon\",\n \"katordesilyon\",\n \"kendesilyon\"\n ],\n \"unitExceptions\": []\n}", "{\n \"useLongScale\": true,\n \"baseSeparator\": \"\",\n \"unitSeparator\": \"\u00E9s \",\n \"base\": {\n \"0\": \"nulla\",\n \"1\": \"egy\",\n \"2\": \"kett\u0151\",\n \"3\": \"h\u00E1rom\",\n \"4\": \"n\u00E9gy\",\n \"5\": \"\u00F6t\",\n \"6\": \"hat\",\n \"7\": \"h\u00E9t\",\n \"8\": \"nyolc\",\n \"9\": \"kilenc\",\n \"10\": \"t\u00EDz\",\n \"11\": \"tizenegy\",\n \"12\": \"tizenkett\u0151\",\n \"13\": \"tizenh\u00E1rom\",\n \"14\": \"tizenn\u00E9gy\",\n \"15\": \"tizen\u00F6t\",\n \"16\": \"tizenhat\",\n \"17\": \"tizenh\u00E9t\",\n \"18\": \"tizennyolc\",\n \"19\": \"tizenkilenc\",\n \"20\": \"h\u00FAsz\",\n \"21\": \"huszonegy\",\n \"22\": \"huszonkett\u0151\",\n \"23\": \"huszonh\u00E1rom\",\n \"24\": \"huszonn\u00E9gy\",\n \"25\": \"huszon\u00F6t\",\n \"26\": \"huszonhat\",\n \"27\": \"huszonh\u00E9t\",\n \"28\": \"huszonnyolc\",\n \"29\": \"huszonkilenc\",\n \"30\": \"harminc\",\n \"40\": \"negyven\",\n \"50\": \"\u00F6tven\",\n \"60\": \"hatvan\",\n \"70\": \"hetven\",\n \"80\": \"nyolcvan\",\n \"90\": \"kilencven\",\n \"100\": \"sz\u00E1z\",\n \"200\": \"k\u00E9tsz\u00E1z\",\n \"300\": \"h\u00E1romsz\u00E1z\",\n \"400\": \"n\u00E9gysz\u00E1z\",\n \"500\": \"\u00F6tsz\u00E1z\",\n \"600\": \"hatsz\u00E1z\",\n \"700\": \"h\u00E9tsz\u00E1z\",\n \"800\": \"nyolcsz\u00E1z\",\n \"900\": \"kilencsz\u00E1z\",\n \"1000\": \"ezer\"\n },\n \"unitExceptions\": {\n \"1\": \"egy\"\n },\n \"units\" : [\n {\n \"singular\": \"sz\u00E1z\",\n \"useBaseInstead\": true,\n \"useBaseException\": [1]\n },\n {\n \"singular\": \"ezer\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"milli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"milli\u00E1rd\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"-billi\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"billi\u00E1rd\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"trilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"trilli\u00E1rd\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"kvadrilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"kvadrilli\u00E1rd\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"kvintilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"kvintilli\u00E1rd\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"szextilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"szeptilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"oktilli\u00F3\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"nonilli\u00F3\",\n \"avoidPrefixException\": [1]\n }\n ]\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \"-\",\n \"unitSeparator\": \"and \",\n \"base\": {\n \"0\": \"zero\",\n \"1\": \"one\",\n \"2\": \"two\",\n \"3\": \"three\",\n \"4\": \"four\",\n \"5\": \"five\",\n \"6\": \"six\",\n \"7\": \"seven\",\n \"8\": \"eight\",\n \"9\": \"nine\",\n \"10\": \"ten\",\n \"11\": \"eleven\",\n \"12\": \"twelve\",\n \"13\": \"thirteen\",\n \"14\": \"fourteen\",\n \"15\": \"fifteen\",\n \"16\": \"sixteen\",\n \"17\": \"seventeen\",\n \"18\": \"eighteen\",\n \"19\": \"nineteen\",\n \"20\": \"twenty\",\n \"30\": \"thirty\",\n \"40\": \"forty\",\n \"50\": \"fifty\",\n \"60\": \"sixty\",\n \"70\": \"seventy\",\n \"80\": \"eighty\",\n \"90\": \"ninety\"\n },\n \"units\" : {\n \"2\": \"hundred\",\n \"3\": \"thousand\",\n \"5\": \"lakh\",\n \"7\": \"crore\"\n },\n \"unitExceptions\": []\n}", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"\u043D\u0443\u043B\u044C\",\n \"1\": \"\u043E\u0434\u0438\u043D\",\n \"2\": \"\u0434\u0432\u0430\",\n \"3\": \"\u0442\u0440\u0438\",\n \"4\": \"\u0447\u043E\u0442\u0438\u0440\u0438\",\n \"5\": \"\u043F\u2019\u044F\u0442\u044C\",\n \"6\": \"\u0448\u0456\u0441\u0442\u044C\",\n \"7\": \"\u0441\u0456\u043C\",\n \"8\": \"\u0432\u0456\u0441\u0456\u043C\",\n \"9\": \"\u0434\u0435\u0432\u2019\u044F\u0442\u044C\",\n \"10\": \"\u0434\u0435\u0441\u044F\u0442\u044C\",\n \"11\": \"\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"12\": \"\u0434\u0432\u0430\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"13\": \"\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"14\": \"\u0447\u043E\u0442\u0438\u0440\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"15\": \"\u043F\u2019\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"16\": \"\u0448\u0456\u0441\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"17\": \"\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"18\": \"\u0432\u0456\u0441\u0456\u043C\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"19\": \"\u0434\u0435\u0432\u2019\u044F\u0442\u043D\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"20\": \"\u0434\u0432\u0430\u0434\u0446\u044F\u0442\u044C\",\n \"30\": \"\u0442\u0440\u0438\u0434\u0446\u044F\u0442\u044C\",\n \"40\": \"\u0441\u043E\u0440\u043E\u043A\",\n \"50\": \"\u043F\u2019\u044F\u0442\u0434\u0435\u0441\u044F\u0442\",\n \"60\": \"\u0448\u0456\u0441\u0442\u0434\u0435\u0441\u044F\u0442\",\n \"70\": \"\u0441\u0456\u043C\u0434\u0435\u0441\u044F\u0442\",\n \"80\": \"\u0432\u0456\u0441\u0456\u043C\u0434\u0435\u0441\u044F\u0442\",\n \"90\": \"\u0434\u0435\u0432\u2019\u044F\u043D\u043E\u0441\u0442\u043E\",\n \"100\": \"\u0441\u0442\u043E\",\n \"200\": \"\u0434\u0432\u0456\u0441\u0442\u0456\",\n \"300\": \"\u0442\u0440\u0438\u0441\u0442\u0430\",\n \"400\": \"\u0447\u043E\u0442\u0438\u0440\u0438\u0441\u0442\u0430\",\n \"500\": \"\u043F\u2019\u044F\u0442\u0441\u043E\u0442\",\n \"600\": \"\u0448\u0456\u0441\u0442\u0441\u043E\u0442\",\n \"700\": \"\u0441\u0456\u043C\u0441\u043E\u0442\",\n \"800\": \"\u0432\u0456\u0441\u0456\u043C\u0441\u043E\u0442\",\n \"900\": \"\u0434\u0435\u0432\u2019\u044F\u0442\u0441\u043E\u0442\"\n },\n \"alternativeBase\": {\n \"feminine\": {\n \"1\": \"\u043E\u0434\u043D\u0430\",\n \"2\": \"\u0434\u0432\u0456\"\n }\n },\n \"units\" : [\n {\n \"useBaseInstead\": true,\n \"useBaseException\": []\n },\n {\n \"singular\": \"\u0442\u0438\u0441\u044F\u0447\u0430\",\n \"few\": \"\u0442\u0438\u0441\u044F\u0447\u0456\",\n \"plural\": \"\u0442\u0438\u0441\u044F\u0447\",\n \"useAlternativeBase\": \"feminine\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043C\u0456\u043B\u044C\u0439\u043E\u043D\",\n \"few\": \"\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0438\",\n \"plural\": \"\u043C\u0456\u043B\u044C\u0439\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043C\u0456\u043B\u044C\u044F\u0440\u0434\",\n \"few\": \"\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0438\",\n \"plural\": \"\u043C\u0456\u043B\u044C\u044F\u0440\u0434\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0442\u0440\u0438\u043B\u044C\u0439\u043E\u043D\",\n \"few\": \"\u0442\u0440\u0438\u043B\u044C\u0439\u043E\u043D\u0438\",\n \"plural\": \"\u0442\u0440\u0438\u043B\u044C\u0439\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u044C\u0439\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u044C\u0439\u043E\u043D\u0438\",\n \"plural\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u044C\u0439\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0456\u043D\u0442\u0438\u043B\u044C\u0439\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0456\u043D\u0442\u0438\u043B\u044C\u0439\u043E\u043D\u0438\",\n \"plural\": \"\u043A\u0432\u0456\u043D\u0442\u0438\u043B\u044C\u0439\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u044C\u0439\u043E\u043D\",\n \"few\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u044C\u0439\u043E\u043D\u0438\",\n \"plural\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u044C\u0439\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0441\u0435\u043F\u0442\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u0441\u0435\u043F\u0442\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u0441\u0435\u043F\u0442\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043E\u043A\u0442\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u043E\u043A\u0442\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u043E\u043A\u0442\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043D\u043E\u043D\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u043D\u043E\u043D\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u043D\u043E\u043D\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0443\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u0443\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u0443\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0456\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0456\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0438\",\n \"plural\": \"\u043A\u0432\u0456\u043D\u0434\u0435\u0446\u0456\u043B\u043B\u0456\u043E\u043D\u0456\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n }\n ],\n \"unitExceptions\": []\n}\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"\u043D\u043E\u043B\u044C\",\n \"1\": \"\u043E\u0434\u0438\u043D\",\n \"2\": \"\u0434\u0432\u0430\",\n \"3\": \"\u0442\u0440\u0438\",\n \"4\": \"\u0447\u0435\u0442\u044B\u0440\u0435\",\n \"5\": \"\u043F\u044F\u0442\u044C\",\n \"6\": \"\u0448\u0435\u0441\u0442\u044C\",\n \"7\": \"\u0441\u0435\u043C\u044C\",\n \"8\": \"\u0432\u043E\u0441\u0435\u043C\u044C\",\n \"9\": \"\u0434\u0435\u0432\u044F\u0442\u044C\",\n \"10\": \"\u0434\u0435\u0441\u044F\u0442\u044C\",\n \"11\": \"\u043E\u0434\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"12\": \"\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"13\": \"\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"14\": \"\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"15\": \"\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"16\": \"\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"17\": \"\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"18\": \"\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"19\": \"\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"20\": \"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C\",\n \"30\": \"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C\",\n \"40\": \"\u0441\u043E\u0440\u043E\u043A\",\n \"50\": \"\u043F\u044F\u0442\u044C\u0434\u0435\u0441\u044F\u0442\",\n \"60\": \"\u0448\u0435\u0441\u0442\u044C\u0434\u0435\u0441\u044F\u0442\",\n \"70\": \"\u0441\u0435\u043C\u044C\u0434\u0435\u0441\u044F\u0442\",\n \"80\": \"\u0432\u043E\u0441\u0435\u043C\u044C\u0434\u0435\u0441\u044F\u0442\",\n \"90\": \"\u0434\u0435\u0432\u044F\u043D\u043E\u0441\u0442\u043E\",\n \"100\": \"\u0441\u0442\u043E\",\n \"200\": \"\u0434\u0432\u0435\u0441\u0442\u0438\",\n \"300\": \"\u0442\u0440\u0438\u0441\u0442\u0430\",\n \"400\": \"\u0447\u0435\u0442\u044B\u0440\u0435\u0441\u0442\u0430\",\n \"500\": \"\u043F\u044F\u0442\u044C\u0441\u043E\u0442\",\n \"600\": \"\u0448\u0435\u0441\u0442\u044C\u0441\u043E\u0442\",\n \"700\": \"\u0441\u0435\u043C\u044C\u0441\u043E\u0442\",\n \"800\": \"\u0432\u043E\u0441\u0435\u043C\u044C\u0441\u043E\u0442\",\n \"900\": \"\u0434\u0435\u0432\u044F\u0442\u044C\u0441\u043E\u0442\"\n },\n \"alternativeBase\": {\n \"feminine\": {\n \"1\": \"\u043E\u0434\u043D\u0430\",\n \"2\": \"\u0434\u0432\u0435\"\n }\n },\n \"units\": [\n {\n \"useBaseInstead\": true,\n \"useBaseException\": []\n },\n {\n \"singular\": \"\u0442\u044B\u0441\u044F\u0447\u0430\",\n \"few\": \"\u0442\u044B\u0441\u044F\u0447\u0438\",\n \"plural\": \"\u0442\u044B\u0441\u044F\u0447\",\n \"useAlternativeBase\": \"feminine\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043C\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043C\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043C\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043C\u0438\u043B\u043B\u0438\u0430\u0440\u0434\",\n \"few\": \"\u043C\u0438\u043B\u043B\u0438\u0430\u0440\u0434\u0430\",\n \"plural\": \"\u043C\u0438\u043B\u043B\u0438\u0430\u0440\u0434\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0442\u0440\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0442\u0440\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0442\u0440\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u044C\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u043E\u043D\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0438\u043D\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0438\u043D\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043A\u0432\u0438\u043D\u0442\u0438\u043B\u044C\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"few\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u044C\u043E\u043D\u0430\",\n \"plural\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0441\u0435\u043F\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0441\u0435\u043F\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0441\u0435\u043F\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043E\u043A\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043E\u043A\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043E\u043A\u0442\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043D\u043E\u043D\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043D\u043E\u043D\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043D\u043E\u043D\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u043E\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0443\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0443\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0443\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0438\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0434\u0443\u043E\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0438\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u0442\u0440\u0435\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0438\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043A\u0432\u0430\u0442\u0443\u043E\u0440\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0438\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n },\n {\n \"singular\": \"\u043A\u0432\u0438\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"few\": \"\u043A\u0432\u0438\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0430\",\n \"plural\": \"\u043A\u0432\u0438\u043D\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\u0438\u0432\",\n \"useSingularEnding\": true,\n \"useFewEnding\": true,\n \"avoidEndingRules\": [11, 12, 13, 14, 111, 112, 113, 114, 211, 212, 213, 214, 311, 312, 313, 314, 411, 412, 413, 414, 511, 512, 513, 514, 611, 612, 613, 614, 711, 712, 713, 714, 811, 812, 813, 814, 911, 912, 913, 914]\n }\n ],\n \"unitExceptions\": []\n}", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \"\",\n \"base\": {\n \"0\": \"nol\",\n \"1\": \"satu\",\n \"2\": \"dua\",\n \"3\": \"tiga\",\n \"4\": \"empat\",\n \"5\": \"lima\",\n \"6\": \"enam\",\n \"7\": \"tujuh\",\n \"8\": \"delapan\",\n \"9\": \"sembilan\",\n \"10\": \"sepuluh\",\n \"11\": \"sebelas\",\n \"12\": \"dua belas\",\n \"13\": \"tiga belas\",\n \"14\": \"empat belas\",\n \"15\": \"lima belas\",\n \"16\": \"enam belas\",\n \"17\": \"tujuh belas\",\n \"18\": \"delapan belas\",\n \"19\": \"sembilan belas\",\n \"20\": \"dua puluh\",\n \"30\": \"tiga puluh\",\n \"40\": \"empat puluh\",\n \"50\": \"lima puluh\",\n \"60\": \"enam puluh\",\n \"70\": \"tujuh puluh\",\n \"80\": \"delapan puluh\",\n \"90\": \"sembilan puluh\"\n },\n \"units\" : [\n {\n \"singular\": \"seratus\",\n \"plural\": \"ratus\",\n \"avoidPrefixException\": [1]\n },\n {\n \"singular\": \"seribu\",\n \"plural\": \"ribu\",\n \"avoidPrefixException\": [1]\n },\n \"juta\",\n \"miliar\",\n \"triliun\",\n \"kuadiliun\"\n ],\n \"unitExceptions\": []\n}\n", "\"use strict\";\nexports = module.exports = writtenNumber;\nvar util = require(\"./util\");\n\nvar languages = [\"en\", \"es\", \"ar\", \"az\", \"pt\", \"fr\", \"eo\", \"it\", \"vi\", \"tr\", \"uk\", \"ru\", \"id\"];\nvar i18n = {\n en: require(\"./i18n/en.json\"),\n es: require(\"./i18n/es.json\"),\n ar: require(\"./i18n/ar.json\"),\n az: require(\"./i18n/az.json\"),\n pt: require(\"./i18n/pt.json\"),\n ptPT: require(\"./i18n/pt-PT.json\"),\n fr: require(\"./i18n/fr.json\"),\n eo: require(\"./i18n/eo.json\"),\n it: require(\"./i18n/it.json\"),\n vi: require(\"./i18n/vi.json\"),\n tr: require(\"./i18n/tr.json\"),\n hu: require(\"./i18n/hu.json\"),\n enIndian: require(\"./i18n/en-indian.json\"),\n uk: require(\"./i18n/uk.json\"),\n ru: require(\"./i18n/ru.json\"),\n id: require(\"./i18n/id.json\")\n};\nexports.i18n = i18n;\n\nvar shortScale = [100];\nfor (var i = 1; i <= 16; i++) {\n shortScale.push(Math.pow(10, i * 3));\n}\n\nvar longScale = [100, 1000];\nfor (i = 1; i <= 15; i++) {\n longScale.push(Math.pow(10, i * 6));\n}\n\nwrittenNumber.defaults = {\n noAnd: false,\n alternativeBase: null,\n lang: \"en\"\n};\n\n/**\n * Converts numbers to their written form.\n *\n * @param {Number} n The number to convert\n * @param {Object} [options] An object representation of the options\n * @return {String} writtenN The written form of `n`\n */\n\nfunction writtenNumber(n, options) {\n options = options || {};\n options = util.defaults(options, writtenNumber.defaults);\n\n if (n < 0) {\n return \"\";\n }\n\n n = Math.round(+n);\n\n var language = typeof options.lang === \"string\"\n ? i18n[options.lang]\n : options.lang;\n\n if (!language) {\n if (languages.indexOf(writtenNumber.defaults.lang) < 0) {\n writtenNumber.defaults.lang = \"en\";\n }\n\n language = i18n[writtenNumber.defaults.lang];\n }\n \n var scale = language.useLongScale ? longScale : shortScale;\n var units = language.units;\n var unit;\n\n if (!(units instanceof Array)) {\n var rawUnits = units;\n\n units = [];\n scale = Object.keys(rawUnits);\n\n for (var i in scale) {\n units.push(rawUnits[scale[i]]);\n scale[i] = Math.pow(10, parseInt(scale[i]));\n }\n }\n\n var baseCardinals = language.base;\n var alternativeBaseCardinals = options.alternativeBase \n ? language.alternativeBase[options.alternativeBase]\n : {};\n\n if (language.unitExceptions[n]) return language.unitExceptions[n];\n if (alternativeBaseCardinals[n]) return alternativeBaseCardinals[n];\n if (baseCardinals[n]) return baseCardinals[n];\n if (n < 100)\n return handleSmallerThan100(n, language, unit, baseCardinals, alternativeBaseCardinals, options);\n\n var m = n % 100;\n var ret = [];\n\n if (m) {\n if (\n options.noAnd &&\n !(language.andException && language.andException[10])\n ) {\n ret.push(writtenNumber(m, options));\n } else {\n ret.push(language.unitSeparator + writtenNumber(m, options));\n }\n }\n\n var firstSignificant;\n\n for (var i = 0, len = units.length; i < len; i++) {\n var r = Math.floor(n / scale[i]);\n var divideBy;\n\n if (i === len - 1) divideBy = 1000000;\n else divideBy = scale[i + 1] / scale[i];\n\n r %= divideBy;\n\n unit = units[i];\n\n if (!r) continue;\n firstSignificant = scale[i];\n\n if (unit.useBaseInstead) {\n var shouldUseBaseException =\n unit.useBaseException.indexOf(r) > -1 &&\n (unit.useBaseExceptionWhenNoTrailingNumbers\n ? i === 0 && ret.length\n : true);\n if (!shouldUseBaseException) {\n ret.push(alternativeBaseCardinals[r * scale[i]] || baseCardinals[r * scale[i]]);\n } else {\n ret.push(r > 1 && unit.plural ? unit.plural : unit.singular);\n }\n continue;\n }\n\n var str;\n if (typeof unit === \"string\") {\n str = unit;\n } else if (r === 1 || unit.useSingularEnding && r % 10 === 1\n && (!unit.avoidEndingRules || unit.avoidEndingRules.indexOf(r) < 0)) {\n str = unit.singular;\n } else if (unit.few && (r > 1 && r < 5 || unit.useFewEnding && r % 10 > 1 && r % 10 < 5\n && (!unit.avoidEndingRules || unit.avoidEndingRules.indexOf(r) < 0))) {\n str = unit.few;\n } else {\n str = unit.plural && (!unit.avoidInNumberPlural || !m)\n ? unit.plural\n : unit.singular;\n \n // Languages with dual\n str = (r === 2 && unit.dual) ? unit.dual : str;\n \n // \"restrictedPlural\" : use plural only for 3 to 10\n str = (r > 10 && unit.restrictedPlural) ? unit.singular : str;\n }\n\n if (\n unit.avoidPrefixException &&\n unit.avoidPrefixException.indexOf(r) > -1\n ) {\n ret.push(str);\n continue;\n }\n\n var exception = language.unitExceptions[r];\n var number =\n exception ||\n writtenNumber(\n r,\n util.defaults(\n {\n // Languages with and exceptions need to set `noAnd` to false\n noAnd: !((language.andException && language.andException[r]) ||\n unit.andException) && true,\n alternativeBase: unit.useAlternativeBase\n },\n options\n )\n );\n n -= r * scale[i];\n ret.push(number + \" \" + str);\n }\n\n var firstSignificantN = firstSignificant * Math.floor(n / firstSignificant);\n var rest = n - firstSignificantN;\n\n if (\n language.andWhenTrailing &&\n firstSignificant &&\n 0 < rest &&\n ret[0].indexOf(language.unitSeparator) !== 0\n ) {\n ret = [ret[0], language.unitSeparator.replace(/\\s+$/, \"\")].concat(\n ret.slice(1)\n );\n }\n \n // Languages that have separators for all cardinals.\n if (language.allSeparator) {\n for (var j = 0; j < ret.length-1; j++) {\n ret[j] = language.allSeparator + ret[j]; \n }\n }\n var result = ret.reverse().join(\" \");\n return result;\n}\n\nfunction handleSmallerThan100(n, language, unit, baseCardinals, alternativeBaseCardinals, options) {\n var dec = Math.floor(n / 10) * 10;\n unit = n - dec;\n if (unit) {\n return (\n alternativeBaseCardinals[dec] || baseCardinals[dec] + language.baseSeparator + writtenNumber(unit, options)\n );\n }\n return alternativeBaseCardinals[dec] || baseCardinals[dec];\n}\n", "import { AST } from '@handlebars/parser';\n\n\n// Base Data Types\n\nexport type Obj<T extends any = any> = Record<string, T>;\n\nexport type Isset<T extends any> = T extends null|undefined ? false : true;\n\nexport type IsNumber<T extends any> = T extends number ? true : false;\n\nexport type IsObject<T extends any, O extends Obj = Obj> = T extends O ? true : false;\n\nexport type Has<T extends Obj, K extends keyof T> = T[K];\n\nexport type Inarr<T extends any, A extends any[]> = T extends A[any] ? true : false;\n\nexport type FieldType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'date' | 'mixed';\n\nexport type FieldValue = string | number | boolean | Obj | FieldValue[] | null;\n\n\n// Base Struct Types\n\nexport type MacroParam = {\n name: string,\n value: string|null,\n};\n\nexport type Macro = {\n name: string,\n params: MacroParam[],\n};\n\nexport type FieldValueOption = {\n type: string,\n name: string,\n fieldName: string,\n label?: string|null,\n descr?: string|null,\n value?: FieldValue | null,\n isDisabled: boolean,\n};\n\nexport type Field = {\n type: FieldType,\n name: string,\n label?: string|null,\n descr?: string|null,\n hint?: string|null,\n min?: Date | number | null,\n max?: Date | number | null,\n minLength?: number|null,\n maxLength?: number|null,\n order?: number|null,\n options?: FieldValueOption[] | null,\n value?: FieldValue,\n isRequired: boolean,\n extra?: {\n macroName?: string|null,\n absoluteOrder?: number|null,\n }\n};\n\nexport type DataModelNode = {\n name: string,\n $?: DataModelNode[],\n};\n\nexport type DataModel = DataModelNode & {\n addPath: (path: string, depth?: number) => void,\n};\n\nexport type MetadataModelNode = DataModelNode & {\n type: FieldType,\n label?: string|null,\n descr?: string|null,\n hint?: string|null,\n min?: Date | number | null,\n max?: Date | number | null,\n minLength?: number|null,\n maxLength?: number|null,\n order?: number|null,\n options?: FieldValueOption[] | null,\n value?: string|null,\n isRequired: boolean,\n extra?: {\n fieldName?: string|null,\n },\n};\n\n\n// Base Callable Types\n\nexport type CollectorFilterHandler<T = any> = (val?: T) => boolean;\n\nexport type GetProcessedTemplateHandler = (val: string) => string;\n\nexport type GetTemplateAstHandler = (val: string) => AST.Program;\n\nexport type GetTemplateTitleHandler = (ast: AST.Program) => string[];\n\nexport type GetTemplateMacroHandler = (ast: AST.Program) => Macro[];\n", "\n// Base Errors\n\nexport class BaseThrowable extends Error {\n public name = 'BaseThrowable';\n\n constructor(message: string, stack?: string|null) {\n super(message);\n if (stack) this.stack = stack;\n }\n}\n\nexport class BaseWarning extends BaseThrowable {\n public name = 'BaseWarning';\n}\n\nexport class BaseError extends BaseThrowable {\n public name = 'BaseError';\n}\n\n\n// Specific Errors\n\nexport class PotentialLoopError extends BaseError {\n public name = 'PotentialLoopError';\n\n constructor(message: string = 'Potential loop detected: This might me an internal issue', stack?: string|null) {\n super(message, stack);\n }\n}\n\n\n// Template Errors\n\nexport class TemplateError extends BaseError {\n public name = 'TemplateError';\n}\n\nexport class TemplateSyntaxError extends TemplateError {\n public name = 'TemplateSyntaxError';\n}\n\nexport class TemplateDataValidationError extends TemplateError {\n public name = 'TemplateDataValidationError';\n declare public fieldName: string;\n\n constructor(message: string = 'The entered data is invalid: This might me an internal issue', fieldName?: string|null) {\n super(message);\n if (fieldName) this.fieldName = fieldName;\n }\n}\n", "import { DateTime } from 'luxon';\nimport { AST } from '@handlebars/parser';\nimport { createGenerator, presetTypography } from 'unocss';\nimport { presetWind4 } from '@unocss/preset-wind4';\nimport { BaseError, BaseWarning, PotentialLoopError, TemplateDataValidationError } from '@/errors';\nimport striptags from 'striptags';\nimport unocssShadowDomHack from './unocssShadowDomHack.css';\nimport Handlebars, { TemplateDelegate } from 'handlebars';\nimport * as types from '@/types';\n\n\n// Third-parties\n\nexport const uno = createGenerator({\n presets: [\n presetWind4(),\n presetTypography(),\n ],\n preflights: [\n // @remarks NOTE: kr: UnoCSS needs a hack to make Shadow DOM work in Tailwind v4\n // @see https://github.com/tailwindlabs/tailwindcss/discussions/15556\n { getCSS: () => unocssShadowDomHack },\n ],\n theme: {},\n});\n\n\n// Constants\n\nexport const DEFAULT_MODEL_DEPTH = 10;\n\nexport const DEFAULT_FIELD_TYPE: types.FieldType = 'string';\n\n\n// Variables\n\nexport const stripHtml = striptags;\n\n\n// Classes\n\nexport class HandlebarsCollector<T = any> extends Handlebars.Visitor {\n public data: T[] = [];\n public match: types.CollectorFilterHandler<T> = () => true;\n\n constructor(filter?: types.CollectorFilterHandler<T>) {\n super();\n if (filter) this.setMatchHandler(filter);\n }\n\n public onCollect(val: T): void {\n if (this.match(val))\n this.data.push(val);\n }\n\n public setMatchHandler(val: types.CollectorFilterHandler<T>): this {\n this.match = val;\n return this;\n }\n\n public setAst(ast: AST.Program): this {\n this.accept(ast);\n return this;\n }\n\n public collect(ast: AST.Program): T[] {\n this.data = [];\n\n this.setAst(ast);\n\n return this.data;\n }\n}\n\nclass HandlebarsCommentCollector extends HandlebarsCollector<string> {\n public CommentStatement(node) {\n this.onCollect(node.value);\n return super.CommentStatement(node);\n }\n}\n\nclass HandlebarsContentCollector extends HandlebarsCollector<string> {\n public ContentStatement(node) {\n this.onCollect(node.value);\n return super.ContentStatement(node);\n }\n}\n\nclass HandlebarsPathCollector extends HandlebarsCollector<string> {\n public PathExpression(node) {\n const path = node.original;\n\n\n // Defining the functions\n\n const test = (val: string): boolean => path === val;\n\n\n // TODO: kr: Costyl to skip '{{#if}}' paths in AST\n\n if (test('if') || test('unless') || test('each') || test('with'))\n return super.PathExpression(node);\n\n\n // Collecting the path\n\n this.onCollect(node.original);\n\n\n return super.PathExpression(node);\n }\n}\n\nclass FlextMacroCollector extends HandlebarsCommentCollector {\n public match = FilterHelper.macro;\n}\n\nclass FlextH1SomewhereContentCollector extends HandlebarsContentCollector {\n public match = FilterHelper.htmlH1Somewhere;\n}\n\n\n// Checking Functions\n\nexport function inarr<T extends any, A extends any[]>(val: T, ...arr: A): types.Inarr<T, A> {\n return arr.includes(val) as types.Inarr<T, A>;\n}\n\nexport function has<T extends types.Obj, K extends keyof T>(obj: T, key: K): types.Has<T, K> {\n return obj.hasOwnProperty(key) as types.Has<T, K>;\n}\n\nexport function isset<T extends any>(val: T): types.Isset<T> {\n return !inarr(val, null, undefined) as types.Isset<T>;\n}\n\nexport function isNumber<T extends any>(val: T): types.IsNumber<T> {\n return (isset(val) && !isNaN(Number(val))) as types.IsNumber<T>;\n}\n\nexport function isObject<T extends any>(val: T): types.IsObject<T> {\n return (typeof val === 'object' && val !== null) as types.IsObject<T>;\n}\n\n\n// System Functions\n\nexport function audit(val: any): string {\n if (isObject(val))\n return JSON.stringify(val);\n\n else if (typeof val === 'string')\n return `'${val}'`;\n\n else\n return String(val);\n}\n\n\n// Handlebars Functions\n\nexport function getAst(val: string): AST.Program {\n return Handlebars.parse(val);\n}\n\nexport function getTemplate(val: string | AST.Program): TemplateDelegate {\n return Handlebars.compile(val);\n}\n\nexport function getHtml(template: TemplateDelegate, data: types.Obj = {}, helpers: types.Obj = {}): string {\n return template(data, { helpers });\n}\n\nexport async function getCss(template: TemplateDelegate, data: types.Obj = {}, options: types.Obj = {}): Promise<string> {\n const helpers = options?.helpers ?? {};\n const doGenerateGlobalStyles = Boolean(options?.doGenerateGlobalStyles ?? true);\n\n\n // Getting the CSS\n\n const generator = await uno;\n const html = getHtml(template, data, helpers);\n const { css } = await generator.generate(html, { preflights: doGenerateGlobalStyles });\n\n\n return css;\n}\n\n\n// Analyze Functions\n\nexport function unique<T = any>(arr: T[]): T[] {\n return [ ...new Set(arr) ];\n}\n\nexport function getPaths(ast: AST.Program): string[] {\n const paths = new HandlebarsPathCollector().collect(ast);\n return unique(paths);\n}\n\nexport function pathToDataModelNode(path: string, depth: number = DEFAULT_MODEL_DEPTH): types.DataModelNode {\n\n // Doing some checks\n\n if (depth <= 0)\n throw new PotentialLoopError('Flext: Unable to get the model: The model is too deep');\n\n\n // Getting the root node\n\n const [ name, ...items ] = path?.split('.') ?? [];\n\n const result: types.DataModelNode = { name };\n\n\n // If the node has children\n\n if (items?.length > 0)\n result.$ = [ pathToDataModelNode(items?.join('.') || '', depth - 1) ];\n\n\n return result;\n}\n\nexport function pathToDataModel(path: string, depth: number = DEFAULT_MODEL_DEPTH): types.DataModel {\n const node: any = pathToDataModelNode(path, depth);\n const dataModel: any = { name: 'root', $: [ node ] };\n\n\n // Defining the methods\n\n dataModel.addPath = (_path: string, _depth: number = DEFAULT_MODEL_DEPTH): void => {\n const newNode = pathToDataModelNode(_path, _depth);\n let cursorRef: types.DataModelNode = dataModel;\n let cursor: types.DataModelNode | null = newNode;\n\n\n // Iterating for each new node\n\n for (let i = 0; i < 99; i++) {\n\n // Doing some checks\n\n if (!cursor) return;\n\n\n // Trying to match the model node\n\n const nodesRef = cursorRef?.$ ?? [];\n let nextCursorRef = null;\n\n for (const nodeRef of nodesRef)\n if (cursor?.name === nodeRef?.name)\n nextCursorRef = nodeRef;\n\n\n // If the model node does not exist\n\n if (!nextCursorRef) {\n cursorRef.$ = [ ...nodesRef, cursor ];\n return;\n }\n\n\n // Setting the next cursor\n\n const [ nextCursor ] = cursor.$ ?? [];\n\n cursorRef = nextCursorRef;\n cursor = nextCursor ?? null;\n }\n };\n\n\n return dataModel;\n}\n\nexport function getDataModel(ast: AST.Program): types.DataModel {\n const [ first, ...paths ] = getPaths(ast);\n const result: types.DataModel = pathToDataModel(first);\n\n\n // Iterating for each path\n\n for (const path of paths) {\n const test = (val: string): boolean => path.startsWith(val);\n\n if (test('.') || test('/') || test('@') || test('this'))\n continue; // TODO: kr: Costyl to skip 'this*' paths in AST\n else\n result.addPath(path);\n }\n\n\n return result;\n}\n\nexport function dataModelNodeToMetadata(node: types.DataModelNode, fields: types.Field[], _options: types.Obj = {}, depth: number = DEFAULT_MODEL_DEPTH): types.MetadataModelNode {\n\n // Doing some checks\n\n if (depth <= 0)\n throw new PotentialLoopError('Flext: Unable to get data model: The data model is too deep');\n\n\n // Defining the functions\n\n const getField = (_fieldName: string): types.Field | null => fields?.find(f => f?.name === _fieldName) ?? null;\n\n\n // Getting the data\n\n const fieldName = _options?.fieldName ?? node?.name ?? null;\n const field = getField(fieldName);\n const order = field?.order ?? null;\n const nodes = node?.$ ?? [];\n const type = nodes?.length ? 'object' : field?.type ?? DEFAULT_FIELD_TYPE;\n const name = node?.name ?? null;\n const label = field?.label ?? null;\n const hint = field?.hint ?? null;\n const min = field?.min ?? null;\n const max = field?.max ?? null;\n const minLength = field?.minLength ?? null;\n const maxLength = field?.maxLength ?? null;\n const options = field?.options ?? null;\n const isRequiredBool = field?.isRequired ?? null;\n\n\n // Getting the sub-nodes\n\n const newNodes: types.MetadataModelNode[] = [];\n\n for (const node of nodes) {\n const nodeName = node?.name ?? null;\n\n newNodes.push(dataModelNodeToMetadata(node, fields, {\n fieldName: fieldName + '.' + nodeName,\n }, depth - 1));\n }\n\n\n // Getting the ordered sub-nodes\n\n const $ = newNodes.sort((node, nodeRef) => {\n const nodeFieldName = node?.extra?.fieldName ?? null;\n const nodeField: types.Obj = getField(nodeFieldName) ?? {};\n const nodeFieldOrder = nodeField?.order ?? null;\n const nodeFieldAbsoluteOrder = nodeField?.extra?.absoluteOrder ?? null;\n const nodeFieldNameRef = nodeRef?.extra?.fieldName ?? null;\n const nodeFieldRef: types.Obj = getField(nodeFieldNameRef) ?? {};\n const nodeFieldOrderRef = nodeFieldRef?.order ?? null;\n const nodeFieldAbsoluteOrderRef = nodeFieldRef?.extra?.absoluteOrder ?? null;\n\n if (compare(nodeFieldOrder, nodeFieldOrderRef) !== 0)\n return compare(nodeFieldOrder, nodeFieldOrderRef);\n else\n return compare(nodeFieldAbsoluteOrder, nodeFieldAbsoluteOrderRef);\n });\n\n\n // Getting the required\n\n const isAllChildrenRequired = newNodes?.length && newNodes.every(n => n?.isRequired);\n\n const isRequired = isset(isRequiredBool) ? isRequiredBool : isAllChildrenRequired;\n\n\n // Getting the extra\n\n const extra = { fieldName };\n\n\n return {\n type,\n name,\n label,\n hint,\n min,\n max,\n minLength,\n maxLength,\n order,\n options,\n isRequired,\n extra,\n $,\n };\n}\n\nexport function getMacroParam(val: string): types.MacroParam | null {\n\n // Defining the functions\n\n const match = (regex: RegExp): any => val?.match(regex) ?? null;\n\n const get = (val: any): types.MacroParam => {\n const value = val?.groups?.value ?? null;\n const name = val?.groups?.name ?? value;\n\n return { name, value };\n }\n\n\n // Guessing the param type\n\n const param = match(RegexHelper.macroParam);\n const namedParam = match(RegexHelper.macroNamedParam);\n const simpleParam = match(RegexHelper.macroSimpleParam)\n\n\n // If the param type is known\n\n if (param)\n return get(param);\n\n if (namedParam)\n return get(namedParam);\n\n if (simpleParam)\n return get(simpleParam);\n\n\n return null;\n}\n\nexport function getMacroParams(val: string, doWarn: boolean = true): types.MacroParam[] {\n const matches = val?.match(RegexHelper.macroParams) ?? [];\n const result: types.MacroParam[] = [];\n\n\n // Iterating for each token\n\n for (const token of matches) {\n const macro = getMacroParam(token);\n\n if (macro)\n result.push(macro);\n else if (doWarn)\n throw new BaseWarning('Flext: Unable to parse the macros: Bad token: ' + audit(token));\n }\n\n\n return result;\n}\n\nexport function getMacros(ast: AST.Program, doWarn: boolean = true): types.Macro[] {\n const macroArr = new FlextMacroCollector().collect(ast);\n const result: types.Macro[] = [];\n\n\n // Iterating for each macro string\n\n for (const macroStr of macroArr) {\n const matches = macroStr?.trim()?.match(RegexHelper.macro) ?? null;\n\n\n // Doing some checks\n\n if (!matches) {\n if (doWarn)\n throw new BaseWarning('Flext: Unable to parse the macros: Bad macro: ' + audit(macroStr));\n else\n return null;\n }\n\n\n // Getting the data\n\n const name = matches?.groups?.name ?? null;\n const paramsStr = matches?.groups?.params ?? null;\n const params = getMacroParams(paramsStr, doWarn);\n\n\n result.push({ name, params });\n }\n\n\n return result;\n}\n\nexport function getHtmlH1(ast: AST.Program, doWarn: boolean = true): string[] {\n const titleArr = new FlextH1SomewhereContentCollector().collect(ast);\n const result: string[] = [];\n\n\n // Iterating for each macro string\n\n for (const titleStr of titleArr) {\n const matches = titleStr?.trim()?.match(RegexHelper.htmlH1Somewhere) ?? null;\n\n\n // Doing some checks\n\n if (!matches) {\n if (doWarn)\n throw new BaseWarning('Flext: Unable to parse H1: Bad HTML: ' + audit(titleStr));\n else\n return null;\n }\n\n\n // Iterating for each match\n\n for (const match of matches)\n result.push(String(match));\n }\n\n\n return result;\n}\n\nexport function getTemplateValidationErrorsByMetadata(data: types.Obj, model: types.MetadataModelNode[], depth: number = DEFAULT_MODEL_DEPTH): TemplateDataValidationError[] {\n\n // Doing some checks\n\n if (depth <= 0)\n throw new PotentialLoopError('Flext: Unable to verify the data: The data model is too deep');\n\n\n // Getting the data\n\n const result: TemplateDataValidationError[] = [];\n\n\n // Defining the functions\n\n const isval = (val: any): boolean => !inarr(val, '', null, undefined);\n\n const len = (val: any): number => String(val).length;\n\n const err = (message: string, fieldName?: string|null): void => { result.push(new TemplateDataValidationError(message, fieldName)); };\n\n\n // Iterating for each child node\n\n for (const node of model) {\n\n // Getting the data\n\n const fieldNameStr = node?.extra?.fieldName ?? null;\n const fieldName = fieldNameStr ?? node?.name ?? 'Unknown';\n const fieldValue: types.Obj = data[node.name] ?? null;\n\n\n // If the value is required\n\n if (!isval(fieldValue) && node?.isRequired) {\n err(`Field '${fieldName}' is required (${audit(fieldValue)} is passed)`, fieldNameStr);\n continue;\n }\n\n\n // If the value has value range (e.g. 10 < value < 20)\n\n if (inarr(node?.type, 'number', 'date') && isval(node?.min) && isval(fieldValue) && node?.min > fieldValue) {\n err(`'${fieldName}' field value is less than the range (${audit(fieldValue)} is passed, the minimum is ${audit(node?.min)})`, fieldNameStr);\n continue;\n }\n\n if (inarr(node?.type, 'number', 'date') && isval(node?.max) && isval(fieldValue) && node?.max < fieldValue) {\n err(`'${fieldName}' field value is greater than the range (${audit(fieldValue)} is passed, the maximum is ${audit(node?.max)})`, fieldNameStr);\n continue;\n }\n\n\n // If the value has length range (e.g. 100 < length < 200)\n\n if (!inarr(node?.type, 'object', 'array', 'mixed') && isval(node?.minLength) && isval(fieldValue) && node?.minLength > len(fieldValue)) {\n err(`'${fieldName}' field value is shorter than the range (${audit(fieldValue)} is passed, the minimum is ${audit(node?.minLength)})`, fieldNameStr);\n continue;\n }\n\n if (!inarr(node?.type, 'object', 'array', 'mixed') && isval(node?.maxLength) && isval(fieldValue) && node?.maxLength < len(fieldValue)) {\n err(`'${fieldName}' field value is longer than the range (${audit(fieldValue)} is passed, the maximum is ${audit(node?.maxLength)})`, fieldNameStr);\n continue;\n }\n\n if (inarr(node?.type, 'string') && isNumber(node?.min) && isval(fieldValue) && Number(node?.min) > len(fieldValue)) {\n err(`'${fieldName}' field value is shorter than the range (${audit(fieldValue)} is passed, the minimum is ${audit(node?.min)})`, fieldNameStr);\n continue;\n }\n\n if (inarr(node?.type, 'string') && isNumber(node?.max) && isval(fieldValue) && Number(node?.max) < len(fieldValue)) {\n err(`'${fieldName}' field value is longer than the range (${audit(fieldValue)} is passed, the maximum is ${audit(node?.max)})`, fieldNameStr);\n continue;\n }\n\n\n result.push(...getTemplateValidationErrorsByMetadata(fieldValue ?? {}, node.$ as types.MetadataModelNode[], depth - 1));\n }\n\n\n return result;\n}\n\n\n// Framework Functions\n\nexport function ensureString(val: any): string {\n return String(val ?? '');\n}\n\nexport function ensureNullableString(val: any): string|null {\n if (inarr(val, null, undefined))\n return null;\n else\n return ensureString(val);\n}\n\nexport function ensureDate<T extends boolean = true>(val: Date | string | number, doWarn: T = true as T): T extends true ? Date : Date | null {\n const isDateObj = isObject(val) && val instanceof Date;\n const isDbDate = typeof val === 'string' && RegexHelper.dbDateStr.test(val);\n\n\n // Defining the functions\n\n const unixDate = <R extends boolean = true>(_val: string|number, _doWarn: R = true as R): R extends true ? Date : Date | null => {\n const date = new Date(_val);\n\n if (isNaN(date.getTime()) && _doWarn)\n throw new BaseWarning('Flext: Unable to get date: The date is invalid: ' + audit(_val));\n else if (isNaN(date.getTime()))\n return null;\n else\n return date;\n }\n\n const dbDate = <R extends boolean = true>(_val: string, _doWarn: R = true as R): R extends true ? Date : Date | null => {\n const [ year, month, day ] = _val?.split('-')?.map(Number) ?? [];\n\n if (year && month && day)\n return DateTime.fromtypes.Object({ year, month, day }).toJSDate();\n else if (_doWarn)\n throw new BaseError('Flext: Unable to get date: The date is invalid: ' + audit(_val));\n else\n return null;\n }\n\n const isoDate = <R extends boolean = true>(_val: string, _doWarn: R = true as R): R extends true ? Date : Date | null => {\n const date = DateTime.fromISO(_val);\n\n if (date.isValid)\n return date.toJSDate();\n else if (_doWarn)\n throw new BaseWarning('Flext: Unable to get date: The date is invalid: ' + audit(_val));\n else\n return null;\n }\n\n\n if (isDateObj)\n return val as Date;\n\n if (isNumber(val))\n return unixDate(val as number, doWarn);\n\n else if (isDbDate)\n return dbDate(val as string, doWarn);\n\n else\n return isoDate(val as string, doWarn);\n}\n\nexport function ensureTitle(val: string|number): string {\n let title: string|null = stripHtml(String(val)).trim();\n\n\n // Defining the functions\n\n const filter = (search: string | RegExp, val: string = '') => title = title.replace(search, val);\n\n\n // Getting the title\n\n filter('\\n', ' ');\n filter(/\\s{2,}/mg, ' ');\n filter(/[^\\p{L}\\d\\s]/mgu);\n\n\n return title.trim();\n}\n\nexport function ensureFieldName(val: string): string {\n let pathItem = val;\n\n\n // Defining the functions\n\n const filter = (search: string, val: string = '') => pathItem = pathItem.replace(search, val);\n\n\n // Getting the path item\n\n filter('['); // Filtering the '[n]' case\n filter(']'); // Filtering the '[n]' case\n\n\n return pathItem.trim();\n}\n\nexport function ensureNullableFieldMinMax(val: any): Date | number | null {\n if (isNumber(val))\n return val;\n else if (isObject(val) && val instanceof Date)\n return val;\n else\n return null;\n}\n\nexport function ensureNullableFieldMinMaxLength(val: any): number|null {\n if (isNumber(val))\n return val;\n else\n return null;\n}\n\nexport function ensureNullableFieldOrder(val: any): number|null {\n return isset(val) ? Number(val) : null;\n}\n\nexport function ensureFieldValue(val: any): types.FieldValue {\n\n // If the value is a string\n\n if (typeof val !== 'string') try {\n return JSON.parse(val);\n } catch (e) {\n return val ?? null;\n }\n\n\n // If the value is other\n\n else return val ?? null;\n}\n\nexport function sum(...args: number[]): number {\n return args.reduce((acc, val) => Number(acc) + Number(val), 0);\n}\n\nexport function matches(regex: RegExp, val: string|number): boolean {\n return !!String(val).trim().match(regex);\n}\n\nexport function compare(val: number|null|undefined, valRef: number|null|undefined): number {\n if (!isset(val) && !isset(valRef))\n return 0;\n else if (!isset(val))\n return 1;\n else if (!isset(valRef))\n return -1;\n else\n return val - valRef;\n}\n\nexport function macroToModuleNames(val: types.Macro): string[] {\n const params = val?.params ?? [];\n return params.map(p => p?.value ?? null);\n}\n\nexport function macroToField(val: types.Macro): types.Field {\n const macroName = val?.name ?? null;\n const params = val?.params ?? [];\n const [ nameParam, ...args ] = params;\n\n\n // Defining the functions\n\n const get = (_val: string): any => {\n const arg = args?.find(a => a?.name === _val) ?? null;\n\n if (arg && arg?.value)\n return arg?.value ?? null;\n else if (arg && arg?.name)\n return true;\n else\n return null;\n }\n\n\n // Getting the data\n\n const type = ensureString(get('type') ?? DEFAULT_FIELD_TYPE) as types.FieldType;\n const nameStr = ensureNullableString(nameParam?.value);\n const label = ensureNullableString(get('label'));\n const descr = ensureNullableString(get('descr'));\n const hint = ensureNullableString(get('hint'));\n const min = ensureNullableFieldMinMax(get('min'));\n const max = ensureNullableFieldMinMax(get('max'));\n const minLength = ensureNullableFieldMinMaxLength(get('minLength'));\n const maxLength = ensureNullableFieldMinMaxLength(get('maxLength'));\n const order = ensureNullableFieldOrder(get('order'));\n const value = ensureFieldValue(get('value'));\n const isRequired = !!get('required');\n\n\n // Doing some checks\n\n if (!nameStr)\n throw new BaseError(`Unable to get field: The 'name' param is not set: ` + audit(nameStr));\n\n\n // Getting the name\n\n const name = ensureFieldName(nameStr);\n\n\n // Gettign the extra\n\n const extra = { macroName };\n\n\n return {\n type,\n name,\n label,\n descr,\n hint,\n min,\n max,\n minLength,\n maxLength,\n order,\n value,\n isRequired,\n extra,\n };\n}\n\nexport function macroToFieldValueOption(val: types.Macro): types.FieldValueOption {\n const params = val?.params ?? [];\n const [ nameParam, ...args ] = params;\n\n\n // Defining the functions\n\n const get = (_val: string): any => {\n const arg = args?.find(a => a?.name === _val) ?? null;\n\n if (arg && arg?.value)\n return arg?.value ?? null;\n else if (arg && arg?.name)\n return true;\n else\n return null;\n }\n\n\n // Getting the data\n\n const type = ensureString(get('type') ?? DEFAULT_FIELD_TYPE);\n const name = nameParam?.value ?? null;\n const fieldName = get('for') ?? null;\n const label = get('label') ?? null;\n const descr = get('descr') ?? null;\n const value = ensureFieldValue(get('value'));\n const isDisabled = !!get('disabled');\n\n\n // Doing some checks\n\n if (!name)\n throw new BaseError(`Unable to get field option: The 'name' param is not set: ` + audit(name));\n\n if (!fieldName)\n throw new BaseError(`Unable to get field option '${name}': The 'for' param is not set: ` + audit(name));\n\n\n return {\n type,\n name,\n fieldName,\n label,\n descr,\n value,\n isDisabled,\n };\n}\n\nexport function applyValueOptionsToFields(options: types.FieldValueOption[], fields: types.Field[]): void {\n\n // Defining the functions\n\n const get = (fieldName: string): types.FieldValueOption[] => {\n return options?.filter(o => o?.fieldName === fieldName) ?? [];\n };\n\n\n // Iterating for each field\n\n for (const field of fields)\n if (get(field.name)?.length)\n field.options = get(field.name);\n}\n\nexport function applyAbsoluteOrderToFields(fields: types.Field[]): void {\n for (const [ i, field ] of fields.entries()) {\n if (field?.extra)\n field.extra.absoluteOrder = i;\n else\n field.extra = { absoluteOrder: i };\n }\n}\n\nexport function defineModule(options: any = {}): any {\n const helpers = options?.helpers ?? null;\n return { helpers };\n}\n\n\n// Helpers\n\nexport class RegexHelper {\n public static dbDateStr = /^\\d+-\\d+-\\d+$/;\n public static macro = /^@(?<name>.+?) (?<params>.+)$/;\n public static macroParams = /(?<param>\".+?\")|(?<namedParam>[a-zA-Z0-9]+=\".+?\")|(?<simplaeParam>[a-zA-Z0-9]+)/gm;\n public static macroParam = /^\"(?<value>.+)\"$/;\n public static macroNamedParam = /^(?<name>.+)=\"(?<value>.+)\"$/;\n public static macroSimpleParam = /^(?<name>[a-zA-Z]+)$/;\n public static htmlH1Somewhere = /\\<h1.*?\\>(?<value>.*)\\<\\/h1.*?\\>/gs;\n}\n\nexport class FilterHelper {\n public static macro(val: string): boolean {\n return matches(RegexHelper.macro, val);\n }\n\n public static htmlH1Somewhere(val: string): boolean {\n return matches(RegexHelper.htmlH1Somewhere, val);\n }\n}\n", "// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n", "/**\n * @private\n */\n\nconst n = \"numeric\",\n s = \"short\",\n l = \"long\";\n\nexport const DATE_SHORT = {\n year: n,\n month: n,\n day: n,\n};\n\nexport const DATE_MED = {\n year: n,\n month: s,\n day: n,\n};\n\nexport const DATE_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n};\n\nexport const DATE_FULL = {\n year: n,\n month: l,\n day: n,\n};\n\nexport const DATE_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n};\n\nexport const TIME_SIMPLE = {\n hour: n,\n minute: n,\n};\n\nexport const TIME_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const TIME_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const TIME_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n\nexport const TIME_24_SIMPLE = {\n hour: n,\n minute: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SECONDS = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n};\n\nexport const TIME_24_WITH_SHORT_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: s,\n};\n\nexport const TIME_24_WITH_LONG_OFFSET = {\n hour: n,\n minute: n,\n second: n,\n hourCycle: \"h23\",\n timeZoneName: l,\n};\n\nexport const DATETIME_SHORT = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_SHORT_WITH_SECONDS = {\n year: n,\n month: n,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_MED_WITH_SECONDS = {\n year: n,\n month: s,\n day: n,\n hour: n,\n minute: n,\n second: n,\n};\n\nexport const DATETIME_MED_WITH_WEEKDAY = {\n year: n,\n month: s,\n day: n,\n weekday: s,\n hour: n,\n minute: n,\n};\n\nexport const DATETIME_FULL = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_FULL_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: s,\n};\n\nexport const DATETIME_HUGE = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n timeZoneName: l,\n};\n\nexport const DATETIME_HUGE_WITH_SECONDS = {\n year: n,\n month: l,\n day: n,\n weekday: l,\n hour: n,\n minute: n,\n second: n,\n timeZoneName: l,\n};\n", "import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The IANA name of this zone.\n * Defaults to `name` if not overwritten by a subclass.\n * @abstract\n * @type {string}\n */\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n", "import { formatOffset, parseZoneInfo } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * Represents the local zone for this JavaScript environment.\n * @implements {Zone}\n */\nexport default class SystemZone extends Zone {\n /**\n * Get a singleton instance of the local zone\n * @return {SystemZone}\n */\n static get instance() {\n if (singleton === null) {\n singleton = new SystemZone();\n }\n return singleton;\n }\n\n /** @override **/\n get type() {\n return \"system\";\n }\n\n /** @override **/\n get name() {\n return new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n return -new Date(ts).getTimezoneOffset();\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"system\";\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n", "import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nconst dtfCache = new Map();\nfunction makeDTF(zoneName) {\n let dtf = dtfCache.get(zoneName);\n if (dtf === undefined) {\n dtf = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zoneName,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n dtfCache.set(zoneName, dtf);\n }\n return dtf;\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nconst ianaZoneCache = new Map();\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n let zone = ianaZoneCache.get(name);\n if (zone === undefined) {\n ianaZoneCache.set(name, (zone = new IANAZone(name)));\n }\n return zone;\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache.clear();\n dtfCache.clear();\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated For backward compatibility, this forwards to isValidZone, better use `isValidZone()` directly instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /**\n * The type of zone. `iana` for all instances of `IANAZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"iana\";\n }\n\n /**\n * The name of this zone (i.e. the IANA zone name).\n * @override\n * @type {string}\n */\n get name() {\n return this.zoneName;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns false for all IANA zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return false;\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @override\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n if (!this.valid) return NaN;\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /**\n * Return whether this Zone is valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return this.valid;\n }\n}\n", "import { hasLocaleWeekInfo, hasRelative, padStart, roundTo, validateWeekSettings } from \"./util.js\";\nimport * as English from \"./english.js\";\nimport Settings from \"../settings.js\";\nimport DateTime from \"../datetime.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n// todo - remap caching\n\nlet intlLFCache = {};\nfunction getCachedLF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlLFCache[key];\n if (!dtf) {\n dtf = new Intl.ListFormat(locString, opts);\n intlLFCache[key] = dtf;\n }\n return dtf;\n}\n\nconst intlDTCache = new Map();\nfunction getCachedDTF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let dtf = intlDTCache.get(key);\n if (dtf === undefined) {\n dtf = new Intl.DateTimeFormat(locString, opts);\n intlDTCache.set(key, dtf);\n }\n return dtf;\n}\n\nconst intlNumCache = new Map();\nfunction getCachedINF(locString, opts = {}) {\n const key = JSON.stringify([locString, opts]);\n let inf = intlNumCache.get(key);\n if (inf === undefined) {\n inf = new Intl.NumberFormat(locString, opts);\n intlNumCache.set(key, inf);\n }\n return inf;\n}\n\nconst intlRelCache = new Map();\nfunction getCachedRTF(locString, opts = {}) {\n const { base, ...cacheKeyOpts } = opts; // exclude `base` from the options\n const key = JSON.stringify([locString, cacheKeyOpts]);\n let inf = intlRelCache.get(key);\n if (inf === undefined) {\n inf = new Intl.RelativeTimeFormat(locString, opts);\n intlRelCache.set(key, inf);\n }\n return inf;\n}\n\nlet sysLocaleCache = null;\nfunction systemLocale() {\n if (sysLocaleCache) {\n return sysLocaleCache;\n } else {\n sysLocaleCache = new Intl.DateTimeFormat().resolvedOptions().locale;\n return sysLocaleCache;\n }\n}\n\nconst intlResolvedOptionsCache = new Map();\nfunction getCachedIntResolvedOptions(locString) {\n let opts = intlResolvedOptionsCache.get(locString);\n if (opts === undefined) {\n opts = new Intl.DateTimeFormat(locString).resolvedOptions();\n intlResolvedOptionsCache.set(locString, opts);\n }\n return opts;\n}\n\nconst weekInfoCache = new Map();\nfunction getCachedWeekInfo(locString) {\n let data = weekInfoCache.get(locString);\n if (!data) {\n const locale = new Intl.Locale(locString);\n // browsers currently implement this as a property, but spec says it should be a getter function\n data = \"getWeekInfo\" in locale ? locale.getWeekInfo() : locale.weekInfo;\n // minimalDays was removed from WeekInfo: https://github.com/tc39/proposal-intl-locale-info/issues/86\n if (!(\"minimalDays\" in data)) {\n data = { ...fallbackWeekSettings, ...data };\n }\n weekInfoCache.set(locString, data);\n }\n return data;\n}\n\nfunction parseLocaleString(localeStr) {\n // I really want to avoid writing a BCP 47 parser\n // see, e.g. https://github.com/wooorm/bcp-47\n // Instead, we'll do this:\n\n // a) if the string has no -u extensions, just leave it alone\n // b) if it does, use Intl to resolve everything\n // c) if Intl fails, try again without the -u\n\n // private subtags and unicode subtags have ordering requirements,\n // and we're not properly parsing this, so just strip out the\n // private ones if they exist.\n const xIndex = localeStr.indexOf(\"-x-\");\n if (xIndex !== -1) {\n localeStr = localeStr.substring(0, xIndex);\n }\n\n const uIndex = localeStr.indexOf(\"-u-\");\n if (uIndex === -1) {\n return [localeStr];\n } else {\n let options;\n let selectedStr;\n try {\n options = getCachedDTF(localeStr).resolvedOptions();\n selectedStr = localeStr;\n } catch (e) {\n const smaller = localeStr.substring(0, uIndex);\n options = getCachedDTF(smaller).resolvedOptions();\n selectedStr = smaller;\n }\n\n const { numberingSystem, calendar } = options;\n return [selectedStr, numberingSystem, calendar];\n }\n}\n\nfunction intlConfigString(localeStr, numberingSystem, outputCalendar) {\n if (outputCalendar || numberingSystem) {\n if (!localeStr.includes(\"-u-\")) {\n localeStr += \"-u\";\n }\n\n if (outputCalendar) {\n localeStr += `-ca-${outputCalendar}`;\n }\n\n if (numberingSystem) {\n localeStr += `-nu-${numberingSystem}`;\n }\n return localeStr;\n } else {\n return localeStr;\n }\n}\n\nfunction mapMonths(f) {\n const ms = [];\n for (let i = 1; i <= 12; i++) {\n const dt = DateTime.utc(2009, i, 1);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction mapWeekdays(f) {\n const ms = [];\n for (let i = 1; i <= 7; i++) {\n const dt = DateTime.utc(2016, 11, 13 + i);\n ms.push(f(dt));\n }\n return ms;\n}\n\nfunction listStuff(loc, length, englishFn, intlFn) {\n const mode = loc.listingMode();\n\n if (mode === \"error\") {\n return null;\n } else if (mode === \"en\") {\n return englishFn(length);\n } else {\n return intlFn(length);\n }\n}\n\nfunction supportsFastNumbers(loc) {\n if (loc.numberingSystem && loc.numberingSystem !== \"latn\") {\n return false;\n } else {\n return (\n loc.numberingSystem === \"latn\" ||\n !loc.locale ||\n loc.locale.startsWith(\"en\") ||\n getCachedIntResolvedOptions(loc.locale).numberingSystem === \"latn\"\n );\n }\n}\n\n/**\n * @private\n */\n\nclass PolyNumberFormatter {\n constructor(intl, forceSimple, opts) {\n this.padTo = opts.padTo || 0;\n this.floor = opts.floor || false;\n\n const { padTo, floor, ...otherOpts } = opts;\n\n if (!forceSimple || Object.keys(otherOpts).length > 0) {\n const intlOpts = { useGrouping: false, ...opts };\n if (opts.padTo > 0) intlOpts.minimumIntegerDigits = opts.padTo;\n this.inf = getCachedINF(intl, intlOpts);\n }\n }\n\n format(i) {\n if (this.inf) {\n const fixed = this.floor ? Math.floor(i) : i;\n return this.inf.format(fixed);\n } else {\n // to match the browser's numberformatter defaults\n const fixed = this.floor ? Math.floor(i) : roundTo(i, 3);\n return padStart(fixed, this.padTo);\n }\n }\n}\n\n/**\n * @private\n */\n\nclass PolyDateFormatter {\n constructor(dt, intl, opts) {\n this.opts = opts;\n this.originalZone = undefined;\n\n let z = undefined;\n if (this.opts.timeZone) {\n // Don't apply any workarounds if a timeZone is explicitly provided in opts\n this.dt = dt;\n } else if (dt.zone.type === \"fixed\") {\n // UTC-8 or Etc/UTC-8 are not part of tzdata, only Etc/GMT+8 and the like.\n // That is why fixed-offset TZ is set to that unless it is:\n // 1. Representing offset 0 when UTC is used to maintain previous behavior and does not become GMT.\n // 2. Unsupported by the browser:\n // - some do not support Etc/\n // - < Etc/GMT-14, > Etc/GMT+12, and 30-minute or 45-minute offsets are not part of tzdata\n const gmtOffset = -1 * (dt.offset / 60);\n const offsetZ = gmtOffset >= 0 ? `Etc/GMT+${gmtOffset}` : `Etc/GMT${gmtOffset}`;\n if (dt.offset !== 0 && IANAZone.create(offsetZ).valid) {\n z = offsetZ;\n this.dt = dt;\n } else {\n // Not all fixed-offset zones like Etc/+4:30 are present in tzdata so\n // we manually apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.offset === 0 ? dt : dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n } else if (dt.zone.type === \"system\") {\n this.dt = dt;\n } else if (dt.zone.type === \"iana\") {\n this.dt = dt;\n z = dt.zone.name;\n } else {\n // Custom zones can have any offset / offsetName so we just manually\n // apply the offset and substitute the zone as needed.\n z = \"UTC\";\n this.dt = dt.setZone(\"UTC\").plus({ minutes: dt.offset });\n this.originalZone = dt.zone;\n }\n\n const intlOpts = { ...this.opts };\n intlOpts.timeZone = intlOpts.timeZone || z;\n this.dtf = getCachedDTF(intl, intlOpts);\n }\n\n format() {\n if (this.originalZone) {\n // If we have to substitute in the actual zone name, we have to use\n // formatToParts so that the timezone can be replaced.\n return this.formatToParts()\n .map(({ value }) => value)\n .join(\"\");\n }\n return this.dtf.format(this.dt.toJSDate());\n }\n\n formatToParts() {\n const parts = this.dtf.formatToParts(this.dt.toJSDate());\n if (this.originalZone) {\n return parts.map((part) => {\n if (part.type === \"timeZoneName\") {\n const offsetName = this.originalZone.offsetName(this.dt.ts, {\n locale: this.dt.locale,\n format: this.opts.timeZoneName,\n });\n return {\n ...part,\n value: offsetName,\n };\n } else {\n return part;\n }\n });\n }\n return parts;\n }\n\n resolvedOptions() {\n return this.dtf.resolvedOptions();\n }\n}\n\n/**\n * @private\n */\nclass PolyRelFormatter {\n constructor(intl, isEnglish, opts) {\n this.opts = { style: \"long\", ...opts };\n if (!isEnglish && hasRelative()) {\n this.rtf = getCachedRTF(intl, opts);\n }\n }\n\n format(count, unit) {\n if (this.rtf) {\n return this.rtf.format(count, unit);\n } else {\n return English.formatRelativeTime(unit, count, this.opts.numeric, this.opts.style !== \"long\");\n }\n }\n\n formatToParts(count, unit) {\n if (this.rtf) {\n return this.rtf.formatToParts(count, unit);\n } else {\n return [];\n }\n }\n}\n\nconst fallbackWeekSettings = {\n firstDay: 1,\n minimalDays: 4,\n weekend: [6, 7],\n};\n\n/**\n * @private\n */\nexport default class Locale {\n static fromOpts(opts) {\n return Locale.create(\n opts.locale,\n opts.numberingSystem,\n opts.outputCalendar,\n opts.weekSettings,\n opts.defaultToEN\n );\n }\n\n static create(locale, numberingSystem, outputCalendar, weekSettings, defaultToEN = false) {\n const specifiedLocale = locale || Settings.defaultLocale;\n // the system locale is useful for human-readable strings but annoying for parsing/formatting known formats\n const localeR = specifiedLocale || (defaultToEN ? \"en-US\" : systemLocale());\n const numberingSystemR = numberingSystem || Settings.defaultNumberingSystem;\n const outputCalendarR = outputCalendar || Settings.defaultOutputCalendar;\n const weekSettingsR = validateWeekSettings(weekSettings) || Settings.defaultWeekSettings;\n return new Locale(localeR, numberingSystemR, outputCalendarR, weekSettingsR, specifiedLocale);\n }\n\n static resetCache() {\n sysLocaleCache = null;\n intlDTCache.clear();\n intlNumCache.clear();\n intlRelCache.clear();\n intlResolvedOptionsCache.clear();\n weekInfoCache.clear();\n }\n\n static fromObject({ locale, numberingSystem, outputCalendar, weekSettings } = {}) {\n return Locale.create(locale, numberingSystem, outputCalendar, weekSettings);\n }\n\n constructor(locale, numbering, outputCalendar, weekSettings, specifiedLocale) {\n const [parsedLocale, parsedNumberingSystem, parsedOutputCalendar] = parseLocaleString(locale);\n\n this.locale = parsedLocale;\n this.numberingSystem = numbering || parsedNumberingSystem || null;\n this.outputCalendar = outputCalendar || parsedOutputCalendar || null;\n this.weekSettings = weekSettings;\n this.intl = intlConfigString(this.locale, this.numberingSystem, this.outputCalendar);\n\n this.weekdaysCache = { format: {}, standalone: {} };\n this.monthsCache = { format: {}, standalone: {} };\n this.meridiemCache = null;\n this.eraCache = {};\n\n this.specifiedLocale = specifiedLocale;\n this.fastNumbersCached = null;\n }\n\n get fastNumbers() {\n if (this.fastNumbersCached == null) {\n this.fastNumbersCached = supportsFastNumbers(this);\n }\n\n return this.fastNumbersCached;\n }\n\n listingMode() {\n const isActuallyEn = this.isEnglish();\n const hasNoWeirdness =\n (this.numberingSystem === null || this.numberingSystem === \"latn\") &&\n (this.outputCalendar === null || this.outputCalendar === \"gregory\");\n return isActuallyEn && hasNoWeirdness ? \"en\" : \"intl\";\n }\n\n clone(alts) {\n if (!alts || Object.getOwnPropertyNames(alts).length === 0) {\n return this;\n } else {\n return Locale.create(\n alts.locale || this.specifiedLocale,\n alts.numberingSystem || this.numberingSystem,\n alts.outputCalendar || this.outputCalendar,\n validateWeekSettings(alts.weekSettings) || this.weekSettings,\n alts.defaultToEN || false\n );\n }\n }\n\n redefaultToEN(alts = {}) {\n return this.clone({ ...alts, defaultToEN: true });\n }\n\n redefaultToSystem(alts = {}) {\n return this.clone({ ...alts, defaultToEN: false });\n }\n\n months(length, format = false) {\n return listStuff(this, length, English.months, () => {\n // Workaround for \"ja\" locale: formatToParts does not label all parts of the month\n // as \"month\" and for this locale there is no difference between \"format\" and \"non-format\".\n // As such, just use format() instead of formatToParts() and take the whole string\n const monthSpecialCase = this.intl === \"ja\" || this.intl.startsWith(\"ja-\");\n format &= !monthSpecialCase;\n const intl = format ? { month: length, day: \"numeric\" } : { month: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.monthsCache[formatStr][length]) {\n const mapper = !monthSpecialCase\n ? (dt) => this.extract(dt, intl, \"month\")\n : (dt) => this.dtFormatter(dt, intl).format();\n this.monthsCache[formatStr][length] = mapMonths(mapper);\n }\n return this.monthsCache[formatStr][length];\n });\n }\n\n weekdays(length, format = false) {\n return listStuff(this, length, English.weekdays, () => {\n const intl = format\n ? { weekday: length, year: \"numeric\", month: \"long\", day: \"numeric\" }\n : { weekday: length },\n formatStr = format ? \"format\" : \"standalone\";\n if (!this.weekdaysCache[formatStr][length]) {\n this.weekdaysCache[formatStr][length] = mapWeekdays((dt) =>\n this.extract(dt, intl, \"weekday\")\n );\n }\n return this.weekdaysCache[formatStr][length];\n });\n }\n\n meridiems() {\n return listStuff(\n this,\n undefined,\n () => English.meridiems,\n () => {\n // In theory there could be aribitrary day periods. We're gonna assume there are exactly two\n // for AM and PM. This is probably wrong, but it's makes parsing way easier.\n if (!this.meridiemCache) {\n const intl = { hour: \"numeric\", hourCycle: \"h12\" };\n this.meridiemCache = [DateTime.utc(2016, 11, 13, 9), DateTime.utc(2016, 11, 13, 19)].map(\n (dt) => this.extract(dt, intl, \"dayperiod\")\n );\n }\n\n return this.meridiemCache;\n }\n );\n }\n\n eras(length) {\n return listStuff(this, length, English.eras, () => {\n const intl = { era: length };\n\n // This is problematic. Different calendars are going to define eras totally differently. What I need is the minimum set of dates\n // to definitely enumerate them.\n if (!this.eraCache[length]) {\n this.eraCache[length] = [DateTime.utc(-40, 1, 1), DateTime.utc(2017, 1, 1)].map((dt) =>\n this.extract(dt, intl, \"era\")\n );\n }\n\n return this.eraCache[length];\n });\n }\n\n extract(dt, intlOpts, field) {\n const df = this.dtFormatter(dt, intlOpts),\n results = df.formatToParts(),\n matching = results.find((m) => m.type.toLowerCase() === field);\n return matching ? matching.value : null;\n }\n\n numberFormatter(opts = {}) {\n // this forcesimple option is never used (the only caller short-circuits on it, but it seems safer to leave)\n // (in contrast, the rest of the condition is used heavily)\n return new PolyNumberFormatter(this.intl, opts.forceSimple || this.fastNumbers, opts);\n }\n\n dtFormatter(dt, intlOpts = {}) {\n return new PolyDateFormatter(dt, this.intl, intlOpts);\n }\n\n relFormatter(opts = {}) {\n return new PolyRelFormatter(this.intl, this.isEnglish(), opts);\n }\n\n listFormatter(opts = {}) {\n return getCachedLF(this.intl, opts);\n }\n\n isEnglish() {\n return (\n this.locale === \"en\" ||\n this.locale.toLowerCase() === \"en-us\" ||\n getCachedIntResolvedOptions(this.intl).locale.startsWith(\"en-us\")\n );\n }\n\n getWeekSettings() {\n if (this.weekSettings) {\n return this.weekSettings;\n } else if (!hasLocaleWeekInfo()) {\n return fallbackWeekSettings;\n } else {\n return getCachedWeekInfo(this.locale);\n }\n }\n\n getStartOfWeek() {\n return this.getWeekSettings().firstDay;\n }\n\n getMinDaysInFirstWeek() {\n return this.getWeekSettings().minimalDays;\n }\n\n getWeekendDays() {\n return this.getWeekSettings().weekend;\n }\n\n equals(other) {\n return (\n this.locale === other.locale &&\n this.numberingSystem === other.numberingSystem &&\n this.outputCalendar === other.outputCalendar\n );\n }\n\n toString() {\n return `Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`;\n }\n}\n", "import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /**\n * The type of zone. `fixed` for all instances of `FixedOffsetZone`.\n * @override\n * @type {string}\n */\n get type() {\n return \"fixed\";\n }\n\n /**\n * The name of this zone.\n * All fixed zones' names always start with \"UTC\" (plus optional offset)\n * @override\n * @type {string}\n */\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n /**\n * The IANA name of this zone, i.e. `Etc/UTC` or `Etc/GMT+/-nn`\n *\n * @override\n * @type {string}\n */\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /**\n * Returns the offset's common name at the specified timestamp.\n *\n * For fixed offset zones this equals to the zone name.\n * @override\n */\n offsetName() {\n return this.name;\n }\n\n /**\n * Returns the offset's value as a string\n * @override\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year:\n * Always returns true for all fixed offset zones.\n * @override\n * @type {boolean}\n */\n get isUniversal() {\n return true;\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n *\n * For fixed offset zones, this is constant and does not depend on a timestamp.\n * @override\n * @return {number}\n */\n offset() {\n return this.fixed;\n }\n\n /**\n * Return whether this Zone is equal to another zone (i.e. also fixed and same offset)\n * @override\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /**\n * Return whether this Zone is valid:\n * All fixed offset zones are valid.\n * @override\n * @type {boolean}\n */\n get isValid() {\n return true;\n }\n}\n", "import Zone from \"../zone.js\";\n\n/**\n * A zone that failed to parse. You should never need to instantiate this.\n * @implements {Zone}\n */\nexport default class InvalidZone extends Zone {\n constructor(zoneName) {\n super();\n /** @private */\n this.zoneName = zoneName;\n }\n\n /** @override **/\n get type() {\n return \"invalid\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName() {\n return null;\n }\n\n /** @override **/\n formatOffset() {\n return \"\";\n }\n\n /** @override **/\n offset() {\n return NaN;\n }\n\n /** @override **/\n equals() {\n return false;\n }\n\n /** @override **/\n get isValid() {\n return false;\n }\n}\n", "/**\n * @private\n */\n\nimport Zone from \"../zone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport InvalidZone from \"../zones/invalidZone.js\";\n\nimport { isUndefined, isString, isNumber } from \"./util.js\";\nimport SystemZone from \"../zones/systemZone.js\";\n\nexport function normalizeZone(input, defaultZone) {\n let offset;\n if (isUndefined(input) || input === null) {\n return defaultZone;\n } else if (input instanceof Zone) {\n return input;\n } else if (isString(input)) {\n const lowered = input.toLowerCase();\n if (lowered === \"default\") return defaultZone;\n else if (lowered === \"local\" || lowered === \"system\") return SystemZone.instance;\n else if (lowered === \"utc\" || lowered === \"gmt\") return FixedOffsetZone.utcInstance;\n else return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);\n } else if (isNumber(input)) {\n return FixedOffsetZone.instance(input);\n } else if (typeof input === \"object\" && \"offset\" in input && typeof input.offset === \"function\") {\n // This is dumb, but the instanceof check above doesn't seem to really work\n // so we're duck checking it\n return input;\n } else {\n return new InvalidZone(input);\n }\n}\n", "const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\n// cache of {numberingSystem: {append: regex}}\nconst digitRegexCache = new Map();\nexport function resetDigitRegexCache() {\n digitRegexCache.clear();\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n const ns = numberingSystem || \"latn\";\n\n let appendCache = digitRegexCache.get(ns);\n if (appendCache === undefined) {\n appendCache = new Map();\n digitRegexCache.set(ns, appendCache);\n }\n let regex = appendCache.get(append);\n if (regex === undefined) {\n regex = new RegExp(`${numberingSystems[ns]}${append}`);\n appendCache.set(append, regex);\n }\n\n return regex;\n}\n", "import SystemZone from \"./zones/systemZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport DateTime from \"./datetime.js\";\n\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport { validateWeekSettings } from \"./impl/util.js\";\nimport { resetDigitRegexCache } from \"./impl/digits.js\";\n\nlet now = () => Date.now(),\n defaultZone = \"system\",\n defaultLocale = null,\n defaultNumberingSystem = null,\n defaultOutputCalendar = null,\n twoDigitCutoffYear = 60,\n throwOnInvalid,\n defaultWeekSettings = null;\n\n/**\n * Settings contains static getters and setters that control Luxon's overall behavior. Luxon is a simple library with few options, but the ones it does have live here.\n */\nexport default class Settings {\n /**\n * Get the callback for returning the current timestamp.\n * @type {function}\n */\n static get now() {\n return now;\n }\n\n /**\n * Set the callback for returning the current timestamp.\n * The function should return a number, which will be interpreted as an Epoch millisecond count\n * @type {function}\n * @example Settings.now = () => Date.now() + 3000 // pretend it is 3 seconds in the future\n * @example Settings.now = () => 0 // always pretend it's Jan 1, 1970 at midnight in UTC time\n */\n static set now(n) {\n now = n;\n }\n\n /**\n * Set the default time zone to create DateTimes in. Does not affect existing instances.\n * Use the value \"system\" to reset this value to the system's time zone.\n * @type {string}\n */\n static set defaultZone(zone) {\n defaultZone = zone;\n }\n\n /**\n * Get the default time zone object currently used to create DateTimes. Does not affect existing instances.\n * The default value is the system's time zone (the one set on the machine that runs this code).\n * @type {Zone}\n */\n static get defaultZone() {\n return normalizeZone(defaultZone, SystemZone.instance);\n }\n\n /**\n * Get the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultLocale() {\n return defaultLocale;\n }\n\n /**\n * Set the default locale to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultLocale(locale) {\n defaultLocale = locale;\n }\n\n /**\n * Get the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultNumberingSystem() {\n return defaultNumberingSystem;\n }\n\n /**\n * Set the default numbering system to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultNumberingSystem(numberingSystem) {\n defaultNumberingSystem = numberingSystem;\n }\n\n /**\n * Get the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static get defaultOutputCalendar() {\n return defaultOutputCalendar;\n }\n\n /**\n * Set the default output calendar to create DateTimes with. Does not affect existing instances.\n * @type {string}\n */\n static set defaultOutputCalendar(outputCalendar) {\n defaultOutputCalendar = outputCalendar;\n }\n\n /**\n * @typedef {Object} WeekSettings\n * @property {number} firstDay\n * @property {number} minimalDays\n * @property {number[]} weekend\n */\n\n /**\n * @return {WeekSettings|null}\n */\n static get defaultWeekSettings() {\n return defaultWeekSettings;\n }\n\n /**\n * Allows overriding the default locale week settings, i.e. the start of the week, the weekend and\n * how many days are required in the first week of a year.\n * Does not affect existing instances.\n *\n * @param {WeekSettings|null} weekSettings\n */\n static set defaultWeekSettings(weekSettings) {\n defaultWeekSettings = validateWeekSettings(weekSettings);\n }\n\n /**\n * Get the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n */\n static get twoDigitCutoffYear() {\n return twoDigitCutoffYear;\n }\n\n /**\n * Set the cutoff year for whether a 2-digit year string is interpreted in the current or previous century. Numbers higher than the cutoff will be considered to mean 19xx and numbers lower or equal to the cutoff will be considered 20xx.\n * @type {number}\n * @example Settings.twoDigitCutoffYear = 0 // all 'yy' are interpreted as 20th century\n * @example Settings.twoDigitCutoffYear = 99 // all 'yy' are interpreted as 21st century\n * @example Settings.twoDigitCutoffYear = 50 // '49' -> 2049; '50' -> 1950\n * @example Settings.twoDigitCutoffYear = 1950 // interpreted as 50\n * @example Settings.twoDigitCutoffYear = 2050 // ALSO interpreted as 50\n */\n static set twoDigitCutoffYear(cutoffYear) {\n twoDigitCutoffYear = cutoffYear % 100;\n }\n\n /**\n * Get whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static get throwOnInvalid() {\n return throwOnInvalid;\n }\n\n /**\n * Set whether Luxon will throw when it encounters invalid DateTimes, Durations, or Intervals\n * @type {boolean}\n */\n static set throwOnInvalid(t) {\n throwOnInvalid = t;\n }\n\n /**\n * Reset Luxon's global caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCaches() {\n Locale.resetCache();\n IANAZone.resetCache();\n DateTime.resetCache();\n resetDigitRegexCache();\n }\n}\n", "export default class Invalid {\n constructor(reason, explanation) {\n this.reason = reason;\n this.explanation = explanation;\n }\n\n toMessage() {\n if (this.explanation) {\n return `${this.reason}: ${this.explanation}`;\n } else {\n return this.reason;\n }\n }\n}\n", "import {\n integerBetween,\n isLeapYear,\n timeObject,\n daysInYear,\n daysInMonth,\n weeksInWeekYear,\n isInteger,\n isUndefined,\n} from \"./util.js\";\nimport Invalid from \"./invalid.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst nonLeapLadder = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334],\n leapLadder = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\n\nfunction unitOutOfRange(unit, value) {\n return new Invalid(\n \"unit out of range\",\n `you specified ${value} (of type ${typeof value}) as a ${unit}, which is invalid`\n );\n}\n\nexport function dayOfWeek(year, month, day) {\n const d = new Date(Date.UTC(year, month - 1, day));\n\n if (year < 100 && year >= 0) {\n d.setUTCFullYear(d.getUTCFullYear() - 1900);\n }\n\n const js = d.getUTCDay();\n\n return js === 0 ? 7 : js;\n}\n\nfunction computeOrdinal(year, month, day) {\n return day + (isLeapYear(year) ? leapLadder : nonLeapLadder)[month - 1];\n}\n\nfunction uncomputeOrdinal(year, ordinal) {\n const table = isLeapYear(year) ? leapLadder : nonLeapLadder,\n month0 = table.findIndex((i) => i < ordinal),\n day = ordinal - table[month0];\n return { month: month0 + 1, day };\n}\n\nexport function isoWeekdayToLocal(isoWeekday, startOfWeek) {\n return ((isoWeekday - startOfWeek + 7) % 7) + 1;\n}\n\n/**\n * @private\n */\n\nexport function gregorianToWeek(gregObj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { year, month, day } = gregObj,\n ordinal = computeOrdinal(year, month, day),\n weekday = isoWeekdayToLocal(dayOfWeek(year, month, day), startOfWeek);\n\n let weekNumber = Math.floor((ordinal - weekday + 14 - minDaysInFirstWeek) / 7),\n weekYear;\n\n if (weekNumber < 1) {\n weekYear = year - 1;\n weekNumber = weeksInWeekYear(weekYear, minDaysInFirstWeek, startOfWeek);\n } else if (weekNumber > weeksInWeekYear(year, minDaysInFirstWeek, startOfWeek)) {\n weekYear = year + 1;\n weekNumber = 1;\n } else {\n weekYear = year;\n }\n\n return { weekYear, weekNumber, weekday, ...timeObject(gregObj) };\n}\n\nexport function weekToGregorian(weekData, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const { weekYear, weekNumber, weekday } = weekData,\n weekdayOfJan4 = isoWeekdayToLocal(dayOfWeek(weekYear, 1, minDaysInFirstWeek), startOfWeek),\n yearInDays = daysInYear(weekYear);\n\n let ordinal = weekNumber * 7 + weekday - weekdayOfJan4 - 7 + minDaysInFirstWeek,\n year;\n\n if (ordinal < 1) {\n year = weekYear - 1;\n ordinal += daysInYear(year);\n } else if (ordinal > yearInDays) {\n year = weekYear + 1;\n ordinal -= daysInYear(weekYear);\n } else {\n year = weekYear;\n }\n\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(weekData) };\n}\n\nexport function gregorianToOrdinal(gregData) {\n const { year, month, day } = gregData;\n const ordinal = computeOrdinal(year, month, day);\n return { year, ordinal, ...timeObject(gregData) };\n}\n\nexport function ordinalToGregorian(ordinalData) {\n const { year, ordinal } = ordinalData;\n const { month, day } = uncomputeOrdinal(year, ordinal);\n return { year, month, day, ...timeObject(ordinalData) };\n}\n\n/**\n * Check if local week units like localWeekday are used in obj.\n * If so, validates that they are not mixed with ISO week units and then copies them to the normal week unit properties.\n * Modifies obj in-place!\n * @param obj the object values\n */\nexport function usesLocalWeekValues(obj, loc) {\n const hasLocaleWeekData =\n !isUndefined(obj.localWeekday) ||\n !isUndefined(obj.localWeekNumber) ||\n !isUndefined(obj.localWeekYear);\n if (hasLocaleWeekData) {\n const hasIsoWeekData =\n !isUndefined(obj.weekday) || !isUndefined(obj.weekNumber) || !isUndefined(obj.weekYear);\n\n if (hasIsoWeekData) {\n throw new ConflictingSpecificationError(\n \"Cannot mix locale-based week fields with ISO-based week fields\"\n );\n }\n if (!isUndefined(obj.localWeekday)) obj.weekday = obj.localWeekday;\n if (!isUndefined(obj.localWeekNumber)) obj.weekNumber = obj.localWeekNumber;\n if (!isUndefined(obj.localWeekYear)) obj.weekYear = obj.localWeekYear;\n delete obj.localWeekday;\n delete obj.localWeekNumber;\n delete obj.localWeekYear;\n return {\n minDaysInFirstWeek: loc.getMinDaysInFirstWeek(),\n startOfWeek: loc.getStartOfWeek(),\n };\n } else {\n return { minDaysInFirstWeek: 4, startOfWeek: 1 };\n }\n}\n\nexport function hasInvalidWeekData(obj, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const validYear = isInteger(obj.weekYear),\n validWeek = integerBetween(\n obj.weekNumber,\n 1,\n weeksInWeekYear(obj.weekYear, minDaysInFirstWeek, startOfWeek)\n ),\n validWeekday = integerBetween(obj.weekday, 1, 7);\n\n if (!validYear) {\n return unitOutOfRange(\"weekYear\", obj.weekYear);\n } else if (!validWeek) {\n return unitOutOfRange(\"week\", obj.weekNumber);\n } else if (!validWeekday) {\n return unitOutOfRange(\"weekday\", obj.weekday);\n } else return false;\n}\n\nexport function hasInvalidOrdinalData(obj) {\n const validYear = isInteger(obj.year),\n validOrdinal = integerBetween(obj.ordinal, 1, daysInYear(obj.year));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validOrdinal) {\n return unitOutOfRange(\"ordinal\", obj.ordinal);\n } else return false;\n}\n\nexport function hasInvalidGregorianData(obj) {\n const validYear = isInteger(obj.year),\n validMonth = integerBetween(obj.month, 1, 12),\n validDay = integerBetween(obj.day, 1, daysInMonth(obj.year, obj.month));\n\n if (!validYear) {\n return unitOutOfRange(\"year\", obj.year);\n } else if (!validMonth) {\n return unitOutOfRange(\"month\", obj.month);\n } else if (!validDay) {\n return unitOutOfRange(\"day\", obj.day);\n } else return false;\n}\n\nexport function hasInvalidTimeData(obj) {\n const { hour, minute, second, millisecond } = obj;\n const validHour =\n integerBetween(hour, 0, 23) ||\n (hour === 24 && minute === 0 && second === 0 && millisecond === 0),\n validMinute = integerBetween(minute, 0, 59),\n validSecond = integerBetween(second, 0, 59),\n validMillisecond = integerBetween(millisecond, 0, 999);\n\n if (!validHour) {\n return unitOutOfRange(\"hour\", hour);\n } else if (!validMinute) {\n return unitOutOfRange(\"minute\", minute);\n } else if (!validSecond) {\n return unitOutOfRange(\"second\", second);\n } else if (!validMillisecond) {\n return unitOutOfRange(\"millisecond\", millisecond);\n } else return false;\n}\n", "/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, rounding = \"round\") {\n const factor = 10 ** digits;\n switch (rounding) {\n case \"expand\":\n return number > 0\n ? Math.ceil(number * factor) / factor\n : Math.floor(number * factor) / factor;\n case \"trunc\":\n return Math.trunc(number * factor) / factor;\n case \"round\":\n return Math.round(number * factor) / factor;\n case \"floor\":\n return Math.floor(number * factor) / factor;\n case \"ceil\":\n return Math.ceil(number * factor) / factor;\n default:\n throw new RangeError(`Value rounding ${rounding} is out of range`);\n }\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || !Number.isFinite(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\n/**\n * Returns the offset's value as a string\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n", "import * as Formats from \"./formats.js\";\nimport { pick } from \"./util.js\";\n\nfunction stringify(obj) {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n\n/**\n * @private\n */\n\nexport const monthsLong = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const monthsShort = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nexport const monthsNarrow = [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"];\n\nexport function months(length) {\n switch (length) {\n case \"narrow\":\n return [...monthsNarrow];\n case \"short\":\n return [...monthsShort];\n case \"long\":\n return [...monthsLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\"];\n case \"2-digit\":\n return [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"];\n default:\n return null;\n }\n}\n\nexport const weekdaysLong = [\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n \"Sunday\",\n];\n\nexport const weekdaysShort = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport const weekdaysNarrow = [\"M\", \"T\", \"W\", \"T\", \"F\", \"S\", \"S\"];\n\nexport function weekdays(length) {\n switch (length) {\n case \"narrow\":\n return [...weekdaysNarrow];\n case \"short\":\n return [...weekdaysShort];\n case \"long\":\n return [...weekdaysLong];\n case \"numeric\":\n return [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"];\n default:\n return null;\n }\n}\n\nexport const meridiems = [\"AM\", \"PM\"];\n\nexport const erasLong = [\"Before Christ\", \"Anno Domini\"];\n\nexport const erasShort = [\"BC\", \"AD\"];\n\nexport const erasNarrow = [\"B\", \"A\"];\n\nexport function eras(length) {\n switch (length) {\n case \"narrow\":\n return [...erasNarrow];\n case \"short\":\n return [...erasShort];\n case \"long\":\n return [...erasLong];\n default:\n return null;\n }\n}\n\nexport function meridiemForDateTime(dt) {\n return meridiems[dt.hour < 12 ? 0 : 1];\n}\n\nexport function weekdayForDateTime(dt, length) {\n return weekdays(length)[dt.weekday - 1];\n}\n\nexport function monthForDateTime(dt, length) {\n return months(length)[dt.month - 1];\n}\n\nexport function eraForDateTime(dt, length) {\n return eras(length)[dt.year < 0 ? 0 : 1];\n}\n\nexport function formatRelativeTime(unit, count, numeric = \"always\", narrow = false) {\n const units = {\n years: [\"year\", \"yr.\"],\n quarters: [\"quarter\", \"qtr.\"],\n months: [\"month\", \"mo.\"],\n weeks: [\"week\", \"wk.\"],\n days: [\"day\", \"day\", \"days\"],\n hours: [\"hour\", \"hr.\"],\n minutes: [\"minute\", \"min.\"],\n seconds: [\"second\", \"sec.\"],\n };\n\n const lastable = [\"hours\", \"minutes\", \"seconds\"].indexOf(unit) === -1;\n\n if (numeric === \"auto\" && lastable) {\n const isDay = unit === \"days\";\n switch (count) {\n case 1:\n return isDay ? \"tomorrow\" : `next ${units[unit][0]}`;\n case -1:\n return isDay ? \"yesterday\" : `last ${units[unit][0]}`;\n case 0:\n return isDay ? \"today\" : `this ${units[unit][0]}`;\n default: // fall through\n }\n }\n\n const isInPast = Object.is(count, -0) || count < 0,\n fmtValue = Math.abs(count),\n singular = fmtValue === 1,\n lilUnits = units[unit],\n fmtUnit = narrow\n ? singular\n ? lilUnits[1]\n : lilUnits[2] || lilUnits[1]\n : singular\n ? units[unit][0]\n : unit;\n return isInPast ? `${fmtValue} ${fmtUnit} ago` : `in ${fmtValue} ${fmtUnit}`;\n}\n\nexport function formatString(knownFormat) {\n // these all have the offsets removed because we don't have access to them\n // without all the intl stuff this is backfilling\n const filtered = pick(knownFormat, [\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n \"hourCycle\",\n ]),\n key = stringify(filtered),\n dateTimeHuge = \"EEEE, LLLL d, yyyy, h:mm a\";\n switch (key) {\n case stringify(Formats.DATE_SHORT):\n return \"M/d/yyyy\";\n case stringify(Formats.DATE_MED):\n return \"LLL d, yyyy\";\n case stringify(Formats.DATE_MED_WITH_WEEKDAY):\n return \"EEE, LLL d, yyyy\";\n case stringify(Formats.DATE_FULL):\n return \"LLLL d, yyyy\";\n case stringify(Formats.DATE_HUGE):\n return \"EEEE, LLLL d, yyyy\";\n case stringify(Formats.TIME_SIMPLE):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_SECONDS):\n return \"h:mm:ss a\";\n case stringify(Formats.TIME_WITH_SHORT_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_WITH_LONG_OFFSET):\n return \"h:mm a\";\n case stringify(Formats.TIME_24_SIMPLE):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_SECONDS):\n return \"HH:mm:ss\";\n case stringify(Formats.TIME_24_WITH_SHORT_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.TIME_24_WITH_LONG_OFFSET):\n return \"HH:mm\";\n case stringify(Formats.DATETIME_SHORT):\n return \"M/d/yyyy, h:mm a\";\n case stringify(Formats.DATETIME_MED):\n return \"LLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL):\n return \"LLLL d, yyyy, h:mm a\";\n case stringify(Formats.DATETIME_HUGE):\n return dateTimeHuge;\n case stringify(Formats.DATETIME_SHORT_WITH_SECONDS):\n return \"M/d/yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_SECONDS):\n return \"LLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_MED_WITH_WEEKDAY):\n return \"EEE, d LLL yyyy, h:mm a\";\n case stringify(Formats.DATETIME_FULL_WITH_SECONDS):\n return \"LLLL d, yyyy, h:mm:ss a\";\n case stringify(Formats.DATETIME_HUGE_WITH_SECONDS):\n return \"EEEE, LLLL d, yyyy, h:mm:ss a\";\n default:\n return dateTimeHuge;\n }\n}\n", "import * as English from \"./english.js\";\nimport * as Formats from \"./formats.js\";\nimport { padStart } from \"./util.js\";\n\nfunction stringifyTokens(splits, tokenToString) {\n let s = \"\";\n for (const token of splits) {\n if (token.literal) {\n s += token.val;\n } else {\n s += tokenToString(token.val);\n }\n }\n return s;\n}\n\nconst macroTokenToFormatOpts = {\n D: Formats.DATE_SHORT,\n DD: Formats.DATE_MED,\n DDD: Formats.DATE_FULL,\n DDDD: Formats.DATE_HUGE,\n t: Formats.TIME_SIMPLE,\n tt: Formats.TIME_WITH_SECONDS,\n ttt: Formats.TIME_WITH_SHORT_OFFSET,\n tttt: Formats.TIME_WITH_LONG_OFFSET,\n T: Formats.TIME_24_SIMPLE,\n TT: Formats.TIME_24_WITH_SECONDS,\n TTT: Formats.TIME_24_WITH_SHORT_OFFSET,\n TTTT: Formats.TIME_24_WITH_LONG_OFFSET,\n f: Formats.DATETIME_SHORT,\n ff: Formats.DATETIME_MED,\n fff: Formats.DATETIME_FULL,\n ffff: Formats.DATETIME_HUGE,\n F: Formats.DATETIME_SHORT_WITH_SECONDS,\n FF: Formats.DATETIME_MED_WITH_SECONDS,\n FFF: Formats.DATETIME_FULL_WITH_SECONDS,\n FFFF: Formats.DATETIME_HUGE_WITH_SECONDS,\n};\n\n/**\n * @private\n */\n\nexport default class Formatter {\n static create(locale, opts = {}) {\n return new Formatter(locale, opts);\n }\n\n static parseFormat(fmt) {\n // white-space is always considered a literal in user-provided formats\n // the \" \" token has a special meaning (see unitForToken)\n\n let current = null,\n currentFull = \"\",\n bracketed = false;\n const splits = [];\n for (let i = 0; i < fmt.length; i++) {\n const c = fmt.charAt(i);\n if (c === \"'\") {\n // turn '' into a literal signal quote instead of just skipping the empty literal\n if (currentFull.length > 0 || bracketed) {\n splits.push({\n literal: bracketed || /^\\s+$/.test(currentFull),\n val: currentFull === \"\" ? \"'\" : currentFull,\n });\n }\n current = null;\n currentFull = \"\";\n bracketed = !bracketed;\n } else if (bracketed) {\n currentFull += c;\n } else if (c === current) {\n currentFull += c;\n } else {\n if (currentFull.length > 0) {\n splits.push({ literal: /^\\s+$/.test(currentFull), val: currentFull });\n }\n currentFull = c;\n current = c;\n }\n }\n\n if (currentFull.length > 0) {\n splits.push({ literal: bracketed || /^\\s+$/.test(currentFull), val: currentFull });\n }\n\n return splits;\n }\n\n static macroTokenToFormatOpts(token) {\n return macroTokenToFormatOpts[token];\n }\n\n constructor(locale, formatOpts) {\n this.opts = formatOpts;\n this.loc = locale;\n this.systemLoc = null;\n }\n\n formatWithSystemDefault(dt, opts) {\n if (this.systemLoc === null) {\n this.systemLoc = this.loc.redefaultToSystem();\n }\n const df = this.systemLoc.dtFormatter(dt, { ...this.opts, ...opts });\n return df.format();\n }\n\n dtFormatter(dt, opts = {}) {\n return this.loc.dtFormatter(dt, { ...this.opts, ...opts });\n }\n\n formatDateTime(dt, opts) {\n return this.dtFormatter(dt, opts).format();\n }\n\n formatDateTimeParts(dt, opts) {\n return this.dtFormatter(dt, opts).formatToParts();\n }\n\n formatInterval(interval, opts) {\n const df = this.dtFormatter(interval.start, opts);\n return df.dtf.formatRange(interval.start.toJSDate(), interval.end.toJSDate());\n }\n\n resolvedOptions(dt, opts) {\n return this.dtFormatter(dt, opts).resolvedOptions();\n }\n\n num(n, p = 0, signDisplay = undefined) {\n // we get some perf out of doing this here, annoyingly\n if (this.opts.forceSimple) {\n return padStart(n, p);\n }\n\n const opts = { ...this.opts };\n\n if (p > 0) {\n opts.padTo = p;\n }\n if (signDisplay) {\n opts.signDisplay = signDisplay;\n }\n\n return this.loc.numberFormatter(opts).format(n);\n }\n\n formatDateTimeFromString(dt, fmt) {\n const knownEnglish = this.loc.listingMode() === \"en\",\n useDateTimeFormatter = this.loc.outputCalendar && this.loc.outputCalendar !== \"gregory\",\n string = (opts, extract) => this.loc.extract(dt, opts, extract),\n formatOffset = (opts) => {\n if (dt.isOffsetFixed && dt.offset === 0 && opts.allowZ) {\n return \"Z\";\n }\n\n return dt.isValid ? dt.zone.formatOffset(dt.ts, opts.format) : \"\";\n },\n meridiem = () =>\n knownEnglish\n ? English.meridiemForDateTime(dt)\n : string({ hour: \"numeric\", hourCycle: \"h12\" }, \"dayperiod\"),\n month = (length, standalone) =>\n knownEnglish\n ? English.monthForDateTime(dt, length)\n : string(standalone ? { month: length } : { month: length, day: \"numeric\" }, \"month\"),\n weekday = (length, standalone) =>\n knownEnglish\n ? English.weekdayForDateTime(dt, length)\n : string(\n standalone ? { weekday: length } : { weekday: length, month: \"long\", day: \"numeric\" },\n \"weekday\"\n ),\n maybeMacro = (token) => {\n const formatOpts = Formatter.macroTokenToFormatOpts(token);\n if (formatOpts) {\n return this.formatWithSystemDefault(dt, formatOpts);\n } else {\n return token;\n }\n },\n era = (length) =>\n knownEnglish ? English.eraForDateTime(dt, length) : string({ era: length }, \"era\"),\n tokenToString = (token) => {\n // Where possible: https://cldr.unicode.org/translation/date-time/date-time-symbols\n switch (token) {\n // ms\n case \"S\":\n return this.num(dt.millisecond);\n case \"u\":\n // falls through\n case \"SSS\":\n return this.num(dt.millisecond, 3);\n // seconds\n case \"s\":\n return this.num(dt.second);\n case \"ss\":\n return this.num(dt.second, 2);\n // fractional seconds\n case \"uu\":\n return this.num(Math.floor(dt.millisecond / 10), 2);\n case \"uuu\":\n return this.num(Math.floor(dt.millisecond / 100));\n // minutes\n case \"m\":\n return this.num(dt.minute);\n case \"mm\":\n return this.num(dt.minute, 2);\n // hours\n case \"h\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12);\n case \"hh\":\n return this.num(dt.hour % 12 === 0 ? 12 : dt.hour % 12, 2);\n case \"H\":\n return this.num(dt.hour);\n case \"HH\":\n return this.num(dt.hour, 2);\n // offset\n case \"Z\":\n // like +6\n return formatOffset({ format: \"narrow\", allowZ: this.opts.allowZ });\n case \"ZZ\":\n // like +06:00\n return formatOffset({ format: \"short\", allowZ: this.opts.allowZ });\n case \"ZZZ\":\n // like +0600\n return formatOffset({ format: \"techie\", allowZ: this.opts.allowZ });\n case \"ZZZZ\":\n // like EST\n return dt.zone.offsetName(dt.ts, { format: \"short\", locale: this.loc.locale });\n case \"ZZZZZ\":\n // like Eastern Standard Time\n return dt.zone.offsetName(dt.ts, { format: \"long\", locale: this.loc.locale });\n // zone\n case \"z\":\n // like America/New_York\n return dt.zoneName;\n // meridiems\n case \"a\":\n return meridiem();\n // dates\n case \"d\":\n return useDateTimeFormatter ? string({ day: \"numeric\" }, \"day\") : this.num(dt.day);\n case \"dd\":\n return useDateTimeFormatter ? string({ day: \"2-digit\" }, \"day\") : this.num(dt.day, 2);\n // weekdays - standalone\n case \"c\":\n // like 1\n return this.num(dt.weekday);\n case \"ccc\":\n // like 'Tues'\n return weekday(\"short\", true);\n case \"cccc\":\n // like 'Tuesday'\n return weekday(\"long\", true);\n case \"ccccc\":\n // like 'T'\n return weekday(\"narrow\", true);\n // weekdays - format\n case \"E\":\n // like 1\n return this.num(dt.weekday);\n case \"EEE\":\n // like 'Tues'\n return weekday(\"short\", false);\n case \"EEEE\":\n // like 'Tuesday'\n return weekday(\"long\", false);\n case \"EEEEE\":\n // like 'T'\n return weekday(\"narrow\", false);\n // months - standalone\n case \"L\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\", day: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"LL\":\n // like 01, doesn't seem to work\n return useDateTimeFormatter\n ? string({ month: \"2-digit\", day: \"numeric\" }, \"month\")\n : this.num(dt.month, 2);\n case \"LLL\":\n // like Jan\n return month(\"short\", true);\n case \"LLLL\":\n // like January\n return month(\"long\", true);\n case \"LLLLL\":\n // like J\n return month(\"narrow\", true);\n // months - format\n case \"M\":\n // like 1\n return useDateTimeFormatter\n ? string({ month: \"numeric\" }, \"month\")\n : this.num(dt.month);\n case \"MM\":\n // like 01\n return useDateTimeFormatter\n ? string({ month: \"2-digit\" }, \"month\")\n : this.num(dt.month, 2);\n case \"MMM\":\n // like Jan\n return month(\"short\", false);\n case \"MMMM\":\n // like January\n return month(\"long\", false);\n case \"MMMMM\":\n // like J\n return month(\"narrow\", false);\n // years\n case \"y\":\n // like 2014\n return useDateTimeFormatter ? string({ year: \"numeric\" }, \"year\") : this.num(dt.year);\n case \"yy\":\n // like 14\n return useDateTimeFormatter\n ? string({ year: \"2-digit\" }, \"year\")\n : this.num(dt.year.toString().slice(-2), 2);\n case \"yyyy\":\n // like 0012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 4);\n case \"yyyyyy\":\n // like 000012\n return useDateTimeFormatter\n ? string({ year: \"numeric\" }, \"year\")\n : this.num(dt.year, 6);\n // eras\n case \"G\":\n // like AD\n return era(\"short\");\n case \"GG\":\n // like Anno Domini\n return era(\"long\");\n case \"GGGGG\":\n return era(\"narrow\");\n case \"kk\":\n return this.num(dt.weekYear.toString().slice(-2), 2);\n case \"kkkk\":\n return this.num(dt.weekYear, 4);\n case \"W\":\n return this.num(dt.weekNumber);\n case \"WW\":\n return this.num(dt.weekNumber, 2);\n case \"n\":\n return this.num(dt.localWeekNumber);\n case \"nn\":\n return this.num(dt.localWeekNumber, 2);\n case \"ii\":\n return this.num(dt.localWeekYear.toString().slice(-2), 2);\n case \"iiii\":\n return this.num(dt.localWeekYear, 4);\n case \"o\":\n return this.num(dt.ordinal);\n case \"ooo\":\n return this.num(dt.ordinal, 3);\n case \"q\":\n // like 1\n return this.num(dt.quarter);\n case \"qq\":\n // like 01\n return this.num(dt.quarter, 2);\n case \"X\":\n return this.num(Math.floor(dt.ts / 1000));\n case \"x\":\n return this.num(dt.ts);\n default:\n return maybeMacro(token);\n }\n };\n\n return stringifyTokens(Formatter.parseFormat(fmt), tokenToString);\n }\n\n formatDurationFromString(dur, fmt) {\n const invertLargest = this.opts.signMode === \"negativeLargestOnly\" ? -1 : 1;\n const tokenToField = (token) => {\n switch (token[0]) {\n case \"S\":\n return \"milliseconds\";\n case \"s\":\n return \"seconds\";\n case \"m\":\n return \"minutes\";\n case \"h\":\n return \"hours\";\n case \"d\":\n return \"days\";\n case \"w\":\n return \"weeks\";\n case \"M\":\n return \"months\";\n case \"y\":\n return \"years\";\n default:\n return null;\n }\n },\n tokenToString = (lildur, info) => (token) => {\n const mapped = tokenToField(token);\n if (mapped) {\n const inversionFactor =\n info.isNegativeDuration && mapped !== info.largestUnit ? invertLargest : 1;\n let signDisplay;\n if (this.opts.signMode === \"negativeLargestOnly\" && mapped !== info.largestUnit) {\n signDisplay = \"never\";\n } else if (this.opts.signMode === \"all\") {\n signDisplay = \"always\";\n } else {\n // \"auto\" and \"negative\" are the same, but \"auto\" has better support\n signDisplay = \"auto\";\n }\n return this.num(lildur.get(mapped) * inversionFactor, token.length, signDisplay);\n } else {\n return token;\n }\n },\n tokens = Formatter.parseFormat(fmt),\n realTokens = tokens.reduce(\n (found, { literal, val }) => (literal ? found : found.concat(val)),\n []\n ),\n collapsed = dur.shiftTo(...realTokens.map(tokenToField).filter((t) => t)),\n durationInfo = {\n isNegativeDuration: collapsed < 0,\n // this relies on \"collapsed\" being based on \"shiftTo\", which builds up the object\n // in order\n largestUnit: Object.keys(collapsed.values)[0],\n };\n return stringifyTokens(tokens, tokenToString(collapsed, durationInfo));\n }\n}\n", "import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:([Zz])|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:[Tt]${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n", "import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @param {'negative'|'all'|'negativeLargestOnly'} [opts.signMode=negative] - How to handle signs\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @example Duration.fromObject({ days: 6, seconds: 2 }).toFormat(\"d s\", { signMode: \"all\" }) //=> \"+6 +2\"\n * @example Duration.fromObject({ days: -6, seconds: -2 }).toFormat(\"d s\", { signMode: \"all\" }) //=> \"-6 -2\"\n * @example Duration.fromObject({ days: -6, seconds: -2 }).toFormat(\"d s\", { signMode: \"negativeLargestOnly\" }) //=> \"-6 2\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @param {boolean} [opts.showZeros=true] - Show all units previously used by the duration even if they are zero\n * @example\n * ```js\n * var dur = Duration.fromObject({ months: 1, weeks: 0, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 month, 0 weeks, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 month, 0 weeks, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 mth, 0 wks, 5 hr, 6 min'\n * dur.toHuman({ showZeros: false }) //=> '1 month, 5 hours, 6 minutes'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const showZeros = opts.showZeros !== false;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val) || (val === 0 && !showZeros)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Removes all units with values equal to 0 from this Duration.\n * @example Duration.fromObject({ years: 2, days: 0, hours: 0, minutes: 0 }).removeZeros().toObject() //=> { years: 2 }\n * @return {Duration}\n */\n removeZeros() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.values);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n", "import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `<start>/<end>`, `<start>/<duration>`, and `<duration>/<end>` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval. This is the first instant which is not part of the interval\n * (Interval is half-open).\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns the last DateTime included in the interval (since end is not part of the interval)\n * @type {DateTime}\n */\n get lastDateTime() {\n return this.isValid ? (this.e ? this.e.minus(1) : null) : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Returns true if this Interval fully contains the specified Interval, specifically if the intersect (of this Interval and the other Interval) is equal to the other Interval; false otherwise.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into an equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * The resulting array will contain the Intervals in ascending order, that is, starting with the earliest Interval\n * and ending with the latest.\n *\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n", "import DateTime from \"./datetime.js\";\nimport Settings from \"./settings.js\";\nimport Locale from \"./impl/locale.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\n\nimport { hasLocaleWeekInfo, hasRelative } from \"./impl/util.js\";\n\n/**\n * The Info class contains static methods for retrieving general time and date related data. For example, it has methods for finding out if a time zone has a DST, for listing the months in any supported locale, and for discovering which of Luxon features are available in the current environment.\n */\nexport default class Info {\n /**\n * Return whether the specified zone contains a DST.\n * @param {string|Zone} [zone='local'] - Zone to check. Defaults to the environment's local zone.\n * @return {boolean}\n */\n static hasDST(zone = Settings.defaultZone) {\n const proto = DateTime.now().setZone(zone).set({ month: 12 });\n\n return !zone.isUniversal && proto.offset !== proto.set({ month: 6 }).offset;\n }\n\n /**\n * Return whether the specified zone is a valid IANA specifier.\n * @param {string} zone - Zone to check\n * @return {boolean}\n */\n static isValidIANAZone(zone) {\n return IANAZone.isValidZone(zone);\n }\n\n /**\n * Converts the input into a {@link Zone} instance.\n *\n * * If `input` is already a Zone instance, it is returned unchanged.\n * * If `input` is a string containing a valid time zone name, a Zone instance\n * with that name is returned.\n * * If `input` is a string that doesn't refer to a known time zone, a Zone\n * instance with {@link Zone#isValid} == false is returned.\n * * If `input is a number, a Zone instance with the specified fixed offset\n * in minutes is returned.\n * * If `input` is `null` or `undefined`, the default zone is returned.\n * @param {string|Zone|number} [input] - the value to be converted\n * @return {Zone}\n */\n static normalizeZone(input) {\n return normalizeZone(input, Settings.defaultZone);\n }\n\n /**\n * Get the weekday on which the week starts according to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number} the start of the week, 1 for Monday through 7 for Sunday\n */\n static getStartOfWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getStartOfWeek();\n }\n\n /**\n * Get the minimum number of days necessary in a week before it is considered part of the next year according\n * to the given locale.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number}\n */\n static getMinimumDaysInFirstWeek({ locale = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale)).getMinDaysInFirstWeek();\n }\n\n /**\n * Get the weekdays, which are considered the weekend according to the given locale\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @returns {number[]} an array of weekdays, 1 for Monday through 7 for Sunday\n */\n static getWeekendWeekdays({ locale = null, locObj = null } = {}) {\n // copy the array, because we cache it internally\n return (locObj || Locale.create(locale)).getWeekendDays().slice();\n }\n\n /**\n * Return an array of standalone month names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @example Info.months()[0] //=> 'January'\n * @example Info.months('short')[0] //=> 'Jan'\n * @example Info.months('numeric')[0] //=> '1'\n * @example Info.months('short', { locale: 'fr-CA' } )[0] //=> 'janv.'\n * @example Info.months('numeric', { locale: 'ar' })[0] //=> '١'\n * @example Info.months('long', { outputCalendar: 'islamic' })[0] //=> 'Rabiʻ I'\n * @return {Array}\n */\n static months(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length);\n }\n\n /**\n * Return an array of format month names.\n * Format months differ from standalone months in that they're meant to appear next to the day of the month. In some languages, that\n * changes the string.\n * See {@link Info#months}\n * @param {string} [length='long'] - the length of the month representation, such as \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\"\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @param {string} [opts.outputCalendar='gregory'] - the calendar\n * @return {Array}\n */\n static monthsFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null, outputCalendar = \"gregory\" } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, outputCalendar)).months(length, true);\n }\n\n /**\n * Return an array of standalone week names.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {string} [length='long'] - the length of the weekday representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @example Info.weekdays()[0] //=> 'Monday'\n * @example Info.weekdays('short')[0] //=> 'Mon'\n * @example Info.weekdays('short', { locale: 'fr-CA' })[0] //=> 'lun.'\n * @example Info.weekdays('short', { locale: 'ar' })[0] //=> 'الاثنين'\n * @return {Array}\n */\n static weekdays(length = \"long\", { locale = null, numberingSystem = null, locObj = null } = {}) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length);\n }\n\n /**\n * Return an array of format week names.\n * Format weekdays differ from standalone weekdays in that they're meant to appear next to more date information. In some languages, that\n * changes the string.\n * See {@link Info#weekdays}\n * @param {string} [length='long'] - the length of the month representation, such as \"narrow\", \"short\", \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale=null] - the locale code\n * @param {string} [opts.numberingSystem=null] - the numbering system\n * @param {string} [opts.locObj=null] - an existing locale object to use\n * @return {Array}\n */\n static weekdaysFormat(\n length = \"long\",\n { locale = null, numberingSystem = null, locObj = null } = {}\n ) {\n return (locObj || Locale.create(locale, numberingSystem, null)).weekdays(length, true);\n }\n\n /**\n * Return an array of meridiems.\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.meridiems() //=> [ 'AM', 'PM' ]\n * @example Info.meridiems({ locale: 'my' }) //=> [ 'နံနက်', 'ညနေ' ]\n * @return {Array}\n */\n static meridiems({ locale = null } = {}) {\n return Locale.create(locale).meridiems();\n }\n\n /**\n * Return an array of eras, such as ['BC', 'AD']. The locale can be specified, but the calendar system is always Gregorian.\n * @param {string} [length='short'] - the length of the era representation, such as \"short\" or \"long\".\n * @param {Object} opts - options\n * @param {string} [opts.locale] - the locale code\n * @example Info.eras() //=> [ 'BC', 'AD' ]\n * @example Info.eras('long') //=> [ 'Before Christ', 'Anno Domini' ]\n * @example Info.eras('long', { locale: 'fr' }) //=> [ 'avant Jésus-Christ', 'après Jésus-Christ' ]\n * @return {Array}\n */\n static eras(length = \"short\", { locale = null } = {}) {\n return Locale.create(locale, null, \"gregory\").eras(length);\n }\n\n /**\n * Return the set of available features in this environment.\n * Some features of Luxon are not available in all environments. For example, on older browsers, relative time formatting support is not available. Use this function to figure out if that's the case.\n * Keys:\n * * `relative`: whether this environment supports relative time formatting\n * * `localeWeek`: whether this environment supports different weekdays for the start of the week based on the locale\n * @example Info.features() //=> { relative: false, localeWeek: true }\n * @return {Object}\n */\n static features() {\n return { relative: hasRelative(), localeWeek: hasLocaleWeekInfo() };\n }\n}\n", "import Duration from \"../duration.js\";\n\nfunction dayDiff(earlier, later) {\n const utcDayStart = (dt) => dt.toUTC(0, { keepLocalTime: true }).startOf(\"day\").valueOf(),\n ms = utcDayStart(later) - utcDayStart(earlier);\n return Math.floor(Duration.fromMillis(ms).as(\"days\"));\n}\n\nfunction highOrderDiffs(cursor, later, units) {\n const differs = [\n [\"years\", (a, b) => b.year - a.year],\n [\"quarters\", (a, b) => b.quarter - a.quarter + (b.year - a.year) * 4],\n [\"months\", (a, b) => b.month - a.month + (b.year - a.year) * 12],\n [\n \"weeks\",\n (a, b) => {\n const days = dayDiff(a, b);\n return (days - (days % 7)) / 7;\n },\n ],\n [\"days\", dayDiff],\n ];\n\n const results = {};\n const earlier = cursor;\n let lowestOrder, highWater;\n\n /* This loop tries to diff using larger units first.\n If we overshoot, we backtrack and try the next smaller unit.\n \"cursor\" starts out at the earlier timestamp and moves closer and closer to \"later\"\n as we use smaller and smaller units.\n highWater keeps track of where we would be if we added one more of the smallest unit,\n this is used later to potentially convert any difference smaller than the smallest higher order unit\n into a fraction of that smallest higher order unit\n */\n for (const [unit, differ] of differs) {\n if (units.indexOf(unit) >= 0) {\n lowestOrder = unit;\n\n results[unit] = differ(cursor, later);\n highWater = earlier.plus(results);\n\n if (highWater > later) {\n // we overshot the end point, backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n\n // if we are still overshooting now, we need to backtrack again\n // this happens in certain situations when diffing times in different zones,\n // because this calculation ignores time zones\n if (cursor > later) {\n // keep the \"overshot by 1\" around as highWater\n highWater = cursor;\n // backtrack cursor by 1\n results[unit]--;\n cursor = earlier.plus(results);\n }\n } else {\n cursor = highWater;\n }\n }\n }\n\n return [cursor, results, highWater, lowestOrder];\n}\n\nexport default function (earlier, later, units, opts) {\n let [cursor, results, highWater, lowestOrder] = highOrderDiffs(earlier, later, units);\n\n const remainingMillis = later - cursor;\n\n const lowerOrderUnits = units.filter(\n (u) => [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"].indexOf(u) >= 0\n );\n\n if (lowerOrderUnits.length === 0) {\n if (highWater < later) {\n highWater = cursor.plus({ [lowestOrder]: 1 });\n }\n\n if (highWater !== cursor) {\n results[lowestOrder] = (results[lowestOrder] || 0) + remainingMillis / (highWater - cursor);\n }\n }\n\n const duration = Duration.fromObject(results, opts);\n\n if (lowerOrderUnits.length > 0) {\n return Duration.fromMillis(remainingMillis, opts)\n .shiftTo(...lowerOrderUnits)\n .plus(duration);\n } else {\n return duration;\n }\n}\n", "import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport class TokenParser {\n constructor(locale, format) {\n this.locale = locale;\n this.format = format;\n this.tokens = expandMacroTokens(Formatter.parseFormat(format), locale);\n this.units = this.tokens.map((t) => unitForToken(t, locale));\n this.disqualifyingUnit = this.units.find((t) => t.invalidReason);\n\n if (!this.disqualifyingUnit) {\n const [regexString, handlers] = buildRegex(this.units);\n this.regex = RegExp(regexString, \"i\");\n this.handlers = handlers;\n }\n }\n\n explainFromTokens(input) {\n if (!this.isValid) {\n return { input, tokens: this.tokens, invalidReason: this.invalidReason };\n } else {\n const [rawMatches, matches] = match(input, this.regex, this.handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return {\n input,\n tokens: this.tokens,\n regex: this.regex,\n rawMatches,\n matches,\n result,\n zone,\n specificOffset,\n };\n }\n }\n\n get isValid() {\n return !this.disqualifyingUnit;\n }\n\n get invalidReason() {\n return this.disqualifyingUnit ? this.disqualifyingUnit.invalidReason : null;\n }\n}\n\nexport function explainFromTokens(locale, input, format) {\n const parser = new TokenParser(locale, format);\n return parser.explainFromTokens(input);\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n", "import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n TokenParser,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended, precision) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n if (precision === \"year\") return c;\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n if (precision === \"month\") return c;\n c += \"-\";\n } else {\n c += padStart(o.c.month);\n if (precision === \"month\") return c;\n }\n c += padStart(o.c.day);\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n) {\n let showSeconds = !suppressSeconds || o.c.millisecond !== 0 || o.c.second !== 0,\n c = \"\";\n switch (precision) {\n case \"day\":\n case \"month\":\n case \"year\":\n break;\n default:\n c += padStart(o.c.hour);\n if (precision === \"hour\") break;\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (precision === \"minute\") break;\n if (showSeconds) {\n c += \":\";\n c += padStart(o.c.second);\n }\n } else {\n c += padStart(o.c.minute);\n if (precision === \"minute\") break;\n if (showSeconds) {\n c += padStart(o.c.second);\n }\n }\n if (precision === \"second\") break;\n if (showSeconds && (!suppressMilliseconds || o.c.millisecond !== 0)) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// cache offsets for zones based on the current timestamp when this function is\n// first called. When we are handling a datetime from components like (year,\n// month, day, hour) in a time zone, we need a guess about what the timezone\n// offset is so that we can convert into a UTC timestamp. One way is to find the\n// offset of now in the zone. The actual date may have a different offset (for\n// example, if we handle a date in June while we're in December in a zone that\n// observes DST), but we can check and adjust that.\n//\n// When handling many dates, calculating the offset for now every time is\n// expensive. It's just a guess, so we can cache the offset to use even if we\n// are right on a time change boundary (we'll just correct in the other\n// direction). Using a timestamp from first read is a slight optimization for\n// handling dates close to the current date, since those dates will usually be\n// in the same offset (we could set the timestamp statically, instead). We use a\n// single timestamp for all zones to make things a bit more predictable.\n//\n// This is safe for quickDT (used by local() and utc()) because we don't fill in\n// higher-order units from tsNow (as we do in fromObject, this requires that\n// offset is calculated from tsNow).\n/**\n * @param {Zone} zone\n * @return {number}\n */\nfunction guessOffsetForZone(zone) {\n if (zoneOffsetTs === undefined) {\n zoneOffsetTs = Settings.now();\n }\n\n // Do not cache anything but IANA zones, because it is not safe to do so.\n // Guessing an offset which is not present in the zone can cause wrong results from fixOffset\n if (zone.type !== \"iana\") {\n return zone.offset(zoneOffsetTs);\n }\n const zoneName = zone.name;\n let offsetGuess = zoneOffsetGuessCache.get(zoneName);\n if (offsetGuess === undefined) {\n offsetGuess = zone.offset(zoneOffsetTs);\n zoneOffsetGuessCache.set(zoneName, offsetGuess);\n }\n return offsetGuess;\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n }\n\n const loc = Locale.fromObject(opts);\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = guessOffsetForZone(zone);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = Settings.now();\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n rounding = isUndefined(opts.rounding) ? \"trunc\" : opts.rounding,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, opts.calendary ? \"round\" : rounding);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * Timestamp to use for cached zone offset guesses (exposed for test)\n */\nlet zoneOffsetTs;\n/**\n * Cache for zone offset guesses (exposed for test).\n *\n * This optimizes quickDT via guessOffsetForZone to avoid repeated calls of\n * zone.offset().\n */\nconst zoneOffsetGuessCache = new Map();\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n // If an offset has been passed and we have not been called from\n // clone(), we can trust it and avoid the offset calculation.\n const ot = isNumber(config.o) && !config.old ? config.o : zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [options.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} options.weekSettings - the week settings to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n if (!inst.isValid) {\n return DateTime.invalid(inst.invalid);\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @param {string} [opts.weekSettings] - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.weekSettings - the week settings to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n static resetCache() {\n zoneOffsetTs = undefined;\n zoneOffsetGuessCache.clear();\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='milliseconds'] - truncate output to desired presicion: 'years', 'months', 'days', 'hours', 'minutes', 'seconds' or 'milliseconds'. When precision and suppressSeconds or suppressMilliseconds are used together, precision sets the maximum unit shown in the output, however seconds or milliseconds will still be suppressed if they are 0.\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @example DateTime.now().toISO({ precision: 'day' }) //=> '2017-04-22Z'\n * @example DateTime.now().toISO({ precision: 'minute' }) //=> '2017-04-22T20:47Z'\n * @return {string|null}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n precision = \"milliseconds\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n precision = normalizeUnit(precision);\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext, precision);\n if (orderedUnits.indexOf(precision) >= 3) c += \"T\";\n c += toISOTime(\n this,\n ext,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n );\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='day'] - truncate output to desired precision: 'years', 'months', or 'days'.\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @example DateTime.utc(1982, 5, 25).toISODate({ precision: 'month' }) //=> '1982-05'\n * @return {string|null}\n */\n toISODate({ format = \"extended\", precision = \"day\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, format === \"extended\", normalizeUnit(precision));\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @param {string} [opts.precision='milliseconds'] - truncate output to desired presicion: 'hours', 'minutes', 'seconds' or 'milliseconds'. When precision and suppressSeconds or suppressMilliseconds are used together, precision sets the maximum unit shown in the output, however seconds or milliseconds will still be suppressed if they are 0.\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, second: 56 }).toISOTime({ precision: 'minute' }) //=> '07:34Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n precision = \"milliseconds\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n precision = normalizeUnit(precision);\n let c = includePrefix && orderedUnits.indexOf(precision) >= 3 ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone,\n precision\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string|null}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds (including milliseconds in the fractional part) of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval|DateTime}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds towards zero by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {string} [options.rounding=\"trunc\"] - rounding method to use when rounding the numbers in the output. Can be \"trunc\" (toward zero), \"expand\" (away from zero), \"round\", \"floor\", or \"ceil\".\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n /**\n * Build a parser for `fmt` using the given locale. This parser can be passed\n * to {@link DateTime.fromFormatParser} to a parse a date in this format. This\n * can be used to optimize cases where many dates need to be parsed in a\n * specific format.\n *\n * @param {String} fmt - the format the string is expected to be in (see\n * description)\n * @param {Object} options - options used to set locale and numberingSystem\n * for parser\n * @returns {TokenParser} - opaque object to be used\n */\n static buildFormatParser(fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return new TokenParser(localeToUse, fmt);\n }\n\n /**\n * Create a DateTime from an input string and format parser.\n *\n * The format parser must have been created with the same locale as this call.\n *\n * @param {String} text - the string to parse\n * @param {TokenParser} formatParser - parser from {@link DateTime.buildFormatParser}\n * @param {Object} opts - options taken by fromFormat()\n * @returns {DateTime}\n */\n static fromFormatParser(text, formatParser, opts = {}) {\n if (isUndefined(text) || isUndefined(formatParser)) {\n throw new InvalidArgumentError(\n \"fromFormatParser requires an input string and a format parser\"\n );\n }\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n\n if (!localeToUse.equals(formatParser.locale)) {\n throw new InvalidArgumentError(\n `fromFormatParser called with a locale of ${localeToUse}, ` +\n `but the format parser was created for ${formatParser.locale}`\n );\n }\n\n const { result, zone, specificOffset, invalidReason } = formatParser.explainFromTokens(text);\n\n if (invalidReason) {\n return DateTime.invalid(invalidReason);\n } else {\n return parseDataToDateTime(\n result,\n zone,\n opts,\n `format ${formatParser.format}`,\n text,\n specificOffset\n );\n }\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n", "import DateTime from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Info from \"./info.js\";\nimport Zone from \"./zone.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport IANAZone from \"./zones/IANAZone.js\";\nimport InvalidZone from \"./zones/invalidZone.js\";\nimport SystemZone from \"./zones/systemZone.js\";\nimport Settings from \"./settings.js\";\n\nconst VERSION = \"3.7.2\";\n\nexport {\n VERSION,\n DateTime,\n Duration,\n Interval,\n Info,\n Zone,\n FixedOffsetZone,\n IANAZone,\n InvalidZone,\n SystemZone,\n Settings,\n};\n", "//#region src/constants.ts\nconst LAYER_DEFAULT = \"default\";\nconst LAYER_PREFLIGHTS = \"preflights\";\nconst LAYER_SHORTCUTS = \"shortcuts\";\nconst LAYER_IMPORTS = \"imports\";\nconst DEFAULT_LAYERS = {\n\t[LAYER_IMPORTS]: -200,\n\t[LAYER_PREFLIGHTS]: -100,\n\t[LAYER_SHORTCUTS]: -10,\n\t[LAYER_DEFAULT]: 0\n};\n\n//#endregion\n//#region src/extractors/split.ts\nconst defaultSplitRE = /[\\\\:]?[\\s'\"`;{}]+/g;\nconst splitWithVariantGroupRE = /([\\\\:]?[\\s\"'`;<>]|:\\(|\\)\"|\\)\\s)/g;\nfunction splitCode(code) {\n\treturn code.split(defaultSplitRE);\n}\nconst extractorSplit = {\n\tname: \"@unocss/core/extractor-split\",\n\torder: 0,\n\textract({ code }) {\n\t\treturn splitCode(code);\n\t}\n};\n\n//#endregion\n//#region src/utils/basic.ts\nfunction toArray(value = []) {\n\treturn Array.isArray(value) ? value : [value];\n}\nfunction uniq(value) {\n\treturn Array.from(new Set(value));\n}\nfunction uniqueBy(array, equalFn) {\n\treturn array.reduce((acc, cur) => {\n\t\tif (acc.findIndex((item) => equalFn(cur, item)) === -1) acc.push(cur);\n\t\treturn acc;\n\t}, []);\n}\nfunction isString(s) {\n\treturn typeof s === \"string\";\n}\n\n//#endregion\n//#region src/utils/countable-set.ts\nvar CountableSet = class extends Set {\n\tconstructor(values) {\n\t\tsuper();\n\t\tthis._map = /* @__PURE__ */ new Map();\n\t\tif (values) for (const key of values) this.add(key);\n\t}\n\tadd(key) {\n\t\tthis._map.set(key, (this._map.get(key) ?? 0) + 1);\n\t\treturn super.add(key);\n\t}\n\tdelete(key) {\n\t\tif (!this._map.has(key)) return false;\n\t\tthis._map.delete(key);\n\t\treturn super.delete(key);\n\t}\n\tclear() {\n\t\tthis._map.clear();\n\t\tsuper.clear();\n\t}\n\tgetCount(key) {\n\t\treturn this._map.get(key) ?? 0;\n\t}\n\tsetCount(key, count) {\n\t\tthis._map.set(key, count);\n\t\treturn super.add(key);\n\t}\n};\nfunction isCountableSet(value) {\n\treturn value instanceof CountableSet;\n}\n\n//#endregion\n//#region src/utils/escape.ts\nfunction escapeRegExp(string) {\n\treturn string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n/**\n* CSS Selector Escape\n*/\nfunction escapeSelector(str) {\n\tconst length = str.length;\n\tlet index = -1;\n\tlet codeUnit;\n\tlet result = \"\";\n\tconst firstCodeUnit = str.charCodeAt(0);\n\twhile (++index < length) {\n\t\tcodeUnit = str.charCodeAt(index);\n\t\tif (codeUnit === 0) {\n\t\t\tresult += \"\uFFFD\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit === 37) {\n\t\t\tresult += \"\\\\%\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit === 44) {\n\t\t\tresult += \"\\\\,\";\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit >= 1 && codeUnit <= 31 || codeUnit === 127 || index === 0 && codeUnit >= 48 && codeUnit <= 57 || index === 1 && codeUnit >= 48 && codeUnit <= 57 && firstCodeUnit === 45) {\n\t\t\tresult += `\\\\${codeUnit.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\t\tif (index === 0 && length === 1 && codeUnit === 45) {\n\t\t\tresult += `\\\\${str.charAt(index)}`;\n\t\t\tcontinue;\n\t\t}\n\t\tif (codeUnit >= 128 || codeUnit === 45 || codeUnit === 95 || codeUnit >= 48 && codeUnit <= 57 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 97 && codeUnit <= 122) {\n\t\t\tresult += str.charAt(index);\n\t\t\tcontinue;\n\t\t}\n\t\tresult += `\\\\${str.charAt(index)}`;\n\t}\n\treturn result;\n}\nconst e = escapeSelector;\n\n//#endregion\n//#region src/utils/events.ts\n/**\n* Create event emitter.\n*\n* ```js\n* import { createNanoEvents } from 'nanoevents'\n*\n* class Ticker {\n* constructor() {\n* this.emitter = createNanoEvents()\n* }\n* on(...args) {\n* return this.emitter.on(...args)\n* }\n* tick() {\n* this.emitter.emit('tick')\n* }\n* }\n* ```\n*/\nfunction createNanoEvents() {\n\treturn {\n\t\tevents: {},\n\t\temit(event, ...args) {\n\t\t\t(this.events[event] || []).forEach((i) => i(...args));\n\t\t},\n\t\ton(event, cb) {\n\t\t\t(this.events[event] = this.events[event] || []).push(cb);\n\t\t\treturn () => this.events[event] = (this.events[event] || []).filter((i) => i !== cb);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/utils/helpers.ts\nconst attributifyRE = /^\\[(.+?)~?=\"(.*)\"\\]$/;\nconst cssIdRE = /\\.(css|postcss|sass|scss|less|stylus|styl)($|\\?)/;\nconst validateFilterRE = /[\\w\\u00A0-\\uFFFF%-?]/;\nfunction isAttributifySelector(selector) {\n\treturn selector.match(attributifyRE);\n}\nfunction isValidSelector(selector = \"\") {\n\treturn validateFilterRE.test(selector);\n}\nfunction normalizeVariant(variant) {\n\treturn typeof variant === \"function\" ? { match: variant } : variant;\n}\nfunction isRawUtil(util) {\n\treturn util.length === 3;\n}\nfunction notNull(value) {\n\treturn value != null;\n}\nfunction noop() {}\n\n//#endregion\n//#region src/utils/layer.ts\nfunction withLayer(layer, rules) {\n\trules.forEach((r) => {\n\t\tif (!r[2]) r[2] = { layer };\n\t\telse r[2].layer = layer;\n\t});\n\treturn rules;\n}\n\n//#endregion\n//#region src/utils/map.ts\nvar TwoKeyMap = class {\n\tconstructor() {\n\t\tthis._map = /* @__PURE__ */ new Map();\n\t}\n\tget(key1, key2) {\n\t\tconst m2 = this._map.get(key1);\n\t\tif (m2) return m2.get(key2);\n\t}\n\tgetFallback(key1, key2, fallback) {\n\t\tlet m2 = this._map.get(key1);\n\t\tif (!m2) {\n\t\t\tm2 = /* @__PURE__ */ new Map();\n\t\t\tthis._map.set(key1, m2);\n\t\t}\n\t\tif (!m2.has(key2)) m2.set(key2, fallback);\n\t\treturn m2.get(key2);\n\t}\n\tset(key1, key2, value) {\n\t\tlet m2 = this._map.get(key1);\n\t\tif (!m2) {\n\t\t\tm2 = /* @__PURE__ */ new Map();\n\t\t\tthis._map.set(key1, m2);\n\t\t}\n\t\tm2.set(key2, value);\n\t\treturn this;\n\t}\n\thas(key1, key2) {\n\t\treturn this._map.get(key1)?.has(key2);\n\t}\n\tdelete(key1, key2) {\n\t\treturn this._map.get(key1)?.delete(key2) || false;\n\t}\n\tdeleteTop(key1) {\n\t\treturn this._map.delete(key1);\n\t}\n\tmap(fn) {\n\t\treturn Array.from(this._map.entries()).flatMap(([k1, m2]) => Array.from(m2.entries()).map(([k2, v]) => {\n\t\t\treturn fn(v, k1, k2);\n\t\t}));\n\t}\n};\nvar BetterMap = class extends Map {\n\tgetFallback(key, fallback) {\n\t\tconst v = this.get(key);\n\t\tif (v === void 0) {\n\t\t\tthis.set(key, fallback);\n\t\t\treturn fallback;\n\t\t}\n\t\treturn v;\n\t}\n\tmap(mapFn) {\n\t\tconst result = [];\n\t\tthis.forEach((v, k) => {\n\t\t\tresult.push(mapFn(v, k));\n\t\t});\n\t\treturn result;\n\t}\n\tflatMap(mapFn) {\n\t\tconst result = [];\n\t\tthis.forEach((v, k) => {\n\t\t\tresult.push(...mapFn(v, k));\n\t\t});\n\t\treturn result;\n\t}\n};\n\n//#endregion\n//#region src/utils/object.ts\nfunction normalizeCSSEntries(obj) {\n\tif (isString(obj)) return obj;\n\treturn (!Array.isArray(obj) ? Object.entries(obj) : obj).filter((i) => i[1] != null);\n}\nfunction normalizeCSSValues(obj) {\n\tif (Array.isArray(obj)) if (obj.find((i) => !Array.isArray(i) || Array.isArray(i[0]))) return obj.map((i) => normalizeCSSEntries(i));\n\telse return [obj];\n\telse return [normalizeCSSEntries(obj)];\n}\nfunction clearIdenticalEntries(entry) {\n\treturn entry.filter(([k, v], idx) => {\n\t\tif (k.startsWith(\"$$\")) return false;\n\t\tfor (let i = idx - 1; i >= 0; i--) if (entry[i][0] === k && entry[i][1] === v) return false;\n\t\treturn true;\n\t});\n}\nconst VirtualKey = \"__virtual_key__\";\nfunction entriesToCss(arr) {\n\tif (arr == null) return \"\";\n\treturn clearIdenticalEntries(arr).map(([key, value]) => value != null && typeof value !== \"function\" ? key !== VirtualKey ? `${key}:${value};` : value : void 0).filter(Boolean).join(\"\");\n}\nfunction isObject(item) {\n\treturn item && typeof item === \"object\" && !Array.isArray(item);\n}\n/**\n* Deep merge two objects\n*/\nfunction mergeDeep(original, patch, mergeArray = false) {\n\tconst o = original;\n\tconst p = patch;\n\tif (Array.isArray(p)) if (mergeArray && Array.isArray(p)) return [...o, ...p];\n\telse return [...p];\n\tconst output = { ...o };\n\tif (isObject(o) && isObject(p)) Object.keys(p).forEach((key) => {\n\t\tif (isObject(o[key]) && isObject(p[key]) || Array.isArray(o[key]) && Array.isArray(p[key])) output[key] = mergeDeep(o[key], p[key], mergeArray);\n\t\telse Object.assign(output, { [key]: p[key] });\n\t});\n\treturn output;\n}\nfunction clone(val) {\n\tlet k, out, tmp;\n\tif (Array.isArray(val)) {\n\t\tout = Array.from({ length: k = val.length });\n\t\twhile (k--) out[k] = (tmp = val[k]) && typeof tmp === \"object\" ? clone(tmp) : tmp;\n\t\treturn out;\n\t}\n\tif (Object.prototype.toString.call(val) === \"[object Object]\") {\n\t\tout = {};\n\t\tfor (k in val) if (k === \"__proto__\") Object.defineProperty(out, k, {\n\t\t\tvalue: clone(val[k]),\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\twritable: true\n\t\t});\n\t\telse out[k] = (tmp = val[k]) && typeof tmp === \"object\" ? clone(tmp) : tmp;\n\t\treturn out;\n\t}\n\treturn val;\n}\nfunction isStaticRule(rule) {\n\treturn isString(rule[0]);\n}\nfunction isStaticShortcut(sc) {\n\treturn isString(sc[0]);\n}\n\n//#endregion\n//#region src/utils/variant-group.ts\nconst regexCache = {};\nfunction makeRegexClassGroup(separators = [\"-\", \":\"]) {\n\tconst key = separators.join(\"|\");\n\tif (!regexCache[key]) regexCache[key] = new RegExp(`((?:[!@<~\\\\w+:_-]|\\\\[&?>?:?\\\\S*\\\\])+?)(${key})\\\\(((?:[~!<>\\\\w\\\\s:/\\\\\\\\,%#.$?-]|\\\\[[^\\\\]]*?\\\\])+?)\\\\)(?!\\\\s*?=>)`, \"gm\");\n\tregexCache[key].lastIndex = 0;\n\treturn regexCache[key];\n}\nfunction parseVariantGroup(str, separators = [\"-\", \":\"], depth = 5) {\n\tconst regexClassGroup = makeRegexClassGroup(separators);\n\tlet hasChanged;\n\tlet content = str.toString();\n\tconst prefixes = /* @__PURE__ */ new Set();\n\tconst groupsByOffset = /* @__PURE__ */ new Map();\n\tdo {\n\t\thasChanged = false;\n\t\tcontent = content.replace(regexClassGroup, (from, pre, sep, body, groupOffset) => {\n\t\t\tif (!separators.includes(sep)) return from;\n\t\t\thasChanged = true;\n\t\t\tprefixes.add(pre + sep);\n\t\t\tconst bodyOffset = groupOffset + pre.length + sep.length + 1;\n\t\t\tconst group = {\n\t\t\t\tlength: from.length,\n\t\t\t\titems: []\n\t\t\t};\n\t\t\tgroupsByOffset.set(groupOffset, group);\n\t\t\tfor (const itemMatch of [...body.matchAll(/\\S+/g)]) {\n\t\t\t\tconst itemOffset = bodyOffset + itemMatch.index;\n\t\t\t\tlet innerItems = groupsByOffset.get(itemOffset)?.items;\n\t\t\t\tif (innerItems) groupsByOffset.delete(itemOffset);\n\t\t\t\telse innerItems = [{\n\t\t\t\t\toffset: itemOffset,\n\t\t\t\t\tlength: itemMatch[0].length,\n\t\t\t\t\tclassName: itemMatch[0]\n\t\t\t\t}];\n\t\t\t\tfor (const item of innerItems) {\n\t\t\t\t\titem.className = item.className === \"~\" ? pre : item.className.replace(/^(!?)(.*)/, `$1${pre}${sep}$2`);\n\t\t\t\t\tgroup.items.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn \"$\".repeat(from.length);\n\t\t});\n\t\tdepth -= 1;\n\t} while (hasChanged && depth);\n\tlet expanded;\n\tif (typeof str === \"string\") {\n\t\texpanded = \"\";\n\t\tlet prevOffset = 0;\n\t\tfor (const [offset, group] of groupsByOffset) {\n\t\t\texpanded += str.slice(prevOffset, offset);\n\t\t\texpanded += group.items.map((item) => item.className).join(\" \");\n\t\t\tprevOffset = offset + group.length;\n\t\t}\n\t\texpanded += str.slice(prevOffset);\n\t} else {\n\t\texpanded = str;\n\t\tfor (const [offset, group] of groupsByOffset) expanded.overwrite(offset, offset + group.length, group.items.map((item) => item.className).join(\" \"));\n\t}\n\treturn {\n\t\tprefixes: Array.from(prefixes),\n\t\thasChanged,\n\t\tgroupsByOffset,\n\t\tget expanded() {\n\t\t\treturn expanded.toString();\n\t\t}\n\t};\n}\nfunction collapseVariantGroup(str, prefixes) {\n\tconst collection = /* @__PURE__ */ new Map();\n\tconst sortedPrefix = prefixes.sort((a, b) => b.length - a.length);\n\treturn str.split(/\\s+/g).map((part) => {\n\t\tconst prefix = sortedPrefix.find((prefix$1) => part.startsWith(prefix$1));\n\t\tif (!prefix) return part;\n\t\tconst body = part.slice(prefix.length);\n\t\tif (collection.has(prefix)) {\n\t\t\tcollection.get(prefix).push(body);\n\t\t\treturn null;\n\t\t} else {\n\t\t\tconst items = [body];\n\t\t\tcollection.set(prefix, items);\n\t\t\treturn {\n\t\t\t\tprefix,\n\t\t\t\titems\n\t\t\t};\n\t\t}\n\t}).filter(notNull).map((i) => {\n\t\tif (typeof i === \"string\") return i;\n\t\treturn `${i.prefix}(${i.items.join(\" \")})`;\n\t}).join(\" \");\n}\nfunction expandVariantGroup(str, separators = [\"-\", \":\"], depth = 5) {\n\tconst res = parseVariantGroup(str, separators, depth);\n\treturn typeof str === \"string\" ? res.expanded : str;\n}\n\n//#endregion\n//#region src/utils/warn.ts\nconst warned = /* @__PURE__ */ new Set();\nfunction warnOnce(msg) {\n\tif (warned.has(msg)) return;\n\tconsole.warn(\"[unocss]\", msg);\n\twarned.add(msg);\n}\n\n//#endregion\n//#region src/config.ts\nfunction resolveShortcuts(shortcuts) {\n\treturn toArray(shortcuts).flatMap((s) => {\n\t\tif (Array.isArray(s)) return [s];\n\t\treturn Object.entries(s);\n\t});\n}\nconst __RESOLVED = \"_uno_resolved\";\n/**\n* Resolve a single preset, nested presets are ignored\n*/\nasync function resolvePreset(presetInput) {\n\tlet preset = typeof presetInput === \"function\" ? await presetInput() : await presetInput;\n\tif (__RESOLVED in preset) return preset;\n\tpreset = { ...preset };\n\tObject.defineProperty(preset, __RESOLVED, {\n\t\tvalue: true,\n\t\tenumerable: false\n\t});\n\tconst shortcuts = preset.shortcuts ? resolveShortcuts(preset.shortcuts) : void 0;\n\tpreset.shortcuts = shortcuts;\n\tif (preset.prefix || preset.layer) {\n\t\tconst apply = (i) => {\n\t\t\tif (!i[2]) i[2] = {};\n\t\t\tconst meta = i[2];\n\t\t\tif (meta.prefix == null && preset.prefix) meta.prefix = toArray(preset.prefix);\n\t\t\tif (meta.layer == null && preset.layer) meta.layer = preset.layer;\n\t\t};\n\t\tshortcuts?.forEach(apply);\n\t\tpreset.rules?.forEach(apply);\n\t}\n\treturn preset;\n}\n/**\n* Resolve presets with nested presets\n*/\nasync function resolvePresets(preset) {\n\tconst root = await resolvePreset(preset);\n\tif (!root.presets) return [root];\n\treturn [root, ...(await Promise.all((root.presets || []).flatMap(toArray).flatMap(resolvePresets))).flat()];\n}\nfunction mergeContentOptions(optionsArray) {\n\tif (optionsArray.length === 0) return {};\n\tconst pipelineIncludes = [];\n\tconst pipelineExcludes = [];\n\tlet pipelineDisabled = false;\n\tconst filesystem = [];\n\tconst inline = [];\n\tfor (const options of optionsArray) {\n\t\tif (options.pipeline === false) {\n\t\t\tpipelineDisabled = true;\n\t\t\tbreak;\n\t\t} else {\n\t\t\tif (options.pipeline?.include) pipelineIncludes.push(options.pipeline.include);\n\t\t\tif (options.pipeline?.exclude) pipelineExcludes.push(options.pipeline.exclude);\n\t\t}\n\t\tif (options.filesystem) filesystem.push(options.filesystem);\n\t\tif (options.inline) inline.push(options.inline);\n\t}\n\tconst mergedContent = { pipeline: pipelineDisabled ? false : {\n\t\tinclude: uniq(mergeFilterPatterns(...pipelineIncludes)),\n\t\texclude: uniq(mergeFilterPatterns(...pipelineExcludes))\n\t} };\n\tif (filesystem.length) mergedContent.filesystem = uniq(filesystem.flat());\n\tif (inline.length) mergedContent.inline = uniq(inline.flat());\n\treturn mergedContent;\n}\nasync function resolveConfig(userConfig = {}, defaults = {}) {\n\tconst config = Object.assign({}, defaults, userConfig);\n\tconst rawPresets = uniqueBy((await Promise.all((config.presets || []).flatMap(toArray).flatMap(resolvePresets))).flat(), (a, b) => a.name === b.name);\n\tconst sortedPresets = [\n\t\t...rawPresets.filter((p) => p.enforce === \"pre\"),\n\t\t...rawPresets.filter((p) => !p.enforce),\n\t\t...rawPresets.filter((p) => p.enforce === \"post\")\n\t];\n\tconst sources = [...sortedPresets, config];\n\tconst sourcesReversed = [...sources].reverse();\n\tconst layers = Object.assign({}, DEFAULT_LAYERS, ...sources.map((i) => i.layers));\n\tfunction getMerged(key) {\n\t\treturn uniq(sources.flatMap((p) => toArray(p[key] || [])));\n\t}\n\tconst extractors = getMerged(\"extractors\");\n\tlet extractorDefault = sourcesReversed.find((i) => i.extractorDefault !== void 0)?.extractorDefault;\n\tif (extractorDefault === void 0) extractorDefault = extractorSplit;\n\tif (extractorDefault && !extractors.includes(extractorDefault)) extractors.unshift(extractorDefault);\n\textractors.sort((a, b) => (a.order || 0) - (b.order || 0));\n\tconst rules = getMerged(\"rules\");\n\tconst rulesSize = rules.length;\n\tconst rulesStaticMap = {};\n\tconst rulesDynamic = [];\n\tfor (const [index, rule] of rules.entries()) {\n\t\tconst meta = rule[2] ?? (rule[2] = {});\n\t\tmeta.__index = index;\n\t\tif (isStaticRule(rule)) toArray(meta.prefix ?? \"\").forEach((prefix) => {\n\t\t\trulesStaticMap[prefix + rule[0]] = rule;\n\t\t});\n\t\telse rulesDynamic.unshift(rule);\n\t}\n\tconst autocomplete = {\n\t\ttemplates: uniq(sources.flatMap((p) => toArray(p.autocomplete?.templates))),\n\t\textractors: sources.flatMap((p) => toArray(p.autocomplete?.extractors)).sort((a, b) => (a.order || 0) - (b.order || 0)),\n\t\tshorthands: mergeAutocompleteShorthands(sources.map((p) => p.autocomplete?.shorthands || {}))\n\t};\n\tlet separators = getMerged(\"separators\");\n\tif (!separators.length) separators = [\":\", \"-\"];\n\tconst content = mergeContentOptions(getMerged(\"content\"));\n\tconst resolved = {\n\t\tmergeSelectors: true,\n\t\twarn: true,\n\t\tsortLayers: (layers$1) => layers$1,\n\t\t...config,\n\t\tblocklist: getMerged(\"blocklist\"),\n\t\tpresets: sortedPresets,\n\t\tenvMode: config.envMode || \"build\",\n\t\tshortcutsLayer: config.shortcutsLayer || \"shortcuts\",\n\t\tlayers,\n\t\ttheme: mergeThemes(sources.map((p) => p.theme)),\n\t\trules,\n\t\trulesSize,\n\t\trulesDynamic,\n\t\trulesStaticMap,\n\t\tpreprocess: getMerged(\"preprocess\"),\n\t\tpostprocess: getMerged(\"postprocess\"),\n\t\tpreflights: getMerged(\"preflights\"),\n\t\tautocomplete,\n\t\tvariants: getMerged(\"variants\").map(normalizeVariant).sort((a, b) => (a.order || 0) - (b.order || 0)),\n\t\tshortcuts: resolveShortcuts(getMerged(\"shortcuts\")).reverse(),\n\t\textractors,\n\t\tsafelist: getMerged(\"safelist\"),\n\t\tseparators,\n\t\tdetails: config.details ?? config.envMode === \"dev\",\n\t\tcontent,\n\t\ttransformers: uniqueBy(getMerged(\"transformers\"), (a, b) => a.name === b.name)\n\t};\n\tconst extendThemes = getMerged(\"extendTheme\");\n\tfor (const extendTheme of extendThemes) resolved.theme = extendTheme(resolved.theme, resolved) || resolved.theme;\n\tfor (const p of sources) p?.configResolved?.(resolved);\n\treturn resolved;\n}\n/**\n* Merge multiple configs into one, later ones have higher priority\n*/\nfunction mergeConfigs(configs) {\n\tconst maybeArrays = [\n\t\t\"shortcuts\",\n\t\t\"preprocess\",\n\t\t\"postprocess\"\n\t];\n\treturn configs.map((config) => Object.entries(config).reduce((acc, [key, value]) => ({\n\t\t...acc,\n\t\t[key]: maybeArrays.includes(key) ? toArray(value) : value\n\t}), {})).reduce(({ theme: themeA, content: contentA, ...a }, { theme: themeB, content: contentB, ...b }) => {\n\t\tconst c = mergeDeep(a, b, true);\n\t\tif (themeA || themeB) c.theme = mergeThemes([themeA, themeB]);\n\t\tif (contentA || contentB) c.content = mergeContentOptions([contentA || {}, contentB || {}]);\n\t\treturn c;\n\t}, {});\n}\nfunction mergeThemes(themes) {\n\treturn themes.map((theme) => theme ? clone(theme) : {}).reduce((a, b) => mergeDeep(a, b), {});\n}\nfunction mergeAutocompleteShorthands(shorthands) {\n\treturn shorthands.reduce((a, b) => {\n\t\tconst rs = {};\n\t\tfor (const key in b) {\n\t\t\tconst value = b[key];\n\t\t\tif (Array.isArray(value)) rs[key] = `(${value.join(\"|\")})`;\n\t\t\telse rs[key] = value;\n\t\t}\n\t\treturn {\n\t\t\t...a,\n\t\t\t...rs\n\t\t};\n\t}, {});\n}\nfunction mergeFilterPatterns(...filterPatterns) {\n\treturn filterPatterns.flatMap(flatternFilterPattern);\n}\nfunction flatternFilterPattern(pattern) {\n\treturn Array.isArray(pattern) ? pattern : pattern ? [pattern] : [];\n}\nfunction definePreset(preset) {\n\treturn preset;\n}\n\n//#endregion\n//#region package.json\nvar version = \"66.6.0\";\n\n//#endregion\n//#region src/generator.ts\nconst symbols = {\n\tshortcutsNoMerge: \"$$symbol-shortcut-no-merge\",\n\tnoMerge: \"$$symbol-no-merge\",\n\tvariants: \"$$symbol-variants\",\n\tparent: \"$$symbol-parent\",\n\tselector: \"$$symbol-selector\",\n\tlayer: \"$$symbol-layer\",\n\tsort: \"$$symbol-sort\",\n\tbody: \"$$symbol-body\"\n};\nvar UnoGeneratorInternal = class UnoGeneratorInternal {\n\tconstructor(userConfig = {}, defaults = {}) {\n\t\tthis.userConfig = userConfig;\n\t\tthis.defaults = defaults;\n\t\tthis.version = version;\n\t\tthis.events = createNanoEvents();\n\t\tthis.config = void 0;\n\t\tthis.cache = /* @__PURE__ */ new Map();\n\t\tthis.blocked = /* @__PURE__ */ new Set();\n\t\tthis.parentOrders = /* @__PURE__ */ new Map();\n\t\tthis.activatedRules = /* @__PURE__ */ new Set();\n\t\tthis.resolveCSSResult = (raw, result, rule, context) => {\n\t\t\tconst entries = normalizeCSSValues(result).filter((i) => i.length);\n\t\t\tif (entries.length) {\n\t\t\t\tif (this.config.details) context.rules.push(rule);\n\t\t\t\tcontext.generator.activatedRules.add(rule);\n\t\t\t\tconst meta = rule[2];\n\t\t\t\treturn entries.map((css) => {\n\t\t\t\t\tif (isString(css)) return [\n\t\t\t\t\t\tmeta.__index,\n\t\t\t\t\t\tcss,\n\t\t\t\t\t\tmeta\n\t\t\t\t\t];\n\t\t\t\t\tlet variants = context.variantHandlers;\n\t\t\t\t\tlet entryMeta = meta;\n\t\t\t\t\tfor (const entry of css) if (entry[0] === symbols.variants) if (typeof entry[1] === \"function\") variants = entry[1](variants) || variants;\n\t\t\t\t\telse variants = [...toArray(entry[1]), ...variants];\n\t\t\t\t\telse if (entry[0] === symbols.parent) variants = [{ parent: entry[1] }, ...variants];\n\t\t\t\t\telse if (entry[0] === symbols.selector) variants = [{ selector: entry[1] }, ...variants];\n\t\t\t\t\telse if (entry[0] === symbols.layer) variants = [{ layer: entry[1] }, ...variants];\n\t\t\t\t\telse if (entry[0] === symbols.sort) entryMeta = {\n\t\t\t\t\t\t...entryMeta,\n\t\t\t\t\t\tsort: entry[1]\n\t\t\t\t\t};\n\t\t\t\t\telse if (entry[0] === symbols.noMerge) entryMeta = {\n\t\t\t\t\t\t...entryMeta,\n\t\t\t\t\t\tnoMerge: entry[1]\n\t\t\t\t\t};\n\t\t\t\t\telse if (entry[0] === symbols.body) entry[0] = VirtualKey;\n\t\t\t\t\treturn [\n\t\t\t\t\t\tmeta.__index,\n\t\t\t\t\t\traw,\n\t\t\t\t\t\tcss,\n\t\t\t\t\t\tentryMeta,\n\t\t\t\t\t\tvariants\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n\tstatic async create(userConfig = {}, defaults = {}) {\n\t\tconst uno = new UnoGeneratorInternal(userConfig, defaults);\n\t\tuno.config = await resolveConfig(uno.userConfig, uno.defaults);\n\t\tuno.events.emit(\"config\", uno.config);\n\t\treturn uno;\n\t}\n\tasync setConfig(userConfig, defaults) {\n\t\tif (!userConfig) return;\n\t\tif (defaults) this.defaults = defaults;\n\t\tthis.userConfig = userConfig;\n\t\tthis.blocked.clear();\n\t\tthis.parentOrders.clear();\n\t\tthis.activatedRules.clear();\n\t\tthis.cache.clear();\n\t\tthis.config = await resolveConfig(userConfig, this.defaults);\n\t\tthis.events.emit(\"config\", this.config);\n\t}\n\tasync applyExtractors(code, id, extracted = /* @__PURE__ */ new Set()) {\n\t\tconst context = {\n\t\t\toriginal: code,\n\t\t\tcode,\n\t\t\tid,\n\t\t\textracted,\n\t\t\tenvMode: this.config.envMode\n\t\t};\n\t\tfor (const extractor of this.config.extractors) {\n\t\t\tconst result = await extractor.extract?.(context);\n\t\t\tif (!result) continue;\n\t\t\tif (isCountableSet(result) && isCountableSet(extracted)) for (const token of result) extracted.setCount(token, extracted.getCount(token) + result.getCount(token));\n\t\t\telse for (const token of result) extracted.add(token);\n\t\t}\n\t\treturn extracted;\n\t}\n\tmakeContext(raw, applied) {\n\t\tconst context = {\n\t\t\trawSelector: raw,\n\t\t\tcurrentSelector: applied[1],\n\t\t\ttheme: this.config.theme,\n\t\t\tgenerator: this,\n\t\t\tsymbols,\n\t\t\tvariantHandlers: applied[2],\n\t\t\tconstructCSS: (...args) => this.constructCustomCSS(context, ...args),\n\t\t\tvariantMatch: applied\n\t\t};\n\t\treturn context;\n\t}\n\tasync parseToken(raw, alias) {\n\t\tif (this.blocked.has(raw)) return;\n\t\tconst cacheKey = `${raw}${alias ? ` ${alias}` : \"\"}`;\n\t\tif (this.cache.has(cacheKey)) return this.cache.get(cacheKey);\n\t\tconst current = this.config.preprocess.reduce((acc, p) => p(acc) ?? acc, raw);\n\t\tif (this.isBlocked(current)) {\n\t\t\tthis.blocked.add(raw);\n\t\t\tthis.cache.set(cacheKey, null);\n\t\t\treturn;\n\t\t}\n\t\tconst variantResults = await this.matchVariants(raw, current);\n\t\tif (variantResults.every((i) => !i || this.isBlocked(i[1]))) {\n\t\t\tthis.blocked.add(raw);\n\t\t\tthis.cache.set(cacheKey, null);\n\t\t\treturn;\n\t\t}\n\t\tconst handleVariantResult = async (matched) => {\n\t\t\tconst context = this.makeContext(raw, [\n\t\t\t\talias || matched[0],\n\t\t\t\tmatched[1],\n\t\t\t\tmatched[2],\n\t\t\t\tmatched[3]\n\t\t\t]);\n\t\t\tif (this.config.details) context.variants = [...matched[3]];\n\t\t\tconst expanded = await this.expandShortcut(context.currentSelector, context);\n\t\t\treturn expanded ? await this.stringifyShortcuts(context.variantMatch, context, expanded[0], expanded[1]) : (await this.parseUtil(context.variantMatch, context))?.flatMap((i) => this.stringifyUtil(i, context)).filter(notNull);\n\t\t};\n\t\tconst result = (await Promise.all(variantResults.map((i) => handleVariantResult(i)))).flat().filter((x) => !!x);\n\t\tif (result?.length) {\n\t\t\tthis.cache.set(cacheKey, result);\n\t\t\treturn result;\n\t\t}\n\t\tthis.cache.set(cacheKey, null);\n\t}\n\tasync generate(input, options = {}) {\n\t\tconst { id, scope, preflights = true, safelist = true, minify = false, extendedInfo = false } = options;\n\t\tconst tokens = isString(input) ? await this.applyExtractors(input, id, extendedInfo ? new CountableSet() : /* @__PURE__ */ new Set()) : Array.isArray(input) ? new Set(input) : input;\n\t\tif (safelist) {\n\t\t\tconst safelistContext = {\n\t\t\t\tgenerator: this,\n\t\t\t\ttheme: this.config.theme\n\t\t\t};\n\t\t\tthis.config.safelist.flatMap((s) => typeof s === \"function\" ? s(safelistContext) : s).forEach((s) => {\n\t\t\t\tconst trimmedS = s.trim();\n\t\t\t\tif (trimmedS && !tokens.has(trimmedS)) tokens.add(trimmedS);\n\t\t\t});\n\t\t}\n\t\tconst nl = minify ? \"\" : \"\\n\";\n\t\tconst layerSet = new Set([LAYER_DEFAULT]);\n\t\tconst matched = extendedInfo ? /* @__PURE__ */ new Map() : /* @__PURE__ */ new Set();\n\t\tconst sheet = /* @__PURE__ */ new Map();\n\t\tlet preflightsMap = {};\n\t\tconst tokenPromises = Array.from(tokens).map(async (raw) => {\n\t\t\tif (matched.has(raw)) return;\n\t\t\tconst payload = await this.parseToken(raw);\n\t\t\tif (payload == null) return;\n\t\t\tif (matched instanceof Map) matched.set(raw, {\n\t\t\t\tdata: payload,\n\t\t\t\tcount: isCountableSet(tokens) ? tokens.getCount(raw) : -1\n\t\t\t});\n\t\t\telse matched.add(raw);\n\t\t\tfor (const item of payload) {\n\t\t\t\tconst parent = item[3] || \"\";\n\t\t\t\tconst layer = item[4]?.layer;\n\t\t\t\tif (!sheet.has(parent)) sheet.set(parent, []);\n\t\t\t\tsheet.get(parent).push(item);\n\t\t\t\tif (layer) layerSet.add(layer);\n\t\t\t}\n\t\t});\n\t\tawait Promise.all(tokenPromises);\n\t\tawait (async () => {\n\t\t\tif (!preflights) return;\n\t\t\tconst preflightContext = {\n\t\t\t\tgenerator: this,\n\t\t\t\ttheme: this.config.theme\n\t\t\t};\n\t\t\tconst preflightLayerSet = /* @__PURE__ */ new Set([]);\n\t\t\tthis.config.preflights.forEach(({ layer = LAYER_PREFLIGHTS }) => {\n\t\t\t\tlayerSet.add(layer);\n\t\t\t\tpreflightLayerSet.add(layer);\n\t\t\t});\n\t\t\tpreflightsMap = Object.fromEntries(await Promise.all(Array.from(preflightLayerSet).map(async (layer) => {\n\t\t\t\treturn [layer, (await Promise.all(this.config.preflights.filter((i) => (i.layer || LAYER_PREFLIGHTS) === layer).map(async (i) => await i.getCSS(preflightContext)))).filter(Boolean).join(nl)];\n\t\t\t})));\n\t\t})();\n\t\tconst sortLayers = (layers$1) => this.config.sortLayers(layers$1.sort((a, b) => (this.config.layers[a] ?? 0) - (this.config.layers[b] ?? 0) || a.localeCompare(b)));\n\t\tconst layers = sortLayers(Array.from(layerSet));\n\t\tconst layerCache = {};\n\t\tconst outputCssLayers = this.config.outputToCssLayers;\n\t\tconst getLayerAlias = (layer) => {\n\t\t\tlet alias = layer;\n\t\t\tif (typeof outputCssLayers === \"object\") alias = outputCssLayers.cssLayerName?.(layer);\n\t\t\treturn alias === null ? null : alias ?? layer;\n\t\t};\n\t\tconst getLayer = (layer = LAYER_DEFAULT) => {\n\t\t\tif (layerCache[layer]) return layerCache[layer];\n\t\t\tlet css = Array.from(sheet).sort((a, b) => (this.parentOrders.get(a[0]) ?? 0) - (this.parentOrders.get(b[0]) ?? 0) || a[0]?.localeCompare(b[0] || \"\") || 0).map(([parent, items]) => {\n\t\t\t\tconst size = items.length;\n\t\t\t\tconst sorted = items.filter((i) => (i[4]?.layer || LAYER_DEFAULT) === layer).sort((a, b) => {\n\t\t\t\t\treturn a[0] - b[0] || (a[4]?.sort || 0) - (b[4]?.sort || 0) || a[5]?.currentSelector?.localeCompare(b[5]?.currentSelector ?? \"\") || a[1]?.localeCompare(b[1] || \"\") || a[2]?.localeCompare(b[2] || \"\") || 0;\n\t\t\t\t}).map(([, selector, body, , meta, , variantNoMerge]) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\t[[(selector ? applyScope(selector, scope) : selector) ?? \"\", meta?.sort ?? 0]],\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\t!!(variantNoMerge ?? meta?.noMerge)\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tif (!sorted.length) return void 0;\n\t\t\t\tconst ruleLines = sorted.reverse().map(([selectorSortPair, body, noMerge], idx) => {\n\t\t\t\t\tif (!noMerge && this.config.mergeSelectors) for (let i = idx + 1; i < size; i++) {\n\t\t\t\t\t\tconst current = sorted[i];\n\t\t\t\t\t\tif (current && !current[2] && (selectorSortPair && current[0] || selectorSortPair == null && current[0] == null) && current[1] === body) {\n\t\t\t\t\t\t\tif (selectorSortPair && current[0]) current[0].push(...selectorSortPair);\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst selectors = selectorSortPair ? uniq(selectorSortPair.sort((a, b) => a[1] - b[1] || a[0]?.localeCompare(b[0] || \"\") || 0).map((pair) => pair[0]).filter(Boolean)) : [];\n\t\t\t\t\treturn selectors.length ? `${selectors.join(`,${nl}`)}{${body}}` : body;\n\t\t\t\t}).filter(Boolean);\n\t\t\t\tconst rules = Array.from(new Set(ruleLines)).reverse().join(nl);\n\t\t\t\tif (!parent) return rules;\n\t\t\t\tconst parents = parent.split(\" $$ \");\n\t\t\t\treturn `${parents.join(\"{\")}{${nl}${rules}${nl}${\"}\".repeat(parents.length)}`;\n\t\t\t}).filter(Boolean).join(nl);\n\t\t\tif (preflights) css = [preflightsMap[layer], css].filter(Boolean).join(nl);\n\t\t\tlet alias;\n\t\t\tif (outputCssLayers && css) {\n\t\t\t\talias = getLayerAlias(layer);\n\t\t\t\tif (alias !== null) css = `@layer ${alias}{${nl}${css}${nl}}`;\n\t\t\t}\n\t\t\tconst layerMark = minify ? \"\" : `/* layer: ${layer}${alias && alias !== layer ? `, alias: ${alias}` : \"\"} */${nl}`;\n\t\t\treturn layerCache[layer] = css ? layerMark + css : \"\";\n\t\t};\n\t\tconst getLayers = (includes = layers, excludes) => {\n\t\t\tconst layers$1 = includes.filter((i) => !excludes?.includes(i));\n\t\t\tconst css = layers$1.map(getLayer).filter(Boolean);\n\t\t\tif (outputCssLayers) {\n\t\t\t\tlet layerNames = layers$1;\n\t\t\t\tif (typeof outputCssLayers === \"object\" && outputCssLayers.allLayers) layerNames = sortLayers(Object.keys(this.config.layers));\n\t\t\t\tif (layerNames.length > 0) css.unshift(`@layer ${layerNames.map(getLayerAlias).filter(notNull).join(\", \")};`);\n\t\t\t}\n\t\t\treturn css.join(nl);\n\t\t};\n\t\tconst setLayer = async (layer, callback) => {\n\t\t\tconst content = await callback(getLayer(layer));\n\t\t\tlayerCache[layer] = content;\n\t\t\treturn content;\n\t\t};\n\t\treturn {\n\t\t\tget css() {\n\t\t\t\treturn getLayers();\n\t\t\t},\n\t\t\tlayers,\n\t\t\tmatched,\n\t\t\tgetLayers,\n\t\t\tgetLayer,\n\t\t\tsetLayer\n\t\t};\n\t}\n\tasync matchVariants(raw, current) {\n\t\tconst context = {\n\t\t\trawSelector: raw,\n\t\t\ttheme: this.config.theme,\n\t\t\tgenerator: this\n\t\t};\n\t\tconst match = async (result) => {\n\t\t\tlet applied = true;\n\t\t\tconst [, , handlers, variants] = result;\n\t\t\twhile (applied) {\n\t\t\t\tapplied = false;\n\t\t\t\tconst processed = result[1];\n\t\t\t\tfor (const v of this.config.variants) {\n\t\t\t\t\tif (!v.multiPass && variants.has(v)) continue;\n\t\t\t\t\tlet handler = await v.match(processed, context);\n\t\t\t\t\tif (!handler) continue;\n\t\t\t\t\tif (isString(handler)) {\n\t\t\t\t\t\tif (handler === processed) continue;\n\t\t\t\t\t\thandler = { matcher: handler };\n\t\t\t\t\t}\n\t\t\t\t\tif (Array.isArray(handler)) {\n\t\t\t\t\t\tif (!handler.length) continue;\n\t\t\t\t\t\tif (handler.length === 1) handler = handler[0];\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (v.multiPass) throw new Error(\"multiPass can not be used together with array return variants\");\n\t\t\t\t\t\t\tconst clones = handler.map((h) => {\n\t\t\t\t\t\t\t\tconst _processed = h.matcher ?? processed;\n\t\t\t\t\t\t\t\tconst _handlers = [h, ...handlers];\n\t\t\t\t\t\t\t\tconst _variants = new Set(variants);\n\t\t\t\t\t\t\t\t_variants.add(v);\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\tresult[0],\n\t\t\t\t\t\t\t\t\t_processed,\n\t\t\t\t\t\t\t\t\t_handlers,\n\t\t\t\t\t\t\t\t\t_variants\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn (await Promise.all(clones.map((c) => match(c)))).flat();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tresult[1] = handler.matcher ?? processed;\n\t\t\t\t\thandlers.unshift(handler);\n\t\t\t\t\tvariants.add(v);\n\t\t\t\t\tapplied = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!applied) break;\n\t\t\t\tif (handlers.length > 500) throw new Error(`Too many variants applied to \"${raw}\"`);\n\t\t\t}\n\t\t\treturn [result];\n\t\t};\n\t\treturn await match([\n\t\t\traw,\n\t\t\tcurrent || raw,\n\t\t\t[],\n\t\t\t/* @__PURE__ */ new Set()\n\t\t]);\n\t}\n\tapplyVariants(parsed, variantHandlers = parsed[4], raw = parsed[1]) {\n\t\tconst variantContextResult = variantHandlers.slice().sort((a, b) => (a.order || 0) - (b.order || 0)).reduceRight((previous, v) => (input) => {\n\t\t\tconst entries = v.body?.(input.entries) || input.entries;\n\t\t\tconst parents = Array.isArray(v.parent) ? v.parent : [v.parent, void 0];\n\t\t\tconst selector = v.selector?.(input.selector, entries);\n\t\t\treturn (v.handle ?? defaultVariantHandler)({\n\t\t\t\t...input,\n\t\t\t\tentries,\n\t\t\t\tselector: selector || input.selector,\n\t\t\t\tparent: parents[0] || input.parent,\n\t\t\t\tparentOrder: parents[1] || input.parentOrder,\n\t\t\t\tlayer: v.layer || input.layer,\n\t\t\t\tsort: v.sort || input.sort\n\t\t\t}, previous);\n\t\t}, (input) => input)({\n\t\t\tprefix: \"\",\n\t\t\tselector: toEscapedSelector(raw),\n\t\t\tpseudo: \"\",\n\t\t\tentries: parsed[2]\n\t\t});\n\t\tconst { parent, parentOrder } = variantContextResult;\n\t\tif (parent != null && parentOrder != null) this.parentOrders.set(parent, parentOrder);\n\t\tconst obj = {\n\t\t\tselector: [\n\t\t\t\tvariantContextResult.prefix,\n\t\t\t\tvariantContextResult.selector,\n\t\t\t\tvariantContextResult.pseudo\n\t\t\t].join(\"\"),\n\t\t\tentries: variantContextResult.entries,\n\t\t\tparent,\n\t\t\tlayer: variantContextResult.layer,\n\t\t\tsort: variantContextResult.sort,\n\t\t\tnoMerge: variantContextResult.noMerge\n\t\t};\n\t\treturn this.config.postprocess.reduce((utilities, p) => {\n\t\t\tconst result = [];\n\t\t\tfor (const util of utilities) {\n\t\t\t\tconst processed = p(util);\n\t\t\t\tif (Array.isArray(processed)) result.push(...processed.filter(notNull));\n\t\t\t\telse result.push(processed || util);\n\t\t\t}\n\t\t\treturn result;\n\t\t}, [obj]);\n\t}\n\tconstructCustomCSS(context, body, overrideSelector) {\n\t\tconst normalizedBody = normalizeCSSEntries(body);\n\t\tif (isString(normalizedBody)) return normalizedBody;\n\t\treturn this.applyVariants([\n\t\t\t0,\n\t\t\toverrideSelector || context.rawSelector,\n\t\t\tnormalizedBody,\n\t\t\tvoid 0,\n\t\t\tcontext.variantHandlers\n\t\t]).map(({ selector, entries, parent }) => {\n\t\t\tconst cssBody = `${selector}{${entriesToCss(entries)}}`;\n\t\t\tif (parent) return `${parent}{${cssBody}}`;\n\t\t\treturn cssBody;\n\t\t}).join(\"\");\n\t}\n\tasync parseUtil(input, context, internal = false, shortcutPrefix) {\n\t\tconst variantResults = isString(input) ? await this.matchVariants(input) : [input];\n\t\tconst parse = async ([raw, processed, variantHandlers]) => {\n\t\t\tif (this.config.details) context.rules = context.rules ?? [];\n\t\t\tconst scopeContext = {\n\t\t\t\t...context,\n\t\t\t\tvariantHandlers\n\t\t\t};\n\t\t\tconst staticMatch = this.config.rulesStaticMap[processed];\n\t\t\tif (staticMatch) {\n\t\t\t\tif (staticMatch[1] && (internal || !staticMatch[2]?.internal)) return this.resolveCSSResult(raw, staticMatch[1], staticMatch, scopeContext);\n\t\t\t}\n\t\t\tfor (const rule of this.config.rulesDynamic) {\n\t\t\t\tconst [matcher, handler, meta] = rule;\n\t\t\t\tif (meta?.internal && !internal) continue;\n\t\t\t\tlet unprefixed = processed;\n\t\t\t\tif (meta?.prefix) {\n\t\t\t\t\tconst prefixes = toArray(meta.prefix);\n\t\t\t\t\tif (shortcutPrefix) {\n\t\t\t\t\t\tconst shortcutPrefixes = toArray(shortcutPrefix);\n\t\t\t\t\t\tif (!prefixes.some((i) => shortcutPrefixes.includes(i))) continue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst prefix = prefixes.find((i) => processed.startsWith(i));\n\t\t\t\t\t\tif (prefix == null) continue;\n\t\t\t\t\t\tunprefixed = processed.slice(prefix.length);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst match = unprefixed.match(matcher);\n\t\t\t\tif (!match) continue;\n\t\t\t\tlet result = await handler(match, scopeContext);\n\t\t\t\tif (!result) continue;\n\t\t\t\tif (typeof result !== \"string\") {\n\t\t\t\t\tif (Symbol.asyncIterator in result) {\n\t\t\t\t\t\tconst entries = [];\n\t\t\t\t\t\tfor await (const r of result) if (r) entries.push(r);\n\t\t\t\t\t\tresult = entries;\n\t\t\t\t\t} else if (Symbol.iterator in result && !Array.isArray(result)) result = Array.from(result).filter(notNull);\n\t\t\t\t}\n\t\t\t\tconst resolvedResult = this.resolveCSSResult(raw, result, rule, scopeContext);\n\t\t\t\tif (resolvedResult) return resolvedResult;\n\t\t\t}\n\t\t};\n\t\tconst parsed = (await Promise.all(variantResults.map((i) => parse(i)))).flat().filter((x) => !!x);\n\t\tif (!parsed.length) return void 0;\n\t\treturn parsed;\n\t}\n\tstringifyUtil(parsed, context) {\n\t\tif (!parsed) return;\n\t\tif (isRawUtil(parsed)) return [[\n\t\t\tparsed[0],\n\t\t\tvoid 0,\n\t\t\tparsed[1],\n\t\t\tvoid 0,\n\t\t\tparsed[2],\n\t\t\tthis.config.details ? context : void 0,\n\t\t\tvoid 0\n\t\t]];\n\t\tconst utilities = this.applyVariants(parsed);\n\t\tconst result = [];\n\t\tfor (const util of utilities) {\n\t\t\tconst { selector, entries, parent, layer: variantLayer, sort: variantSort, noMerge } = util;\n\t\t\tconst body = entriesToCss(entries);\n\t\t\tif (!body) continue;\n\t\t\tconst { layer: metaLayer, sort: metaSort, ...meta } = parsed[3] ?? {};\n\t\t\tconst ruleMeta = {\n\t\t\t\t...meta,\n\t\t\t\tlayer: variantLayer ?? metaLayer,\n\t\t\t\tsort: variantSort ?? metaSort\n\t\t\t};\n\t\t\tresult.push([\n\t\t\t\tparsed[0],\n\t\t\t\tselector,\n\t\t\t\tbody,\n\t\t\t\tparent,\n\t\t\t\truleMeta,\n\t\t\t\tthis.config.details ? context : void 0,\n\t\t\t\tnoMerge\n\t\t\t]);\n\t\t}\n\t\treturn result;\n\t}\n\tasync expandShortcut(input, context, depth = 5) {\n\t\tif (depth === 0) return;\n\t\tconst recordShortcut = this.config.details ? (s) => {\n\t\t\tcontext.shortcuts = context.shortcuts ?? [];\n\t\t\tcontext.shortcuts.push(s);\n\t\t} : noop;\n\t\tlet meta;\n\t\tlet result;\n\t\tlet stringResult;\n\t\tlet inlineResult;\n\t\tfor (const s of this.config.shortcuts) {\n\t\t\tlet unprefixed = input;\n\t\t\tif (s[2]?.prefix) {\n\t\t\t\tconst prefix = toArray(s[2].prefix).find((i) => input.startsWith(i));\n\t\t\t\tif (prefix == null) continue;\n\t\t\t\tunprefixed = input.slice(prefix.length);\n\t\t\t}\n\t\t\tif (isStaticShortcut(s)) {\n\t\t\t\tif (s[0] === unprefixed) {\n\t\t\t\t\tmeta = meta || s[2];\n\t\t\t\t\tresult = s[1];\n\t\t\t\t\trecordShortcut(s);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst match = unprefixed.match(s[0]);\n\t\t\t\tif (match) result = s[1](match, context);\n\t\t\t\tif (result) {\n\t\t\t\t\tmeta = meta || s[2];\n\t\t\t\t\trecordShortcut(s);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (result) {\n\t\t\tstringResult = uniq(toArray(result).filter(isString).map((s) => expandVariantGroup(s.trim()).split(/\\s+/g)).flat());\n\t\t\tinlineResult = toArray(result).filter((i) => !isString(i)).map((i) => ({\n\t\t\t\thandles: [],\n\t\t\t\tvalue: i\n\t\t\t}));\n\t\t}\n\t\tif (!result) {\n\t\t\tconst matched = isString(input) ? await this.matchVariants(input) : [input];\n\t\t\tfor (const match of matched) {\n\t\t\t\tconst [raw, inputWithoutVariant, handles] = match;\n\t\t\t\tif (raw !== inputWithoutVariant) {\n\t\t\t\t\tconst expanded = await this.expandShortcut(inputWithoutVariant, context, depth - 1);\n\t\t\t\t\tif (expanded) {\n\t\t\t\t\t\tstringResult = expanded[0].filter(isString).map((item) => raw.replace(inputWithoutVariant, item));\n\t\t\t\t\t\tinlineResult = expanded[0].filter((i) => !isString(i)).map((item) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\thandles: [...item.handles, ...handles],\n\t\t\t\t\t\t\t\tvalue: item.value\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!stringResult?.length && !inlineResult?.length) return;\n\t\treturn [[await Promise.all(toArray(stringResult).map(async (s) => (await this.expandShortcut(s, context, depth - 1))?.[0] || [s])), inlineResult].flat(2).filter((x) => !!x), meta];\n\t}\n\tasync stringifyShortcuts(parent, context, expanded, meta = { layer: this.config.shortcutsLayer }) {\n\t\tconst layerMap = new BetterMap();\n\t\tconst parsed = (await Promise.all(uniq(expanded).map(async (i) => {\n\t\t\tconst result = isString(i) ? await this.parseUtil(i, context, true, meta.prefix) : [[\n\t\t\t\tNumber.POSITIVE_INFINITY,\n\t\t\t\t\"{inline}\",\n\t\t\t\tnormalizeCSSEntries(i.value),\n\t\t\t\tvoid 0,\n\t\t\t\ti.handles\n\t\t\t]];\n\t\t\tif (!result && this.config.warn) warnOnce(`unmatched utility \"${i}\" in shortcut \"${parent[1]}\"`);\n\t\t\treturn result || [];\n\t\t}))).flat(1).filter(Boolean).sort((a, b) => a[0] - b[0]);\n\t\tconst [raw, , parentVariants] = parent;\n\t\tconst rawStringifiedUtil = [];\n\t\tfor (const item of parsed) {\n\t\t\tif (isRawUtil(item)) {\n\t\t\t\trawStringifiedUtil.push([\n\t\t\t\t\titem[0],\n\t\t\t\t\tvoid 0,\n\t\t\t\t\titem[1],\n\t\t\t\t\tvoid 0,\n\t\t\t\t\titem[2],\n\t\t\t\t\tcontext,\n\t\t\t\t\tvoid 0\n\t\t\t\t]);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isNoMerge = Object.fromEntries(item[2])[symbols.shortcutsNoMerge];\n\t\t\tconst variants = [...item[4], ...!isNoMerge ? parentVariants : []];\n\t\t\tfor (const { selector, entries, parent: parent$1, sort, noMerge, layer } of this.applyVariants(item, variants, raw)) layerMap.getFallback(layer ?? meta.layer, new TwoKeyMap()).getFallback(selector, parent$1, [[], item[0]])[0].push([\n\t\t\t\tentries,\n\t\t\t\t!!(noMerge ?? item[3]?.noMerge),\n\t\t\t\tsort ?? 0\n\t\t\t]);\n\t\t}\n\t\treturn rawStringifiedUtil.concat(layerMap.flatMap((selectorMap, layer) => selectorMap.map(([e$1, index], selector, joinedParents) => {\n\t\t\tconst stringify = (flatten, noMerge, entrySortPair) => {\n\t\t\t\tconst maxSort = Math.max(...entrySortPair.map((e$2) => e$2[1]));\n\t\t\t\tconst entriesList = entrySortPair.map((e$2) => e$2[0]);\n\t\t\t\treturn (flatten ? [entriesList.flat(1)] : entriesList).map((entries) => {\n\t\t\t\t\tconst body = entriesToCss(entries);\n\t\t\t\t\tif (body) return [\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tselector,\n\t\t\t\t\t\tbody,\n\t\t\t\t\t\tjoinedParents,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...meta,\n\t\t\t\t\t\t\tnoMerge,\n\t\t\t\t\t\t\tsort: maxSort,\n\t\t\t\t\t\t\tlayer\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tvoid 0\n\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t};\n\t\t\treturn [[e$1.filter(([, noMerge]) => noMerge).map(([entries, , sort]) => [entries, sort]), true], [e$1.filter(([, noMerge]) => !noMerge).map(([entries, , sort]) => [entries, sort]), false]].map(([e$2, noMerge]) => [...stringify(false, noMerge, e$2.filter(([entries]) => entries.some((entry) => entry[0] === symbols.shortcutsNoMerge))), ...stringify(true, noMerge, e$2.filter(([entries]) => entries.every((entry) => entry[0] !== symbols.shortcutsNoMerge)))]);\n\t\t}).flat(2).filter(Boolean)));\n\t}\n\tisBlocked(raw) {\n\t\treturn !raw || this.config.blocklist.map((e$1) => Array.isArray(e$1) ? e$1[0] : e$1).some((e$1) => typeof e$1 === \"function\" ? e$1(raw) : isString(e$1) ? e$1 === raw : e$1.test(raw));\n\t}\n\tgetBlocked(raw) {\n\t\tconst rule = this.config.blocklist.find((e$1) => {\n\t\t\tconst v = Array.isArray(e$1) ? e$1[0] : e$1;\n\t\t\treturn typeof v === \"function\" ? v(raw) : isString(v) ? v === raw : v.test(raw);\n\t\t});\n\t\treturn rule ? Array.isArray(rule) ? rule : [rule, void 0] : void 0;\n\t}\n};\nvar UnoGenerator = class extends UnoGeneratorInternal {\n\t/**\n\t* @deprecated `new UnoGenerator` is deprecated, please use `createGenerator()` instead\n\t*/\n\tconstructor(userConfig = {}, defaults = {}) {\n\t\tsuper(userConfig, defaults);\n\t\tconsole.warn(\"`new UnoGenerator()` is deprecated, please use `createGenerator()` instead\");\n\t}\n};\nasync function createGenerator(config, defaults) {\n\treturn await UnoGeneratorInternal.create(config, defaults);\n}\nconst regexScopePlaceholder = /\\s\\$\\$\\s+/g;\nfunction hasScopePlaceholder(css) {\n\treturn regexScopePlaceholder.test(css);\n}\nfunction applyScope(css, scope) {\n\tif (hasScopePlaceholder(css)) return css.replace(regexScopePlaceholder, scope ? ` ${scope} ` : \" \");\n\telse return scope ? `${scope} ${css}` : css;\n}\nconst attributifyRe = /^\\[(.+?)(~?=)\"(.*)\"\\]$/;\nfunction toEscapedSelector(raw) {\n\tif (attributifyRe.test(raw)) return raw.replace(attributifyRe, (_, n, s, i) => `[${e(n)}${s}\"${e(i)}\"]`);\n\treturn `.${e(raw)}`;\n}\nfunction defaultVariantHandler(input, next) {\n\treturn next(input);\n}\n\n//#endregion\nexport { BetterMap, CountableSet, DEFAULT_LAYERS, LAYER_DEFAULT, LAYER_IMPORTS, LAYER_PREFLIGHTS, LAYER_SHORTCUTS, TwoKeyMap, UnoGenerator, VirtualKey, attributifyRE, clearIdenticalEntries, clone, collapseVariantGroup, createGenerator, createNanoEvents, cssIdRE, defaultSplitRE, definePreset, e, entriesToCss, escapeRegExp, escapeSelector, expandVariantGroup, extractorSplit as extractorDefault, extractorSplit, hasScopePlaceholder, isAttributifySelector, isCountableSet, isObject, isRawUtil, isStaticRule, isStaticShortcut, isString, isValidSelector, makeRegexClassGroup, mergeConfigs, mergeDeep, noop, normalizeCSSEntries, normalizeCSSValues, normalizeVariant, notNull, parseVariantGroup, regexScopePlaceholder, resolveConfig, resolvePreset, resolvePresets, resolveShortcuts, splitWithVariantGroupRE, symbols, toArray, toEscapedSelector, uniq, uniqueBy, validateFilterRE, warnOnce, withLayer };", "import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader, relative: number): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n const shouldNegate = value & 1;\n value >>>= 1;\n\n if (shouldNegate) {\n value = -0x80000000 | -value;\n }\n\n return relative + value;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number, relative: number): number {\n let delta = num - relative;\n\n delta = delta < 0 ? (-delta << 1) | 1 : delta << 1;\n do {\n let clamped = delta & 0b011111;\n delta >>>= 5;\n if (delta > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (delta > 0);\n\n return num;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n", "const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n declare private buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n", "import { StringReader, StringWriter } from './strings';\nimport { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix<A, B, O> = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line = decodeInteger(reader, line);\n const column = decodeInteger(reader, 0);\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeInteger(reader, 0);\n const fields = decodeInteger(reader, 0);\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName ? [line, column, 0, 0, kind, decodeInteger(reader, 0)] : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeInteger(reader, 0);\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n state[0] = encodeInteger(writer, startLine, state[0]);\n encodeInteger(writer, startColumn, 0);\n encodeInteger(writer, kind, 0);\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, fields, 0);\n if (scope.length === 6) encodeInteger(writer, scope[5], 0);\n\n for (const v of vars) {\n encodeInteger(writer, v, 0);\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n state[0] = encodeInteger(writer, endLine, state[0]);\n encodeInteger(writer, endColumn, 0);\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn = decodeInteger(reader, genColumn);\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeInteger(reader, 0);\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = decodeInteger(reader, definitionSourcesIndex);\n definitionScopeIndex = decodeInteger(\n reader,\n definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0,\n );\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex = decodeInteger(reader, callsiteSourcesIndex);\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = decodeInteger(reader, sameSource ? callsiteLine : 0);\n callsiteColumn = decodeInteger(\n reader,\n sameSource && prevLine === callsiteLine ? callsiteColumn : 0,\n );\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeInteger(reader, 0);\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeInteger(reader, 0)]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine = decodeInteger(reader, bindingLine);\n bindingColumn = decodeInteger(reader, bindingLine === prevBl ? bindingColumn : 0);\n const expression = decodeInteger(reader, 0);\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n state[1] = encodeInteger(writer, range[1], state[1]);\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, fields, 0);\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n state[2] = encodeInteger(writer, sourcesIndex, state[2]);\n state[3] = encodeInteger(writer, scopesIndex, state[3]);\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n state[4] = encodeInteger(writer, sourcesIndex, state[4]);\n state[5] = encodeInteger(writer, callLine, state[5]);\n state[6] = encodeInteger(writer, callColumn, state[6]);\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, -binding.length, 0);\n const expression = binding[0][0];\n encodeInteger(writer, expression, 0);\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n bindingStartLine = encodeInteger(writer, expRange[1]!, bindingStartLine);\n bindingStartColumn = encodeInteger(writer, expRange[2]!, bindingStartColumn);\n encodeInteger(writer, expRange[0]!, 0);\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n state[1] = encodeInteger(writer, endColumn, state[1]);\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n", "import { comma, decodeInteger, encodeInteger, hasMoreVlq, semicolon } from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn = decodeInteger(reader, genColumn);\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex = decodeInteger(reader, sourcesIndex);\n sourceLine = decodeInteger(reader, sourceLine);\n sourceColumn = decodeInteger(reader, sourceColumn);\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex = decodeInteger(reader, namesIndex);\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n genColumn = encodeInteger(writer, segment[0], genColumn);\n\n if (segment.length === 1) continue;\n sourcesIndex = encodeInteger(writer, segment[1], sourcesIndex);\n sourceLine = encodeInteger(writer, segment[2], sourceLine);\n sourceColumn = encodeInteger(writer, segment[3], sourceColumn);\n\n if (segment.length === 4) continue;\n namesIndex = encodeInteger(writer, segment[4], namesIndex);\n }\n }\n\n return writer.flush();\n}\n", "export default class BitSet {\n\tconstructor(arg) {\n\t\tthis.bits = arg instanceof BitSet ? arg.bits.slice() : [];\n\t}\n\n\tadd(n) {\n\t\tthis.bits[n >> 5] |= 1 << (n & 31);\n\t}\n\n\thas(n) {\n\t\treturn !!(this.bits[n >> 5] & (1 << (n & 31)));\n\t}\n}\n", "export default class Chunk {\n\tconstructor(start, end, content) {\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.original = content;\n\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\n\t\tthis.content = content;\n\t\tthis.storeName = false;\n\t\tthis.edited = false;\n\n\t\tif (DEBUG) {\n\t\t\t// we make these non-enumerable, for sanity while debugging\n\t\t\tObject.defineProperties(this, {\n\t\t\t\tprevious: { writable: true, value: null },\n\t\t\t\tnext: { writable: true, value: null },\n\t\t\t});\n\t\t} else {\n\t\t\tthis.previous = null;\n\t\t\tthis.next = null;\n\t\t}\n\t}\n\n\tappendLeft(content) {\n\t\tthis.outro += content;\n\t}\n\n\tappendRight(content) {\n\t\tthis.intro = this.intro + content;\n\t}\n\n\tclone() {\n\t\tconst chunk = new Chunk(this.start, this.end, this.original);\n\n\t\tchunk.intro = this.intro;\n\t\tchunk.outro = this.outro;\n\t\tchunk.content = this.content;\n\t\tchunk.storeName = this.storeName;\n\t\tchunk.edited = this.edited;\n\n\t\treturn chunk;\n\t}\n\n\tcontains(index) {\n\t\treturn this.start < index && index < this.end;\n\t}\n\n\teachNext(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.next;\n\t\t}\n\t}\n\n\teachPrevious(fn) {\n\t\tlet chunk = this;\n\t\twhile (chunk) {\n\t\t\tfn(chunk);\n\t\t\tchunk = chunk.previous;\n\t\t}\n\t}\n\n\tedit(content, storeName, contentOnly) {\n\t\tthis.content = content;\n\t\tif (!contentOnly) {\n\t\t\tthis.intro = '';\n\t\t\tthis.outro = '';\n\t\t}\n\t\tthis.storeName = storeName;\n\n\t\tthis.edited = true;\n\n\t\treturn this;\n\t}\n\n\tprependLeft(content) {\n\t\tthis.outro = content + this.outro;\n\t}\n\n\tprependRight(content) {\n\t\tthis.intro = content + this.intro;\n\t}\n\n\treset() {\n\t\tthis.intro = '';\n\t\tthis.outro = '';\n\t\tif (this.edited) {\n\t\t\tthis.content = this.original;\n\t\t\tthis.storeName = false;\n\t\t\tthis.edited = false;\n\t\t}\n\t}\n\n\tsplit(index) {\n\t\tconst sliceIndex = index - this.start;\n\n\t\tconst originalBefore = this.original.slice(0, sliceIndex);\n\t\tconst originalAfter = this.original.slice(sliceIndex);\n\n\t\tthis.original = originalBefore;\n\n\t\tconst newChunk = new Chunk(index, this.end, originalAfter);\n\t\tnewChunk.outro = this.outro;\n\t\tthis.outro = '';\n\n\t\tthis.end = index;\n\n\t\tif (this.edited) {\n\t\t\t// after split we should save the edit content record into the correct chunk\n\t\t\t// to make sure sourcemap correct\n\t\t\t// For example:\n\t\t\t// ' test'.trim()\n\t\t\t// split -> ' ' + 'test'\n\t\t\t// ✔️ edit -> '' + 'test'\n\t\t\t// ✖️ edit -> 'test' + ''\n\t\t\t// TODO is this block necessary?...\n\t\t\tnewChunk.edit('', false);\n\t\t\tthis.content = '';\n\t\t} else {\n\t\t\tthis.content = originalBefore;\n\t\t}\n\n\t\tnewChunk.next = this.next;\n\t\tif (newChunk.next) newChunk.next.previous = newChunk;\n\t\tnewChunk.previous = this;\n\t\tthis.next = newChunk;\n\n\t\treturn newChunk;\n\t}\n\n\ttoString() {\n\t\treturn this.intro + this.content + this.outro;\n\t}\n\n\ttrimEnd(rx) {\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tthis.split(this.start + trimmed.length).edit('', undefined, true);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tthis.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\tif (this.intro.length) return true;\n\t\t}\n\t}\n\n\ttrimStart(rx) {\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tconst trimmed = this.content.replace(rx, '');\n\n\t\tif (trimmed.length) {\n\t\t\tif (trimmed !== this.content) {\n\t\t\t\tconst newChunk = this.split(this.end - trimmed.length);\n\t\t\t\tif (this.edited) {\n\t\t\t\t\t// save the change, if it has been edited\n\t\t\t\t\tnewChunk.edit(trimmed, this.storeName, true);\n\t\t\t\t}\n\t\t\t\tthis.edit('', undefined, true);\n\t\t\t}\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.edit('', undefined, true);\n\n\t\t\tthis.outro = this.outro.replace(rx, '');\n\t\t\tif (this.outro.length) return true;\n\t\t}\n\t}\n}\n", "import { encode } from '@jridgewell/sourcemap-codec';\n\nfunction getBtoa() {\n\tif (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {\n\t\treturn (str) => globalThis.btoa(unescape(encodeURIComponent(str)));\n\t} else if (typeof Buffer === 'function') {\n\t\treturn (str) => Buffer.from(str, 'utf-8').toString('base64');\n\t} else {\n\t\treturn () => {\n\t\t\tthrow new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n\t\t};\n\t}\n}\n\nconst btoa = /*#__PURE__*/ getBtoa();\n\nexport default class SourceMap {\n\tconstructor(properties) {\n\t\tthis.version = 3;\n\t\tthis.file = properties.file;\n\t\tthis.sources = properties.sources;\n\t\tthis.sourcesContent = properties.sourcesContent;\n\t\tthis.names = properties.names;\n\t\tthis.mappings = encode(properties.mappings);\n\t\tif (typeof properties.x_google_ignoreList !== 'undefined') {\n\t\t\tthis.x_google_ignoreList = properties.x_google_ignoreList;\n\t\t}\n\t\tif (typeof properties.debugId !== 'undefined') {\n\t\t\tthis.debugId = properties.debugId;\n\t\t}\n\t}\n\n\ttoString() {\n\t\treturn JSON.stringify(this);\n\t}\n\n\ttoUrl() {\n\t\treturn 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n\t}\n}\n", "export default function guessIndent(code) {\n\tconst lines = code.split('\\n');\n\n\tconst tabbed = lines.filter((line) => /^\\t+/.test(line));\n\tconst spaced = lines.filter((line) => /^ {2,}/.test(line));\n\n\tif (tabbed.length === 0 && spaced.length === 0) {\n\t\treturn null;\n\t}\n\n\t// More lines tabbed than spaced? Assume tabs, and\n\t// default to tabs in the case of a tie (or nothing\n\t// to go on)\n\tif (tabbed.length >= spaced.length) {\n\t\treturn '\\t';\n\t}\n\n\t// Otherwise, we need to guess the multiple\n\tconst min = spaced.reduce((previous, current) => {\n\t\tconst numSpaces = /^ +/.exec(current)[0].length;\n\t\treturn Math.min(numSpaces, previous);\n\t}, Infinity);\n\n\treturn new Array(min + 1).join(' ');\n}\n", "export default function getRelativePath(from, to) {\n\tconst fromParts = from.split(/[/\\\\]/);\n\tconst toParts = to.split(/[/\\\\]/);\n\n\tfromParts.pop(); // get dirname\n\n\twhile (fromParts[0] === toParts[0]) {\n\t\tfromParts.shift();\n\t\ttoParts.shift();\n\t}\n\n\tif (fromParts.length) {\n\t\tlet i = fromParts.length;\n\t\twhile (i--) fromParts[i] = '..';\n\t}\n\n\treturn fromParts.concat(toParts).join('/');\n}\n", "const toString = Object.prototype.toString;\n\nexport default function isObject(thing) {\n\treturn toString.call(thing) === '[object Object]';\n}\n", "export default function getLocator(source) {\n\tconst originalLines = source.split('\\n');\n\tconst lineOffsets = [];\n\n\tfor (let i = 0, pos = 0; i < originalLines.length; i++) {\n\t\tlineOffsets.push(pos);\n\t\tpos += originalLines[i].length + 1;\n\t}\n\n\treturn function locate(index) {\n\t\tlet i = 0;\n\t\tlet j = lineOffsets.length;\n\t\twhile (i < j) {\n\t\t\tconst m = (i + j) >> 1;\n\t\t\tif (index < lineOffsets[m]) {\n\t\t\t\tj = m;\n\t\t\t} else {\n\t\t\t\ti = m + 1;\n\t\t\t}\n\t\t}\n\t\tconst line = i - 1;\n\t\tconst column = index - lineOffsets[line];\n\t\treturn { line, column };\n\t};\n}\n", "const wordRegex = /\\w/;\n\nexport default class Mappings {\n\tconstructor(hires) {\n\t\tthis.hires = hires;\n\t\tthis.generatedCodeLine = 0;\n\t\tthis.generatedCodeColumn = 0;\n\t\tthis.raw = [];\n\t\tthis.rawSegments = this.raw[this.generatedCodeLine] = [];\n\t\tthis.pending = null;\n\t}\n\n\taddEdit(sourceIndex, content, loc, nameIndex) {\n\t\tif (content.length) {\n\t\t\tconst contentLengthMinusOne = content.length - 1;\n\t\t\tlet contentLineEnd = content.indexOf('\\n', 0);\n\t\t\tlet previousContentLineEnd = -1;\n\t\t\t// Loop through each line in the content and add a segment, but stop if the last line is empty,\n\t\t\t// else code afterwards would fill one line too many\n\t\t\twhile (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {\n\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\t\tif (nameIndex >= 0) {\n\t\t\t\t\tsegment.push(nameIndex);\n\t\t\t\t}\n\t\t\t\tthis.rawSegments.push(segment);\n\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\n\t\t\t\tpreviousContentLineEnd = contentLineEnd;\n\t\t\t\tcontentLineEnd = content.indexOf('\\n', contentLineEnd + 1);\n\t\t\t}\n\n\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\t\t\tif (nameIndex >= 0) {\n\t\t\t\tsegment.push(nameIndex);\n\t\t\t}\n\t\t\tthis.rawSegments.push(segment);\n\n\t\t\tthis.advance(content.slice(previousContentLineEnd + 1));\n\t\t} else if (this.pending) {\n\t\t\tthis.rawSegments.push(this.pending);\n\t\t\tthis.advance(content);\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\taddUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n\t\tlet originalCharIndex = chunk.start;\n\t\tlet first = true;\n\t\t// when iterating each char, check if it's in a word boundary\n\t\tlet charInHiresBoundary = false;\n\n\t\twhile (originalCharIndex < chunk.end) {\n\t\t\tif (original[originalCharIndex] === '\\n') {\n\t\t\t\tloc.line += 1;\n\t\t\t\tloc.column = 0;\n\t\t\t\tthis.generatedCodeLine += 1;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t\tthis.generatedCodeColumn = 0;\n\t\t\t\tfirst = true;\n\t\t\t\tcharInHiresBoundary = false;\n\t\t\t} else {\n\t\t\t\tif (this.hires || first || sourcemapLocations.has(originalCharIndex)) {\n\t\t\t\t\tconst segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n\t\t\t\t\tif (this.hires === 'boundary') {\n\t\t\t\t\t\t// in hires \"boundary\", group segments per word boundary than per char\n\t\t\t\t\t\tif (wordRegex.test(original[originalCharIndex])) {\n\t\t\t\t\t\t\t// for first char in the boundary found, start the boundary by pushing a segment\n\t\t\t\t\t\t\tif (!charInHiresBoundary) {\n\t\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\t\tcharInHiresBoundary = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// for non-word char, end the boundary by pushing a segment\n\t\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t\t\tcharInHiresBoundary = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.rawSegments.push(segment);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tloc.column += 1;\n\t\t\t\tthis.generatedCodeColumn += 1;\n\t\t\t\tfirst = false;\n\t\t\t}\n\n\t\t\toriginalCharIndex += 1;\n\t\t}\n\n\t\tthis.pending = null;\n\t}\n\n\tadvance(str) {\n\t\tif (!str) return;\n\n\t\tconst lines = str.split('\\n');\n\n\t\tif (lines.length > 1) {\n\t\t\tfor (let i = 0; i < lines.length - 1; i++) {\n\t\t\t\tthis.generatedCodeLine++;\n\t\t\t\tthis.raw[this.generatedCodeLine] = this.rawSegments = [];\n\t\t\t}\n\t\t\tthis.generatedCodeColumn = 0;\n\t\t}\n\n\t\tthis.generatedCodeColumn += lines[lines.length - 1].length;\n\t}\n}\n", "import BitSet from './BitSet.js';\nimport Chunk from './Chunk.js';\nimport SourceMap from './SourceMap.js';\nimport guessIndent from './utils/guessIndent.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\nimport Stats from './utils/Stats.js';\n\nconst n = '\\n';\n\nconst warned = {\n\tinsertLeft: false,\n\tinsertRight: false,\n\tstoreName: false,\n};\n\nexport default class MagicString {\n\tconstructor(string, options = {}) {\n\t\tconst chunk = new Chunk(0, string.length, string);\n\n\t\tObject.defineProperties(this, {\n\t\t\toriginal: { writable: true, value: string },\n\t\t\toutro: { writable: true, value: '' },\n\t\t\tintro: { writable: true, value: '' },\n\t\t\tfirstChunk: { writable: true, value: chunk },\n\t\t\tlastChunk: { writable: true, value: chunk },\n\t\t\tlastSearchedChunk: { writable: true, value: chunk },\n\t\t\tbyStart: { writable: true, value: {} },\n\t\t\tbyEnd: { writable: true, value: {} },\n\t\t\tfilename: { writable: true, value: options.filename },\n\t\t\tindentExclusionRanges: { writable: true, value: options.indentExclusionRanges },\n\t\t\tsourcemapLocations: { writable: true, value: new BitSet() },\n\t\t\tstoredNames: { writable: true, value: {} },\n\t\t\tindentStr: { writable: true, value: undefined },\n\t\t\tignoreList: { writable: true, value: options.ignoreList },\n\t\t\toffset: { writable: true, value: options.offset || 0 },\n\t\t});\n\n\t\tif (DEBUG) {\n\t\t\tObject.defineProperty(this, 'stats', { value: new Stats() });\n\t\t}\n\n\t\tthis.byStart[0] = chunk;\n\t\tthis.byEnd[string.length] = chunk;\n\t}\n\n\taddSourcemapLocation(char) {\n\t\tthis.sourcemapLocations.add(char);\n\t}\n\n\tappend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.outro += content;\n\t\treturn this;\n\t}\n\n\tappendLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendLeft');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendLeft(content);\n\t\t} else {\n\t\t\tthis.intro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendLeft');\n\t\treturn this;\n\t}\n\n\tappendRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('appendRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.appendRight(content);\n\t\t} else {\n\t\t\tthis.outro += content;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('appendRight');\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });\n\n\t\tlet originalChunk = this.firstChunk;\n\t\tlet clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());\n\n\t\twhile (originalChunk) {\n\t\t\tcloned.byStart[clonedChunk.start] = clonedChunk;\n\t\t\tcloned.byEnd[clonedChunk.end] = clonedChunk;\n\n\t\t\tconst nextOriginalChunk = originalChunk.next;\n\t\t\tconst nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n\t\t\tif (nextClonedChunk) {\n\t\t\t\tclonedChunk.next = nextClonedChunk;\n\t\t\t\tnextClonedChunk.previous = clonedChunk;\n\n\t\t\t\tclonedChunk = nextClonedChunk;\n\t\t\t}\n\n\t\t\toriginalChunk = nextOriginalChunk;\n\t\t}\n\n\t\tcloned.lastChunk = clonedChunk;\n\n\t\tif (this.indentExclusionRanges) {\n\t\t\tcloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n\t\t}\n\n\t\tcloned.sourcemapLocations = new BitSet(this.sourcemapLocations);\n\n\t\tcloned.intro = this.intro;\n\t\tcloned.outro = this.outro;\n\n\t\treturn cloned;\n\t}\n\n\tgenerateDecodedMap(options) {\n\t\toptions = options || {};\n\n\t\tconst sourceIndex = 0;\n\t\tconst names = Object.keys(this.storedNames);\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tconst locate = getLocator(this.original);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.firstChunk.eachNext((chunk) => {\n\t\t\tconst loc = locate(chunk.start);\n\n\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tmappings.addEdit(\n\t\t\t\t\tsourceIndex,\n\t\t\t\t\tchunk.content,\n\t\t\t\t\tloc,\n\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tmappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);\n\t\t\t}\n\n\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t});\n\n\t\tif (this.outro) {\n\t\t\tmappings.advance(this.outro);\n\t\t}\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: [\n\t\t\t\toptions.source ? getRelativePath(options.file || '', options.source) : options.file || '',\n\t\t\t],\n\t\t\tsourcesContent: options.includeContent ? [this.original] : undefined,\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\t_ensureindentStr() {\n\t\tif (this.indentStr === undefined) {\n\t\t\tthis.indentStr = guessIndent(this.original);\n\t\t}\n\t}\n\n\t_getRawIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr;\n\t}\n\n\tgetIndentString() {\n\t\tthis._ensureindentStr();\n\t\treturn this.indentStr === null ? '\\t' : this.indentStr;\n\t}\n\n\tindent(indentStr, options) {\n\t\tconst pattern = /^[^\\r\\n]/gm;\n\n\t\tif (isObject(indentStr)) {\n\t\t\toptions = indentStr;\n\t\t\tindentStr = undefined;\n\t\t}\n\n\t\tif (indentStr === undefined) {\n\t\t\tthis._ensureindentStr();\n\t\t\tindentStr = this.indentStr || '\\t';\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\toptions = options || {};\n\n\t\t// Process exclusion ranges\n\t\tconst isExcluded = {};\n\n\t\tif (options.exclude) {\n\t\t\tconst exclusions =\n\t\t\t\ttypeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n\t\t\texclusions.forEach((exclusion) => {\n\t\t\t\tfor (let i = exclusion[0]; i < exclusion[1]; i += 1) {\n\t\t\t\t\tisExcluded[i] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tlet shouldIndentNextCharacter = options.indentStart !== false;\n\t\tconst replacer = (match) => {\n\t\t\tif (shouldIndentNextCharacter) return `${indentStr}${match}`;\n\t\t\tshouldIndentNextCharacter = true;\n\t\t\treturn match;\n\t\t};\n\n\t\tthis.intro = this.intro.replace(pattern, replacer);\n\n\t\tlet charIndex = 0;\n\t\tlet chunk = this.firstChunk;\n\n\t\twhile (chunk) {\n\t\t\tconst end = chunk.end;\n\n\t\t\tif (chunk.edited) {\n\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\tchunk.content = chunk.content.replace(pattern, replacer);\n\n\t\t\t\t\tif (chunk.content.length) {\n\t\t\t\t\t\tshouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcharIndex = chunk.start;\n\n\t\t\t\twhile (charIndex < end) {\n\t\t\t\t\tif (!isExcluded[charIndex]) {\n\t\t\t\t\t\tconst char = this.original[charIndex];\n\n\t\t\t\t\t\tif (char === '\\n') {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = true;\n\t\t\t\t\t\t} else if (char !== '\\r' && shouldIndentNextCharacter) {\n\t\t\t\t\t\t\tshouldIndentNextCharacter = false;\n\n\t\t\t\t\t\t\tif (charIndex === chunk.start) {\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._splitChunk(chunk, charIndex);\n\t\t\t\t\t\t\t\tchunk = chunk.next;\n\t\t\t\t\t\t\t\tchunk.prependRight(indentStr);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcharIndex += 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcharIndex = chunk.end;\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tthis.outro = this.outro.replace(pattern, replacer);\n\n\t\treturn this;\n\t}\n\n\tinsert() {\n\t\tthrow new Error(\n\t\t\t'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',\n\t\t);\n\t}\n\n\tinsertLeft(index, content) {\n\t\tif (!warned.insertLeft) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',\n\t\t\t);\n\t\t\twarned.insertLeft = true;\n\t\t}\n\n\t\treturn this.appendLeft(index, content);\n\t}\n\n\tinsertRight(index, content) {\n\t\tif (!warned.insertRight) {\n\t\t\tconsole.warn(\n\t\t\t\t'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',\n\t\t\t);\n\t\t\twarned.insertRight = true;\n\t\t}\n\n\t\treturn this.prependRight(index, content);\n\t}\n\n\tmove(start, end, index) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\t\tindex = index + this.offset;\n\n\t\tif (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');\n\n\t\tif (DEBUG) this.stats.time('move');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\t\tthis._split(index);\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tconst oldLeft = first.previous;\n\t\tconst oldRight = last.next;\n\n\t\tconst newRight = this.byStart[index];\n\t\tif (!newRight && last === this.lastChunk) return this;\n\t\tconst newLeft = newRight ? newRight.previous : this.lastChunk;\n\n\t\tif (oldLeft) oldLeft.next = oldRight;\n\t\tif (oldRight) oldRight.previous = oldLeft;\n\n\t\tif (newLeft) newLeft.next = first;\n\t\tif (newRight) newRight.previous = last;\n\n\t\tif (!first.previous) this.firstChunk = last.next;\n\t\tif (!last.next) {\n\t\t\tthis.lastChunk = first.previous;\n\t\t\tthis.lastChunk.next = null;\n\t\t}\n\n\t\tfirst.previous = newLeft;\n\t\tlast.next = newRight || null;\n\n\t\tif (!newLeft) this.firstChunk = first;\n\t\tif (!newRight) this.lastChunk = last;\n\n\t\tif (DEBUG) this.stats.timeEnd('move');\n\t\treturn this;\n\t}\n\n\toverwrite(start, end, content, options) {\n\t\toptions = options || {};\n\t\treturn this.update(start, end, content, { ...options, overwrite: !options.contentOnly });\n\t}\n\n\tupdate(start, end, content, options) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('replacement content must be a string');\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (end > this.original.length) throw new Error('end is out of bounds');\n\t\tif (start === end)\n\t\t\tthrow new Error(\n\t\t\t\t'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',\n\t\t\t);\n\n\t\tif (DEBUG) this.stats.time('overwrite');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tif (options === true) {\n\t\t\tif (!warned.storeName) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',\n\t\t\t\t);\n\t\t\t\twarned.storeName = true;\n\t\t\t}\n\n\t\t\toptions = { storeName: true };\n\t\t}\n\t\tconst storeName = options !== undefined ? options.storeName : false;\n\t\tconst overwrite = options !== undefined ? options.overwrite : false;\n\n\t\tif (storeName) {\n\t\t\tconst original = this.original.slice(start, end);\n\t\t\tObject.defineProperty(this.storedNames, original, {\n\t\t\t\twritable: true,\n\t\t\t\tvalue: true,\n\t\t\t\tenumerable: true,\n\t\t\t});\n\t\t}\n\n\t\tconst first = this.byStart[start];\n\t\tconst last = this.byEnd[end];\n\n\t\tif (first) {\n\t\t\tlet chunk = first;\n\t\t\twhile (chunk !== last) {\n\t\t\t\tif (chunk.next !== this.byStart[chunk.end]) {\n\t\t\t\t\tthrow new Error('Cannot overwrite across a split point');\n\t\t\t\t}\n\t\t\t\tchunk = chunk.next;\n\t\t\t\tchunk.edit('', false);\n\t\t\t}\n\n\t\t\tfirst.edit(content, storeName, !overwrite);\n\t\t} else {\n\t\t\t// must be inserting at the end\n\t\t\tconst newChunk = new Chunk(start, end, '').edit(content, storeName);\n\n\t\t\t// TODO last chunk in the array may not be the last chunk, if it's moved...\n\t\t\tlast.next = newChunk;\n\t\t\tnewChunk.previous = last;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('overwrite');\n\t\treturn this;\n\t}\n\n\tprepend(content) {\n\t\tif (typeof content !== 'string') throw new TypeError('outro content must be a string');\n\n\t\tthis.intro = content + this.intro;\n\t\treturn this;\n\t}\n\n\tprependLeft(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byEnd[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependLeft(content);\n\t\t} else {\n\t\t\tthis.intro = content + this.intro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tprependRight(index, content) {\n\t\tindex = index + this.offset;\n\n\t\tif (typeof content !== 'string') throw new TypeError('inserted content must be a string');\n\n\t\tif (DEBUG) this.stats.time('insertRight');\n\n\t\tthis._split(index);\n\n\t\tconst chunk = this.byStart[index];\n\n\t\tif (chunk) {\n\t\t\tchunk.prependRight(content);\n\t\t} else {\n\t\t\tthis.outro = content + this.outro;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('insertRight');\n\t\treturn this;\n\t}\n\n\tremove(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('remove');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.intro = '';\n\t\t\tchunk.outro = '';\n\t\t\tchunk.edit('');\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('remove');\n\t\treturn this;\n\t}\n\n\treset(start, end) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tif (start === end) return this;\n\n\t\tif (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');\n\t\tif (start > end) throw new Error('end must be greater than start');\n\n\t\tif (DEBUG) this.stats.time('reset');\n\n\t\tthis._split(start);\n\t\tthis._split(end);\n\n\t\tlet chunk = this.byStart[start];\n\n\t\twhile (chunk) {\n\t\t\tchunk.reset();\n\n\t\t\tchunk = end > chunk.end ? this.byStart[chunk.end] : null;\n\t\t}\n\n\t\tif (DEBUG) this.stats.timeEnd('reset');\n\t\treturn this;\n\t}\n\n\tlastChar() {\n\t\tif (this.outro.length) return this.outro[this.outro.length - 1];\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];\n\t\t\tif (chunk.content.length) return chunk.content[chunk.content.length - 1];\n\t\t\tif (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];\n\t\t} while ((chunk = chunk.previous));\n\t\tif (this.intro.length) return this.intro[this.intro.length - 1];\n\t\treturn '';\n\t}\n\n\tlastLine() {\n\t\tlet lineIndex = this.outro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.outro.substr(lineIndex + 1);\n\t\tlet lineStr = this.outro;\n\t\tlet chunk = this.lastChunk;\n\t\tdo {\n\t\t\tif (chunk.outro.length > 0) {\n\t\t\t\tlineIndex = chunk.outro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.outro + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.content.length > 0) {\n\t\t\t\tlineIndex = chunk.content.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.content + lineStr;\n\t\t\t}\n\n\t\t\tif (chunk.intro.length > 0) {\n\t\t\t\tlineIndex = chunk.intro.lastIndexOf(n);\n\t\t\t\tif (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;\n\t\t\t\tlineStr = chunk.intro + lineStr;\n\t\t\t}\n\t\t} while ((chunk = chunk.previous));\n\t\tlineIndex = this.intro.lastIndexOf(n);\n\t\tif (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;\n\t\treturn this.intro + lineStr;\n\t}\n\n\tslice(start = 0, end = this.original.length - this.offset) {\n\t\tstart = start + this.offset;\n\t\tend = end + this.offset;\n\n\t\tif (this.original.length !== 0) {\n\t\t\twhile (start < 0) start += this.original.length;\n\t\t\twhile (end < 0) end += this.original.length;\n\t\t}\n\n\t\tlet result = '';\n\n\t\t// find start chunk\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk && (chunk.start > start || chunk.end <= start)) {\n\t\t\t// found end chunk before start\n\t\t\tif (chunk.start < end && chunk.end >= end) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\tif (chunk && chunk.edited && chunk.start !== start)\n\t\t\tthrow new Error(`Cannot use replaced character ${start} as slice start anchor.`);\n\n\t\tconst startChunk = chunk;\n\t\twhile (chunk) {\n\t\t\tif (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n\t\t\t\tresult += chunk.intro;\n\t\t\t}\n\n\t\t\tconst containsEnd = chunk.start < end && chunk.end >= end;\n\t\t\tif (containsEnd && chunk.edited && chunk.end !== end)\n\t\t\t\tthrow new Error(`Cannot use replaced character ${end} as slice end anchor.`);\n\n\t\t\tconst sliceStart = startChunk === chunk ? start - chunk.start : 0;\n\t\t\tconst sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n\n\t\t\tresult += chunk.content.slice(sliceStart, sliceEnd);\n\n\t\t\tif (chunk.outro && (!containsEnd || chunk.end === end)) {\n\t\t\t\tresult += chunk.outro;\n\t\t\t}\n\n\t\t\tif (containsEnd) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// TODO deprecate this? not really very useful\n\tsnip(start, end) {\n\t\tconst clone = this.clone();\n\t\tclone.remove(0, start);\n\t\tclone.remove(end, clone.original.length);\n\n\t\treturn clone;\n\t}\n\n\t_split(index) {\n\t\tif (this.byStart[index] || this.byEnd[index]) return;\n\n\t\tif (DEBUG) this.stats.time('_split');\n\n\t\tlet chunk = this.lastSearchedChunk;\n\t\tlet previousChunk = chunk;\n\t\tconst searchForward = index > chunk.end;\n\n\t\twhile (chunk) {\n\t\t\tif (chunk.contains(index)) return this._splitChunk(chunk, index);\n\n\t\t\tchunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n\n\t\t\t// Prevent infinite loop (e.g. via empty chunks, where start === end)\n\t\t\tif (chunk === previousChunk) return;\n\n\t\t\tpreviousChunk = chunk;\n\t\t}\n\t}\n\n\t_splitChunk(chunk, index) {\n\t\tif (chunk.edited && chunk.content.length) {\n\t\t\t// zero-length edited chunks are a special case (overlapping replacements)\n\t\t\tconst loc = getLocator(this.original)(index);\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – \"${chunk.original}\")`,\n\t\t\t);\n\t\t}\n\n\t\tconst newChunk = chunk.split(index);\n\n\t\tthis.byEnd[index] = chunk;\n\t\tthis.byStart[index] = newChunk;\n\t\tthis.byEnd[newChunk.end] = newChunk;\n\n\t\tif (chunk === this.lastChunk) this.lastChunk = newChunk;\n\n\t\tthis.lastSearchedChunk = chunk;\n\t\tif (DEBUG) this.stats.timeEnd('_split');\n\t\treturn true;\n\t}\n\n\ttoString() {\n\t\tlet str = this.intro;\n\n\t\tlet chunk = this.firstChunk;\n\t\twhile (chunk) {\n\t\t\tstr += chunk.toString();\n\t\t\tchunk = chunk.next;\n\t\t}\n\n\t\treturn str + this.outro;\n\t}\n\n\tisEmpty() {\n\t\tlet chunk = this.firstChunk;\n\t\tdo {\n\t\t\tif (\n\t\t\t\t(chunk.intro.length && chunk.intro.trim()) ||\n\t\t\t\t(chunk.content.length && chunk.content.trim()) ||\n\t\t\t\t(chunk.outro.length && chunk.outro.trim())\n\t\t\t)\n\t\t\t\treturn false;\n\t\t} while ((chunk = chunk.next));\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\tlet chunk = this.firstChunk;\n\t\tlet length = 0;\n\t\tdo {\n\t\t\tlength += chunk.intro.length + chunk.content.length + chunk.outro.length;\n\t\t} while ((chunk = chunk.next));\n\t\treturn length;\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimEndAborted(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tthis.outro = this.outro.replace(rx, '');\n\t\tif (this.outro.length) return true;\n\n\t\tlet chunk = this.lastChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimEnd(rx);\n\n\t\t\t// if chunk was trimmed, we have a new lastChunk\n\t\t\tif (chunk.end !== end) {\n\t\t\t\tif (this.lastChunk === chunk) {\n\t\t\t\t\tthis.lastChunk = chunk.next;\n\t\t\t\t}\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.previous;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimEnd(charType) {\n\t\tthis.trimEndAborted(charType);\n\t\treturn this;\n\t}\n\ttrimStartAborted(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\n\t\tthis.intro = this.intro.replace(rx, '');\n\t\tif (this.intro.length) return true;\n\n\t\tlet chunk = this.firstChunk;\n\n\t\tdo {\n\t\t\tconst end = chunk.end;\n\t\t\tconst aborted = chunk.trimStart(rx);\n\n\t\t\tif (chunk.end !== end) {\n\t\t\t\t// special case...\n\t\t\t\tif (chunk === this.lastChunk) this.lastChunk = chunk.next;\n\n\t\t\t\tthis.byEnd[chunk.end] = chunk;\n\t\t\t\tthis.byStart[chunk.next.start] = chunk.next;\n\t\t\t\tthis.byEnd[chunk.next.end] = chunk.next;\n\t\t\t}\n\n\t\t\tif (aborted) return true;\n\t\t\tchunk = chunk.next;\n\t\t} while (chunk);\n\n\t\treturn false;\n\t}\n\n\ttrimStart(charType) {\n\t\tthis.trimStartAborted(charType);\n\t\treturn this;\n\t}\n\n\thasChanged() {\n\t\treturn this.original !== this.toString();\n\t}\n\n\t_replaceRegexp(searchValue, replacement) {\n\t\tfunction getReplacement(match, str) {\n\t\t\tif (typeof replacement === 'string') {\n\t\t\t\treturn replacement.replace(/\\$(\\$|&|\\d+)/g, (_, i) => {\n\t\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter\n\t\t\t\t\tif (i === '$') return '$';\n\t\t\t\t\tif (i === '&') return match[0];\n\t\t\t\t\tconst num = +i;\n\t\t\t\t\tif (num < match.length) return match[+i];\n\t\t\t\t\treturn `$${i}`;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn replacement(...match, match.index, str, match.groups);\n\t\t\t}\n\t\t}\n\t\tfunction matchAll(re, str) {\n\t\t\tlet match;\n\t\t\tconst matches = [];\n\t\t\twhile ((match = re.exec(str))) {\n\t\t\t\tmatches.push(match);\n\t\t\t}\n\t\t\treturn matches;\n\t\t}\n\t\tif (searchValue.global) {\n\t\t\tconst matches = matchAll(searchValue, this.original);\n\t\t\tmatches.forEach((match) => {\n\t\t\t\tif (match.index != null) {\n\t\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst match = this.original.match(searchValue);\n\t\t\tif (match && match.index != null) {\n\t\t\t\tconst replacement = getReplacement(match, this.original);\n\t\t\t\tif (replacement !== match[0]) {\n\t\t\t\t\tthis.overwrite(match.index, match.index + match[0].length, replacement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t_replaceString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst index = original.indexOf(string);\n\n\t\tif (index !== -1) {\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\treplacement = replacement(string, index, original);\n\t\t\t}\n\t\t\tif (string !== replacement) {\n\t\t\t\tthis.overwrite(index, index + string.length, replacement);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplace(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceString(searchValue, replacement);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n\n\t_replaceAllString(string, replacement) {\n\t\tconst { original } = this;\n\t\tconst stringLength = string.length;\n\t\tfor (\n\t\t\tlet index = original.indexOf(string);\n\t\t\tindex !== -1;\n\t\t\tindex = original.indexOf(string, index + stringLength)\n\t\t) {\n\t\t\tconst previous = original.slice(index, index + stringLength);\n\t\t\tlet _replacement = replacement;\n\t\t\tif (typeof replacement === 'function') {\n\t\t\t\t_replacement = replacement(previous, index, original);\n\t\t\t}\n\t\t\tif (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\treplaceAll(searchValue, replacement) {\n\t\tif (typeof searchValue === 'string') {\n\t\t\treturn this._replaceAllString(searchValue, replacement);\n\t\t}\n\n\t\tif (!searchValue.global) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'MagicString.prototype.replaceAll called with a non-global RegExp argument',\n\t\t\t);\n\t\t}\n\n\t\treturn this._replaceRegexp(searchValue, replacement);\n\t}\n}\n", "import MagicString from './MagicString.js';\nimport SourceMap from './SourceMap.js';\nimport getRelativePath from './utils/getRelativePath.js';\nimport isObject from './utils/isObject.js';\nimport getLocator from './utils/getLocator.js';\nimport Mappings from './utils/Mappings.js';\n\nconst hasOwnProp = Object.prototype.hasOwnProperty;\n\nexport default class Bundle {\n\tconstructor(options = {}) {\n\t\tthis.intro = options.intro || '';\n\t\tthis.separator = options.separator !== undefined ? options.separator : '\\n';\n\t\tthis.sources = [];\n\t\tthis.uniqueSources = [];\n\t\tthis.uniqueSourceIndexByFilename = {};\n\t}\n\n\taddSource(source) {\n\t\tif (source instanceof MagicString) {\n\t\t\treturn this.addSource({\n\t\t\t\tcontent: source,\n\t\t\t\tfilename: source.filename,\n\t\t\t\tseparator: this.separator,\n\t\t\t});\n\t\t}\n\n\t\tif (!isObject(source) || !source.content) {\n\t\t\tthrow new Error(\n\t\t\t\t'bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`',\n\t\t\t);\n\t\t}\n\n\t\t['filename', 'ignoreList', 'indentExclusionRanges', 'separator'].forEach((option) => {\n\t\t\tif (!hasOwnProp.call(source, option)) source[option] = source.content[option];\n\t\t});\n\n\t\tif (source.separator === undefined) {\n\t\t\t// TODO there's a bunch of this sort of thing, needs cleaning up\n\t\t\tsource.separator = this.separator;\n\t\t}\n\n\t\tif (source.filename) {\n\t\t\tif (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n\t\t\t\tthis.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n\t\t\t\tthis.uniqueSources.push({ filename: source.filename, content: source.content.original });\n\t\t\t} else {\n\t\t\t\tconst uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\t\t\t\tif (source.content.original !== uniqueSource.content) {\n\t\t\t\t\tthrow new Error(`Illegal source: same filename (${source.filename}), different contents`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.sources.push(source);\n\t\treturn this;\n\t}\n\n\tappend(str, options) {\n\t\tthis.addSource({\n\t\t\tcontent: new MagicString(str),\n\t\t\tseparator: (options && options.separator) || '',\n\t\t});\n\n\t\treturn this;\n\t}\n\n\tclone() {\n\t\tconst bundle = new Bundle({\n\t\t\tintro: this.intro,\n\t\t\tseparator: this.separator,\n\t\t});\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tbundle.addSource({\n\t\t\t\tfilename: source.filename,\n\t\t\t\tcontent: source.content.clone(),\n\t\t\t\tseparator: source.separator,\n\t\t\t});\n\t\t});\n\n\t\treturn bundle;\n\t}\n\n\tgenerateDecodedMap(options = {}) {\n\t\tconst names = [];\n\t\tlet x_google_ignoreList = undefined;\n\t\tthis.sources.forEach((source) => {\n\t\t\tObject.keys(source.content.storedNames).forEach((name) => {\n\t\t\t\tif (!~names.indexOf(name)) names.push(name);\n\t\t\t});\n\t\t});\n\n\t\tconst mappings = new Mappings(options.hires);\n\n\t\tif (this.intro) {\n\t\t\tmappings.advance(this.intro);\n\t\t}\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tif (i > 0) {\n\t\t\t\tmappings.advance(this.separator);\n\t\t\t}\n\n\t\t\tconst sourceIndex = source.filename ? this.uniqueSourceIndexByFilename[source.filename] : -1;\n\t\t\tconst magicString = source.content;\n\t\t\tconst locate = getLocator(magicString.original);\n\n\t\t\tif (magicString.intro) {\n\t\t\t\tmappings.advance(magicString.intro);\n\t\t\t}\n\n\t\t\tmagicString.firstChunk.eachNext((chunk) => {\n\t\t\t\tconst loc = locate(chunk.start);\n\n\t\t\t\tif (chunk.intro.length) mappings.advance(chunk.intro);\n\n\t\t\t\tif (source.filename) {\n\t\t\t\t\tif (chunk.edited) {\n\t\t\t\t\t\tmappings.addEdit(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk.content,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tchunk.storeName ? names.indexOf(chunk.original) : -1,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmappings.addUneditedChunk(\n\t\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\t\tchunk,\n\t\t\t\t\t\t\tmagicString.original,\n\t\t\t\t\t\t\tloc,\n\t\t\t\t\t\t\tmagicString.sourcemapLocations,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tmappings.advance(chunk.content);\n\t\t\t\t}\n\n\t\t\t\tif (chunk.outro.length) mappings.advance(chunk.outro);\n\t\t\t});\n\n\t\t\tif (magicString.outro) {\n\t\t\t\tmappings.advance(magicString.outro);\n\t\t\t}\n\n\t\t\tif (source.ignoreList && sourceIndex !== -1) {\n\t\t\t\tif (x_google_ignoreList === undefined) {\n\t\t\t\t\tx_google_ignoreList = [];\n\t\t\t\t}\n\t\t\t\tx_google_ignoreList.push(sourceIndex);\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tfile: options.file ? options.file.split(/[/\\\\]/).pop() : undefined,\n\t\t\tsources: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.file ? getRelativePath(options.file, source.filename) : source.filename;\n\t\t\t}),\n\t\t\tsourcesContent: this.uniqueSources.map((source) => {\n\t\t\t\treturn options.includeContent ? source.content : null;\n\t\t\t}),\n\t\t\tnames,\n\t\t\tmappings: mappings.raw,\n\t\t\tx_google_ignoreList,\n\t\t};\n\t}\n\n\tgenerateMap(options) {\n\t\treturn new SourceMap(this.generateDecodedMap(options));\n\t}\n\n\tgetIndentString() {\n\t\tconst indentStringCounts = {};\n\n\t\tthis.sources.forEach((source) => {\n\t\t\tconst indentStr = source.content._getRawIndentString();\n\n\t\t\tif (indentStr === null) return;\n\n\t\t\tif (!indentStringCounts[indentStr]) indentStringCounts[indentStr] = 0;\n\t\t\tindentStringCounts[indentStr] += 1;\n\t\t});\n\n\t\treturn (\n\t\t\tObject.keys(indentStringCounts).sort((a, b) => {\n\t\t\t\treturn indentStringCounts[a] - indentStringCounts[b];\n\t\t\t})[0] || '\\t'\n\t\t);\n\t}\n\n\tindent(indentStr) {\n\t\tif (!arguments.length) {\n\t\t\tindentStr = this.getIndentString();\n\t\t}\n\n\t\tif (indentStr === '') return this; // noop\n\n\t\tlet trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n\n\t\tthis.sources.forEach((source, i) => {\n\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\tconst indentStart = trailingNewline || (i > 0 && /\\r?\\n$/.test(separator));\n\n\t\t\tsource.content.indent(indentStr, {\n\t\t\t\texclude: source.indentExclusionRanges,\n\t\t\t\tindentStart, //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\t\t\t});\n\n\t\t\ttrailingNewline = source.content.lastChar() === '\\n';\n\t\t});\n\n\t\tif (this.intro) {\n\t\t\tthis.intro =\n\t\t\t\tindentStr +\n\t\t\t\tthis.intro.replace(/^[^\\n]/gm, (match, index) => {\n\t\t\t\t\treturn index > 0 ? indentStr + match : match;\n\t\t\t\t});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprepend(str) {\n\t\tthis.intro = str + this.intro;\n\t\treturn this;\n\t}\n\n\ttoString() {\n\t\tconst body = this.sources\n\t\t\t.map((source, i) => {\n\t\t\t\tconst separator = source.separator !== undefined ? source.separator : this.separator;\n\t\t\t\tconst str = (i > 0 ? separator : '') + source.content.toString();\n\n\t\t\t\treturn str;\n\t\t\t})\n\t\t\t.join('');\n\n\t\treturn this.intro + body;\n\t}\n\n\tisEmpty() {\n\t\tif (this.intro.length && this.intro.trim()) return false;\n\t\tif (this.sources.some((source) => !source.content.isEmpty())) return false;\n\t\treturn true;\n\t}\n\n\tlength() {\n\t\treturn this.sources.reduce(\n\t\t\t(length, source) => length + source.content.length(),\n\t\t\tthis.intro.length,\n\t\t);\n\t}\n\n\ttrimLines() {\n\t\treturn this.trim('[\\\\r\\\\n]');\n\t}\n\n\ttrim(charType) {\n\t\treturn this.trimStart(charType).trimEnd(charType);\n\t}\n\n\ttrimStart(charType) {\n\t\tconst rx = new RegExp('^' + (charType || '\\\\s') + '+');\n\t\tthis.intro = this.intro.replace(rx, '');\n\n\t\tif (!this.intro) {\n\t\t\tlet source;\n\t\t\tlet i = 0;\n\n\t\t\tdo {\n\t\t\t\tsource = this.sources[i++];\n\t\t\t\tif (!source) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} while (!source.content.trimStartAborted(charType));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\ttrimEnd(charType) {\n\t\tconst rx = new RegExp((charType || '\\\\s') + '+$');\n\n\t\tlet source;\n\t\tlet i = this.sources.length - 1;\n\n\t\tdo {\n\t\t\tsource = this.sources[i--];\n\t\t\tif (!source) {\n\t\t\t\tthis.intro = this.intro.replace(rx, '');\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (!source.content.trimEndAborted(charType));\n\n\t\treturn this;\n\t}\n}\n", "import { escapeRegExp, escapeSelector, isString, toArray } from \"@unocss/core\";\nimport MagicString from \"magic-string\";\n\n//#region src/utilities.ts\nfunction getBracket(str, open, close) {\n\tif (str === \"\") return;\n\tconst l = str.length;\n\tlet parenthesis = 0;\n\tlet opened = false;\n\tlet openAt = 0;\n\tfor (let i = 0; i < l; i++) switch (str[i]) {\n\t\tcase open:\n\t\t\tif (!opened) {\n\t\t\t\topened = true;\n\t\t\t\topenAt = i;\n\t\t\t}\n\t\t\tparenthesis++;\n\t\t\tbreak;\n\t\tcase close:\n\t\t\t--parenthesis;\n\t\t\tif (parenthesis < 0) return;\n\t\t\tif (parenthesis === 0) return [\n\t\t\t\tstr.slice(openAt, i + 1),\n\t\t\t\tstr.slice(i + 1),\n\t\t\t\tstr.slice(0, openAt)\n\t\t\t];\n\t\t\tbreak;\n\t}\n}\nfunction getStringComponent(str, open, close, separators) {\n\tif (str === \"\") return;\n\tif (isString(separators)) separators = [separators];\n\tif (separators.length === 0) return;\n\tconst l = str.length;\n\tlet parenthesis = 0;\n\tfor (let i = 0; i < l; i++) switch (str[i]) {\n\t\tcase open:\n\t\t\tparenthesis++;\n\t\t\tbreak;\n\t\tcase close:\n\t\t\tif (--parenthesis < 0) return;\n\t\t\tbreak;\n\t\tdefault: for (const separator of separators) {\n\t\t\tconst separatorLength = separator.length;\n\t\t\tif (separatorLength && separator === str.slice(i, i + separatorLength) && parenthesis === 0) {\n\t\t\t\tif (i === 0 || i === l - separatorLength) return;\n\t\t\t\treturn [str.slice(0, i), str.slice(i + separatorLength)];\n\t\t\t}\n\t\t}\n\t}\n\treturn [str, \"\"];\n}\nfunction getStringComponents(str, separators, limit, open = \"(\", close = \")\") {\n\tlimit = limit ?? 10;\n\tconst components = [];\n\tlet i = 0;\n\twhile (str !== \"\") {\n\t\tif (++i > limit) return;\n\t\tconst componentPair = getStringComponent(str, open, close, separators);\n\t\tif (!componentPair) return;\n\t\tconst [component, rest] = componentPair;\n\t\tcomponents.push(component);\n\t\tstr = rest;\n\t}\n\tif (components.length > 0) return components;\n}\n\n//#endregion\n//#region src/colors.ts\nconst cssColorFunctions = [\n\t\"hsl\",\n\t\"hsla\",\n\t\"hwb\",\n\t\"lab\",\n\t\"lch\",\n\t\"oklab\",\n\t\"oklch\",\n\t\"rgb\",\n\t\"rgba\"\n];\nconst rectangularColorSpace = [\n\t\"srgb\",\n\t\"srgb-linear\",\n\t\"display-p3\",\n\t\"a98-rgb\",\n\t\"prophoto-rgb\",\n\t\"rec2020\",\n\t\"lab\",\n\t\"oklab\",\n\t\"xyz\",\n\t\"xyz-d50\",\n\t\"xyz-d65\"\n];\nconst polarColorSpace = [\n\t\"hsl\",\n\t\"hwb\",\n\t\"lch\",\n\t\"oklch\"\n];\nconst hueInterpolationMethods = [\n\t\"shorter\",\n\t\"longer\",\n\t\"increasing\",\n\t\"decreasing\"\n];\nconst alphaPlaceholders = [\"%alpha\", \"<alpha-value>\"];\nconst alphaPlaceholdersRE = new RegExp(alphaPlaceholders.map((v) => escapeRegExp(v)).join(\"|\"), \"g\");\nfunction isInterpolatedMethod(type) {\n\tif (!type) return false;\n\treturn rectangularColorSpace.some((space) => type.includes(space)) || polarColorSpace.some((space) => type.includes(space)) || hueInterpolationMethods.some((method) => type.includes(method));\n}\nfunction hex2rgba(hex = \"\") {\n\tconst color = parseHexColor(hex);\n\tif (color != null) {\n\t\tconst { components, alpha } = color;\n\t\tif (alpha == null) return components;\n\t\treturn [...components, alpha];\n\t}\n}\nfunction parseCssColor(str = \"\") {\n\tconst color = parseColor(str);\n\tif (color == null || color === false) return;\n\tconst { type: casedType, components, alpha } = color;\n\tconst type = casedType.toLowerCase();\n\tif (components.length === 0) return;\n\tif (cssColorFunctions.includes(type) && ![1, 3].includes(components.length)) return;\n\treturn {\n\t\ttype,\n\t\tcomponents: components.map((c) => typeof c === \"string\" ? c.trim() : c),\n\t\talpha: typeof alpha === \"string\" ? alpha.trim() : alpha\n\t};\n}\nfunction colorOpacityToString(color) {\n\tconst alpha = color.alpha ?? 1;\n\treturn typeof alpha === \"string\" && alphaPlaceholders.includes(alpha) ? 1 : alpha;\n}\nfunction colorToString(color, alphaOverride) {\n\tif (typeof color === \"string\") return color.replace(alphaPlaceholdersRE, `${alphaOverride ?? 1}`);\n\tconst { components } = color;\n\tlet { alpha, type } = color;\n\talpha = alphaOverride ?? alpha;\n\ttype = type.toLowerCase();\n\tif ([\"hsla\", \"rgba\"].includes(type)) return `${type}(${components.join(\", \")}${alpha == null ? \"\" : `, ${alpha}`})`;\n\talpha = alpha == null ? \"\" : ` / ${alpha}`;\n\tif (cssColorFunctions.includes(type)) return `${type}(${components.join(\" \")}${alpha})`;\n\treturn `color(${type} ${components.join(\" \")}${alpha})`;\n}\nfunction parseColor(str) {\n\tif (!str) return;\n\tlet color = parseHexColor(str);\n\tif (color != null) return color;\n\tcolor = cssColorKeyword(str);\n\tif (color != null) return color;\n\tcolor = parseCssCommaColorFunction(str);\n\tif (color != null) return color;\n\tcolor = parseCssSpaceColorFunction(str);\n\tif (color != null) return color;\n\tcolor = parseCssColorFunction(str);\n\tif (color != null) return color;\n}\nfunction parseHexColor(str) {\n\tconst [, body] = str.match(/^#([\\da-f]+)$/i) || [];\n\tif (!body) return;\n\tswitch (body.length) {\n\t\tcase 3:\n\t\tcase 4: {\n\t\t\tconst digits = Array.from(body, (s) => Number.parseInt(s, 16)).map((n) => n << 4 | n);\n\t\t\treturn {\n\t\t\t\ttype: \"rgb\",\n\t\t\t\tcomponents: digits.slice(0, 3),\n\t\t\t\talpha: body.length === 3 ? void 0 : Math.round(digits[3] / 255 * 100) / 100\n\t\t\t};\n\t\t}\n\t\tcase 6:\n\t\tcase 8: {\n\t\t\tconst value = Number.parseInt(body, 16);\n\t\t\treturn {\n\t\t\t\ttype: \"rgb\",\n\t\t\t\tcomponents: body.length === 6 ? [\n\t\t\t\t\tvalue >> 16 & 255,\n\t\t\t\t\tvalue >> 8 & 255,\n\t\t\t\t\tvalue & 255\n\t\t\t\t] : [\n\t\t\t\t\tvalue >> 24 & 255,\n\t\t\t\t\tvalue >> 16 & 255,\n\t\t\t\t\tvalue >> 8 & 255\n\t\t\t\t],\n\t\t\t\talpha: body.length === 6 ? void 0 : Math.round((value & 255) / 255 * 100) / 100\n\t\t\t};\n\t\t}\n\t}\n}\nfunction cssColorKeyword(str) {\n\tconst color = { rebeccapurple: [\n\t\t102,\n\t\t51,\n\t\t153,\n\t\t1\n\t] }[str];\n\tif (color != null) return {\n\t\ttype: \"rgb\",\n\t\tcomponents: color.slice(0, 3),\n\t\talpha: color[3]\n\t};\n}\nfunction parseCssCommaColorFunction(color) {\n\tconst match = color.match(/^(rgb|rgba|hsl|hsla)\\((.+)\\)$/i);\n\tif (!match) return;\n\tconst [, type, componentString] = match;\n\tconst components = getStringComponents(componentString, \",\", 5);\n\tif (components) {\n\t\tif ([3, 4].includes(components.length)) return {\n\t\t\ttype,\n\t\t\tcomponents: components.slice(0, 3),\n\t\t\talpha: components[3]\n\t\t};\n\t\telse if (components.length !== 1) return false;\n\t}\n}\nconst cssColorFunctionsRe = new RegExp(`^(${cssColorFunctions.join(\"|\")})\\\\((.+)\\\\)$`, \"i\");\nfunction parseCssSpaceColorFunction(color) {\n\tconst match = color.match(cssColorFunctionsRe);\n\tif (!match) return;\n\tconst [, fn, componentString] = match;\n\tconst parsed = parseCssSpaceColorValues(`${fn} ${componentString}`);\n\tif (parsed) {\n\t\tconst { alpha, components: [type, ...components] } = parsed;\n\t\treturn {\n\t\t\ttype,\n\t\t\tcomponents,\n\t\t\talpha\n\t\t};\n\t}\n}\nfunction parseCssColorFunction(color) {\n\tconst match = color.match(/^color\\((.+)\\)$/);\n\tif (!match) return;\n\tconst parsed = parseCssSpaceColorValues(match[1]);\n\tif (parsed) {\n\t\tconst { alpha, components: [type, ...components] } = parsed;\n\t\treturn {\n\t\t\ttype,\n\t\t\tcomponents,\n\t\t\talpha\n\t\t};\n\t}\n}\nfunction parseCssSpaceColorValues(componentString) {\n\tconst components = getStringComponents(componentString, \" \");\n\tif (!components) return;\n\tlet totalComponents = components.length;\n\tif (components[totalComponents - 2] === \"/\") return {\n\t\tcomponents: components.slice(0, totalComponents - 2),\n\t\talpha: components[totalComponents - 1]\n\t};\n\tif (components[totalComponents - 2] != null && (components[totalComponents - 2].endsWith(\"/\") || components[totalComponents - 1].startsWith(\"/\"))) {\n\t\tconst removed = components.splice(totalComponents - 2);\n\t\tcomponents.push(removed.join(\" \"));\n\t\t--totalComponents;\n\t}\n\tconst withAlpha = getStringComponents(components[totalComponents - 1], \"/\", 2);\n\tif (!withAlpha) return;\n\tif (withAlpha.length === 1 || withAlpha[withAlpha.length - 1] === \"\") return { components };\n\tconst alpha = withAlpha.pop();\n\tcomponents[totalComponents - 1] = withAlpha.join(\"/\");\n\treturn {\n\t\tcomponents,\n\t\talpha\n\t};\n}\n\n//#endregion\n//#region src/directive.ts\nconst themeFnRE = /theme\\(\\s*(['\"])?(.*?)\\1?\\s*\\)/g;\nfunction hasThemeFn(str) {\n\treturn str.includes(\"theme(\") && str.includes(\")\");\n}\nfunction transformThemeFn(code, theme, throwOnMissing = true) {\n\tconst matches = Array.from(code.toString().matchAll(themeFnRE));\n\tif (!matches.length) return code;\n\tconst s = new MagicString(code);\n\tfor (const match of matches) {\n\t\tconst rawArg = match[2];\n\t\tif (!rawArg) throw new Error(\"theme() expect exact one argument, but got 0\");\n\t\tconst value = transformThemeString(rawArg, theme, throwOnMissing);\n\t\tif (value) s.overwrite(match.index, match.index + match[0].length, value);\n\t}\n\treturn s.toString();\n}\nfunction transformThemeString(code, theme, throwOnMissing = true) {\n\tconst [rawKey, alpha] = code.split(\"/\");\n\tlet value = rawKey.trim().split(\".\").reduce((t, k) => t === null || t === void 0 ? void 0 : t[k], theme);\n\tif (typeof value === \"object\") value = value.DEFAULT;\n\tif (typeof value === \"string\") {\n\t\tif (alpha) {\n\t\t\tconst color = parseCssColor(value);\n\t\t\tif (color) value = colorToString(color, alpha);\n\t\t}\n\t\treturn value;\n\t} else if (throwOnMissing) throw new Error(`theme of \"${code}\" did not found`);\n}\nfunction calcMaxWidthBySize(size) {\n\tvar _size$match;\n\tconst value = ((_size$match = size.match(/^-?\\d+\\.?\\d*/)) === null || _size$match === void 0 ? void 0 : _size$match[0]) || \"\";\n\tconst unit = size.slice(value.length);\n\tif (unit === \"px\") {\n\t\tconst maxWidth = Number.parseFloat(value) - .1;\n\t\treturn Number.isNaN(maxWidth) ? size : `${maxWidth}${unit}`;\n\t}\n\treturn `calc(${size} - 0.1px)`;\n}\n\n//#endregion\n//#region src/handlers.ts\nfunction createValueHandler(handlers) {\n\tconst handler = function(str, theme) {\n\t\tvar _this$__options;\n\t\tconst s = ((_this$__options = this.__options) === null || _this$__options === void 0 ? void 0 : _this$__options.sequence) || [];\n\t\tthis.__options.sequence = [];\n\t\tfor (const n of s) {\n\t\t\tconst res = handlers[n](str, theme);\n\t\t\tif (res != null) return res;\n\t\t}\n\t};\n\tfunction addProcessor(that, name) {\n\t\tif (!that.__options) that.__options = { sequence: [] };\n\t\tthat.__options.sequence.push(name);\n\t\treturn that;\n\t}\n\tfor (const name of Object.keys(handlers)) Object.defineProperty(handler, name, {\n\t\tenumerable: true,\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn addProcessor(this, name);\n\t\t}\n\t});\n\treturn handler;\n}\n\n//#endregion\n//#region src/icon.ts\nconst iconFnRE = /icon\\(\\s*(['\"])?(.*?)\\1?\\s*\\)/g;\nfunction hasIconFn(str) {\n\treturn str.includes(\"icon(\") && str.includes(\")\");\n}\n\n//#endregion\n//#region src/pseudo.ts\nconst PseudoPlaceholder = \"__pseudo_placeholder__\";\n/**\n* Note: the order of following pseudo classes will affect the order of generated css.\n*\n* Reference: https://github.com/tailwindlabs/tailwindcss/blob/main/src/corePlugins.js#L83\n*/\nconst PseudoClasses = Object.fromEntries([\n\t[\"first-letter\", \"::first-letter\"],\n\t[\"first-line\", \"::first-line\"],\n\t\"any-link\",\n\t\"link\",\n\t\"visited\",\n\t\"target\",\n\t[\"open\", \"[open]\"],\n\t\"default\",\n\t\"checked\",\n\t\"indeterminate\",\n\t\"placeholder-shown\",\n\t\"autofill\",\n\t\"optional\",\n\t\"required\",\n\t\"valid\",\n\t\"invalid\",\n\t\"user-valid\",\n\t\"user-invalid\",\n\t\"in-range\",\n\t\"out-of-range\",\n\t\"read-only\",\n\t\"read-write\",\n\t\"empty\",\n\t\"focus-within\",\n\t\"hover\",\n\t\"focus\",\n\t\"focus-visible\",\n\t\"active\",\n\t\"enabled\",\n\t\"disabled\",\n\t\"popover-open\",\n\t\"root\",\n\t\"empty\",\n\t[\"even-of-type\", \":nth-of-type(even)\"],\n\t[\"even\", \":nth-child(even)\"],\n\t[\"odd-of-type\", \":nth-of-type(odd)\"],\n\t[\"odd\", \":nth-child(odd)\"],\n\t[\"nth\", `:nth-child(${PseudoPlaceholder})`],\n\t[\"nth-last\", `:nth-last-child(${PseudoPlaceholder})`],\n\t[\"nth-last-of-type\", `:nth-last-of-type(${PseudoPlaceholder})`],\n\t[\"nth-of-type\", `:nth-of-type(${PseudoPlaceholder})`],\n\t\"first-of-type\",\n\t[\"first\", \":first-child\"],\n\t\"last-of-type\",\n\t[\"last\", \":last-child\"],\n\t\"only-child\",\n\t\"only-of-type\",\n\t[\"backdrop-element\", \"::backdrop\"],\n\t[\"placeholder\", \"::placeholder\"],\n\t[\"before\", \"::before\"],\n\t[\"after\", \"::after\"],\n\t[\"file\", \"::file-selector-button\"]\n].map((key) => Array.isArray(key) ? key : [key, `:${key}`]));\nconst PseudoClassesKeys = Object.keys(PseudoClasses);\nconst PseudoClassesColon = Object.fromEntries([[\"backdrop\", \"::backdrop\"]].map((key) => Array.isArray(key) ? key : [key, `:${key}`]));\nconst PseudoClassesColonKeys = Object.keys(PseudoClassesColon);\nconst PseudoClassFunctions = [\n\t\"not\",\n\t\"is\",\n\t\"where\",\n\t\"has\"\n];\nconst PseudoClassesMulti = Object.fromEntries([[\"selection\", [\"::selection\", \" *::selection\"]], [\"marker\", [\"::marker\", \" *::marker\"]]]);\nconst PseudoClassesStr = Object.entries(PseudoClasses).filter(([, pseudo]) => !pseudo.startsWith(\"::\")).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassesColonStr = Object.entries(PseudoClassesColon).filter(([, pseudo]) => !pseudo.startsWith(\"::\")).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassFunctionsStr = PseudoClassFunctions.join(\"|\");\nconst PseudoClassesMultiStr = Object.keys(PseudoClassesMulti).sort((a, b) => b.length - a.length).join(\"|\");\nconst excludedPseudo = [\n\t\"::-webkit-resizer\",\n\t\"::-webkit-scrollbar\",\n\t\"::-webkit-scrollbar-button\",\n\t\"::-webkit-scrollbar-corner\",\n\t\"::-webkit-scrollbar-thumb\",\n\t\"::-webkit-scrollbar-track\",\n\t\"::-webkit-scrollbar-track-piece\",\n\t\"::file-selector-button\"\n];\nconst PseudoClassesAndElementsStr = Object.entries(PseudoClasses).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nconst PseudoClassesAndElementsColonStr = Object.entries(PseudoClassesColon).map(([key]) => key).sort((a, b) => b.length - a.length).join(\"|\");\nfunction createTaggedPseudoClassMatcher(tag, parent, combinator, utils) {\n\tconst { h, variantGetBracket: variantGetBracket$1 } = utils;\n\tconst rawRE = /* @__PURE__ */ new RegExp(`^(${escapeRegExp(parent)}:)(\\\\S+)${escapeRegExp(combinator)}\\\\1`);\n\tlet splitRE;\n\tlet pseudoRE;\n\tlet pseudoColonRE;\n\tlet pseudoVarRE;\n\tconst matchBracket = (input) => {\n\t\tvar _rest$split;\n\t\tconst body = variantGetBracket$1(`${tag}-`, input, []);\n\t\tif (!body) return;\n\t\tconst [match, rest] = body;\n\t\tconst bracketValue = h.bracket(match);\n\t\tif (bracketValue == null) return;\n\t\tconst label = ((_rest$split = rest.split(splitRE, 1)) === null || _rest$split === void 0 ? void 0 : _rest$split[0]) ?? \"\";\n\t\tconst prefix = `${parent}${escapeSelector(label)}`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(input.length - (rest.length - label.length - 1)),\n\t\t\tbracketValue.includes(\"&\") ? bracketValue.replace(/&/g, prefix) : `${prefix}${bracketValue}`\n\t\t];\n\t};\n\tconst matchPseudo = (input) => {\n\t\tconst match = input.match(pseudoRE) || input.match(pseudoColonRE);\n\t\tif (!match) return;\n\t\tconst [original, fn, pseudoKey] = match;\n\t\tconst label = match[3] ?? \"\";\n\t\tlet pseudo = PseudoClasses[pseudoKey] || PseudoClassesColon[pseudoKey] || `:${pseudoKey}`;\n\t\tif (fn) pseudo = `:${fn}(${pseudo})`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(original.length),\n\t\t\t`${parent}${escapeSelector(label)}${pseudo}`,\n\t\t\tpseudoKey\n\t\t];\n\t};\n\tconst matchPseudoVar = (input) => {\n\t\tconst match = input.match(pseudoVarRE);\n\t\tif (!match) return;\n\t\tconst [original, fn, pseudoValue] = match;\n\t\tconst label = match[3] ?? \"\";\n\t\tconst pseudo = `:${fn}(${pseudoValue})`;\n\t\treturn [\n\t\t\tlabel,\n\t\t\tinput.slice(original.length),\n\t\t\t`${parent}${escapeSelector(label)}${pseudo}`\n\t\t];\n\t};\n\treturn {\n\t\tname: `pseudo:${tag}`,\n\t\tmatch(input, ctx) {\n\t\t\tif (!(splitRE && pseudoRE && pseudoColonRE)) {\n\t\t\t\tsplitRE = /* @__PURE__ */ new RegExp(`(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tpseudoRE = /* @__PURE__ */ new RegExp(`^${tag}-(?:(?:(${PseudoClassFunctionsStr})-)?(${PseudoClassesStr}))(?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tpseudoColonRE = /* @__PURE__ */ new RegExp(`^${tag}-(?:(?:(${PseudoClassFunctionsStr})-)?(${PseudoClassesColonStr}))(?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t\tpseudoVarRE = /* @__PURE__ */ new RegExp(`^${tag}-(?:(${PseudoClassFunctionsStr})-)?\\\\[(.+)\\\\](?:(/[\\\\w-]+))?(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tif (!input.startsWith(tag)) return;\n\t\t\tconst result = matchBracket(input) || matchPseudo(input) || matchPseudoVar(input);\n\t\t\tif (!result) return;\n\t\t\tconst [_label, matcher, prefix, pseudoName = \"\"] = result;\n\t\t\treturn {\n\t\t\t\tmatcher,\n\t\t\t\thandle: (input$1, next) => next({\n\t\t\t\t\t...input$1,\n\t\t\t\t\tprefix: `${prefix}${combinator}${input$1.prefix}`.replace(rawRE, \"$1$2:\"),\n\t\t\t\t\tsort: PseudoClassesKeys.indexOf(pseudoName) ?? PseudoClassesColonKeys.indexOf(pseudoName)\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nfunction createPseudoClassesAndElements(utils) {\n\tconst { h } = utils;\n\tlet PseudoClassesAndElementsRE;\n\tlet PseudoClassesAndElementsColonRE;\n\tlet PseudoClassesMultiRE;\n\treturn [{\n\t\tname: \"pseudo\",\n\t\tmatch(input, ctx) {\n\t\t\tif (!(PseudoClassesAndElementsRE && PseudoClassesAndElementsColonRE)) {\n\t\t\t\tPseudoClassesAndElementsRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassesAndElementsStr})(?:-(\\\\d+|\\\\[(\\\\w|[+-.])+\\\\]))?(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tPseudoClassesAndElementsColonRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassesAndElementsColonStr})(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tconst match = input.match(PseudoClassesAndElementsRE) || input.match(PseudoClassesAndElementsColonRE);\n\t\t\tif (match) {\n\t\t\t\tlet pseudo = PseudoClasses[match[1]] || PseudoClassesColon[match[1]] || `:${match[1]}`;\n\t\t\t\tif (match[2]) {\n\t\t\t\t\tlet anPlusB;\n\t\t\t\t\tif (match[2].startsWith(\"[\") && match[2].endsWith(\"]\")) anPlusB = h.bracket(match[2]);\n\t\t\t\t\telse anPlusB = match[2];\n\t\t\t\t\tif (anPlusB) pseudo = pseudo.replace(PseudoPlaceholder, anPlusB);\n\t\t\t\t}\n\t\t\t\tlet index = PseudoClassesKeys.indexOf(match[1]);\n\t\t\t\tif (index === -1) index = PseudoClassesColonKeys.indexOf(match[1]);\n\t\t\t\tif (index === -1) index = void 0;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\thandle: (input$1, next) => {\n\t\t\t\t\t\tconst selectors = pseudo.includes(\"::\") && !excludedPseudo.includes(pseudo) ? { pseudo: `${input$1.pseudo}${pseudo}` } : { selector: `${input$1.selector}${pseudo}` };\n\t\t\t\t\t\treturn next({\n\t\t\t\t\t\t\t...input$1,\n\t\t\t\t\t\t\t...selectors,\n\t\t\t\t\t\t\tsort: index,\n\t\t\t\t\t\t\tnoMerge: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: `(${PseudoClassesAndElementsStr}|${PseudoClassesAndElementsColonStr}):`\n\t}, {\n\t\tname: \"pseudo:multi\",\n\t\tmatch(input, ctx) {\n\t\t\tif (!PseudoClassesMultiRE) PseudoClassesMultiRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassesMultiStr})(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(PseudoClassesMultiRE);\n\t\t\tif (match) return PseudoClassesMulti[match[1]].map((pseudo) => {\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\thandle: (input$1, next) => next({\n\t\t\t\t\t\t...input$1,\n\t\t\t\t\t\tpseudo: `${input$1.pseudo}${pseudo}`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\tmultiPass: false,\n\t\tautocomplete: `(${PseudoClassesMultiStr}):`\n\t}];\n}\nfunction createPseudoClassFunctions(utils) {\n\tconst { getBracket: getBracket$1, h } = utils;\n\tlet PseudoClassFunctionsRE;\n\tlet PseudoClassColonFunctionsRE;\n\tlet PseudoClassVarFunctionRE;\n\treturn {\n\t\tmatch(input, ctx) {\n\t\t\tif (!(PseudoClassFunctionsRE && PseudoClassColonFunctionsRE)) {\n\t\t\t\tPseudoClassFunctionsRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassFunctionsStr})-(${PseudoClassesStr})(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\t\tPseudoClassColonFunctionsRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassFunctionsStr})-(${PseudoClassesColonStr})(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t\tPseudoClassVarFunctionRE = /* @__PURE__ */ new RegExp(`^(${PseudoClassFunctionsStr})-(\\\\[.+\\\\])(?:${ctx.generator.config.separators.filter((x) => x !== \"-\").join(\"|\")})`);\n\t\t\t}\n\t\t\tconst match = input.match(PseudoClassFunctionsRE) || input.match(PseudoClassColonFunctionsRE) || input.match(PseudoClassVarFunctionRE);\n\t\t\tif (match) {\n\t\t\t\tconst fn = match[1];\n\t\t\t\tconst pseudo = getBracket$1(match[2], \"[\", \"]\") ? h.bracket(match[2]) : PseudoClasses[match[2]] || PseudoClassesColon[match[2]] || `:${match[2]}`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\t\tselector: (s) => `${s}:${fn}(${pseudo})`\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: `(${PseudoClassFunctionsStr})-(${PseudoClassesStr}|${PseudoClassesColonStr}):`\n\t};\n}\nfunction createTaggedPseudoClasses(options, utils) {\n\tconst attributify = !!(options === null || options === void 0 ? void 0 : options.attributifyPseudo);\n\tlet firstPrefix = (options === null || options === void 0 ? void 0 : options.prefix) ?? \"\";\n\tfirstPrefix = escapeSelector((Array.isArray(firstPrefix) ? firstPrefix : [firstPrefix]).filter(Boolean)[0] ?? \"\");\n\tconst tagWithPrefix = (tag, combinator) => createTaggedPseudoClassMatcher(tag, attributify ? `[${firstPrefix}${tag}=\"\"]` : `.${firstPrefix}${tag}`, combinator, utils);\n\treturn [\n\t\ttagWithPrefix(\"group\", \" \"),\n\t\ttagWithPrefix(\"peer\", \"~\"),\n\t\ttagWithPrefix(\"parent\", \">\"),\n\t\ttagWithPrefix(\"previous\", \"+\")\n\t];\n}\nconst PartClassesRE = /(part-\\[(.+)\\]:)(.+)/;\nfunction createPartClasses() {\n\treturn {\n\t\tmatch(input) {\n\t\t\tconst match = input.match(PartClassesRE);\n\t\t\tif (match) {\n\t\t\t\tconst part = `part(${match[2]})`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: input.slice(match[1].length),\n\t\t\t\t\tselector: (s) => `${s}::${part}`\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\n\n//#endregion\n//#region src/variants.ts\nfunction variantMatcher(name, handler, options = {}) {\n\tlet re;\n\treturn {\n\t\tname,\n\t\tmatch(input, ctx) {\n\t\t\tif (!re) re = /* @__PURE__ */ new RegExp(`^${escapeRegExp(name)}(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(re);\n\t\t\tif (match) {\n\t\t\t\tconst matcher = input.slice(match[0].length);\n\t\t\t\tconst handlers = toArray(handler).map((handler$1) => ({\n\t\t\t\t\tmatcher,\n\t\t\t\t\thandle: (input$1, next) => next({\n\t\t\t\t\t\t...input$1,\n\t\t\t\t\t\t...handler$1(input$1)\n\t\t\t\t\t}),\n\t\t\t\t\t...options\n\t\t\t\t}));\n\t\t\t\treturn handlers.length === 1 ? handlers[0] : handlers;\n\t\t\t}\n\t\t},\n\t\tautocomplete: `${name}:`\n\t};\n}\nfunction variantParentMatcher(name, parent) {\n\tlet re;\n\treturn {\n\t\tname,\n\t\tmatch(input, ctx) {\n\t\t\tif (!re) re = /* @__PURE__ */ new RegExp(`^${escapeRegExp(name)}(?:${ctx.generator.config.separators.join(\"|\")})`);\n\t\t\tconst match = input.match(re);\n\t\t\tif (match) return {\n\t\t\t\tmatcher: input.slice(match[0].length),\n\t\t\t\thandle: (input$1, next) => next({\n\t\t\t\t\t...input$1,\n\t\t\t\t\tparent: `${input$1.parent ? `${input$1.parent} $$ ` : \"\"}${parent}`\n\t\t\t\t})\n\t\t\t};\n\t\t},\n\t\tautocomplete: `${name}:`\n\t};\n}\nfunction variantGetBracket(prefix, matcher, separators) {\n\tif (matcher.startsWith(`${prefix}[`)) {\n\t\tconst [match, rest] = getBracket(matcher.slice(prefix.length), \"[\", \"]\") ?? [];\n\t\tif (match && rest) {\n\t\t\tfor (const separator of separators) if (rest.startsWith(separator)) return [\n\t\t\t\tmatch,\n\t\t\t\trest.slice(separator.length),\n\t\t\t\tseparator\n\t\t\t];\n\t\t\treturn [\n\t\t\t\tmatch,\n\t\t\t\trest,\n\t\t\t\t\"\"\n\t\t\t];\n\t\t}\n\t}\n}\nfunction variantGetParameter(prefix, matcher, separators) {\n\tfor (const p of toArray(prefix)) if (matcher.startsWith(p)) {\n\t\tconst body = variantGetBracket(p, matcher, separators);\n\t\tif (body) {\n\t\t\tconst [label = \"\", rest = body[1]] = variantGetParameter(\"/\", body[1], separators) ?? [];\n\t\t\treturn [\n\t\t\t\tbody[0],\n\t\t\t\trest,\n\t\t\t\tlabel\n\t\t\t];\n\t\t}\n\t\tfor (const separator of separators.filter((x) => x !== \"/\")) {\n\t\t\tconst pos = matcher.indexOf(separator, p.length);\n\t\t\tif (pos !== -1) {\n\t\t\t\tconst labelPos = matcher.indexOf(\"/\", p.length);\n\t\t\t\tconst unlabelled = labelPos === -1 || pos <= labelPos;\n\t\t\t\treturn [\n\t\t\t\t\tmatcher.slice(p.length, unlabelled ? pos : labelPos),\n\t\t\t\t\tmatcher.slice(pos + separator.length),\n\t\t\t\t\tunlabelled ? \"\" : matcher.slice(labelPos + 1, pos)\n\t\t\t\t];\n\t\t\t}\n\t\t}\n\t}\n}\n\n//#endregion\nexport { PseudoClassFunctions, PseudoClassFunctionsStr, PseudoClasses, PseudoClassesAndElementsColonStr, PseudoClassesAndElementsStr, PseudoClassesColon, PseudoClassesColonKeys, PseudoClassesColonStr, PseudoClassesKeys, PseudoClassesMulti, PseudoClassesMultiStr, PseudoClassesStr, alphaPlaceholders, alphaPlaceholdersRE, calcMaxWidthBySize, colorOpacityToString, colorToString, createPartClasses, createPseudoClassFunctions, createPseudoClassesAndElements, createTaggedPseudoClassMatcher, createTaggedPseudoClasses, createValueHandler, cssColorFunctions, excludedPseudo, getBracket, getStringComponent, getStringComponents, hasIconFn, hasThemeFn, hex2rgba, hueInterpolationMethods, iconFnRE, isInterpolatedMethod, parseCssColor, polarColorSpace, rectangularColorSpace, themeFnRE, transformThemeFn, transformThemeString, variantGetBracket, variantGetParameter, variantMatcher, variantParentMatcher };", "import { defaultSplitRE, isValidSelector } from \"@unocss/core\";\n\n//#region ../../virtual-shared/integration/src/utils.ts\nfunction hash(str) {\n\tlet i;\n\tlet l;\n\tlet hval = 2166136261;\n\tfor (i = 0, l = str.length; i < l; i++) {\n\t\thval ^= str.charCodeAt(i);\n\t\thval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24);\n\t}\n\treturn `00000${(hval >>> 0).toString(36)}`.slice(-6);\n}\nfunction transformSkipCode(code, map, SKIP_RULES_RE, keyFlag) {\n\tfor (const item of Array.from(code.matchAll(SKIP_RULES_RE))) if (item != null) {\n\t\tconst matched = item[0];\n\t\tconst withHashKey = `${keyFlag}${hash(matched)}`;\n\t\tmap.set(withHashKey, matched);\n\t\tcode = code.replace(matched, withHashKey);\n\t}\n\treturn code;\n}\nfunction restoreSkipCode(code, map) {\n\tfor (const [withHashKey, matched] of map.entries()) code = code.replaceAll(withHashKey, matched);\n\treturn code;\n}\n\n//#endregion\n//#region src/source-map.ts\nconst sourceMapRE = /\\/\\/#\\s*sourceMappingURL=.*\\n?/g;\nfunction removeSourceMap(code) {\n\tif (code.includes(\"sourceMappingURL=\")) return code.replace(sourceMapRE, \"\");\n\treturn code;\n}\n\n//#endregion\n//#region src/index.ts\nconst quotedArbitraryValuesRE = /(?:[\\w&:[\\]-]|\\[\\S{1,64}=\\S{1,64}\\]){1,64}\\[\\\\?['\"]?\\S{1,64}?['\"]\\]\\]?[\\w:-]{0,64}/g;\nconst arbitraryPropertyRE = /\\[(\\\\\\W|[\\w-]){1,64}:[^\\s:]{0,64}?(\"\\S{1,64}?\"|'\\S{1,64}?'|`\\S{1,64}?`|[^\\s:]{1,64}?)[^\\s:]{0,64}?\\)?\\]/g;\nconst arbitraryPropertyCandidateRE = /^\\[(?:\\\\\\W|[\\w-]){1,64}:['\"]?\\S{1,64}?['\"]?\\]$/;\nfunction splitCodeWithArbitraryVariants(code) {\n\tconst result = [];\n\tfor (const match of code.matchAll(arbitraryPropertyRE)) {\n\t\tif (match.index !== 0 && !/^[\\s'\"`]/.test(code[match.index - 1] ?? \"\")) continue;\n\t\tresult.push(match[0]);\n\t}\n\tfor (const match of code.matchAll(quotedArbitraryValuesRE)) result.push(match[0]);\n\tconst skipMap = /* @__PURE__ */ new Map();\n\tconst skipFlag = \"@unocss-skip-arbitrary-brackets\";\n\tcode = transformSkipCode(code, skipMap, /-\\[(?!&.+?;)[^\\]]*\\]/g, skipFlag);\n\tif (!code) return result;\n\tcode.split(defaultSplitRE).forEach((match) => {\n\t\tif (match.includes(skipFlag)) match = restoreSkipCode(match, skipMap);\n\t\tif (isValidSelector(match) && !arbitraryPropertyCandidateRE.test(match)) result.push(match);\n\t});\n\treturn result;\n}\nfunction extractorArbitraryVariants() {\n\treturn {\n\t\tname: \"@unocss/extractor-arbitrary-variants\",\n\t\torder: 0,\n\t\textract({ code }) {\n\t\t\treturn splitCodeWithArbitraryVariants(removeSourceMap(code));\n\t\t}\n\t};\n}\n\n//#endregion\nexport { arbitraryPropertyRE, extractorArbitraryVariants, quotedArbitraryValuesRE, splitCodeWithArbitraryVariants };", "import { clone, definePreset, mergeDeep, symbols, toArray } from \"@unocss/core\";\nimport { alphaPlaceholders, colorToString } from \"@unocss/rule-utils\";\n\n//#region src/constants.ts\nconst modifiers = [\n\t[\n\t\t\"headings\",\n\t\t\"h1\",\n\t\t\"h2\",\n\t\t\"h3\",\n\t\t\"h4\",\n\t\t\"h5\",\n\t\t\"h6\",\n\t\t\"th\"\n\t],\n\t[\"h1\"],\n\t[\"h2\"],\n\t[\"h3\"],\n\t[\"h4\"],\n\t[\"h5\"],\n\t[\"h6\"],\n\t[\"p\"],\n\t[\"a\"],\n\t[\"blockquote\"],\n\t[\"figure\"],\n\t[\"figcaption\"],\n\t[\"strong\"],\n\t[\"em\"],\n\t[\"kbd\"],\n\t[\"code\"],\n\t[\"pre\"],\n\t[\"ol\"],\n\t[\"ul\"],\n\t[\"li\"],\n\t[\"table\"],\n\t[\"thead\"],\n\t[\"tr\"],\n\t[\"th\"],\n\t[\"td\"],\n\t[\"img\"],\n\t[\"video\"],\n\t[\"hr\"]\n];\nconst defaultColorScheme = {\n\t\"body\": [700, 300],\n\t\"headings\": [900, \"white\"],\n\t\"lead\": [600, 400],\n\t\"links\": [900, \"white\"],\n\t\"bold\": [900, \"white\"],\n\t\"counters\": [500, 400],\n\t\"bullets\": [300, 600],\n\t\"hr\": [200, 700],\n\t\"quotes\": [900, 100],\n\t\"quote-borders\": [200, 700],\n\t\"captions\": [500, 400],\n\t\"kbd\": [900, \"white\"],\n\t\"kbd-shadows\": [900, \"white\"],\n\t\"code\": [900, \"white\"],\n\t\"pre-code\": [200, 300],\n\t\"pre-bg\": [800, \"rgb(0 0 0 / 50%)\"],\n\t\"th-borders\": [300, 600],\n\t\"td-borders\": [200, 700]\n};\nconst round = (num) => num.toFixed(7).replace(/0+$/, \"\").replace(/\\.$/, \"\");\nconst rem = (px) => `${round(px / 16)}rem`;\nconst em = (px, base) => `${round(px / base)}em`;\nconst ProseDefaultCSSObject = {\n\t\"color\": \"var(--un-prose-body)\",\n\t\"max-width\": \"65ch\",\n\t\"p\": {},\n\t\"[class~=\\\"lead\\\"]\": { color: \"var(--un-prose-lead)\" },\n\t\"a\": {\n\t\t\"color\": \"var(--un-prose-links)\",\n\t\t\"text-decoration\": \"underline\",\n\t\t\"font-weight\": \"500\"\n\t},\n\t\"strong\": {\n\t\t\"color\": \"var(--un-prose-bold)\",\n\t\t\"font-weight\": \"600\"\n\t},\n\t\"a strong\": { color: \"inherit\" },\n\t\"blockquote strong\": { color: \"inherit\" },\n\t\"thead th strong\": { color: \"inherit\" },\n\t\"ol\": { \"list-style-type\": \"decimal\" },\n\t\"ol[type=\\\"A\\\"]\": { \"list-style-type\": \"upper-alpha\" },\n\t\"ol[type=\\\"a\\\"]\": { \"list-style-type\": \"lower-alpha\" },\n\t\"ol[type=\\\"A\\\" s]\": { \"list-style-type\": \"upper-alpha\" },\n\t\"ol[type=\\\"a\\\" s]\": { \"list-style-type\": \"lower-alpha\" },\n\t\"ol[type=\\\"I\\\"]\": { \"list-style-type\": \"upper-roman\" },\n\t\"ol[type=\\\"i\\\"]\": { \"list-style-type\": \"lower-roman\" },\n\t\"ol[type=\\\"I\\\" s]\": { \"list-style-type\": \"upper-roman\" },\n\t\"ol[type=\\\"i\\\" s]\": { \"list-style-type\": \"lower-roman\" },\n\t\"ol[type=\\\"1\\\"]\": { \"list-style-type\": \"decimal\" },\n\t\"ul\": { \"list-style-type\": \"disc\" },\n\t\"ol > li::marker\": {\n\t\t\"font-weight\": \"400\",\n\t\t\"color\": \"var(--un-prose-counters)\"\n\t},\n\t\"ul > li::marker\": { color: \"var(--un-prose-bullets)\" },\n\t\"dt\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"600\"\n\t},\n\t\"hr\": {\n\t\t\"border-color\": \"var(--un-prose-hr)\",\n\t\t\"border-top-width\": \"1px\"\n\t},\n\t\"blockquote\": {\n\t\t\"font-weight\": \"500\",\n\t\t\"font-style\": \"italic\",\n\t\t\"color\": \"var(--un-prose-quotes)\",\n\t\t\"border-inline-start-width\": \"0.25rem\",\n\t\t\"border-inline-start-color\": \"var(--un-prose-quote-borders)\",\n\t\t\"quotes\": \"\\\"\\\\201C\\\"\\\"\\\\201D\\\"\\\"\\\\2018\\\"\\\"\\\\2019\\\"\"\n\t},\n\t\"blockquote p:first-of-type::before\": { content: \"open-quote\" },\n\t\"blockquote p:last-of-type::after\": { content: \"close-quote\" },\n\t\"h1\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"800\"\n\t},\n\t\"h1 strong\": {\n\t\t\"font-weight\": \"900\",\n\t\t\"color\": \"inherit\"\n\t},\n\t\"h2\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"700\"\n\t},\n\t\"h2 strong\": {\n\t\t\"font-weight\": \"800\",\n\t\t\"color\": \"inherit\"\n\t},\n\t\"h3\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"600\"\n\t},\n\t\"h3 strong\": {\n\t\t\"font-weight\": \"700\",\n\t\t\"color\": \"inherit\"\n\t},\n\t\"h4\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"600\"\n\t},\n\t\"h4 strong\": {\n\t\t\"font-weight\": \"700\",\n\t\t\"color\": \"inherit\"\n\t},\n\t\"img\": {},\n\t\"picture\": { display: \"block\" },\n\t\"video\": {},\n\t\"kbd\": {\n\t\t\"font-weight\": \"500\",\n\t\t\"font-family\": \"inherit\",\n\t\t\"color\": \"var(--un-prose-kbd)\",\n\t\t\"box-shadow\": \"0 0 0 1px rgb(var(--un-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--un-prose-kbd-shadows) / 10%)\"\n\t},\n\t\"code\": {\n\t\t\"color\": \"var(--un-prose-code)\",\n\t\t\"font-weight\": \"600\"\n\t},\n\t\"code::before\": { content: \"\\\"`\\\"\" },\n\t\"code::after\": { content: \"\\\"`\\\"\" },\n\t\"a code\": { color: \"inherit\" },\n\t\"h1 code\": { color: \"inherit\" },\n\t\"h2 code\": { color: \"inherit\" },\n\t\"h3 code\": { color: \"inherit\" },\n\t\"h4 code\": { color: \"inherit\" },\n\t\"blockquote code\": { color: \"inherit\" },\n\t\"thead th code\": { color: \"inherit\" },\n\t\"pre\": {\n\t\t\"color\": \"var(--un-prose-pre-code)\",\n\t\t\"background-color\": \"var(--un-prose-pre-bg)\",\n\t\t\"overflow-x\": \"auto\",\n\t\t\"font-weight\": \"400\"\n\t},\n\t\"pre code\": {\n\t\t\"background-color\": \"transparent\",\n\t\t\"border-width\": \"0\",\n\t\t\"border-radius\": \"0\",\n\t\t\"padding\": \"0\",\n\t\t\"font-weight\": \"inherit\",\n\t\t\"color\": \"inherit\",\n\t\t\"font-size\": \"inherit\",\n\t\t\"font-family\": \"inherit\",\n\t\t\"line-height\": \"inherit\"\n\t},\n\t\"pre code::before\": { content: \"none\" },\n\t\"pre code::after\": { content: \"none\" },\n\t\"table\": {\n\t\t\"width\": \"100%\",\n\t\t\"table-layout\": \"auto\",\n\t\t\"margin-top\": em(32, 16),\n\t\t\"margin-bottom\": em(32, 16)\n\t},\n\t\"thead\": {\n\t\t\"border-bottom-width\": \"1px\",\n\t\t\"border-bottom-color\": \"var(--un-prose-th-borders)\"\n\t},\n\t\"thead th\": {\n\t\t\"color\": \"var(--un-prose-headings)\",\n\t\t\"font-weight\": \"600\",\n\t\t\"vertical-align\": \"bottom\"\n\t},\n\t\"tbody tr\": {\n\t\t\"border-bottom-width\": \"1px\",\n\t\t\"border-bottom-color\": \"var(--un-prose-td-borders)\"\n\t},\n\t\"tbody tr:last-child\": { \"border-bottom-width\": \"0\" },\n\t\"tbody td\": { \"vertical-align\": \"baseline\" },\n\t\"tfoot\": {\n\t\t\"border-top-width\": \"1px\",\n\t\t\"border-top-color\": \"var(--un-prose-th-borders)\"\n\t},\n\t\"tfoot td\": { \"vertical-align\": \"top\" },\n\t\"th, td\": { \"text-align\": \"start\" },\n\t\"figure > *\": {},\n\t\"figcaption\": { color: \"var(--un-prose-captions)\" }\n};\nconst ProseDefaultSize = {\n\t\"sm\": {\n\t\t\"font-size\": rem(14),\n\t\t\"line-height\": round(24 / 14),\n\t\t\"p\": {\n\t\t\t\"margin-top\": em(16, 14),\n\t\t\t\"margin-bottom\": em(16, 14)\n\t\t},\n\t\t\"[class~=\\\"lead\\\"]\": {\n\t\t\t\"font-size\": em(18, 14),\n\t\t\t\"line-height\": round(28 / 18),\n\t\t\t\"margin-top\": em(16, 18),\n\t\t\t\"margin-bottom\": em(16, 18)\n\t\t},\n\t\t\"blockquote\": {\n\t\t\t\"margin-top\": em(24, 18),\n\t\t\t\"margin-bottom\": em(24, 18),\n\t\t\t\"padding-inline-start\": em(20, 18)\n\t\t},\n\t\t\"h1\": {\n\t\t\t\"font-size\": em(30, 14),\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": em(24, 30),\n\t\t\t\"line-height\": round(36 / 30)\n\t\t},\n\t\t\"h2\": {\n\t\t\t\"font-size\": em(20, 14),\n\t\t\t\"margin-top\": em(32, 20),\n\t\t\t\"margin-bottom\": em(16, 20),\n\t\t\t\"line-height\": round(28 / 20)\n\t\t},\n\t\t\"h3\": {\n\t\t\t\"font-size\": em(18, 14),\n\t\t\t\"margin-top\": em(28, 18),\n\t\t\t\"margin-bottom\": em(8, 18),\n\t\t\t\"line-height\": round(28 / 18)\n\t\t},\n\t\t\"h4\": {\n\t\t\t\"margin-top\": em(20, 14),\n\t\t\t\"margin-bottom\": em(8, 14),\n\t\t\t\"line-height\": round(20 / 14)\n\t\t},\n\t\t\"img\": {\n\t\t\t\"margin-top\": em(24, 14),\n\t\t\t\"margin-bottom\": em(24, 14)\n\t\t},\n\t\t\"picture\": {\n\t\t\t\"margin-top\": em(24, 14),\n\t\t\t\"margin-bottom\": em(24, 14)\n\t\t},\n\t\t\"picture > img\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"video\": {\n\t\t\t\"margin-top\": em(24, 14),\n\t\t\t\"margin-bottom\": em(24, 14)\n\t\t},\n\t\t\"kbd\": {\n\t\t\t\"font-size\": em(12, 14),\n\t\t\t\"border-radius\": rem(5),\n\t\t\t\"padding-top\": em(2, 14),\n\t\t\t\"padding-inline-end\": em(5, 14),\n\t\t\t\"padding-bottom\": em(2, 14),\n\t\t\t\"padding-inline-start\": em(5, 14)\n\t\t},\n\t\t\"code\": { \"font-size\": em(12, 14) },\n\t\t\"h2 code\": { \"font-size\": em(18, 20) },\n\t\t\"h3 code\": { \"font-size\": em(16, 18) },\n\t\t\"pre\": {\n\t\t\t\"font-size\": em(12, 14),\n\t\t\t\"line-height\": round(20 / 12),\n\t\t\t\"margin-top\": em(20, 12),\n\t\t\t\"margin-bottom\": em(20, 12),\n\t\t\t\"border-radius\": rem(4),\n\t\t\t\"padding-top\": em(8, 12),\n\t\t\t\"padding-inline-end\": em(12, 12),\n\t\t\t\"padding-bottom\": em(8, 12),\n\t\t\t\"padding-inline-start\": em(12, 12)\n\t\t},\n\t\t\"ol\": {\n\t\t\t\"margin-top\": em(16, 14),\n\t\t\t\"margin-bottom\": em(16, 14),\n\t\t\t\"padding-inline-start\": em(22, 14)\n\t\t},\n\t\t\"ul\": {\n\t\t\t\"margin-top\": em(16, 14),\n\t\t\t\"margin-bottom\": em(16, 14),\n\t\t\t\"padding-inline-start\": em(22, 14)\n\t\t},\n\t\t\"li\": {\n\t\t\t\"margin-top\": em(4, 14),\n\t\t\t\"margin-bottom\": em(4, 14)\n\t\t},\n\t\t\"ol > li\": { \"padding-inline-start\": em(6, 14) },\n\t\t\"ul > li\": { \"padding-inline-start\": em(6, 14) },\n\t\t\"> ul > li p\": {\n\t\t\t\"margin-top\": em(8, 14),\n\t\t\t\"margin-bottom\": em(8, 14)\n\t\t},\n\t\t\"> ul > li > p:first-child\": { \"margin-top\": em(16, 14) },\n\t\t\"> ul > li > p:last-child\": { \"margin-bottom\": em(16, 14) },\n\t\t\"> ol > li > p:first-child\": { \"margin-top\": em(16, 14) },\n\t\t\"> ol > li > p:last-child\": { \"margin-bottom\": em(16, 14) },\n\t\t\"ul ul, ul ol, ol ul, ol ol\": {\n\t\t\t\"margin-top\": em(8, 14),\n\t\t\t\"margin-bottom\": em(8, 14)\n\t\t},\n\t\t\"dl\": {\n\t\t\t\"margin-top\": em(16, 14),\n\t\t\t\"margin-bottom\": em(16, 14)\n\t\t},\n\t\t\"dt\": { \"margin-top\": em(16, 14) },\n\t\t\"dd\": {\n\t\t\t\"margin-top\": em(4, 14),\n\t\t\t\"padding-inline-start\": em(22, 14)\n\t\t},\n\t\t\"hr\": {\n\t\t\t\"margin-top\": em(40, 14),\n\t\t\t\"margin-bottom\": em(40, 14)\n\t\t},\n\t\t\"hr + *\": { \"margin-top\": \"0\" },\n\t\t\"h2 + *\": { \"margin-top\": \"0\" },\n\t\t\"h3 + *\": { \"margin-top\": \"0\" },\n\t\t\"h4 + *\": { \"margin-top\": \"0\" },\n\t\t\"table\": {\n\t\t\t\"font-size\": em(12, 14),\n\t\t\t\"line-height\": round(18 / 12)\n\t\t},\n\t\t\"thead th\": {\n\t\t\t\"padding-inline-end\": em(12, 12),\n\t\t\t\"padding-bottom\": em(8, 12),\n\t\t\t\"padding-inline-start\": em(12, 12)\n\t\t},\n\t\t\"thead th:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"thead th:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"tbody td, tfoot td\": {\n\t\t\t\"padding-top\": em(8, 12),\n\t\t\t\"padding-inline-end\": em(12, 12),\n\t\t\t\"padding-bottom\": em(8, 12),\n\t\t\t\"padding-inline-start\": em(12, 12)\n\t\t},\n\t\t\"tbody td:first-child, tfoot td:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"tbody td:last-child, tfoot td:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"figure\": {\n\t\t\t\"margin-top\": em(24, 14),\n\t\t\t\"margin-bottom\": em(24, 14)\n\t\t},\n\t\t\"figure > *\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"figcaption\": {\n\t\t\t\"font-size\": em(12, 14),\n\t\t\t\"line-height\": round(16 / 12),\n\t\t\t\"margin-top\": em(8, 12)\n\t\t},\n\t\t\"> :first-child\": { \"margin-top\": \"0\" },\n\t\t\"> :last-child\": { \"margin-bottom\": \"0\" }\n\t},\n\t\"base\": {\n\t\t\"font-size\": rem(16),\n\t\t\"line-height\": round(28 / 16),\n\t\t\"p\": {\n\t\t\t\"margin-top\": em(20, 16),\n\t\t\t\"margin-bottom\": em(20, 16)\n\t\t},\n\t\t\"[class~=\\\"lead\\\"]\": {\n\t\t\t\"font-size\": em(20, 16),\n\t\t\t\"line-height\": round(32 / 20),\n\t\t\t\"margin-top\": em(24, 20),\n\t\t\t\"margin-bottom\": em(24, 20)\n\t\t},\n\t\t\"blockquote\": {\n\t\t\t\"margin-top\": em(32, 20),\n\t\t\t\"margin-bottom\": em(32, 20),\n\t\t\t\"padding-inline-start\": em(20, 20)\n\t\t},\n\t\t\"h1\": {\n\t\t\t\"font-size\": em(36, 16),\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": em(32, 36),\n\t\t\t\"line-height\": round(40 / 36)\n\t\t},\n\t\t\"h2\": {\n\t\t\t\"font-size\": em(24, 16),\n\t\t\t\"margin-top\": em(48, 24),\n\t\t\t\"margin-bottom\": em(24, 24),\n\t\t\t\"line-height\": round(32 / 24)\n\t\t},\n\t\t\"h3\": {\n\t\t\t\"font-size\": em(20, 16),\n\t\t\t\"margin-top\": em(32, 20),\n\t\t\t\"margin-bottom\": em(12, 20),\n\t\t\t\"line-height\": round(32 / 20)\n\t\t},\n\t\t\"h4\": {\n\t\t\t\"margin-top\": em(24, 16),\n\t\t\t\"margin-bottom\": em(8, 16),\n\t\t\t\"line-height\": round(24 / 16)\n\t\t},\n\t\t\"img\": {\n\t\t\t\"margin-top\": em(32, 16),\n\t\t\t\"margin-bottom\": em(32, 16)\n\t\t},\n\t\t\"picture\": {\n\t\t\t\"margin-top\": em(32, 16),\n\t\t\t\"margin-bottom\": em(32, 16)\n\t\t},\n\t\t\"picture > img\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"video\": {\n\t\t\t\"margin-top\": em(32, 16),\n\t\t\t\"margin-bottom\": em(32, 16)\n\t\t},\n\t\t\"kbd\": {\n\t\t\t\"font-size\": em(14, 16),\n\t\t\t\"border-radius\": rem(5),\n\t\t\t\"padding-top\": em(3, 16),\n\t\t\t\"padding-inline-end\": em(6, 16),\n\t\t\t\"padding-bottom\": em(3, 16),\n\t\t\t\"padding-inline-start\": em(6, 16)\n\t\t},\n\t\t\"code\": { \"font-size\": em(14, 16) },\n\t\t\"h2 code\": { \"font-size\": em(21, 24) },\n\t\t\"h3 code\": { \"font-size\": em(18, 20) },\n\t\t\"pre\": {\n\t\t\t\"font-size\": em(14, 16),\n\t\t\t\"line-height\": round(24 / 14),\n\t\t\t\"margin-top\": em(24, 14),\n\t\t\t\"margin-bottom\": em(24, 14),\n\t\t\t\"border-radius\": rem(6),\n\t\t\t\"padding-top\": em(12, 14),\n\t\t\t\"padding-inline-end\": em(16, 14),\n\t\t\t\"padding-bottom\": em(12, 14),\n\t\t\t\"padding-inline-start\": em(16, 14)\n\t\t},\n\t\t\"ol\": {\n\t\t\t\"margin-top\": em(20, 16),\n\t\t\t\"margin-bottom\": em(20, 16),\n\t\t\t\"padding-inline-start\": em(26, 16)\n\t\t},\n\t\t\"ul\": {\n\t\t\t\"margin-top\": em(20, 16),\n\t\t\t\"margin-bottom\": em(20, 16),\n\t\t\t\"padding-inline-start\": em(26, 16)\n\t\t},\n\t\t\"li\": {\n\t\t\t\"margin-top\": em(8, 16),\n\t\t\t\"margin-bottom\": em(8, 16)\n\t\t},\n\t\t\"ol > li\": { \"padding-inline-start\": em(6, 16) },\n\t\t\"ul > li\": { \"padding-inline-start\": em(6, 16) },\n\t\t\"> ul > li p\": {\n\t\t\t\"margin-top\": em(12, 16),\n\t\t\t\"margin-bottom\": em(12, 16)\n\t\t},\n\t\t\"> ul > li > p:first-child\": { \"margin-top\": em(20, 16) },\n\t\t\"> ul > li > p:last-child\": { \"margin-bottom\": em(20, 16) },\n\t\t\"> ol > li > p:first-child\": { \"margin-top\": em(20, 16) },\n\t\t\"> ol > li > p:last-child\": { \"margin-bottom\": em(20, 16) },\n\t\t\"ul ul, ul ol, ol ul, ol ol\": {\n\t\t\t\"margin-top\": em(12, 16),\n\t\t\t\"margin-bottom\": em(12, 16)\n\t\t},\n\t\t\"dl\": {\n\t\t\t\"margin-top\": em(20, 16),\n\t\t\t\"margin-bottom\": em(20, 16)\n\t\t},\n\t\t\"dt\": { \"margin-top\": em(20, 16) },\n\t\t\"dd\": {\n\t\t\t\"margin-top\": em(8, 16),\n\t\t\t\"padding-inline-start\": em(26, 16)\n\t\t},\n\t\t\"hr\": {\n\t\t\t\"margin-top\": em(48, 16),\n\t\t\t\"margin-bottom\": em(48, 16)\n\t\t},\n\t\t\"hr + *\": { \"margin-top\": \"0\" },\n\t\t\"h2 + *\": { \"margin-top\": \"0\" },\n\t\t\"h3 + *\": { \"margin-top\": \"0\" },\n\t\t\"h4 + *\": { \"margin-top\": \"0\" },\n\t\t\"table\": {\n\t\t\t\"font-size\": em(14, 16),\n\t\t\t\"line-height\": round(24 / 14)\n\t\t},\n\t\t\"thead th\": {\n\t\t\t\"padding-inline-end\": em(8, 14),\n\t\t\t\"padding-bottom\": em(8, 14),\n\t\t\t\"padding-inline-start\": em(8, 14)\n\t\t},\n\t\t\"thead th:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"thead th:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"tbody td, tfoot td\": {\n\t\t\t\"padding-top\": em(8, 14),\n\t\t\t\"padding-inline-end\": em(8, 14),\n\t\t\t\"padding-bottom\": em(8, 14),\n\t\t\t\"padding-inline-start\": em(8, 14)\n\t\t},\n\t\t\"tbody td:first-child, tfoot td:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"tbody td:last-child, tfoot td:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"figure\": {\n\t\t\t\"margin-top\": em(32, 16),\n\t\t\t\"margin-bottom\": em(32, 16)\n\t\t},\n\t\t\"figure > *\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"figcaption\": {\n\t\t\t\"font-size\": em(14, 16),\n\t\t\t\"line-height\": round(20 / 14),\n\t\t\t\"margin-top\": em(12, 14)\n\t\t},\n\t\t\"> :first-child\": { \"margin-top\": \"0\" },\n\t\t\"> :last-child\": { \"margin-bottom\": \"0\" }\n\t},\n\t\"lg\": {\n\t\t\"font-size\": rem(18),\n\t\t\"line-height\": round(32 / 18),\n\t\t\"p\": {\n\t\t\t\"margin-top\": em(24, 18),\n\t\t\t\"margin-bottom\": em(24, 18)\n\t\t},\n\t\t\"[class~=\\\"lead\\\"]\": {\n\t\t\t\"font-size\": em(22, 18),\n\t\t\t\"line-height\": round(32 / 22),\n\t\t\t\"margin-top\": em(24, 22),\n\t\t\t\"margin-bottom\": em(24, 22)\n\t\t},\n\t\t\"blockquote\": {\n\t\t\t\"margin-top\": em(40, 24),\n\t\t\t\"margin-bottom\": em(40, 24),\n\t\t\t\"padding-inline-start\": em(24, 24)\n\t\t},\n\t\t\"h1\": {\n\t\t\t\"font-size\": em(48, 18),\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": em(40, 48),\n\t\t\t\"line-height\": round(48 / 48)\n\t\t},\n\t\t\"h2\": {\n\t\t\t\"font-size\": em(30, 18),\n\t\t\t\"margin-top\": em(56, 30),\n\t\t\t\"margin-bottom\": em(32, 30),\n\t\t\t\"line-height\": round(40 / 30)\n\t\t},\n\t\t\"h3\": {\n\t\t\t\"font-size\": em(24, 18),\n\t\t\t\"margin-top\": em(40, 24),\n\t\t\t\"margin-bottom\": em(16, 24),\n\t\t\t\"line-height\": round(36 / 24)\n\t\t},\n\t\t\"h4\": {\n\t\t\t\"margin-top\": em(32, 18),\n\t\t\t\"margin-bottom\": em(8, 18),\n\t\t\t\"line-height\": round(28 / 18)\n\t\t},\n\t\t\"img\": {\n\t\t\t\"margin-top\": em(32, 18),\n\t\t\t\"margin-bottom\": em(32, 18)\n\t\t},\n\t\t\"picture\": {\n\t\t\t\"margin-top\": em(32, 18),\n\t\t\t\"margin-bottom\": em(32, 18)\n\t\t},\n\t\t\"picture > img\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"video\": {\n\t\t\t\"margin-top\": em(32, 18),\n\t\t\t\"margin-bottom\": em(32, 18)\n\t\t},\n\t\t\"kbd\": {\n\t\t\t\"font-size\": em(16, 18),\n\t\t\t\"border-radius\": rem(5),\n\t\t\t\"padding-top\": em(4, 18),\n\t\t\t\"padding-inline-end\": em(8, 18),\n\t\t\t\"padding-bottom\": em(4, 18),\n\t\t\t\"padding-inline-start\": em(8, 18)\n\t\t},\n\t\t\"code\": { \"font-size\": em(16, 18) },\n\t\t\"h2 code\": { \"font-size\": em(26, 30) },\n\t\t\"h3 code\": { \"font-size\": em(21, 24) },\n\t\t\"pre\": {\n\t\t\t\"font-size\": em(16, 18),\n\t\t\t\"line-height\": round(28 / 16),\n\t\t\t\"margin-top\": em(32, 16),\n\t\t\t\"margin-bottom\": em(32, 16),\n\t\t\t\"border-radius\": rem(6),\n\t\t\t\"padding-top\": em(16, 16),\n\t\t\t\"padding-inline-end\": em(24, 16),\n\t\t\t\"padding-bottom\": em(16, 16),\n\t\t\t\"padding-inline-start\": em(24, 16)\n\t\t},\n\t\t\"ol\": {\n\t\t\t\"margin-top\": em(24, 18),\n\t\t\t\"margin-bottom\": em(24, 18),\n\t\t\t\"padding-inline-start\": em(28, 18)\n\t\t},\n\t\t\"ul\": {\n\t\t\t\"margin-top\": em(24, 18),\n\t\t\t\"margin-bottom\": em(24, 18),\n\t\t\t\"padding-inline-start\": em(28, 18)\n\t\t},\n\t\t\"li\": {\n\t\t\t\"margin-top\": em(12, 18),\n\t\t\t\"margin-bottom\": em(12, 18)\n\t\t},\n\t\t\"ol > li\": { \"padding-inline-start\": em(8, 18) },\n\t\t\"ul > li\": { \"padding-inline-start\": em(8, 18) },\n\t\t\"> ul > li p\": {\n\t\t\t\"margin-top\": em(16, 18),\n\t\t\t\"margin-bottom\": em(16, 18)\n\t\t},\n\t\t\"> ul > li > p:first-child\": { \"margin-top\": em(24, 18) },\n\t\t\"> ul > li > p:last-child\": { \"margin-bottom\": em(24, 18) },\n\t\t\"> ol > li > p:first-child\": { \"margin-top\": em(24, 18) },\n\t\t\"> ol > li > p:last-child\": { \"margin-bottom\": em(24, 18) },\n\t\t\"ul ul, ul ol, ol ul, ol ol\": {\n\t\t\t\"margin-top\": em(16, 18),\n\t\t\t\"margin-bottom\": em(16, 18)\n\t\t},\n\t\t\"dl\": {\n\t\t\t\"margin-top\": em(24, 18),\n\t\t\t\"margin-bottom\": em(24, 18)\n\t\t},\n\t\t\"dt\": { \"margin-top\": em(24, 18) },\n\t\t\"dd\": {\n\t\t\t\"margin-top\": em(12, 18),\n\t\t\t\"padding-inline-start\": em(28, 18)\n\t\t},\n\t\t\"hr\": {\n\t\t\t\"margin-top\": em(56, 18),\n\t\t\t\"margin-bottom\": em(56, 18)\n\t\t},\n\t\t\"hr + *\": { \"margin-top\": \"0\" },\n\t\t\"h2 + *\": { \"margin-top\": \"0\" },\n\t\t\"h3 + *\": { \"margin-top\": \"0\" },\n\t\t\"h4 + *\": { \"margin-top\": \"0\" },\n\t\t\"table\": {\n\t\t\t\"font-size\": em(16, 18),\n\t\t\t\"line-height\": round(24 / 16)\n\t\t},\n\t\t\"thead th\": {\n\t\t\t\"padding-inline-end\": em(12, 16),\n\t\t\t\"padding-bottom\": em(12, 16),\n\t\t\t\"padding-inline-start\": em(12, 16)\n\t\t},\n\t\t\"thead th:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"thead th:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"tbody td, tfoot td\": {\n\t\t\t\"padding-top\": em(12, 16),\n\t\t\t\"padding-inline-end\": em(12, 16),\n\t\t\t\"padding-bottom\": em(12, 16),\n\t\t\t\"padding-inline-start\": em(12, 16)\n\t\t},\n\t\t\"tbody td:first-child, tfoot td:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"tbody td:last-child, tfoot td:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"figure\": {\n\t\t\t\"margin-top\": em(32, 18),\n\t\t\t\"margin-bottom\": em(32, 18)\n\t\t},\n\t\t\"figure > *\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"figcaption\": {\n\t\t\t\"font-size\": em(16, 18),\n\t\t\t\"line-height\": round(24 / 16),\n\t\t\t\"margin-top\": em(16, 16)\n\t\t},\n\t\t\"> :first-child\": { \"margin-top\": \"0\" },\n\t\t\"> :last-child\": { \"margin-bottom\": \"0\" }\n\t},\n\t\"xl\": {\n\t\t\"font-size\": rem(20),\n\t\t\"line-height\": round(36 / 20),\n\t\t\"p\": {\n\t\t\t\"margin-top\": em(24, 20),\n\t\t\t\"margin-bottom\": em(24, 20)\n\t\t},\n\t\t\"[class~=\\\"lead\\\"]\": {\n\t\t\t\"font-size\": em(24, 20),\n\t\t\t\"line-height\": round(36 / 24),\n\t\t\t\"margin-top\": em(24, 24),\n\t\t\t\"margin-bottom\": em(24, 24)\n\t\t},\n\t\t\"blockquote\": {\n\t\t\t\"margin-top\": em(48, 30),\n\t\t\t\"margin-bottom\": em(48, 30),\n\t\t\t\"padding-inline-start\": em(32, 30)\n\t\t},\n\t\t\"h1\": {\n\t\t\t\"font-size\": em(56, 20),\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": em(48, 56),\n\t\t\t\"line-height\": round(56 / 56)\n\t\t},\n\t\t\"h2\": {\n\t\t\t\"font-size\": em(36, 20),\n\t\t\t\"margin-top\": em(56, 36),\n\t\t\t\"margin-bottom\": em(32, 36),\n\t\t\t\"line-height\": round(40 / 36)\n\t\t},\n\t\t\"h3\": {\n\t\t\t\"font-size\": em(30, 20),\n\t\t\t\"margin-top\": em(48, 30),\n\t\t\t\"margin-bottom\": em(20, 30),\n\t\t\t\"line-height\": round(40 / 30)\n\t\t},\n\t\t\"h4\": {\n\t\t\t\"margin-top\": em(36, 20),\n\t\t\t\"margin-bottom\": em(12, 20),\n\t\t\t\"line-height\": round(32 / 20)\n\t\t},\n\t\t\"img\": {\n\t\t\t\"margin-top\": em(40, 20),\n\t\t\t\"margin-bottom\": em(40, 20)\n\t\t},\n\t\t\"picture\": {\n\t\t\t\"margin-top\": em(40, 20),\n\t\t\t\"margin-bottom\": em(40, 20)\n\t\t},\n\t\t\"picture > img\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"video\": {\n\t\t\t\"margin-top\": em(40, 20),\n\t\t\t\"margin-bottom\": em(40, 20)\n\t\t},\n\t\t\"kbd\": {\n\t\t\t\"font-size\": em(18, 20),\n\t\t\t\"border-radius\": rem(5),\n\t\t\t\"padding-top\": em(5, 20),\n\t\t\t\"padding-inline-end\": em(8, 20),\n\t\t\t\"padding-bottom\": em(5, 20),\n\t\t\t\"padding-inline-start\": em(8, 20)\n\t\t},\n\t\t\"code\": { \"font-size\": em(18, 20) },\n\t\t\"h2 code\": { \"font-size\": em(31, 36) },\n\t\t\"h3 code\": { \"font-size\": em(27, 30) },\n\t\t\"pre\": {\n\t\t\t\"font-size\": em(18, 20),\n\t\t\t\"line-height\": round(32 / 18),\n\t\t\t\"margin-top\": em(36, 18),\n\t\t\t\"margin-bottom\": em(36, 18),\n\t\t\t\"border-radius\": rem(8),\n\t\t\t\"padding-top\": em(20, 18),\n\t\t\t\"padding-inline-end\": em(24, 18),\n\t\t\t\"padding-bottom\": em(20, 18),\n\t\t\t\"padding-inline-start\": em(24, 18)\n\t\t},\n\t\t\"ol\": {\n\t\t\t\"margin-top\": em(24, 20),\n\t\t\t\"margin-bottom\": em(24, 20),\n\t\t\t\"padding-inline-start\": em(32, 20)\n\t\t},\n\t\t\"ul\": {\n\t\t\t\"margin-top\": em(24, 20),\n\t\t\t\"margin-bottom\": em(24, 20),\n\t\t\t\"padding-inline-start\": em(32, 20)\n\t\t},\n\t\t\"li\": {\n\t\t\t\"margin-top\": em(12, 20),\n\t\t\t\"margin-bottom\": em(12, 20)\n\t\t},\n\t\t\"ol > li\": { \"padding-inline-start\": em(8, 20) },\n\t\t\"ul > li\": { \"padding-inline-start\": em(8, 20) },\n\t\t\"> ul > li p\": {\n\t\t\t\"margin-top\": em(16, 20),\n\t\t\t\"margin-bottom\": em(16, 20)\n\t\t},\n\t\t\"> ul > li > p:first-child\": { \"margin-top\": em(24, 20) },\n\t\t\"> ul > li > p:last-child\": { \"margin-bottom\": em(24, 20) },\n\t\t\"> ol > li > p:first-child\": { \"margin-top\": em(24, 20) },\n\t\t\"> ol > li > p:last-child\": { \"margin-bottom\": em(24, 20) },\n\t\t\"ul ul, ul ol, ol ul, ol ol\": {\n\t\t\t\"margin-top\": em(16, 20),\n\t\t\t\"margin-bottom\": em(16, 20)\n\t\t},\n\t\t\"dl\": {\n\t\t\t\"margin-top\": em(24, 20),\n\t\t\t\"margin-bottom\": em(24, 20)\n\t\t},\n\t\t\"dt\": { \"margin-top\": em(24, 20) },\n\t\t\"dd\": {\n\t\t\t\"margin-top\": em(12, 20),\n\t\t\t\"padding-inline-start\": em(32, 20)\n\t\t},\n\t\t\"hr\": {\n\t\t\t\"margin-top\": em(56, 20),\n\t\t\t\"margin-bottom\": em(56, 20)\n\t\t},\n\t\t\"hr + *\": { \"margin-top\": \"0\" },\n\t\t\"h2 + *\": { \"margin-top\": \"0\" },\n\t\t\"h3 + *\": { \"margin-top\": \"0\" },\n\t\t\"h4 + *\": { \"margin-top\": \"0\" },\n\t\t\"table\": {\n\t\t\t\"font-size\": em(18, 20),\n\t\t\t\"line-height\": round(28 / 18)\n\t\t},\n\t\t\"thead th\": {\n\t\t\t\"padding-inline-end\": em(12, 18),\n\t\t\t\"padding-bottom\": em(16, 18),\n\t\t\t\"padding-inline-start\": em(12, 18)\n\t\t},\n\t\t\"thead th:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"thead th:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"tbody td, tfoot td\": {\n\t\t\t\"padding-top\": em(16, 18),\n\t\t\t\"padding-inline-end\": em(12, 18),\n\t\t\t\"padding-bottom\": em(16, 18),\n\t\t\t\"padding-inline-start\": em(12, 18)\n\t\t},\n\t\t\"tbody td:first-child, tfoot td:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"tbody td:last-child, tfoot td:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"figure\": {\n\t\t\t\"margin-top\": em(40, 20),\n\t\t\t\"margin-bottom\": em(40, 20)\n\t\t},\n\t\t\"figure > *\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"figcaption\": {\n\t\t\t\"font-size\": em(18, 20),\n\t\t\t\"line-height\": round(28 / 18),\n\t\t\t\"margin-top\": em(18, 18)\n\t\t},\n\t\t\"> :first-child\": { \"margin-top\": \"0\" },\n\t\t\"> :last-child\": { \"margin-bottom\": \"0\" }\n\t},\n\t\"2xl\": {\n\t\t\"font-size\": rem(24),\n\t\t\"line-height\": round(40 / 24),\n\t\t\"p\": {\n\t\t\t\"margin-top\": em(32, 24),\n\t\t\t\"margin-bottom\": em(32, 24)\n\t\t},\n\t\t\"[class~=\\\"lead\\\"]\": {\n\t\t\t\"font-size\": em(30, 24),\n\t\t\t\"line-height\": round(44 / 30),\n\t\t\t\"margin-top\": em(32, 30),\n\t\t\t\"margin-bottom\": em(32, 30)\n\t\t},\n\t\t\"blockquote\": {\n\t\t\t\"margin-top\": em(64, 36),\n\t\t\t\"margin-bottom\": em(64, 36),\n\t\t\t\"padding-inline-start\": em(40, 36)\n\t\t},\n\t\t\"h1\": {\n\t\t\t\"font-size\": em(64, 24),\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": em(56, 64),\n\t\t\t\"line-height\": round(64 / 64)\n\t\t},\n\t\t\"h2\": {\n\t\t\t\"font-size\": em(48, 24),\n\t\t\t\"margin-top\": em(72, 48),\n\t\t\t\"margin-bottom\": em(40, 48),\n\t\t\t\"line-height\": round(52 / 48)\n\t\t},\n\t\t\"h3\": {\n\t\t\t\"font-size\": em(36, 24),\n\t\t\t\"margin-top\": em(56, 36),\n\t\t\t\"margin-bottom\": em(24, 36),\n\t\t\t\"line-height\": round(44 / 36)\n\t\t},\n\t\t\"h4\": {\n\t\t\t\"margin-top\": em(40, 24),\n\t\t\t\"margin-bottom\": em(16, 24),\n\t\t\t\"line-height\": round(36 / 24)\n\t\t},\n\t\t\"img\": {\n\t\t\t\"margin-top\": em(48, 24),\n\t\t\t\"margin-bottom\": em(48, 24)\n\t\t},\n\t\t\"picture\": {\n\t\t\t\"margin-top\": em(48, 24),\n\t\t\t\"margin-bottom\": em(48, 24)\n\t\t},\n\t\t\"picture > img\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"video\": {\n\t\t\t\"margin-top\": em(48, 24),\n\t\t\t\"margin-bottom\": em(48, 24)\n\t\t},\n\t\t\"kbd\": {\n\t\t\t\"font-size\": em(20, 24),\n\t\t\t\"border-radius\": rem(6),\n\t\t\t\"padding-top\": em(6, 24),\n\t\t\t\"padding-inline-end\": em(8, 24),\n\t\t\t\"padding-bottom\": em(6, 24),\n\t\t\t\"padding-inline-start\": em(8, 24)\n\t\t},\n\t\t\"code\": { \"font-size\": em(20, 24) },\n\t\t\"h2 code\": { \"font-size\": em(42, 48) },\n\t\t\"h3 code\": { \"font-size\": em(32, 36) },\n\t\t\"pre\": {\n\t\t\t\"font-size\": em(20, 24),\n\t\t\t\"line-height\": round(36 / 20),\n\t\t\t\"margin-top\": em(40, 20),\n\t\t\t\"margin-bottom\": em(40, 20),\n\t\t\t\"border-radius\": rem(8),\n\t\t\t\"padding-top\": em(24, 20),\n\t\t\t\"padding-inline-end\": em(32, 20),\n\t\t\t\"padding-bottom\": em(24, 20),\n\t\t\t\"padding-inline-start\": em(32, 20)\n\t\t},\n\t\t\"ol\": {\n\t\t\t\"margin-top\": em(32, 24),\n\t\t\t\"margin-bottom\": em(32, 24),\n\t\t\t\"padding-inline-start\": em(38, 24)\n\t\t},\n\t\t\"ul\": {\n\t\t\t\"margin-top\": em(32, 24),\n\t\t\t\"margin-bottom\": em(32, 24),\n\t\t\t\"padding-inline-start\": em(38, 24)\n\t\t},\n\t\t\"li\": {\n\t\t\t\"margin-top\": em(12, 24),\n\t\t\t\"margin-bottom\": em(12, 24)\n\t\t},\n\t\t\"ol > li\": { \"padding-inline-start\": em(10, 24) },\n\t\t\"ul > li\": { \"padding-inline-start\": em(10, 24) },\n\t\t\"> ul > li p\": {\n\t\t\t\"margin-top\": em(20, 24),\n\t\t\t\"margin-bottom\": em(20, 24)\n\t\t},\n\t\t\"> ul > li > p:first-child\": { \"margin-top\": em(32, 24) },\n\t\t\"> ul > li > p:last-child\": { \"margin-bottom\": em(32, 24) },\n\t\t\"> ol > li > p:first-child\": { \"margin-top\": em(32, 24) },\n\t\t\"> ol > li > p:last-child\": { \"margin-bottom\": em(32, 24) },\n\t\t\"ul ul, ul ol, ol ul, ol ol\": {\n\t\t\t\"margin-top\": em(16, 24),\n\t\t\t\"margin-bottom\": em(16, 24)\n\t\t},\n\t\t\"dl\": {\n\t\t\t\"margin-top\": em(32, 24),\n\t\t\t\"margin-bottom\": em(32, 24)\n\t\t},\n\t\t\"dt\": { \"margin-top\": em(32, 24) },\n\t\t\"dd\": {\n\t\t\t\"margin-top\": em(12, 24),\n\t\t\t\"padding-inline-start\": em(38, 24)\n\t\t},\n\t\t\"hr\": {\n\t\t\t\"margin-top\": em(72, 24),\n\t\t\t\"margin-bottom\": em(72, 24)\n\t\t},\n\t\t\"hr + *\": { \"margin-top\": \"0\" },\n\t\t\"h2 + *\": { \"margin-top\": \"0\" },\n\t\t\"h3 + *\": { \"margin-top\": \"0\" },\n\t\t\"h4 + *\": { \"margin-top\": \"0\" },\n\t\t\"table\": {\n\t\t\t\"font-size\": em(20, 24),\n\t\t\t\"line-height\": round(28 / 20)\n\t\t},\n\t\t\"thead th\": {\n\t\t\t\"padding-inline-end\": em(12, 20),\n\t\t\t\"padding-bottom\": em(16, 20),\n\t\t\t\"padding-inline-start\": em(12, 20)\n\t\t},\n\t\t\"thead th:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"thead th:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"tbody td, tfoot td\": {\n\t\t\t\"padding-top\": em(16, 20),\n\t\t\t\"padding-inline-end\": em(12, 20),\n\t\t\t\"padding-bottom\": em(16, 20),\n\t\t\t\"padding-inline-start\": em(12, 20)\n\t\t},\n\t\t\"tbody td:first-child, tfoot td:first-child\": { \"padding-inline-start\": \"0\" },\n\t\t\"tbody td:last-child, tfoot td:last-child\": { \"padding-inline-end\": \"0\" },\n\t\t\"figure\": {\n\t\t\t\"margin-top\": em(48, 24),\n\t\t\t\"margin-bottom\": em(48, 24)\n\t\t},\n\t\t\"figure > *\": {\n\t\t\t\"margin-top\": \"0\",\n\t\t\t\"margin-bottom\": \"0\"\n\t\t},\n\t\t\"figcaption\": {\n\t\t\t\"font-size\": em(20, 24),\n\t\t\t\"line-height\": round(32 / 20),\n\t\t\t\"margin-top\": em(20, 20)\n\t\t},\n\t\t\"> :first-child\": { \"margin-top\": \"0\" },\n\t\t\"> :last-child\": { \"margin-bottom\": \"0\" }\n\t}\n};\n\n//#endregion\n//#region src/resolve.ts\nfunction resolveColorScheme(userColorScheme) {\n\tconst scheme = clone(defaultColorScheme);\n\tif (userColorScheme) for (const key in userColorScheme) {\n\t\tconst [color, invertColor] = toArray(userColorScheme[key]);\n\t\tconst [defaultColor, defaultInvertColor] = scheme[key];\n\t\tscheme[key] = [color ?? defaultColor, invertColor ?? defaultInvertColor];\n\t}\n\treturn scheme;\n}\nfunction resolveSizeScheme(userSizeScheme) {\n\tif (userSizeScheme) return mergeDeep(ProseDefaultSize, userSizeScheme);\n\treturn ProseDefaultSize;\n}\nfunction getCSS(preflights, options) {\n\tconst selectorName = options.selectorName || \"prose\";\n\tconst notProseSelector = `:not(:where([class~=\"not-${selectorName}\"],[class~=\"not-${selectorName}\"] *))`;\n\tconst important = options.important === true;\n\tlet css = \"\";\n\tfor (const [selectorOrKey, cssObjectOrValue] of Object.entries(preflights)) if (typeof cssObjectOrValue !== \"object\") css += `${selectorOrKey}:${cssObjectOrValue}${important ? \" !important\" : \"\"};`;\n\telse {\n\t\tconst [selectorOrGroup, pseudo] = selectorOrKey.split(\"::\");\n\t\tconst _selector = `:where(${selectorOrGroup})${notProseSelector}${pseudo ? `::${pseudo}` : \"\"}`;\n\t\tcss += `${_selector} {`;\n\t\tfor (const [key, value] of Object.entries(cssObjectOrValue)) css += `${key}:${value}${important ? \" !important\" : \"\"};`;\n\t\tcss += `}`;\n\t}\n\treturn css;\n}\nfunction getElements(modifier) {\n\tfor (const [name, ...selectors] of modifiers) if (name === modifier) return selectors.length > 0 ? selectors : [name];\n}\n\n//#endregion\n//#region src/index.ts\n/**\n* UnoCSS Preset for Typography\n*\n* ```js\n* // uno.config.ts\n* import { presetAttributify, presetWind3/4, defineConfig, presetTypography } from 'unocss'\n*\n* export default defineConfig({\n* presets: [\n* presetWind3/4(), // required!\n* presetAttributify(), // required if using attributify mode\n* presetTypography()\n* ]\n* })\n* ```\n*\n* @see https://unocss.dev/presets/typography\n* @returns typography preset\n* @public\n*/\nconst presetTypography = definePreset((options) => {\n\tconst selectorName = options?.selectorName ?? \"prose\";\n\tconst disableNotUtility = options?.compatibility?.noColonNot || options?.compatibility?.noColonWhere;\n\tconst cssVarPrefix = options?.cssVarPrefix ?? \"--un-prose\";\n\tconst resolvedColorScheme = resolveColorScheme(options?.colorScheme);\n\tconst resolvedSizeScheme = resolveSizeScheme(options?.sizeScheme);\n\tconst extended = (entries, theme) => {\n\t\treturn mergeDeep(entries, (typeof options?.cssExtend === \"function\" ? options?.cssExtend(theme) : options?.cssExtend) ?? {});\n\t};\n\tconst normalizeSelector = (s) => {\n\t\tif (typeof options?.important === \"string\") s = `${options.important} ${s}`;\n\t\tif (!options?.compatibility?.noColonIs) s = `:is(${s})`;\n\t\treturn s;\n\t};\n\tconst defaultRE = /* @__PURE__ */ new RegExp(`^${selectorName}-default$`);\n\tconst colorsRE = /* @__PURE__ */ new RegExp(`^${selectorName}-([-\\\\w]+)$`);\n\tconst sizeRE = /* @__PURE__ */ new RegExp(`^${selectorName}-(${Object.keys(resolvedSizeScheme).join(\"|\")})$`);\n\treturn {\n\t\tname: \"@unocss/preset-typography\",\n\t\tenforce: \"post\",\n\t\tlayers: { typography: -20 },\n\t\tshortcuts: [[\n\t\t\tselectorName,\n\t\t\t[`${selectorName}-default`, `${selectorName}-gray`],\n\t\t\t{ layer: \"typography\" }\n\t\t]],\n\t\trules: [\n\t\t\t[\n\t\t\t\tdefaultRE,\n\t\t\t\t(_, { symbols: symbols$1, theme }) => {\n\t\t\t\t\tconst css = getCSS(extended(mergeDeep(ProseDefaultCSSObject, ProseDefaultSize.base), theme), options ?? {});\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[symbols$1.body]: css,\n\t\t\t\t\t\t[symbols$1.selector]: normalizeSelector\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: \"typography\",\n\t\t\t\t\tautocomplete: \"prose\",\n\t\t\t\t\tinternal: true\n\t\t\t\t}\n\t\t\t],\n\t\t\t[\n\t\t\t\tcolorsRE,\n\t\t\t\t([, color], { theme, symbols: symbols$1 }) => {\n\t\t\t\t\tconst baseColor = theme.colors?.[color];\n\t\t\t\t\tif (!baseColor || typeof baseColor !== \"object\") return;\n\t\t\t\t\tif ([\n\t\t\t\t\t\t\"red\",\n\t\t\t\t\t\t\"orange\",\n\t\t\t\t\t\t\"amber\",\n\t\t\t\t\t\t\"yellow\",\n\t\t\t\t\t\t\"lime\",\n\t\t\t\t\t\t\"green\",\n\t\t\t\t\t\t\"emerald\",\n\t\t\t\t\t\t\"teal\",\n\t\t\t\t\t\t\"cyan\",\n\t\t\t\t\t\t\"sky\",\n\t\t\t\t\t\t\"blue\",\n\t\t\t\t\t\t\"indigo\",\n\t\t\t\t\t\t\"violet\",\n\t\t\t\t\t\t\"purple\",\n\t\t\t\t\t\t\"fuchsia\",\n\t\t\t\t\t\t\"pink\",\n\t\t\t\t\t\t\"rose\"\n\t\t\t\t\t].includes(color)) return {\n\t\t\t\t\t\t[`${cssVarPrefix}-links`]: baseColor[\"600\"],\n\t\t\t\t\t\t[`${cssVarPrefix}-invert-links`]: baseColor[\"500\"],\n\t\t\t\t\t\t[symbols$1.selector]: normalizeSelector\n\t\t\t\t\t};\n\t\t\t\t\telse return Object.entries(resolvedColorScheme).reduce((acc, [key, value]) => {\n\t\t\t\t\t\tconst [colorKey, invertKey] = value;\n\t\t\t\t\t\tconst resolve = (key$1) => baseColor[key$1] ?? theme[key$1] ?? key$1;\n\t\t\t\t\t\tconst color$1 = resolve(colorKey);\n\t\t\t\t\t\tconst invertColor = resolve(invertKey);\n\t\t\t\t\t\tconst cssVarColorKey = `${cssVarPrefix}-${key}`;\n\t\t\t\t\t\tconst cssVarInvertColorKey = `${cssVarPrefix}-invert-${key}`;\n\t\t\t\t\t\tacc[cssVarColorKey] = colorToString(color$1, `var(${cssVarColorKey}-opacity)`);\n\t\t\t\t\t\tacc[cssVarInvertColorKey] = colorToString(invertColor, `var(${cssVarInvertColorKey}-opacity)`);\n\t\t\t\t\t\tfor (const [c, k] of [[color$1, `${cssVarColorKey}-opacity`], [invertColor, `${cssVarInvertColorKey}-opacity`]]) if (alphaPlaceholders.some((p) => c.includes(p))) acc[k] = \"1\";\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, { [symbols$1.selector]: normalizeSelector });\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: \"typography\",\n\t\t\t\t\tautocomplete: `${selectorName}-$colors`\n\t\t\t\t}\n\t\t\t],\n\t\t\t[\n\t\t\t\tsizeRE,\n\t\t\t\t([, size], { symbols: symbols$1, theme }) => {\n\t\t\t\t\tconst css = getCSS(extended(resolvedSizeScheme[size], theme), options ?? {});\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[symbols$1.body]: css,\n\t\t\t\t\t\t[symbols$1.selector]: normalizeSelector\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlayer: \"typography\",\n\t\t\t\t\tautocomplete: `${selectorName}-(${Object.keys(resolvedSizeScheme).join(\"|\")})`\n\t\t\t\t}\n\t\t\t],\n\t\t\t[\n\t\t\t\t`${selectorName}-invert`,\n\t\t\t\t[{\n\t\t\t\t\t[`${cssVarPrefix}-body`]: `var(${cssVarPrefix}-invert-body)`,\n\t\t\t\t\t[`${cssVarPrefix}-headings`]: `var(${cssVarPrefix}-invert-headings)`,\n\t\t\t\t\t[`${cssVarPrefix}-lead`]: `var(${cssVarPrefix}-invert-lead)`,\n\t\t\t\t\t[`${cssVarPrefix}-links`]: `var(${cssVarPrefix}-invert-links)`,\n\t\t\t\t\t[`${cssVarPrefix}-bold`]: `var(${cssVarPrefix}-invert-bold)`,\n\t\t\t\t\t[`${cssVarPrefix}-counters`]: `var(${cssVarPrefix}-invert-counters)`,\n\t\t\t\t\t[`${cssVarPrefix}-bullets`]: `var(${cssVarPrefix}-invert-bullets)`,\n\t\t\t\t\t[`${cssVarPrefix}-hr`]: `var(${cssVarPrefix}-invert-hr)`,\n\t\t\t\t\t[`${cssVarPrefix}-quotes`]: `var(${cssVarPrefix}-invert-quotes)`,\n\t\t\t\t\t[`${cssVarPrefix}-quote-borders`]: `var(${cssVarPrefix}-invert-quote-borders)`,\n\t\t\t\t\t[`${cssVarPrefix}-captions`]: `var(${cssVarPrefix}-invert-captions)`,\n\t\t\t\t\t[`${cssVarPrefix}-kbd`]: `var(${cssVarPrefix}-invert-kbd)`,\n\t\t\t\t\t[`${cssVarPrefix}-kbd-shadows`]: `var(${cssVarPrefix}-invert-kbd-shadows)`,\n\t\t\t\t\t[`${cssVarPrefix}-code`]: `var(${cssVarPrefix}-invert-code)`,\n\t\t\t\t\t[`${cssVarPrefix}-pre-code`]: `var(${cssVarPrefix}-invert-pre-code)`,\n\t\t\t\t\t[`${cssVarPrefix}-pre-bg`]: `var(${cssVarPrefix}-invert-pre-bg)`,\n\t\t\t\t\t[`${cssVarPrefix}-th-borders`]: `var(${cssVarPrefix}-invert-th-borders)`,\n\t\t\t\t\t[`${cssVarPrefix}-td-borders`]: `var(${cssVarPrefix}-invert-td-borders)`,\n\t\t\t\t\t[symbols.selector]: normalizeSelector\n\t\t\t\t}],\n\t\t\t\t{ layer: \"typography\" }\n\t\t\t]\n\t\t],\n\t\tvariants: [{\n\t\t\tname: \"typography element modifiers\",\n\t\t\tmatch: (matcher) => {\n\t\t\t\tif (matcher.startsWith(`${selectorName}-`)) {\n\t\t\t\t\tconst modifyRe = /* @__PURE__ */ new RegExp(`^${selectorName}-(\\\\w+)[:-].+$`);\n\t\t\t\t\tconst modifier = matcher.match(modifyRe)?.[1];\n\t\t\t\t\tif (modifier) {\n\t\t\t\t\t\tconst elements = getElements(modifier);\n\t\t\t\t\t\tif (elements?.length) return {\n\t\t\t\t\t\t\tmatcher: matcher.slice(selectorName.length + modifier.length + 2),\n\t\t\t\t\t\t\tselector: (s) => {\n\t\t\t\t\t\t\t\tconst notProseSelector = `:not(:where([class~=\"not-${selectorName}\"],[class~=\"not-${selectorName}\"] *))`;\n\t\t\t\t\t\t\t\treturn disableNotUtility ? elements.map((e) => `${s} ${e}`).join(\",\") : `${s} :is(:where(${elements})${notProseSelector})`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tautocomplete: `${selectorName}-(${modifiers.map((m) => `${m[0]}:`).join(\"|\")})`\n\t\t}]\n\t};\n});\nvar src_default = presetTypography;\n\n//#endregion\nexport { src_default as default, presetTypography };", "//#region src/postprocess/important.ts\nfunction important({ important: option }) {\n\tif (option == null || option === false) return [];\n\tconst wrapWithIs = (selector) => {\n\t\tif (selector.startsWith(\":is(\") && selector.endsWith(\")\")) return selector;\n\t\tif (selector.includes(\"::\")) return selector.replace(/(.*?)((?:\\s\\*)?::.*)/, \":is($1)$2\");\n\t\treturn `:is(${selector})`;\n\t};\n\treturn [(util) => {\n\t\tif (util.layer === \"properties\") return;\n\t\tif (option === true) util.entries.forEach((i) => {\n\t\t\tif (i[1] != null && !String(i[1]).endsWith(\"!important\")) i[1] += \" !important\";\n\t\t});\n\t\telse if (!util.selector.startsWith(option)) util.selector = `${option} ${wrapWithIs(util.selector)}`;\n\t}];\n}\n\n//#endregion\n//#region src/postprocess/varPrefix.ts\nfunction varPrefix({ variablePrefix: prefix }) {\n\tconst processor = (obj) => {\n\t\tobj.entries.forEach((i) => {\n\t\t\ti[0] = i[0].replace(/^--un-/, `--${prefix}`);\n\t\t\tif (typeof i[1] === \"string\") i[1] = i[1].replace(/var\\(--un-/g, `var(--${prefix}`);\n\t\t});\n\t};\n\treturn prefix !== \"un-\" ? [processor] : [];\n}\n\n//#endregion\n//#region src/postprocess/default.ts\nfunction postprocessors(options) {\n\treturn [important, varPrefix].flatMap((i) => i(options));\n}\n\n//#endregion\nexport { important, postprocessors, varPrefix };", "//#region rolldown:runtime\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __exportAll = (all, symbols) => {\n\tlet target = {};\n\tfor (var name in all) {\n\t\t__defProp(target, name, {\n\t\t\tget: all[name],\n\t\t\tenumerable: true\n\t\t});\n\t}\n\tif (symbols) {\n\t\t__defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\t}\n\treturn target;\n};\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") {\n\t\tfor (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\t\tkey = keys[i];\n\t\t\tif (!__hasOwnProp.call(to, key) && key !== except) {\n\t\t\t\t__defProp(to, key, {\n\t\t\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\treturn to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n//#endregion\nexport { __reExport as n, __exportAll as t };", "import { n as __reExport, t as __exportAll } from \"./chunk-w_xFUvYo.mjs\";\nimport { escapeSelector, symbols, toArray } from \"@unocss/core\";\nimport { colorToString, createValueHandler, getStringComponent, getStringComponents, isInterpolatedMethod, parseCssColor } from \"@unocss/rule-utils\";\n\n//#region src/utils/constant.ts\nconst PRESET_NAME = \"@unocss/preset-wind4\";\nconst CONTROL_NO_NEGATIVE = \"$$mini-no-negative\";\nconst SpecialColorKey = {\n\ttransparent: \"transparent\",\n\tcurrent: \"currentColor\",\n\tinherit: \"inherit\"\n};\n\n//#endregion\n//#region src/utils/mappings.ts\nconst directionMap = {\n\t\"l\": [\"-left\"],\n\t\"r\": [\"-right\"],\n\t\"t\": [\"-top\"],\n\t\"b\": [\"-bottom\"],\n\t\"s\": [\"-inline-start\"],\n\t\"e\": [\"-inline-end\"],\n\t\"x\": [\"-inline\"],\n\t\"y\": [\"-block\"],\n\t\"\": [\"\"],\n\t\"bs\": [\"-block-start\"],\n\t\"be\": [\"-block-end\"],\n\t\"is\": [\"-inline-start\"],\n\t\"ie\": [\"-inline-end\"],\n\t\"block\": [\"-block-start\", \"-block-end\"],\n\t\"inline\": [\"-inline-start\", \"-inline-end\"]\n};\nconst insetMap = {\n\t...directionMap,\n\tx: [\"-inset-inline\"],\n\ty: [\"-inset-block\"],\n\ts: [\"-inset-inline-start\"],\n\tstart: [\"-inset-inline-start\"],\n\te: [\"-inset-inline-end\"],\n\tend: [\"-inset-inline-end\"],\n\tbs: [\"-inset-block-start\"],\n\tbe: [\"-inset-block-end\"],\n\tis: [\"-inset-inline-start\"],\n\tie: [\"-inset-inline-end\"],\n\tblock: [\"-inset-block-start\", \"-inset-block-end\"],\n\tinline: [\"-inset-inline-start\", \"-inset-inline-end\"]\n};\nconst cornerMap = {\n\t\"l\": [\"-top-left\", \"-bottom-left\"],\n\t\"r\": [\"-top-right\", \"-bottom-right\"],\n\t\"t\": [\"-top-left\", \"-top-right\"],\n\t\"b\": [\"-bottom-left\", \"-bottom-right\"],\n\t\"tl\": [\"-top-left\"],\n\t\"lt\": [\"-top-left\"],\n\t\"tr\": [\"-top-right\"],\n\t\"rt\": [\"-top-right\"],\n\t\"bl\": [\"-bottom-left\"],\n\t\"lb\": [\"-bottom-left\"],\n\t\"br\": [\"-bottom-right\"],\n\t\"rb\": [\"-bottom-right\"],\n\t\"\": [\"\"],\n\t\"bs\": [\"-start-start\", \"-start-end\"],\n\t\"be\": [\"-end-start\", \"-end-end\"],\n\t\"s\": [\"-end-start\", \"-start-start\"],\n\t\"is\": [\"-end-start\", \"-start-start\"],\n\t\"e\": [\"-start-end\", \"-end-end\"],\n\t\"ie\": [\"-start-end\", \"-end-end\"],\n\t\"ss\": [\"-start-start\"],\n\t\"bs-is\": [\"-start-start\"],\n\t\"is-bs\": [\"-start-start\"],\n\t\"se\": [\"-start-end\"],\n\t\"bs-ie\": [\"-start-end\"],\n\t\"ie-bs\": [\"-start-end\"],\n\t\"es\": [\"-end-start\"],\n\t\"be-is\": [\"-end-start\"],\n\t\"is-be\": [\"-end-start\"],\n\t\"ee\": [\"-end-end\"],\n\t\"be-ie\": [\"-end-end\"],\n\t\"ie-be\": [\"-end-end\"]\n};\nconst xyzMap = {\n\t\"x\": [\"-x\"],\n\t\"y\": [\"-y\"],\n\t\"z\": [\"-z\"],\n\t\"\": [\"-x\", \"-y\"]\n};\nconst xyzArray = [\n\t\"x\",\n\t\"y\",\n\t\"z\"\n];\nconst basePositionMap = [\n\t\"top\",\n\t\"top center\",\n\t\"top left\",\n\t\"top right\",\n\t\"bottom\",\n\t\"bottom center\",\n\t\"bottom left\",\n\t\"bottom right\",\n\t\"left\",\n\t\"left center\",\n\t\"left top\",\n\t\"left bottom\",\n\t\"right\",\n\t\"right center\",\n\t\"right top\",\n\t\"right bottom\",\n\t\"center\",\n\t\"center top\",\n\t\"center bottom\",\n\t\"center left\",\n\t\"center right\",\n\t\"center center\"\n];\nconst positionMap = Object.assign({}, ...basePositionMap.map((p) => ({ [p.replace(/ /, \"-\")]: p })), ...basePositionMap.map((p) => ({ [p.replace(/\\b(\\w)\\w+/g, \"$1\").replace(/ /, \"\")]: p })));\nconst globalKeywords = [\n\t\"inherit\",\n\t\"initial\",\n\t\"revert\",\n\t\"revert-layer\",\n\t\"unset\"\n];\nconst cssMathFnRE = /^(calc|clamp|min|max)\\s*\\((.+)\\)(.*)/;\nconst cssVarFnRE = /^(var)\\s*\\((.+)\\)(.*)/;\n\n//#endregion\n//#region src/utils/handlers/regex.ts\nconst numberWithUnitRE = /^(-?\\d*(?:\\.\\d+)?)(px|pt|pc|%|r?(?:em|ex|lh|cap|ch|ic)|(?:[sld]?v|cq)(?:[whib]|min|max)|in|cm|mm|rpx)?$/i;\nconst numberRE = /^(-?\\d*(?:\\.\\d+)?)$/;\nconst unitOnlyRE = /^(px|[sld]?v[wh])$/i;\nconst unitOnlyMap = {\n\tpx: 1,\n\tvw: 100,\n\tvh: 100,\n\tsvw: 100,\n\tsvh: 100,\n\tdvw: 100,\n\tdvh: 100,\n\tlvh: 100,\n\tlvw: 100\n};\nconst bracketTypeRe = /^\\[(color|image|length|size|position|quoted|string|number|family):/i;\nconst splitComma = /,(?![^()]*\\))/g;\nconst remRE = /(-?[.\\d]+)rem/g;\n\n//#endregion\n//#region src/utils/handlers/handlers.ts\nvar handlers_exports = /* @__PURE__ */ __exportAll({\n\tauto: () => auto,\n\tbracket: () => bracket,\n\tbracketOfColor: () => bracketOfColor,\n\tbracketOfFamily: () => bracketOfFamily,\n\tbracketOfLength: () => bracketOfLength,\n\tbracketOfNumber: () => bracketOfNumber,\n\tbracketOfPosition: () => bracketOfPosition,\n\tcssvar: () => cssvar,\n\tdegree: () => degree,\n\tfraction: () => fraction,\n\tglobal: () => global,\n\tnone: () => none,\n\tnumber: () => number,\n\tnumberWithUnit: () => numberWithUnit,\n\tpercent: () => percent,\n\tposition: () => position,\n\tproperties: () => properties,\n\tpx: () => px,\n\trem: () => rem,\n\ttime: () => time\n});\nconst cssProps = [\n\t\"color\",\n\t\"border-color\",\n\t\"background-color\",\n\t\"outline-color\",\n\t\"text-decoration-color\",\n\t\"flex-grow\",\n\t\"flex\",\n\t\"flex-shrink\",\n\t\"caret-color\",\n\t\"font\",\n\t\"gap\",\n\t\"opacity\",\n\t\"visibility\",\n\t\"z-index\",\n\t\"font-weight\",\n\t\"zoom\",\n\t\"text-shadow\",\n\t\"transform\",\n\t\"box-shadow\",\n\t\"border\",\n\t\"background-position\",\n\t\"left\",\n\t\"right\",\n\t\"top\",\n\t\"bottom\",\n\t\"object-position\",\n\t\"max-height\",\n\t\"min-height\",\n\t\"max-width\",\n\t\"min-width\",\n\t\"height\",\n\t\"width\",\n\t\"border-width\",\n\t\"margin\",\n\t\"padding\",\n\t\"outline-width\",\n\t\"outline-offset\",\n\t\"font-size\",\n\t\"line-height\",\n\t\"text-indent\",\n\t\"vertical-align\",\n\t\"border-spacing\",\n\t\"letter-spacing\",\n\t\"word-spacing\",\n\t\"stroke\",\n\t\"filter\",\n\t\"backdrop-filter\",\n\t\"fill\",\n\t\"mask\",\n\t\"mask-size\",\n\t\"mask-border\",\n\t\"clip-path\",\n\t\"clip\",\n\t\"border-radius\"\n];\nfunction round(n) {\n\treturn +n.toFixed(10);\n}\nfunction numberWithUnit(str) {\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (unit && !Number.isNaN(num)) return `${round(num)}${unit}`;\n}\nfunction auto(str) {\n\tif (str === \"auto\" || str === \"a\") return \"auto\";\n}\nfunction rem(str) {\n\tif (!str) return;\n\tif (unitOnlyRE.test(str)) return `${unitOnlyMap[str]}${str}`;\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num / 4)}rem`;\n\t}\n}\nfunction px(str) {\n\tif (unitOnlyRE.test(str)) return `${unitOnlyMap[str]}${str}`;\n\tconst match = str.match(numberWithUnitRE);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) return unit ? `${round(num)}${unit}` : `${round(num)}px`;\n}\nfunction number(str) {\n\tif (!numberRE.test(str)) return;\n\tconst num = Number.parseFloat(str);\n\tif (!Number.isNaN(num)) return round(num);\n}\nfunction percent(str) {\n\tif (str.endsWith(\"%\")) str = str.slice(0, -1);\n\tconst num = number(str);\n\tif (num != null) return `${num}%`;\n}\nfunction fraction(str) {\n\tif (!str) return;\n\tif (str === \"full\") return \"100%\";\n\tconst [left, right] = str.split(\"/\");\n\tconst num = Number.parseFloat(left) / Number.parseFloat(right);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0\";\n\t\treturn `${round(num * 100)}%`;\n\t}\n}\nfunction processThemeVariable(name, key, paths, theme) {\n\tconst valOrObj = getThemeByKey(theme, key, paths);\n\tconst hasDefault = typeof valOrObj === \"object\" && \"DEFAULT\" in valOrObj;\n\tif (hasDefault) paths.push(\"DEFAULT\");\n\tconst val = hasDefault ? valOrObj.DEFAULT : valOrObj;\n\tconst varKey = hasDefault && key !== \"spacing\" ? `${name}.DEFAULT` : name;\n\tif (val != null) themeTracking(key, paths.length ? paths : void 0);\n\treturn {\n\t\tval,\n\t\tvarKey\n\t};\n}\nfunction bracketWithType(str, requiredType, theme) {\n\tif (str && str.startsWith(\"[\") && str.endsWith(\"]\")) {\n\t\tlet base;\n\t\tlet hintedType;\n\t\tconst match = str.match(bracketTypeRe);\n\t\tif (!match) base = str.slice(1, -1);\n\t\telse {\n\t\t\tif (!requiredType) hintedType = match[1];\n\t\t\telse if (match[1] !== requiredType) return;\n\t\t\tbase = str.slice(match[0].length, -1);\n\t\t}\n\t\tif (!base) return;\n\t\tif (base === \"=\\\"\\\"\") return;\n\t\tif (base.startsWith(\"--\")) {\n\t\t\tconst calcMatch = base.match(/^--([\\w.-]+)\\(([^)]+)\\)$/);\n\t\t\tif (calcMatch != null && theme) {\n\t\t\t\tconst [, name, factor] = calcMatch;\n\t\t\t\tconst [key, ...paths] = name.split(\".\");\n\t\t\t\tconst { val, varKey } = processThemeVariable(name, key, paths, theme);\n\t\t\t\tif (val != null) base = `calc(var(--${escapeSelector(varKey.replaceAll(\".\", \"-\"))}) * ${factor})`;\n\t\t\t} else {\n\t\t\t\tconst [name, defaultValue] = base.slice(2).split(\",\");\n\t\t\t\tconst suffix = defaultValue ? `, ${defaultValue}` : \"\";\n\t\t\t\tconst escapedName = escapeSelector(name);\n\t\t\t\tif (theme) {\n\t\t\t\t\tconst [key, ...paths] = name.split(\".\");\n\t\t\t\t\tconst { val, varKey } = processThemeVariable(name, key, paths, theme);\n\t\t\t\t\tbase = val != null ? `var(--${escapeSelector(varKey.replaceAll(\".\", \"-\"))}${suffix})` : `var(--${escapedName}${suffix})`;\n\t\t\t\t} else base = `var(--${escapedName}${suffix})`;\n\t\t\t}\n\t\t}\n\t\tlet curly = 0;\n\t\tfor (const i of base) if (i === \"[\") curly += 1;\n\t\telse if (i === \"]\") {\n\t\t\tcurly -= 1;\n\t\t\tif (curly < 0) return;\n\t\t}\n\t\tif (curly) return;\n\t\tswitch (hintedType) {\n\t\t\tcase \"string\": return base.replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\");\n\t\t\tcase \"quoted\": return base.replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\").replace(/([\"\\\\])/g, \"\\\\$1\").replace(/^(.+)$/, \"\\\"$1\\\"\");\n\t\t}\n\t\treturn base.replace(/(url\\(.*?\\))/g, (v) => v.replace(/_/g, \"\\\\_\")).replace(/(^|[^\\\\])_/g, \"$1 \").replace(/\\\\_/g, \"_\").replace(/(?:calc|clamp|max|min)\\((.*)/g, (match$1) => {\n\t\t\tconst vars = [];\n\t\t\treturn match$1.replace(/var\\((--.+?)[,)]/g, (match$2, g1) => {\n\t\t\t\tvars.push(g1);\n\t\t\t\treturn match$2.replace(g1, \"--un-calc\");\n\t\t\t}).replace(/(-?\\d*\\.?\\d(?!-\\d.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \").replace(/--un-calc/g, () => vars.shift());\n\t\t});\n\t}\n}\nfunction bracket(str, theme) {\n\treturn bracketWithType(str, void 0, theme);\n}\nfunction bracketOfColor(str, theme) {\n\treturn bracketWithType(str, \"color\", theme);\n}\nfunction bracketOfLength(str, theme) {\n\treturn bracketWithType(str, \"length\", theme) || bracketWithType(str, \"size\", theme);\n}\nfunction bracketOfPosition(str, theme) {\n\treturn bracketWithType(str, \"position\", theme);\n}\nfunction bracketOfFamily(str, theme) {\n\treturn bracketWithType(str, \"family\", theme);\n}\nfunction bracketOfNumber(str, theme) {\n\treturn bracketWithType(str, \"number\", theme);\n}\nfunction cssvar(str) {\n\tif (str.startsWith(\"var(\")) return str;\n\tconst match = str.match(/^(?:\\$|--)([^\\s'\"`;{}]+)$/);\n\tif (match) {\n\t\tconst [name, defaultValue] = match[1].split(\",\");\n\t\treturn `var(--${escapeSelector(name)}${defaultValue ? `, ${defaultValue}` : \"\"})`;\n\t}\n}\nfunction time(str) {\n\tconst match = str.match(/^(-?[0-9.]+)(s|ms)?$/i);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0 && !unit) return \"0s\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num)}ms`;\n\t}\n}\nfunction degree(str) {\n\tconst match = str.match(/^(-?[0-9.]+)(deg|rad|grad|turn)?$/i);\n\tif (!match) return;\n\tconst [, n, unit] = match;\n\tconst num = Number.parseFloat(n);\n\tif (!Number.isNaN(num)) {\n\t\tif (num === 0) return \"0deg\";\n\t\treturn unit ? `${round(num)}${unit}` : `${round(num)}deg`;\n\t}\n}\nfunction global(str) {\n\tif (globalKeywords.includes(str)) return str;\n}\nfunction properties(str) {\n\tif (str.split(\",\").every((prop) => cssProps.includes(prop))) return str;\n}\nfunction position(str) {\n\tif ([\n\t\t\"top\",\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"bottom\",\n\t\t\"center\"\n\t].includes(str)) return str;\n}\nfunction none(str) {\n\tif (str === \"none\") return \"none\";\n}\n\n//#endregion\n//#region src/utils/handlers/index.ts\nconst handler = createValueHandler(handlers_exports);\nconst h = handler;\n\n//#endregion\n//#region src/utils/utilities.ts\nfunction numberResolver(size, defaultValue) {\n\tconst v = h.number(size) ?? defaultValue;\n\tif (v != null) {\n\t\tlet num = Number(v);\n\t\tif (String(v).endsWith(\"%\")) num = Number(String(v).slice(0, -1)) / 100;\n\t\treturn num;\n\t}\n}\n/**\n* Returns a {@link DynamicMatcher} that generates spacing CSS properties for directional utilities.\n*\n* @param property - The base CSS property name (e.g. 'margin', 'padding').\n* @param map - Optional mapping of direction keys to property postfixes. Defaults to {@link directionMap}.\n* @param formatter - Optional function to format the final property name. Defaults to `(p, d) => \\`\\${p}\\${d}\\``.\n*/\nfunction directionSize(property, map = directionMap, formatter = (p, d) => `${p}${d}`) {\n\treturn (([_, direction, size = \"4\"], { theme }) => {\n\t\tif (size != null && direction != null) {\n\t\t\tlet v;\n\t\t\tconst isNegative = size.startsWith(\"-\");\n\t\t\tif (isNegative) size = size.slice(1);\n\t\t\tv = numberResolver(size);\n\t\t\tif (v != null && !Number.isNaN(v)) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\treturn map[direction].map((i) => [formatter(property, i), `calc(var(--spacing) * ${isNegative ? \"-\" : \"\"}${v})`]);\n\t\t\t} else if (theme.spacing && size in theme.spacing) {\n\t\t\t\tthemeTracking(\"spacing\", size);\n\t\t\t\treturn map[direction].map((i) => [formatter(property, i), isNegative ? `calc(var(--${escapeSelector(`spacing-${size}`)}) * -1)` : `var(--${escapeSelector(`spacing-${size}`)})`]);\n\t\t\t}\n\t\t\tv = h.bracket.cssvar.global.auto.fraction.rem(isNegative ? `-${size}` : size, theme);\n\t\t\tif (v != null) return map[direction].map((i) => [formatter(property, i), v]);\n\t\t}\n\t});\n}\n/**\n* Split utility shorthand delimited by / or :\n*/\nfunction splitShorthand(body, type) {\n\tconst [front, rest] = getStringComponent(body, \"[\", \"]\", [\"/\", \":\"]) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === type) return [front, rest];\n\t}\n}\n/**\n* Parse color string into {@link ParsedColorValue} (if possible). Color value will first be matched to theme object before parsing.\n* See also color.tests.ts for more examples.\n*\n* @example Parseable strings:\n* 'red' // From theme, if 'red' is available\n* 'red-100' // From theme, plus scale\n* 'red-100/20' // From theme, plus scale/opacity\n* '[rgb(100 2 3)]/[var(--op)]' // Bracket with rgb color and bracket with opacity\n* '[rgb(100 2 3)]/[var(--op)]/[in_oklab]' // Bracket with rgb color, bracket with opacity and bracket with interpolation method\n*\n* @param body - Color string to be parsed.\n* @param theme - {@link Theme} object.\n* @return object if string is parseable.\n*/\nfunction parseColor(body, theme) {\n\tlet split;\n\tconst [front, ...rest] = getStringComponents(body, [\"/\", \":\"], 3) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === \"color\") split = [front, ...rest];\n\t}\n\tif (!split) return;\n\tlet opacity;\n\tlet [main, opacityOrModifier, modifier] = split;\n\tif (isInterpolatedMethod(opacityOrModifier) || isInterpolatedMethod(h.bracket(opacityOrModifier ?? \"\"))) modifier = opacityOrModifier;\n\telse opacity = opacityOrModifier;\n\tconst colors = main.replace(/([a-z])(\\d)(?![-_a-z])/g, \"$1-$2\").split(/-/g);\n\tconst [name] = colors;\n\tif (!name) return;\n\tlet parsed = parseThemeColor(theme, colors);\n\tif (!parsed && colors.length >= 2) {\n\t\tconst last = colors.at(-1);\n\t\tconst secondLast = colors.at(-2);\n\t\tif (/^\\d+$/.test(last)) parsed = parseThemeColor(theme, colors.slice(0, -2).concat([`${secondLast}${last}`]));\n\t}\n\tlet { no, keys, color } = parsed ?? {};\n\tif (!color) {\n\t\tconst bracket$1 = h.bracketOfColor(main, theme);\n\t\tconst bracketOrMain = bracket$1 || main;\n\t\tif (h.numberWithUnit(bracketOrMain)) return;\n\t\tif (/^#[\\da-f]+$/i.test(bracketOrMain)) color = bracketOrMain;\n\t\telse if (/^hex-[\\da-fA-F]+$/.test(bracketOrMain)) color = `#${bracketOrMain.slice(4)}`;\n\t\telse if (main.startsWith(\"$\")) color = h.cssvar(main);\n\t\tcolor = color || bracket$1;\n\t}\n\treturn {\n\t\topacity,\n\t\tmodifier: modifier && h.bracket.cssvar(modifier) || modifier,\n\t\tname,\n\t\tno,\n\t\tcolor: color ?? SpecialColorKey[name],\n\t\talpha: h.bracket.cssvar.percent(opacity ?? \"\"),\n\t\tkeys,\n\t\tget cssColor() {\n\t\t\treturn parseCssColor(this.color);\n\t\t}\n\t};\n}\nfunction parseThemeColor(theme, keys) {\n\tlet color;\n\tlet no;\n\tlet key;\n\tconst colorData = getThemeByKey(theme, \"colors\", keys);\n\tif (typeof colorData === \"object\") {\n\t\tif (\"DEFAULT\" in colorData) {\n\t\t\tcolor = colorData.DEFAULT;\n\t\t\tno = \"DEFAULT\";\n\t\t\tkey = [...keys, no];\n\t\t}\n\t} else if (typeof colorData === \"string\") {\n\t\tcolor = colorData;\n\t\tkey = keys;\n\t\tno = keys.at(-1);\n\t}\n\tif (!color) return;\n\treturn {\n\t\tcolor,\n\t\tno,\n\t\tkeys: key\n\t};\n}\nfunction getThemeByKey(theme, themeKey, keys) {\n\tconst obj = theme[themeKey];\n\tfunction deepGet(current, path) {\n\t\tif (path.length === 0) return current;\n\t\tif (!current || typeof current !== \"object\") return void 0;\n\t\tfor (let i = path.length; i > 0; i--) {\n\t\t\tconst flatKey = path.slice(0, i).join(\"-\");\n\t\t\tif (flatKey in current) {\n\t\t\t\tconst v = current[flatKey];\n\t\t\t\tif (i === path.length) return v;\n\t\t\t\treturn deepGet(v, path.slice(i));\n\t\t\t}\n\t\t}\n\t}\n\treturn deepGet(obj, keys);\n}\nfunction colorCSSGenerator(data, property, varName, ctx) {\n\tif (!data) return;\n\tconst { color, keys, alpha, modifier } = data;\n\tconst rawColorComment = ctx?.generator.config.envMode === \"dev\" && color ? ` /* ${color} */` : \"\";\n\tconst css = {};\n\tif (color) {\n\t\tconst result = [css];\n\t\tconst isCSSVar = color.includes(\"var(\");\n\t\tconst isSpecial = Object.values(SpecialColorKey).includes(color);\n\t\tif (isSpecial && !alpha) {\n\t\t\tcss[property] = color;\n\t\t\treturn result;\n\t\t}\n\t\tconst alphaKey = `--un-${varName}-opacity`;\n\t\tconst value = keys && !isCSSVar && !isSpecial ? generateThemeVariable(\"colors\", keys) : color;\n\t\tlet method = modifier ?? (keys ? \"in srgb\" : \"in oklab\");\n\t\tif (!method.startsWith(\"in \") && !method.startsWith(\"var(\")) method = `in ${method}`;\n\t\tcss[property] = `color-mix(${method}, ${value} ${alpha ?? `var(${alphaKey})`}, transparent)${rawColorComment}`;\n\t\tresult.push(defineProperty(alphaKey, {\n\t\t\tsyntax: \"<percentage>\",\n\t\t\tinitialValue: \"100%\"\n\t\t}));\n\t\tif (!isSpecial) {\n\t\t\tif (keys && !isCSSVar) {\n\t\t\t\tthemeTracking(`colors`, keys);\n\t\t\t\tif (!modifier) {\n\t\t\t\t\tconst colorValue = [\n\t\t\t\t\t\t\"shadow\",\n\t\t\t\t\t\t\"inset-shadow\",\n\t\t\t\t\t\t\"text-shadow\",\n\t\t\t\t\t\t\"drop-shadow\"\n\t\t\t\t\t].includes(varName) ? `${alpha ? `color-mix(in oklab, ${value} ${alpha}, transparent)` : `${value}`} var(${alphaKey})` : `${value} ${alpha ?? `var(${alphaKey})`}`;\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\t[symbols.parent]: \"@supports (color: color-mix(in lab, red, red))\",\n\t\t\t\t\t\t[symbols.noMerge]: true,\n\t\t\t\t\t\t[property]: `color-mix(in oklab, ${colorValue}, transparent)${rawColorComment}`\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ctx?.theme) detectThemeValue(color, ctx.theme);\n\t\t}\n\t\treturn result;\n\t}\n}\nfunction colorResolver(property, varName) {\n\treturn ([, body], ctx) => {\n\t\tconst data = parseColor(body ?? \"\", ctx.theme);\n\t\tif (!data) return;\n\t\treturn colorCSSGenerator(data, property, varName, ctx);\n\t};\n}\nfunction colorableShadows(shadows, colorVar, alpha) {\n\tconst colored = [];\n\tshadows = toArray(shadows);\n\tfor (let i = 0; i < shadows.length; i++) {\n\t\tconst components = getStringComponents(shadows[i], \" \", 6);\n\t\tif (!components || components.length < 3) return shadows;\n\t\tlet isInset = false;\n\t\tconst pos = components.indexOf(\"inset\");\n\t\tif (pos !== -1) {\n\t\t\tcomponents.splice(pos, 1);\n\t\t\tisInset = true;\n\t\t}\n\t\tlet colorVarValue = \"\";\n\t\tconst lastComp = components.at(-1);\n\t\tif (parseCssColor(components.at(0))) {\n\t\t\tconst color = parseCssColor(components.shift());\n\t\t\tif (color) colorVarValue = colorToString(color);\n\t\t} else if (parseCssColor(lastComp)) {\n\t\t\tconst color = parseCssColor(components.pop());\n\t\t\tif (color) colorVarValue = colorToString(color);\n\t\t} else if (lastComp && lastComp.startsWith(\"var(\")) {\n\t\t\tconst color = components.pop();\n\t\t\tif (color) colorVarValue = color;\n\t\t}\n\t\tcolored.push(`${isInset ? \"inset \" : \"\"}${components.join(\" \")} var(${colorVar}, ${alpha ? `oklab(from ${colorVarValue} l a b / ${alpha})` : colorVarValue})`);\n\t}\n\treturn colored;\n}\nfunction hasParseableColor(color, theme) {\n\treturn color != null && !!parseColor(color, theme)?.color;\n}\nconst reLetters = /[a-z]+/gi;\nconst resolvedBreakpoints = /* @__PURE__ */ new WeakMap();\nfunction resolveBreakpoints({ theme, generator }, key = \"breakpoint\") {\n\tconst breakpoints = (generator?.userConfig?.theme)?.[key] || theme[key];\n\tif (!breakpoints) return void 0;\n\tif (resolvedBreakpoints.has(theme)) return resolvedBreakpoints.get(theme);\n\tconst resolved = Object.entries(breakpoints).sort((a, b) => Number.parseInt(a[1].replace(reLetters, \"\")) - Number.parseInt(b[1].replace(reLetters, \"\"))).map(([point, size]) => ({\n\t\tpoint,\n\t\tsize\n\t}));\n\tresolvedBreakpoints.set(theme, resolved);\n\treturn resolved;\n}\nfunction resolveVerticalBreakpoints(context) {\n\treturn resolveBreakpoints(context, \"verticalBreakpoint\");\n}\nfunction makeGlobalStaticRules(prefix, property) {\n\treturn globalKeywords.map((keyword) => [`${prefix}-${keyword}`, { [property ?? prefix]: keyword }]);\n}\nfunction defineProperty(property, options = {}) {\n\tconst { syntax = \"*\", inherits = false, initialValue } = options;\n\tconst value = {\n\t\t[symbols.shortcutsNoMerge]: true,\n\t\t[symbols.noMerge]: true,\n\t\t[symbols.variants]: () => [{\n\t\t\tparent: \"\",\n\t\t\tlayer: \"properties\",\n\t\t\tselector: () => `@property ${property}`\n\t\t}],\n\t\tsyntax: JSON.stringify(syntax),\n\t\tinherits: inherits ? \"true\" : \"false\"\n\t};\n\tif (initialValue != null) value[\"initial-value\"] = initialValue;\n\tpropertyTracking(property, initialValue ? String(initialValue) : \"initial\");\n\treturn value;\n}\nfunction isCSSMathFn(value) {\n\treturn value != null && cssMathFnRE.test(value);\n}\nfunction isSize(str) {\n\tif (str[0] === \"[\" && str.slice(-1) === \"]\") str = str.slice(1, -1);\n\treturn cssMathFnRE.test(str) || numberWithUnitRE.test(str);\n}\nfunction camelize(str) {\n\treturn str.replace(/-(\\w)/g, (_, c) => c ? c.toUpperCase() : \"\");\n}\nfunction hyphenate(str) {\n\treturn str.replace(/(?:^|\\B)([A-Z])/g, \"-$1\").toLowerCase();\n}\nfunction compressCSS(css, isDev = false) {\n\tif (isDev) return css.trim();\n\treturn css.trim().replace(/\\s+/g, \" \").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n}\n\n//#endregion\n//#region src/utils/track.ts\n/**\n* Used to track theme keys.\n*\n* eg: colors:red-100\n*\n* @internal\n*/\nconst trackedTheme = /* @__PURE__ */ new Set([]);\nfunction themeTracking(key, props = \"DEFAULT\") {\n\tconst k = `${key}:${toArray(props).join(\"-\")}`;\n\tif (!trackedTheme.has(k)) trackedTheme.add(k);\n}\nfunction generateThemeVariable(key, props) {\n\treturn `var(--${key}-${toArray(props).join(\"-\")})`;\n}\nfunction detectThemeValue(value, theme) {\n\tif (value.startsWith(\"var(\")) {\n\t\tconst variable = value.match(/var\\(--([\\w-]+)(?:,.*)?\\)/)?.[1];\n\t\tif (variable) {\n\t\t\tconst [key, ...path] = variable.split(\"-\");\n\t\t\tconst themeValue = getThemeByKey(theme, key, path);\n\t\t\tif (typeof themeValue === \"string\") {\n\t\t\t\tthemeTracking(key, path);\n\t\t\t\tdetectThemeValue(themeValue, theme);\n\t\t\t}\n\t\t}\n\t}\n}\nconst trackedProperties = /* @__PURE__ */ new Map();\nfunction propertyTracking(property, value) {\n\tif (!trackedProperties.has(property)) trackedProperties.set(property, value);\n}\n\n//#endregion\n//#region src/utils/unit-resolver.ts\nfunction createRemToPxProcessor(base = 16) {\n\tfunction resolver(utility) {\n\t\tif (typeof utility[1] === \"string\" && remRE.test(utility[1])) utility[1] = utility[1].replace(remRE, (_, p1) => `${p1 * base}px`);\n\t}\n\treturn (utilObjectOrEntry) => {\n\t\tif (Array.isArray(utilObjectOrEntry)) resolver(utilObjectOrEntry);\n\t\telse utilObjectOrEntry.entries.forEach(resolver);\n\t};\n}\n\n//#endregion\n//#region src/utils.ts\nvar utils_exports = /* @__PURE__ */ __exportAll({\n\tCONTROL_NO_NEGATIVE: () => CONTROL_NO_NEGATIVE,\n\tPRESET_NAME: () => PRESET_NAME,\n\tSpecialColorKey: () => SpecialColorKey,\n\tcamelize: () => camelize,\n\tcolorCSSGenerator: () => colorCSSGenerator,\n\tcolorResolver: () => colorResolver,\n\tcolorableShadows: () => colorableShadows,\n\tcompressCSS: () => compressCSS,\n\tcornerMap: () => cornerMap,\n\tcreateRemToPxProcessor: () => createRemToPxProcessor,\n\tcssMathFnRE: () => cssMathFnRE,\n\tcssVarFnRE: () => cssVarFnRE,\n\tdefineProperty: () => defineProperty,\n\tdetectThemeValue: () => detectThemeValue,\n\tdirectionMap: () => directionMap,\n\tdirectionSize: () => directionSize,\n\tgenerateThemeVariable: () => generateThemeVariable,\n\tgetThemeByKey: () => getThemeByKey,\n\tglobalKeywords: () => globalKeywords,\n\th: () => h,\n\thandler: () => handler,\n\thasParseableColor: () => hasParseableColor,\n\thyphenate: () => hyphenate,\n\tinsetMap: () => insetMap,\n\tisCSSMathFn: () => isCSSMathFn,\n\tisSize: () => isSize,\n\tmakeGlobalStaticRules: () => makeGlobalStaticRules,\n\tnumberResolver: () => numberResolver,\n\tparseColor: () => parseColor,\n\tparseThemeColor: () => parseThemeColor,\n\tpositionMap: () => positionMap,\n\tpropertyTracking: () => propertyTracking,\n\tresolveBreakpoints: () => resolveBreakpoints,\n\tresolveVerticalBreakpoints: () => resolveVerticalBreakpoints,\n\tsplitShorthand: () => splitShorthand,\n\tthemeTracking: () => themeTracking,\n\ttrackedProperties: () => trackedProperties,\n\ttrackedTheme: () => trackedTheme,\n\tvalueHandlers: () => handlers_exports,\n\txyzArray: () => xyzArray,\n\txyzMap: () => xyzMap\n});\n\n//#endregion\nexport { bracketTypeRe as A, xyzMap as B, parseThemeColor as C, h as D, splitShorthand as E, directionMap as F, PRESET_NAME as H, globalKeywords as I, insetMap as L, cornerMap as M, cssMathFnRE as N, handler as O, cssVarFnRE as P, positionMap as R, parseColor as S, resolveVerticalBreakpoints as T, SpecialColorKey as U, CONTROL_NO_NEGATIVE as V, hyphenate as _, themeTracking as a, makeGlobalStaticRules as b, camelize as c, colorableShadows as d, compressCSS as f, hasParseableColor as g, getThemeByKey as h, propertyTracking as i, splitComma as j, handlers_exports as k, colorCSSGenerator as l, directionSize as m, detectThemeValue as n, trackedProperties as o, defineProperty as p, generateThemeVariable as r, trackedTheme as s, createRemToPxProcessor as t, colorResolver as u, isCSSMathFn as v, resolveBreakpoints as w, numberResolver as x, isSize as y, xyzArray as z };", "import { w as resolveBreakpoints } from \"./utils-BiCtQrPC.mjs\";\nimport { isString } from \"@unocss/core\";\n\n//#region src/rules/container.ts\nconst containerParent = [[/^@container(?:\\/(\\w+))?(?:-(normal))?$/, ([, l, v]) => {\n\treturn {\n\t\t\"container-type\": v ?? \"inline-size\",\n\t\t\"container-name\": l\n\t};\n}]];\nconst queryMatcher = /@media \\(min-width: (.+)\\)/;\nconst container = [[\n\t/^__container$/,\n\t(_, context) => {\n\t\tconst { theme, variantHandlers } = context;\n\t\tconst themePadding = theme.containers?.padding;\n\t\tlet padding;\n\t\tif (isString(themePadding)) padding = themePadding;\n\t\telse padding = themePadding?.DEFAULT;\n\t\tconst themeMaxWidth = theme.containers?.maxWidth;\n\t\tlet maxWidth;\n\t\tfor (const v of variantHandlers) {\n\t\t\tconst query = v.handle?.({}, (x) => x)?.parent;\n\t\t\tif (isString(query)) {\n\t\t\t\tconst match = query.match(queryMatcher)?.[1];\n\t\t\t\tif (match) {\n\t\t\t\t\tconst matchBp = (resolveBreakpoints(context) ?? []).find((i) => i.size === match)?.point;\n\t\t\t\t\tif (!themeMaxWidth) maxWidth = match;\n\t\t\t\t\telse if (matchBp) maxWidth = themeMaxWidth?.[matchBp];\n\t\t\t\t\tif (matchBp && !isString(themePadding)) padding = themePadding?.[matchBp] ?? padding;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst css = { \"max-width\": maxWidth };\n\t\tif (!variantHandlers.length) css.width = \"100%\";\n\t\tif (theme.containers?.center) {\n\t\t\tcss[\"margin-left\"] = \"auto\";\n\t\t\tcss[\"margin-right\"] = \"auto\";\n\t\t}\n\t\tif (themePadding) {\n\t\t\tcss[\"padding-left\"] = padding;\n\t\t\tcss[\"padding-right\"] = padding;\n\t\t}\n\t\treturn css;\n\t},\n\t{ internal: true }\n]];\nconst containerShortcuts = [[/^(?:(\\w+)[:-])?container$/, ([, bp], context) => {\n\tlet points = (resolveBreakpoints(context) ?? []).map((i) => i.point);\n\tif (bp) {\n\t\tif (!points.includes(bp)) return;\n\t\tpoints = points.slice(points.indexOf(bp));\n\t}\n\tconst shortcuts = points.map((p) => `${p}:__container`);\n\tif (!bp) shortcuts.unshift(\"__container\");\n\treturn shortcuts;\n}]];\n\n//#endregion\nexport { containerParent as n, containerShortcuts as r, container as t };", "import { A as bracketTypeRe, B as xyzMap, D as h, F as directionMap, I as globalKeywords, L as insetMap, M as cornerMap, R as positionMap, S as parseColor, U as SpecialColorKey, V as CONTROL_NO_NEGATIVE, _ as hyphenate, a as themeTracking, b as makeGlobalStaticRules, d as colorableShadows, g as hasParseableColor, j as splitComma, l as colorCSSGenerator, m as directionSize, n as detectThemeValue, p as defineProperty, r as generateThemeVariable, u as colorResolver, v as isCSSMathFn, w as resolveBreakpoints, x as numberResolver, y as isSize, z as xyzArray } from \"./utils-BiCtQrPC.mjs\";\nimport { n as containerParent, r as containerShortcuts, t as container } from \"./container-Bma9LDm4.mjs\";\nimport { notNull, symbols } from \"@unocss/core\";\nimport { getStringComponent, getStringComponents } from \"@unocss/rule-utils\";\n\n//#region src/rules/align.ts\nconst verticalAlignAlias = {\n\t\"mid\": \"middle\",\n\t\"base\": \"baseline\",\n\t\"btm\": \"bottom\",\n\t\"baseline\": \"baseline\",\n\t\"top\": \"top\",\n\t\"start\": \"top\",\n\t\"middle\": \"middle\",\n\t\"bottom\": \"bottom\",\n\t\"end\": \"bottom\",\n\t\"text-top\": \"text-top\",\n\t\"text-bottom\": \"text-bottom\",\n\t\"sub\": \"sub\",\n\t\"super\": \"super\",\n\t...Object.fromEntries(globalKeywords.map((x) => [x, x]))\n};\nconst verticalAligns = [[\n\t/^(?:vertical|align|v)-(.+)$/,\n\t([, v]) => ({ \"vertical-align\": verticalAlignAlias[v] ?? h.bracket.cssvar.numberWithUnit(v) }),\n\t{ autocomplete: [`(vertical|align|v)-(${Object.keys(verticalAlignAlias).join(\"|\")})`, \"(vertical|align|v)-<percentage>\"] }\n]];\nconst textAlignValues = [\n\t\"center\",\n\t\"left\",\n\t\"right\",\n\t\"justify\",\n\t\"start\",\n\t\"end\"\n];\nconst textAligns = [...textAlignValues.map((v) => [`text-${v}`, { \"text-align\": v }]), ...[...globalKeywords, ...textAlignValues].map((v) => [`text-align-${v}`, { \"text-align\": v }])];\n\n//#endregion\n//#region src/rules/animation.ts\nconst animations = [\n\t[\n\t\t/^(?:animate-)?keyframes-(.+)$/,\n\t\t([, name], { theme }) => {\n\t\t\tconst kf = theme.animation?.keyframes?.[name];\n\t\t\tif (kf) return [`@keyframes ${name}${kf}`, { animation: name }];\n\t\t},\n\t\t{ autocomplete: [\"animate-keyframes-$animation.keyframes\", \"keyframes-$animation.keyframes\"] }\n\t],\n\t[\n\t\t/^animate-(.+)$/,\n\t\t([, name], { theme }) => {\n\t\t\tconst kf = theme.animation?.keyframes?.[name];\n\t\t\tif (kf) {\n\t\t\t\tconst duration = theme.animation?.durations?.[name] ?? \"1s\";\n\t\t\t\tconst timing = theme.animation?.timingFns?.[name] ?? \"linear\";\n\t\t\t\tconst count = theme.animation?.counts?.[name] ?? 1;\n\t\t\t\tconst props = theme.animation?.properties?.[name];\n\t\t\t\treturn [`@keyframes ${name}${kf}`, {\n\t\t\t\t\tanimation: `${name} ${duration} ${timing} ${count}`,\n\t\t\t\t\t...props\n\t\t\t\t}];\n\t\t\t}\n\t\t\treturn { animation: h.bracket.cssvar(name) };\n\t\t},\n\t\t{ autocomplete: \"animate-$animation.keyframes\" }\n\t],\n\t[/^animate-name-(.+)/, ([, d]) => ({ \"animation-name\": h.bracket.cssvar(d) ?? d })],\n\t[\n\t\t/^animate-duration-(.+)$/,\n\t\t([, d], { theme }) => ({ \"animation-duration\": theme.duration?.[d || \"DEFAULT\"] ?? h.bracket.cssvar.time(d) }),\n\t\t{ autocomplete: [\"animate-duration\"] }\n\t],\n\t[\n\t\t/^animate-delay-(.+)$/,\n\t\t([, d], { theme }) => ({ \"animation-delay\": theme.duration?.[d || \"DEFAULT\"] ?? h.bracket.cssvar.time(d) }),\n\t\t{ autocomplete: [\"animate-delay\"] }\n\t],\n\t[\n\t\t/^animate-ease(?:-(.+))?$/,\n\t\t([, d], { theme }) => ({ \"animation-timing-function\": theme.ease?.[d || \"DEFAULT\"] ?? h.bracket.cssvar(d) }),\n\t\t{ autocomplete: [\"animate-ease\", \"animate-ease-$ease\"] }\n\t],\n\t[\n\t\t/^animate-(fill-mode-|fill-|mode-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"none\",\n\t\t\t\"forwards\",\n\t\t\t\"backwards\",\n\t\t\t\"both\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-fill-mode\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-(fill|mode|fill-mode)\",\n\t\t\t\"animate-(fill|mode|fill-mode)-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(none|forwards|backwards|both|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\n\t\t/^animate-(direction-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"normal\",\n\t\t\t\"reverse\",\n\t\t\t\"alternate\",\n\t\t\t\"alternate-reverse\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-direction\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-direction\",\n\t\t\t\"animate-direction-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(normal|reverse|alternate|alternate-reverse|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\n\t\t/^animate-(?:iteration-count-|iteration-|count-)(.+)$/,\n\t\t([, d]) => ({ \"animation-iteration-count\": h.bracket.cssvar(d) ?? d.replace(/-/g, \",\") }),\n\t\t{ autocomplete: [\"animate-(iteration|count|iteration-count)\", \"animate-(iteration|count|iteration-count)-<num>\"] }\n\t],\n\t[\n\t\t/^animate-(play-state-|play-|state-)?(.+)$/,\n\t\t([, t, d]) => [\n\t\t\t\"paused\",\n\t\t\t\"running\",\n\t\t\t...[t ? globalKeywords : []]\n\t\t].includes(d) ? { \"animation-play-state\": d } : void 0,\n\t\t{ autocomplete: [\n\t\t\t\"animate-(play|state|play-state)\",\n\t\t\t\"animate-(play|state|play-state)-(paused|running|inherit|initial|revert|revert-layer|unset)\",\n\t\t\t\"animate-(paused|running|inherit|initial|revert|revert-layer|unset)\"\n\t\t] }\n\t],\n\t[\"animate-none\", { animation: \"none\" }],\n\t...makeGlobalStaticRules(\"animate\", \"animation\")\n];\n\n//#endregion\n//#region src/rules/background.ts\nconst properties = {\n\t\"gradient-position\": defineProperty(\"--un-gradient-position\"),\n\t\"gradient-from\": defineProperty(\"--un-gradient-from\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-via\": defineProperty(\"--un-gradient-via\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-to\": defineProperty(\"--un-gradient-to\", {\n\t\tsyntax: \"<color>\",\n\t\tinitialValue: \"#0000\"\n\t}),\n\t\"gradient-stops\": defineProperty(\"--un-gradient-stops\"),\n\t\"gradient-via-stops\": defineProperty(\"--un-gradient-via-stops\"),\n\t\"gradient-from-position\": defineProperty(\"--un-gradient-from-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"0%\"\n\t}),\n\t\"gradient-via-position\": defineProperty(\"--un-gradient-via-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"50%\"\n\t}),\n\t\"gradient-to-position\": defineProperty(\"--un-gradient-to-position\", {\n\t\tsyntax: \"<length-percentage>\",\n\t\tinitialValue: \"100%\"\n\t})\n};\nfunction resolveModifier(modifier) {\n\tlet interpolationMethod = \"in oklab\";\n\tif (modifier) if (modifier.startsWith(\"[\") && modifier.endsWith(\"]\")) interpolationMethod = modifier.slice(1, -1);\n\telse switch (modifier) {\n\t\tcase \"longer\":\n\t\tcase \"shorter\":\n\t\tcase \"increasing\":\n\t\tcase \"decreasing\":\n\t\t\tinterpolationMethod = `in oklch ${modifier} hue`;\n\t\t\tbreak;\n\t\tdefault: interpolationMethod = `in ${modifier}`;\n\t}\n\treturn interpolationMethod;\n}\nfunction bgGradientColorResolver() {\n\treturn function* ([, position, body], { theme }) {\n\t\tconst css = {};\n\t\tconst data = parseColor(body, theme);\n\t\tif (data) {\n\t\t\tconst { color, keys, alpha } = data;\n\t\t\tif (color) {\n\t\t\t\tif (Object.values(SpecialColorKey).includes(color)) css[`--un-gradient-${position}`] = color;\n\t\t\t\telse {\n\t\t\t\t\tcss[`--un-${position}-opacity`] = alpha;\n\t\t\t\t\tconst value = keys ? generateThemeVariable(\"colors\", keys) : color;\n\t\t\t\t\tcss[`--un-gradient-${position}`] = `color-mix(in oklab, ${value} var(--un-${position}-opacity), transparent)`;\n\t\t\t\t\tyield defineProperty(`--un-${position}-opacity`, {\n\t\t\t\t\t\tsyntax: \"<percentage>\",\n\t\t\t\t\t\tinitialValue: \"100%\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (keys) themeTracking(`colors`, keys);\n\t\t\t\tif (theme) detectThemeValue(color, theme);\n\t\t\t}\n\t\t} else css[`--un-gradient-${position}`] = h.bracket.cssvar(body);\n\t\tif (css[`--un-gradient-${position}`]) {\n\t\t\tswitch (position) {\n\t\t\t\tcase \"from\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-stops\": \"var(--un-gradient-via-stops, var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-to) var(--un-gradient-to-position))\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"via\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-via-stops\": `var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-via) var(--un-gradient-via-position), var(--un-gradient-to) var(--un-gradient-to-position)`,\n\t\t\t\t\t\t\"--un-gradient-stops\": `var(--un-gradient-via-stops)`\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"to\":\n\t\t\t\t\tyield {\n\t\t\t\t\t\t...css,\n\t\t\t\t\t\t\"--un-gradient-stops\": \"var(--un-gradient-via-stops, var(--un-gradient-position), var(--un-gradient-from) var(--un-gradient-from-position), var(--un-gradient-to) var(--un-gradient-to-position))\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"stops\":\n\t\t\t\t\tyield { ...css };\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfor (const p of Object.values(properties)) yield p;\n\t\t}\n\t};\n}\nfunction bgGradientPositionResolver() {\n\treturn function* ([, mode, body]) {\n\t\tyield { [`--un-gradient-${mode}-position`]: `${h.bracket.cssvar.percent(body)}` };\n\t\tfor (const p of Object.values(properties)) yield p;\n\t};\n}\nconst backgroundStyles = [\n\t[\n\t\t/^bg-(linear|radial|conic)-([^/]+)(?:\\/(.+))?$/,\n\t\t([, m, d, s]) => {\n\t\t\tlet v;\n\t\t\tif (h.number(d) != null) v = `from ${h.number(d)}deg ${resolveModifier(s)};`;\n\t\t\telse v = h.bracket(d);\n\t\t\tif (v) return {\n\t\t\t\t\"--un-gradient-position\": v,\n\t\t\t\t\"background-image\": `${m}-gradient(var(--un-gradient-stops))`\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"bg-(linear|radial|conic)\",\n\t\t\t\"(from|to|via)-$colors\",\n\t\t\t\"(from|to|via)-(op|opacity)\",\n\t\t\t\"(from|to|via)-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[/^(from|via|to|stops)-(.+)$/, bgGradientColorResolver()],\n\t[/^(from|via|to)-op(?:acity)?-?(.+)$/, ([, position, opacity$1]) => ({ [`--un-${position}-opacity`]: h.bracket.percent(opacity$1) })],\n\t[/^(from|via|to)-([\\d.]+%)$/, bgGradientPositionResolver()],\n\t[\n\t\t/^bg-((?:repeating-)?(?:linear|radial|conic))$/,\n\t\t([, s]) => ({ \"background-image\": `${s}-gradient(var(--un-gradient, var(--un-gradient-stops, rgb(255 255 255 / 0))))` }),\n\t\t{ autocomplete: [\n\t\t\t\"bg-gradient-repeating\",\n\t\t\t\"bg-gradient-(linear|radial|conic)\",\n\t\t\t\"bg-gradient-repeating-(linear|radial|conic)\"\n\t\t] }\n\t],\n\t[\n\t\t/^bg-(gradient|linear|radial|conic)(?:-to-([rltb]{1,2}))?(?:\\/(.+))?$/,\n\t\t([, m, d, s]) => {\n\t\t\treturn {\n\t\t\t\t\"--un-gradient-position\": `${d in positionMap ? `to ${positionMap[d]} ` : \" \"}${resolveModifier(s)}`,\n\t\t\t\t\"background-image\": `${m === \"gradient\" ? \"linear\" : m}-gradient(var(--un-gradient-stops))`\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"gradient\",\n\t\t\t\"linear\",\n\t\t\t\"radial\",\n\t\t\t\"conic\"\n\t\t].map((i) => {\n\t\t\treturn `bg-${i}-to-(${Object.keys(positionMap).filter((k) => k.length <= 2 && Array.from(k).every((c) => \"rltb\".includes(c))).join(\"|\")})`;\n\t\t}) }\n\t],\n\t[\"bg-none\", { \"background-image\": \"none\" }],\n\t[\"box-decoration-slice\", { \"box-decoration-break\": \"slice\" }],\n\t[\"box-decoration-clone\", { \"box-decoration-break\": \"clone\" }],\n\t...makeGlobalStaticRules(\"box-decoration\", \"box-decoration-break\"),\n\t[\"bg-auto\", { \"background-size\": \"auto\" }],\n\t[\"bg-cover\", { \"background-size\": \"cover\" }],\n\t[\"bg-contain\", { \"background-size\": \"contain\" }],\n\t[/^bg-size-(.+)$/, ([, v]) => ({ \"background-size\": h.bracket.cssvar(v) })],\n\t[\"bg-fixed\", { \"background-attachment\": \"fixed\" }],\n\t[\"bg-local\", { \"background-attachment\": \"local\" }],\n\t[\"bg-scroll\", { \"background-attachment\": \"scroll\" }],\n\t[\"bg-clip-border\", {\n\t\t\"-webkit-background-clip\": \"border-box\",\n\t\t\"background-clip\": \"border-box\"\n\t}],\n\t[\"bg-clip-content\", {\n\t\t\"-webkit-background-clip\": \"content-box\",\n\t\t\"background-clip\": \"content-box\"\n\t}],\n\t[\"bg-clip-padding\", {\n\t\t\"-webkit-background-clip\": \"padding-box\",\n\t\t\"background-clip\": \"padding-box\"\n\t}],\n\t[\"bg-clip-text\", {\n\t\t\"-webkit-background-clip\": \"text\",\n\t\t\"background-clip\": \"text\"\n\t}],\n\t...globalKeywords.map((keyword) => [`bg-clip-${keyword}`, {\n\t\t\"-webkit-background-clip\": keyword,\n\t\t\"background-clip\": keyword\n\t}]),\n\t[/^bg-([-\\w]{3,})$/, ([, s]) => ({ \"background-position\": positionMap[s] })],\n\t[\"bg-repeat\", { \"background-repeat\": \"repeat\" }],\n\t[\"bg-no-repeat\", { \"background-repeat\": \"no-repeat\" }],\n\t[\"bg-repeat-x\", { \"background-repeat\": \"repeat-x\" }],\n\t[\"bg-repeat-y\", { \"background-repeat\": \"repeat-y\" }],\n\t[\"bg-repeat-round\", { \"background-repeat\": \"round\" }],\n\t[\"bg-repeat-space\", { \"background-repeat\": \"space\" }],\n\t...makeGlobalStaticRules(\"bg-repeat\", \"background-repeat\"),\n\t[\"bg-origin-border\", { \"background-origin\": \"border-box\" }],\n\t[\"bg-origin-padding\", { \"background-origin\": \"padding-box\" }],\n\t[\"bg-origin-content\", { \"background-origin\": \"content-box\" }],\n\t...makeGlobalStaticRules(\"bg-origin\", \"background-origin\")\n];\n\n//#endregion\n//#region src/rules/behaviors.ts\nconst outline = [\n\t[\n\t\t/^outline-(?:width-|size-)?(.+)$/,\n\t\thandleWidth$2,\n\t\t{ autocomplete: \"outline-(width|size)-<num>\" }\n\t],\n\t[\n\t\t/^outline-(?:color-)?(.+)$/,\n\t\thandleColorOrWidth$2,\n\t\t{ autocomplete: \"outline-$colors\" }\n\t],\n\t[\n\t\t/^outline-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-outline-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"outline-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^outline-offset-(.+)$/,\n\t\t([, d]) => ({ \"outline-offset\": h.bracket.cssvar.global.px(d) }),\n\t\t{ autocomplete: \"outline-(offset)-<num>\" }\n\t],\n\t[\"outline-offset-none\", { \"outline-offset\": \"0\" }],\n\t[\"outline\", [{\n\t\t\"outline-style\": \"var(--un-outline-style)\",\n\t\t\"outline-width\": \"1px\"\n\t}, defineProperty(\"--un-outline-style\", { initialValue: \"solid\" })]],\n\t[\"outline-hidden\", [{ \"outline-style\": \"none\" }, {\n\t\t[symbols.parent]: `@media (forced-colors: active)`,\n\t\t\"outline\": `2px solid transparent`,\n\t\t\"outline-offset\": `2px`\n\t}]],\n\t[\"outline-none\", {\n\t\t\"--un-outline-style\": \"none\",\n\t\t\"outline-style\": \"none\"\n\t}],\n\t...[\n\t\t\"auto\",\n\t\t\"dashed\",\n\t\t\"dotted\",\n\t\t\"double\",\n\t\t\"solid\",\n\t\t\"groove\",\n\t\t\"ridge\",\n\t\t\"inset\",\n\t\t\"outset\",\n\t\t...globalKeywords\n\t].map((v) => [`outline-${v}`, {\n\t\t\"--un-outline-style\": v,\n\t\t\"outline-style\": v\n\t}])\n];\nfunction* handleWidth$2([, b]) {\n\tconst v = h.bracket.cssvar.global.px(b);\n\tif (v != null) {\n\t\tyield {\n\t\t\t\"outline-style\": \"var(--un-outline-style)\",\n\t\t\t\"outline-width\": v\n\t\t};\n\t\tyield defineProperty(\"--un-outline-style\", { initialValue: \"solid\" });\n\t}\n}\nfunction* handleColorOrWidth$2(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1]))) yield* handleWidth$2(match);\n\telse {\n\t\tconst result = colorResolver(\"outline-color\", \"outline\")(match, ctx);\n\t\tif (result) for (const i of result) yield i;\n\t}\n}\nconst appearance = [[\"appearance-auto\", {\n\t\"-webkit-appearance\": \"auto\",\n\t\"appearance\": \"auto\"\n}], [\"appearance-none\", {\n\t\"-webkit-appearance\": \"none\",\n\t\"appearance\": \"none\"\n}]];\nfunction willChangeProperty(prop) {\n\tconst v = h.bracket(prop);\n\tif (v && h.properties(v)) return v;\n\treturn h.properties.auto.cssvar.global(prop) ?? {\n\t\tcontents: \"contents\",\n\t\tscroll: \"scroll-position\"\n\t}[prop];\n}\nconst willChange = [[/^will-change-(.+)/, ([, p]) => ({ \"will-change\": willChangeProperty(p) })]];\nconst listStyles = {\n\t\"disc\": \"disc\",\n\t\"circle\": \"circle\",\n\t\"square\": \"square\",\n\t\"decimal\": \"decimal\",\n\t\"zero-decimal\": \"decimal-leading-zero\",\n\t\"greek\": \"lower-greek\",\n\t\"roman\": \"lower-roman\",\n\t\"upper-roman\": \"upper-roman\",\n\t\"alpha\": \"lower-alpha\",\n\t\"upper-alpha\": \"upper-alpha\",\n\t\"latin\": \"lower-latin\",\n\t\"upper-latin\": \"upper-latin\"\n};\nconst listStyle = [\n\t[\n\t\t/^list-(.+?)(?:-(outside|inside))?$/,\n\t\t([, alias, position]) => {\n\t\t\tconst style = listStyles[alias];\n\t\t\tif (style) {\n\t\t\t\tif (position) return {\n\t\t\t\t\t\"list-style-position\": position,\n\t\t\t\t\t\"list-style-type\": style\n\t\t\t\t};\n\t\t\t\treturn { \"list-style-type\": style };\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [`list-(${Object.keys(listStyles).join(\"|\")})`, `list-(${Object.keys(listStyles).join(\"|\")})-(outside|inside)`] }\n\t],\n\t[\"list-outside\", { \"list-style-position\": \"outside\" }],\n\t[\"list-inside\", { \"list-style-position\": \"inside\" }],\n\t[\"list-none\", { \"list-style-type\": \"none\" }],\n\t[/^list-image-(.+)$/, ([, d]) => {\n\t\tif (/^\\[url\\(.+\\)\\]$/.test(d)) return { \"list-style-image\": h.bracket(d) };\n\t}],\n\t[\"list-image-none\", { \"list-style-image\": \"none\" }],\n\t...makeGlobalStaticRules(\"list\", \"list-style-type\")\n];\nconst accents = [[\n\t/^accent-(.+)$/,\n\tcolorResolver(\"accent-color\", \"accent\"),\n\t{ autocomplete: \"accent-$colors\" }\n], [\n\t/^accent-op(?:acity)?-?(.+)$/,\n\t([, d]) => ({ \"--un-accent-opacity\": h.bracket.percent(d) }),\n\t{ autocomplete: [\"accent-(op|opacity)\", \"accent-(op|opacity)-<percent>\"] }\n]];\nconst carets = [[\n\t/^caret-(.+)$/,\n\tcolorResolver(\"caret-color\", \"caret\"),\n\t{ autocomplete: \"caret-$colors\" }\n], [\n\t/^caret-op(?:acity)?-?(.+)$/,\n\t([, d]) => ({ \"--un-caret-opacity\": h.bracket.percent(d) }),\n\t{ autocomplete: [\"caret-(op|opacity)\", \"caret-(op|opacity)-<percent>\"] }\n]];\nconst imageRenderings = [\n\t[\"image-render-auto\", { \"image-rendering\": \"auto\" }],\n\t[\"image-render-edge\", { \"image-rendering\": \"crisp-edges\" }],\n\t[\"image-render-pixel\", [\n\t\t[\"-ms-interpolation-mode\", \"nearest-neighbor\"],\n\t\t[\"image-rendering\", \"-webkit-optimize-contrast\"],\n\t\t[\"image-rendering\", \"-moz-crisp-edges\"],\n\t\t[\"image-rendering\", \"-o-pixelated\"],\n\t\t[\"image-rendering\", \"pixelated\"]\n\t]]\n];\nconst overscrolls = [\n\t[\"overscroll-auto\", { \"overscroll-behavior\": \"auto\" }],\n\t[\"overscroll-contain\", { \"overscroll-behavior\": \"contain\" }],\n\t[\"overscroll-none\", { \"overscroll-behavior\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll\", \"overscroll-behavior\"),\n\t[\"overscroll-x-auto\", { \"overscroll-behavior-x\": \"auto\" }],\n\t[\"overscroll-x-contain\", { \"overscroll-behavior-x\": \"contain\" }],\n\t[\"overscroll-x-none\", { \"overscroll-behavior-x\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll-x\", \"overscroll-behavior-x\"),\n\t[\"overscroll-y-auto\", { \"overscroll-behavior-y\": \"auto\" }],\n\t[\"overscroll-y-contain\", { \"overscroll-behavior-y\": \"contain\" }],\n\t[\"overscroll-y-none\", { \"overscroll-behavior-y\": \"none\" }],\n\t...makeGlobalStaticRules(\"overscroll-y\", \"overscroll-behavior-y\")\n];\nconst scrollBehaviors = [\n\t[\"scroll-auto\", { \"scroll-behavior\": \"auto\" }],\n\t[\"scroll-smooth\", { \"scroll-behavior\": \"smooth\" }],\n\t...makeGlobalStaticRules(\"scroll\", \"scroll-behavior\")\n];\n\n//#endregion\n//#region src/rules/border.ts\nconst borderStyles = [\n\t\"solid\",\n\t\"dashed\",\n\t\"dotted\",\n\t\"double\",\n\t\"hidden\",\n\t\"none\",\n\t\"groove\",\n\t\"ridge\",\n\t\"inset\",\n\t\"outset\",\n\t...globalKeywords\n];\nconst borders = [\n\t[\n\t\t/^(?:border|b)()(?:-(.+))?$/,\n\t\thandlerBorderSize,\n\t\t{ autocomplete: \"(border|b)-<directions>\" }\n\t],\n\t[/^(?:border|b)-([xy])(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-([rltbse])(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-(block|inline)(?:-(.+))?$/, handlerBorderSize],\n\t[/^(?:border|b)-([bi][se])(?:-(.+))?$/, handlerBorderSize],\n\t[\n\t\t/^(?:border|b)-()(?:width|size)-(.+)$/,\n\t\thandlerBorderSize,\n\t\t{ autocomplete: [\"(border|b)-<num>\", \"(border|b)-<directions>-<num>\"] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-([rltbse])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-(block|inline)-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[/^(?:border|b)-([bi][se])-(?:width|size)-(.+)$/, handlerBorderSize],\n\t[\n\t\t/^(?:border|b)-()(?:color-)?(.+)$/,\n\t\thandlerBorderColorOrSize,\n\t\t{ autocomplete: [\"(border|b)-$colors\", \"(border|b)-<directions>-$colors\"] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-([rltbse])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-(block|inline)-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[/^(?:border|b)-([bi][se])-(?:color-)?(.+)$/, handlerBorderColorOrSize],\n\t[\n\t\t/^(?:border|b)-()op(?:acity)?-?(.+)$/,\n\t\thandlerBorderOpacity,\n\t\t{ autocomplete: \"(border|b)-(op|opacity)-<percent>\" }\n\t],\n\t[/^(?:border|b)-([xy])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-([rltbse])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-(block|inline)-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[/^(?:border|b)-([bi][se])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],\n\t[\n\t\t/^(?:border-|b-)?(?:rounded|rd)()(?:-(.+))?$/,\n\t\thandlerRounded,\n\t\t{ autocomplete: [\n\t\t\t\"(border|b)-(rounded|rd)\",\n\t\t\t\"(border|b)-(rounded|rd)-$radius\",\n\t\t\t\"(rounded|rd)\",\n\t\t\t\"(rounded|rd)-$radius\"\n\t\t] }\n\t],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([rltbse])(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([rltb]{2})(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([bise][se])(?:-(.+))?$/, handlerRounded],\n\t[/^(?:border-|b-)?(?:rounded|rd)-([bi][se]-[bi][se])(?:-(.+))?$/, handlerRounded],\n\t[\n\t\t/^(?:border|b)-(?:style-)?()(.+)$/,\n\t\thandlerBorderStyle,\n\t\t{ autocomplete: [\n\t\t\t\"(border|b)-style\",\n\t\t\t`(border|b)-(${borderStyles.join(\"|\")})`,\n\t\t\t\"(border|b)-<directions>-style\",\n\t\t\t`(border|b)-<directions>-(${borderStyles.join(\"|\")})`,\n\t\t\t`(border|b)-<directions>-style-(${borderStyles.join(\"|\")})`,\n\t\t\t`(border|b)-style-(${borderStyles.join(\"|\")})`\n\t\t] }\n\t],\n\t[/^(?:border|b)-([xy])-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-([rltbse])-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-(block|inline)-(?:style-)?(.+)$/, handlerBorderStyle],\n\t[/^(?:border|b)-([bi][se])-(?:style-)?(.+)$/, handlerBorderStyle]\n];\nfunction borderColorResolver(direction) {\n\treturn ([, body], ctx) => {\n\t\tconst data = parseColor(body, ctx.theme);\n\t\tconst result = colorCSSGenerator(data, `border${direction}-color`, `border${direction}`, ctx);\n\t\tif (result) {\n\t\t\tconst css = result[0];\n\t\t\tif (data?.color && !Object.values(SpecialColorKey).includes(data.color) && !data.alpha && direction && direction !== \"\") css[`--un-border${direction}-opacity`] = `var(--un-border-opacity)`;\n\t\t\treturn result;\n\t\t}\n\t};\n}\nfunction handlerBorderSize([, a = \"\", b = \"1\"]) {\n\tconst v = h.bracket.cssvar.global.px(b);\n\tif (a in directionMap && v != null) return directionMap[a].map((i) => [`border${i}-width`, v]);\n}\nfunction handlerBorderColorOrSize([, a = \"\", b], ctx) {\n\tif (a in directionMap) {\n\t\tif (isCSSMathFn(h.bracket(b))) return handlerBorderSize([\n\t\t\t\"\",\n\t\t\ta,\n\t\t\tb\n\t\t]);\n\t\tif (hasParseableColor(b, ctx.theme)) {\n\t\t\tconst directions$1 = directionMap[a].map((i) => borderColorResolver(i)([\"\", b], ctx)).filter(notNull);\n\t\t\treturn [directions$1.map((d) => d[0]).reduce((acc, item) => {\n\t\t\t\tObject.assign(acc, item);\n\t\t\t\treturn acc;\n\t\t\t}, {}), ...directions$1.flatMap((d) => d.slice(1))];\n\t\t}\n\t}\n}\nfunction handlerBorderOpacity([, a = \"\", opacity$1]) {\n\tconst v = h.bracket.percent.cssvar(opacity$1);\n\tif (a in directionMap && v != null) return directionMap[a].map((i) => [`--un-border${i}-opacity`, v]);\n}\nfunction handlerRounded([, a = \"\", s = \"DEFAULT\"], { theme }) {\n\tif (a in cornerMap) {\n\t\tif (s === \"full\") return cornerMap[a].map((i) => [`border${i}-radius`, \"calc(infinity * 1px)\"]);\n\t\tconst _v = theme.radius?.[s] ?? h.bracket.cssvar.global.fraction.rem(s);\n\t\tif (_v != null) {\n\t\t\tconst isVar = theme.radius && s in theme.radius;\n\t\t\tif (isVar) themeTracking(`radius`, s);\n\t\t\treturn cornerMap[a].map((i) => [`border${i}-radius`, isVar ? generateThemeVariable(\"radius\", s) : _v]);\n\t\t}\n\t}\n}\nfunction handlerBorderStyle([, a = \"\", s]) {\n\tif (borderStyles.includes(s) && a in directionMap) return [[\"--un-border-style\", s], ...directionMap[a].map((i) => [`border${i}-style`, s])];\n}\n\n//#endregion\n//#region src/rules/color.ts\n/**\n* @example op10 op-30 opacity-100\n*/\nconst opacity = [[/^op(?:acity)?-?(.+)$/, ([, d]) => ({ opacity: h.bracket.percent.cssvar(d) })]];\nconst bgUrlRE = /^\\[url\\(.+\\)\\]$/;\nconst bgLengthRE = /^\\[(?:length|size):.+\\]$/;\nconst bgPositionRE = /^\\[position:.+\\]$/;\nconst bgGradientRE = /^\\[(?:linear|conic|radial)-gradient\\(.+\\)\\]$/;\nconst bgImageRE = /^\\[image:.+\\]$/;\nconst bgColors = [[\n\t/^bg-(.+)$/,\n\t(...args) => {\n\t\tconst d = args[0][1];\n\t\tif (bgUrlRE.test(d)) return {\n\t\t\t\"--un-url\": h.bracket(d),\n\t\t\t\"background-image\": \"var(--un-url)\"\n\t\t};\n\t\tif (bgLengthRE.test(d) && h.bracketOfLength(d) != null) return { \"background-size\": h.bracketOfLength(d).split(\" \").map((e) => h.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\tif ((isSize(d) || bgPositionRE.test(d)) && h.bracketOfPosition(d) != null) return { \"background-position\": h.bracketOfPosition(d).split(\" \").map((e) => h.position.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\tif (bgGradientRE.test(d) || bgImageRE.test(d)) {\n\t\t\tconst s = h.bracket(d);\n\t\t\tif (s) {\n\t\t\t\tconst url = s.startsWith(\"http\") ? `url(${s})` : h.cssvar(s);\n\t\t\t\treturn { \"background-image\": url ?? s };\n\t\t\t}\n\t\t}\n\t\treturn colorResolver(\"background-color\", \"bg\")(...args);\n\t},\n\t{ autocomplete: \"bg-$colors\" }\n], [\n\t/^bg-op(?:acity)?-?(.+)$/,\n\t([, opacity$1]) => ({ \"--un-bg-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t{ autocomplete: \"bg-(op|opacity)-<percent>\" }\n]];\nconst colorScheme = [[/^(?:color-)?scheme-(.+)$/, ([, v]) => ({ \"color-scheme\": v.split(\"-\").join(\" \") })]];\n\n//#endregion\n//#region src/rules/columns.ts\nconst columns = [\n\t[\n\t\t/^columns-(.+)$/,\n\t\t([, v], { theme }) => {\n\t\t\tif (theme.container && v in theme.container) {\n\t\t\t\tthemeTracking(\"container\", v);\n\t\t\t\treturn { columns: generateThemeVariable(\"container\", v) };\n\t\t\t}\n\t\t\treturn { columns: h.bracket.numberWithUnit.number.cssvar(v) };\n\t\t},\n\t\t{ autocomplete: [\"columns-<num>\", \"columns-$container\"] }\n\t],\n\t[\"columns-auto\", { columns: \"auto\" }],\n\t[\"break-before-auto\", { \"break-before\": \"auto\" }],\n\t[\"break-before-avoid\", { \"break-before\": \"avoid\" }],\n\t[\"break-before-all\", { \"break-before\": \"all\" }],\n\t[\"break-before-avoid-page\", { \"break-before\": \"avoid-page\" }],\n\t[\"break-before-page\", { \"break-before\": \"page\" }],\n\t[\"break-before-left\", { \"break-before\": \"left\" }],\n\t[\"break-before-right\", { \"break-before\": \"right\" }],\n\t[\"break-before-column\", { \"break-before\": \"column\" }],\n\t...makeGlobalStaticRules(\"break-before\"),\n\t[\"break-inside-auto\", { \"break-inside\": \"auto\" }],\n\t[\"break-inside-avoid\", { \"break-inside\": \"avoid\" }],\n\t[\"break-inside-avoid-page\", { \"break-inside\": \"avoid-page\" }],\n\t[\"break-inside-avoid-column\", { \"break-inside\": \"avoid-column\" }],\n\t...makeGlobalStaticRules(\"break-inside\"),\n\t[\"break-after-auto\", { \"break-after\": \"auto\" }],\n\t[\"break-after-avoid\", { \"break-after\": \"avoid\" }],\n\t[\"break-after-all\", { \"break-after\": \"all\" }],\n\t[\"break-after-avoid-page\", { \"break-after\": \"avoid-page\" }],\n\t[\"break-after-page\", { \"break-after\": \"page\" }],\n\t[\"break-after-left\", { \"break-after\": \"left\" }],\n\t[\"break-after-right\", { \"break-after\": \"right\" }],\n\t[\"break-after-column\", { \"break-after\": \"column\" }],\n\t...makeGlobalStaticRules(\"break-after\")\n];\n\n//#endregion\n//#region src/rules/decoration.ts\nconst decorationStyles = [\n\t\"solid\",\n\t\"double\",\n\t\"dotted\",\n\t\"dashed\",\n\t\"wavy\",\n\t...globalKeywords\n];\nconst textDecorations = [\n\t[\n\t\t/^(?:decoration-)?(underline|overline|line-through)$/,\n\t\t([, s]) => ({ \"text-decoration-line\": s }),\n\t\t{ autocomplete: \"decoration-(underline|overline|line-through)\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(?:size-)?(.+)$/,\n\t\thandleWidth$1,\n\t\t{ autocomplete: \"(underline|decoration)-<num>\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(auto|from-font)$/,\n\t\t([, s]) => ({ \"text-decoration-thickness\": s }),\n\t\t{ autocomplete: \"(underline|decoration)-(auto|from-font)\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-(.+)$/,\n\t\thandleColorOrWidth$1,\n\t\t{ autocomplete: \"(underline|decoration)-$colors\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-line-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"(underline|decoration)-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^(?:underline|decoration)-offset-(.+)$/,\n\t\t([, s]) => ({ \"text-underline-offset\": h.auto.bracket.cssvar.global.px(s) }),\n\t\t{ autocomplete: \"(underline|decoration)-(offset)-<num>\" }\n\t],\n\t...decorationStyles.map((v) => [`underline-${v}`, { \"text-decoration-style\": v }]),\n\t...decorationStyles.map((v) => [`decoration-${v}`, { \"text-decoration-style\": v }]),\n\t[\"no-underline\", { \"text-decoration\": \"none\" }],\n\t[\"decoration-none\", { \"text-decoration\": \"none\" }]\n];\nfunction handleWidth$1([, b]) {\n\treturn { \"text-decoration-thickness\": h.bracket.cssvar.global.px(b) };\n}\nfunction handleColorOrWidth$1(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1]))) return handleWidth$1(match);\n\tconst result = colorResolver(\"text-decoration-color\", \"line\")(match, ctx);\n\tif (result) {\n\t\tconst css = result[0];\n\t\tcss[\"-webkit-text-decoration-color\"] = css[\"text-decoration-color\"];\n\t\treturn result;\n\t}\n}\n\n//#endregion\n//#region src/rules/spacing.ts\nconst paddings = [\n\t[\n\t\t/^pa?()-?(.+)$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: [\"(m|p)<num>\", \"(m|p)-<num>\"] }\n\t],\n\t[\n\t\t/^p-?xy()()$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(xy)\" }\n\t],\n\t[/^p-?([xy])(?:-?(.+))?$/, directionSize(\"padding\")],\n\t[\n\t\t/^p-?([rltbse])(?:-?(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)<directions>-<num>\" }\n\t],\n\t[\n\t\t/^p-(block|inline)(?:-(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(block|inline)-<num>\" }\n\t],\n\t[\n\t\t/^p-?([bi][se])(?:-?(.+))?$/,\n\t\tdirectionSize(\"padding\"),\n\t\t{ autocomplete: \"(m|p)-(bs|be|is|ie)-<num>\" }\n\t]\n];\nconst margins = [\n\t[/^ma?()-?(.+)$/, directionSize(\"margin\")],\n\t[/^m-?xy()()$/, directionSize(\"margin\")],\n\t[/^m-?([xy])(?:-?(.+))?$/, directionSize(\"margin\")],\n\t[/^m-?([rltbse])(?:-?(.+))?$/, directionSize(\"margin\")],\n\t[/^m-(block|inline)(?:-(.+))?$/, directionSize(\"margin\")],\n\t[/^m-?([bi][se])(?:-?(.+))?$/, directionSize(\"margin\")]\n];\nconst spaces = [[\n\t/^space-([xy])-(.+)$/,\n\thandlerSpace,\n\t{ autocomplete: [\n\t\t\"space-(x|y)\",\n\t\t\"space-(x|y)-reverse\",\n\t\t\"space-(x|y)-$spacing\"\n\t] }\n], [/^space-([xy])-reverse$/, function* ([m, d], { symbols: symbols$1 }) {\n\tyield {\n\t\t[symbols$1.variants]: [notLastChildSelectorVariant(m)],\n\t\t[`--un-space-${d}-reverse`]: \"1\"\n\t};\n\tyield defineProperty(`--un-space-${d}-reverse`, { initialValue: 0 });\n}]];\nfunction notLastChildSelectorVariant(s) {\n\treturn {\n\t\tmatcher: s,\n\t\thandle: (input, next) => next({\n\t\t\t...input,\n\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\tselector: \":where(&>:not(:last-child))\"\n\t\t})\n\t};\n}\nfunction* handlerSpace([m, d, s], { theme, symbols: symbols$1 }) {\n\tlet v;\n\tconst num = numberResolver(s);\n\tif (num != null) {\n\t\tthemeTracking(`spacing`);\n\t\tv = `calc(var(--spacing) * ${num})`;\n\t} else v = theme.spacing?.[s] ?? h.bracket.cssvar.auto.fraction.rem(s || \"1\");\n\tif (v != null) {\n\t\tconst results = directionMap[d === \"x\" ? \"inline\" : \"block\"].map((item, index) => {\n\t\t\treturn [`margin${item}`, ` calc(${v} * ${index === 0 ? `var(--un-space-${d}-reverse)` : `calc(1 - var(--un-space-${d}-reverse))`})`];\n\t\t});\n\t\tif (results) {\n\t\t\tyield {\n\t\t\t\t[symbols$1.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t\t[`--un-space-${d}-reverse`]: \"0\",\n\t\t\t\t...Object.fromEntries(results)\n\t\t\t};\n\t\t\tyield defineProperty(`--un-space-${d}-reverse`, { initialValue: 0 });\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/rules/divide.ts\nconst divides = [\n\t[\n\t\t/^divide-(.+)$/,\n\t\tfunction* (match, ctx) {\n\t\t\tconst result = colorResolver(\"border-color\", \"divide\")(match, ctx);\n\t\t\tif (result) {\n\t\t\t\tyield {\n\t\t\t\t\t[ctx.symbols.variants]: [notLastChildSelectorVariant(match[0])],\n\t\t\t\t\t...result[0]\n\t\t\t\t};\n\t\t\t\tyield result[1];\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: \"divide-$colors\" }\n\t],\n\t[\n\t\t/^divide-op(?:acity)?-?(.+)$/,\n\t\tfunction* ([match, opacity$1], { symbols: symbols$1 }) {\n\t\t\tyield {\n\t\t\t\t[symbols$1.variants]: [notLastChildSelectorVariant(match)],\n\t\t\t\t\"--un-divide-opacity\": h.bracket.percent(opacity$1)\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\"divide-(op|opacity)\", \"divide-(op|opacity)-<percent>\"] }\n\t],\n\t[\n\t\t/^divide-?([xy])$/,\n\t\thandlerDivide,\n\t\t{ autocomplete: [\"divide-(x|y)\", \"divide-(x|y)-reverse\"] }\n\t],\n\t[/^divide-?([xy])-?(.+)$/, handlerDivide],\n\t[/^divide-?([xy])-reverse$/, function* ([m, d], { symbols: symbols$1 }) {\n\t\tyield {\n\t\t\t[symbols$1.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t[`--un-divide-${d}-reverse`]: \"1\"\n\t\t};\n\t\tyield defineProperty(`--un-divide-${d}-reverse`, { initialValue: 0 });\n\t}],\n\t[\n\t\t/* @__PURE__ */ new RegExp(`^divide-(${borderStyles.join(\"|\")})$`),\n\t\tfunction* ([match, style], { symbols: symbols$1 }) {\n\t\t\tyield {\n\t\t\t\t[symbols$1.variants]: [notLastChildSelectorVariant(match)],\n\t\t\t\t\"border-style\": style\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: borderStyles.map((i) => `divide-${i}`) }\n\t]\n];\nfunction* handlerDivide([m, d, s], { symbols: symbols$1 }) {\n\tlet v = h.bracket.cssvar.px(s || \"1\");\n\tif (v != null) {\n\t\tif (v === \"0\") v = \"0px\";\n\t\tconst results = {\n\t\t\tx: [\"-left\", \"-right\"],\n\t\t\ty: [\"-top\", \"-bottom\"]\n\t\t}[d].map((item) => {\n\t\t\tconst value = item.endsWith(\"left\") || item.endsWith(\"top\") ? `calc(${v} * var(--un-divide-${d}-reverse))` : `calc(${v} * calc(1 - var(--un-divide-${d}-reverse)))`;\n\t\t\treturn [[`border${item}-width`, value], [`border${item}-style`, `var(--un-border-style)`]];\n\t\t});\n\t\tif (results) {\n\t\t\tyield {\n\t\t\t\t[symbols$1.variants]: [notLastChildSelectorVariant(m)],\n\t\t\t\t[`--un-divide-${d}-reverse`]: 0,\n\t\t\t\t...Object.fromEntries(results.flat())\n\t\t\t};\n\t\t\tyield defineProperty(`--un-divide-${d}-reverse`, { initialValue: 0 });\n\t\t\tyield defineProperty(`--un-border-style`, { initialValue: \"solid\" });\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/rules/filters.ts\nconst filterBaseKeys = [\n\t\"blur\",\n\t\"brightness\",\n\t\"contrast\",\n\t\"grayscale\",\n\t\"hue-rotate\",\n\t\"invert\",\n\t\"saturate\",\n\t\"sepia\",\n\t\"drop-shadow\"\n];\nconst filterProperties = filterBaseKeys.map((i) => defineProperty(`--un-${i}`));\nconst filterCSS = filterBaseKeys.map((i) => `var(--un-${i},)`).join(\" \");\nconst backdropBaseKeys = [\n\t\"backdrop-blur\",\n\t\"backdrop-brightness\",\n\t\"backdrop-contrast\",\n\t\"backdrop-grayscale\",\n\t\"backdrop-hue-rotate\",\n\t\"backdrop-invert\",\n\t\"backdrop-opacity\",\n\t\"backdrop-saturate\",\n\t\"backdrop-sepia\"\n];\nconst backdropProperties = backdropBaseKeys.map((i) => defineProperty(`--un-${i}`));\nconst backdropCSS = backdropBaseKeys.map((i) => `var(--un-${i},)`).join(\" \");\nfunction percentWithDefault(str) {\n\tlet v = h.bracket.cssvar(str || \"\");\n\tif (v != null) return v;\n\tv = str ? h.percent(str) : \"100%\";\n\tif (v != null && Number.parseFloat(v.slice(0, -1)) <= 100) return v;\n}\nfunction toFilter(varName, resolver) {\n\treturn ([, b, s], { theme }) => {\n\t\tconst value = resolver(s, theme) ?? (s === \"none\" ? \"0\" : \"\");\n\t\tif (value !== \"\") if (b) return [{\n\t\t\t[`--un-${b}${varName}`]: `${varName}(${value})`,\n\t\t\t\"-webkit-backdrop-filter\": backdropCSS,\n\t\t\t\"backdrop-filter\": backdropCSS\n\t\t}, ...backdropProperties];\n\t\telse return [{\n\t\t\t[`--un-${varName}`]: `${varName}(${value})`,\n\t\t\tfilter: filterCSS\n\t\t}, ...filterProperties];\n\t};\n}\nfunction dropShadowResolver(match, ctx) {\n\tconst [, s] = match;\n\tconst { theme } = ctx;\n\tlet res = [];\n\tif (s) {\n\t\tres = getStringComponents(s, \"/\", 2) ?? [];\n\t\tif (s.startsWith(\"/\")) res = [\"\", s.slice(1)];\n\t}\n\tlet v = theme.dropShadow?.[res[0] || \"DEFAULT\"];\n\tconst c = s ? h.bracket.cssvar(s) : void 0;\n\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;\n\t\treturn [{\n\t\t\t\"--un-drop-shadow-opacity\": alpha,\n\t\t\t\"--un-drop-shadow\": `drop-shadow(${colorableShadows(v || c, \"--un-drop-shadow-color\", alpha).join(\") drop-shadow(\")})`,\n\t\t\t\"filter\": filterCSS\n\t\t}, ...filterProperties];\n\t}\n\tif (hasParseableColor(s, theme)) return colorResolver(\"--un-drop-shadow-color\", \"drop-shadow\")(match, ctx);\n\tv = h.bracket.cssvar(s) ?? (s === \"none\" ? \"\" : void 0);\n\tif (v != null) return [{\n\t\t\"--un-drop-shadow\": v ? `drop-shadow(${v})` : v,\n\t\t\"filter\": filterCSS\n\t}, ...filterProperties];\n}\nconst filters = [\n\t[\n\t\t/^(?:(backdrop-)|filter-)?blur(?:-(.+))?$/,\n\t\ttoFilter(\"blur\", (s, theme) => theme.blur?.[s || \"DEFAULT\"] || h.bracket.cssvar.px(s)),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-blur-$blur\",\n\t\t\t\"blur-$blur\",\n\t\t\t\"filter-blur\"\n\t\t] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?brightness-(.+)$/,\n\t\ttoFilter(\"brightness\", (s) => h.bracket.cssvar.percent(s)),\n\t\t{ autocomplete: [\"(backdrop|filter)-brightness-<percent>\", \"brightness-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?contrast-(.+)$/,\n\t\ttoFilter(\"contrast\", (s) => h.bracket.cssvar.percent(s)),\n\t\t{ autocomplete: [\"(backdrop|filter)-contrast-<percent>\", \"contrast-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:filter-)?drop-shadow(?:-?(.+))?$/,\n\t\tdropShadowResolver,\n\t\t{ autocomplete: [\n\t\t\t\"filter-drop\",\n\t\t\t\"filter-drop-shadow\",\n\t\t\t\"filter-drop-shadow-color\",\n\t\t\t\"drop-shadow\",\n\t\t\t\"drop-shadow-color\",\n\t\t\t\"filter-drop-shadow-$dropShadow\",\n\t\t\t\"drop-shadow-$dropShadow\",\n\t\t\t\"filter-drop-shadow-$colors\",\n\t\t\t\"drop-shadow-$colors\",\n\t\t\t\"filter-drop-shadow-color-$colors\",\n\t\t\t\"drop-shadow-color-$colors\",\n\t\t\t\"filter-drop-shadow-color-(op|opacity)\",\n\t\t\t\"drop-shadow-color-(op|opacity)\",\n\t\t\t\"filter-drop-shadow-color-(op|opacity)-<percent>\",\n\t\t\t\"drop-shadow(-color)?-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[/^(?:filter-)?drop-shadow-color-(.+)$/, colorResolver(\"--un-drop-shadow-color\", \"drop-shadow\")],\n\t[/^(?:filter-)?drop-shadow(?:-color)?-op(?:acity)?-?(.+)$/, ([, opacity$1]) => ({ \"--un-drop-shadow-opacity\": h.bracket.percent(opacity$1) })],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?grayscale(?:-(.+))?$/,\n\t\ttoFilter(\"grayscale\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-grayscale\",\n\t\t\t\"(backdrop|filter)-grayscale-<percent>\",\n\t\t\t\"grayscale-<percent>\"\n\t\t] }\n\t],\n\t[/^(?:(backdrop-)|filter-)?hue-rotate-(.+)$/, toFilter(\"hue-rotate\", (s) => h.bracket.cssvar.degree(s))],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?invert(?:-(.+))?$/,\n\t\ttoFilter(\"invert\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-invert\",\n\t\t\t\"(backdrop|filter)-invert-<percent>\",\n\t\t\t\"invert-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^(backdrop-)op(?:acity)?-(.+)$/,\n\t\ttoFilter(\"opacity\", (s) => h.bracket.cssvar.percent(s)),\n\t\t{ autocomplete: [\"backdrop-(op|opacity)\", \"backdrop-(op|opacity)-<percent>\"] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?saturate-(.+)$/,\n\t\ttoFilter(\"saturate\", (s) => h.bracket.cssvar.percent(s)),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-saturate\",\n\t\t\t\"(backdrop|filter)-saturate-<percent>\",\n\t\t\t\"saturate-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^(?:(backdrop-)|filter-)?sepia(?:-(.+))?$/,\n\t\ttoFilter(\"sepia\", percentWithDefault),\n\t\t{ autocomplete: [\n\t\t\t\"(backdrop|filter)-sepia\",\n\t\t\t\"(backdrop|filter)-sepia-<percent>\",\n\t\t\t\"sepia-<percent>\"\n\t\t] }\n\t],\n\t[\"filter\", { filter: filterCSS }],\n\t[\"backdrop-filter\", {\n\t\t\"-webkit-backdrop-filter\": backdropCSS,\n\t\t\"backdrop-filter\": backdropCSS\n\t}],\n\t[\"filter-none\", { filter: \"none\" }],\n\t[\"backdrop-filter-none\", {\n\t\t\"-webkit-backdrop-filter\": \"none\",\n\t\t\"backdrop-filter\": \"none\"\n\t}],\n\t...globalKeywords.map((keyword) => [`filter-${keyword}`, { filter: keyword }]),\n\t...globalKeywords.map((keyword) => [`backdrop-filter-${keyword}`, {\n\t\t\"-webkit-backdrop-filter\": keyword,\n\t\t\"backdrop-filter\": keyword\n\t}])\n];\n\n//#endregion\n//#region src/rules/flex.ts\nconst flex = [\n\t[\"flex\", { display: \"flex\" }],\n\t[\"inline-flex\", { display: \"inline-flex\" }],\n\t[\"flex-inline\", { display: \"inline-flex\" }],\n\t[/^flex-(.*)$/, ([, d]) => ({ flex: h.bracket(d) != null ? h.bracket(d).split(\" \").map((e) => h.cssvar.fraction(e) ?? e).join(\" \") : h.cssvar.fraction(d) })],\n\t[\"flex-1\", { flex: \"1 1 0%\" }],\n\t[\"flex-auto\", { flex: \"1 1 auto\" }],\n\t[\"flex-initial\", { flex: \"0 1 auto\" }],\n\t[\"flex-none\", { flex: \"none\" }],\n\t[\n\t\t/^(?:flex-)?shrink(?:-(.*))?$/,\n\t\t([, d = \"\"]) => ({ \"flex-shrink\": h.bracket.cssvar.number(d) ?? 1 }),\n\t\t{ autocomplete: [\"flex-shrink-<num>\", \"shrink-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-)?grow(?:-(.*))?$/,\n\t\t([, d = \"\"]) => ({ \"flex-grow\": h.bracket.cssvar.number(d) ?? 1 }),\n\t\t{ autocomplete: [\"flex-grow-<num>\", \"grow-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-)?basis-(.+)$/,\n\t\t([, d]) => {\n\t\t\tconst v = numberResolver(d);\n\t\t\tif (v != null) {\n\t\t\t\tthemeTracking(`spacing`);\n\t\t\t\treturn { \"flex-basis\": `calc(var(--spacing) * ${v})` };\n\t\t\t}\n\t\t\treturn { \"flex-basis\": h.bracket.cssvar.auto.fraction.rem(d) };\n\t\t},\n\t\t{ autocomplete: [\"flex-basis-$spacing\", \"basis-$spacing\"] }\n\t],\n\t[\"flex-row\", { \"flex-direction\": \"row\" }],\n\t[\"flex-row-reverse\", { \"flex-direction\": \"row-reverse\" }],\n\t[\"flex-col\", { \"flex-direction\": \"column\" }],\n\t[\"flex-col-reverse\", { \"flex-direction\": \"column-reverse\" }],\n\t[\"flex-wrap\", { \"flex-wrap\": \"wrap\" }],\n\t[\"flex-wrap-reverse\", { \"flex-wrap\": \"wrap-reverse\" }],\n\t[\"flex-nowrap\", { \"flex-wrap\": \"nowrap\" }]\n];\n\n//#endregion\n//#region src/rules/gap.ts\nconst directions = {\n\t\"\": [\"\"],\n\t\"x\": [\"column-\"],\n\t\"y\": [\"row-\"],\n\t\"col\": [\"column-\"],\n\t\"row\": [\"row-\"]\n};\nconst gaps = [\n\t[\n\t\t/^(?:flex-|grid-)?gap-?()(.+)$/,\n\t\tdirectionSize(\"gap\", directions, (p, i) => `${i}${p}`),\n\t\t{ autocomplete: [\"gap-$spacing\", \"gap-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-|grid-)?gap-([xy])-?(.+)$/,\n\t\tdirectionSize(\"gap\", directions, (p, i) => `${i}${p}`),\n\t\t{ autocomplete: [\"gap-(x|y)-$spacing\", \"gap-(x|y)-<num>\"] }\n\t],\n\t[\n\t\t/^(?:flex-|grid-)?gap-(col|row)-?(.+)$/,\n\t\tdirectionSize(\"gap\", directions, (p, i) => `${i}${p}`),\n\t\t{ autocomplete: [\"gap-(col|row)-$spacing\", \"gap-(col|row)-<num>\"] }\n\t]\n];\n\n//#endregion\n//#region src/rules/grid.ts\nfunction rowCol(s) {\n\treturn s.replace(\"col\", \"column\");\n}\nfunction autoDirection(prop) {\n\tswitch (prop) {\n\t\tcase \"min\": return \"min-content\";\n\t\tcase \"max\": return \"max-content\";\n\t\tcase \"fr\": return \"minmax(0,1fr)\";\n\t}\n\treturn h.bracket.cssvar.auto.rem(prop);\n}\nconst grids = [\n\t[\"grid\", { display: \"grid\" }],\n\t[\"inline-grid\", { display: \"inline-grid\" }],\n\t[/^(?:grid-)?(row|col)-(.+)$/, ([, c, v]) => ({ [`grid-${rowCol(c)}`]: h.bracket.number.cssvar.auto(v) })],\n\t[\n\t\t/^(?:grid-)?(row|col)-span-(.+)$/,\n\t\t([, c, s]) => {\n\t\t\tif (s === \"full\") return { [`grid-${rowCol(c)}`]: \"1/-1\" };\n\t\t\tconst v = h.bracket.number.cssvar(s);\n\t\t\tif (v != null) return { [`grid-${rowCol(c)}`]: `span ${v}/span ${v}` };\n\t\t},\n\t\t{ autocomplete: \"(grid-row|grid-col|row|col)-span-<num>\" }\n\t],\n\t[/^(?:grid-)?(row|col)-start-(.+)$/, ([, c, v]) => ({ [`grid-${rowCol(c)}-start`]: h.bracket.cssvar(v) ?? v })],\n\t[\n\t\t/^(?:grid-)?(row|col)-end-(.+)$/,\n\t\t([, c, v]) => ({ [`grid-${rowCol(c)}-end`]: h.bracket.cssvar(v) ?? v }),\n\t\t{ autocomplete: \"(grid-row|grid-col|row|col)-(start|end)-<num>\" }\n\t],\n\t[\n\t\t/^(?:grid-)?auto-(rows|cols)-(.+)$/,\n\t\t([, c, v]) => ({ [`grid-auto-${rowCol(c)}`]: autoDirection(v) }),\n\t\t{ autocomplete: \"(grid-auto|auto)-(rows|cols)-<num>\" }\n\t],\n\t[/^(?:grid-auto-flow|auto-flow|grid-flow)-(.+)$/, ([, v]) => ({ \"grid-auto-flow\": h.bracket.cssvar(v) })],\n\t[\n\t\t/^(?:grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)$/,\n\t\t([, v]) => ({ \"grid-auto-flow\": rowCol(v).replace(\"-\", \" \") }),\n\t\t{ autocomplete: [\"(grid-auto-flow|auto-flow|grid-flow)-(row|col|dense|row-dense|col-dense)\"] }\n\t],\n\t[/^(?:grid-)?(rows|cols)-(.+)$/, ([, c, v]) => ({ [`grid-template-${rowCol(c)}`]: h.bracket.cssvar(v) })],\n\t[/^(?:grid-)?(rows|cols)-minmax-([\\w.-]+)$/, ([, c, d]) => ({ [`grid-template-${rowCol(c)}`]: `repeat(auto-fill,minmax(${d},1fr))` })],\n\t[\n\t\t/^(?:grid-)?(rows|cols)-(\\d+)$/,\n\t\t([, c, d]) => ({ [`grid-template-${rowCol(c)}`]: `repeat(${d},minmax(0,1fr))` }),\n\t\t{ autocomplete: \"(grid-rows|grid-cols|rows|cols)-<num>\" }\n\t],\n\t[/^grid-area(s)?-(.+)$/, ([, s, v]) => {\n\t\tif (s != null) return { \"grid-template-areas\": h.cssvar(v) ?? v.split(\"-\").map((s$1) => `\"${h.bracket(s$1)}\"`).join(\" \") };\n\t\treturn { \"grid-area\": h.bracket.cssvar(v) };\n\t}],\n\t[\"grid-rows-none\", { \"grid-template-rows\": \"none\" }],\n\t[\"grid-cols-none\", { \"grid-template-columns\": \"none\" }],\n\t[\"grid-rows-subgrid\", { \"grid-template-rows\": \"subgrid\" }],\n\t[\"grid-cols-subgrid\", { \"grid-template-columns\": \"subgrid\" }]\n];\n\n//#endregion\n//#region src/rules/layout.ts\nconst overflowValues = [\n\t\"auto\",\n\t\"hidden\",\n\t\"clip\",\n\t\"visible\",\n\t\"scroll\",\n\t\"overlay\",\n\t...globalKeywords\n];\nconst overflows = [[\n\t/^(?:overflow|of)-(.+)$/,\n\t([, v]) => overflowValues.includes(v) ? { overflow: v } : void 0,\n\t{ autocomplete: [`(overflow|of)-(${overflowValues.join(\"|\")})`, `(overflow|of)-(x|y)-(${overflowValues.join(\"|\")})`] }\n], [/^(?:overflow|of)-([xy])-(.+)$/, ([, d, v]) => overflowValues.includes(v) ? { [`overflow-${d}`]: v } : void 0]];\n\n//#endregion\n//#region src/rules/line-clamp.ts\nconst lineClamps = [[\n\t/^line-clamp-(\\d+)$/,\n\t([, v]) => ({\n\t\t\"overflow\": \"hidden\",\n\t\t\"display\": \"-webkit-box\",\n\t\t\"-webkit-box-orient\": \"vertical\",\n\t\t\"-webkit-line-clamp\": v\n\t}),\n\t{ autocomplete: [\"line-clamp\", \"line-clamp-(1|2|3|4|5|6|none)\"] }\n], [\"line-clamp-none\", {\n\t\"overflow\": \"visible\",\n\t\"display\": \"block\",\n\t\"-webkit-box-orient\": \"horizontal\",\n\t\"-webkit-line-clamp\": \"unset\"\n}]];\n\n//#endregion\n//#region src/rules/mask.ts\nconst linearMap = {\n\tt: [\"top\"],\n\tb: [\"bottom\"],\n\tl: [\"left\"],\n\tr: [\"right\"],\n\tx: [\"left\", \"right\"],\n\ty: [\"top\", \"bottom\"]\n};\nconst maskInitialValue = \"linear-gradient(#fff, #fff)\";\nconst baseMaskImage = {\n\t\"mask-image\": \"var(--un-mask-linear), var(--un-mask-radial), var(--un-mask-conic)\",\n\t\"mask-composite\": \"intersect\"\n};\nfunction handlePosition([, v = \"\"]) {\n\tif (v in cornerMap) {\n\t\tconst positions$1 = v.split(\"\").flatMap((c) => linearMap[c]).join(\" \");\n\t\treturn { \"mask-position\": positions$1 };\n\t}\n\tconst _v = h.bracket.cssvar.global.position(v);\n\tif (_v !== null) return { \"mask-position\": _v };\n}\nfunction handleImage([_, gradient = \"\", direction, val], ctx) {\n\tconst css = { ...baseMaskImage };\n\tconst props = [];\n\tprops.push(...[\n\t\t\"linear\",\n\t\t\"radial\",\n\t\t\"conic\"\n\t].map((g) => defineProperty(`--un-mask-${g}`, { initialValue: maskInitialValue })));\n\tif (gradient in linearMap) {\n\t\tcss[\"--un-mask-linear\"] = \"var(--un-mask-left), var(--un-mask-right), var(--un-mask-bottom), var(--un-mask-top)\";\n\t\tfor (const dir of linearMap[gradient]) {\n\t\t\tcss[`--un-mask-${dir}`] = `linear-gradient(to ${dir}, var(--un-mask-${dir}-from-color) var(--un-mask-${dir}-from-position), var(--un-mask-${dir}-to-color) var(--un-mask-${dir}-to-position))`;\n\t\t\tif (numberResolver(val) != null) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tcss[`--un-mask-${dir}-${direction}-position`] = `calc(var(--spacing) * ${h.bracket.cssvar.fraction.number(val)})`;\n\t\t\t} else css[`--un-mask-${dir}-${direction}-position`] = h.bracket.cssvar.fraction.rem(val);\n\t\t\tif (hasParseableColor(val, ctx.theme)) {\n\t\t\t\tconst result = colorResolver(`--un-mask-${dir}-${direction}-color`, hyphenate(\"colors\"))([_, val], ctx);\n\t\t\t\tif (result) {\n\t\t\t\t\tconst [c, ...p] = result;\n\t\t\t\t\tObject.assign(css, c);\n\t\t\t\t\tprops.push(...p);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.push(...[\"from\", \"to\"].flatMap((p) => [defineProperty(`--un-mask-${dir}-${p}-position`, {\n\t\t\t\tsyntax: \"<length-percentage>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"0%\" : \"100%\"\n\t\t\t}), defineProperty(`--un-mask-${dir}-${p}-color`, {\n\t\t\t\tsyntax: \"<color>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"black\" : \"transparent\"\n\t\t\t})]));\n\t\t}\n\t\tprops.push(...[\n\t\t\t\"top\",\n\t\t\t\"right\",\n\t\t\t\"bottom\",\n\t\t\t\"left\"\n\t\t].map((d) => defineProperty(`--un-mask-${d}`, { initialValue: maskInitialValue })));\n\t} else {\n\t\tif (direction == null) if (gradient === \"radial\") {\n\t\t\tcss[\"--un-mask-radial\"] = \"radial-gradient(var(--un-mask-radial-stops, var(--un-mask-radial-size)))\";\n\t\t\tcss[\"--un-mask-radial-size\"] = h.bracket.cssvar.rem(val);\n\t\t} else {\n\t\t\tcss[`--un-mask-${gradient}`] = `${gradient}-gradient(var(--un-mask-${gradient}-stops, var(--un-mask-${gradient}-position)))`;\n\t\t\tcss[`--un-mask-${gradient}-position`] = numberResolver(val) ? `calc(1deg * ${h.bracket.cssvar.number(val)})` : h.bracket.cssvar.fraction(val);\n\t\t}\n\t\telse {\n\t\t\tconst gradientStopsPrefixMap = {\n\t\t\t\tlinear: \"\",\n\t\t\t\tradial: \"var(--un-mask-radial-shape) var(--un-mask-radial-size) at \",\n\t\t\t\tconic: \"from \"\n\t\t\t};\n\t\t\tcss[`--un-mask-${gradient}-stops`] = `${gradientStopsPrefixMap[gradient]}var(--un-mask-${gradient}-position), var(--un-mask-${gradient}-from-color) var(--un-mask-${gradient}-from-position), var(--un-mask-${gradient}-to-color) var(--un-mask-${gradient}-to-position)`;\n\t\t\tcss[`--un-mask-${gradient}`] = `${gradient}-gradient(var(--un-mask-${gradient}-stops))`;\n\t\t\tif (hasParseableColor(val, ctx.theme)) {\n\t\t\t\tconst result = colorResolver(`--un-mask-${gradient}-${direction}-color`, hyphenate(\"colors\"))([_, val], ctx);\n\t\t\t\tif (result) {\n\t\t\t\t\tconst [c, ...p] = result;\n\t\t\t\t\tObject.assign(css, c);\n\t\t\t\t\tprops.push(...p);\n\t\t\t\t}\n\t\t\t} else if (numberResolver(val) != null) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tcss[`--un-mask-${gradient}-${direction}-position`] = `calc(var(--spacing) * ${h.bracket.cssvar.fraction.number(val)})`;\n\t\t\t} else css[`--un-mask-${gradient}-${direction}-position`] = h.bracket.cssvar.fraction.rem(val);\n\t\t}\n\t\tif (gradient === \"radial\") props.push(...[defineProperty(\"--un-mask-radial-shape\", { initialValue: \"ellipse\" }), defineProperty(\"--un-mask-radial-size\", { initialValue: \"farthest-corner\" })]);\n\t\tprops.push(...[\"from\", \"to\"].flatMap((p) => [\n\t\t\tdefineProperty(`--un-mask-${gradient}-position`, { initialValue: gradient === \"radial\" ? \"center\" : \"0deg\" }),\n\t\t\tdefineProperty(`--un-mask-${gradient}-${p}-position`, {\n\t\t\t\tsyntax: \"<length-percentage>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"0%\" : \"100%\"\n\t\t\t}),\n\t\t\tdefineProperty(`--un-mask-${gradient}-${p}-color`, {\n\t\t\t\tsyntax: \"<color>\",\n\t\t\t\tinitialValue: p === \"from\" ? \"black\" : \"transparent\"\n\t\t\t})\n\t\t]));\n\t}\n\treturn [css, ...props];\n}\nfunction handleSize$1([, v = \"\"]) {\n\tconst _v = h.bracket.cssvar.global.fraction.rem(v);\n\tif (_v !== null) return { \"mask-size\": _v };\n}\nconst masks = [\n\t[\"mask-clip-border\", { \"mask-clip\": \"border-box\" }],\n\t[\"mask-clip-padding\", { \"mask-clip\": \"padding-box\" }],\n\t[\"mask-clip-content\", { \"mask-clip\": \"content-box\" }],\n\t[\"mask-clip-fill\", { \"mask-clip\": \"fill-box\" }],\n\t[\"mask-clip-stroke\", { \"mask-clip\": \"stroke-box\" }],\n\t[\"mask-clip-view\", { \"mask-clip\": \"view-box\" }],\n\t[\"mask-no-clip\", { \"mask-clip\": \"no-clip\" }],\n\t[\"mask-add\", { \"mask-composite\": \"add\" }],\n\t[\"mask-subtract\", { \"mask-composite\": \"subtract\" }],\n\t[\"mask-intersect\", { \"mask-composite\": \"intersect\" }],\n\t[\"mask-exclude\", { \"mask-composite\": \"exclude\" }],\n\t[/^mask-(.+)$/, ([, v]) => ({ \"mask-image\": h.bracket.cssvar(v) })],\n\t[\n\t\t/^mask-(linear|radial|conic|[xytblr])-(from|to)()(?:-(.+))?$/,\n\t\thandleImage,\n\t\t{ autocomplete: [\n\t\t\t\"mask-(linear|radial|conic)-(from|to)-$colors\",\n\t\t\t\"mask-(linear|radial|conic)-(from|to)-<percentage>\",\n\t\t\t\"mask-(linear|radial|conic)-(from|to)\",\n\t\t\t\"mask-(linear|radial|conic)-<percent>\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)-$colors\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)-<percentage>\",\n\t\t\t\"mask-(x|y|t|b|l|r)-(from|to)\",\n\t\t\t\"mask-(x|y|t|b|l|r)-<percent>\"\n\t\t] }\n\t],\n\t[/^mask-(linear|radial|conic)-(from|to)?-?(.*)$/, handleImage],\n\t[/^mask-([trblxy])-(from|to)-(.*)$/, handleImage],\n\t[\"mask-none\", { \"mask-image\": \"none\" }],\n\t[\"mask-radial-circle\", { \"--un-mask-radial-shape\": \"circle\" }],\n\t[\"mask-radial-ellipse\", { \"--un-mask-radial-shape\": \"ellipse\" }],\n\t[\"mask-radial-closest-side\", { \"--un-mask-radial-size\": \"closest-side\" }],\n\t[\"mask-radial-closest-corner\", { \"--un-mask-radial-size\": \"closest-corner\" }],\n\t[\"mask-radial-farthest-side\", { \"--un-mask-radial-size\": \"farthest-side\" }],\n\t[\"mask-radial-farthest-corner\", { \"--un-mask-radial-size\": \"farthest-corner\" }],\n\t[\n\t\t/^mask-radial-at-([-\\w]{3,})$/,\n\t\t([, s]) => ({ \"--un-mask-radial-position\": positionMap[s] }),\n\t\t{ autocomplete: [`mask-radial-at-(${Object.keys(positionMap).filter((p) => p.length > 2).join(\"|\")})`] }\n\t],\n\t[\"mask-alpha\", { \"mask-mode\": \"alpha\" }],\n\t[\"mask-luminance\", { \"mask-mode\": \"luminance\" }],\n\t[\"mask-match\", { \"mask-mode\": \"match-source\" }],\n\t[\"mask-origin-border\", { \"mask-origin\": \"border-box\" }],\n\t[\"mask-origin-padding\", { \"mask-origin\": \"padding-box\" }],\n\t[\"mask-origin-content\", { \"mask-origin\": \"content-box\" }],\n\t[\"mask-origin-fill\", { \"mask-origin\": \"fill-box\" }],\n\t[\"mask-origin-stroke\", { \"mask-origin\": \"stroke-box\" }],\n\t[\"mask-origin-view\", { \"mask-origin\": \"view-box\" }],\n\t[/^mask-([rltb]{1,2})$/, handlePosition],\n\t[/^mask-([-\\w]{3,})$/, ([, s]) => ({ \"mask-position\": positionMap[s] })],\n\t[/^mask-(?:position-|pos-)(.+)$/, handlePosition],\n\t[\"mask-repeat\", { \"mask-repeat\": \"repeat\" }],\n\t[\"mask-no-repeat\", { \"mask-repeat\": \"no-repeat\" }],\n\t[\"mask-repeat-x\", { \"mask-repeat\": \"repeat-x\" }],\n\t[\"mask-repeat-y\", { \"mask-repeat\": \"repeat-y\" }],\n\t[\"mask-repeat-space\", { \"mask-repeat\": \"space\" }],\n\t[\"mask-repeat-round\", { \"mask-repeat\": \"round\" }],\n\t[\"mask-auto\", { \"mask-size\": \"auto\" }],\n\t[\"mask-cover\", { \"mask-size\": \"cover\" }],\n\t[\"mask-contain\", { \"mask-size\": \"contain\" }],\n\t[/^mask-size-(.+)$/, handleSize$1],\n\t[\"mask-type-luminance\", { \"mask-type\": \"luminance\" }],\n\t[\"mask-type-alpha\", { \"mask-type\": \"alpha\" }]\n];\n\n//#endregion\n//#region src/rules/placeholder.ts\nconst placeholders = [[\n\t/^\\$ placeholder-(.+)$/,\n\tcolorResolver(\"color\", \"placeholder\"),\n\t{ autocomplete: \"placeholder-$colors\" }\n], [\n\t/^\\$ placeholder-op(?:acity)?-?(.+)$/,\n\t([, opacity$1]) => ({ \"--un-placeholder-opacity\": h.bracket.percent(opacity$1) }),\n\t{ autocomplete: [\"placeholder-(op|opacity)\", \"placeholder-(op|opacity)-<percent>\"] }\n]];\n\n//#endregion\n//#region src/rules/position.ts\nconst positions = [\n\t[\n\t\t/^(?:position-|pos-)?(relative|absolute|fixed|sticky)$/,\n\t\t([, v]) => ({ position: v }),\n\t\t{ autocomplete: [\n\t\t\t\"(position|pos)-<position>\",\n\t\t\t\"(position|pos)-<globalKeyword>\",\n\t\t\t\"<position>\"\n\t\t] }\n\t],\n\t[/^(?:position-|pos-)([-\\w]+)$/, ([, v]) => globalKeywords.includes(v) ? { position: v } : void 0],\n\t[/^(?:position-|pos-)?(static)$/, ([, v]) => ({ position: v })]\n];\nconst justifies = [\n\t[\"justify-start\", { \"justify-content\": \"flex-start\" }],\n\t[\"justify-end\", { \"justify-content\": \"flex-end\" }],\n\t[\"justify-center\", { \"justify-content\": \"center\" }],\n\t[\"justify-between\", { \"justify-content\": \"space-between\" }],\n\t[\"justify-around\", { \"justify-content\": \"space-around\" }],\n\t[\"justify-evenly\", { \"justify-content\": \"space-evenly\" }],\n\t[\"justify-stretch\", { \"justify-content\": \"stretch\" }],\n\t[\"justify-left\", { \"justify-content\": \"left\" }],\n\t[\"justify-right\", { \"justify-content\": \"right\" }],\n\t[\"justify-center-safe\", { \"justify-content\": \"safe center\" }],\n\t[\"justify-end-safe\", { \"justify-content\": \"safe flex-end\" }],\n\t[\"justify-normal\", { \"justify-content\": \"normal\" }],\n\t...makeGlobalStaticRules(\"justify\", \"justify-content\"),\n\t[\"justify-items-start\", { \"justify-items\": \"start\" }],\n\t[\"justify-items-end\", { \"justify-items\": \"end\" }],\n\t[\"justify-items-center\", { \"justify-items\": \"center\" }],\n\t[\"justify-items-stretch\", { \"justify-items\": \"stretch\" }],\n\t[\"justify-items-center-safe\", { \"justify-items\": \"safe center\" }],\n\t[\"justify-items-end-safe\", { \"justify-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"justify-items\"),\n\t[\"justify-self-auto\", { \"justify-self\": \"auto\" }],\n\t[\"justify-self-start\", { \"justify-self\": \"start\" }],\n\t[\"justify-self-end\", { \"justify-self\": \"end\" }],\n\t[\"justify-self-center\", { \"justify-self\": \"center\" }],\n\t[\"justify-self-stretch\", { \"justify-self\": \"stretch\" }],\n\t[\"justify-self-baseline\", { \"justify-self\": \"baseline\" }],\n\t[\"justify-self-center-safe\", { \"justify-self\": \"safe center\" }],\n\t[\"justify-self-end-safe\", { \"justify-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"justify-self\")\n];\nconst orders = [\n\t[/^order-(.+)$/, ([, v]) => ({ order: h.bracket.cssvar.number(v) })],\n\t[\"order-first\", { order: \"calc(-infinity)\" }],\n\t[\"order-last\", { order: \"calc(infinity)\" }],\n\t[\"order-none\", { order: \"0\" }]\n];\nconst alignments = [\n\t[\"content-center\", { \"align-content\": \"center\" }],\n\t[\"content-start\", { \"align-content\": \"flex-start\" }],\n\t[\"content-end\", { \"align-content\": \"flex-end\" }],\n\t[\"content-between\", { \"align-content\": \"space-between\" }],\n\t[\"content-around\", { \"align-content\": \"space-around\" }],\n\t[\"content-evenly\", { \"align-content\": \"space-evenly\" }],\n\t[\"content-baseline\", { \"align-content\": \"baseline\" }],\n\t[\"content-center-safe\", { \"align-content\": \"safe center\" }],\n\t[\"content-end-safe\", { \"align-content\": \"safe flex-end\" }],\n\t[\"content-stretch\", { \"align-content\": \"stretch\" }],\n\t[\"content-normal\", { \"align-content\": \"normal\" }],\n\t...makeGlobalStaticRules(\"content\", \"align-content\"),\n\t[\"items-start\", { \"align-items\": \"flex-start\" }],\n\t[\"items-end\", { \"align-items\": \"flex-end\" }],\n\t[\"items-center\", { \"align-items\": \"center\" }],\n\t[\"items-baseline\", { \"align-items\": \"baseline\" }],\n\t[\"items-stretch\", { \"align-items\": \"stretch\" }],\n\t[\"items-baseline-last\", { \"align-items\": \"last baseline\" }],\n\t[\"items-center-safe\", { \"align-items\": \"safe center\" }],\n\t[\"items-end-safe\", { \"align-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"items\", \"align-items\"),\n\t[\"self-auto\", { \"align-self\": \"auto\" }],\n\t[\"self-start\", { \"align-self\": \"flex-start\" }],\n\t[\"self-end\", { \"align-self\": \"flex-end\" }],\n\t[\"self-center\", { \"align-self\": \"center\" }],\n\t[\"self-stretch\", { \"align-self\": \"stretch\" }],\n\t[\"self-baseline\", { \"align-self\": \"baseline\" }],\n\t[\"self-baseline-last\", { \"align-self\": \"last baseline\" }],\n\t[\"self-center-safe\", { \"align-self\": \"safe center\" }],\n\t[\"self-end-safe\", { \"align-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"self\", \"align-self\")\n];\nconst placements = [\n\t[\"place-content-center\", { \"place-content\": \"center\" }],\n\t[\"place-content-start\", { \"place-content\": \"start\" }],\n\t[\"place-content-end\", { \"place-content\": \"end\" }],\n\t[\"place-content-between\", { \"place-content\": \"space-between\" }],\n\t[\"place-content-around\", { \"place-content\": \"space-around\" }],\n\t[\"place-content-evenly\", { \"place-content\": \"space-evenly\" }],\n\t[\"place-content-stretch\", { \"place-content\": \"stretch\" }],\n\t[\"place-content-baseline\", { \"place-content\": \"baseline\" }],\n\t[\"place-content-center-safe\", { \"place-content\": \"safe center\" }],\n\t[\"place-content-end-safe\", { \"place-content\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-content\"),\n\t[\"place-items-start\", { \"place-items\": \"start\" }],\n\t[\"place-items-end\", { \"place-items\": \"end\" }],\n\t[\"place-items-center\", { \"place-items\": \"center\" }],\n\t[\"place-items-stretch\", { \"place-items\": \"stretch\" }],\n\t[\"place-items-baseline\", { \"place-items\": \"baseline\" }],\n\t[\"place-items-center-safe\", { \"place-items\": \"safe center\" }],\n\t[\"place-items-end-safe\", { \"place-items\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-items\"),\n\t[\"place-self-auto\", { \"place-self\": \"auto\" }],\n\t[\"place-self-start\", { \"place-self\": \"start\" }],\n\t[\"place-self-end\", { \"place-self\": \"end\" }],\n\t[\"place-self-center\", { \"place-self\": \"center\" }],\n\t[\"place-self-stretch\", { \"place-self\": \"stretch\" }],\n\t[\"place-self-center-safe\", { \"place-self\": \"safe center\" }],\n\t[\"place-self-end-safe\", { \"place-self\": \"safe flex-end\" }],\n\t...makeGlobalStaticRules(\"place-self\")\n];\n/**\n* This is to add `flex-` and `grid-` prefix to the alignment rules,\n* supporting `flex=\"~ items-center\"` in attributify mode.\n*/\nconst flexGridJustifiesAlignments = [\n\t...justifies,\n\t...alignments,\n\t...placements\n].flatMap(([k, v]) => [[`flex-${k}`, v], [`grid-${k}`, v]]);\nfunction handleInsetValue(v) {\n\tconst _v = numberResolver(v);\n\tif (_v != null) {\n\t\tthemeTracking(`spacing`);\n\t\treturn `calc(var(--spacing) * ${_v})`;\n\t} else return h.bracket.cssvar.global.auto.fraction.rem(v);\n}\nfunction handleInsetValues([, d, v]) {\n\tconst r = handleInsetValue(v);\n\tif (r != null && d in insetMap) return insetMap[d].map((i) => [i.slice(1), r]);\n}\nconst insets = [\n\t[\n\t\t/^(?:position-|pos-)?inset-(.+)$/,\n\t\t([, v]) => ({ inset: handleInsetValue(v) }),\n\t\t{ autocomplete: [\n\t\t\t\"(position|pos)-inset-<directions>-$spacing\",\n\t\t\t\"(position|pos)-inset-(block|inline)-$spacing\",\n\t\t\t\"(position|pos)-inset-(bs|be|is|ie)-$spacing\",\n\t\t\t\"(position|pos)-(top|left|right|bottom)-$spacing\"\n\t\t] }\n\t],\n\t[/^(?:position-|pos-)?(start|end)-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([xy])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([rltbse])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-(block|inline)-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?inset-([bi][se])-(.+)$/, handleInsetValues],\n\t[/^(?:position-|pos-)?(top|left|right|bottom)-(.+)$/, ([, d, v]) => ({ [d]: handleInsetValue(v) })]\n];\nconst floats = [\n\t[\"float-left\", { float: \"left\" }],\n\t[\"float-right\", { float: \"right\" }],\n\t[\"float-start\", { float: \"inline-start\" }],\n\t[\"float-end\", { float: \"inline-end\" }],\n\t[\"float-none\", { float: \"none\" }],\n\t...makeGlobalStaticRules(\"float\"),\n\t[\"clear-left\", { clear: \"left\" }],\n\t[\"clear-right\", { clear: \"right\" }],\n\t[\"clear-both\", { clear: \"both\" }],\n\t[\"clear-start\", { clear: \"inline-start\" }],\n\t[\"clear-end\", { clear: \"inline-end\" }],\n\t[\"clear-none\", { clear: \"none\" }],\n\t...makeGlobalStaticRules(\"clear\")\n];\nconst zIndexes = [[/^(?:position-|pos-)?z([\\d.]+)$/, ([, v]) => ({ \"z-index\": h.number(v) })], [\n\t/^(?:position-|pos-)?z-(.+)$/,\n\t([, v]) => ({ \"z-index\": h.bracket.cssvar.global.auto.number(v) }),\n\t{ autocomplete: \"z-<num>\" }\n]];\nconst boxSizing = [\n\t[\"box-border\", { \"box-sizing\": \"border-box\" }],\n\t[\"box-content\", { \"box-sizing\": \"content-box\" }],\n\t...makeGlobalStaticRules(\"box\", \"box-sizing\")\n];\n\n//#endregion\n//#region src/rules/question-mark.ts\n/**\n* Used for debugging, only available in development mode.\n*\n* @example `?` / `where`\n*/\nconst questionMark = [[/^(where|\\?)$/, (_, { constructCSS, generator }) => {\n\tif (generator.userConfig.envMode === \"dev\") return `@keyframes __un_qm{0%{box-shadow:inset 4px 4px #ff1e90, inset -4px -4px #ff1e90}100%{box-shadow:inset 8px 8px #3399ff, inset -8px -8px #3399ff}} ${constructCSS({ animation: \"__un_qm 0.5s ease-in-out alternate infinite\" })}`;\n}]];\n\n//#endregion\n//#region src/rules/shadow.ts\nconst shadowProperties = {\n\tshadow: defineProperty(\"--un-shadow\", { initialValue: \"0 0 #0000\" }),\n\tshadowColor: defineProperty(\"--un-shadow-color\"),\n\tinsetShadow: defineProperty(\"--un-inset-shadow\", { initialValue: \"0 0 #0000\" }),\n\tinsetShadowColor: defineProperty(\"--un-inset-shadow-color\"),\n\tringColor: defineProperty(\"--un-ring-color\"),\n\tringShadow: defineProperty(\"--un-ring-shadow\", { initialValue: \"0 0 #0000\" }),\n\tinsetRingColor: defineProperty(\"--un-inset-ring-color\"),\n\tinsetRingShadow: defineProperty(\"--un-inset-ring-shadow\", { initialValue: \"0 0 #0000\" }),\n\tringInset: defineProperty(\"--un-ring-inset\"),\n\tringOffsetWidth: defineProperty(\"--un-ring-offset-width\", {\n\t\tsyntax: \"<length>\",\n\t\tinitialValue: \"0px\"\n\t}),\n\tringOffsetColor: defineProperty(\"--un-ring-offset-color\"),\n\tringOffsetShadow: defineProperty(\"--un-ring-offset-shadow\", { initialValue: \"0 0 #0000\" })\n};\nconst boxShadows = [\n\t[\n\t\t/^shadow(?:-?(.+))?$/,\n\t\thandleShadow(\"shadow\"),\n\t\t{ autocomplete: [\"shadow-$colors\", \"shadow-$shadow\"] }\n\t],\n\t[\n\t\t/^shadow-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-shadow-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"shadow-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^inset-shadow(?:-(.+))?$/,\n\t\thandleShadow(\"insetShadow\"),\n\t\t{ autocomplete: [\"inset-shadow-$colors\", \"inset-shadow-$insetShadow\"] }\n\t],\n\t[\n\t\t/^inset-shadow-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-inset-shadow-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"shadow-(op|opacity)-<percent>\" }\n\t]\n];\nfunction handleShadow(themeKey) {\n\treturn (match, ctx) => {\n\t\tconst [, d] = match;\n\t\tconst { theme } = ctx;\n\t\tlet res = [];\n\t\tif (d) {\n\t\t\tres = getStringComponents(d, \"/\", 2) ?? [];\n\t\t\tif (d.startsWith(\"/\")) res = [\"\", d.slice(1)];\n\t\t}\n\t\tconst v = theme[themeKey]?.[res[0] || \"DEFAULT\"];\n\t\tconst c = d ? h.bracket.cssvar(d) : void 0;\n\t\tconst shadowVar = hyphenate(themeKey);\n\t\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;\n\t\t\treturn [{\n\t\t\t\t[`--un-${shadowVar}-opacity`]: alpha,\n\t\t\t\t[`--un-${shadowVar}`]: colorableShadows(v || c, `--un-${shadowVar}-color`, alpha).join(\",\"),\n\t\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t\t}, ...Object.values(shadowProperties)];\n\t\t}\n\t\treturn colorResolver(`--un-${shadowVar}-color`, shadowVar)(match, ctx);\n\t};\n}\n\n//#endregion\n//#region src/rules/ring.ts\nconst rings = [\n\t[/^ring(?:-(.+))?$/, ([, d]) => {\n\t\tconst v = h.bracket.px(d || \"1\");\n\t\tif (v != null) return [{\n\t\t\t\"--un-ring-shadow\": `var(--un-ring-inset,) 0 0 0 calc(${v} + var(--un-ring-offset-width)) var(--un-ring-color, currentColor)`,\n\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t}, ...Object.values(shadowProperties)];\n\t}],\n\t[\n\t\t/^ring-(.+)$/,\n\t\tcolorResolver(`--un-ring-color`, \"ring\"),\n\t\t{ autocomplete: \"ring-$colors\" }\n\t],\n\t[\n\t\t/^ring-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-ring-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"ring-(op|opacity)-<percent>\" }\n\t],\n\t[/^inset-ring(?:-(.+))?$/, ([, d]) => {\n\t\tconst v = h.bracket.px(d || \"1\");\n\t\tif (v != null) return [{\n\t\t\t\"--un-inset-ring-shadow\": `inset 0 0 0 ${v} var(--un-inset-ring-color, currentColor)`,\n\t\t\t\"box-shadow\": \"var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)\"\n\t\t}, ...Object.values(shadowProperties)];\n\t}],\n\t[\n\t\t/^inset-ring-(.+)$/,\n\t\tcolorResolver(`--un-inset-ring-color`, \"inset-ring\"),\n\t\t{ autocomplete: \"inset-ring-$colors\" }\n\t],\n\t[\n\t\t/^inset-ring-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-inset-ring-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"inset-ring-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^ring-offset(?:-(?:width-|size-)?(.+))?$/,\n\t\t([, d]) => {\n\t\t\tconst v = h.bracket.cssvar.px(d || \"1\");\n\t\t\tif (v != null) return {\n\t\t\t\t\"--un-ring-offset-width\": v,\n\t\t\t\t\"--un-ring-offset-shadow\": \"var(--un-ring-inset,) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color)\"\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"ring-offset-$colors\" }\n\t],\n\t[\n\t\t/^ring-offset-(.+)$/,\n\t\tcolorResolver(`--un-ring-offset-color`, \"ring-offset\"),\n\t\t{ autocomplete: \"ring-offset-$colors\" }\n\t],\n\t[\n\t\t/^ring-offset-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-ring-offset-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"ring-offset-(op|opacity)-<percent>\" }\n\t],\n\t[\"ring-inset\", { \"--un-ring-inset\": \"inset\" }]\n];\n\n//#endregion\n//#region src/rules/scrolls.ts\nconst scrolls = [\n\t...[\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"both\"\n\t].map((d) => [`snap-${d}`, [{ \"scroll-snap-type\": `${d} var(--un-scroll-snap-strictness)` }, defineProperty(\"--un-scroll-snap-strictness\", { initialValue: \"proximity\" })]]),\n\t...[\"mandatory\", \"proximity\"].map((d) => [`snap-${d}`, [{ \"--un-scroll-snap-strictness\": d }, defineProperty(\"--un-scroll-snap-strictness\", { initialValue: \"proximity\" })]]),\n\t[\"snap-none\", { \"scroll-snap-type\": \"none\" }],\n\t[\"snap-start\", { \"scroll-snap-align\": \"start\" }],\n\t[\"snap-end\", { \"scroll-snap-align\": \"end\" }],\n\t[\"snap-center\", { \"scroll-snap-align\": \"center\" }],\n\t[\"snap-align-none\", { \"scroll-snap-align\": \"none\" }],\n\t[\"snap-normal\", { \"scroll-snap-stop\": \"normal\" }],\n\t[\"snap-always\", { \"scroll-snap-stop\": \"always\" }],\n\t[\n\t\t/^scroll-ma?()-?(.+)$/,\n\t\tdirectionSize(\"scroll-margin\"),\n\t\t{ autocomplete: [\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-$spacing\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)\",\n\t\t\t\"scroll-(m|p|ma|pa|block|inline)-(x|y|r|l|t|b|bs|be|is|ie)-$spacing\"\n\t\t] }\n\t],\n\t[/^scroll-m-?([xy])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-?([rltb])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-(block|inline)-(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-m-?([bi][se])-?(.+)$/, directionSize(\"scroll-margin\")],\n\t[/^scroll-pa?()-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([xy])-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([rltb])-?(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-(block|inline)-(.+)$/, directionSize(\"scroll-padding\")],\n\t[/^scroll-p-?([bi][se])-?(.+)$/, directionSize(\"scroll-padding\")]\n];\n\n//#endregion\n//#region src/rules/size.ts\nconst sizeMapping = {\n\th: \"height\",\n\tw: \"width\",\n\tinline: \"inline-size\",\n\tblock: \"block-size\"\n};\nfunction getPropName(minmax, hw) {\n\treturn `${minmax || \"\"}${sizeMapping[hw]}`;\n}\nfunction getSizeValue(theme, hw, prop) {\n\tlet v;\n\tfor (const key of [\"container\", \"spacing\"]) if (theme[key]?.[prop]) {\n\t\tthemeTracking(key, prop);\n\t\tv = generateThemeVariable(key, prop);\n\t\tbreak;\n\t}\n\tif (!v) switch (prop) {\n\t\tcase \"fit\":\n\t\tcase \"max\":\n\t\tcase \"min\":\n\t\t\tv = `${prop}-content`;\n\t\t\tbreak;\n\t\tcase \"stretch\":\n\t\t\tv = \"stretch\";\n\t\t\tbreak;\n\t\tcase \"screen\":\n\t\t\tv = hw === \"w\" ? \"100vw\" : \"100vh\";\n\t\t\tbreak;\n\t}\n\tif (!v && h.number(prop) != null) {\n\t\tthemeTracking(`spacing`);\n\t\tv = `calc(var(--spacing) * ${h.number(prop)})`;\n\t}\n\treturn v ?? h.bracket.cssvar.global.auto.none.fraction.rem(prop);\n}\nconst sizes = [\n\t[/^size-(min-|max-)?(.+)$/, ([, m, s], { theme }) => ({\n\t\t[getPropName(m, \"w\")]: getSizeValue(theme, \"w\", s),\n\t\t[getPropName(m, \"h\")]: getSizeValue(theme, \"h\", s)\n\t})],\n\t[/^(?:size-)?(min-|max-)?([wh])-?(.+)$/, ([, m, w, s], { theme }) => ({ [getPropName(m, w)]: getSizeValue(theme, w, s) })],\n\t[\n\t\t/^(?:size-)?(min-|max-)?(block|inline)-(.+)$/,\n\t\t([, m, w, s], { theme }) => ({ [getPropName(m, w)]: getSizeValue(theme, w, s) }),\n\t\t{ autocomplete: [\n\t\t\t\"(w|h)-<num>\",\n\t\t\t\"(w|h)-(full|screen|fit|max|min)\",\n\t\t\t\"(max|min)-(w|h)-<num>\",\n\t\t\t\"(max|min)-(w|h)-(full|screen|fit|max|min)\",\n\t\t\t\"(block|inline)-<num>\",\n\t\t\t\"(block|inline)-(full|screen|fit|max|min)\",\n\t\t\t\"(max|min)-(w|h|block|inline)\",\n\t\t\t\"(max|min)-(w|h|block|inline)-<num>\",\n\t\t\t\"(max|min)-(w|h|block|inline)-(full|screen|fit|max|min)\"\n\t\t] }\n\t],\n\t[/^(?:size-)?(min-|max-)?(h)-screen-(.+)$/, ([, m, h$1, p], context) => ({ [getPropName(m, h$1)]: handleBreakpoint(context, p, \"verticalBreakpoint\") })],\n\t[\n\t\t/^(?:size-)?(min-|max-)?(w)-screen-(.+)$/,\n\t\t([, m, w, p], context) => ({ [getPropName(m, w)]: handleBreakpoint(context, p) }),\n\t\t{ autocomplete: [\n\t\t\t\"(w|h)-screen\",\n\t\t\t\"(min|max)-(w|h)-screen\",\n\t\t\t\"h-screen-$breakpoint\",\n\t\t\t\"(min|max)-h-screen-$breakpoint\",\n\t\t\t\"w-screen-$breakpoint\",\n\t\t\t\"(min|max)-w-screen-$breakpoint\"\n\t\t] }\n\t]\n];\nfunction handleBreakpoint(context, point, key = \"breakpoint\") {\n\tconst bp = resolveBreakpoints(context, key);\n\tif (bp) return bp.find((i) => i.point === point)?.size;\n}\nfunction getAspectRatio(prop) {\n\tif (/^\\d+\\/\\d+$/.test(prop)) return prop;\n\tswitch (prop) {\n\t\tcase \"square\": return \"1/1\";\n\t\tcase \"video\": return \"16/9\";\n\t}\n\treturn h.bracket.cssvar.global.auto.number(prop);\n}\nconst aspectRatio = [[\n\t/^(?:size-)?aspect-(?:ratio-)?(.+)$/,\n\t([, d]) => ({ \"aspect-ratio\": getAspectRatio(d) }),\n\t{ autocomplete: [\"aspect-(square|video|ratio)\", \"aspect-ratio-(square|video)\"] }\n]];\n\n//#endregion\n//#region src/rules/static.ts\nconst cursorValues = [\n\t\"auto\",\n\t\"default\",\n\t\"none\",\n\t\"context-menu\",\n\t\"help\",\n\t\"pointer\",\n\t\"progress\",\n\t\"wait\",\n\t\"cell\",\n\t\"crosshair\",\n\t\"text\",\n\t\"vertical-text\",\n\t\"alias\",\n\t\"copy\",\n\t\"move\",\n\t\"no-drop\",\n\t\"not-allowed\",\n\t\"grab\",\n\t\"grabbing\",\n\t\"all-scroll\",\n\t\"col-resize\",\n\t\"row-resize\",\n\t\"n-resize\",\n\t\"e-resize\",\n\t\"s-resize\",\n\t\"w-resize\",\n\t\"ne-resize\",\n\t\"nw-resize\",\n\t\"se-resize\",\n\t\"sw-resize\",\n\t\"ew-resize\",\n\t\"ns-resize\",\n\t\"nesw-resize\",\n\t\"nwse-resize\",\n\t\"zoom-in\",\n\t\"zoom-out\"\n];\nconst containValues = [\n\t\"size\",\n\t\"layout\",\n\t\"paint\",\n\t\"style\"\n];\nconst displays = [\n\t[\"inline\", { display: \"inline\" }],\n\t[\"block\", { display: \"block\" }],\n\t[\"inline-block\", { display: \"inline-block\" }],\n\t[\"contents\", { display: \"contents\" }],\n\t[\"flow-root\", { display: \"flow-root\" }],\n\t[\"list-item\", { display: \"list-item\" }],\n\t[\"hidden\", { display: \"none\" }],\n\t[/^display-(.+)$/, ([, c]) => ({ display: h.bracket.cssvar.global(c) })]\n];\nconst appearances = [\n\t[\"visible\", { visibility: \"visible\" }],\n\t[\"invisible\", { visibility: \"hidden\" }],\n\t[\"collapse\", { visibility: \"collapse\" }],\n\t[\"backface-visible\", { \"backface-visibility\": \"visible\" }],\n\t[\"backface-hidden\", { \"backface-visibility\": \"hidden\" }],\n\t...makeGlobalStaticRules(\"backface\", \"backface-visibility\")\n];\nconst cursors = [[/^cursor-(.+)$/, ([, c]) => ({ cursor: h.bracket.cssvar.global(c) })], ...cursorValues.map((v) => [`cursor-${v}`, { cursor: v }])];\nconst contains = [\n\t[/^contain-(.*)$/, ([, d]) => {\n\t\tif (h.bracket(d) != null) return { contain: h.bracket(d).split(\" \").map((e) => h.cssvar.fraction(e) ?? e).join(\" \") };\n\t\treturn containValues.includes(d) ? [{\n\t\t\t\"--un-contain-size\": d,\n\t\t\t\"contain\": containValues.map((i) => `var(--un-contain-${i})`).join(\" \")\n\t\t}, ...containValues.map((i) => defineProperty(`--un-contain-${i}`))] : void 0;\n\t}],\n\t[\"contain-strict\", { contain: \"strict\" }],\n\t[\"contain-content\", { contain: \"content\" }],\n\t[\"contain-none\", { contain: \"none\" }]\n];\nconst pointerEvents = [\n\t[\"pointer-events-auto\", { \"pointer-events\": \"auto\" }],\n\t[\"pointer-events-none\", { \"pointer-events\": \"none\" }],\n\t...makeGlobalStaticRules(\"pointer-events\")\n];\nconst resizes = [\n\t[\"resize-x\", { resize: \"horizontal\" }],\n\t[\"resize-y\", { resize: \"vertical\" }],\n\t[\"resize\", { resize: \"both\" }],\n\t[\"resize-none\", { resize: \"none\" }],\n\t...makeGlobalStaticRules(\"resize\")\n];\nconst userSelects = [\n\t[\"select-auto\", {\n\t\t\"-webkit-user-select\": \"auto\",\n\t\t\"user-select\": \"auto\"\n\t}],\n\t[\"select-all\", {\n\t\t\"-webkit-user-select\": \"all\",\n\t\t\"user-select\": \"all\"\n\t}],\n\t[\"select-text\", {\n\t\t\"-webkit-user-select\": \"text\",\n\t\t\"user-select\": \"text\"\n\t}],\n\t[\"select-none\", {\n\t\t\"-webkit-user-select\": \"none\",\n\t\t\"user-select\": \"none\"\n\t}],\n\t...makeGlobalStaticRules(\"select\", \"user-select\")\n];\nconst whitespaces = [[\n\t/^(?:whitespace-|ws-)([-\\w]+)$/,\n\t([, v]) => [\n\t\t\"normal\",\n\t\t\"nowrap\",\n\t\t\"pre\",\n\t\t\"pre-line\",\n\t\t\"pre-wrap\",\n\t\t\"break-spaces\",\n\t\t...globalKeywords\n\t].includes(v) ? { \"white-space\": v } : void 0,\n\t{ autocomplete: \"(whitespace|ws)-(normal|nowrap|pre|pre-line|pre-wrap|break-spaces)\" }\n]];\nconst contentVisibility = [\n\t[\n\t\t/^intrinsic(?:-(block|inline|w|h))?(?:-size)?-(.+)$/,\n\t\t([, d, s]) => {\n\t\t\treturn { [`contain-intrinsic-${{\n\t\t\t\tblock: \"block-size\",\n\t\t\t\tinline: \"inline-size\",\n\t\t\t\tw: \"width\",\n\t\t\t\th: \"height\"\n\t\t\t}[d] ?? \"size\"}`]: h.bracket.cssvar.global.fraction.rem(s) };\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t\"intrinsic-size-<num>\",\n\t\t\t\"intrinsic-<num>\",\n\t\t\t\"intrinsic-(block|inline|w|h)-<num>\"\n\t\t] }\n\t],\n\t[\"content-visibility-visible\", { \"content-visibility\": \"visible\" }],\n\t[\"content-visibility-hidden\", { \"content-visibility\": \"hidden\" }],\n\t[\"content-visibility-auto\", { \"content-visibility\": \"auto\" }],\n\t...makeGlobalStaticRules(\"content-visibility\")\n];\nconst contents = [\n\t[/^content-(.+)$/, ([, v]) => {\n\t\tif (h.bracket.cssvar(v) != null) return [{\n\t\t\t\"--un-content\": h.bracket.cssvar(v),\n\t\t\t\"content\": \"var(--un-content)\"\n\t\t}, defineProperty(\"--un-content\", { initialValue: \"\\\"\\\"\" })];\n\t}],\n\t[\"content-empty\", { content: \"\\\"\\\"\" }],\n\t[\"content-none\", { content: \"none\" }]\n];\nconst breaks = [\n\t[\"break-normal\", {\n\t\t\"overflow-wrap\": \"normal\",\n\t\t\"word-break\": \"normal\"\n\t}],\n\t[\"break-words\", { \"overflow-wrap\": \"break-word\" }],\n\t[\"break-all\", { \"word-break\": \"break-all\" }],\n\t[\"break-keep\", { \"word-break\": \"keep-all\" }],\n\t[\"break-anywhere\", { \"overflow-wrap\": \"anywhere\" }],\n\t[\"wrap-break-word\", { \"overflow-wrap\": \"break-word\" }],\n\t[\"wrap-anywhere\", { \"overflow-wrap\": \"anywhere\" }],\n\t[\"wrap-normal\", { \"overflow-wrap\": \"normal\" }]\n];\nconst textWraps = [\n\t[\"text-wrap\", { \"text-wrap\": \"wrap\" }],\n\t[\"text-nowrap\", { \"text-wrap\": \"nowrap\" }],\n\t[\"text-balance\", { \"text-wrap\": \"balance\" }],\n\t[\"text-pretty\", { \"text-wrap\": \"pretty\" }]\n];\nconst textOverflows = [\n\t[\"truncate\", {\n\t\t\"overflow\": \"hidden\",\n\t\t\"text-overflow\": \"ellipsis\",\n\t\t\"white-space\": \"nowrap\"\n\t}],\n\t[\"text-truncate\", {\n\t\t\"overflow\": \"hidden\",\n\t\t\"text-overflow\": \"ellipsis\",\n\t\t\"white-space\": \"nowrap\"\n\t}],\n\t[\"text-ellipsis\", { \"text-overflow\": \"ellipsis\" }],\n\t[\"text-clip\", { \"text-overflow\": \"clip\" }]\n];\nconst textTransforms = [\n\t[\"case-upper\", { \"text-transform\": \"uppercase\" }],\n\t[\"case-lower\", { \"text-transform\": \"lowercase\" }],\n\t[\"case-capital\", { \"text-transform\": \"capitalize\" }],\n\t[\"case-normal\", { \"text-transform\": \"none\" }],\n\t[\"uppercase\", { \"text-transform\": \"uppercase\" }],\n\t[\"lowercase\", { \"text-transform\": \"lowercase\" }],\n\t[\"capitalize\", { \"text-transform\": \"capitalize\" }],\n\t[\"normal-case\", { \"text-transform\": \"none\" }],\n\t...makeGlobalStaticRules(\"case\", \"text-transform\")\n];\nconst fontStyles = [\n\t[\"italic\", { \"font-style\": \"italic\" }],\n\t[\"not-italic\", { \"font-style\": \"normal\" }],\n\t[\"font-italic\", { \"font-style\": \"italic\" }],\n\t[\"font-not-italic\", { \"font-style\": \"normal\" }],\n\t[\"oblique\", { \"font-style\": \"oblique\" }],\n\t[\"not-oblique\", { \"font-style\": \"normal\" }],\n\t[\"font-oblique\", { \"font-style\": \"oblique\" }],\n\t[\"font-not-oblique\", { \"font-style\": \"normal\" }]\n];\nconst fontSmoothings = [[\"antialiased\", {\n\t\"-webkit-font-smoothing\": \"antialiased\",\n\t\"-moz-osx-font-smoothing\": \"grayscale\"\n}], [\"subpixel-antialiased\", {\n\t\"-webkit-font-smoothing\": \"auto\",\n\t\"-moz-osx-font-smoothing\": \"auto\"\n}]];\nconst hyphens = [...[\n\t\"manual\",\n\t\"auto\",\n\t\"none\",\n\t...globalKeywords\n].map((keyword) => [`hyphens-${keyword}`, {\n\t\"-webkit-hyphens\": keyword,\n\t\"-ms-hyphens\": keyword,\n\t\"hyphens\": keyword\n}])];\nconst writingModes = [\n\t[\"write-vertical-right\", { \"writing-mode\": \"vertical-rl\" }],\n\t[\"write-vertical-left\", { \"writing-mode\": \"vertical-lr\" }],\n\t[\"write-normal\", { \"writing-mode\": \"horizontal-tb\" }],\n\t...makeGlobalStaticRules(\"write\", \"writing-mode\")\n];\nconst writingOrientations = [\n\t[\"write-orient-mixed\", { \"text-orientation\": \"mixed\" }],\n\t[\"write-orient-sideways\", { \"text-orientation\": \"sideways\" }],\n\t[\"write-orient-upright\", { \"text-orientation\": \"upright\" }],\n\t...makeGlobalStaticRules(\"write-orient\", \"text-orientation\")\n];\nconst screenReadersAccess = [[\"sr-only\", {\n\t\"position\": \"absolute\",\n\t\"width\": \"1px\",\n\t\"height\": \"1px\",\n\t\"padding\": \"0\",\n\t\"margin\": \"-1px\",\n\t\"overflow\": \"hidden\",\n\t\"clip\": \"rect(0,0,0,0)\",\n\t\"white-space\": \"nowrap\",\n\t\"border-width\": 0\n}], [\"not-sr-only\", {\n\t\"position\": \"static\",\n\t\"width\": \"auto\",\n\t\"height\": \"auto\",\n\t\"padding\": \"0\",\n\t\"margin\": \"0\",\n\t\"overflow\": \"visible\",\n\t\"clip\": \"auto\",\n\t\"white-space\": \"normal\"\n}]];\nconst isolations = [\n\t[\"isolate\", { isolation: \"isolate\" }],\n\t[\"isolate-auto\", { isolation: \"auto\" }],\n\t[\"isolation-auto\", { isolation: \"auto\" }]\n];\nconst objectPositions = [\n\t[\"object-cover\", { \"object-fit\": \"cover\" }],\n\t[\"object-contain\", { \"object-fit\": \"contain\" }],\n\t[\"object-fill\", { \"object-fit\": \"fill\" }],\n\t[\"object-scale-down\", { \"object-fit\": \"scale-down\" }],\n\t[\"object-none\", { \"object-fit\": \"none\" }],\n\t[\n\t\t/^object-(.+)$/,\n\t\t([, d]) => {\n\t\t\tif (positionMap[d]) return { \"object-position\": positionMap[d] };\n\t\t\tif (h.bracketOfPosition(d) != null) return { \"object-position\": h.bracketOfPosition(d).split(\" \").map((e) => h.position.fraction.auto.px.cssvar(e) ?? e).join(\" \") };\n\t\t},\n\t\t{ autocomplete: `object-(${Object.keys(positionMap).join(\"|\")})` }\n\t]\n];\nconst backgroundBlendModes = [\n\t[\"bg-blend-multiply\", { \"background-blend-mode\": \"multiply\" }],\n\t[\"bg-blend-screen\", { \"background-blend-mode\": \"screen\" }],\n\t[\"bg-blend-overlay\", { \"background-blend-mode\": \"overlay\" }],\n\t[\"bg-blend-darken\", { \"background-blend-mode\": \"darken\" }],\n\t[\"bg-blend-lighten\", { \"background-blend-mode\": \"lighten\" }],\n\t[\"bg-blend-color-dodge\", { \"background-blend-mode\": \"color-dodge\" }],\n\t[\"bg-blend-color-burn\", { \"background-blend-mode\": \"color-burn\" }],\n\t[\"bg-blend-hard-light\", { \"background-blend-mode\": \"hard-light\" }],\n\t[\"bg-blend-soft-light\", { \"background-blend-mode\": \"soft-light\" }],\n\t[\"bg-blend-difference\", { \"background-blend-mode\": \"difference\" }],\n\t[\"bg-blend-exclusion\", { \"background-blend-mode\": \"exclusion\" }],\n\t[\"bg-blend-hue\", { \"background-blend-mode\": \"hue\" }],\n\t[\"bg-blend-saturation\", { \"background-blend-mode\": \"saturation\" }],\n\t[\"bg-blend-color\", { \"background-blend-mode\": \"color\" }],\n\t[\"bg-blend-luminosity\", { \"background-blend-mode\": \"luminosity\" }],\n\t[\"bg-blend-normal\", { \"background-blend-mode\": \"normal\" }],\n\t...makeGlobalStaticRules(\"bg-blend\", \"background-blend\")\n];\nconst mixBlendModes = [\n\t[\"mix-blend-multiply\", { \"mix-blend-mode\": \"multiply\" }],\n\t[\"mix-blend-screen\", { \"mix-blend-mode\": \"screen\" }],\n\t[\"mix-blend-overlay\", { \"mix-blend-mode\": \"overlay\" }],\n\t[\"mix-blend-darken\", { \"mix-blend-mode\": \"darken\" }],\n\t[\"mix-blend-lighten\", { \"mix-blend-mode\": \"lighten\" }],\n\t[\"mix-blend-color-dodge\", { \"mix-blend-mode\": \"color-dodge\" }],\n\t[\"mix-blend-color-burn\", { \"mix-blend-mode\": \"color-burn\" }],\n\t[\"mix-blend-hard-light\", { \"mix-blend-mode\": \"hard-light\" }],\n\t[\"mix-blend-soft-light\", { \"mix-blend-mode\": \"soft-light\" }],\n\t[\"mix-blend-difference\", { \"mix-blend-mode\": \"difference\" }],\n\t[\"mix-blend-exclusion\", { \"mix-blend-mode\": \"exclusion\" }],\n\t[\"mix-blend-hue\", { \"mix-blend-mode\": \"hue\" }],\n\t[\"mix-blend-saturation\", { \"mix-blend-mode\": \"saturation\" }],\n\t[\"mix-blend-color\", { \"mix-blend-mode\": \"color\" }],\n\t[\"mix-blend-luminosity\", { \"mix-blend-mode\": \"luminosity\" }],\n\t[\"mix-blend-plus-lighter\", { \"mix-blend-mode\": \"plus-lighter\" }],\n\t[\"mix-blend-normal\", { \"mix-blend-mode\": \"normal\" }],\n\t...makeGlobalStaticRules(\"mix-blend\")\n];\nconst dynamicViewportHeight = [\n\t[\"min-h-dvh\", { \"min-height\": \"100dvh\" }],\n\t[\"min-h-svh\", { \"min-height\": \"100svh\" }],\n\t[\"min-h-lvh\", { \"min-height\": \"100lvh\" }],\n\t[\"h-dvh\", { height: \"100dvh\" }],\n\t[\"h-svh\", { height: \"100svh\" }],\n\t[\"h-lvh\", { height: \"100lvh\" }],\n\t[\"max-h-dvh\", { \"max-height\": \"100dvh\" }],\n\t[\"max-h-svh\", { \"max-height\": \"100svh\" }],\n\t[\"max-h-lvh\", { \"max-height\": \"100lvh\" }]\n];\nconst accessibility = [[\"forced-color-adjust-auto\", { \"forced-color-adjust\": \"auto\" }], [\"forced-color-adjust-none\", { \"forced-color-adjust\": \"none\" }]];\nconst fieldSizing = [[\"field-sizing-fixed\", { \"field-sizing\": \"fixed\" }], [\"field-sizing-content\", { \"field-sizing\": \"content\" }]];\n\n//#endregion\n//#region src/rules/svg.ts\nconst svgUtilities = [\n\t[\n\t\t/^fill-(.+)$/,\n\t\tcolorResolver(\"fill\", \"fill\"),\n\t\t{ autocomplete: \"fill-$colors\" }\n\t],\n\t[\n\t\t/^fill-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-fill-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"fill-(op|opacity)-<percent>\" }\n\t],\n\t[\"fill-none\", { fill: \"none\" }],\n\t[/^stroke-(?:width-|size-)?(.+)$/, handleWidth],\n\t[\n\t\t/^stroke-dash-(.+)$/,\n\t\t([, s]) => ({ \"stroke-dasharray\": h.bracket.cssvar.number(s) }),\n\t\t{ autocomplete: \"stroke-dash-<num>\" }\n\t],\n\t[/^stroke-offset-(.+)$/, ([, s]) => ({ \"stroke-dashoffset\": h.bracket.cssvar.px.numberWithUnit(s) })],\n\t[\n\t\t/^stroke-(.+)$/,\n\t\thandleColorOrWidth,\n\t\t{ autocomplete: \"stroke-$colors\" }\n\t],\n\t[\n\t\t/^stroke-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-stroke-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"stroke-(op|opacity)-<percent>\" }\n\t],\n\t[\"stroke-cap-square\", { \"stroke-linecap\": \"square\" }],\n\t[\"stroke-cap-round\", { \"stroke-linecap\": \"round\" }],\n\t[\"stroke-cap-auto\", { \"stroke-linecap\": \"butt\" }],\n\t[\"stroke-join-arcs\", { \"stroke-linejoin\": \"arcs\" }],\n\t[\"stroke-join-bevel\", { \"stroke-linejoin\": \"bevel\" }],\n\t[\"stroke-join-clip\", { \"stroke-linejoin\": \"miter-clip\" }],\n\t[\"stroke-join-round\", { \"stroke-linejoin\": \"round\" }],\n\t[\"stroke-join-auto\", { \"stroke-linejoin\": \"miter\" }],\n\t[\"stroke-none\", { stroke: \"none\" }]\n];\nfunction handleWidth([, b]) {\n\treturn { \"stroke-width\": h.bracket.cssvar.fraction.px.number(b) };\n}\nfunction handleColorOrWidth(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1]))) return handleWidth(match);\n\treturn colorResolver(\"stroke\", \"stroke\")(match, ctx);\n}\n\n//#endregion\n//#region src/rules/table.ts\nconst tables = [\n\t[\"inline-table\", { display: \"inline-table\" }],\n\t[\"table\", { display: \"table\" }],\n\t[\"table-caption\", { display: \"table-caption\" }],\n\t[\"table-cell\", { display: \"table-cell\" }],\n\t[\"table-column\", { display: \"table-column\" }],\n\t[\"table-column-group\", { display: \"table-column-group\" }],\n\t[\"table-footer-group\", { display: \"table-footer-group\" }],\n\t[\"table-header-group\", { display: \"table-header-group\" }],\n\t[\"table-row\", { display: \"table-row\" }],\n\t[\"table-row-group\", { display: \"table-row-group\" }],\n\t[\"border-collapse\", { \"border-collapse\": \"collapse\" }],\n\t[\"border-separate\", { \"border-collapse\": \"separate\" }],\n\t[\n\t\t/^border-spacing-(.+)$/,\n\t\tfunction* ([, s], { theme }) {\n\t\t\tconst v = resolveValue(s, theme);\n\t\t\tif (v != null) {\n\t\t\t\tyield {\n\t\t\t\t\t\"--un-border-spacing-x\": v,\n\t\t\t\t\t\"--un-border-spacing-y\": v,\n\t\t\t\t\t\"border-spacing\": \"var(--un-border-spacing-x) var(--un-border-spacing-y)\"\n\t\t\t\t};\n\t\t\t\tfor (const d of [\"x\", \"y\"]) yield defineProperty(`--un-border-spacing-${d}`, {\n\t\t\t\t\tsyntax: \"<length>\",\n\t\t\t\t\tinitialValue: \"0\"\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [\"border-spacing\", \"border-spacing-$spacing\"] }\n\t],\n\t[\n\t\t/^border-spacing-([xy])-(.+)$/,\n\t\tfunction* ([, d, s], { theme }) {\n\t\t\tconst v = resolveValue(s, theme);\n\t\t\tif (v != null) {\n\t\t\t\tyield {\n\t\t\t\t\t[`--un-border-spacing-${d}`]: v,\n\t\t\t\t\t\"border-spacing\": \"var(--un-border-spacing-x) var(--un-border-spacing-y)\"\n\t\t\t\t};\n\t\t\t\tfor (const d$1 of [\"x\", \"y\"]) yield defineProperty(`--un-border-spacing-${d$1}`, {\n\t\t\t\t\tsyntax: \"<length>\",\n\t\t\t\t\tinitialValue: \"0\"\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ autocomplete: [\"border-spacing-(x|y)\", \"border-spacing-(x|y)-$spacing\"] }\n\t],\n\t[\"caption-top\", { \"caption-side\": \"top\" }],\n\t[\"caption-bottom\", { \"caption-side\": \"bottom\" }],\n\t[\"table-auto\", { \"table-layout\": \"auto\" }],\n\t[\"table-fixed\", { \"table-layout\": \"fixed\" }],\n\t[\"table-empty-cells-visible\", { \"empty-cells\": \"show\" }],\n\t[\"table-empty-cells-hidden\", { \"empty-cells\": \"hide\" }]\n];\nfunction resolveValue(s, theme) {\n\tlet v = theme.spacing?.[s];\n\tif (!v) {\n\t\tconst num = numberResolver(s);\n\t\tif (num != null) {\n\t\t\tthemeTracking(`spacing`);\n\t\t\tv = `calc(var(--spacing) * ${num})`;\n\t\t} else v = h.bracket.cssvar.global.auto.fraction.rem(s);\n\t}\n\treturn v;\n}\n\n//#endregion\n//#region src/rules/touch-actions.ts\nconst touchActionValue = \"var(--un-pan-x) var(--un-pan-y) var(--un-pinch-zoom)\";\nconst touchActionProperties = [\n\t\"pan-x\",\n\t\"pan-y\",\n\t\"pinch-zoom\"\n].map((d) => defineProperty(`--un-${d}`));\nconst touchActions = [\n\t[\n\t\t/^touch-pan-(x|left|right)$/,\n\t\tfunction* ([, d]) {\n\t\t\tyield {\n\t\t\t\t\"--un-pan-x\": `pan-${d}`,\n\t\t\t\t\"touch-action\": touchActionValue\n\t\t\t};\n\t\t\tfor (const p of touchActionProperties) yield p;\n\t\t},\n\t\t{ autocomplete: [\"touch-pan\", \"touch-pan-(x|left|right|y|up|down)\"] }\n\t],\n\t[/^touch-pan-(y|up|down)$/, function* ([, d]) {\n\t\tyield {\n\t\t\t\"--un-pan-y\": `pan-${d}`,\n\t\t\t\"touch-action\": touchActionValue\n\t\t};\n\t\tfor (const p of touchActionProperties) yield p;\n\t}],\n\t[/^touch-pinch-zoom$/, function* () {\n\t\tyield {\n\t\t\t\"--un-pinch-zoom\": \"pinch-zoom\",\n\t\t\t\"touch-action\": touchActionValue\n\t\t};\n\t\tfor (const p of touchActionProperties) yield p;\n\t}],\n\t[\"touch-auto\", { \"touch-action\": \"auto\" }],\n\t[\"touch-manipulation\", { \"touch-action\": \"manipulation\" }],\n\t[\"touch-none\", { \"touch-action\": \"none\" }],\n\t...makeGlobalStaticRules(\"touch\", \"touch-action\")\n];\n\n//#endregion\n//#region src/rules/transform.ts\nconst transformValues = [\n\t\"translate\",\n\t\"rotate\",\n\t\"scale\"\n];\nconst transformCpu = [\n\t\"var(--un-rotate-x)\",\n\t\"var(--un-rotate-y)\",\n\t\"var(--un-rotate-z)\",\n\t\"var(--un-skew-x)\",\n\t\"var(--un-skew-y)\"\n].join(\" \");\nconst transform = transformCpu;\nconst transformGpu = [\"translateZ(0)\", transformCpu].join(\" \");\nconst transformBase = {\n\t\"--un-rotate-x\": \"rotateX(0)\",\n\t\"--un-rotate-y\": \"rotateY(0)\",\n\t\"--un-rotate-z\": \"rotateZ(0)\",\n\t\"--un-skew-x\": \"skewX(0)\",\n\t\"--un-skew-y\": \"skewY(0)\",\n\t\"--un-translate-x\": 0,\n\t\"--un-translate-y\": 0,\n\t\"--un-translate-z\": 0\n};\nconst transforms = [\n\t[\n\t\t/^(?:transform-)?origin-(.+)$/,\n\t\t([, s]) => ({ \"transform-origin\": positionMap[s] ?? h.bracket.cssvar(s) }),\n\t\t{ autocomplete: [`transform-origin-(${Object.keys(positionMap).join(\"|\")})`, `origin-(${Object.keys(positionMap).join(\"|\")})`] }\n\t],\n\t[\n\t\t/^(?:transform-)?perspect(?:ive)?-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.perspective?.[s]) {\n\t\t\t\tthemeTracking(`perspective`, s);\n\t\t\t\tv = generateThemeVariable(\"perspective\", s);\n\t\t\t} else v = h.bracket.cssvar.px.numberWithUnit(s);\n\t\t\tif (v != null) return { perspective: v };\n\t\t},\n\t\t{ autocomplete: [\n\t\t\t`transform-perspective-<num>`,\n\t\t\t`perspective-<num>`,\n\t\t\t`perspective-$perspective`\n\t\t] }\n\t],\n\t[/^(?:transform-)?perspect(?:ive)?-origin-(.+)$/, ([, s]) => {\n\t\tconst v = h.bracket.cssvar(s) ?? (s.length >= 3 ? positionMap[s] : void 0);\n\t\tif (v != null) return { \"perspective-origin\": v };\n\t}],\n\t[/^(?:transform-)?translate-()(.+)$/, handleTranslate],\n\t[/^(?:transform-)?translate-([xyz])-(.+)$/, handleTranslate],\n\t[/^(?:transform-)?rotate-()(.+)$/, handleRotate],\n\t[/^(?:transform-)?rotate-([xyz])-(.+)$/, handleRotate],\n\t[/^(?:transform-)?skew-()(.+)$/, handleSkew],\n\t[\n\t\t/^(?:transform-)?skew-([xy])-(.+)$/,\n\t\thandleSkew,\n\t\t{ autocomplete: [\"transform-skew-(x|y)-<percent>\", \"skew-(x|y)-<percent>\"] }\n\t],\n\t[/^(?:transform-)?scale-()(.+)$/, handleScale],\n\t[\n\t\t/^(?:transform-)?scale-([xyz])-(.+)$/,\n\t\thandleScale,\n\t\t{ autocomplete: [\n\t\t\t`transform-(${transformValues.join(\"|\")})-<percent>`,\n\t\t\t`transform-(${transformValues.join(\"|\")})-(x|y|z)-<percent>`,\n\t\t\t`(${transformValues.join(\"|\")})-<percent>`,\n\t\t\t`(${transformValues.join(\"|\")})-(x|y|z)-<percent>`\n\t\t] }\n\t],\n\t[\"transform-3d\", { \"transform-style\": \"preserve-3d\" }],\n\t[\"transform-flat\", { \"transform-style\": \"flat\" }],\n\t[/^transform-(border|content|fill|stroke|view)$/, ([, d]) => ({ \"transform-box\": `${d}-box` })],\n\t[\"transform\", { transform }],\n\t[\"transform-cpu\", { transform: transformCpu }],\n\t[\"transform-gpu\", { transform: transformGpu }],\n\t[\"transform-none\", { transform: \"none\" }],\n\t...makeGlobalStaticRules(\"transform\")\n];\nfunction handleTranslate([, d, b]) {\n\tconst v = numberResolver(b) ?? h.bracket.cssvar.none.fraction.rem(b);\n\tif (v != null) {\n\t\tif (v === \"none\") return { translate: \"none\" };\n\t\tthemeTracking(`spacing`);\n\t\treturn [[...transformXYZ(d, typeof v === \"number\" ? `calc(var(--spacing) * ${v})` : v, \"translate\"), [\n\t\t\t\"translate\",\n\t\t\t`var(--un-translate-x) var(--un-translate-y)${d === \"z\" ? \" var(--un-translate-z)\" : \"\"}`,\n\t\t\tCONTROL_NO_NEGATIVE\n\t\t]], ...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d$1) => defineProperty(`--un-translate-${d$1}`, { initialValue: 0 }))];\n\t}\n}\nfunction handleScale([, d, b]) {\n\tconst v = h.bracket.cssvar.none.fraction.percent(b);\n\tif (v != null) {\n\t\tif (v === \"none\") return { scale: \"none\" };\n\t\treturn [[...transformXYZ(d, v, \"scale\"), [\"scale\", `var(--un-scale-x) var(--un-scale-y)${d === \"z\" ? \" var(--un-scale-z)\" : \"\"}`]], ...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d$1) => defineProperty(`--un-scale-${d$1}`, { initialValue: 1 }))];\n\t}\n}\nfunction handleRotate([, d = \"\", b]) {\n\tconst v = h.bracket.cssvar.none.degree(b);\n\tif (v != null) {\n\t\tif (v === \"none\") return { rotate: \"none\" };\n\t\tif (d) return [\n\t\t\t[...transformXYZ(d, v.endsWith(\"deg\") ? `rotate${d.toUpperCase()}(${v})` : v, \"rotate\"), [\"transform\", transform]],\n\t\t\t...[\n\t\t\t\t\"x\",\n\t\t\t\t\"y\",\n\t\t\t\t\"z\"\n\t\t\t].map((d$1) => defineProperty(`--un-rotate-${d$1}`, { initialValue: `rotate${d$1.toUpperCase()}(0)` })),\n\t\t\t...[\"x\", \"y\"].map((d$1) => defineProperty(`--un-skew-${d$1}`, { initialValue: `skew${d$1.toUpperCase()}(0)` }))\n\t\t];\n\t\telse return { rotate: h.bracket.cssvar.degree(b) };\n\t}\n}\nfunction handleSkew([, d, b]) {\n\tconst v = h.bracket.cssvar.degree(b);\n\tconst ds = xyzMap[d];\n\tif (v != null && ds) return [\n\t\t[...ds.map((_d) => [`--un-skew${_d}`, v.endsWith(\"deg\") ? `skew${_d.slice(1).toUpperCase()}(${v})` : v]), [\"transform\", transform]],\n\t\t...[\n\t\t\t\"x\",\n\t\t\t\"y\",\n\t\t\t\"z\"\n\t\t].map((d$1) => defineProperty(`--un-rotate-${d$1}`, { initialValue: `rotate${d$1.toUpperCase()}(0)` })),\n\t\t...[\"x\", \"y\"].map((d$1) => defineProperty(`--un-skew-${d$1}`, { initialValue: `skew${d$1.toUpperCase()}(0)` }))\n\t];\n}\nfunction transformXYZ(d, v, name) {\n\tconst values = v.split(splitComma);\n\tif (d || !d && values.length === 1) return xyzMap[d].map((i) => [`--un-${name}${i}`, v]);\n\treturn values.map((v$1, i) => [`--un-${name}-${xyzArray[i]}`, v$1]);\n}\n\n//#endregion\n//#region src/rules/transition.ts\nfunction resolveTransitionProperty(prop, theme) {\n\tlet p;\n\tif (h.cssvar(prop) != null) p = h.cssvar(prop);\n\telse {\n\t\tif (prop.startsWith(\"[\") && prop.endsWith(\"]\")) prop = prop.slice(1, -1);\n\t\tconst props = prop.split(\",\").map((p$1) => theme.property?.[p$1] ?? h.properties(p$1));\n\t\tif (props.every(Boolean)) p = props.join(\",\");\n\t}\n\treturn p;\n}\nconst transitions = [\n\t[/^transition(?:-(\\D+?))?(?:-(\\d+))?$/, ([, prop, d], { theme }) => {\n\t\tthemeTracking(\"default\", [\"transition\", \"timingFunction\"]);\n\t\tthemeTracking(\"default\", [\"transition\", \"duration\"]);\n\t\tconst defaultTransition = {\n\t\t\t\"transition-property\": theme.property?.DEFAULT,\n\t\t\t\"transition-timing-function\": `var(--un-ease, ${generateThemeVariable(\"default\", [\"transition\", \"timingFunction\"])})`,\n\t\t\t\"transition-duration\": `var(--un-duration, ${generateThemeVariable(\"default\", [\"transition\", \"duration\"])})`\n\t\t};\n\t\tif (!prop && !d) return { ...defaultTransition };\n\t\telse if (prop != null) {\n\t\t\tconst p = resolveTransitionProperty(prop, theme);\n\t\t\tif (p) return {\n\t\t\t\t\"--un-duration\": d && h.time(d),\n\t\t\t\t...defaultTransition,\n\t\t\t\t\"transition-property\": p\n\t\t\t};\n\t\t} else if (d != null) return {\n\t\t\t\"--un-duration\": h.time(d),\n\t\t\t...defaultTransition\n\t\t};\n\t}],\n\t[/^(?:transition-)?duration-(.+)$/, ([, d]) => ({\n\t\t\"--un-duration\": h.bracket.cssvar.time(d),\n\t\t\"transition-duration\": h.bracket.cssvar.time(d)\n\t})],\n\t[/^(?:transition-)?delay-(.+)$/, ([, d]) => ({ \"transition-delay\": h.bracket.cssvar.time(d) })],\n\t[\n\t\t/^(?:transition-)?ease(?:-(.+))?$/,\n\t\t([, d = \"DEFAULT\"], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.ease?.[d]) {\n\t\t\t\tthemeTracking(\"ease\", d);\n\t\t\t\tv = generateThemeVariable(\"ease\", d);\n\t\t\t} else v = h.bracket.cssvar(d);\n\t\t\treturn [{\n\t\t\t\t\"--un-ease\": v,\n\t\t\t\t\"transition-timing-function\": v\n\t\t\t}, defineProperty(\"--un-ease\")];\n\t\t},\n\t\t{ autocomplete: [\"transition-ease-(linear|in|out|in-out)\", \"ease-(linear|in|out|in-out)\"] }\n\t],\n\t[\n\t\t/^(?:transition-)?property-(.+)$/,\n\t\t([, v], { theme }) => {\n\t\t\tconst p = h.global(v) || resolveTransitionProperty(v, theme);\n\t\t\tif (p) return { \"transition-property\": p };\n\t\t},\n\t\t{ autocomplete: [`transition-property-(${[...globalKeywords].join(\"|\")})`] }\n\t],\n\t[\"transition-none\", { transition: \"none\" }],\n\t...makeGlobalStaticRules(\"transition\"),\n\t[\"transition-discrete\", { \"transition-behavior\": \"allow-discrete\" }],\n\t[\"transition-normal\", { \"transition-behavior\": \"normal\" }]\n];\n\n//#endregion\n//#region src/rules/typography.ts\nconst fonts = [\n\t[\n\t\t/^text-(.+)$/,\n\t\thandleText,\n\t\t{ autocomplete: \"text-$text\" }\n\t],\n\t[\n\t\t/^(?:text|font)-size-(.+)$/,\n\t\thandleSize,\n\t\t{ autocomplete: \"text-size-$text\" }\n\t],\n\t[\n\t\t/^text-(?:color-)?(.+)$/,\n\t\thandlerColorOrSize,\n\t\t{ autocomplete: \"text-$colors\" }\n\t],\n\t[/^(?:color|c)-(.+)$/, colorResolver(\"color\", \"text\")],\n\t[\n\t\t/^(?:text|color|c)-(.+)$/,\n\t\t([, v]) => globalKeywords.includes(v) ? { color: v } : void 0,\n\t\t{ autocomplete: `(text|color|c)-(${globalKeywords.join(\"|\")})` }\n\t],\n\t[\n\t\t/^(?:text|color|c)-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-text-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"(text|color|c)-(op|opacity)-<percent>\" }\n\t],\n\t[\n\t\t/^fw-?([^-]+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.fontWeight?.[s]) {\n\t\t\t\tthemeTracking(`fontWeight`, s);\n\t\t\t\tv = generateThemeVariable(\"fontWeight\", s);\n\t\t\t} else v = h.bracket.cssvar.global.number(s);\n\t\t\treturn {\n\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\"font-weight\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: [\"(font|fw)-(100|200|300|400|500|600|700|800|900)\", \"(font|fw)-$fontWeight\"] }\n\t],\n\t[\n\t\t/^(?:font-)?(?:leading|lh|line-height)-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.leading?.[s]) {\n\t\t\t\tthemeTracking(\"leading\", s);\n\t\t\t\tv = generateThemeVariable(\"leading\", s);\n\t\t\t} else if (numberResolver(s)) {\n\t\t\t\tthemeTracking(\"spacing\");\n\t\t\t\tv = `calc(var(--spacing) * ${numberResolver(s)})`;\n\t\t\t} else v = h.bracket.cssvar.global.rem(s);\n\t\t\tif (v != null) return [{\n\t\t\t\t\"--un-leading\": v,\n\t\t\t\t\"line-height\": v\n\t\t\t}, defineProperty(\"--un-leading\")];\n\t\t},\n\t\t{ autocomplete: \"(leading|lh|line-height)-$leading\" }\n\t],\n\t[\"font-synthesis-weight\", { \"font-synthesis\": \"weight\" }],\n\t[\"font-synthesis-style\", { \"font-synthesis\": \"style\" }],\n\t[\"font-synthesis-small-caps\", { \"font-synthesis\": \"small-caps\" }],\n\t[\"font-synthesis-none\", { \"font-synthesis\": \"none\" }],\n\t[/^font-synthesis-(.+)$/, ([, s]) => ({ \"font-synthesis\": h.bracket.cssvar.global(s) })],\n\t[\n\t\t/^(?:font-)?tracking-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.tracking?.[s]) {\n\t\t\t\tthemeTracking(`tracking`, s);\n\t\t\t\tv = generateThemeVariable(\"tracking\", s);\n\t\t\t} else v = h.bracket.cssvar.global.rem(s);\n\t\t\treturn {\n\t\t\t\t\"--un-tracking\": v,\n\t\t\t\t\"letter-spacing\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"tracking-$tracking\" }\n\t],\n\t[\n\t\t/^(?:font-)?word-spacing-(.+)$/,\n\t\t([, s], { theme }) => {\n\t\t\tconst v = theme.tracking?.[s] ? generateThemeVariable(\"tracking\", s) : h.bracket.cssvar.global.rem(s);\n\t\t\treturn {\n\t\t\t\t\"--un-word-spacing\": v,\n\t\t\t\t\"word-spacing\": v\n\t\t\t};\n\t\t},\n\t\t{ autocomplete: \"word-spacing-$spacing\" }\n\t],\n\t[\"font-stretch-normal\", { \"font-stretch\": \"normal\" }],\n\t[\"font-stretch-ultra-condensed\", { \"font-stretch\": \"ultra-condensed\" }],\n\t[\"font-stretch-extra-condensed\", { \"font-stretch\": \"extra-condensed\" }],\n\t[\"font-stretch-condensed\", { \"font-stretch\": \"condensed\" }],\n\t[\"font-stretch-semi-condensed\", { \"font-stretch\": \"semi-condensed\" }],\n\t[\"font-stretch-semi-expanded\", { \"font-stretch\": \"semi-expanded\" }],\n\t[\"font-stretch-expanded\", { \"font-stretch\": \"expanded\" }],\n\t[\"font-stretch-extra-expanded\", { \"font-stretch\": \"extra-expanded\" }],\n\t[\"font-stretch-ultra-expanded\", { \"font-stretch\": \"ultra-expanded\" }],\n\t[\n\t\t/^font-stretch-(.+)$/,\n\t\t([, s]) => ({ \"font-stretch\": h.bracket.cssvar.fraction.global(s) }),\n\t\t{ autocomplete: \"font-stretch-<percentage>\" }\n\t],\n\t[\n\t\t/^font-(.+)$/,\n\t\t([, d], { theme }) => {\n\t\t\tlet v;\n\t\t\tif (theme.font?.[d]) {\n\t\t\t\tthemeTracking(\"font\", d);\n\t\t\t\tv = generateThemeVariable(\"font\", d);\n\t\t\t\treturn { \"font-family\": v };\n\t\t\t}\n\t\t\tif (theme.fontWeight?.[d]) {\n\t\t\t\tthemeTracking(\"fontWeight\", d);\n\t\t\t\tv = generateThemeVariable(\"fontWeight\", d);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\t\"font-weight\": v\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.number(d);\n\t\t\tif (v != null) return {\n\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\"font-weight\": v\n\t\t\t};\n\t\t\tv = h.bracketOfFamily(d);\n\t\t\tif (v != null && h.number(v) == null) {\n\t\t\t\tv = h.cssvar(v) ?? v;\n\t\t\t\treturn { \"font-family\": v };\n\t\t\t}\n\t\t\tv = h.bracketOfNumber(d);\n\t\t\tif (v != null) {\n\t\t\t\tv = h.cssvar.number(v);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": v,\n\t\t\t\t\t\"font-weight\": v\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.bracket(d);\n\t\t\tif (v != null && h.number(v) != null) {\n\t\t\t\tconst num = h.number(v);\n\t\t\t\treturn {\n\t\t\t\t\t\"--un-font-weight\": num,\n\t\t\t\t\t\"font-weight\": num\n\t\t\t\t};\n\t\t\t}\n\t\t\tv = h.bracket.cssvar.global(d);\n\t\t\tif (v != null) return { \"font-family\": v };\n\t\t},\n\t\t{ autocomplete: [\"font-$font\", \"font-$fontWeight\"] }\n\t]\n];\nconst tabSizes = [[/^tab(?:-(.+))?$/, ([, s]) => {\n\tconst v = h.bracket.cssvar.global.number(s || \"4\");\n\tif (v != null) return {\n\t\t\"-moz-tab-size\": v,\n\t\t\"-o-tab-size\": v,\n\t\t\"tab-size\": v\n\t};\n}]];\nconst textIndents = [[/^indent-(.+)$/, ([, s]) => {\n\tlet v = numberResolver(s);\n\tif (v != null) {\n\t\tthemeTracking(`spacing`);\n\t\treturn { \"text-indent\": `calc(var(--spacing) * ${v})` };\n\t}\n\tv = h.bracket.cssvar.auto.global.rem(s);\n\tif (v != null) return { \"text-indent\": v };\n}]];\nconst textStrokes = [\n\t[\n\t\t/^text-stroke(?:-(.+))?$/,\n\t\t([, s = \"DEFAULT\"], { theme }) => {\n\t\t\tif (theme.textStrokeWidth?.[s]) themeTracking(`textStrokeWidth`, s);\n\t\t\treturn { \"-webkit-text-stroke-width\": theme.textStrokeWidth?.[s] ? generateThemeVariable(\"textStrokeWidth\", s) : h.bracket.cssvar.px(s) };\n\t\t},\n\t\t{ autocomplete: \"text-stroke-$textStrokeWidth\" }\n\t],\n\t[\n\t\t/^text-stroke-(.+)$/,\n\t\tcolorResolver(\"-webkit-text-stroke-color\", \"text-stroke\"),\n\t\t{ autocomplete: \"text-stroke-$colors\" }\n\t],\n\t[\n\t\t/^text-stroke-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-text-stroke-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"text-stroke-(op|opacity)-<percent>\" }\n\t]\n];\nfunction handleTextShadow(match, ctx) {\n\tconst [, s] = match;\n\tconst { theme } = ctx;\n\tlet res = [];\n\tif (s) res = getStringComponents(s, \"/\", 2) ?? [];\n\tconst v = theme.textShadow?.[res[0]];\n\tconst c = s ? h.bracket.cssvar(s) : void 0;\n\tif ((v != null || c != null) && !hasParseableColor(c, theme)) {\n\t\tconst alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;\n\t\treturn {\n\t\t\t\"--un-text-shadow-opacity\": alpha,\n\t\t\t\"--un-text-shadow\": colorableShadows(v || c, \"--un-text-shadow-color\", alpha).join(\",\"),\n\t\t\t\"text-shadow\": \"var(--un-text-shadow)\"\n\t\t};\n\t}\n\treturn colorResolver(\"--un-text-shadow-color\", \"text-shadow\")(match, ctx) ?? { \"text-shadow\": h.bracket.cssvar.global(s) };\n}\nconst textShadows = [\n\t[\n\t\t/^text-shadow-(.+)$/,\n\t\thandleTextShadow,\n\t\t{ autocomplete: [\n\t\t\t\"text-shadow-$textShadow\",\n\t\t\t\"text-shadow(-color)?-$colors\",\n\t\t\t\"text-shadow(-color)?-(op|opacity)-<percent>\"\n\t\t] }\n\t],\n\t[\n\t\t/^text-shadow-color-(.+)$/,\n\t\tcolorResolver(\"--un-text-shadow-color\", \"text-shadow\"),\n\t\t{ autocomplete: \"text-shadow-color-$colors\" }\n\t],\n\t[\n\t\t/^text-shadow(?:-color)?-op(?:acity)?-?(.+)$/,\n\t\t([, opacity$1]) => ({ \"--un-text-shadow-opacity\": h.bracket.percent.cssvar(opacity$1) }),\n\t\t{ autocomplete: \"text-shadow(-color)?-(op|opacity)-<percent>\" }\n\t]\n];\nconst fontVariantNumericProperties = [\n\tdefineProperty(\"--un-ordinal\"),\n\tdefineProperty(\"--un-slashed-zero\"),\n\tdefineProperty(\"--un-numeric-figure\"),\n\tdefineProperty(\"--un-numeric-spacing\"),\n\tdefineProperty(\"--un-numeric-fraction\")\n];\nconst baseFontVariantNumeric = { \"font-variant-numeric\": \"var(--un-ordinal,) var(--un-slashed-zero,) var(--un-numeric-figure,) var(--un-numeric-spacing,) var(--un-numeric-fraction,)\" };\nconst fontVariantNumeric = [\n\t[\"ordinal\", [{\n\t\t\"--un-ordinal\": \"ordinal\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"slashed-zero\", [{\n\t\t\"--un-slashed-zero\": \"slashed-zero\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"lining-nums\", [{\n\t\t\"--un-numeric-figure\": \"lining-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"oldstyle-nums\", [{\n\t\t\"--un-numeric-figure\": \"oldstyle-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"proportional-nums\", [{\n\t\t\"--un-numeric-spacing\": \"proportional-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"tabular-nums\", [{\n\t\t\"--un-numeric-spacing\": \"tabular-nums\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"diagonal-fractions\", [{\n\t\t\"--un-numeric-fraction\": \"diagonal-fractions\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"stacked-fractions\", [{\n\t\t\"--un-numeric-fraction\": \"stacked-fractions\",\n\t\t...baseFontVariantNumeric\n\t}, ...fontVariantNumericProperties]],\n\t[\"normal-nums\", [{ \"font-variant-numeric\": \"normal\" }]]\n];\nfunction handleText([, s = \"base\"], { theme }) {\n\tconst split = splitShorthand(s, \"length\");\n\tif (!split) return;\n\tconst [size, leading] = split;\n\tconst sizePairs = theme.text?.[size];\n\tlet lineHeight;\n\tif (leading) if (theme.leading?.[leading]) {\n\t\tthemeTracking(`leading`, leading);\n\t\tlineHeight = generateThemeVariable(\"leading\", leading);\n\t} else lineHeight = h.bracket.cssvar.global.rem(leading);\n\tif (sizePairs) {\n\t\tthemeTracking(`text`, [size, \"fontSize\"]);\n\t\tthemeTracking(`text`, [size, \"lineHeight\"]);\n\t\tif (sizePairs.letterSpacing) themeTracking(`text`, [size, \"letterSpacing\"]);\n\t\treturn {\n\t\t\t\"font-size\": generateThemeVariable(\"text\", [size, \"fontSize\"]),\n\t\t\t\"line-height\": lineHeight ?? `var(--un-leading, ${generateThemeVariable(\"text\", [size, \"lineHeight\"])})`,\n\t\t\t\"letter-spacing\": sizePairs.letterSpacing ? generateThemeVariable(\"text\", [size, \"letterSpacing\"]) : void 0\n\t\t};\n\t}\n\tconst fontSize = h.bracketOfLength.rem(size);\n\tif (lineHeight && fontSize) return {\n\t\t\"font-size\": fontSize,\n\t\t\"line-height\": lineHeight\n\t};\n\treturn { \"font-size\": h.bracketOfLength.rem(s) };\n}\nfunction handleSize([, s], { theme }) {\n\tif (theme.text?.[s] != null) {\n\t\tthemeTracking(`text`, [s, \"fontSize\"]);\n\t\tthemeTracking(`text`, [s, \"lineHeight\"]);\n\t\treturn {\n\t\t\t\"font-size\": generateThemeVariable(\"text\", [s, \"fontSize\"]),\n\t\t\t\"line-height\": `var(--un-leading, ${generateThemeVariable(\"text\", [s, \"lineHeight\"])})`\n\t\t};\n\t} else {\n\t\tconst d = h.bracket.cssvar.global.rem(s);\n\t\tif (d) return { \"font-size\": d };\n\t}\n}\nfunction handlerColorOrSize(match, ctx) {\n\tif (isCSSMathFn(h.bracket(match[1]))) return handleSize(match, ctx);\n\treturn colorResolver(\"color\", \"text\")(match, ctx);\n}\nfunction splitShorthand(body, type) {\n\tconst [front, rest] = getStringComponent(body, \"[\", \"]\", [\"/\", \":\"]) ?? [];\n\tif (front != null) {\n\t\tconst match = (front.match(bracketTypeRe) ?? [])[1];\n\t\tif (match == null || match === type) return [front, rest];\n\t}\n}\n\n//#endregion\n//#region src/rules/variables.ts\nconst variablesAbbrMap = {\n\t\"backface\": \"backface-visibility\",\n\t\"break\": \"word-break\",\n\t\"case\": \"text-transform\",\n\t\"content\": \"align-content\",\n\t\"fw\": \"font-weight\",\n\t\"items\": \"align-items\",\n\t\"justify\": \"justify-content\",\n\t\"select\": \"user-select\",\n\t\"self\": \"align-self\",\n\t\"vertical\": \"vertical-align\",\n\t\"visible\": \"visibility\",\n\t\"whitespace\": \"white-space\",\n\t\"ws\": \"white-space\",\n\t\"bg-blend\": \"background-blend-mode\",\n\t\"bg-clip\": \"-webkit-background-clip\",\n\t\"bg-image\": \"background-image\",\n\t\"bg-origin\": \"background-origin\",\n\t\"bg-position\": \"background-position\",\n\t\"bg-repeat\": \"background-repeat\",\n\t\"bg-size\": \"background-size\",\n\t\"mix-blend\": \"mix-blend-mode\",\n\t\"object\": \"object-fit\",\n\t\"object-position\": \"object-position\",\n\t\"write\": \"writing-mode\",\n\t\"write-orient\": \"text-orientation\"\n};\nconst cssVariables = [[/^(.+?)-(\\$.+)$/, ([, name, varname]) => {\n\tconst prop = variablesAbbrMap[name];\n\tif (prop) return { [prop]: h.cssvar(varname) };\n}]];\nconst cssProperty = [[/^\\[(.*)\\]$/, ([_, body], { theme }) => {\n\tif (!body.includes(\":\")) return;\n\tconst [prop, ...rest] = body.split(\":\");\n\tconst value = rest.join(\":\");\n\tif (!isURI(body) && /^[\\w-]+$/.test(prop) && isValidCSSBody(value)) {\n\t\tconst parsed = h.bracket(`[${value}]`, theme);\n\t\tif (parsed) return { [prop]: parsed };\n\t}\n}]];\nfunction isValidCSSBody(body) {\n\tlet i = 0;\n\tfunction findUntil(c) {\n\t\twhile (i < body.length) {\n\t\t\ti += 1;\n\t\t\tif (body[i] === c) return true;\n\t\t}\n\t\treturn false;\n\t}\n\tfor (i = 0; i < body.length; i++) {\n\t\tconst c = body[i];\n\t\tif (\"\\\"`'\".includes(c)) {\n\t\t\tif (!findUntil(c)) return false;\n\t\t} else if (c === \"(\") {\n\t\t\tif (!findUntil(\")\")) return false;\n\t\t} else if (\"[]{}:\".includes(c)) return false;\n\t}\n\treturn true;\n}\nfunction isURI(declaration) {\n\tif (!declaration.includes(\"://\")) return false;\n\ttry {\n\t\treturn new URL(declaration).host !== \"\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n//#endregion\n//#region src/rules/view-transition.ts\nconst viewTransition = [[/^view-transition-([\\w-]+)$/, ([, name]) => {\n\treturn { \"view-transition-name\": name };\n}]];\n\n//#endregion\n//#region src/rules/default.ts\nconst rules = [\n\tfonts,\n\ttabSizes,\n\ttextIndents,\n\ttextStrokes,\n\ttextShadows,\n\tmargins,\n\tpaddings,\n\ttextAligns,\n\tverticalAligns,\n\tappearance,\n\toutline,\n\twillChange,\n\tlistStyle,\n\taccents,\n\tcarets,\n\timageRenderings,\n\toverscrolls,\n\toutline,\n\tscrollBehaviors,\n\twillChange,\n\tborders,\n\tbgColors,\n\topacity,\n\tcolorScheme,\n\tcontainer,\n\tcontainerParent,\n\ttextDecorations,\n\tflex,\n\tgaps,\n\tgrids,\n\tsizes,\n\taspectRatio,\n\tdisplays,\n\tappearances,\n\tcursors,\n\tcontains,\n\tpointerEvents,\n\tresizes,\n\tuserSelects,\n\twhitespaces,\n\tcontentVisibility,\n\tcontents,\n\tbreaks,\n\ttextWraps,\n\ttextOverflows,\n\ttextTransforms,\n\tfontStyles,\n\tfontSmoothings,\n\trings,\n\tboxShadows,\n\ttransforms,\n\ttransitions,\n\tcssVariables,\n\tcssProperty,\n\talignments,\n\tboxSizing,\n\tflexGridJustifiesAlignments,\n\tfloats,\n\tinsets,\n\tjustifies,\n\torders,\n\tplacements,\n\tpositions,\n\tzIndexes,\n\toverflows,\n\tsvgUtilities,\n\tanimations,\n\tbackgroundStyles,\n\thyphens,\n\twritingModes,\n\twritingOrientations,\n\taccessibility,\n\tscreenReadersAccess,\n\tisolations,\n\tobjectPositions,\n\tbackgroundBlendModes,\n\tmixBlendModes,\n\tdynamicViewportHeight,\n\tmasks,\n\tcolumns,\n\tfilters,\n\tlineClamps,\n\tplaceholders,\n\tscrolls,\n\ttables,\n\ttouchActions,\n\tfontVariantNumeric,\n\tviewTransition,\n\tspaces,\n\tdivides,\n\tfieldSizing,\n\tquestionMark\n].flat();\n\n//#endregion\nexport { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelectorVariant, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, rules, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };", "import { r as containerShortcuts } from \"./container-Bma9LDm4.mjs\";\n\n//#region src/shortcuts/index.ts\nconst shortcuts = [...containerShortcuts];\n\n//#endregion\nexport { shortcuts };", "//#region src/theme/colors.ts\nconst colors = {\n\tblack: \"#000\",\n\twhite: \"#fff\",\n\tslate: {\n\t\t50: \"oklch(98.4% 0.003 247.858)\",\n\t\t100: \"oklch(96.8% 0.007 247.896)\",\n\t\t200: \"oklch(92.9% 0.013 255.508)\",\n\t\t300: \"oklch(86.9% 0.022 252.894)\",\n\t\t400: \"oklch(70.4% 0.04 256.788)\",\n\t\t500: \"oklch(55.4% 0.046 257.417)\",\n\t\t600: \"oklch(44.6% 0.043 257.281)\",\n\t\t700: \"oklch(37.2% 0.044 257.287)\",\n\t\t800: \"oklch(27.9% 0.041 260.031)\",\n\t\t900: \"oklch(20.8% 0.042 265.755)\",\n\t\t950: \"oklch(12.9% 0.042 264.695)\"\n\t},\n\tgray: {\n\t\t50: \"oklch(98.5% 0.002 247.839)\",\n\t\t100: \"oklch(96.7% 0.003 264.542)\",\n\t\t200: \"oklch(92.8% 0.006 264.531)\",\n\t\t300: \"oklch(87.2% 0.01 258.338)\",\n\t\t400: \"oklch(70.7% 0.022 261.325)\",\n\t\t500: \"oklch(55.1% 0.027 264.364)\",\n\t\t600: \"oklch(44.6% 0.03 256.802)\",\n\t\t700: \"oklch(37.3% 0.034 259.733)\",\n\t\t800: \"oklch(27.8% 0.033 256.848)\",\n\t\t900: \"oklch(21% 0.034 264.665)\",\n\t\t950: \"oklch(13% 0.028 261.692)\"\n\t},\n\tzinc: {\n\t\t50: \"oklch(98.5% 0 0)\",\n\t\t100: \"oklch(96.7% 0.001 286.375)\",\n\t\t200: \"oklch(92% 0.004 286.32)\",\n\t\t300: \"oklch(87.1% 0.006 286.286)\",\n\t\t400: \"oklch(70.5% 0.015 286.067)\",\n\t\t500: \"oklch(55.2% 0.016 285.938)\",\n\t\t600: \"oklch(44.2% 0.017 285.786)\",\n\t\t700: \"oklch(37% 0.013 285.805)\",\n\t\t800: \"oklch(27.4% 0.006 286.033)\",\n\t\t900: \"oklch(21% 0.006 285.885)\",\n\t\t950: \"oklch(14.1% 0.005 285.823)\"\n\t},\n\tneutral: {\n\t\t50: \"oklch(98.5% 0 0)\",\n\t\t100: \"oklch(97% 0 0)\",\n\t\t200: \"oklch(92.2% 0 0)\",\n\t\t300: \"oklch(87% 0 0)\",\n\t\t400: \"oklch(70.8% 0 0)\",\n\t\t500: \"oklch(55.6% 0 0)\",\n\t\t600: \"oklch(43.9% 0 0)\",\n\t\t700: \"oklch(37.1% 0 0)\",\n\t\t800: \"oklch(26.9% 0 0)\",\n\t\t900: \"oklch(20.5% 0 0)\",\n\t\t950: \"oklch(14.5% 0 0)\"\n\t},\n\tstone: {\n\t\t50: \"oklch(98.5% 0.001 106.423)\",\n\t\t100: \"oklch(97% 0.001 106.424)\",\n\t\t200: \"oklch(92.3% 0.003 48.717)\",\n\t\t300: \"oklch(86.9% 0.005 56.366)\",\n\t\t400: \"oklch(70.9% 0.01 56.259)\",\n\t\t500: \"oklch(55.3% 0.013 58.071)\",\n\t\t600: \"oklch(44.4% 0.011 73.639)\",\n\t\t700: \"oklch(37.4% 0.01 67.558)\",\n\t\t800: \"oklch(26.8% 0.007 34.298)\",\n\t\t900: \"oklch(21.6% 0.006 56.043)\",\n\t\t950: \"oklch(14.7% 0.004 49.25)\"\n\t},\n\tred: {\n\t\t50: \"oklch(97.1% 0.013 17.38)\",\n\t\t100: \"oklch(93.6% 0.032 17.717)\",\n\t\t200: \"oklch(88.5% 0.062 18.334)\",\n\t\t300: \"oklch(80.8% 0.114 19.571)\",\n\t\t400: \"oklch(70.4% 0.191 22.216)\",\n\t\t500: \"oklch(63.7% 0.237 25.331)\",\n\t\t600: \"oklch(57.7% 0.245 27.325)\",\n\t\t700: \"oklch(50.5% 0.213 27.518)\",\n\t\t800: \"oklch(44.4% 0.177 26.899)\",\n\t\t900: \"oklch(39.6% 0.141 25.723)\",\n\t\t950: \"oklch(25.8% 0.092 26.042)\"\n\t},\n\torange: {\n\t\t50: \"oklch(98% 0.016 73.684)\",\n\t\t100: \"oklch(95.4% 0.038 75.164)\",\n\t\t200: \"oklch(90.1% 0.076 70.697)\",\n\t\t300: \"oklch(83.7% 0.128 66.29)\",\n\t\t400: \"oklch(75% 0.183 55.934)\",\n\t\t500: \"oklch(70.5% 0.213 47.604)\",\n\t\t600: \"oklch(64.6% 0.222 41.116)\",\n\t\t700: \"oklch(55.3% 0.195 38.402)\",\n\t\t800: \"oklch(47% 0.157 37.304)\",\n\t\t900: \"oklch(40.8% 0.123 38.172)\",\n\t\t950: \"oklch(26.6% 0.079 36.259)\"\n\t},\n\tamber: {\n\t\t50: \"oklch(98.7% 0.022 95.277)\",\n\t\t100: \"oklch(96.2% 0.059 95.617)\",\n\t\t200: \"oklch(92.4% 0.12 95.746)\",\n\t\t300: \"oklch(87.9% 0.169 91.605)\",\n\t\t400: \"oklch(82.8% 0.189 84.429)\",\n\t\t500: \"oklch(76.9% 0.188 70.08)\",\n\t\t600: \"oklch(66.6% 0.179 58.318)\",\n\t\t700: \"oklch(55.5% 0.163 48.998)\",\n\t\t800: \"oklch(47.3% 0.137 46.201)\",\n\t\t900: \"oklch(41.4% 0.112 45.904)\",\n\t\t950: \"oklch(27.9% 0.077 45.635)\"\n\t},\n\tyellow: {\n\t\t50: \"oklch(98.7% 0.026 102.212)\",\n\t\t100: \"oklch(97.3% 0.071 103.193)\",\n\t\t200: \"oklch(94.5% 0.129 101.54)\",\n\t\t300: \"oklch(90.5% 0.182 98.111)\",\n\t\t400: \"oklch(85.2% 0.199 91.936)\",\n\t\t500: \"oklch(79.5% 0.184 86.047)\",\n\t\t600: \"oklch(68.1% 0.162 75.834)\",\n\t\t700: \"oklch(55.4% 0.135 66.442)\",\n\t\t800: \"oklch(47.6% 0.114 61.907)\",\n\t\t900: \"oklch(42.1% 0.095 57.708)\",\n\t\t950: \"oklch(28.6% 0.066 53.813)\"\n\t},\n\tlime: {\n\t\t50: \"oklch(98.6% 0.031 120.757)\",\n\t\t100: \"oklch(96.7% 0.067 122.328)\",\n\t\t200: \"oklch(93.8% 0.127 124.321)\",\n\t\t300: \"oklch(89.7% 0.196 126.665)\",\n\t\t400: \"oklch(84.1% 0.238 128.85)\",\n\t\t500: \"oklch(76.8% 0.233 130.85)\",\n\t\t600: \"oklch(64.8% 0.2 131.684)\",\n\t\t700: \"oklch(53.2% 0.157 131.589)\",\n\t\t800: \"oklch(45.3% 0.124 130.933)\",\n\t\t900: \"oklch(40.5% 0.101 131.063)\",\n\t\t950: \"oklch(27.4% 0.072 132.109)\"\n\t},\n\tgreen: {\n\t\t50: \"oklch(98.2% 0.018 155.826)\",\n\t\t100: \"oklch(96.2% 0.044 156.743)\",\n\t\t200: \"oklch(92.5% 0.084 155.995)\",\n\t\t300: \"oklch(87.1% 0.15 154.449)\",\n\t\t400: \"oklch(79.2% 0.209 151.711)\",\n\t\t500: \"oklch(72.3% 0.219 149.579)\",\n\t\t600: \"oklch(62.7% 0.194 149.214)\",\n\t\t700: \"oklch(52.7% 0.154 150.069)\",\n\t\t800: \"oklch(44.8% 0.119 151.328)\",\n\t\t900: \"oklch(39.3% 0.095 152.535)\",\n\t\t950: \"oklch(26.6% 0.065 152.934)\"\n\t},\n\temerald: {\n\t\t50: \"oklch(97.9% 0.021 166.113)\",\n\t\t100: \"oklch(95% 0.052 163.051)\",\n\t\t200: \"oklch(90.5% 0.093 164.15)\",\n\t\t300: \"oklch(84.5% 0.143 164.978)\",\n\t\t400: \"oklch(76.5% 0.177 163.223)\",\n\t\t500: \"oklch(69.6% 0.17 162.48)\",\n\t\t600: \"oklch(59.6% 0.145 163.225)\",\n\t\t700: \"oklch(50.8% 0.118 165.612)\",\n\t\t800: \"oklch(43.2% 0.095 166.913)\",\n\t\t900: \"oklch(37.8% 0.077 168.94)\",\n\t\t950: \"oklch(26.2% 0.051 172.552)\"\n\t},\n\tteal: {\n\t\t50: \"oklch(98.4% 0.014 180.72)\",\n\t\t100: \"oklch(95.3% 0.051 180.801)\",\n\t\t200: \"oklch(91% 0.096 180.426)\",\n\t\t300: \"oklch(85.5% 0.138 181.071)\",\n\t\t400: \"oklch(77.7% 0.152 181.912)\",\n\t\t500: \"oklch(70.4% 0.14 182.503)\",\n\t\t600: \"oklch(60% 0.118 184.704)\",\n\t\t700: \"oklch(51.1% 0.096 186.391)\",\n\t\t800: \"oklch(43.7% 0.078 188.216)\",\n\t\t900: \"oklch(38.6% 0.063 188.416)\",\n\t\t950: \"oklch(27.7% 0.046 192.524)\"\n\t},\n\tcyan: {\n\t\t50: \"oklch(98.4% 0.019 200.873)\",\n\t\t100: \"oklch(95.6% 0.045 203.388)\",\n\t\t200: \"oklch(91.7% 0.08 205.041)\",\n\t\t300: \"oklch(86.5% 0.127 207.078)\",\n\t\t400: \"oklch(78.9% 0.154 211.53)\",\n\t\t500: \"oklch(71.5% 0.143 215.221)\",\n\t\t600: \"oklch(60.9% 0.126 221.723)\",\n\t\t700: \"oklch(52% 0.105 223.128)\",\n\t\t800: \"oklch(45% 0.085 224.283)\",\n\t\t900: \"oklch(39.8% 0.07 227.392)\",\n\t\t950: \"oklch(30.2% 0.056 229.695)\"\n\t},\n\tsky: {\n\t\t50: \"oklch(97.7% 0.013 236.62)\",\n\t\t100: \"oklch(95.1% 0.026 236.824)\",\n\t\t200: \"oklch(90.1% 0.058 230.902)\",\n\t\t300: \"oklch(82.8% 0.111 230.318)\",\n\t\t400: \"oklch(74.6% 0.16 232.661)\",\n\t\t500: \"oklch(68.5% 0.169 237.323)\",\n\t\t600: \"oklch(58.8% 0.158 241.966)\",\n\t\t700: \"oklch(50% 0.134 242.749)\",\n\t\t800: \"oklch(44.3% 0.11 240.79)\",\n\t\t900: \"oklch(39.1% 0.09 240.876)\",\n\t\t950: \"oklch(29.3% 0.066 243.157)\"\n\t},\n\tblue: {\n\t\t50: \"oklch(97% 0.014 254.604)\",\n\t\t100: \"oklch(93.2% 0.032 255.585)\",\n\t\t200: \"oklch(88.2% 0.059 254.128)\",\n\t\t300: \"oklch(80.9% 0.105 251.813)\",\n\t\t400: \"oklch(70.7% 0.165 254.624)\",\n\t\t500: \"oklch(62.3% 0.214 259.815)\",\n\t\t600: \"oklch(54.6% 0.245 262.881)\",\n\t\t700: \"oklch(48.8% 0.243 264.376)\",\n\t\t800: \"oklch(42.4% 0.199 265.638)\",\n\t\t900: \"oklch(37.9% 0.146 265.522)\",\n\t\t950: \"oklch(28.2% 0.091 267.935)\"\n\t},\n\tindigo: {\n\t\t50: \"oklch(96.2% 0.018 272.314)\",\n\t\t100: \"oklch(93% 0.034 272.788)\",\n\t\t200: \"oklch(87% 0.065 274.039)\",\n\t\t300: \"oklch(78.5% 0.115 274.713)\",\n\t\t400: \"oklch(67.3% 0.182 276.935)\",\n\t\t500: \"oklch(58.5% 0.233 277.117)\",\n\t\t600: \"oklch(51.1% 0.262 276.966)\",\n\t\t700: \"oklch(45.7% 0.24 277.023)\",\n\t\t800: \"oklch(39.8% 0.195 277.366)\",\n\t\t900: \"oklch(35.9% 0.144 278.697)\",\n\t\t950: \"oklch(25.7% 0.09 281.288)\"\n\t},\n\tviolet: {\n\t\t50: \"oklch(96.9% 0.016 293.756)\",\n\t\t100: \"oklch(94.3% 0.029 294.588)\",\n\t\t200: \"oklch(89.4% 0.057 293.283)\",\n\t\t300: \"oklch(81.1% 0.111 293.571)\",\n\t\t400: \"oklch(70.2% 0.183 293.541)\",\n\t\t500: \"oklch(60.6% 0.25 292.717)\",\n\t\t600: \"oklch(54.1% 0.281 293.009)\",\n\t\t700: \"oklch(49.1% 0.27 292.581)\",\n\t\t800: \"oklch(43.2% 0.232 292.759)\",\n\t\t900: \"oklch(38% 0.189 293.745)\",\n\t\t950: \"oklch(28.3% 0.141 291.089)\"\n\t},\n\tpurple: {\n\t\t50: \"oklch(97.7% 0.014 308.299)\",\n\t\t100: \"oklch(94.6% 0.033 307.174)\",\n\t\t200: \"oklch(90.2% 0.063 306.703)\",\n\t\t300: \"oklch(82.7% 0.119 306.383)\",\n\t\t400: \"oklch(71.4% 0.203 305.504)\",\n\t\t500: \"oklch(62.7% 0.265 303.9)\",\n\t\t600: \"oklch(55.8% 0.288 302.321)\",\n\t\t700: \"oklch(49.6% 0.265 301.924)\",\n\t\t800: \"oklch(43.8% 0.218 303.724)\",\n\t\t900: \"oklch(38.1% 0.176 304.987)\",\n\t\t950: \"oklch(29.1% 0.149 302.717)\"\n\t},\n\tfuchsia: {\n\t\t50: \"oklch(97.7% 0.017 320.058)\",\n\t\t100: \"oklch(95.2% 0.037 318.852)\",\n\t\t200: \"oklch(90.3% 0.076 319.62)\",\n\t\t300: \"oklch(83.3% 0.145 321.434)\",\n\t\t400: \"oklch(74% 0.238 322.16)\",\n\t\t500: \"oklch(66.7% 0.295 322.15)\",\n\t\t600: \"oklch(59.1% 0.293 322.896)\",\n\t\t700: \"oklch(51.8% 0.253 323.949)\",\n\t\t800: \"oklch(45.2% 0.211 324.591)\",\n\t\t900: \"oklch(40.1% 0.17 325.612)\",\n\t\t950: \"oklch(29.3% 0.136 325.661)\"\n\t},\n\tpink: {\n\t\t50: \"oklch(97.1% 0.014 343.198)\",\n\t\t100: \"oklch(94.8% 0.028 342.258)\",\n\t\t200: \"oklch(89.9% 0.061 343.231)\",\n\t\t300: \"oklch(82.3% 0.12 346.018)\",\n\t\t400: \"oklch(71.8% 0.202 349.761)\",\n\t\t500: \"oklch(65.6% 0.241 354.308)\",\n\t\t600: \"oklch(59.2% 0.249 0.584)\",\n\t\t700: \"oklch(52.5% 0.223 3.958)\",\n\t\t800: \"oklch(45.9% 0.187 3.815)\",\n\t\t900: \"oklch(40.8% 0.153 2.432)\",\n\t\t950: \"oklch(28.4% 0.109 3.907)\"\n\t},\n\trose: {\n\t\t50: \"oklch(96.9% 0.015 12.422)\",\n\t\t100: \"oklch(94.1% 0.03 12.58)\",\n\t\t200: \"oklch(89.2% 0.058 10.001)\",\n\t\t300: \"oklch(81% 0.117 11.638)\",\n\t\t400: \"oklch(71.2% 0.194 13.428)\",\n\t\t500: \"oklch(64.5% 0.246 16.439)\",\n\t\t600: \"oklch(58.6% 0.253 17.585)\",\n\t\t700: \"oklch(51.4% 0.222 16.935)\",\n\t\t800: \"oklch(45.5% 0.188 13.697)\",\n\t\t900: \"oklch(41% 0.159 10.272)\",\n\t\t950: \"oklch(27.1% 0.105 12.094)\"\n\t},\n\tlight: {\n\t\t50: \"oklch(99.4% 0 0)\",\n\t\t100: \"oklch(99.11% 0 0)\",\n\t\t200: \"oklch(98.51% 0 0)\",\n\t\t300: \"oklch(98.16% 0.0017 247.84)\",\n\t\t400: \"oklch(97.31% 0 0)\",\n\t\t500: \"oklch(96.12% 0 0)\",\n\t\t600: \"oklch(96.32% 0.0034 247.86)\",\n\t\t700: \"oklch(94.17% 0.0052 247.88)\",\n\t\t800: \"oklch(91.09% 0.007 247.9)\",\n\t\t900: \"oklch(90.72% 0.0051 228.82)\",\n\t\t950: \"oklch(89.23% 0.006 239.83)\"\n\t},\n\tdark: {\n\t\t50: \"oklch(40.91% 0 0)\",\n\t\t100: \"oklch(35.62% 0 0)\",\n\t\t200: \"oklch(31.71% 0 0)\",\n\t\t300: \"oklch(29.72% 0 0)\",\n\t\t400: \"oklch(25.2% 0 0)\",\n\t\t500: \"oklch(23.93% 0 0)\",\n\t\t600: \"oklch(22.73% 0.0038 286.09)\",\n\t\t700: \"oklch(22.21% 0 0)\",\n\t\t800: \"oklch(20.9% 0 0)\",\n\t\t900: \"oklch(16.84% 0 0)\",\n\t\t950: \"oklch(13.44% 0 0)\"\n\t}\n};\nObject.values(colors).forEach((color) => {\n\tif (typeof color !== \"string\" && color !== void 0) color.DEFAULT = color.DEFAULT || color[400];\n});\n\n//#endregion\nexport { colors as t };", "import { t as colors } from \"./colors-hDdKuL6f.mjs\";\n\n//#region src/theme/animate.ts\nconst animation = {\n\tkeyframes: {\n\t\t\"pulse\": \"{0%, 100% {opacity:1} 50% {opacity:.5}}\",\n\t\t\"bounce\": \"{0%, 100% {transform:translateY(-25%);animation-timing-function:cubic-bezier(0.8,0,1,1)} 50% {transform:translateY(0);animation-timing-function:cubic-bezier(0,0,0.2,1)}}\",\n\t\t\"spin\": \"{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\",\n\t\t\"ping\": \"{0%{transform:scale(1);opacity:1}75%,100%{transform:scale(2);opacity:0}}\",\n\t\t\"bounce-alt\": \"{from,20%,53%,80%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-30px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.05,0.855,0.06);transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}\",\n\t\t\"flash\": \"{from,50%,to{opacity:1}25%,75%{opacity:0}}\",\n\t\t\"pulse-alt\": \"{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"rubber-band\": \"{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,0.75,1)}40%{transform:scale3d(0.75,1.25,1)}50%{transform:scale3d(1.15,0.85,1)}65%{transform:scale3d(0.95,1.05,1)}75%{transform:scale3d(1.05,0.95,1)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"shake-x\": \"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}\",\n\t\t\"shake-y\": \"{from,to{transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{transform:translate3d(0,-10px,0)}20%,40%,60%,80%{transform:translate3d(0,10px,0)}}\",\n\t\t\"head-shake\": \"{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}\",\n\t\t\"swing\": \"{20%{transform:rotate3d(0,0,1,15deg)}40%{transform:rotate3d(0,0,1,-10deg)}60%{transform:rotate3d(0,0,1,5deg)}80%{transform:rotate3d(0,0,1,-5deg)}to{transform:rotate3d(0,0,1,0deg)}}\",\n\t\t\"tada\": \"{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(0.9,0.9,0.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}to{transform:scale3d(1,1,1)}}\",\n\t\t\"wobble\": \"{from{transform:translate3d(0,0,0)}15%{transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"jello\": \"{from,11.1%,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg)skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-0.78125deg) skewY(-0.78125deg)}77.7%{transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{transform:skewX(-0.1953125deg) skewY(-0.1953125deg)}}\",\n\t\t\"heart-beat\": \"{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}\",\n\t\t\"hinge\": \"{0%{transform-origin:top left;animation-timing-function:ease-in-out}20%,60%{transform:rotate3d(0,0,1,80deg);transform-origin:top left;animation-timing-function:ease-in-out}40%,80%{transform:rotate3d(0,0,1,60deg);transform-origin:top left;animation-timing-function:ease-in-out}to{transform:translate3d(0,700px,0);opacity:0}}\",\n\t\t\"jack-in-the-box\": \"{from{opacity:0;transform-origin:center bottom;transform:scale(0.1) rotate(30deg)}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{transform:scale(1)}}\",\n\t\t\"light-speed-in-left\": \"{from{opacity:0;transform:translate3d(-100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"light-speed-in-right\": \"{from{opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"light-speed-out-left\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0) skewX(30deg)}}\",\n\t\t\"light-speed-out-right\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}\",\n\t\t\"flip\": \"{from{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,-360deg);animation-timing-function:ease-out}40%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);animation-timing-function:ease-out}50%{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);animation-timing-function:ease-in}80%{transform:perspective(400px) scale3d(0.95,0.95,0.95) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}to{transform:perspective(400px) scale3d(1,1,1) translate3d(0,0,0) rotate3d(0,1,0,0deg);animation-timing-function:ease-in}}\",\n\t\t\"flip-in-x\": \"{from{transform:perspective(400px) rotate3d(1,0,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg)}to{transform:perspective(400px)}}\",\n\t\t\"flip-in-y\": \"{from{transform:perspective(400px) rotate3d(0,1,0,90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(0,1,0,-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{transform:perspective(400px) rotate3d(0,1,0,-5deg)}to{transform:perspective(400px)}}\",\n\t\t\"flip-out-x\": \"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}to{transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}\",\n\t\t\"flip-out-y\": \"{from{transform:perspective(400px)}30%{transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}to{transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}\",\n\t\t\"rotate-in\": \"{from{transform-origin:center;transform:rotate3d(0,0,1,-200deg);opacity:0}to{transform-origin:center;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-down-left\": \"{from{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}to{transform-origin:left bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-down-right\": \"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-up-left\": \"{from{transform-origin:left top;transform:rotate3d(0,0,1,45deg);opacity:0}to{transform-origin:left top;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-in-up-right\": \"{from{transform-origin:right bottom;transform:rotate3d(0,0,1,-90deg);opacity:0}to{transform-origin:right bottom;transform:translate3d(0,0,0);opacity:1}}\",\n\t\t\"rotate-out\": \"{from{transform-origin:center;opacity:1}to{transform-origin:center;transform:rotate3d(0,0,1,200deg);opacity:0}}\",\n\t\t\"rotate-out-down-left\": \"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,45deg);opacity:0}}\",\n\t\t\"rotate-out-down-right\": \"{from{transform-origin:right bottom;opacity:1}to{transform-origin:right bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}\",\n\t\t\"rotate-out-up-left\": \"{from{transform-origin:left bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,-45deg);opacity:0}}\",\n\t\t\"rotate-out-up-right\": \"{from{transform-origin:right bottom;opacity:1}to{transform-origin:left bottom;transform:rotate3d(0,0,1,90deg);opacity:0}}\",\n\t\t\"roll-in\": \"{from{opacity:0;transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"roll-out\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}\",\n\t\t\"zoom-in\": \"{from{opacity:0;transform:scale3d(0.3,0.3,0.3)}50%{opacity:1}}\",\n\t\t\"zoom-in-down\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-left\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(-1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-right\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(1000px,0,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-10px,0,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-in-up\": \"{from{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,1000px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}60%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-out\": \"{from{opacity:1}50%{opacity:0;transform:scale3d(0.3,0.3,0.3)}to{opacity:0}}\",\n\t\t\"zoom-out-down\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,-60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"zoom-out-left\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(-2000px,0,0);transform-origin:left center}}\",\n\t\t\"zoom-out-right\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(0.1) translate3d(2000px,0,0);transform-origin:right center}}\",\n\t\t\"zoom-out-up\": \"{40%{opacity:1;transform:scale3d(0.475,0.475,0.475) translate3d(0,60px,0);animation-timing-function:cubic-bezier(0.55,0.055,0.675,0.19)}to{opacity:0;transform:scale3d(0.1,0.1,0.1) translate3d(0,-2000px,0);transform-origin:center bottom;animation-timing-function:cubic-bezier(0.175,0.885,0.32,1)}}\",\n\t\t\"bounce-in\": \"{from,20%,40%,60%,80%,to{animation-timing-function:ease-in-out}0%{opacity:0;transform:scale3d(0.3,0.3,0.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(0.9,0.9,0.9)}60%{transform:scale3d(1.03,1.03,1.03);opacity:1}80%{transform:scale3d(0.97,0.97,0.97)}to{opacity:1;transform:scale3d(1,1,1)}}\",\n\t\t\"bounce-in-down\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-left\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-right\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-in-up\": \"{from,60%,75%,90%,to{animation-timing-function:cubic-bezier(0.215,0.61,0.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translate3d(0,0,0)}}\",\n\t\t\"bounce-out\": \"{20%{transform:scale3d(0.9,0.9,0.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(0.3,0.3,0.3)}}\",\n\t\t\"bounce-out-down\": \"{20%{transform:translate3d(0,10px,0)}40%,45%{opacity:1;transform:translate3d(0,-20px,0)}to{opacity:0;transform:translate3d(0,2000px,0)}}\",\n\t\t\"bounce-out-left\": \"{20%{opacity:1;transform:translate3d(20px,0,0)}to{opacity:0;transform:translate3d(-2000px,0,0)}}\",\n\t\t\"bounce-out-right\": \"{20%{opacity:1;transform:translate3d(-20px,0,0)}to{opacity:0;transform:translate3d(2000px,0,0)}}\",\n\t\t\"bounce-out-up\": \"{20%{transform:translate3d(0,-10px,0)}40%,45%{opacity:1;transform:translate3d(0,20px,0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}\",\n\t\t\"slide-in-down\": \"{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-left\": \"{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-right\": \"{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-in-up\": \"{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}\",\n\t\t\"slide-out-down\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,100%,0)}}\",\n\t\t\"slide-out-left\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}\",\n\t\t\"slide-out-right\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}\",\n\t\t\"slide-out-up\": \"{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}\",\n\t\t\"fade-in\": \"{from{opacity:0}to{opacity:1}}\",\n\t\t\"fade-in-down\": \"{from{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-down-big\": \"{from{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-left\": \"{from{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-left-big\": \"{from{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-right\": \"{from{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-right-big\": \"{from{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-up\": \"{from{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-up-big\": \"{from{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-top-left\": \"{from{opacity:0;transform:translate3d(-100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-top-right\": \"{from{opacity:0;transform:translate3d(100%,-100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-bottom-left\": \"{from{opacity:0;transform:translate3d(-100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-in-bottom-right\": \"{from{opacity:0;transform:translate3d(100%,100%,0)}to{opacity:1;transform:translate3d(0,0,0)}}\",\n\t\t\"fade-out\": \"{from{opacity:1}to{opacity:0}}\",\n\t\t\"fade-out-down\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}\",\n\t\t\"fade-out-down-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}\",\n\t\t\"fade-out-left\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}\",\n\t\t\"fade-out-left-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}\",\n\t\t\"fade-out-right\": \"{from{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}\",\n\t\t\"fade-out-right-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}\",\n\t\t\"fade-out-up\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}\",\n\t\t\"fade-out-up-big\": \"{from{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}\",\n\t\t\"fade-out-top-left\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,-100%,0)}}\",\n\t\t\"fade-out-top-right\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,-100%,0)}}\",\n\t\t\"fade-out-bottom-left\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(-100%,100%,0)}}\",\n\t\t\"fade-out-bottom-right\": \"{from{opacity:1;transform:translate3d(0,0,0)}to{opacity:0;transform:translate3d(100%,100%,0)}}\",\n\t\t\"back-in-up\": \"{0%{opacity:0.7;transform:translateY(1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-down\": \"{0%{opacity:0.7;transform:translateY(-1200px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-right\": \"{0%{opacity:0.7;transform:translateX(2000px) scale(0.7)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-in-left\": \"{0%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}80%{opacity:0.7;transform:translateX(0px) scale(0.7)}100%{opacity:1;transform:scale(1)}}\",\n\t\t\"back-out-up\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}\",\n\t\t\"back-out-down\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateY(700px) scale(0.7)}}\",\n\t\t\"back-out-right\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateY(0px) scale(0.7)}100%{opacity:0.7;transform:translateX(2000px) scale(0.7)}}\",\n\t\t\"back-out-left\": \"{0%{opacity:1;transform:scale(1)}80%{opacity:0.7;transform:translateX(-2000px) scale(0.7)}100%{opacity:0.7;transform:translateY(-700px) scale(0.7)}}\"\n\t},\n\tdurations: {\n\t\t\"pulse\": \"2s\",\n\t\t\"heart-beat\": \"1.3s\",\n\t\t\"bounce-in\": \"0.75s\",\n\t\t\"bounce-out\": \"0.75s\",\n\t\t\"flip-out-x\": \"0.75s\",\n\t\t\"flip-out-y\": \"0.75s\",\n\t\t\"hinge\": \"2s\"\n\t},\n\ttimingFns: {\n\t\t\"pulse\": \"cubic-bezier(0.4,0,.6,1)\",\n\t\t\"ping\": \"cubic-bezier(0,0,.2,1)\",\n\t\t\"head-shake\": \"ease-in-out\",\n\t\t\"heart-beat\": \"ease-in-out\",\n\t\t\"pulse-alt\": \"ease-in-out\",\n\t\t\"light-speed-in-left\": \"ease-out\",\n\t\t\"light-speed-in-right\": \"ease-out\",\n\t\t\"light-speed-out-left\": \"ease-in\",\n\t\t\"light-speed-out-right\": \"ease-in\"\n\t},\n\tproperties: {\n\t\t\"bounce-alt\": { \"transform-origin\": \"center bottom\" },\n\t\t\"jello\": { \"transform-origin\": \"center\" },\n\t\t\"swing\": { \"transform-origin\": \"top center\" },\n\t\t\"flip\": { \"backface-visibility\": \"visible\" },\n\t\t\"flip-in-x\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-in-y\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-out-x\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"flip-out-y\": { \"backface-visibility\": \"visible !important\" },\n\t\t\"rotate-in\": { \"transform-origin\": \"center\" },\n\t\t\"rotate-in-down-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-in-down-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-in-up-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-in-up-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-out\": { \"transform-origin\": \"center\" },\n\t\t\"rotate-out-down-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-out-down-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"rotate-out-up-left\": { \"transform-origin\": \"left bottom\" },\n\t\t\"rotate-out-up-right\": { \"transform-origin\": \"right bottom\" },\n\t\t\"hinge\": { \"transform-origin\": \"top left\" },\n\t\t\"zoom-out-down\": { \"transform-origin\": \"center bottom\" },\n\t\t\"zoom-out-left\": { \"transform-origin\": \"left center\" },\n\t\t\"zoom-out-right\": { \"transform-origin\": \"right center\" },\n\t\t\"zoom-out-up\": { \"transform-origin\": \"center bottom\" }\n\t},\n\tcounts: {\n\t\t\"spin\": \"infinite\",\n\t\t\"ping\": \"infinite\",\n\t\t\"pulse\": \"infinite\",\n\t\t\"pulse-alt\": \"infinite\",\n\t\t\"bounce\": \"infinite\",\n\t\t\"bounce-alt\": \"infinite\"\n\t},\n\tcategory: {\n\t\t\"pulse\": \"Attention Seekers\",\n\t\t\"bounce\": \"Attention Seekers\",\n\t\t\"spin\": \"Attention Seekers\",\n\t\t\"ping\": \"Attention Seekers\",\n\t\t\"bounce-alt\": \"Attention Seekers\",\n\t\t\"flash\": \"Attention Seekers\",\n\t\t\"pulse-alt\": \"Attention Seekers\",\n\t\t\"rubber-band\": \"Attention Seekers\",\n\t\t\"shake-x\": \"Attention Seekers\",\n\t\t\"shake-y\": \"Attention Seekers\",\n\t\t\"head-shake\": \"Attention Seekers\",\n\t\t\"swing\": \"Attention Seekers\",\n\t\t\"tada\": \"Attention Seekers\",\n\t\t\"wobble\": \"Attention Seekers\",\n\t\t\"jello\": \"Attention Seekers\",\n\t\t\"heart-beat\": \"Attention Seekers\",\n\t\t\"hinge\": \"Specials\",\n\t\t\"jack-in-the-box\": \"Specials\",\n\t\t\"light-speed-in-left\": \"Lightspeed\",\n\t\t\"light-speed-in-right\": \"Lightspeed\",\n\t\t\"light-speed-out-left\": \"Lightspeed\",\n\t\t\"light-speed-out-right\": \"Lightspeed\",\n\t\t\"flip\": \"Flippers\",\n\t\t\"flip-in-x\": \"Flippers\",\n\t\t\"flip-in-y\": \"Flippers\",\n\t\t\"flip-out-x\": \"Flippers\",\n\t\t\"flip-out-y\": \"Flippers\",\n\t\t\"rotate-in\": \"Rotating Entrances\",\n\t\t\"rotate-in-down-left\": \"Rotating Entrances\",\n\t\t\"rotate-in-down-right\": \"Rotating Entrances\",\n\t\t\"rotate-in-up-left\": \"Rotating Entrances\",\n\t\t\"rotate-in-up-right\": \"Rotating Entrances\",\n\t\t\"rotate-out\": \"Rotating Exits\",\n\t\t\"rotate-out-down-left\": \"Rotating Exits\",\n\t\t\"rotate-out-down-right\": \"Rotating Exits\",\n\t\t\"rotate-out-up-left\": \"Rotating Exits\",\n\t\t\"rotate-out-up-right\": \"Rotating Exits\",\n\t\t\"roll-in\": \"Specials\",\n\t\t\"roll-out\": \"Specials\",\n\t\t\"zoom-in\": \"Zooming Entrances\",\n\t\t\"zoom-in-down\": \"Zooming Entrances\",\n\t\t\"zoom-in-left\": \"Zooming Entrances\",\n\t\t\"zoom-in-right\": \"Zooming Entrances\",\n\t\t\"zoom-in-up\": \"Zooming Entrances\",\n\t\t\"zoom-out\": \"Zooming Exits\",\n\t\t\"zoom-out-down\": \"Zooming Exits\",\n\t\t\"zoom-out-left\": \"Zooming Exits\",\n\t\t\"zoom-out-right\": \"Zooming Exits\",\n\t\t\"zoom-out-up\": \"Zooming Exits\",\n\t\t\"bounce-in\": \"Bouncing Entrances\",\n\t\t\"bounce-in-down\": \"Bouncing Entrances\",\n\t\t\"bounce-in-left\": \"Bouncing Entrances\",\n\t\t\"bounce-in-right\": \"Bouncing Entrances\",\n\t\t\"bounce-in-up\": \"Bouncing Entrances\",\n\t\t\"bounce-out\": \"Bouncing Exits\",\n\t\t\"bounce-out-down\": \"Bouncing Exits\",\n\t\t\"bounce-out-left\": \"Bouncing Exits\",\n\t\t\"bounce-out-right\": \"Bouncing Exits\",\n\t\t\"bounce-out-up\": \"Bouncing Exits\",\n\t\t\"slide-in-down\": \"Sliding Entrances\",\n\t\t\"slide-in-left\": \"Sliding Entrances\",\n\t\t\"slide-in-right\": \"Sliding Entrances\",\n\t\t\"slide-in-up\": \"Sliding Entrances\",\n\t\t\"slide-out-down\": \"Sliding Exits\",\n\t\t\"slide-out-left\": \"Sliding Exits\",\n\t\t\"slide-out-right\": \"Sliding Exits\",\n\t\t\"slide-out-up\": \"Sliding Exits\",\n\t\t\"fade-in\": \"Fading Entrances\",\n\t\t\"fade-in-down\": \"Fading Entrances\",\n\t\t\"fade-in-down-big\": \"Fading Entrances\",\n\t\t\"fade-in-left\": \"Fading Entrances\",\n\t\t\"fade-in-left-big\": \"Fading Entrances\",\n\t\t\"fade-in-right\": \"Fading Entrances\",\n\t\t\"fade-in-right-big\": \"Fading Entrances\",\n\t\t\"fade-in-up\": \"Fading Entrances\",\n\t\t\"fade-in-up-big\": \"Fading Entrances\",\n\t\t\"fade-in-top-left\": \"Fading Entrances\",\n\t\t\"fade-in-top-right\": \"Fading Entrances\",\n\t\t\"fade-in-bottom-left\": \"Fading Entrances\",\n\t\t\"fade-in-bottom-right\": \"Fading Entrances\",\n\t\t\"fade-out\": \"Fading Exits\",\n\t\t\"fade-out-down\": \"Fading Exits\",\n\t\t\"fade-out-down-big\": \"Fading Exits\",\n\t\t\"fade-out-left\": \"Fading Exits\",\n\t\t\"fade-out-left-big\": \"Fading Exits\",\n\t\t\"fade-out-right\": \"Fading Exits\",\n\t\t\"fade-out-right-big\": \"Fading Exits\",\n\t\t\"fade-out-up\": \"Fading Exits\",\n\t\t\"fade-out-up-big\": \"Fading Exits\",\n\t\t\"fade-out-top-left\": \"Fading Exits\",\n\t\t\"fade-out-top-right\": \"Fading Exits\",\n\t\t\"fade-out-bottom-left\": \"Fading Exits\",\n\t\t\"fade-out-bottom-right\": \"Fading Exits\",\n\t\t\"back-in-up\": \"Back Entrances\",\n\t\t\"back-in-down\": \"Back Entrances\",\n\t\t\"back-in-right\": \"Back Entrances\",\n\t\t\"back-in-left\": \"Back Entrances\",\n\t\t\"back-out-up\": \"Back Exits\",\n\t\t\"back-out-down\": \"Back Exits\",\n\t\t\"back-out-right\": \"Back Exits\",\n\t\t\"back-out-left\": \"Back Exits\"\n\t}\n};\n\n//#endregion\n//#region src/theme/aria.ts\nconst aria = {\n\tbusy: \"busy=\\\"true\\\"\",\n\tchecked: \"checked=\\\"true\\\"\",\n\tdisabled: \"disabled=\\\"true\\\"\",\n\texpanded: \"expanded=\\\"true\\\"\",\n\thidden: \"hidden=\\\"true\\\"\",\n\tpressed: \"pressed=\\\"true\\\"\",\n\treadonly: \"readonly=\\\"true\\\"\",\n\trequired: \"required=\\\"true\\\"\",\n\tselected: \"selected=\\\"true\\\"\"\n};\n\n//#endregion\n//#region src/theme/filters.ts\nconst blur = {\n\t\"DEFAULT\": \"8px\",\n\t\"xs\": \"4px\",\n\t\"sm\": \"8px\",\n\t\"md\": \"12px\",\n\t\"lg\": \"16px\",\n\t\"xl\": \"24px\",\n\t\"2xl\": \"40px\",\n\t\"3xl\": \"64px\"\n};\n\n//#endregion\n//#region src/theme/font.ts\nconst font = {\n\tsans: [\n\t\t\"ui-sans-serif\",\n\t\t\"system-ui\",\n\t\t\"-apple-system\",\n\t\t\"BlinkMacSystemFont\",\n\t\t\"\\\"Segoe UI\\\"\",\n\t\t\"Roboto\",\n\t\t\"\\\"Helvetica Neue\\\"\",\n\t\t\"Arial\",\n\t\t\"\\\"Noto Sans\\\"\",\n\t\t\"sans-serif\",\n\t\t\"\\\"Apple Color Emoji\\\"\",\n\t\t\"\\\"Segoe UI Emoji\\\"\",\n\t\t\"\\\"Segoe UI Symbol\\\"\",\n\t\t\"\\\"Noto Color Emoji\\\"\"\n\t].join(\",\"),\n\tserif: [\n\t\t\"ui-serif\",\n\t\t\"Georgia\",\n\t\t\"Cambria\",\n\t\t\"\\\"Times New Roman\\\"\",\n\t\t\"Times\",\n\t\t\"serif\"\n\t].join(\",\"),\n\tmono: [\n\t\t\"ui-monospace\",\n\t\t\"SFMono-Regular\",\n\t\t\"Menlo\",\n\t\t\"Monaco\",\n\t\t\"Consolas\",\n\t\t\"\\\"Liberation Mono\\\"\",\n\t\t\"\\\"Courier New\\\"\",\n\t\t\"monospace\"\n\t].join(\",\")\n};\nconst text = {\n\t\"xs\": {\n\t\tfontSize: \"0.75rem\",\n\t\tlineHeight: \"1rem\"\n\t},\n\t\"sm\": {\n\t\tfontSize: \"0.875rem\",\n\t\tlineHeight: \"1.25rem\"\n\t},\n\t\"base\": {\n\t\tfontSize: \"1rem\",\n\t\tlineHeight: \"1.5rem\"\n\t},\n\t\"lg\": {\n\t\tfontSize: \"1.125rem\",\n\t\tlineHeight: \"1.75rem\"\n\t},\n\t\"xl\": {\n\t\tfontSize: \"1.25rem\",\n\t\tlineHeight: \"1.75rem\"\n\t},\n\t\"2xl\": {\n\t\tfontSize: \"1.5rem\",\n\t\tlineHeight: \"2rem\"\n\t},\n\t\"3xl\": {\n\t\tfontSize: \"1.875rem\",\n\t\tlineHeight: \"2.25rem\"\n\t},\n\t\"4xl\": {\n\t\tfontSize: \"2.25rem\",\n\t\tlineHeight: \"2.5rem\"\n\t},\n\t\"5xl\": {\n\t\tfontSize: \"3rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"6xl\": {\n\t\tfontSize: \"3.75rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"7xl\": {\n\t\tfontSize: \"4.5rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"8xl\": {\n\t\tfontSize: \"6rem\",\n\t\tlineHeight: \"1\"\n\t},\n\t\"9xl\": {\n\t\tfontSize: \"8rem\",\n\t\tlineHeight: \"1\"\n\t}\n};\nconst fontWeight = {\n\tthin: \"100\",\n\textralight: \"200\",\n\tlight: \"300\",\n\tnormal: \"400\",\n\tmedium: \"500\",\n\tsemibold: \"600\",\n\tbold: \"700\",\n\textrabold: \"800\",\n\tblack: \"900\"\n};\nconst tracking = {\n\ttighter: \"-0.05em\",\n\ttight: \"-0.025em\",\n\tnormal: \"0em\",\n\twide: \"0.025em\",\n\twider: \"0.05em\",\n\twidest: \"0.1em\"\n};\nconst leading = {\n\tnone: \"1\",\n\ttight: \"1.25\",\n\tsnug: \"1.375\",\n\tnormal: \"1.5\",\n\trelaxed: \"1.625\",\n\tloose: \"2\"\n};\nconst textStrokeWidth = {\n\tDEFAULT: \"1.5rem\",\n\tnone: \"0\",\n\tsm: \"thin\",\n\tmd: \"medium\",\n\tlg: \"thick\"\n};\n\n//#endregion\n//#region src/theme/media.ts\nconst media = {\n\tportrait: \"(orientation: portrait)\",\n\tlandscape: \"(orientation: landscape)\",\n\tos_dark: \"(prefers-color-scheme: dark)\",\n\tos_light: \"(prefers-color-scheme: light)\",\n\tmotion_ok: \"(prefers-reduced-motion: no-preference)\",\n\tmotion_not_ok: \"(prefers-reduced-motion: reduce)\",\n\thigh_contrast: \"(prefers-contrast: high)\",\n\tlow_contrast: \"(prefers-contrast: low)\",\n\topacity_ok: \"(prefers-reduced-transparency: no-preference)\",\n\topacity_not_ok: \"(prefers-reduced-transparency: reduce)\",\n\tuse_data_ok: \"(prefers-reduced-data: no-preference)\",\n\tuse_data_not_ok: \"(prefers-reduced-data: reduce)\",\n\ttouch: \"(hover: none) and (pointer: coarse)\",\n\tstylus: \"(hover: none) and (pointer: fine)\",\n\tpointer: \"(hover) and (pointer: coarse)\",\n\tmouse: \"(hover) and (pointer: fine)\",\n\thd_color: \"(dynamic-range: high)\"\n};\n\n//#endregion\n//#region src/theme/misc.ts\nconst spacing = {\n\t\"DEFAULT\": \"0.25rem\",\n\t\"xs\": \"0.75rem\",\n\t\"sm\": \"0.875rem\",\n\t\"lg\": \"1.125rem\",\n\t\"xl\": \"1.25rem\",\n\t\"2xl\": \"1.5rem\",\n\t\"3xl\": \"1.875rem\",\n\t\"4xl\": \"2.25rem\",\n\t\"5xl\": \"3rem\",\n\t\"6xl\": \"3.75rem\",\n\t\"7xl\": \"4.5rem\",\n\t\"8xl\": \"6rem\",\n\t\"9xl\": \"8rem\"\n};\nconst radius = {\n\t\"DEFAULT\": \"0.25rem\",\n\t\"none\": \"0\",\n\t\"xs\": \"0.125rem\",\n\t\"sm\": \"0.25rem\",\n\t\"md\": \"0.375rem\",\n\t\"lg\": \"0.5rem\",\n\t\"xl\": \"0.75rem\",\n\t\"2xl\": \"1rem\",\n\t\"3xl\": \"1.5rem\",\n\t\"4xl\": \"2rem\"\n};\nconst shadow = {\n\t\"DEFAULT\": [`0 1px 3px 0 rgb(0 0 0 / 0.1)`, `0 1px 2px -1px rgb(0 0 0 / 0.1)`],\n\t\"2xs\": `0 1px rgb(0 0 0 / 0.05)`,\n\t\"xs\": `0 1px 2px 0 rgb(0 0 0 / 0.05)`,\n\t\"sm\": [`0 1px 3px 0 rgb(0 0 0 / 0.1)`, `0 1px 2px -1px rgb(0 0 0 / 0.1)`],\n\t\"md\": [`0 4px 6px -1px rgb(0 0 0 / 0.1)`, `0 2px 4px -2px rgb(0 0 0 / 0.1)`],\n\t\"lg\": [`0 10px 15px -3px rgb(0 0 0 / 0.1)`, `0 4px 6px -4px rgb(0 0 0 / 0.1)`],\n\t\"xl\": [`0 20px 25px -5px rgb(0 0 0 / 0.1)`, `0 8px 10px -6px rgb(0 0 0 / 0.1)`],\n\t\"2xl\": `0 25px 50px -12px rgb(0 0 0 / 0.25)`,\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\",\n\t\"inner\": \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\"\n};\nconst insetShadow = {\n\t\"2xs\": \"inset 0 1px rgb(0 0 0 / 0.05)\",\n\t\"xs\": \"inset 0 1px 1px rgb(0 0 0 / 0.05)\",\n\t\"sm\": \"inset 0 2px 4px rgb(0 0 0 / 0.05)\",\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\"\n};\nconst dropShadow = {\n\t\"DEFAULT\": [\"0 1px 2px rgb(0 0 0 / 0.1)\", \"0 1px 1px rgb(0 0 0 / 0.06)\"],\n\t\"xs\": \"0 1px 1px rgb(0 0 0 / 0.05)\",\n\t\"sm\": \"0 1px 2px rgb(0 0 0 / 0.15)\",\n\t\"md\": \"0 3px 3px rgb(0 0 0 / 0.12)\",\n\t\"lg\": \"0 4px 4px rgb(0 0 0 / 0.15)\",\n\t\"xl\": \"0 9px 7px rgb(0 0 0 / 0.1)\",\n\t\"2xl\": \"0 25px 25px rgb(0 0 0 / 0.15)\"\n};\nconst textShadow = {\n\t\"none\": \"0 0 rgb(0 0 0 / 0)\",\n\t\"2xs\": \"0 1px 0 rgb(0 0 0 / 0.15)\",\n\t\"xs\": \"0 1px 1px rgb(0 0 0 / 0.2)\",\n\t\"sm\": [\n\t\t\"0 1px 0 rgb(0 0 0 / 0.075)\",\n\t\t\"0 1px 1px rgb(0 0 0 / 0.075)\",\n\t\t\"0 2px 2px rgb(0 0 0 / 0.075)\"\n\t],\n\t\"md\": [\n\t\t\"0 1px 1px rgb(0 0 0 / 0.1)\",\n\t\t\"0 1px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 2px 4px rgb(0 0 0 / 0.1)\"\n\t],\n\t\"lg\": [\n\t\t\"0 1px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 3px 2px rgb(0 0 0 / 0.1)\",\n\t\t\"0 4px 8px rgb(0 0 0 / 0.1)\"\n\t]\n};\nconst perspective = {\n\tdramatic: \"100px\",\n\tnear: \"300px\",\n\tnormal: \"500px\",\n\tmidrange: \"800px\",\n\tdistant: \"1200px\"\n};\n/** For reset css */\nconst defaults = {\n\ttransition: {\n\t\tduration: \"150ms\",\n\t\ttimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\"\n\t},\n\tfont: {\n\t\tfamily: \"var(--font-sans)\",\n\t\tfeatureSettings: \"var(--font-sans--font-feature-settings)\",\n\t\tvariationSettings: \"var(--font-sans--font-variation-settings)\"\n\t},\n\tmonoFont: {\n\t\tfamily: \"var(--font-mono)\",\n\t\tfeatureSettings: \"var(--font-mono--font-feature-settings)\",\n\t\tvariationSettings: \"var(--font-mono--font-variation-settings)\"\n\t}\n};\n\n//#endregion\n//#region src/theme/size.ts\nconst container = {\n\t\"3xs\": \"16rem\",\n\t\"2xs\": \"18rem\",\n\t\"xs\": \"20rem\",\n\t\"sm\": \"24rem\",\n\t\"md\": \"28rem\",\n\t\"lg\": \"32rem\",\n\t\"xl\": \"36rem\",\n\t\"2xl\": \"42rem\",\n\t\"3xl\": \"48rem\",\n\t\"4xl\": \"56rem\",\n\t\"5xl\": \"64rem\",\n\t\"6xl\": \"72rem\",\n\t\"7xl\": \"80rem\",\n\t\"prose\": \"65ch\"\n};\nconst breakpoint = {\n\t\"sm\": \"40rem\",\n\t\"md\": \"48rem\",\n\t\"lg\": \"64rem\",\n\t\"xl\": \"80rem\",\n\t\"2xl\": \"96rem\"\n};\nconst verticalBreakpoint = { ...breakpoint };\n\n//#endregion\n//#region src/theme/supports.ts\nconst supports = { grid: \"(display: grid)\" };\n\n//#endregion\n//#region src/theme/transition.ts\nconst ease = {\n\t\"linear\": \"linear\",\n\t\"in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n\t\"out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n\t\"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\"DEFAULT\": \"cubic-bezier(0.4, 0, 0.2, 1)\"\n};\nconst property = {\n\tnone: \"none\",\n\tall: \"all\",\n\tcolors: [\n\t\t\"color\",\n\t\t\"background-color\",\n\t\t\"border-color\",\n\t\t\"text-decoration-color\",\n\t\t\"fill\",\n\t\t\"stroke\",\n\t\t\"--un-gradient-from\",\n\t\t\"--un-gradient-via\",\n\t\t\"--un-gradient-to\"\n\t].join(\",\"),\n\topacity: \"opacity\",\n\tshadow: \"box-shadow\",\n\ttransform: [\n\t\t\"transform\",\n\t\t\"translate\",\n\t\t\"scale\",\n\t\t\"rotate\"\n\t].join(\",\"),\n\tget DEFAULT() {\n\t\treturn [\n\t\t\tthis.colors,\n\t\t\tthis.opacity,\n\t\t\tthis.shadow,\n\t\t\tthis.transform,\n\t\t\t\"filter\",\n\t\t\t\"-webkit-backdrop-filter\",\n\t\t\t\"backdrop-filter\"\n\t\t].join(\",\");\n\t}\n};\n\n//#endregion\n//#region src/theme/default.ts\nconst theme = {\n\tfont,\n\tcolors,\n\tspacing,\n\tbreakpoint,\n\tverticalBreakpoint,\n\ttext,\n\tfontWeight,\n\ttracking,\n\tleading,\n\ttextStrokeWidth,\n\tradius,\n\tshadow,\n\tinsetShadow,\n\tdropShadow,\n\ttextShadow,\n\tease,\n\tanimation,\n\tblur,\n\tperspective,\n\tproperty,\n\tdefault: defaults,\n\tcontainer,\n\taria,\n\tmedia,\n\tsupports\n};\n\n//#endregion\nexport { animation, aria, blur, breakpoint, colors, container, defaults, dropShadow, ease, font, fontWeight, insetShadow, leading, media, perspective, property, radius, shadow, spacing, supports, text, textShadow, textStrokeWidth, theme, tracking, verticalBreakpoint };", "import { D as h, N as cssMathFnRE, P as cssVarFnRE, V as CONTROL_NO_NEGATIVE, g as hasParseableColor, w as resolveBreakpoints } from \"./utils-BiCtQrPC.mjs\";\nimport { toArray } from \"@unocss/core\";\nimport { calcMaxWidthBySize, createPartClasses, createPseudoClassFunctions, createPseudoClassesAndElements, createTaggedPseudoClasses, getBracket, getStringComponent, hasThemeFn, transformThemeFn, variantGetBracket, variantGetParameter, variantMatcher, variantParentMatcher } from \"@unocss/rule-utils\";\n\n//#region src/variants/aria.ts\nconst variantAria = {\n\tname: \"aria\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"aria-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst aria = h.bracket(match) ?? ctx.theme.aria?.[match] ?? \"\";\n\t\t\tif (aria) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${s}[aria-${aria}]`\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: \"aria-$aria\"\n};\nfunction taggedAria(tagName) {\n\treturn {\n\t\tname: `${tagName}-aria`,\n\t\tmatch(matcher, ctx) {\n\t\t\tconst variant = variantGetParameter(`${tagName}-aria-`, matcher, ctx.generator.config.separators);\n\t\t\tif (variant) {\n\t\t\t\tconst [match, rest, label] = variant;\n\t\t\t\tconst ariaAttribute = h.bracket(match) ?? ctx.theme.aria?.[match] ?? \"\";\n\t\t\t\tif (ariaAttribute) {\n\t\t\t\t\tconst tagSelectorMap = {\n\t\t\t\t\t\tgroup: `&:is(:where(.group${label ? `\\\\/${label}` : \"\"})[aria-${ariaAttribute}] *)`,\n\t\t\t\t\t\tpeer: `&:is(:where(.peer${label ? `\\\\/${label}` : \"\"})[aria-${ariaAttribute}] ~ *)`,\n\t\t\t\t\t\tprevious: `:where(*[aria-${ariaAttribute}] + &)`,\n\t\t\t\t\t\tparent: `:where(*[aria-${ariaAttribute}] > &)`,\n\t\t\t\t\t\thas: `&:has(*[aria-${ariaAttribute}])`,\n\t\t\t\t\t\tin: `:where(*[aria-${ariaAttribute}]) &`\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: rest,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\t\t\tselector: tagSelectorMap[tagName]\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantTaggedAriaAttributes = [\n\ttaggedAria(\"group\"),\n\ttaggedAria(\"peer\"),\n\ttaggedAria(\"parent\"),\n\ttaggedAria(\"previous\"),\n\ttaggedAria(\"has\"),\n\ttaggedAria(\"in\")\n];\n\n//#endregion\n//#region src/variants/breakpoints.ts\nconst sizePseudo = /(max|min)-\\[([^\\]]*)\\]:/;\nfunction variantBreakpoints() {\n\tconst regexCache = {};\n\treturn {\n\t\tname: \"breakpoints\",\n\t\tmatch(matcher, context) {\n\t\t\tif (sizePseudo.test(matcher)) {\n\t\t\t\tconst match = matcher.match(sizePseudo);\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: matcher.replace(match[0], \"\"),\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (${match[1]}-width: ${match[2]})`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst variantEntries = (resolveBreakpoints(context) ?? []).map(({ point, size }, idx) => [\n\t\t\t\tpoint,\n\t\t\t\tsize,\n\t\t\t\tidx\n\t\t\t]);\n\t\t\tfor (const [point, size, idx] of variantEntries) {\n\t\t\t\tif (!regexCache[point]) regexCache[point] = /* @__PURE__ */ new RegExp(`^((?:([al]t-|[<~]|max-))?${point}(?:${context.generator.config.separators.join(\"|\")}))`);\n\t\t\t\tconst match = matcher.match(regexCache[point]);\n\t\t\t\tif (!match) continue;\n\t\t\t\tconst [, pre] = match;\n\t\t\t\tconst m = matcher.slice(pre.length);\n\t\t\t\tif (m === \"container\") continue;\n\t\t\t\tconst isLtPrefix = pre.startsWith(\"lt-\") || pre.startsWith(\"<\") || pre.startsWith(\"max-\");\n\t\t\t\tconst isAtPrefix = pre.startsWith(\"at-\") || pre.startsWith(\"~\");\n\t\t\t\tlet order = 3e3;\n\t\t\t\tif (isLtPrefix) {\n\t\t\t\t\torder -= idx + 1;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: m,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (max-width: ${calcMaxWidthBySize(size)})`,\n\t\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\torder += idx + 1;\n\t\t\t\tif (isAtPrefix && idx < variantEntries.length - 1) return {\n\t\t\t\t\tmatcher: m,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (min-width: ${size}) and (max-width: ${calcMaxWidthBySize(variantEntries[idx + 1][1])})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: m,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (min-width: ${size})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmultiPass: true,\n\t\tautocomplete: \"(at-|lt-|max-|)$breakpoint:\"\n\t};\n}\n\n//#endregion\n//#region src/variants/children.ts\nconst variantChildren = [variantMatcher(\"*\", (input) => ({ selector: `${input.selector} > *` }), { order: -1 }), variantMatcher(\"**\", (input) => ({ selector: `${input.selector} *` }), { order: -1 })];\n\n//#endregion\n//#region src/variants/combinators.ts\nfunction scopeMatcher(name, combinator) {\n\treturn {\n\t\tname: `combinator:${name}`,\n\t\tmatch(matcher, ctx) {\n\t\t\tif (!matcher.startsWith(name)) return;\n\t\t\tconst separators = ctx.generator.config.separators;\n\t\t\tlet body = variantGetBracket(`${name}-`, matcher, separators);\n\t\t\tif (!body) {\n\t\t\t\tfor (const separator of separators) if (matcher.startsWith(`${name}${separator}`)) {\n\t\t\t\t\tbody = [\"\", matcher.slice(name.length + separator.length)];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!body) return;\n\t\t\t}\n\t\t\tlet bracketValue = h.bracket(body[0]) ?? \"\";\n\t\t\tif (bracketValue === \"\") bracketValue = \"*\";\n\t\t\treturn {\n\t\t\t\tmatcher: body[1],\n\t\t\t\tselector: (s) => `${s}${combinator}${bracketValue}`\n\t\t\t};\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantCombinators = [\n\tscopeMatcher(\"all\", \" \"),\n\tscopeMatcher(\"children\", \">\"),\n\tscopeMatcher(\"next\", \"+\"),\n\tscopeMatcher(\"sibling\", \"+\"),\n\tscopeMatcher(\"siblings\", \"~\")\n];\nconst variantSvgCombinators = [variantMatcher(\"svg\", (input) => ({ selector: `${input.selector} svg` }))];\n\n//#endregion\n//#region src/variants/container.ts\nconst variantContainerQuery = {\n\tname: \"@\",\n\tmatch(matcher, ctx) {\n\t\tif (matcher.startsWith(\"@container\")) return;\n\t\tconst variant = variantGetParameter(\"@\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest, label] = variant;\n\t\t\tconst unbracket = h.bracket(match);\n\t\t\tlet container;\n\t\t\tif (unbracket) container = h.numberWithUnit(unbracket);\n\t\t\telse container = ctx.theme.container?.[match] ?? \"\";\n\t\t\tif (container) {\n\t\t\t\tlet order = 1e3 + Object.keys(ctx.theme.container ?? {}).indexOf(match);\n\t\t\t\tif (label) order += 1e3;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: rest,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@container${label ? ` ${label} ` : \" \"}(min-width: ${container})`,\n\t\t\t\t\t\tparentOrder: order\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\tmultiPass: true\n};\n\n//#endregion\n//#region src/variants/dark.ts\nfunction variantColorsMediaOrClass(options = {}) {\n\tif (options?.dark === \"class\" || typeof options.dark === \"object\") {\n\t\tconst { dark = \".dark\", light = \".light\" } = typeof options.dark === \"string\" ? {} : options.dark;\n\t\treturn [variantMatcher(\"dark\", (input) => ({ prefix: `${dark} $$ ${input.prefix}` })), variantMatcher(\"light\", (input) => ({ prefix: `${light} $$ ${input.prefix}` }))];\n\t}\n\treturn [variantParentMatcher(\"dark\", \"@media (prefers-color-scheme: dark)\"), variantParentMatcher(\"light\", \"@media (prefers-color-scheme: light)\")];\n}\nconst variantColorsScheme = [\n\tvariantMatcher(\".dark\", (input) => ({ prefix: `.dark $$ ${input.prefix}` })),\n\tvariantMatcher(\".light\", (input) => ({ prefix: `.light $$ ${input.prefix}` })),\n\tvariantParentMatcher(\"@dark\", \"@media (prefers-color-scheme: dark)\"),\n\tvariantParentMatcher(\"@light\", \"@media (prefers-color-scheme: light)\"),\n\tvariantParentMatcher(\"not-dark\", \"@media not (prefers-color-scheme: dark)\")\n];\n\n//#endregion\n//#region src/variants/data.ts\nconst variantDataAttribute = {\n\tname: \"data\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"data-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst dataAttribute = h.bracket(match) ?? ctx.theme.data?.[match] ?? \"\";\n\t\t\tif (dataAttribute) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${s}[data-${dataAttribute}]`\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true\n};\nfunction taggedData(tagName) {\n\treturn {\n\t\tname: `${tagName}-data`,\n\t\tmatch(matcher, ctx) {\n\t\t\tconst variant = variantGetParameter(`${tagName}-data-`, matcher, ctx.generator.config.separators);\n\t\t\tif (variant) {\n\t\t\t\tconst [match, rest, label] = variant;\n\t\t\t\tconst dataAttribute = h.bracket(match) ?? ctx.theme.data?.[match] ?? \"\";\n\t\t\t\tif (dataAttribute) {\n\t\t\t\t\tconst tagSelectorMap = {\n\t\t\t\t\t\tgroup: `&:is(:where(.group${label ? `\\\\/${label}` : \"\"})[data-${dataAttribute}] *)`,\n\t\t\t\t\t\tpeer: `&:is(:where(.peer${label ? `\\\\/${label}` : \"\"})[data-${dataAttribute}] ~ *)`,\n\t\t\t\t\t\tprevious: `:where(*[data-${dataAttribute}] + &)`,\n\t\t\t\t\t\tparent: `:where(*[data-${dataAttribute}] > &)`,\n\t\t\t\t\t\thas: `&:has(*[data-${dataAttribute}])`,\n\t\t\t\t\t\tin: `:where(*[data-${dataAttribute}]) &`\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmatcher: rest,\n\t\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t\t...input,\n\t\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\t\t\tselector: tagSelectorMap[tagName]\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmultiPass: true\n\t};\n}\nconst variantTaggedDataAttributes = [\n\ttaggedData(\"group\"),\n\ttaggedData(\"peer\"),\n\ttaggedData(\"parent\"),\n\ttaggedData(\"previous\"),\n\ttaggedData(\"has\"),\n\ttaggedData(\"in\")\n];\n\n//#endregion\n//#region src/variants/directions.ts\nconst variantLanguageDirections = [variantMatcher(\"rtl\", (input) => ({ prefix: `[dir=\"rtl\"] $$ ${input.prefix}` })), variantMatcher(\"ltr\", (input) => ({ prefix: `[dir=\"ltr\"] $$ ${input.prefix}` }))];\n\n//#endregion\n//#region src/variants/important.ts\nfunction variantImportant() {\n\tlet re;\n\treturn {\n\t\tname: \"important\",\n\t\tmatch(matcher, ctx) {\n\t\t\tif (!re) re = /* @__PURE__ */ new RegExp(`^(important(?:${ctx.generator.config.separators.join(\"|\")})|!)`);\n\t\t\tlet base;\n\t\t\tconst match = matcher.match(re);\n\t\t\tif (match) base = matcher.slice(match[0].length);\n\t\t\telse if (matcher.endsWith(\"!\")) base = matcher.slice(0, -1);\n\t\t\tif (base) return {\n\t\t\t\tmatcher: base,\n\t\t\t\tbody: (body) => {\n\t\t\t\t\tbody.forEach((v) => {\n\t\t\t\t\t\tif (v[1] != null) v[1] += \" !important\";\n\t\t\t\t\t});\n\t\t\t\t\treturn body;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/variants/inert.ts\nconst variantInert = variantMatcher(\"inert\", (input) => ({\n\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\tselector: \"&:is([inert],[inert] *)\"\n}));\n\n//#endregion\n//#region src/variants/media.ts\nconst variantNoscript = variantParentMatcher(\"noscript\", \"@media (scripting: none)\");\nconst variantScripting = {\n\tname: \"scripting\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter([\"script-\", \"scripting-\"], matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tif ([\n\t\t\t\t\"none\",\n\t\t\t\t\"initial-only\",\n\t\t\t\t\"enabled\"\n\t\t\t].includes(match)) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (scripting: ${match})`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: [\"(scripting|script)-(none|initial-only|enabled)\"]\n};\nconst variantPrint = variantParentMatcher(\"print\", \"@media print\");\nconst variantCustomMedia = {\n\tname: \"media\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"media-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tlet media = h.bracket(match) ?? \"\";\n\t\t\tif (media === \"\") media = ctx.theme.media?.[match] ?? \"\";\n\t\t\tif (media) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media ${media}`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t},\n\tmultiPass: true,\n\tautocomplete: \"media-$media\"\n};\nconst variantContrasts = [variantParentMatcher(\"contrast-more\", \"@media (prefers-contrast: more)\"), variantParentMatcher(\"contrast-less\", \"@media (prefers-contrast: less)\")];\nconst variantMotions = [variantParentMatcher(\"motion-reduce\", \"@media (prefers-reduced-motion: reduce)\"), variantParentMatcher(\"motion-safe\", \"@media (prefers-reduced-motion: no-preference)\")];\nconst variantOrientations = [variantParentMatcher(\"landscape\", \"@media (orientation: landscape)\"), variantParentMatcher(\"portrait\", \"@media (orientation: portrait)\")];\nconst variantForcedColors = [variantParentMatcher(\"forced-colors\", \"@media (forced-colors: active)\")];\n\n//#endregion\n//#region src/variants/misc.ts\nconst variantSelector = {\n\tname: \"selector\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetBracket(\"selector-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst selector = h.bracket(match);\n\t\t\tif (selector) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: () => selector\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantCssLayer = {\n\tname: \"layer\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"layer-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst layer = h.bracket(match) ?? match;\n\t\t\tif (layer) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@layer ${layer}`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantInternalLayer = {\n\tname: \"uno-layer\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"uno-layer-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst layer = h.bracket(match) ?? match;\n\t\t\tif (layer) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tlayer\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantScope = {\n\tname: \"scope\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetBracket(\"scope-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst scope = h.bracket(match);\n\t\t\tif (scope) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\tselector: (s) => `${scope} $$ ${s}`\n\t\t\t};\n\t\t}\n\t}\n};\nconst variantVariables = {\n\tname: \"variables\",\n\tmatch(matcher, ctx) {\n\t\tif (!matcher.startsWith(\"[\")) return;\n\t\tconst [match, rest] = getBracket(matcher, \"[\", \"]\") ?? [];\n\t\tif (!(match && rest)) return;\n\t\tlet newMatcher;\n\t\tfor (const separator of ctx.generator.config.separators) if (rest.startsWith(separator)) {\n\t\t\tnewMatcher = rest.slice(separator.length);\n\t\t\tbreak;\n\t\t}\n\t\tif (newMatcher == null) return;\n\t\tconst variant = h.bracket(match) ?? \"\";\n\t\tconst useParent = variant.startsWith(\"@\");\n\t\tif (!(useParent || variant.includes(\"&\"))) return;\n\t\treturn {\n\t\t\tmatcher: newMatcher,\n\t\t\thandle(input, next) {\n\t\t\t\tconst updates = useParent ? { parent: `${input.parent ? `${input.parent} $$ ` : \"\"}${variant}` } : { selector: variant.replace(/&/g, input.selector) };\n\t\t\t\treturn next({\n\t\t\t\t\t...input,\n\t\t\t\t\t...updates\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t},\n\tmultiPass: true\n};\nconst variantTheme = {\n\tname: \"theme-variables\",\n\tmatch(matcher, ctx) {\n\t\tif (!hasThemeFn(matcher)) return;\n\t\treturn {\n\t\t\tmatcher,\n\t\t\thandle(input, next) {\n\t\t\t\treturn next({\n\t\t\t\t\t...input,\n\t\t\t\t\tentries: JSON.parse(transformThemeFn(JSON.stringify(input.entries), ctx.theme))\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}\n};\nconst variantStickyHover = [variantMatcher(\"@hover\", (input) => ({\n\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@media (hover: hover) and (pointer: fine)`,\n\tselector: `${input.selector || \"\"}:hover`\n}))];\nconst variantImplicitGroup = {\n\tname: \"implicit-group\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"in-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tconst group = h.bracket(match) ?? match;\n\t\t\tif (group) return {\n\t\t\t\tmatcher: rest,\n\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t...input,\n\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}${input.selector}`,\n\t\t\t\t\tselector: `:where(*:is(${group})) &`\n\t\t\t\t})\n\t\t\t};\n\t\t}\n\t}\n};\n\n//#endregion\n//#region src/variants/negative.ts\nconst anchoredNumberRE = /^-?[0-9.]+(?:[a-z]+|%)?$/;\nconst numberRE = /-?[0-9.]+(?:[a-z]+|%)?/;\nconst ignoreProps = [/\\b(opacity|color|flex|backdrop-filter|^filter|^scale|transform|mask-image)\\b/];\nfunction negateMathFunction(value) {\n\tconst match = value.match(cssMathFnRE) || value.match(cssVarFnRE);\n\tif (match) {\n\t\tconst [fnBody, rest] = getStringComponent(`(${match[2]})${match[3]}`, \"(\", \")\", \" \") ?? [];\n\t\tif (fnBody) return `calc(${match[1]}${fnBody} * -1)${rest ? ` ${rest}` : \"\"}`;\n\t}\n}\nconst negateFunctionBodyRE = /\\b(hue-rotate)\\s*(\\(.*)/;\nfunction negateFunctionBody(value) {\n\tconst match = value.match(negateFunctionBodyRE);\n\tif (match) {\n\t\tconst [fnBody, rest] = getStringComponent(match[2], \"(\", \")\", \" \") ?? [];\n\t\tif (fnBody) {\n\t\t\tconst body = anchoredNumberRE.test(fnBody.slice(1, -1)) ? fnBody.replace(numberRE, (i) => i.startsWith(\"-\") ? i.slice(1) : `-${i}`) : `(calc(${fnBody} * -1))`;\n\t\t\treturn `${match[1]}${body}${rest ? ` ${rest}` : \"\"}`;\n\t\t}\n\t}\n}\nconst variantNegative = {\n\tname: \"negative\",\n\tmatch(matcher) {\n\t\tif (!matcher.startsWith(\"-\")) return;\n\t\treturn {\n\t\t\tmatcher: matcher.slice(1),\n\t\t\tbody: (body) => {\n\t\t\t\tif (body.find((v) => v[0] === CONTROL_NO_NEGATIVE)) return;\n\t\t\t\tlet changed = false;\n\t\t\t\tbody.forEach((v) => {\n\t\t\t\t\tif (toArray(v[2]).includes(CONTROL_NO_NEGATIVE)) return;\n\t\t\t\t\tconst value = v[1]?.toString();\n\t\t\t\t\tif (!value || value === \"0\") return;\n\t\t\t\t\tif (ignoreProps.some((i) => i.test(v[0]))) return;\n\t\t\t\t\tconst negatedFn = negateMathFunction(value);\n\t\t\t\t\tif (negatedFn) {\n\t\t\t\t\t\tv[1] = negatedFn;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst negatedBody = negateFunctionBody(value);\n\t\t\t\t\tif (negatedBody) {\n\t\t\t\t\t\tv[1] = negatedBody;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (anchoredNumberRE.test(value)) {\n\t\t\t\t\t\tv[1] = value.replace(numberRE, (i) => i.startsWith(\"-\") ? i.slice(1) : `-${i}`);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (changed) return body;\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/variants/placeholder.ts\nconst placeholderModifier = (input, { theme }) => {\n\tconst m = input.match(/^(.*)\\b(placeholder-)(.+)$/);\n\tif (m) {\n\t\tconst [, pre = \"\", p, body] = m;\n\t\tif (hasParseableColor(body, theme) || hasOpacityValue(body)) return { matcher: `${pre}placeholder-$ ${p}${body}` };\n\t}\n};\nfunction hasOpacityValue(body) {\n\tconst match = body.match(/^op(?:acity)?-?(.+)$/);\n\tif (match && match[1] != null) return h.bracket.percent(match[1]) != null;\n\treturn false;\n}\n\n//#endregion\n//#region src/variants/pseudo.ts\nfunction variantPseudoClassesAndElements() {\n\treturn createPseudoClassesAndElements({\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nfunction variantPseudoClassFunctions() {\n\treturn createPseudoClassFunctions({\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nfunction variantTaggedPseudoClasses(options = {}) {\n\treturn createTaggedPseudoClasses(options, {\n\t\tgetBracket,\n\t\th,\n\t\tvariantGetBracket\n\t});\n}\nconst variantPartClasses = createPartClasses();\n\n//#endregion\n//#region src/variants/startingstyle.ts\nconst variantStartingStyle = {\n\tname: \"starting\",\n\tmatch(matcher) {\n\t\tif (!matcher.startsWith(\"starting:\")) return;\n\t\treturn {\n\t\t\tmatcher: matcher.slice(9),\n\t\t\thandle: (input, next) => next({\n\t\t\t\t...input,\n\t\t\t\tparent: `@starting-style`\n\t\t\t})\n\t\t};\n\t}\n};\n\n//#endregion\n//#region src/variants/supports.ts\nconst variantSupports = {\n\tname: \"supports\",\n\tmatch(matcher, ctx) {\n\t\tconst variant = variantGetParameter(\"supports-\", matcher, ctx.generator.config.separators);\n\t\tif (variant) {\n\t\t\tconst [match, rest] = variant;\n\t\t\tlet supports = h.bracket(match) ?? \"\";\n\t\t\tif (supports === \"\") supports = ctx.theme.supports?.[match] ?? \"\";\n\t\t\tif (supports) {\n\t\t\t\tif (!(supports.startsWith(\"(\") && supports.endsWith(\")\"))) supports = `(${supports})`;\n\t\t\t\treturn {\n\t\t\t\t\tmatcher: rest,\n\t\t\t\t\thandle: (input, next) => next({\n\t\t\t\t\t\t...input,\n\t\t\t\t\t\tparent: `${input.parent ? `${input.parent} $$ ` : \"\"}@supports ${supports}`\n\t\t\t\t\t})\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t},\n\tmultiPass: true\n};\n\n//#endregion\n//#region src/variants/default.ts\nfunction variants(options) {\n\treturn [\n\t\tvariantAria,\n\t\tvariantDataAttribute,\n\t\tvariantCssLayer,\n\t\tvariantSelector,\n\t\tvariantInternalLayer,\n\t\tvariantNegative,\n\t\tvariantStartingStyle,\n\t\tvariantImportant(),\n\t\tvariantSupports,\n\t\tvariantNoscript,\n\t\tvariantScripting,\n\t\tvariantPrint,\n\t\tvariantCustomMedia,\n\t\t...variantContrasts,\n\t\t...variantMotions,\n\t\t...variantOrientations,\n\t\t...variantForcedColors,\n\t\tvariantBreakpoints(),\n\t\t...variantCombinators,\n\t\t...variantSvgCombinators,\n\t\tplaceholderModifier,\n\t\t...variantPseudoClassesAndElements(),\n\t\tvariantPseudoClassFunctions(),\n\t\t...variantTaggedPseudoClasses(options),\n\t\tvariantPartClasses,\n\t\t...variantColorsMediaOrClass(options),\n\t\t...variantColorsScheme,\n\t\t...variantLanguageDirections,\n\t\tvariantScope,\n\t\t...variantChildren,\n\t\tvariantInert,\n\t\tvariantContainerQuery,\n\t\tvariantVariables,\n\t\t...variantTaggedDataAttributes,\n\t\t...variantTaggedAriaAttributes,\n\t\tvariantTheme,\n\t\t...variantStickyHover,\n\t\tvariantImplicitGroup\n\t].flat();\n}\n\n//#endregion\nexport { variantColorsMediaOrClass as A, variantOrientations as C, variantLanguageDirections as D, variantImportant as E, variantChildren as F, variantBreakpoints as I, variantAria as L, variantContainerQuery as M, variantCombinators as N, variantDataAttribute as O, variantSvgCombinators as P, variantTaggedAriaAttributes as R, variantNoscript as S, variantScripting as T, variantVariables as _, variantPseudoClassFunctions as a, variantForcedColors as b, placeholderModifier as c, variantImplicitGroup as d, variantInternalLayer as f, variantTheme as g, variantStickyHover as h, variantPartClasses as i, variantColorsScheme as j, variantTaggedDataAttributes as k, variantNegative as l, variantSelector as m, variantSupports as n, variantPseudoClassesAndElements as o, variantScope as p, variantStartingStyle as r, variantTaggedPseudoClasses as s, variants as t, variantCssLayer as u, variantContrasts as v, variantPrint as w, variantMotions as x, variantCustomMedia as y };", "import { postprocessors } from \"./postprocess.mjs\";\nimport { H as PRESET_NAME, I as globalKeywords, a as themeTracking, f as compressCSS, h as getThemeByKey, n as detectThemeValue, o as trackedProperties, s as trackedTheme } from \"./utils-BiCtQrPC.mjs\";\nimport { rules } from \"./rules.mjs\";\nimport { shortcuts } from \"./shortcuts.mjs\";\nimport { theme } from \"./theme.mjs\";\nimport { t as variants } from \"./variants-jhZqwv4U.mjs\";\nimport { definePreset, escapeSelector, toArray, uniq } from \"@unocss/core\";\nimport { extractorArbitraryVariants } from \"@unocss/extractor-arbitrary-variants\";\nimport { alphaPlaceholdersRE } from \"@unocss/rule-utils\";\n\n//#region src/preflights/property.ts\nfunction property(options) {\n\tif (options.preflights?.property === false) return void 0;\n\tconst propertyConfig = typeof options.preflights?.property === \"object\" ? options.preflights.property : void 0;\n\tconst parentSelector = propertyConfig?.parent !== void 0 ? propertyConfig.parent : \"@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))\";\n\tconst selector = propertyConfig?.selector ?? \"*, ::before, ::after, ::backdrop\";\n\treturn {\n\t\tgetCSS: () => {\n\t\t\tif (trackedProperties.size === 0) return;\n\t\t\tconst css = Array.from(trackedProperties.entries()).map(([property$1, value]) => `${property$1}:${value};`).join(\"\");\n\t\t\treturn parentSelector === false ? `${selector}{${css}}` : `${parentSelector}{${selector}{${css}}}`;\n\t\t},\n\t\tlayer: \"properties\"\n\t};\n}\n\n//#endregion\n//#region src/preflights/reset.ts\nconst resetCSS = `\n/*\n 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n 2. Remove default margins and padding\n 3. Reset all borders.\n*/\n\n*,\n::after,\n::before,\n::backdrop,\n::file-selector-button {\n box-sizing: border-box; /* 1 */\n margin: 0; /* 2 */\n padding: 0; /* 2 */\n border: 0 solid; /* 3 */\n}\n\n/*\n 1. Use a consistent sensible line-height in all browsers.\n 2. Prevent adjustments of font size after orientation changes in iOS.\n 3. Use a more readable tab size.\n 4. Use the user's configured \\`sans\\` font-family by default.\n 5. Use the user's configured \\`sans\\` font-feature-settings by default.\n 6. Use the user's configured \\`sans\\` font-variation-settings by default.\n 7. Disable tap highlights on iOS.\n*/\n\nhtml,\n:host {\n line-height: 1.5; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n tab-size: 4; /* 3 */\n font-family: var(\n --default-font-family,\n ui-sans-serif,\n system-ui,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol',\n 'Noto Color Emoji'\n ); /* 4 */\n font-feature-settings: var(--default-font-featureSettings, normal); /* 5 */\n font-variation-settings: var(--default-font-variationSettings, normal); /* 6 */\n -webkit-tap-highlight-color: transparent; /* 7 */\n}\n\n/*\n 1. Add the correct height in Firefox.\n 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n 3. Reset the default border style to a 1px solid border.\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n border-top-width: 1px; /* 3 */\n}\n\n/*\n Add the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/*\n Remove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/*\n Reset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n}\n\n/*\n Add the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/*\n 1. Use the user's configured \\`mono\\` font-family by default.\n 2. Use the user's configured \\`mono\\` font-feature-settings by default.\n 3. Use the user's configured \\`mono\\` font-variation-settings by default.\n 4. Correct the odd \\`em\\` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family: var(\n --default-monoFont-family,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n 'Liberation Mono',\n 'Courier New',\n monospace\n ); /* 1 */\n font-feature-settings: var(--default-monoFont-featureSettings, normal); /* 2 */\n font-variation-settings: var(--default-monoFont-variationSettings, normal); /* 3 */\n font-size: 1em; /* 4 */\n}\n\n/*\n Add the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/*\n Prevent \\`sub\\` and \\`sup\\` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\n 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n 3. Remove gaps between table borders by default.\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n border-collapse: collapse; /* 3 */\n}\n\n/*\n Use the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n outline: auto;\n}\n\n/*\n Add the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/*\n Add the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/*\n Make lists unstyled by default.\n*/\n\nol,\nul,\nmenu {\n list-style: none;\n}\n\n/*\n 1. Make replaced elements \\`display: block\\` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n 2. Add \\`vertical-align: middle\\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block; /* 1 */\n vertical-align: middle; /* 2 */\n}\n\n/*\n Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n/*\n 1. Inherit font styles in all browsers.\n 2. Remove border radius in all browsers.\n 3. Remove background color in all browsers.\n 4. Ensure consistent opacity for disabled states in all browsers.\n*/\n\nbutton,\ninput,\nselect,\noptgroup,\ntextarea,\n::file-selector-button {\n font: inherit; /* 1 */\n font-feature-settings: inherit; /* 1 */\n font-variation-settings: inherit; /* 1 */\n letter-spacing: inherit; /* 1 */\n color: inherit; /* 1 */\n border-radius: 0; /* 2 */\n background-color: transparent; /* 3 */\n opacity: 1; /* 4 */\n}\n\n/*\n Restore default font weight.\n*/\n\n:where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n}\n\n/*\n Restore indentation.\n*/\n\n:where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n}\n\n/*\n Restore space after button.\n*/\n\n::file-selector-button {\n margin-inline-end: 4px;\n}\n\n/*\n Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n*/\n\n::placeholder {\n opacity: 1;\n}\n\n/*\n Set the default placeholder color to a semi-transparent version of the current text color in browsers that do not\n crash when using \\`color-mix(\u2026)\\` with \\`currentcolor\\`. (https://github.com/tailwindlabs/tailwindcss/issues/17194)\n*/\n\n@supports (not (-webkit-appearance: -apple-pay-button)) /* Not Safari */ or\n (contain-intrinsic-size: 1px) /* Safari 17+ */ {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n}\n\n/*\n Prevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n resize: vertical;\n}\n\n/*\n Remove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/*\n 1. Ensure date/time inputs have the same height when empty in iOS Safari.\n 2. Ensure text alignment can be changed on date/time inputs in iOS Safari.\n*/\n\n::-webkit-date-and-time-value {\n min-height: 1lh; /* 1 */\n text-align: inherit; /* 2 */\n}\n\n/*\n Prevent height from changing on date/time inputs in macOS Safari when the input is set to \\`display: block\\`.\n*/\n\n::-webkit-datetime-edit {\n display: inline-flex;\n}\n\n/*\n Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers.\n*/\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n}\n\n::-webkit-datetime-edit,\n::-webkit-datetime-edit-year-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-minute-field,\n::-webkit-datetime-edit-second-field,\n::-webkit-datetime-edit-millisecond-field,\n::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n}\n\n/*\n Center dropdown marker shown on inputs with paired \\`<datalist>\\`s in Chrome. (https://github.com/tailwindlabs/tailwindcss/issues/18499)\n*/\n\n::-webkit-calendar-picker-indicator {\n line-height: 1;\n}\n\n/*\n Remove the additional \\`:invalid\\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\n/*\n Correct the inability to style the border radius in iOS Safari.\n*/\n\nbutton,\ninput:where([type='button'], [type='reset'], [type='submit']),\n::file-selector-button {\n appearance: button;\n}\n\n/*\n Correct the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n height: auto;\n}\n\n/*\n Make elements with the HTML hidden attribute stay hidden by default.\n*/\n\n[hidden]:where(:not([hidden~='until-found'])) {\n display: none !important;\n}\n`;\nfunction reset(options) {\n\tif (options.preflights?.reset === false) return void 0;\n\treturn {\n\t\tgetCSS: ({ generator }) => {\n\t\t\tthemeTracking(\"font\", \"sans\");\n\t\t\tthemeTracking(\"font\", \"mono\");\n\t\t\tthemeTracking(\"default\", [\"font\", \"family\"]);\n\t\t\tthemeTracking(\"default\", [\"monoFont\", \"family\"]);\n\t\t\treturn compressCSS(resetCSS, generator.config.envMode === \"dev\");\n\t\t},\n\t\tlayer: \"base\"\n\t};\n}\n\n//#endregion\n//#region src/preflights/theme.ts\n/** Exclude output for CSS Variables */\nconst ExcludeCssVarKeys = [\n\t\"spacing\",\n\t\"breakpoint\",\n\t\"verticalBreakpoint\",\n\t\"shadow\",\n\t\"insetShadow\",\n\t\"dropShadow\",\n\t\"textShadow\",\n\t\"animation\",\n\t\"property\",\n\t\"aria\",\n\t\"media\",\n\t\"supports\",\n\t\"containers\"\n];\nfunction getThemeVarsMap(theme$2, keys) {\n\tconst themeMap = new Map([[\"--spacing\", theme$2.spacing.DEFAULT]]);\n\tconst normalizeValue = (value) => value.replace(alphaPlaceholdersRE, \"1\");\n\tfunction process(obj, prefix) {\n\t\tfor (const key in obj) if (Array.isArray(obj[key])) themeMap.set(`--${prefix}-${key}`, normalizeValue(obj[key].join(\",\")));\n\t\telse if (typeof obj[key] === \"object\") process(obj[key], `${prefix}-${key}`);\n\t\telse themeMap.set(`--${prefix}-${key}`, normalizeValue(obj[key]));\n\t}\n\tfor (const key in theme$2) {\n\t\tif (!keys.includes(key)) continue;\n\t\tprocess(theme$2[key], key);\n\t}\n\treturn themeMap;\n}\nfunction theme$1(options) {\n\tconst preflightsTheme = typeof options.preflights?.theme === \"boolean\" || typeof options.preflights?.theme === \"string\" ? { mode: options.preflights.theme ?? \"on-demand\" } : {\n\t\tmode: options.preflights?.theme?.mode ?? \"on-demand\",\n\t\t...options.preflights?.theme\n\t};\n\treturn {\n\t\tlayer: \"theme\",\n\t\tgetCSS(ctx) {\n\t\t\tconst { theme: theme$2, generator } = ctx;\n\t\t\tconst safelist = uniq(generator.config.safelist.flatMap((s) => typeof s === \"function\" ? s(ctx) : s));\n\t\t\tconst { mode, process } = preflightsTheme;\n\t\t\tif (mode === false) return;\n\t\t\tif (safelist.length > 0) for (const s of safelist) {\n\t\t\t\tconst [key, ...prop] = s.trim().split(\":\");\n\t\t\t\tif (key in theme$2 && prop.length <= 1) {\n\t\t\t\t\tconst props = prop.length === 0 ? [\"DEFAULT\"] : prop[0].split(\"-\");\n\t\t\t\t\tconst v = getThemeByKey(theme$2, key, props);\n\t\t\t\t\tif (typeof v === \"string\") {\n\t\t\t\t\t\tthemeTracking(key, props);\n\t\t\t\t\t\tdetectThemeValue(v, theme$2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet deps;\n\t\t\tconst generateCSS = (deps$1) => {\n\t\t\t\tif (process) for (const utility of deps$1) for (const p of toArray(process)) p(utility, ctx);\n\t\t\t\tconst resolvedDeps = deps$1.map(([key, value]) => key && value ? `${escapeSelector(key)}: ${value};` : void 0).filter(Boolean);\n\t\t\t\tif (resolvedDeps.length === 0) return;\n\t\t\t\treturn compressCSS(`\n:root, :host {\n${resolvedDeps.join(\"\\n\")}\n}`, generator.config.envMode === \"dev\");\n\t\t\t};\n\t\t\tif (mode === \"on-demand\") {\n\t\t\t\tif (trackedTheme.size === 0) return void 0;\n\t\t\t\tdeps = Array.from(trackedTheme).map((k) => {\n\t\t\t\t\tconst [key, prop] = k.split(\":\");\n\t\t\t\t\tconst v = getThemeByKey(theme$2, key, prop.split(\"-\"));\n\t\t\t\t\tif (typeof v === \"string\") return [`--${key}${`${key === \"spacing\" && prop === \"DEFAULT\" ? \"\" : `-${prop}`}`}`, v];\n\t\t\t\t}).filter(Boolean);\n\t\t\t} else {\n\t\t\t\tconst keys = Object.keys(theme$2).filter((k) => !ExcludeCssVarKeys.includes(k));\n\t\t\t\tdeps = Array.from(getThemeVarsMap(theme$2, keys));\n\t\t\t}\n\t\t\treturn generateCSS(deps);\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/preflights/index.ts\nconst preflights = (options) => {\n\treturn [\n\t\treset(options),\n\t\ttheme$1(options),\n\t\tproperty(options)\n\t].filter(Boolean);\n};\n\n//#endregion\n//#region src/shorthands.ts\nconst shorthands = {\n\tposition: [\n\t\t\"relative\",\n\t\t\"absolute\",\n\t\t\"fixed\",\n\t\t\"sticky\",\n\t\t\"static\"\n\t],\n\tglobalKeyword: globalKeywords\n};\n\n//#endregion\n//#region src/index.ts\nconst presetWind4 = definePreset((options = {}) => {\n\toptions.dark = options.dark ?? \"class\";\n\toptions.attributifyPseudo = options.attributifyPseudo ?? false;\n\toptions.variablePrefix = options.variablePrefix ?? \"un-\";\n\toptions.important = options.important ?? false;\n\treturn {\n\t\tname: PRESET_NAME,\n\t\trules,\n\t\tshortcuts,\n\t\ttheme,\n\t\tlayers: {\n\t\t\tproperties: -200,\n\t\t\ttheme: -150,\n\t\t\tbase: -100\n\t\t},\n\t\tpreflights: preflights(options),\n\t\tvariants: variants(options),\n\t\tprefix: options.prefix,\n\t\tpostprocess: postprocessors(options),\n\t\textractorDefault: options.arbitraryVariants === false ? void 0 : extractorArbitraryVariants(),\n\t\tautocomplete: { shorthands },\n\t\toptions,\n\t\tconfigResolved() {\n\t\t\ttrackedTheme.clear();\n\t\t\ttrackedProperties.clear();\n\t\t},\n\t\tmeta: {\n\t\t\tthemeDeps: trackedTheme,\n\t\t\tpropertyDeps: trackedProperties\n\t\t}\n\t};\n});\nvar src_default = presetWind4;\n\n//#endregion\nexport { src_default as default, postprocessors, preflights, presetWind4, rules, shortcuts, shorthands, theme, variants };", ":host,\n:host *,\n:host::before,\n:host::after,\n:host *::before,\n:host *::after,\n:host::backdrop,\n:host *::backdrop {\n\n /* Opacity */\n\n --un-bg-opacity: 100%;\n --un-text-opacity: 100%;\n --un-border-opacity: 100%;\n --un-outline-opacity: 100%;\n --un-ring-opacity: 100%;\n --un-divide-opacity: 100%;\n --un-placeholder-opacity: 100%;\n\n\n /* Gradients */\n\n --un-gradient-position: initial;\n --un-gradient-from: #0000;\n --un-gradient-via: #0000;\n --un-gradient-to: #0000;\n --un-gradient-stops: initial;\n --un-gradient-via-stops: initial;\n --un-gradient-from-position: 0%;\n --un-gradient-via-position: 50%;\n --un-gradient-to-position: 100%;\n --un-from-opacity: 100%;\n --un-via-opacity: 100%;\n --un-to-opacity: 100%;\n\n\n /* Ring */\n\n --un-ring-color: initial;\n --un-ring-shadow: 0 0 #0000;\n --un-ring-inset: initial;\n --un-ring-offset-width: 0px;\n --un-ring-offset-color: #fff;\n --un-ring-offset-shadow: 0 0 #0000;\n --un-inset-ring-color: initial;\n --un-inset-ring-shadow: 0 0 #0000;\n\n\n /* Shadow */\n\n --un-shadow: 0 0 #0000;\n --un-shadow-color: initial;\n --un-inset-shadow: 0 0 #0000;\n --un-inset-shadow-color: initial;=\n\n\n /* Border, Outline */\n\n --un-border-style: solid;\n --un-outline-style: solid;\n\n\n /* Font, Letter Spacing */\n\n --un-font-weight: initial;\n --un-tracking: initial;\n\n\n /* Transforms */\n\n --un-translate-x: 0;\n --un-translate-y: 0;\n --un-translate-z: 0;\n --un-rotate-x: rotateX(0);\n --un-rotate-y: rotateY(0);\n --un-rotate-z: rotateZ(0);\n --un-skew-x: skewX(0);\n --un-skew-y: skewY(0);\n --un-scale-x: 1;\n --un-scale-y: 1;\n --un-scale-z: 1;\n\n\n /* Filters */\n\n --un-blur: initial;\n --un-brightness: initial;\n --un-contrast: initial;\n --un-grayscale: initial;\n --un-hue-rotate: initial;\n --un-invert: initial;\n --un-opacity: initial;\n --un-saturate: initial;\n --un-sepia: initial;\n --un-drop-shadow: initial;\n\n\n /* Backdrop */\n\n --un-backdrop-blur: initial;\n --un-backdrop-brightness: initial;\n --un-backdrop-contrast: initial;\n --un-backdrop-grayscale: initial;\n --un-backdrop-hue-rotate: initial;\n --un-backdrop-invert: initial;\n --un-backdrop-opacity: initial;\n --un-backdrop-saturate: initial;\n --un-backdrop-sepia: initial;\n --un-backdrop-drop-shadow: initial;\n\n\n /* Transitions */\n\n --un-duration: initial;\n --un-ease: initial;\n\n\n /* Other */\n\n --un-content: '';\n --un-divide-y-reverse: 0;\n --un-divide-x-reverse: 0;\n --un-space-x-reverse: 0;\n --un-space-y-reverse: 0;\n --un-default-border-color: #e5e7eb;\n}\n\n:host::before,\n:host::after,\n:host *::before,\n:host *::after {\n --un-content: '';\n}\n", "export { default as array } from './array';\nexport { default as cond } from './cond';\nexport { default as date } from './date';\nexport { default as match } from './match';\nexport { default as math } from './math';\nexport { default as media } from './media';\nexport { default as number } from './number';\nexport { default as put } from './put';\nexport { default as string } from './string';\n", "import { Obj } from '@/types';\nimport { defineModule } from '@/lib';\n\n\n// Functions\n\nexport function op(state: any): any[] | boolean {\n const args: any[] = state?.args ?? [];\n const [ op, arr, prop ] = args;\n\n\n // Defining he functions\n\n const destruct = <T extends any = any>(val: Obj[], _prop: string): T[] => {\n const items = _prop?.split('.') ?? [];\n const result: T[] = [];\n\n\n // Iterating for each item\n\n for (const obj of val) {\n let cursor: any = obj;\n\n for (const item of items) cursor = cursor[item];\n\n result.push(cursor);\n }\n\n\n return result;\n };\n\n\n // Applying the operation\n\n switch (op) {\n case 'destruct':\n return destruct(arr, prop);\n case 'check':\n return Array.isArray(arr);\n default:\n return op;\n }\n}\n\nexport function destruct(state: any): any[] {\n const args: any[] = state?.args ?? [];\n const [ arr, prop ] = args;\n\n return op({ ...state, args: [ 'destruct', arr, prop ] }) as any[];\n}\n\nexport function check(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ arr ] = args;\n\n return op({ ...state, args: [ 'check', arr ] }) as boolean;\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n destruct: destruct,\n check: check,\n __default: op,\n },\n});\n", "import { Obj } from '@/types';\nimport { audit, defineModule } from '@/lib';\nimport { TemplateSyntaxError } from '@/errors';\n\n\n// Functions\n\nexport function op(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const namedArgs: Obj = state?.namedArgs ?? {};\n const [ arg1, arg2OrOp, arg3, ...rest ] = args;\n const { soft } = namedArgs;\n\n\n // If the 'not' was passed\n\n if (arg1 === 'not') return !arg2OrOp;\n\n\n // If the 'soft' was passed\n\n if (soft) {\n switch (arg2OrOp) {\n case 'equal':\n return arg1 == arg3;\n case 'notEqual':\n return arg1 != arg3;\n default:\n throw new TemplateSyntaxError('Condition: Unknown operation: ' + audit(arg2OrOp));\n }\n }\n\n\n // Defining the functions\n\n const and = <T = any>(...a: T[]): T => a.reduce((r, x) => r && x);\n\n const or = <T = any>(...a: T[]): T => a.reduce((r, x) => r || x);\n\n\n // Applying the operation\n\n switch (arg2OrOp) {\n case 'equal':\n return arg1 === arg3;\n case 'notEqual':\n return arg1 !== arg3;\n case 'and':\n return and(arg1, arg3, ...rest);\n case 'or':\n return or(arg1, arg3, ...rest);\n case 'greater':\n return Number(arg1) > Number(arg3);\n case 'less':\n return Number(arg1) < Number(arg3);\n default:\n throw new TemplateSyntaxError('Condition: Unknown operation: ' + audit(arg2OrOp));\n }\n}\n\nexport function not(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a ] = args;\n\n return op({ ...state, args: [ 'not', a ] });\n}\n\nexport function equal(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'equal', b ] });\n}\n\nexport function notEqual(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'notEqual', b ] });\n}\n\nexport function and(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, ...rest ] = args;\n\n return op({ ...state, args: [ a, 'and', ...rest ] });\n}\n\nexport function or(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, ...rest ] = args;\n\n return op({ ...state, args: [ a, 'or', ...rest ] });\n}\n\nexport function greater(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'greater', b ] });\n}\n\nexport function less(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'less', b ] });\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n not: not,\n equal: equal,\n notEqual: notEqual,\n and: and,\n or: or,\n greater: greater,\n less: less,\n __default: op,\n },\n});\n", "import { DateTime } from 'luxon';\nimport { Obj } from '@/types';\nimport { audit, ensureDate, defineModule, isset } from '@/lib';\nimport { TemplateSyntaxError } from '@/errors';\n\n\n// Functions\n\nexport function op(state: any): DateTime | string | number | null {\n const flext: Obj = state?.flext ?? {};\n const args: any[] = state?.args ?? [];\n const namedArgs: Obj = state?.namedArgs ?? {};\n const [ date, op ] = args;\n const { padding, genitive, timeZone, lang } = namedArgs;\n\n\n // Doing some checks\n\n if (!date) return null;\n\n\n // Getting the date\n\n let newDate: DateTime = DateTime.local();\n\n if (date !== 'now')\n newDate = DateTime.fromJSDate(ensureDate(date));\n\n if (timeZone || flext?.timeZone)\n newDate = newDate.setZone(timeZone ?? flext?.timeZone);\n\n if (lang || flext?.lang)\n newDate = newDate.setLocale(lang ?? flext?.lang);\n\n\n // Defining the functions\n\n const padStart = (val: string|number, _padding: string|number = 2): string => String(val || '').padStart(Number(_padding), '0');\n\n\n // If the 'pad' was passed\n\n if (isset(padding)) {\n switch (op) {\n case 'seconds':\n return padStart(newDate.second, padding);\n case 'minutes':\n return padStart(newDate.minute, padding);\n case 'hours':\n return padStart(newDate.hour, padding);\n case 'day':\n return padStart(newDate.day, padding);\n case 'month':\n return padStart(newDate.month, padding);\n case 'year':\n return padStart(newDate.year, 4);\n default:\n throw new TemplateSyntaxError(`Date: Operation ${audit(op)} is not compatible with argument 'padding'`);\n }\n }\n\n if (genitive) {\n switch (op) {\n case 'monthText':\n const dateText = newDate.toLocaleString({ day: 'numeric', month: 'long' });\n const monthText = dateText.replace(/[^\\p{L}]/gu, ''); // TODO: kr: Costyl to work with thw US dates\n\n return monthText.toLowerCase();\n default:\n throw new TemplateSyntaxError(`Date: Operation ${audit(op)} is not compatible with argument 'genitive'`);\n }\n }\n\n\n // Applying the operation\n\n switch (op) {\n case 'seconds':\n return newDate.second;\n case 'minutes':\n return newDate.minute;\n case 'hours':\n return newDate.hour;\n case 'day':\n return newDate.day;\n case 'month':\n return newDate.month;\n case 'monthText':\n const monthText = newDate.toLocaleString({ month: 'long' });\n return monthText.toLowerCase();\n case 'year':\n return newDate.year;\n case 'format':\n return newDate.toLocaleString();\n case 'text':\n return newDate.toLocaleString({ day: 'numeric', month: 'long', year: 'numeric' });\n case 'unix':\n return newDate.toMillis();\n case 'iso':\n return newDate.toISOTime();\n default:\n return newDate;\n }\n}\n\nexport function now(state: any): DateTime {\n return op({ ...state, args: [ 'now' ] }) as DateTime;\n}\n\nexport function seconds(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'seconds' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function minutes(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'minutes' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function hours(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'hours' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function day(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'day' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function month(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'month' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function monthText(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const genitive = !namedArgs?.nominative;\n\n return op({\n ...state,\n\n args: [ date, 'monthText' ],\n namedArgs: { ...namedArgs, genitive },\n });\n}\n\nexport function year(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n const namedArgs: Obj = state?.namedArgs ?? {};\n const padding = namedArgs?.padding ?? 2;\n\n return op({\n ...state,\n\n args: [ date, 'year' ],\n namedArgs: { ...namedArgs, padding },\n });\n}\n\nexport function format(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n\n return op({ ...state, args: [ date, 'format' ] });\n}\n\nexport function text(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n\n return op({ ...state, args: [ date, 'text' ] });\n}\n\nexport function unix(state: any): number {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n\n return op({ ...state, args: [ date, 'unix' ] }) as number;\n}\n\nexport function iso(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ date ] = args;\n\n return op({ ...state, args: [ date, 'iso' ] }) as string;\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n now: now,\n seconds: seconds,\n minutes: minutes,\n hours: hours,\n day: day,\n month: month,\n monthText: monthText,\n year: year,\n format: format,\n text: text,\n unix: unix,\n iso: iso,\n __default: op,\n },\n});\n", "import { defineModule } from '@/lib';\n\n\n// Functions\n\nexport function _match(state: any): any {\n const args: any[] = state?.args ?? [];\n const [ value ] = args;\n const self = state?.self ?? null;\n const render = state?.getContent ?? null;\n\n\n // Setting the match data\n\n self.__flext_match_value = value;\n self.__flext_match_isCompleted = false;\n\n\n return render();\n}\n\nexport function _case(state: any): any {\n const args: any[] = state?.args ?? [];\n const self = state?.self ?? null;\n const value = self.__flext_match_value ?? null;\n const render = state?.getContent ?? null;\n\n\n // Iterating for each value\n\n if (!self.__flext_match_isCompleted) for (const valueRef of args) if (value === valueRef) {\n self.__flext_match_isCompleted = true;\n return render();\n }\n\n\n return '';\n}\n\nexport function _fallback(state: any): any {\n const self = state?.self ?? null;\n const value = self.__flext_match_value ?? null;\n\n return _case({ ...state, args: [ value ] });\n}\n\n\nexport default defineModule({\n helpers: {\n case: _case,\n fallback: _fallback,\n __default: _match,\n },\n});\n", "import {audit, sum, defineModule, isNumber} from '@/lib';\nimport {BaseError, TemplateSyntaxError} from '@/errors';\n\n\n// Types\n\nexport type Arg = string|number|null|undefined;\n\nexport type FlattenFuncArg = number | number[];\n\n\n// Functions\n\nexport function op(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, op, b, ...rest ] = args;\n\n\n // Defining the functions\n\n const handle = (..._args: Arg[]): number => {\n const [ mathOp, ...mathArgs ] = _args;\n const handle = Math[mathOp] ?? null;\n\n if (handle)\n return handle(...mathArgs);\n else\n throw new TemplateSyntaxError('Math: Unknown operation: ' + audit(mathOp));\n }\n\n const flatten = (..._args: FlattenFuncArg[] | any[]): number[] => {\n const result: number[] = [];\n\n for (const arg of _args) {\n if (isNumber(arg))\n result.push(arg);\n else if (Array.isArray(arg) && arg.every(isNumber))\n result.push(...arg);\n else\n throw new BaseError('Math: Unable to sum: The given arguments are not numbers: ' + audit(_args));\n }\n\n return result;\n };\n\n\n // Applying the operation\n\n switch (op) {\n case 'plus':\n case 'sum':\n return sum(...flatten(a, b || 0, ...rest));\n case 'minus':\n return Number(a) - Number(b || 0);\n case 'multiply':\n return Number(a) * Number(b || 1);\n case 'divide':\n return Number(a) / Number(b || 1);\n case 'intDivide':\n return Number(a) % Number(b || 1);\n case 'power':\n return Number(a) ** Number(b || 1);\n default:\n return handle(...args);\n }\n}\n\nexport function plus(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b, ...rest ] = args;\n\n return op({ ...state, args: [ a, 'plus', b, ...rest ] });\n}\n\nexport function _sum(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b, ...rest ] = args;\n\n return op({ ...state, args: [ a, 'sum', b, ...rest ] });\n}\n\nexport function minus(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'minus', b ] });\n}\n\nexport function multiply(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'multiply', b ] });\n}\n\nexport function divide(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'divide', b ] });\n}\n\nexport function intDivide(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'intDivide', b ] });\n}\n\nexport function power(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n return op({ ...state, args: [ a, 'power', b ] });\n}\n\nexport function round(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, _op ] = args;\n\n\n // Defining the function\n\n const handle = (__op: string, val: Arg): number => op({ ...state, args: [ __op, val ] });\n\n\n // If the operation is not defined\n\n if (!_op) return handle('round', a);\n\n\n // Applying the operation\n\n switch (_op) {\n case 'floor':\n return handle('floor', a);\n case 'ceil':\n return handle('ceil', a);\n case 'trunc':\n return handle('trunc', a);\n default:\n throw new TemplateSyntaxError('Math: Unknown operation: ' + audit(_op));\n }\n}\n\nexport function percent(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a, b ] = args;\n\n if (b === undefined || b === null) {\n return op({ ...state, args: [ 'percent', a ] });\n } else {\n return op({ ...state, args: [ a, 'divide', b, 'multiply', 100 ] });\n }\n}\n\nexport function sqrt(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a ] = args;\n\n return op({ ...state, args: [ 'sqrt', a ] });\n}\n\nexport function cbrt(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a ] = args;\n\n return op({ ...state, args: [ 'cbrt', a ] });\n}\n\nexport function abs(state: any): number {\n const args: Arg[] = state?.args ?? [];\n const [ a ] = args;\n\n return op({ ...state, args: [ 'abs', a ] });\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n plus: plus,\n sum: _sum,\n minus: minus,\n mul: multiply,\n multiply: multiply,\n div: divide,\n divide: divide,\n intDivide: intDivide,\n pow: power,\n power: power,\n round: round,\n sqrt: sqrt,\n cbrt: cbrt,\n abs: abs,\n __default: op,\n },\n});\n", "import { Obj } from '@/types';\nimport { defineModule } from '@/lib';\nimport { TemplateError } from '@/errors';\n\n\n// Functions\n\nexport function url(state: any): string {\n const flext: Obj = state?.flext ?? {};\n const args: any[] = state?.args ?? [];\n const [ name ] = args;\n const assets = flext?.assets ?? {};\n const asset = assets[name] ?? null;\n\n if (asset)\n return URL.createObjectURL(asset);\n else\n throw new TemplateError(`Media: Unable to get the asset: Asset '${name}' does not exist`);\n}\n\n\nexport default defineModule({\n helpers: {\n url: url,\n __default: url,\n },\n});\n", "import { Obj } from '@/types';\nimport { isNumber, defineModule } from '@/lib';\nimport writtenNumber from 'written-number';\nimport kkKz from './locales/kkKz.json';\nimport localeNames from './localeNames.json';\n\n\n// Constants\n\nexport const DEFAULT_LANG = 'en';\n\nexport const LOCALES: Obj = {\n 'kk-KZ': kkKz,\n};\n\n\n// Functions\n\nexport function op(state: any): number|string|boolean {\n const flext: Obj = state?.flext ?? {};\n const args: any[] = state?.args ?? [];\n const namedArgs: Obj = state?.namedArgs ?? {};\n const [ op, number ] = args;\n const { lang, strict } = namedArgs;\n\n\n // Defining the functions\n\n const locale = (lang: string): string | Obj | null => {\n return localeNames[lang] ?? LOCALES[lang] ?? null;\n };\n\n\n // Getting the locale\n\n const newLang = locale(lang) ?? locale(flext?.lang) ?? DEFAULT_LANG;\n\n\n // Applying the operation\n\n switch (op) {\n case 'text':\n return writtenNumber(Number(number), { lang: newLang });\n case 'check':\n return strict ? typeof number === 'number' : isNumber(number);\n default:\n return Number(op);\n }\n}\n\nexport function text(state: any): string {\n const args: any[] = state?.args ?? [];\n const [ number ] = args;\n\n return String(op({ ...state, args: [ 'text', number ] }));\n}\n\nexport function check(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ number ] = args;\n\n return op({ ...state, args: [ 'check', number ] }) as boolean;\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n text: text,\n check: check,\n __default: op,\n },\n});\n", "{\n \"useLongScale\": false,\n \"baseSeparator\": \" \",\n \"unitSeparator\": \" \",\n \"base\": {\n \"0\": \"\u043D\u04E9\u043B\",\n \"1\": \"\u0431\u0456\u0440\",\n \"2\": \"\u0435\u043A\u0456\",\n \"3\": \"\u04AF\u0448\",\n \"4\": \"\u0442\u04E9\u0440\u0442\",\n \"5\": \"\u0431\u0435\u0441\",\n \"6\": \"\u0430\u043B\u0442\u044B\",\n \"7\": \"\u0436\u0435\u0442\u0456\",\n \"8\": \"\u0441\u0435\u0433\u0456\u0437\",\n \"9\": \"\u0442\u043E\u0493\u044B\u0437\",\n \"10\": \"\u043E\u043D\",\n \"11\": \"\u043E\u043D \u0431\u0456\u0440\",\n \"12\": \"\u043E\u043D \u0435\u043A\u0456\",\n \"13\": \"\u043E\u043D \u04AF\u0448\",\n \"14\": \"\u043E\u043D \u0442\u04E9\u0440\u0442\",\n \"15\": \"\u043E\u043D \u0431\u0435\u0441\",\n \"16\": \"\u043E\u043D \u0430\u043B\u0442\u044B\",\n \"17\": \"\u043E\u043D \u0436\u0435\u0442\u0456\",\n \"18\": \"\u043E\u043D \u0441\u0435\u0433\u0456\u0437\",\n \"19\": \"\u043E\u043D \u0442\u043E\u0493\u044B\u0437\",\n \"20\": \"\u0436\u0438\u044B\u0440\u043C\u0430\",\n \"30\": \"\u043E\u0442\u044B\u0437\",\n \"40\": \"\u049B\u044B\u0440\u044B\u049B\",\n \"50\": \"\u0435\u043B\u0443\",\n \"60\": \"\u0430\u043B\u043F\u044B\u0441\",\n \"70\": \"\u0436\u0435\u0442\u043F\u0456\u0441\",\n \"80\": \"\u0441\u0435\u043A\u0441\u0435\u043D\",\n \"90\": \"\u0442\u043E\u049B\u0441\u0430\u043D\",\n \"100\": \"\u0436\u04AF\u0437\",\n \"200\": \"\u0435\u043A\u0456 \u0436\u04AF\u0437\",\n \"300\": \"\u04AF\u0448 \u0436\u04AF\u0437\",\n \"400\": \"\u0442\u04E9\u0440\u0442 \u0436\u04AF\u0437\",\n \"500\": \"\u0431\u0435\u0441 \u0436\u04AF\u0437\",\n \"600\": \"\u0430\u043B\u0442\u044B \u0436\u04AF\u0437\",\n \"700\": \"\u0436\u0435\u0442\u0456 \u0436\u04AF\u0437\",\n \"800\": \"\u0441\u0435\u0433\u0456\u0437 \u0436\u04AF\u0437\",\n \"900\": \"\u0442\u043E\u0493\u044B\u0437 \u0436\u04AF\u0437\"\n },\n \"alternativeBase\": {},\n \"units\": [\n {\n \"useBaseInstead\": true,\n \"useBaseException\": []\n },\n {\n \"singular\": \"\u043C\u044B\u04A3\",\n \"plural\": \"\u043C\u044B\u04A3\"\n },\n {\n \"singular\": \"\u043C\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043C\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u043C\u0438\u043B\u043B\u0438\u0430\u0440\u0434\",\n \"plural\": \"\u043C\u0438\u043B\u043B\u0438\u0430\u0440\u0434\"\n },\n {\n \"singular\": \"\u0442\u0440\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u0442\u0440\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043A\u0432\u0430\u0434\u0440\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u043A\u0432\u0438\u043D\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043A\u0432\u0438\u043D\u0442\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u0441\u0435\u043A\u0441\u0442\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u0441\u0435\u043F\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u0441\u0435\u043F\u0442\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u043E\u043A\u0442\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043E\u043A\u0442\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u043D\u043E\u043D\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u043D\u043E\u043D\u0438\u043B\u043B\u0438\u043E\u043D\"\n },\n {\n \"singular\": \"\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\",\n \"plural\": \"\u0434\u0435\u0446\u0438\u043B\u043B\u0438\u043E\u043D\"\n }\n ],\n \"unitExceptions\": {\n \"1000\": \"\u043C\u044B\u04A3\"\n }\n}", "{\n \"ar-EG\": \"ar\",\n \"az-AZ\": \"az\",\n \"en-IN\": \"enIndian\",\n \"en-GB\": \"uk\",\n \"en-US\": \"en\",\n \"eo\": \"eo\",\n \"es-ES\": \"es\",\n \"fr-FR\": \"fr\",\n \"id-ID\": \"id\",\n \"pt-BR\": \"pt\",\n \"pt-PT\": \"ptPT\",\n \"ru-RU\": \"ru\",\n \"tr-TR\": \"tr\",\n \"vi-VN\": \"vi\"\n}", "import { SafeString } from 'handlebars';\nimport { Obj } from '@/types';\nimport { defineModule, isNumber, inarr, ensureDate } from '@/lib';\nimport { format } from '../date';\n\n\n// Contents\n\nexport const DEFAULT_COLOR = 'text-blue-500';\n\n\n// Functions\n\nexport function put(state: any): string {\n const args = state?.args ?? [];\n const [ val, fallback ] = args;\n const date = ensureDate(val, false);\n\n if (date && !isNumber(val) && !inarr(val, true, false))\n return format(date);\n else\n return val ?? fallback ?? '';\n}\n\nexport function putWithColor(state: any): SafeString {\n const namedArgs: Obj = state?.namedArgs ?? {};\n const color = namedArgs?.color ?? DEFAULT_COLOR;\n\n if (color)\n return new SafeString(`<span class=\"${color}\">${put(state)}</span>`);\n else\n return new SafeString(state);\n}\n\n\nexport default defineModule({\n helpers: {\n noColor: put,\n __default: putWithColor,\n },\n});\n", "import { defineModule } from '@/lib';\n\n\n// Functions\n\nexport function op(state: any): any[] | boolean {\n const args: any[] = state?.args ?? [];\n const [ op, str ] = args;\n\n\n // Applying the operation\n\n switch (op) {\n case 'json':\n return JSON.parse(str);\n case 'check':\n return typeof str === 'string';\n default:\n return op;\n }\n}\n\nexport function json(state: any): any[] {\n const args: any[] = state?.args ?? [];\n const [ str ] = args;\n\n return op({ ...state, args: [ 'json', str ] }) as any[];\n}\n\nexport function check(state: any): boolean {\n const args: any[] = state?.args ?? [];\n const [ str ] = args;\n\n return op({ ...state, args: [ 'check', str ] }) as boolean;\n}\n\n\nexport default defineModule({\n helpers: {\n op: op,\n json: json,\n check: check,\n __default: op,\n },\n});\n", "import { AST } from '@handlebars/parser';\nimport { Obj, Macro, Field, FieldType, FieldValue, FieldValueOption, DataModel, DataModelNode, MetadataModelNode, CollectorFilterHandler, GetTemplateAstHandler, GetTemplateTitleHandler, GetTemplateMacroHandler } from '@/types';\nimport { BaseThrowable, BaseWarning, BaseError, PotentialLoopError, TemplateError, TemplateSyntaxError, TemplateDataValidationError } from '@/errors';\nimport * as types from '@/types';\nimport * as lib from '@/lib';\nimport * as errors from '@/errors';\nimport * as modules from './modules';\n\n\n// Constants\n\nexport const DEFAULT_HELPER_NAME = '__default';\n\nexport const DEFAULT_MODEL_DEPTH = 10;\n\n\n// Classes\n\nexport class SimpleFlext {\n declare public ast: AST.Program;\n declare public data: types.Obj;\n declare public helpers: types.Obj;\n public onGetProcessed: types.GetProcessedTemplateHandler = defaultGetProcessed;\n public onGetAst: types.GetTemplateAstHandler = lib.getAst;\n\n constructor(val: string|null = null, data: types.Obj = {}, helpers: types.Obj = {}) {\n if (val) this.setTemplate(val);\n this.setData({ ...this.data, ...data });\n this.setHelpers({ ...this.helpers, ...helpers});\n }\n\n public setTemplate(val: string): this {\n\n // Clearing the data\n\n this.data = {};\n this.helpers = {};\n\n\n // Getting the AST\n\n const template = this.onGetProcessed(val);\n\n this.ast = this.onGetAst(template);\n\n\n return this;\n }\n\n public setData(val: types.Obj): this {\n this.data = val;\n return this;\n }\n\n public setHelpers(val: types.Obj): this {\n this.helpers = val;\n return this;\n }\n\n public addHelper(name: string, val: any): this {\n this.helpers[name] = val;\n return this;\n }\n\n public setOnGetProcessed(val: types.GetProcessedTemplateHandler): this {\n this.onGetProcessed = val;\n return this;\n }\n\n public setOnGetAst(val: types.GetTemplateAstHandler): this {\n this.onGetAst = val;\n return this;\n }\n\n public getHtml(data?: types.Obj | null, helpers?: types.Obj | null): string {\n const template = lib.getTemplate(this.ast);\n\n\n // Doing some checks\n\n if (!template)\n throw new errors.BaseError('Flext: Unable to get HTML: No template');\n\n\n return lib.getHtml(\n template,\n data ?? this.data,\n helpers ?? this.helpers,\n );\n }\n\n public async getCss(data?: types.Obj | null, options: types.Obj = {}): Promise<string> {\n const template = lib.getTemplate(this.ast);\n const helpersObj = options?.helpers ?? {};\n const helpers = { ...this.helpers, ...helpersObj };\n\n\n // Doing some checks\n\n if (!template)\n throw new errors.BaseError('Flext: Unable to get CSS: No template');\n\n\n return await lib.getCss(\n template,\n data ?? this.data,\n { ...options, helpers },\n );\n }\n\n public get html(): string {\n return this.getHtml();\n }\n}\n\nexport class Flext extends SimpleFlext {\n declare public version: string;\n declare public lang: string;\n declare public title: string;\n declare public timeZone: string;\n declare public lineHeight: number;\n declare public assets: types.Obj<Blob>;\n declare public fields: types.Field[];\n public onGetTitle: types.GetTemplateTitleHandler = lib.getHtmlH1;\n public onGetMacro: types.GetTemplateMacroHandler = lib.getMacros;\n\n constructor(val: string|null = null, data: types.Obj = {}, helpers: types.Obj = {}) {\n super(null, data, helpers);\n\n if (val) this.setTemplate(val);\n this.setData({ ...this.data, ...data });\n this.setHelpers({ ...this.helpers, ...helpers});\n }\n\n public useModule(...val: string[]): this {\n for (const name of val)\n this.addModule(name, modules[name]);\n\n return this;\n }\n\n public setTemplate(val: string): this {\n\n // Setting the template\n\n super.setTemplate(val);\n\n\n // Defining the variables\n\n const [ titleStr ] = this.onGetTitle(this.ast);\n\n const macros = this.onGetMacro(this.ast);\n\n\n // Defining the functions\n\n const getAll = (..._val: string[]): types.Macro[] | null => macros?.filter(m => lib.inarr(m?.name, ..._val)) ?? null;\n\n const get = (_val: string): string|null => {\n const [ macro ] = getAll(_val);\n const [ param ] = macro?.params ?? [];\n\n return param?.value ?? null;\n };\n\n\n // Getting the data\n\n const version = get('v');\n const lang = get('lang');\n const title = get('title');\n const timeZone = get('timeZone');\n const modulesMacros = getAll('use');\n const lineHeight = get('lineHeight');\n const optionMacros = getAll('option');\n const fieldMacros = getAll('group', 'field');\n\n\n // Getting the fields\n\n const fieldValueOptions = optionMacros?.map(lib.macroToFieldValueOption) ?? null;\n const fields = fieldMacros?.map(lib.macroToField) ?? [];\n\n lib.applyValueOptionsToFields(fieldValueOptions, fields);\n lib.applyAbsoluteOrderToFields(fields);\n\n\n // Getting the field groups\n\n const fieldGroups = fields.filter(f => f?.extra?.macroName === 'group');\n\n for (const fieldGroup of fieldGroups)\n fieldGroup.type = 'object';\n\n\n // Setting the data\n\n if (version)\n this.setVersion(version);\n\n if (lang)\n this.setLang(lang);\n\n if (title || titleStr)\n this.setTitle(title ?? lib.ensureTitle(titleStr));\n\n if (timeZone)\n this.setTimeZone(timeZone);\n\n if (lineHeight)\n this.setLineHeight(Number(lineHeight));\n\n if (fields && fields?.length)\n this.setFields(fields);\n\n\n // Using the modules\n\n const moduleNames = modulesMacros.map(lib.macroToModuleNames).flat();\n\n this.useModule(...moduleNames);\n\n\n return this;\n }\n\n public setVersion(val: string): this {\n this.version = val;\n return this;\n }\n\n public setLang(val: string): this {\n this.lang = val;\n return this;\n }\n\n public setTitle(val: string): this {\n this.title = val;\n return this;\n }\n\n public setTimeZone(val: string): this {\n this.timeZone = val;\n return this;\n }\n\n public setLineHeight(val: number): this {\n this.lineHeight = val;\n return this;\n }\n\n public setAssets(val: types.Obj<Blob>): this {\n this.assets = val;\n return this;\n }\n\n public addAsset(name: string, val: Blob): this {\n this.assets[name] = val;\n return this;\n }\n\n public setFields(val: types.Field[]): this {\n this.fields = val;\n return this;\n }\n\n public addModule(name: string, val: any): this {\n const helpers = val?.helpers ?? {};\n\n\n // Iterating for each helper\n\n for (const helperName in helpers) {\n if (!lib.has(helpers, helperName)) continue;\n\n\n // Getting the data\n\n const handle = helpers[helperName];\n\n const isDefault = helperName === DEFAULT_HELPER_NAME;\n\n\n // Adding the helper\n\n const flext = this;\n\n const helper = function (...args1: any[]): any {\n const args = args1?.slice(0, -1) ?? [];\n const options = args1[args1.length - 1] ?? {};\n const namedArgs = options?.hash ?? {};\n // @ts-ignore\n const self = this;\n const getContent = () => options?.fn(self) ?? null;\n\n return handle({ flext, args, options, namedArgs, self, getContent });\n }\n\n if (isDefault)\n this.addHelper(name, helper);\n else\n this.addHelper(name + ':' + helperName, helper);\n }\n\n\n return this;\n }\n\n public setOnGetTitle(val: types.GetTemplateTitleHandler): this {\n this.onGetTitle = val;\n return this;\n }\n\n public setOnGetMacro(val: types.GetTemplateMacroHandler): this {\n this.onGetMacro = val;\n return this;\n }\n\n public getDataModel(depth: number = DEFAULT_MODEL_DEPTH): types.MetadataModelNode[] {\n\n // Defining the functions\n\n /**\n * TODO: kr: Costyl: Detects if it is a helper call (like 'put:noColor')\n */\n const isHelper = (node: types.DataModelNode): boolean => {\n for (const helperName in this.helpers) {\n if (!lib.has(this.helpers, helperName))\n continue;\n else if (node?.name === helperName)\n return true;\n }\n\n return false;\n }\n\n /**\n * TODO: kr: Costyl: Filters the helper calls (like 'put:noColor')\n */\n const isValid = (node: types.DataModelNode): boolean => !isHelper(node);\n\n const dataModelNodeToMetadata = (node: types.DataModelNode): types.MetadataModelNode => lib.dataModelNodeToMetadata(node, this.fields, {}, depth);\n\n\n // Getting the nodes\n\n const model = lib.getDataModel(this.ast);\n const nodes: types.DataModelNode[] = model?.$ ?? [];\n\n\n return nodes.filter(isValid).map(dataModelNodeToMetadata);\n }\n\n public getValidationErrors(data?: types.Obj | null, depth: number = DEFAULT_MODEL_DEPTH): errors.TemplateDataValidationError[] {\n return lib.getTemplateValidationErrorsByMetadata(data ?? this.data, this.model, depth);\n }\n\n public getIsValid(data?: types.Obj | null, depth: number = DEFAULT_MODEL_DEPTH): boolean {\n const errors = this.getValidationErrors(data ?? this.data, depth);\n return !errors?.length;\n }\n\n public get model(): types.MetadataModelNode[] {\n return this.getDataModel();\n }\n\n public get validationErrors(): errors.TemplateDataValidationError[] {\n return this.getValidationErrors();\n }\n\n public get errors(): errors.BaseError[] {\n return this.validationErrors;\n }\n\n public get isValid(): boolean {\n return this.getIsValid();\n }\n}\n\n\n// Functions\n\nexport function defaultGetProcessed(val: string): string {\n return val;\n}\n\n\nexport default Flext;\n\nexport {\n Obj,\n Macro,\n Field,\n FieldType,\n FieldValue,\n FieldValueOption,\n DataModel,\n DataModelNode,\n MetadataModelNode,\n CollectorFilterHandler,\n GetTemplateAstHandler,\n GetTemplateTitleHandler,\n GetTemplateMacroHandler,\n\n BaseThrowable,\n BaseWarning,\n BaseError,\n PotentialLoopError,\n TemplateError,\n TemplateSyntaxError,\n TemplateDataValidationError,\n\n types,\n lib,\n errors,\n modules,\n};\n"],
5
+ "mappings": "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Y,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,EAC3e,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GA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E,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAC9/V,eAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EACjM,WAAY,SAAqBG,EAAKC,EAAM,CACxC,MAAM,IAAI,MAAMD,CAAG,GAEvB,MAAO,SAAeE,EAAO,CACzB,IAAIC,EAAO,KAAMC,EAAQ,CAAC,CAAC,EAAGC,EAAS,CAAC,IAAI,EAAGC,EAAS,CAAA,EAAIC,EAAQ,KAAK,MAAOjB,EAAS,GAAIE,EAAW,EAAGD,EAAS,EAAGiB,EAAa,EAAGC,EAAS,EAAGC,EAAM,EACzJ,KAAK,MAAM,SAASR,CAAK,EACzB,KAAK,MAAM,GAAK,KAAK,GACrB,KAAK,GAAG,MAAQ,KAAK,MACrB,KAAK,GAAG,OAAS,KACb,OAAO,KAAK,MAAM,OAAU,MAC5B,KAAK,MAAM,OAAS,CAAA,GACxB,IAAIS,EAAQ,KAAK,MAAM,OACvBL,EAAO,KAAKK,CAAK,EACjB,IAAIC,EAAS,KAAK,MAAM,SAAW,KAAK,MAAM,QAAQ,OAClD,OAAO,KAAK,GAAG,YAAe,aAC9B,KAAK,WAAa,KAAK,GAAG,YAC9B,SAASC,EAASC,GAAG,CACjBV,EAAM,OAASA,EAAM,OAAS,EAAIU,GAClCT,EAAO,OAASA,EAAO,OAASS,GAChCR,EAAO,OAASA,EAAO,OAASQ,GAEpC,SAASC,GAAM,CACX,IAAIC,GACJ,OAAAA,GAAQb,EAAK,MAAM,IAAG,GAAM,EACxB,OAAOa,IAAU,WACjBA,GAAQb,EAAK,SAASa,EAAK,GAAKA,IAE7BA,GAGX,QADIC,EAAQC,EAAgBC,EAAOC,EAAQC,EAAGC,EAAGC,EAAQ,CAAA,EAAIC,EAAGC,EAAKC,GAAUC,KAClE,CAUT,GATAR,EAAQf,EAAMA,EAAM,OAAS,CAAC,EAC1B,KAAK,eAAee,CAAK,EACzBC,EAAS,KAAK,eAAeD,CAAK,IAE9BF,IAAW,MAAQ,OAAOA,EAAU,OACpCA,EAASF,EAAG,GAEhBK,EAASb,EAAMY,CAAK,GAAKZ,EAAMY,CAAK,EAAEF,CAAM,GAE5C,OAAOG,EAAW,KAAe,CAACA,EAAO,QAAU,CAACA,EAAO,CAAC,EAAG,CAC/D,IAAIQ,GAAS,GACb,GAAI,CAACpB,EAAY,CACbmB,GAAW,CAAA,EACX,IAAKH,KAAKjB,EAAMY,CAAK,EACb,KAAK,WAAWK,CAAC,GAAKA,EAAI,GAC1BG,GAAS,KAAK,IAAM,KAAK,WAAWH,CAAC,EAAI,GAAG,EAEhD,KAAK,MAAM,aACXI,GAAS,wBAA0BpC,EAAW,GAAK;EAAQ,KAAK,MAAM,aAAY,EAAK;YAAiBmC,GAAS,KAAK,IAAI,EAAI,WAAa,KAAK,WAAWV,CAAM,GAAKA,GAAU,IAEhLW,GAAS,wBAA0BpC,EAAW,GAAK,iBAAmByB,GAAU,EAAE,eAAe,KAAO,KAAK,WAAWA,CAAM,GAAKA,GAAU,KAEjJ,KAAK,WAAWW,GAAQ,CAAC,KAAM,KAAK,MAAM,MAAO,MAAO,KAAK,WAAWX,CAAM,GAAKA,EAAQ,KAAM,KAAK,MAAM,SAAU,IAAKN,EAAO,SAAUgB,EAAQ,CAAC,GAG7J,GAAIP,EAAO,CAAC,YAAa,OAASA,EAAO,OAAS,EAC9C,MAAM,IAAI,MAAM,oDAAsDD,EAAQ,YAAcF,CAAM,EAEtG,OAAQG,EAAO,CAAC,EAAC,CACjB,IAAK,GACDhB,EAAM,KAAKa,CAAM,EACjBZ,EAAO,KAAK,KAAK,MAAM,MAAM,EAC7BC,EAAO,KAAK,KAAK,MAAM,MAAM,EAC7BF,EAAM,KAAKgB,EAAO,CAAC,CAAC,EACpBH,EAAS,KACJC,GAQDD,EAASC,EACTA,EAAiB,OARjB3B,EAAS,KAAK,MAAM,OACpBD,EAAS,KAAK,MAAM,OACpBE,EAAW,KAAK,MAAM,SACtBmB,EAAQ,KAAK,MAAM,OACfH,EAAa,GACbA,KAKR,MACJ,IAAK,GAQD,GAPAiB,EAAM,KAAK,aAAaL,EAAO,CAAC,CAAC,EAAE,CAAC,EACpCG,EAAM,EAAIlB,EAAOA,EAAO,OAASoB,CAAG,EACpCF,EAAM,GAAK,CAAC,WAAYjB,EAAOA,EAAO,QAAUmB,GAAO,EAAE,EAAE,WAAY,UAAWnB,EAAOA,EAAO,OAAS,CAAC,EAAE,UAAW,aAAcA,EAAOA,EAAO,QAAUmB,GAAO,EAAE,EAAE,aAAc,YAAanB,EAAOA,EAAO,OAAS,CAAC,EAAE,WAAW,EACpOM,IACAW,EAAM,GAAG,MAAQ,CAACjB,EAAOA,EAAO,QAAUmB,GAAO,EAAE,EAAE,MAAM,CAAC,EAAGnB,EAAOA,EAAO,OAAS,CAAC,EAAE,MAAM,CAAC,CAAC,GAErGgB,EAAI,KAAK,cAAc,KAAKC,EAAOjC,EAAQC,EAAQC,EAAU,KAAK,GAAI4B,EAAO,CAAC,EAAGf,EAAQC,CAAM,EAC3F,OAAOgB,EAAM,IACb,OAAOA,EAEPG,IACArB,EAAQA,EAAM,MAAM,EAAG,GAAKqB,EAAM,CAAC,EACnCpB,EAASA,EAAO,MAAM,EAAG,GAAKoB,CAAG,EACjCnB,EAASA,EAAO,MAAM,EAAG,GAAKmB,CAAG,GAErCrB,EAAM,KAAK,KAAK,aAAagB,EAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1Cf,EAAO,KAAKkB,EAAM,CAAC,EACnBjB,EAAO,KAAKiB,EAAM,EAAE,EACpBG,GAAWnB,EAAMH,EAAMA,EAAM,OAAS,CAAC,CAAC,EAAEA,EAAMA,EAAM,OAAS,CAAC,CAAC,EACjEA,EAAM,KAAKsB,EAAQ,EACnB,MACJ,IAAK,GACD,MAAO,EAAK,EAGpB,MAAO,KAIPG,GAAS,UAAU,CACvB,IAAIA,EAAS,CAAC,IAAI,EAClB,WAAW,SAAoB7B,EAAKC,EAAM,CAClC,GAAI,KAAK,GAAG,OACR,KAAK,GAAG,OAAO,WAAWD,EAAKC,CAAI,MAEnC,OAAM,IAAI,MAAMD,CAAG,GAG/B,SAAS,SAAUE,EAAO,CAClB,YAAK,OAASA,EACd,KAAK,MAAQ,KAAK,MAAQ,KAAK,KAAO,GACtC,KAAK,SAAW,KAAK,OAAS,EAC9B,KAAK,OAAS,KAAK,QAAU,KAAK,MAAQ,GAC1C,KAAK,eAAiB,CAAC,SAAS,EAChC,KAAK,OAAS,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,EAChE,KAAK,QAAQ,SAAQ,KAAK,OAAO,MAAQ,CAAC,EAAE,CAAC,GACjD,KAAK,OAAS,EACP,MAEf,MAAM,UAAY,CACV,IAAI4B,EAAK,KAAK,OAAO,CAAC,EACtB,KAAK,QAAUA,EACf,KAAK,SACL,KAAK,SACL,KAAK,OAASA,EACd,KAAK,SAAWA,EAChB,IAAIC,EAAQD,EAAG,MAAM,iBAAiB,EACtC,OAAIC,GACA,KAAK,WACL,KAAK,OAAO,aAEZ,KAAK,OAAO,cAEZ,KAAK,QAAQ,QAAQ,KAAK,OAAO,MAAM,CAAC,IAE5C,KAAK,OAAS,KAAK,OAAO,MAAM,CAAC,EAC1BD,GAEf,MAAM,SAAUA,EAAI,CACZ,IAAIL,EAAMK,EAAG,OACTC,EAAQD,EAAG,MAAM,eAAe,EAEpC,KAAK,OAASA,EAAK,KAAK,OACxB,KAAK,OAAS,KAAK,OAAO,OAAO,EAAG,KAAK,OAAO,OAAOL,EAAI,CAAC,EAE5D,KAAK,QAAUA,EACf,IAAIO,EAAW,KAAK,MAAM,MAAM,eAAe,EAC/C,KAAK,MAAQ,KAAK,MAAM,OAAO,EAAG,KAAK,MAAM,OAAO,CAAC,EACrD,KAAK,QAAU,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAO,CAAC,EAEvDD,EAAM,OAAO,IAAG,KAAK,UAAYA,EAAM,OAAO,GAClD,IAAIT,EAAI,KAAK,OAAO,MAEpB,YAAK,OAAS,CAAC,WAAY,KAAK,OAAO,WACrC,UAAW,KAAK,SAAS,EACzB,aAAc,KAAK,OAAO,aAC1B,YAAaS,GACRA,EAAM,SAAWC,EAAS,OAAS,KAAK,OAAO,aAAe,GAAKA,EAASA,EAAS,OAASD,EAAM,MAAM,EAAE,OAASA,EAAM,CAAC,EAAE,OAC/H,KAAK,OAAO,aAAeN,GAG7B,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAACH,EAAE,CAAC,EAAGA,EAAE,CAAC,EAAI,KAAK,OAASG,CAAG,GAEhD,MAEf,KAAK,UAAY,CACT,YAAK,MAAQ,GACN,MAEf,KAAK,SAAUX,EAAG,CACV,KAAK,MAAM,KAAK,MAAM,MAAMA,CAAC,CAAC,GAEtC,UAAU,UAAY,CACd,IAAImB,EAAO,KAAK,QAAQ,OAAO,EAAG,KAAK,QAAQ,OAAS,KAAK,MAAM,MAAM,EACzE,OAAQA,EAAK,OAAS,GAAK,MAAM,IAAMA,EAAK,OAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,GAEjF,cAAc,UAAY,CAClB,IAAIC,EAAO,KAAK,MAChB,OAAIA,EAAK,OAAS,KACdA,GAAQ,KAAK,OAAO,OAAO,EAAG,GAAGA,EAAK,MAAM,IAExCA,EAAK,OAAO,EAAE,EAAE,GAAGA,EAAK,OAAS,GAAK,MAAM,KAAK,QAAQ,MAAO,EAAE,GAElF,aAAa,UAAY,CACjB,IAAIC,EAAM,KAAK,UAAS,EACpBC,EAAI,IAAI,MAAMD,EAAI,OAAS,CAAC,EAAE,KAAK,GAAG,EAC1C,OAAOA,EAAM,KAAK,cAAa,EAAK;EAAOC,EAAE,KAErD,KAAK,UAAY,CACT,GAAI,KAAK,KACL,OAAO,KAAK,IAEX,KAAK,SAAQ,KAAK,KAAO,IAE9B,IAAIpB,EACAqB,EACAC,EACAC,EACAC,EACAT,EACC,KAAK,QACN,KAAK,OAAS,GACd,KAAK,MAAQ,IAGjB,QADIU,EAAQ,KAAK,cAAa,EACrBC,EAAE,EAAEA,EAAID,EAAM,SACnBH,EAAY,KAAK,OAAO,MAAM,KAAK,MAAMG,EAAMC,CAAC,CAAC,CAAC,EAC9C,EAAAJ,IAAc,CAACD,GAASC,EAAU,CAAC,EAAE,OAASD,EAAM,CAAC,EAAE,UACvDA,EAAQC,EACRC,EAAQG,EACJ,CAAC,KAAK,QAAQ,QALKA,IAE3B,CAMJ,OAAIL,GACAN,EAAQM,EAAM,CAAC,EAAE,MAAM,iBAAiB,EACpCN,IAAO,KAAK,UAAYA,EAAM,QAClC,KAAK,OAAS,CAAC,WAAY,KAAK,OAAO,UACxB,UAAW,KAAK,SAAS,EACzB,aAAc,KAAK,OAAO,YAC1B,YAAaA,EAAQA,EAAMA,EAAM,OAAO,CAAC,EAAE,OAAOA,EAAMA,EAAM,OAAO,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,OAAS,KAAK,OAAO,YAAcM,EAAM,CAAC,EAAE,MAAM,EAC5J,KAAK,QAAUA,EAAM,CAAC,EACtB,KAAK,OAASA,EAAM,CAAC,EACrB,KAAK,QAAUA,EACf,KAAK,OAAS,KAAK,OAAO,OACtB,KAAK,QAAQ,SACb,KAAK,OAAO,MAAQ,CAAC,KAAK,OAAQ,KAAK,QAAU,KAAK,MAAM,GAEhE,KAAK,MAAQ,GACb,KAAK,OAAS,KAAK,OAAO,MAAMA,EAAM,CAAC,EAAE,MAAM,EAC/C,KAAK,SAAWA,EAAM,CAAC,EACvBrB,EAAQ,KAAK,cAAc,KAAK,KAAM,KAAK,GAAI,KAAMyB,EAAMF,CAAK,EAAE,KAAK,eAAe,KAAK,eAAe,OAAO,CAAC,CAAC,EAC/G,KAAK,MAAQ,KAAK,SAAQ,KAAK,KAAO,IACtCvB,GACC,QAEL,KAAK,SAAW,GACT,KAAK,IAEL,KAAK,WAAW,0BAA0B,KAAK,SAAS,GAAG;EAAyB,KAAK,aAAY,EACpG,CAAC,KAAM,GAAI,MAAO,KAAM,KAAM,KAAK,QAAQ,CAAC,GAGhE,IAAI,UAAgB,CACZ,IAAIM,EAAI,KAAK,KAAI,EACjB,OAAI,OAAOA,EAAM,IACNA,EAEA,KAAK,IAAG,GAG3B,MAAM,SAAgBqB,EAAW,CACzB,KAAK,eAAe,KAAKA,CAAS,GAE1C,SAAS,UAAqB,CACtB,OAAO,KAAK,eAAe,IAAG,GAEtC,cAAc,UAA0B,CAChC,OAAO,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,OAAO,CAAC,CAAC,EAAE,OAElF,SAAS,UAAY,CACb,OAAO,KAAK,eAAe,KAAK,eAAe,OAAO,CAAC,GAE/D,UAAU,SAAgBA,EAAW,CAC7B,KAAK,MAAMA,CAAS,EACvB,EACL,OAAAd,EAAM,QAAU,CAAA,EAChBA,EAAM,cAAgB,SAAmBpC,EAAGmD,EAAIC,EAA0BC,EACxE,CAGF,SAASC,EAAMC,EAAOC,EAAK,CACzB,OAAOL,EAAI,OAASA,EAAI,OAAO,UAAUI,EAAOJ,EAAI,OAASK,EAAMD,CAAK,EAI1E,IAAIE,EAAQJ,EACZ,OAAOD,EAAyB,CAChC,IAAK,GAU8B,GATGD,EAAI,OAAO,MAAM,EAAE,IAAM,QAC1BG,EAAM,EAAE,CAAC,EACT,KAAK,MAAM,IAAI,GACPH,EAAI,OAAO,MAAM,EAAE,IAAM,MACjCG,EAAM,EAAE,CAAC,EACT,KAAK,MAAM,KAAK,GAEhB,KAAK,MAAM,IAAI,EAEdH,EAAI,OAAQ,MAAO,IAEzD,MACA,IAAK,GAAE,MAAO,IAEd,IAAK,GAC8B,YAAK,SAAQ,EACN,GAE1C,MACA,IAAK,GAAE,YAAK,MAAM,KAAK,EAAU,GACjC,MACA,IAAK,GAK6B,OAJA,KAAK,SAAQ,EAIT,KAAK,eAAe,KAAK,eAAe,OAAO,CAAC,IAAM,MACjD,IAEPG,EAAM,EAAG,CAAC,EACH,iBAI3C,IAAK,GAAG,MAAO,IAEf,IAAK,GACH,YAAK,SAAQ,EACN,GAET,MACA,IAAK,GAAE,MAAO,IAEd,IAAK,GAAE,MAAO,IAEd,IAAK,GAAG,MAAO,IAEf,IAAK,IAC6B,YAAK,SAAQ,EACb,KAAK,MAAM,KAAK,EACT,GAEzC,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,YAAK,SAAQ,EAAW,GAChC,MACA,IAAK,IAAG,YAAK,SAAQ,EAAW,GAChC,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IACH,KAAK,MAAMH,EAAI,MAAM,EACrB,KAAK,SAAQ,EACb,KAAK,MAAM,KAAK,EAElB,MACA,IAAK,IACH,YAAK,SAAQ,EACN,GAET,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IACL,MACA,IAAK,IAAG,YAAK,SAAQ,EAAW,GAChC,MACA,IAAK,IAAG,YAAK,SAAQ,EAAW,GAChC,MACA,IAAK,IAAG,OAAAA,EAAI,OAASG,EAAM,EAAE,CAAC,EAAE,QAAQ,OAAO,GAAG,EAAU,GAC5D,MACA,IAAK,IAAG,OAAAH,EAAI,OAASG,EAAM,EAAE,CAAC,EAAE,QAAQ,OAAO,GAAG,EAAU,GAC5D,MACA,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,MAAO,IAEf,IAAK,IAAG,OAAAH,EAAI,OAASA,EAAI,OAAO,QAAQ,cAAc,IAAI,EAAU,GACpE,MACA,IAAK,IAAG,MAAO,UAEf,IAAK,IAAG,MAAO,EACT,GAGNf,EAAM,MAAQ,CAAC,2BAA2B,gBAAgB,gDAAgD,wBAAwB,qEAAqE,+BAA+B,0BAA0B,UAAU,UAAU,gBAAgB,gBAAgB,iBAAiB,kBAAkB,oBAAoB,kBAAkB,6BAA6B,kCAAkC,kBAAkB,yBAAyB,kBAAkB,iBAAiB,mBAAmB,6BAA6B,mBAAmB,SAAS,YAAY,4BAA4B,aAAa,WAAW,kBAAkB,gBAAgB,uBAAuB,uBAAuB,SAAS,yBAAyB,0BAA0B,8BAA8B,yBAAyB,0CAA0C,eAAe,UAAU,0DAA0D,yBAAyB,SAAS,QAAQ,EAChgCA,EAAM,WAAa,CAAC,GAAK,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,UAAY,EAAK,EAAE,IAAM,CAAC,MAAQ,CAAC,CAAC,EAAE,UAAY,EAAK,EAAE,IAAM,CAAC,MAAQ,CAAC,CAAC,EAAE,UAAY,EAAK,EAAE,IAAM,CAAC,MAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,UAAY,EAAK,EAAE,QAAU,CAAC,MAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,UAAY,EAAI,CAAC,EAClUA,IAAO,EACdxC,EAAO,MAAQwC,EACf,SAASsB,GAAU,CAAE,KAAK,GAAK,CAAA,EAAK,OAAAA,EAAO,UAAY9D,EAAOA,EAAO,OAAS8D,EACvE,IAAIA,IACV,EAAIC,GAAA,QAAehE,sJC3mBpB,SAASiE,IAAU,CACjB,KAAK,QAAU,CAAA,EAGjBA,GAAQ,UAAY,CAClB,YAAaA,GACb,SAAU,GAGV,UAAW,SAASC,EAAMC,EAAM,CAC9B,IAAIC,EAAQ,KAAK,OAAOF,EAAKC,CAAI,CAAC,EAClC,GAAI,KAAK,SAAU,CAGjB,GAAIC,GAAS,CAACH,GAAQ,UAAUG,EAAM,IAAI,EACxC,MAAM,IAAAC,GAAA,QACJ,yBACED,EAAM,KACN,0BACAD,EACA,OACAD,EAAK,IAAI,EAGfA,EAAKC,CAAI,EAAIC,IAMjB,eAAgB,SAASF,EAAMC,EAAM,CAGnC,GAFA,KAAK,UAAUD,EAAMC,CAAI,EAErB,CAACD,EAAKC,CAAI,EACZ,MAAM,IAAAE,GAAA,QAAcH,EAAK,KAAO,aAAeC,CAAI,GAMvD,YAAa,SAASG,EAAO,CAC3B,QAASC,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,EAAGD,IACvC,KAAK,UAAUD,EAAOC,CAAC,EAElBD,EAAMC,CAAC,IACVD,EAAM,OAAOC,EAAG,CAAC,EACjBA,IACAC,MAKN,OAAQ,SAASC,EAAQ,CACvB,GAAKA,EAKL,IAAI,CAAC,KAAKA,EAAO,IAAI,EACnB,MAAM,IAAAJ,GAAA,QAAc,iBAAmBI,EAAO,KAAMA,CAAM,EAGxD,KAAK,SACP,KAAK,QAAQ,QAAQ,KAAK,OAAO,EAEnC,KAAK,QAAUA,EAEf,IAAIC,EAAM,KAAKD,EAAO,IAAI,EAAEA,CAAM,EAIlC,GAFA,KAAK,QAAU,KAAK,QAAQ,MAAK,EAE7B,CAAC,KAAK,UAAYC,EACpB,OAAOA,EACF,GAAIA,IAAQ,GACjB,OAAOD,IAIX,QAAS,SAASE,EAAS,CACzB,KAAK,YAAYA,EAAQ,IAAI,GAG/B,kBAAmBC,GACnB,UAAWA,GAEX,eAAgBC,GAChB,eAAgBA,GAEhB,iBAAkBC,GAClB,sBAAuB,SAASC,EAAS,CACvCD,GAAa,KAAK,KAAMC,CAAO,EAE/B,KAAK,UAAUA,EAAS,SAAS,GAGnC,iBAAkB,UAAwB,CAAA,EAC1C,iBAAkB,UAAwB,CAAA,EAE1C,cAAeH,GAEf,eAAgB,UAAqB,CAAA,EAErC,cAAe,UAAuB,CAAA,EACtC,cAAe,UAAuB,CAAA,EACtC,eAAgB,UAAqB,CAAA,EACrC,iBAAkB,UAAwB,CAAA,EAC1C,YAAa,UAAwB,CAAA,EAErC,KAAM,SAASI,EAAM,CACnB,KAAK,YAAYA,EAAK,KAAK,GAE7B,SAAU,SAASC,EAAM,CACvB,KAAK,eAAeA,EAAM,OAAO,IAIrC,SAASL,GAAmBM,EAAU,CACpC,KAAK,eAAeA,EAAU,MAAM,EACpC,KAAK,YAAYA,EAAS,MAAM,EAChC,KAAK,UAAUA,EAAU,MAAM,EAEjC,SAASL,GAAWM,EAAO,CACzBP,GAAmB,KAAK,KAAMO,CAAK,EAEnC,KAAK,UAAUA,EAAO,SAAS,EAC/B,KAAK,UAAUA,EAAO,SAAS,EAEjC,SAASL,GAAaC,EAAS,CAC7B,KAAK,eAAeA,EAAS,MAAM,EACnC,KAAK,YAAYA,EAAQ,MAAM,EAC/B,KAAK,UAAUA,EAAS,MAAM,aAGjBd,sJCrIf,SAASmB,IAAgC,KAAdC,EAAO,UAAA,QAAA,GAAA,UAAA,CAAA,IAAA,OAAG,CAAA,EAAE,UAAA,CAAA,EACrC,KAAK,QAAUA,EAEjBD,GAAkB,UAAY,IAAAE,GAAA,QAE9BF,GAAkB,UAAU,QAAU,SAASG,EAAS,CACtD,IAAMC,EAAe,CAAC,KAAK,QAAQ,iBAE/BC,EAAS,CAAC,KAAK,WACnB,KAAK,WAAa,GAGlB,QADIC,EAAOH,EAAQ,KACV,EAAI,EAAGI,EAAID,EAAK,OAAQ,EAAIC,EAAG,IAAK,CAC3C,IAAIC,EAAUF,EAAK,CAAC,EAClBG,EAAQ,KAAK,OAAOD,CAAO,EAE7B,GAAKC,EAIL,KAAIC,EAAoBC,GAAiBL,EAAM,EAAGD,CAAM,EACtDO,EAAoBC,GAAiBP,EAAM,EAAGD,CAAM,EACpDS,EAAiBL,EAAM,gBAAkBC,EACzCK,EAAkBN,EAAM,iBAAmBG,EAC3CI,EACEP,EAAM,kBAAoBC,GAAqBE,EAE/CH,EAAM,OACRQ,GAAUX,EAAM,EAAG,EAAI,EAErBG,EAAM,MACRS,GAASZ,EAAM,EAAG,EAAI,EAGpBF,GAAgBY,IAClBC,GAAUX,EAAM,CAAC,EAEbY,GAASZ,EAAM,CAAC,GAEdE,EAAQ,OAAS,qBAEnBA,EAAQ,OAAS,YAAY,KAAKF,EAAK,EAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,IAI3DF,GAAgBU,IAClBG,IAAWT,EAAQ,SAAWA,EAAQ,SAAS,IAAI,EAGnDU,GAASZ,EAAM,CAAC,GAEdF,GAAgBW,IAElBE,GAAUX,EAAM,CAAC,EAEjBY,IAAUV,EAAQ,SAAWA,EAAQ,SAAS,IAAI,IAItD,OAAOL,GAGTH,GAAkB,UAAU,eAAiBA,GAAkB,UAAU,eAAiBA,GAAkB,UAAU,sBAAwB,SAC5ImB,EACA,CACA,KAAK,OAAOA,EAAM,OAAO,EACzB,KAAK,OAAOA,EAAM,OAAO,EAGzB,IAAIhB,EAAUgB,EAAM,SAAWA,EAAM,QACnCC,EAAUD,EAAM,SAAWA,EAAM,QACjCE,EAAeD,EACfE,EAAcF,EAEhB,GAAIA,GAAWA,EAAQ,QAIrB,IAHAC,EAAeD,EAAQ,KAAK,CAAC,EAAE,QAGxBE,EAAY,SACjBA,EAAcA,EAAY,KAAKA,EAAY,KAAK,OAAS,CAAC,EAAE,QAIhE,IAAIb,EAAQ,CACV,KAAMU,EAAM,UAAU,KACtB,MAAOA,EAAM,WAAW,MAIxB,eAAgBN,GAAiBV,EAAQ,IAAI,EAC7C,gBAAiBQ,IAAkBU,GAAgBlB,GAAS,IAAI,GAOlE,GAJIgB,EAAM,UAAU,OAClBF,GAAUd,EAAQ,KAAM,KAAM,EAAI,EAGhCiB,EAAS,CACX,IAAIG,EAAeJ,EAAM,aAErBI,EAAa,MACfL,GAASf,EAAQ,KAAM,KAAM,EAAI,EAG/BoB,EAAa,OACfN,GAAUI,EAAa,KAAM,KAAM,EAAI,EAErCF,EAAM,WAAW,MACnBD,GAASI,EAAY,KAAM,KAAM,EAAI,EAKrC,CAAC,KAAK,QAAQ,kBACdX,GAAiBR,EAAQ,IAAI,GAC7BU,GAAiBQ,EAAa,IAAI,IAElCH,GAASf,EAAQ,IAAI,EACrBc,GAAUI,EAAa,IAAI,QAEpBF,EAAM,WAAW,MAC1BD,GAASf,EAAQ,KAAM,KAAM,EAAI,EAGnC,OAAOM,GAGTT,GAAkB,UAAU,UAAYA,GAAkB,UAAU,kBAAoB,SACtFwB,EACA,CACA,OAAOA,EAAS,OAGlBxB,GAAkB,UAAU,iBAAmBA,GAAkB,UAAU,iBAAmB,SAC5FyB,EACA,CAEA,IAAIhB,EAAQgB,EAAK,OAAS,CAAA,EAC1B,MAAO,CACL,iBAAkB,GAClB,KAAMhB,EAAM,KACZ,MAAOA,EAAM,QAIjB,SAASE,GAAiBL,EAAMoB,EAAGrB,EAAQ,CACrCqB,IAAM,SACRA,EAAIpB,EAAK,QAKX,IAAIqB,EAAOrB,EAAKoB,EAAI,CAAC,EACnBE,EAAUtB,EAAKoB,EAAI,CAAC,EACtB,GAAI,CAACC,EACH,OAAOtB,EAGT,GAAIsB,EAAK,OAAS,mBAChB,OAAQC,GAAW,CAACvB,EAAS,aAAe,kBAAkB,KAC5DsB,EAAK,QAAQ,EAInB,SAASd,GAAiBP,EAAMoB,EAAGrB,EAAQ,CACrCqB,IAAM,SACRA,EAAI,IAGN,IAAIG,EAAOvB,EAAKoB,EAAI,CAAC,EACnBE,EAAUtB,EAAKoB,EAAI,CAAC,EACtB,GAAI,CAACG,EACH,OAAOxB,EAGT,GAAIwB,EAAK,OAAS,mBAChB,OAAQD,GAAW,CAACvB,EAAS,aAAe,kBAAkB,KAC5DwB,EAAK,QAAQ,EAYnB,SAASZ,GAAUX,EAAMoB,EAAGI,EAAU,CACpC,IAAItB,EAAUF,EAAKoB,GAAK,KAAO,EAAIA,EAAI,CAAC,EACxC,GACE,GAAClB,GACDA,EAAQ,OAAS,oBAChB,CAACsB,GAAYtB,EAAQ,eAKxB,KAAIuB,EAAWvB,EAAQ,MACvBA,EAAQ,MAAQA,EAAQ,MAAM,QAC5BsB,EAAW,OAAS,gBACpB,EAAE,EAEJtB,EAAQ,cAAgBA,EAAQ,QAAUuB,GAU5C,SAASb,GAASZ,EAAMoB,EAAGI,EAAU,CACnC,IAAItB,EAAUF,EAAKoB,GAAK,KAAOpB,EAAK,OAAS,EAAIoB,EAAI,CAAC,EACtD,GACE,GAAClB,GACDA,EAAQ,OAAS,oBAChB,CAACsB,GAAYtB,EAAQ,cAMxB,KAAIuB,EAAWvB,EAAQ,MACvB,OAAAA,EAAQ,MAAQA,EAAQ,MAAM,QAAQsB,EAAW,OAAS,UAAW,EAAE,EACvEtB,EAAQ,aAAeA,EAAQ,QAAUuB,EAClCvB,EAAQ,yBAGFR,mVCvOf,SAASgC,GAAcC,EAAMC,EAAO,CAGlC,GAFAA,EAAQA,EAAM,KAAOA,EAAM,KAAK,SAAWA,EAEvCD,EAAK,KAAK,WAAaC,EAAO,CAChC,IAAIC,EAAY,CAAE,IAAKF,EAAK,KAAK,GAAG,EAEpC,MAAM,IAAAG,GAAA,QACJH,EAAK,KAAK,SAAW,kBAAoBC,EACzCC,CAAS,GAKR,SAASE,GAAeC,EAAQC,EAAS,CAC9C,KAAK,OAASD,EACd,KAAK,MAAQ,CACX,KAAMC,EAAQ,WACd,OAAQA,EAAQ,cAElB,KAAK,IAAM,CACT,KAAMA,EAAQ,UACd,OAAQA,EAAQ,aAIb,SAASC,GAAGC,EAAO,CACxB,MAAI,WAAW,KAAKA,CAAK,EAChBA,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,EAEnCA,EAIJ,SAASC,GAAWT,EAAMC,EAAO,CACtC,MAAO,CACL,KAAMD,EAAK,OAAO,CAAC,IAAM,IACzB,MAAOC,EAAM,OAAOA,EAAM,OAAS,CAAC,IAAM,KAIvC,SAASS,GAAaC,EAAS,CACpC,OAAOA,EAAQ,QAAQ,eAAgB,EAAE,EAAE,QAAQ,cAAe,EAAE,EAG/D,SAASC,GAAYC,EAAMC,EAAOC,EAAK,CAC5CA,EAAM,KAAK,QAAQA,CAAG,EAMtB,QAJIC,EAAWH,EAAO,IAAM,GAC1BI,EAAM,CAAA,EACNC,EAAQ,EAEDC,EAAI,EAAGC,EAAIN,EAAM,OAAQK,EAAIC,EAAGD,IAAK,CAC5C,IAAIE,EAAOP,EAAMK,CAAC,EAAE,KAGlBG,EAAYR,EAAMK,CAAC,EAAE,WAAaE,EAGpC,GAFAL,IAAaF,EAAMK,CAAC,EAAE,WAAa,IAAME,EAErC,CAACC,IAAcD,IAAS,MAAQA,IAAS,KAAOA,IAAS,QAAS,CACpE,GAAIJ,EAAI,OAAS,EACf,MAAM,IAAAd,GAAA,QAAc,iBAAmBa,EAAU,CAAE,IAAAD,CAAG,CAAE,EAC/CM,IAAS,MAClBH,SAGFD,EAAI,KAAKI,CAAI,EAIjB,MAAO,CACL,KAAM,iBACN,KAAAR,EACA,MAAAK,EACA,MAAOD,EACP,SAAAD,EACA,IAAAD,GAIG,SAASQ,GAAgBC,EAAMC,EAAQC,EAAM1B,EAAM2B,EAAOrB,EAAS,CAExE,IAAIsB,EAAa5B,EAAK,OAAO,CAAC,GAAKA,EAAK,OAAO,CAAC,EAC9C6B,EAAUD,IAAe,KAAOA,IAAe,IAE7CE,EAAY,KAAK,KAAK9B,CAAI,EAC9B,MAAO,CACL,KAAM8B,EAAY,YAAc,oBAChC,KAAAN,EACA,OAAAC,EACA,KAAAC,EACA,QAAAG,EACA,MAAAF,EACA,IAAK,KAAK,QAAQrB,CAAO,GAItB,SAASyB,GAAgBC,EAAcC,EAAUhC,EAAOK,EAAS,CACtEP,GAAciC,EAAc/B,CAAK,EAEjCK,EAAU,KAAK,QAAQA,CAAO,EAC9B,IAAI4B,EAAU,CACZ,KAAM,UACN,KAAMD,EACN,MAAO,CAAA,EACP,IAAK3B,GAGP,MAAO,CACL,KAAM,iBACN,KAAM0B,EAAa,KACnB,OAAQA,EAAa,OACrB,KAAMA,EAAa,KACnB,QAAAE,EACA,UAAW,CAAA,EACX,aAAc,CAAA,EACd,WAAY,CAAA,EACZ,IAAK5B,GAIF,SAAS6B,GACdC,EACAF,EACAG,EACApC,EACAqC,EACAhC,EACA,CACIL,GAASA,EAAM,MACjBF,GAAcqC,EAAWnC,CAAK,EAGhC,IAAI6B,EAAY,KAAK,KAAKM,EAAU,IAAI,EAExCF,EAAQ,YAAcE,EAAU,YAEhC,IAAIG,EAAO,OAAEC,EAAY,OAEzB,GAAIH,EAAmB,CACrB,GAAIP,EACF,MAAM,IAAA3B,GAAA,QACJ,wCACAkC,CAAiB,EAIjBA,EAAkB,QACpBA,EAAkB,QAAQ,KAAK,CAAC,EAAE,WAAapC,EAAM,OAGvDuC,EAAeH,EAAkB,MACjCE,EAAUF,EAAkB,QAG9B,OAAIC,IACFA,EAAWC,EACXA,EAAUL,EACVA,EAAUI,GAGL,CACL,KAAMR,EAAY,iBAAmB,iBACrC,KAAMM,EAAU,KAChB,OAAQA,EAAU,OAClB,KAAMA,EAAU,KAChB,QAAAF,EACA,QAAAK,EACA,UAAWH,EAAU,MACrB,aAAAI,EACA,WAAYvC,GAASA,EAAM,MAC3B,IAAK,KAAK,QAAQK,CAAO,GAItB,SAASmC,GAAeC,EAAY3B,EAAK,CAC9C,GAAI,CAACA,GAAO2B,EAAW,OAAQ,CAC7B,IAAMC,EAAWD,EAAW,CAAC,EAAE,IAC7BE,EAAUF,EAAWA,EAAW,OAAS,CAAC,EAAE,IAG1CC,GAAYC,IACd7B,EAAM,CACJ,OAAQ4B,EAAS,OACjB,MAAO,CACL,KAAMA,EAAS,MAAM,KACrB,OAAQA,EAAS,MAAM,QAEzB,IAAK,CACH,KAAMC,EAAQ,IAAI,KAClB,OAAQA,EAAQ,IAAI,UAM5B,MAAO,CACL,KAAM,UACN,KAAMF,EACN,MAAO,CAAA,EACP,IAAK3B,GAIF,SAAS8B,GAAoB7C,EAAMkC,EAASjC,EAAOK,EAAS,CACjE,OAAAP,GAAcC,EAAMC,CAAK,EAElB,CACL,KAAM,wBACN,KAAMD,EAAK,KACX,OAAQA,EAAK,OACb,KAAMA,EAAK,KACX,QAAAkC,EACA,UAAWlC,EAAK,MAChB,WAAYC,GAASA,EAAM,MAC3B,IAAK,KAAK,QAAQK,CAAO,yVCtNjBwC,GAAOC,GAAAC,EAAA,aAGV,OAAMC,GAAA,QAEf,IAAIC,GAAK,CAAA,EACTC,GAAA,OAAOD,GAAIJ,EAAO,EAEX,SAASM,GAAuBC,EAAOC,EAAS,CAErD,GAAID,EAAM,OAAS,UACjB,OAAOA,EAGTJ,GAAA,QAAO,GAAKC,GAGZA,GAAG,QAAU,SAASK,EAAS,CAC7B,OAAO,IAAIL,GAAG,eAAeI,GAAWA,EAAQ,QAASC,CAAO,GAGlE,IAAIC,EAAMP,GAAA,QAAO,MAAMI,CAAK,EAE5B,OAAOG,EAGF,SAASC,GAAMJ,EAAOC,EAAS,CACpC,IAAIE,EAAMJ,GAAuBC,EAAOC,CAAO,EAC3CI,EAAQ,IAAAC,GAAA,QAAsBL,CAAO,EAEzC,OAAOI,EAAM,OAAOF,CAAG,mMC1BnBI,GAAQ,CAAA,EAAG,MAEV,SAASC,IAAW,CAAA,CAO3BA,GAAS,UAAY,CACnB,SAAUA,GAEV,OAAQ,SAASC,EAAO,CACtB,IAAIC,EAAM,KAAK,QAAQ,OACvB,GAAID,EAAM,QAAQ,SAAWC,EAC3B,MAAO,GAGT,QAASC,EAAI,EAAGA,EAAID,EAAKC,IAAK,CAC5B,IAAIC,EAAS,KAAK,QAAQD,CAAC,EACzBE,EAAcJ,EAAM,QAAQE,CAAC,EAC/B,GACEC,EAAO,SAAWC,EAAY,QAC9B,CAACC,GAAUF,EAAO,KAAMC,EAAY,IAAI,EAExC,MAAO,GAMXH,EAAM,KAAK,SAAS,OACpB,QAASC,EAAI,EAAGA,EAAID,EAAKC,IACvB,GAAI,CAAC,KAAK,SAASA,CAAC,EAAE,OAAOF,EAAM,SAASE,CAAC,CAAC,EAC5C,MAAO,GAIX,MAAO,IAGT,KAAM,EAEN,QAAS,SAASI,EAASC,EAAS,CAClC,YAAK,WAAa,CAAA,EAClB,KAAK,QAAU,CAAA,EACf,KAAK,SAAW,CAAA,EAChB,KAAK,QAAUA,EACf,KAAK,aAAeA,EAAQ,aAC5B,KAAK,SAAWA,EAAQ,SAExBA,EAAQ,YAAcA,EAAQ,aAAe,CAAA,EAE7CA,EAAQ,aAAeC,GAAA,OACrB,OAAO,OAAO,IAAI,EAClB,CACE,cAAe,GACf,mBAAoB,GACpB,KAAM,GACN,GAAI,GACJ,OAAQ,GACR,KAAM,GACN,IAAK,GACL,OAAQ,IAEVD,EAAQ,YAAY,EAGf,KAAK,OAAOD,CAAO,GAG5B,eAAgB,SAASA,EAAS,CAChC,IAAIG,EAAgB,IAAI,KAAK,SAC3BC,EAASD,EAAc,QAAQH,EAAS,KAAK,OAAO,EACpDK,EAAO,KAAK,OAEd,YAAK,WAAa,KAAK,YAAcD,EAAO,WAE5C,KAAK,SAASC,CAAI,EAAID,EACtB,KAAK,UAAY,KAAK,WAAaA,EAAO,UAEnCC,GAGT,OAAQ,SAASC,EAAM,CAErB,GAAI,CAAC,KAAKA,EAAK,IAAI,EACjB,MAAM,IAAAC,GAAA,QAAc,iBAAmBD,EAAK,KAAMA,CAAI,EAGxD,KAAK,WAAW,QAAQA,CAAI,EAC5B,IAAIE,EAAM,KAAKF,EAAK,IAAI,EAAEA,CAAI,EAC9B,YAAK,WAAW,MAAK,EACdE,GAGT,QAAS,SAASR,EAAS,CACzB,KAAK,QAAQ,YAAY,QAAQA,EAAQ,WAAW,EAIpD,QAFIS,EAAOT,EAAQ,KACjBU,EAAaD,EAAK,OACX,EAAI,EAAG,EAAIC,EAAY,IAC9B,KAAK,OAAOD,EAAK,CAAC,CAAC,EAGrB,YAAK,QAAQ,YAAY,MAAK,EAE9B,KAAK,SAAWC,IAAe,EAC/B,KAAK,YAAcV,EAAQ,YAAcA,EAAQ,YAAY,OAAS,EAE/D,MAGT,eAAgB,SAASW,EAAO,CAC9BC,GAAuBD,CAAK,EAE5B,IAAIX,EAAUW,EAAM,QAClBE,EAAUF,EAAM,QAElBX,EAAUA,GAAW,KAAK,eAAeA,CAAO,EAChDa,EAAUA,GAAW,KAAK,eAAeA,CAAO,EAEhD,IAAIC,EAAO,KAAK,cAAcH,CAAK,EAE/BG,IAAS,SACX,KAAK,YAAYH,EAAOX,EAASa,CAAO,EAC/BC,IAAS,UAClB,KAAK,YAAYH,CAAK,EAItB,KAAK,OAAO,cAAeX,CAAO,EAClC,KAAK,OAAO,cAAea,CAAO,EAClC,KAAK,OAAO,WAAW,EACvB,KAAK,OAAO,aAAcF,EAAM,KAAK,QAAQ,IAE7C,KAAK,eAAeA,EAAOX,EAASa,CAAO,EAI3C,KAAK,OAAO,cAAeb,CAAO,EAClC,KAAK,OAAO,cAAea,CAAO,EAClC,KAAK,OAAO,WAAW,EACvB,KAAK,OAAO,qBAAqB,GAGnC,KAAK,OAAO,QAAQ,GAGtB,eAAc,SAACE,EAAW,CACxB,IAAIf,EAAUe,EAAU,SAAW,KAAK,eAAeA,EAAU,OAAO,EACpEC,EAAS,KAAK,wBAAwBD,EAAWf,EAAS,MAAS,EACrEiB,EAAOF,EAAU,KAEnB,KAAK,cAAgB,GACrB,KAAK,OAAO,oBAAqBC,EAAO,OAAQC,EAAK,QAAQ,GAG/D,iBAAkB,SAASC,EAAS,CAClC,KAAK,WAAa,GAElB,IAAIlB,EAAUkB,EAAQ,QAClBlB,IACFA,EAAU,KAAK,eAAekB,EAAQ,OAAO,GAG/C,IAAIF,EAASE,EAAQ,OACrB,GAAIF,EAAO,OAAS,EAClB,MAAM,IAAAT,GAAA,QACJ,4CAA8CS,EAAO,OACrDE,CAAO,EAECF,EAAO,SACb,KAAK,QAAQ,uBACf,KAAK,OAAO,cAAe,WAAW,EAEtCA,EAAO,KAAK,CAAE,KAAM,iBAAkB,MAAO,CAAA,EAAI,MAAO,CAAC,CAAE,GAI/D,IAAIG,EAAcD,EAAQ,KAAK,SAC7BE,EAAYF,EAAQ,KAAK,OAAS,gBAChCE,GACF,KAAK,OAAOF,EAAQ,IAAI,EAG1B,KAAK,wBAAwBA,EAASlB,EAAS,OAAW,EAAI,EAE9D,IAAIqB,EAASH,EAAQ,QAAU,GAC3B,KAAK,QAAQ,eAAiBG,IAChC,KAAK,OAAO,gBAAiBA,CAAM,EACnCA,EAAS,IAGX,KAAK,OAAO,gBAAiBD,EAAWD,EAAaE,CAAM,EAC3D,KAAK,OAAO,QAAQ,GAEtB,sBAAuB,SAASC,EAAc,CAC5C,KAAK,iBAAiBA,CAAY,GAGpC,kBAAmB,SAASC,EAAU,CACpC,KAAK,cAAcA,CAAQ,EAEvBA,EAAS,SAAW,CAAC,KAAK,QAAQ,SACpC,KAAK,OAAO,eAAe,EAE3B,KAAK,OAAO,QAAQ,GAGxB,UAAS,SAACR,EAAW,CACnB,KAAK,eAAeA,CAAS,GAG/B,iBAAkB,SAASS,EAAS,CAC9BA,EAAQ,OACV,KAAK,OAAO,gBAAiBA,EAAQ,KAAK,GAI9C,iBAAkB,UAAW,CAAA,EAE7B,cAAe,SAASC,EAAO,CAC7Bb,GAAuBa,CAAK,EAC5B,IAAIX,EAAO,KAAK,cAAcW,CAAK,EAE/BX,IAAS,SACX,KAAK,YAAYW,CAAK,EACbX,IAAS,SAClB,KAAK,YAAYW,CAAK,EAEtB,KAAK,eAAeA,CAAK,GAG7B,eAAgB,SAASA,EAAOzB,EAASa,EAAS,CAChD,IAAII,EAAOQ,EAAM,KACfC,EAAOT,EAAK,MAAM,CAAC,EACnBU,EAAU3B,GAAW,MAAQa,GAAW,KAE1C,KAAK,OAAO,aAAcI,EAAK,KAAK,EAEpC,KAAK,OAAO,cAAejB,CAAO,EAClC,KAAK,OAAO,cAAea,CAAO,EAElCI,EAAK,OAAS,GACd,KAAK,OAAOA,CAAI,EAEhB,KAAK,OAAO,kBAAmBS,EAAMC,CAAO,GAG9C,YAAa,SAASF,EAAO,CAC3B,IAAIR,EAAOQ,EAAM,KACjBR,EAAK,OAAS,GACd,KAAK,OAAOA,CAAI,EAChB,KAAK,OAAO,uBAAuB,GAGrC,YAAa,SAASQ,EAAOzB,EAASa,EAAS,CAC7C,IAAIG,EAAS,KAAK,wBAAwBS,EAAOzB,EAASa,CAAO,EAC/DI,EAAOQ,EAAM,KACbC,EAAOT,EAAK,MAAM,CAAC,EAErB,GAAI,KAAK,QAAQ,aAAaS,CAAI,EAChC,KAAK,OAAO,oBAAqBV,EAAO,OAAQU,CAAI,MAC/C,IAAI,KAAK,QAAQ,iBACtB,MAAM,IAAAnB,GAAA,QACJ,+DAAiEmB,EACjED,CAAK,EAGPR,EAAK,OAAS,GACdA,EAAK,MAAQ,GAEb,KAAK,OAAOA,CAAI,EAChB,KAAK,OACH,eACAD,EAAO,OACPC,EAAK,SACLW,GAAA,QAAI,QAAQ,SAASX,CAAI,CAAC,IAKhC,eAAgB,SAASA,EAAM,CAC7B,KAAK,SAASA,EAAK,KAAK,EACxB,KAAK,OAAO,aAAcA,EAAK,KAAK,EAEpC,IAAIS,EAAOT,EAAK,MAAM,CAAC,EACrBY,EAASD,GAAA,QAAI,QAAQ,SAASX,CAAI,EAClCa,EAAe,CAACb,EAAK,OAAS,CAACY,GAAU,KAAK,gBAAgBH,CAAI,EAEhEI,EACF,KAAK,OAAO,mBAAoBA,EAAcb,EAAK,KAAK,EAC9CS,EAGDT,EAAK,MACd,KAAK,QAAQ,KAAO,GACpB,KAAK,OAAO,aAAcA,EAAK,MAAOA,EAAK,MAAOA,EAAK,MAAM,GAE7D,KAAK,OACH,kBACAA,EAAK,MACLA,EAAK,MACLA,EAAK,OACLY,CAAM,EAVR,KAAK,OAAO,aAAa,GAe7B,cAAe,SAASE,EAAQ,CAC9B,KAAK,OAAO,aAAcA,EAAO,KAAK,GAGxC,cAAe,SAASC,EAAQ,CAC9B,KAAK,OAAO,cAAeA,EAAO,KAAK,GAGzC,eAAgB,SAASC,EAAM,CAC7B,KAAK,OAAO,cAAeA,EAAK,KAAK,GAGvC,iBAAkB,UAAW,CAC3B,KAAK,OAAO,cAAe,WAAW,GAGxC,YAAa,UAAW,CACtB,KAAK,OAAO,cAAe,MAAM,GAGnC,KAAM,SAASC,EAAM,CACnB,IAAIC,EAAQD,EAAK,MACftC,EAAI,EACJwC,EAAID,EAAM,OAIZ,IAFA,KAAK,OAAO,UAAU,EAEfvC,EAAIwC,EAAGxC,IACZ,KAAK,UAAUuC,EAAMvC,CAAC,EAAE,KAAK,EAE/B,KAAOA,KACL,KAAK,OAAO,eAAgBuC,EAAMvC,CAAC,EAAE,GAAG,EAE1C,KAAK,OAAO,SAAS,GAIvB,OAAQ,SAAS8B,EAAM,CACrB,KAAK,QAAQ,KAAK,CAChB,OAAQA,EACR,KAAMlC,GAAM,KAAK,UAAW,CAAC,EAC7B,IAAK,KAAK,WAAW,CAAC,EAAE,IACzB,GAGH,SAAU,SAAS6C,EAAO,CACnBA,IAIL,KAAK,UAAY,KAGnB,cAAe,SAASZ,EAAO,CAC7B,IAAIa,EAAWV,GAAA,QAAI,QAAQ,SAASH,EAAM,IAAI,EAE1Cc,EAAeD,GAAY,CAAC,CAAC,KAAK,gBAAgBb,EAAM,KAAK,MAAM,CAAC,CAAC,EAIrEe,EAAW,CAACD,GAAgBX,GAAA,QAAI,QAAQ,iBAAiBH,CAAK,EAK9DgB,EAAa,CAACF,IAAiBC,GAAYF,GAI/C,GAAIG,GAAc,CAACD,EAAU,CAC3B,IAAIE,EAAOjB,EAAM,KAAK,MAAM,CAAC,EAC3BxB,EAAU,KAAK,QACbA,EAAQ,aAAayC,CAAI,EAC3BF,EAAW,GACFvC,EAAQ,mBACjBwC,EAAa,IAIjB,OAAID,EACK,SACEC,EACF,YAEA,UAIX,WAAY,SAASzB,EAAQ,CAC3B,QAASpB,EAAI,EAAGwC,EAAIpB,EAAO,OAAQpB,EAAIwC,EAAGxC,IACxC,KAAK,UAAUoB,EAAOpB,CAAC,CAAC,GAI5B,UAAW,SAAS+C,EAAK,CACvB,IAAIC,EAAQD,EAAI,OAAS,KAAOA,EAAI,MAAQA,EAAI,UAAY,GAE5D,GAAI,KAAK,aACHC,EAAM,UACRA,EAAQA,EAAM,QAAQ,eAAgB,EAAE,EAAE,QAAQ,MAAO,GAAG,GAG1DD,EAAI,OACN,KAAK,SAASA,EAAI,KAAK,EAEzB,KAAK,OAAO,aAAcA,EAAI,OAAS,CAAC,EACxC,KAAK,OAAO,kBAAmBC,EAAOD,EAAI,IAAI,EAE1CA,EAAI,OAAS,iBAGf,KAAK,OAAOA,CAAG,MAEZ,CACL,GAAI,KAAK,SAAU,CACjB,IAAIE,EAAe,OAInB,GAHIF,EAAI,OAAS,CAACf,GAAA,QAAI,QAAQ,SAASe,CAAG,GAAK,CAACA,EAAI,QAClDE,EAAkB,KAAK,gBAAgBF,EAAI,MAAM,CAAC,CAAC,GAEjDE,EAAiB,CACnB,IAAIC,EAAkBH,EAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,EACjD,KAAK,OAAO,SAAU,aAAcE,EAAiBC,CAAe,OAEpEF,EAAQD,EAAI,UAAYC,EACpBA,EAAM,UACRA,EAAQA,EACL,QAAQ,gBAAiB,EAAE,EAC3B,QAAQ,QAAS,EAAE,EACnB,QAAQ,OAAQ,EAAE,GAGvB,KAAK,OAAO,SAAUD,EAAI,KAAMC,CAAK,EAGzC,KAAK,OAAOD,CAAG,IAInB,wBAAyB,SAASlB,EAAOzB,EAASa,EAASkC,EAAW,CACpE,IAAI/B,EAASS,EAAM,OACnB,YAAK,WAAWT,CAAM,EAEtB,KAAK,OAAO,cAAehB,CAAO,EAClC,KAAK,OAAO,cAAea,CAAO,EAE9BY,EAAM,KACR,KAAK,OAAOA,EAAM,IAAI,EAEtB,KAAK,OAAO,YAAasB,CAAS,EAG7B/B,GAGT,gBAAiB,SAASU,EAAM,CAC9B,QACMW,EAAQ,EAAG1C,EAAM,KAAK,QAAQ,YAAY,OAC9C0C,EAAQ1C,EACR0C,IACA,CACA,IAAIW,EAAc,KAAK,QAAQ,YAAYX,CAAK,EAC9CY,EAAQD,GAAe9C,GAAA,QAAQ8C,EAAatB,CAAI,EAClD,GAAIsB,GAAeC,GAAS,EAC1B,MAAO,CAACZ,EAAOY,CAAK,KAMrB,SAASC,GAAWC,EAAOlD,EAASmD,EAAK,CAC9C,GACED,GAAS,MACR,OAAOA,GAAU,UAAYA,EAAM,OAAS,UAE7C,MAAM,IAAA5C,GAAA,QACJ,iFACE4C,CAAK,EAIXlD,EAAUA,GAAW,CAAA,EACf,SAAUA,IACdA,EAAQ,KAAO,IAEbA,EAAQ,SACVA,EAAQ,UAAY,IAGtB,IAAIoD,EAAMD,EAAI,MAAMD,EAAOlD,CAAO,EAChCqD,EAAc,IAAIF,EAAI,SAAQ,EAAG,QAAQC,EAAKpD,CAAO,EACvD,OAAO,IAAImD,EAAI,mBAAkB,EAAG,QAAQE,EAAarD,CAAO,EAG3D,SAASsD,GAAQJ,EAAOlD,EAAcmD,EAAK,CAChD,GAD6BnD,IAAO,SAAPA,EAAU,CAAA,GAErCkD,GAAS,MACR,OAAOA,GAAU,UAAYA,EAAM,OAAS,UAE7C,MAAM,IAAA5C,GAAA,QACJ,8EACE4C,CAAK,EAIXlD,EAAUC,GAAA,OAAO,CAAA,EAAID,CAAO,EACtB,SAAUA,IACdA,EAAQ,KAAO,IAEbA,EAAQ,SACVA,EAAQ,UAAY,IAGtB,IAAIuD,EAAQ,OAEZ,SAASC,GAAe,CACtB,IAAIJ,EAAMD,EAAI,MAAMD,EAAOlD,CAAO,EAChCqD,EAAc,IAAIF,EAAI,SAAQ,EAAG,QAAQC,EAAKpD,CAAO,EACrDyD,EAAe,IAAIN,EAAI,mBAAkB,EAAG,QAC1CE,EACArD,EACA,OACA,EAAI,EAER,OAAOmD,EAAI,SAASM,CAAY,EAIlC,SAASlD,EAAImD,EAASC,EAAa,CACjC,OAAKJ,IACHA,EAAWC,EAAY,GAElBD,EAAS,KAAK,KAAMG,EAASC,CAAW,EAEjD,OAAApD,EAAI,OAAS,SAASqD,EAAc,CAClC,OAAKL,IACHA,EAAWC,EAAY,GAElBD,EAAS,OAAOK,CAAY,GAErCrD,EAAI,OAAS,SAASZ,EAAGkE,EAAMd,EAAae,EAAQ,CAClD,OAAKP,IACHA,EAAWC,EAAY,GAElBD,EAAS,OAAO5D,EAAGkE,EAAMd,EAAae,CAAM,GAE9CvD,EAGT,SAAST,GAAUiE,EAAGC,EAAG,CACvB,GAAID,IAAMC,EACR,MAAO,GAGT,GAAI/D,GAAA,QAAQ8D,CAAC,GAAK9D,GAAA,QAAQ+D,CAAC,GAAKD,EAAE,SAAWC,EAAE,OAAQ,CACrD,QAASrE,EAAI,EAAGA,EAAIoE,EAAE,OAAQpE,IAC5B,GAAI,CAACG,GAAUiE,EAAEpE,CAAC,EAAGqE,EAAErE,CAAC,CAAC,EACvB,MAAO,GAGX,MAAO,IAIX,SAASgB,GAAuBa,EAAO,CACrC,GAAI,CAACA,EAAM,KAAK,MAAO,CACrB,IAAIyC,EAAUzC,EAAM,KAGpBA,EAAM,KAAO,CACX,KAAM,iBACN,KAAM,GACN,MAAO,EACP,MAAO,CAACyC,EAAQ,SAAW,EAAE,EAC7B,SAAUA,EAAQ,SAAW,GAC7B,IAAKA,EAAQ,SC9kBnB,IAAAC,GAAAC,EAAAC,IAAA,CAOA,IAAIC,GAAe,mEAAmE,MAAM,EAAE,EAK9FD,GAAQ,OAAS,SAAUE,EAAQ,CACjC,GAAI,GAAKA,GAAUA,EAASD,GAAa,OACvC,OAAOA,GAAaC,CAAM,EAE5B,MAAM,IAAI,UAAU,6BAA+BA,CAAM,CAC3D,EAMAF,GAAQ,OAAS,SAAUG,EAAU,CACnC,IAAIC,EAAO,GACPC,EAAO,GAEPC,EAAU,GACVC,EAAU,IAEVC,EAAO,GACPC,EAAO,GAEPC,EAAO,GACPC,EAAQ,GAERC,EAAe,GACfC,EAAe,GAGnB,OAAIT,GAAQD,GAAYA,GAAYE,EAC1BF,EAAWC,EAIjBE,GAAWH,GAAYA,GAAYI,EAC7BJ,EAAWG,EAAUM,EAI3BJ,GAAQL,GAAYA,GAAYM,EAC1BN,EAAWK,EAAOK,EAIxBV,GAAYO,EACP,GAILP,GAAYQ,EACP,GAIF,EACT,IClEA,IAAAG,GAAAC,EAAAC,IAAA,CAqCA,IAAIC,GAAS,KAcTC,GAAiB,EAGjBC,GAAW,GAAKD,GAGhBE,GAAgBD,GAAW,EAG3BE,GAAuBF,GAQ3B,SAASG,GAAYC,EAAQ,CAC3B,OAAOA,EAAS,GACV,CAACA,GAAW,GAAK,GAClBA,GAAU,GAAK,CACtB,CAQA,SAASC,GAAcD,EAAQ,CAC7B,IAAIE,GAAcF,EAAS,KAAO,EAC9BG,EAAUH,GAAU,EACxB,OAAOE,EACH,CAACC,EACDA,CACN,CAKAV,GAAQ,OAAS,SAA0BO,EAAQ,CACjD,IAAII,EAAU,GACVC,EAEAC,EAAMP,GAAYC,CAAM,EAE5B,GACEK,EAAQC,EAAMT,GACdS,KAASX,GACLW,EAAM,IAGRD,GAASP,IAEXM,GAAWV,GAAO,OAAOW,CAAK,QACvBC,EAAM,GAEf,OAAOF,CACT,EAMAX,GAAQ,OAAS,SAA0Bc,EAAMC,EAAQC,EAAW,CAClE,IAAIC,EAASH,EAAK,OACdI,EAAS,EACTC,EAAQ,EACRC,EAAcR,EAElB,EAAG,CACD,GAAIG,GAAUE,EACZ,MAAM,IAAI,MAAM,4CAA4C,EAI9D,GADAL,EAAQX,GAAO,OAAOa,EAAK,WAAWC,GAAQ,CAAC,EAC3CH,IAAU,GACZ,MAAM,IAAI,MAAM,yBAA2BE,EAAK,OAAOC,EAAS,CAAC,CAAC,EAGpEK,EAAe,CAAC,EAAER,EAAQP,IAC1BO,GAASR,GACTc,EAASA,GAAUN,GAASO,GAC5BA,GAASjB,EACX,OAASkB,GAETJ,EAAU,MAAQR,GAAcU,CAAM,EACtCF,EAAU,KAAOD,CACnB,IC3IA,IAAAM,GAAAC,EAAAC,IAAA,CAiBA,SAASC,GAAOC,EAAOC,EAAOC,EAAe,CAC3C,GAAID,KAASD,EACX,OAAOA,EAAMC,CAAK,EACb,GAAI,UAAU,SAAW,EAC9B,OAAOC,EAEP,MAAM,IAAI,MAAM,IAAMD,EAAQ,2BAA2B,CAE7D,CACAH,GAAQ,OAASC,GAEjB,IAAII,GAAY,iEACZC,GAAgB,gBAEpB,SAASC,GAASC,EAAM,CACtB,IAAIC,EAAQD,EAAK,MAAMH,EAAS,EAChC,OAAKI,EAGE,CACL,OAAQA,EAAM,CAAC,EACf,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,EACb,KAAMA,EAAM,CAAC,CACf,EARS,IASX,CACAT,GAAQ,SAAWO,GAEnB,SAASG,GAAYC,EAAY,CAC/B,IAAIC,EAAM,GACV,OAAID,EAAW,SACbC,GAAOD,EAAW,OAAS,KAE7BC,GAAO,KACHD,EAAW,OACbC,GAAOD,EAAW,KAAO,KAEvBA,EAAW,OACbC,GAAOD,EAAW,MAEhBA,EAAW,OACbC,GAAO,IAAMD,EAAW,MAEtBA,EAAW,OACbC,GAAOD,EAAW,MAEbC,CACT,CACAZ,GAAQ,YAAcU,GAatB,SAASG,GAAUC,EAAO,CACxB,IAAIC,EAAOD,EACPF,EAAML,GAASO,CAAK,EACxB,GAAIF,EAAK,CACP,GAAI,CAACA,EAAI,KACP,OAAOE,EAETC,EAAOH,EAAI,IACb,CAIA,QAHII,EAAahB,GAAQ,WAAWe,CAAI,EAEpCE,EAAQF,EAAK,MAAM,KAAK,EACnBG,EAAMC,EAAK,EAAGC,EAAIH,EAAM,OAAS,EAAGG,GAAK,EAAGA,IACnDF,EAAOD,EAAMG,CAAC,EACVF,IAAS,IACXD,EAAM,OAAOG,EAAG,CAAC,EACRF,IAAS,KAClBC,IACSA,EAAK,IACVD,IAAS,IAIXD,EAAM,OAAOG,EAAI,EAAGD,CAAE,EACtBA,EAAK,IAELF,EAAM,OAAOG,EAAG,CAAC,EACjBD,MAUN,OANAJ,EAAOE,EAAM,KAAK,GAAG,EAEjBF,IAAS,KACXA,EAAOC,EAAa,IAAM,KAGxBJ,GACFA,EAAI,KAAOG,EACJL,GAAYE,CAAG,GAEjBG,CACT,CACAf,GAAQ,UAAYa,GAkBpB,SAASQ,GAAKC,EAAOR,EAAO,CACtBQ,IAAU,KACZA,EAAQ,KAENR,IAAU,KACZA,EAAQ,KAEV,IAAIS,EAAWhB,GAASO,CAAK,EACzBU,EAAWjB,GAASe,CAAK,EAM7B,GALIE,IACFF,EAAQE,EAAS,MAAQ,KAIvBD,GAAY,CAACA,EAAS,OACxB,OAAIC,IACFD,EAAS,OAASC,EAAS,QAEtBd,GAAYa,CAAQ,EAG7B,GAAIA,GAAYT,EAAM,MAAMR,EAAa,EACvC,OAAOQ,EAIT,GAAIU,GAAY,CAACA,EAAS,MAAQ,CAACA,EAAS,KAC1C,OAAAA,EAAS,KAAOV,EACTJ,GAAYc,CAAQ,EAG7B,IAAIC,EAASX,EAAM,OAAO,CAAC,IAAM,IAC7BA,EACAD,GAAUS,EAAM,QAAQ,OAAQ,EAAE,EAAI,IAAMR,CAAK,EAErD,OAAIU,GACFA,EAAS,KAAOC,EACTf,GAAYc,CAAQ,GAEtBC,CACT,CACAzB,GAAQ,KAAOqB,GAEfrB,GAAQ,WAAa,SAAUc,EAAO,CACpC,OAAOA,EAAM,OAAO,CAAC,IAAM,KAAOT,GAAU,KAAKS,CAAK,CACxD,EAQA,SAASY,GAASJ,EAAOR,EAAO,CAC1BQ,IAAU,KACZA,EAAQ,KAGVA,EAAQA,EAAM,QAAQ,MAAO,EAAE,EAO/B,QADIK,EAAQ,EACLb,EAAM,QAAQQ,EAAQ,GAAG,IAAM,GAAG,CACvC,IAAIM,EAAQN,EAAM,YAAY,GAAG,EASjC,GARIM,EAAQ,IAOZN,EAAQA,EAAM,MAAM,EAAGM,CAAK,EACxBN,EAAM,MAAM,mBAAmB,GACjC,OAAOR,EAGT,EAAEa,CACJ,CAGA,OAAO,MAAMA,EAAQ,CAAC,EAAE,KAAK,KAAK,EAAIb,EAAM,OAAOQ,EAAM,OAAS,CAAC,CACrE,CACAtB,GAAQ,SAAW0B,GAEnB,IAAIG,IAAqB,UAAY,CACnC,IAAIC,EAAM,OAAO,OAAO,IAAI,EAC5B,MAAO,EAAE,cAAeA,EAC1B,GAAE,EAEF,SAASC,GAAUC,EAAG,CACpB,OAAOA,CACT,CAWA,SAASC,GAAYC,EAAM,CACzB,OAAIC,GAAcD,CAAI,EACb,IAAMA,EAGRA,CACT,CACAlC,GAAQ,YAAc6B,GAAoBE,GAAWE,GAErD,SAASG,GAAcF,EAAM,CAC3B,OAAIC,GAAcD,CAAI,EACbA,EAAK,MAAM,CAAC,EAGdA,CACT,CACAlC,GAAQ,cAAgB6B,GAAoBE,GAAWK,GAEvD,SAASD,GAAcH,EAAG,CACxB,GAAI,CAACA,EACH,MAAO,GAGT,IAAIK,EAASL,EAAE,OAMf,GAJIK,EAAS,GAITL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,KAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,IAC7BL,EAAE,WAAWK,EAAS,CAAC,IAAM,GAC/B,MAAO,GAGT,QAASjB,EAAIiB,EAAS,GAAIjB,GAAK,EAAGA,IAChC,GAAIY,EAAE,WAAWZ,CAAC,IAAM,GACtB,MAAO,GAIX,MAAO,EACT,CAUA,SAASkB,GAA2BC,EAAUC,EAAUC,EAAqB,CAC3E,IAAIC,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EAqBjD,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GAAKD,KAIjBC,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,KAIZA,EAAMH,EAAS,cAAgBC,EAAS,cACpCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAxC,GAAQ,2BAA6BsC,GAWrC,SAASM,GAAoCL,EAAUC,EAAUK,EAAsB,CACrF,IAAIH,EAAMH,EAAS,cAAgBC,EAAS,cAqB5C,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,GAAKG,KAIjBH,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EACzCE,IAAQ,KAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAxC,GAAQ,oCAAsC4C,GAE9C,SAASD,GAAOG,EAAOC,EAAO,CAC5B,OAAID,IAAUC,EACL,EAGLD,IAAU,KACL,EAGLC,IAAU,KACL,GAGLD,EAAQC,EACH,EAGF,EACT,CAMA,SAASC,GAAoCT,EAAUC,EAAU,CAC/D,IAAIE,EAAMH,EAAS,cAAgBC,EAAS,cAqB5C,OApBIE,IAAQ,IAIZA,EAAMH,EAAS,gBAAkBC,EAAS,gBACtCE,IAAQ,KAIZA,EAAMC,GAAOJ,EAAS,OAAQC,EAAS,MAAM,EACzCE,IAAQ,KAIZA,EAAMH,EAAS,aAAeC,EAAS,aACnCE,IAAQ,KAIZA,EAAMH,EAAS,eAAiBC,EAAS,eACrCE,IAAQ,GACHA,EAGFC,GAAOJ,EAAS,KAAMC,EAAS,IAAI,CAC5C,CACAxC,GAAQ,oCAAsCgD,GAO9C,SAASC,GAAoBC,EAAK,CAChC,OAAO,KAAK,MAAMA,EAAI,QAAQ,iBAAkB,EAAE,CAAC,CACrD,CACAlD,GAAQ,oBAAsBiD,GAM9B,SAASE,GAAiBC,EAAYC,EAAWC,EAAc,CA8B7D,GA7BAD,EAAYA,GAAa,GAErBD,IAEEA,EAAWA,EAAW,OAAS,CAAC,IAAM,KAAOC,EAAU,CAAC,IAAM,MAChED,GAAc,KAOhBC,EAAYD,EAAaC,GAiBvBC,EAAc,CAChB,IAAIC,EAAShD,GAAS+C,CAAY,EAClC,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,kCAAkC,EAEpD,GAAIA,EAAO,KAAM,CAEf,IAAI3B,EAAQ2B,EAAO,KAAK,YAAY,GAAG,EACnC3B,GAAS,IACX2B,EAAO,KAAOA,EAAO,KAAK,UAAU,EAAG3B,EAAQ,CAAC,EAEpD,CACAyB,EAAYhC,GAAKX,GAAY6C,CAAM,EAAGF,CAAS,CACjD,CAEA,OAAOxC,GAAUwC,CAAS,CAC5B,CACArD,GAAQ,iBAAmBmD,KCve3B,IAAAK,GAAAC,EAAAC,IAAA,CAOA,IAAIC,GAAO,KACPC,GAAM,OAAO,UAAU,eACvBC,GAAe,OAAO,IAAQ,IAQlC,SAASC,IAAW,CAClB,KAAK,OAAS,CAAC,EACf,KAAK,KAAOD,GAAe,IAAI,IAAQ,OAAO,OAAO,IAAI,CAC3D,CAKAC,GAAS,UAAY,SAA4BC,EAAQC,EAAkB,CAEzE,QADIC,EAAM,IAAIH,GACL,EAAI,EAAGI,EAAMH,EAAO,OAAQ,EAAIG,EAAK,IAC5CD,EAAI,IAAIF,EAAO,CAAC,EAAGC,CAAgB,EAErC,OAAOC,CACT,EAQAH,GAAS,UAAU,KAAO,UAAyB,CACjD,OAAOD,GAAe,KAAK,KAAK,KAAO,OAAO,oBAAoB,KAAK,IAAI,EAAE,MAC/E,EAOAC,GAAS,UAAU,IAAM,SAAsBK,EAAMH,EAAkB,CACrE,IAAII,EAAOP,GAAeM,EAAOR,GAAK,YAAYQ,CAAI,EAClDE,EAAcR,GAAe,KAAK,IAAIM,CAAI,EAAIP,GAAI,KAAK,KAAK,KAAMQ,CAAI,EACtEE,EAAM,KAAK,OAAO,QAClB,CAACD,GAAeL,IAClB,KAAK,OAAO,KAAKG,CAAI,EAElBE,IACCR,GACF,KAAK,KAAK,IAAIM,EAAMG,CAAG,EAEvB,KAAK,KAAKF,CAAI,EAAIE,EAGxB,EAOAR,GAAS,UAAU,IAAM,SAAsBK,EAAM,CACnD,GAAIN,GACF,OAAO,KAAK,KAAK,IAAIM,CAAI,EAEzB,IAAIC,EAAOT,GAAK,YAAYQ,CAAI,EAChC,OAAOP,GAAI,KAAK,KAAK,KAAMQ,CAAI,CAEnC,EAOAN,GAAS,UAAU,QAAU,SAA0BK,EAAM,CAC3D,GAAIN,GAAc,CAChB,IAAIS,EAAM,KAAK,KAAK,IAAIH,CAAI,EAC5B,GAAIG,GAAO,EACP,OAAOA,CAEb,KAAO,CACL,IAAIF,EAAOT,GAAK,YAAYQ,CAAI,EAChC,GAAIP,GAAI,KAAK,KAAK,KAAMQ,CAAI,EAC1B,OAAO,KAAK,KAAKA,CAAI,CAEzB,CAEA,MAAM,IAAI,MAAM,IAAMD,EAAO,sBAAsB,CACrD,EAOAL,GAAS,UAAU,GAAK,SAAqBS,EAAM,CACjD,GAAIA,GAAQ,GAAKA,EAAO,KAAK,OAAO,OAClC,OAAO,KAAK,OAAOA,CAAI,EAEzB,MAAM,IAAI,MAAM,yBAA2BA,CAAI,CACjD,EAOAT,GAAS,UAAU,QAAU,UAA4B,CACvD,OAAO,KAAK,OAAO,MAAM,CAC3B,EAEAJ,GAAQ,SAAWI,KCxHnB,IAAAU,GAAAC,EAAAC,IAAA,CAOA,IAAIC,GAAO,KAMX,SAASC,GAAuBC,EAAUC,EAAU,CAElD,IAAIC,EAAQF,EAAS,cACjBG,EAAQF,EAAS,cACjBG,EAAUJ,EAAS,gBACnBK,EAAUJ,EAAS,gBACvB,OAAOE,EAAQD,GAASC,GAASD,GAASG,GAAWD,GAC9CN,GAAK,oCAAoCE,EAAUC,CAAQ,GAAK,CACzE,CAOA,SAASK,IAAc,CACrB,KAAK,OAAS,CAAC,EACf,KAAK,QAAU,GAEf,KAAK,MAAQ,CAAC,cAAe,GAAI,gBAAiB,CAAC,CACrD,CAQAA,GAAY,UAAU,gBACpB,SAA6BC,EAAWC,EAAU,CAChD,KAAK,OAAO,QAAQD,EAAWC,CAAQ,CACzC,EAOFF,GAAY,UAAU,IAAM,SAAyBG,EAAU,CACzDV,GAAuB,KAAK,MAAOU,CAAQ,GAC7C,KAAK,MAAQA,EACb,KAAK,OAAO,KAAKA,CAAQ,IAEzB,KAAK,QAAU,GACf,KAAK,OAAO,KAAKA,CAAQ,EAE7B,EAWAH,GAAY,UAAU,QAAU,UAA+B,CAC7D,OAAK,KAAK,UACR,KAAK,OAAO,KAAKR,GAAK,mCAAmC,EACzD,KAAK,QAAU,IAEV,KAAK,MACd,EAEAD,GAAQ,YAAcS,KC9EtB,IAAAI,GAAAC,EAAAC,IAAA,CAOA,IAAIC,GAAY,KACZC,GAAO,KACPC,GAAW,KAAuB,SAClCC,GAAc,KAA0B,YAU5C,SAASC,GAAmBC,EAAO,CAC5BA,IACHA,EAAQ,CAAC,GAEX,KAAK,MAAQJ,GAAK,OAAOI,EAAO,OAAQ,IAAI,EAC5C,KAAK,YAAcJ,GAAK,OAAOI,EAAO,aAAc,IAAI,EACxD,KAAK,gBAAkBJ,GAAK,OAAOI,EAAO,iBAAkB,EAAK,EACjE,KAAK,SAAW,IAAIH,GACpB,KAAK,OAAS,IAAIA,GAClB,KAAK,UAAY,IAAIC,GACrB,KAAK,iBAAmB,IAC1B,CAEAC,GAAmB,UAAU,SAAW,EAOxCA,GAAmB,cACjB,SAA0CE,EAAoB,CAC5D,IAAIC,EAAaD,EAAmB,WAChCE,EAAY,IAAIJ,GAAmB,CACrC,KAAME,EAAmB,KACzB,WAAYC,CACd,CAAC,EACD,OAAAD,EAAmB,YAAY,SAAUG,EAAS,CAChD,IAAIC,EAAa,CACf,UAAW,CACT,KAAMD,EAAQ,cACd,OAAQA,EAAQ,eAClB,CACF,EAEIA,EAAQ,QAAU,OACpBC,EAAW,OAASD,EAAQ,OACxBF,GAAc,OAChBG,EAAW,OAAST,GAAK,SAASM,EAAYG,EAAW,MAAM,GAGjEA,EAAW,SAAW,CACpB,KAAMD,EAAQ,aACd,OAAQA,EAAQ,cAClB,EAEIA,EAAQ,MAAQ,OAClBC,EAAW,KAAOD,EAAQ,OAI9BD,EAAU,WAAWE,CAAU,CACjC,CAAC,EACDJ,EAAmB,QAAQ,QAAQ,SAAUK,EAAY,CACvD,IAAIC,EAAiBD,EACjBJ,IAAe,OACjBK,EAAiBX,GAAK,SAASM,EAAYI,CAAU,GAGlDH,EAAU,SAAS,IAAII,CAAc,GACxCJ,EAAU,SAAS,IAAII,CAAc,EAGvC,IAAIC,EAAUP,EAAmB,iBAAiBK,CAAU,EACxDE,GAAW,MACbL,EAAU,iBAAiBG,EAAYE,CAAO,CAElD,CAAC,EACML,CACT,EAYFJ,GAAmB,UAAU,WAC3B,SAAuCC,EAAO,CAC5C,IAAIS,EAAYb,GAAK,OAAOI,EAAO,WAAW,EAC1CU,EAAWd,GAAK,OAAOI,EAAO,WAAY,IAAI,EAC9CW,EAASf,GAAK,OAAOI,EAAO,SAAU,IAAI,EAC1CY,EAAOhB,GAAK,OAAOI,EAAO,OAAQ,IAAI,EAErC,KAAK,iBACR,KAAK,iBAAiBS,EAAWC,EAAUC,EAAQC,CAAI,EAGrDD,GAAU,OACZA,EAAS,OAAOA,CAAM,EACjB,KAAK,SAAS,IAAIA,CAAM,GAC3B,KAAK,SAAS,IAAIA,CAAM,GAIxBC,GAAQ,OACVA,EAAO,OAAOA,CAAI,EACb,KAAK,OAAO,IAAIA,CAAI,GACvB,KAAK,OAAO,IAAIA,CAAI,GAIxB,KAAK,UAAU,IAAI,CACjB,cAAeH,EAAU,KACzB,gBAAiBA,EAAU,OAC3B,aAAcC,GAAY,MAAQA,EAAS,KAC3C,eAAgBA,GAAY,MAAQA,EAAS,OAC7C,OAAQC,EACR,KAAMC,CACR,CAAC,CACH,EAKFb,GAAmB,UAAU,iBAC3B,SAA6Cc,EAAaC,EAAgB,CACxE,IAAIH,EAASE,EACT,KAAK,aAAe,OACtBF,EAASf,GAAK,SAAS,KAAK,YAAae,CAAM,GAG7CG,GAAkB,MAGf,KAAK,mBACR,KAAK,iBAAmB,OAAO,OAAO,IAAI,GAE5C,KAAK,iBAAiBlB,GAAK,YAAYe,CAAM,CAAC,EAAIG,GACzC,KAAK,mBAGd,OAAO,KAAK,iBAAiBlB,GAAK,YAAYe,CAAM,CAAC,EACjD,OAAO,KAAK,KAAK,gBAAgB,EAAE,SAAW,IAChD,KAAK,iBAAmB,MAG9B,EAkBFZ,GAAmB,UAAU,eAC3B,SAA2CE,EAAoBY,EAAaE,EAAgB,CAC1F,IAAIT,EAAaO,EAEjB,GAAIA,GAAe,KAAM,CACvB,GAAIZ,EAAmB,MAAQ,KAC7B,MAAM,IAAI,MACR,8IAEF,EAEFK,EAAaL,EAAmB,IAClC,CACA,IAAIC,EAAa,KAAK,YAElBA,GAAc,OAChBI,EAAaV,GAAK,SAASM,EAAYI,CAAU,GAInD,IAAIU,EAAa,IAAInB,GACjBoB,EAAW,IAAIpB,GAGnB,KAAK,UAAU,gBAAgB,SAAUO,EAAS,CAChD,GAAIA,EAAQ,SAAWE,GAAcF,EAAQ,cAAgB,KAAM,CAEjE,IAAIM,EAAWT,EAAmB,oBAAoB,CACpD,KAAMG,EAAQ,aACd,OAAQA,EAAQ,cAClB,CAAC,EACGM,EAAS,QAAU,OAErBN,EAAQ,OAASM,EAAS,OACtBK,GAAkB,OACpBX,EAAQ,OAASR,GAAK,KAAKmB,EAAgBX,EAAQ,MAAM,GAEvDF,GAAc,OAChBE,EAAQ,OAASR,GAAK,SAASM,EAAYE,EAAQ,MAAM,GAE3DA,EAAQ,aAAeM,EAAS,KAChCN,EAAQ,eAAiBM,EAAS,OAC9BA,EAAS,MAAQ,OACnBN,EAAQ,KAAOM,EAAS,MAG9B,CAEA,IAAIC,EAASP,EAAQ,OACjBO,GAAU,MAAQ,CAACK,EAAW,IAAIL,CAAM,GAC1CK,EAAW,IAAIL,CAAM,EAGvB,IAAIC,EAAOR,EAAQ,KACfQ,GAAQ,MAAQ,CAACK,EAAS,IAAIL,CAAI,GACpCK,EAAS,IAAIL,CAAI,CAGrB,EAAG,IAAI,EACP,KAAK,SAAWI,EAChB,KAAK,OAASC,EAGdhB,EAAmB,QAAQ,QAAQ,SAAUK,EAAY,CACvD,IAAIE,EAAUP,EAAmB,iBAAiBK,CAAU,EACxDE,GAAW,OACTO,GAAkB,OACpBT,EAAaV,GAAK,KAAKmB,EAAgBT,CAAU,GAE/CJ,GAAc,OAChBI,EAAaV,GAAK,SAASM,EAAYI,CAAU,GAEnD,KAAK,iBAAiBA,EAAYE,CAAO,EAE7C,EAAG,IAAI,CACT,EAaFT,GAAmB,UAAU,iBAC3B,SAA4CmB,EAAYC,EAAWC,EACvBC,EAAO,CAKjD,GAAIF,GAAa,OAAOA,EAAU,MAAS,UAAY,OAAOA,EAAU,QAAW,SAC/E,MAAM,IAAI,MACN,8OAGJ,EAGJ,GAAI,EAAAD,GAAc,SAAUA,GAAc,WAAYA,GAC/CA,EAAW,KAAO,GAAKA,EAAW,QAAU,GAC5C,CAACC,GAAa,CAACC,GAAW,CAACC,GAI7B,IAAIH,GAAc,SAAUA,GAAc,WAAYA,GAC/CC,GAAa,SAAUA,GAAa,WAAYA,GAChDD,EAAW,KAAO,GAAKA,EAAW,QAAU,GAC5CC,EAAU,KAAO,GAAKA,EAAU,QAAU,GAC1CC,EAEV,OAGA,MAAM,IAAI,MAAM,oBAAsB,KAAK,UAAU,CACnD,UAAWF,EACX,OAAQE,EACR,SAAUD,EACV,KAAME,CACR,CAAC,CAAC,EAEN,EAMFtB,GAAmB,UAAU,mBAC3B,UAAgD,CAc9C,QAbIuB,EAA0B,EAC1BC,EAAwB,EACxBC,EAAyB,EACzBC,EAAuB,EACvBC,EAAe,EACfC,EAAiB,EACjBC,EAAS,GACTC,EACAzB,EACA0B,EACAC,EAEAC,EAAW,KAAK,UAAU,QAAQ,EAC7BC,EAAI,EAAGC,EAAMF,EAAS,OAAQC,EAAIC,EAAKD,IAAK,CAInD,GAHA7B,EAAU4B,EAASC,CAAC,EACpBJ,EAAO,GAEHzB,EAAQ,gBAAkBmB,EAE5B,IADAD,EAA0B,EACnBlB,EAAQ,gBAAkBmB,GAC/BM,GAAQ,IACRN,YAIEU,EAAI,EAAG,CACT,GAAI,CAACrC,GAAK,oCAAoCQ,EAAS4B,EAASC,EAAI,CAAC,CAAC,EACpE,SAEFJ,GAAQ,GACV,CAGFA,GAAQlC,GAAU,OAAOS,EAAQ,gBACJkB,CAAuB,EACpDA,EAA0BlB,EAAQ,gBAE9BA,EAAQ,QAAU,OACpB2B,EAAY,KAAK,SAAS,QAAQ3B,EAAQ,MAAM,EAChDyB,GAAQlC,GAAU,OAAOoC,EAAYJ,CAAc,EACnDA,EAAiBI,EAGjBF,GAAQlC,GAAU,OAAOS,EAAQ,aAAe,EACnBqB,CAAoB,EACjDA,EAAuBrB,EAAQ,aAAe,EAE9CyB,GAAQlC,GAAU,OAAOS,EAAQ,eACJoB,CAAsB,EACnDA,EAAyBpB,EAAQ,eAE7BA,EAAQ,MAAQ,OAClB0B,EAAU,KAAK,OAAO,QAAQ1B,EAAQ,IAAI,EAC1CyB,GAAQlC,GAAU,OAAOmC,EAAUJ,CAAY,EAC/CA,EAAeI,IAInBF,GAAUC,CACZ,CAEA,OAAOD,CACT,EAEF7B,GAAmB,UAAU,wBAC3B,SAAmDoC,EAAUC,EAAa,CACxE,OAAOD,EAAS,IAAI,SAAUxB,EAAQ,CACpC,GAAI,CAAC,KAAK,iBACR,OAAO,KAELyB,GAAe,OACjBzB,EAASf,GAAK,SAASwC,EAAazB,CAAM,GAE5C,IAAI0B,EAAMzC,GAAK,YAAYe,CAAM,EACjC,OAAO,OAAO,UAAU,eAAe,KAAK,KAAK,iBAAkB0B,CAAG,EAClE,KAAK,iBAAiBA,CAAG,EACzB,IACN,EAAG,IAAI,CACT,EAKFtC,GAAmB,UAAU,OAC3B,UAAqC,CACnC,IAAIuC,EAAM,CACR,QAAS,KAAK,SACd,QAAS,KAAK,SAAS,QAAQ,EAC/B,MAAO,KAAK,OAAO,QAAQ,EAC3B,SAAU,KAAK,mBAAmB,CACpC,EACA,OAAI,KAAK,OAAS,OAChBA,EAAI,KAAO,KAAK,OAEd,KAAK,aAAe,OACtBA,EAAI,WAAa,KAAK,aAEpB,KAAK,mBACPA,EAAI,eAAiB,KAAK,wBAAwBA,EAAI,QAASA,EAAI,UAAU,GAGxEA,CACT,EAKFvC,GAAmB,UAAU,SAC3B,UAAuC,CACrC,OAAO,KAAK,UAAU,KAAK,OAAO,CAAC,CACrC,EAEFL,GAAQ,mBAAqBK,KCxa7B,IAAAwC,GAAAC,EAAAC,IAAA,CAOAA,GAAQ,qBAAuB,EAC/BA,GAAQ,kBAAoB,EAe5B,SAASC,GAAgBC,EAAMC,EAAOC,EAASC,EAAWC,EAAUC,EAAO,CAUzE,IAAIC,EAAM,KAAK,OAAOL,EAAQD,GAAQ,CAAC,EAAIA,EACvCO,EAAMH,EAASF,EAASC,EAAUG,CAAG,EAAG,EAAI,EAChD,OAAIC,IAAQ,EAEHD,EAEAC,EAAM,EAETN,EAAQK,EAAM,EAETP,GAAgBO,EAAKL,EAAOC,EAASC,EAAWC,EAAUC,CAAK,EAKpEA,GAASP,GAAQ,kBACZG,EAAQE,EAAU,OAASF,EAAQ,GAEnCK,EAKLA,EAAMN,EAAO,EAERD,GAAgBC,EAAMM,EAAKJ,EAASC,EAAWC,EAAUC,CAAK,EAInEA,GAASP,GAAQ,kBACZQ,EAEAN,EAAO,EAAI,GAAKA,CAG7B,CAoBAF,GAAQ,OAAS,SAAgBI,EAASC,EAAWC,EAAUC,EAAO,CACpE,GAAIF,EAAU,SAAW,EACvB,MAAO,GAGT,IAAIK,EAAQT,GAAgB,GAAII,EAAU,OAAQD,EAASC,EAC/BC,EAAUC,GAASP,GAAQ,oBAAoB,EAC3E,GAAIU,EAAQ,EACV,MAAO,GAMT,KAAOA,EAAQ,GAAK,GACdJ,EAASD,EAAUK,CAAK,EAAGL,EAAUK,EAAQ,CAAC,EAAG,EAAI,IAAM,GAG/D,EAAEA,EAGJ,OAAOA,CACT,IC9GA,IAAAC,GAAAC,EAAAC,IAAA,CA2BA,SAASC,GAAKC,EAAKC,EAAGC,EAAG,CACvB,IAAIC,EAAOH,EAAIC,CAAC,EAChBD,EAAIC,CAAC,EAAID,EAAIE,CAAC,EACdF,EAAIE,CAAC,EAAIC,CACX,CAUA,SAASC,GAAiBC,EAAKC,EAAM,CACnC,OAAO,KAAK,MAAMD,EAAO,KAAK,OAAO,GAAKC,EAAOD,EAAK,CACxD,CAcA,SAASE,GAAYP,EAAKQ,EAAYC,EAAGC,EAAG,CAK1C,GAAID,EAAIC,EAAG,CAYT,IAAIC,EAAaP,GAAiBK,EAAGC,CAAC,EAClCE,EAAIH,EAAI,EAEZV,GAAKC,EAAKW,EAAYD,CAAC,EASvB,QARIG,EAAQb,EAAIU,CAAC,EAQRI,EAAIL,EAAGK,EAAIJ,EAAGI,IACjBN,EAAWR,EAAIc,CAAC,EAAGD,CAAK,GAAK,IAC/BD,GAAK,EACLb,GAAKC,EAAKY,EAAGE,CAAC,GAIlBf,GAAKC,EAAKY,EAAI,EAAGE,CAAC,EAClB,IAAIC,EAAIH,EAAI,EAIZL,GAAYP,EAAKQ,EAAYC,EAAGM,EAAI,CAAC,EACrCR,GAAYP,EAAKQ,EAAYO,EAAI,EAAGL,CAAC,CACvC,CACF,CAUAZ,GAAQ,UAAY,SAAUE,EAAKQ,EAAY,CAC7CD,GAAYP,EAAKQ,EAAY,EAAGR,EAAI,OAAS,CAAC,CAChD,ICjHA,IAAAgB,GAAAC,EAAAC,IAAA,CAOA,IAAIC,EAAO,KACPC,GAAe,KACfC,GAAW,KAAuB,SAClCC,GAAY,KACZC,GAAY,KAAwB,UAExC,SAASC,EAAkBC,EAAYC,EAAe,CACpD,IAAIC,EAAYF,EAChB,OAAI,OAAOA,GAAe,WACxBE,EAAYR,EAAK,oBAAoBM,CAAU,GAG1CE,EAAU,UAAY,KACzB,IAAIC,GAAyBD,EAAWD,CAAa,EACrD,IAAIG,GAAuBF,EAAWD,CAAa,CACzD,CAEAF,EAAkB,cAAgB,SAASC,EAAYC,EAAe,CACpE,OAAOG,GAAuB,cAAcJ,EAAYC,CAAa,CACvE,EAKAF,EAAkB,UAAU,SAAW,EAgCvCA,EAAkB,UAAU,oBAAsB,KAClD,OAAO,eAAeA,EAAkB,UAAW,qBAAsB,CACvE,aAAc,GACd,WAAY,GACZ,IAAK,UAAY,CACf,OAAK,KAAK,qBACR,KAAK,eAAe,KAAK,UAAW,KAAK,UAAU,EAG9C,KAAK,mBACd,CACF,CAAC,EAEDA,EAAkB,UAAU,mBAAqB,KACjD,OAAO,eAAeA,EAAkB,UAAW,oBAAqB,CACtE,aAAc,GACd,WAAY,GACZ,IAAK,UAAY,CACf,OAAK,KAAK,oBACR,KAAK,eAAe,KAAK,UAAW,KAAK,UAAU,EAG9C,KAAK,kBACd,CACF,CAAC,EAEDA,EAAkB,UAAU,wBAC1B,SAAkDM,EAAMC,EAAO,CAC7D,IAAIC,EAAIF,EAAK,OAAOC,CAAK,EACzB,OAAOC,IAAM,KAAOA,IAAM,GAC5B,EAOFR,EAAkB,UAAU,eAC1B,SAAyCM,EAAMG,EAAa,CAC1D,MAAM,IAAI,MAAM,0CAA0C,CAC5D,EAEFT,EAAkB,gBAAkB,EACpCA,EAAkB,eAAiB,EAEnCA,EAAkB,qBAAuB,EACzCA,EAAkB,kBAAoB,EAkBtCA,EAAkB,UAAU,YAC1B,SAAuCU,EAAWC,EAAUC,EAAQ,CAClE,IAAIC,EAAUF,GAAY,KACtBG,EAAQF,GAAUZ,EAAkB,gBAEpCe,EACJ,OAAQD,EAAO,CACf,KAAKd,EAAkB,gBACrBe,EAAW,KAAK,mBAChB,MACF,KAAKf,EAAkB,eACrBe,EAAW,KAAK,kBAChB,MACF,QACE,MAAM,IAAI,MAAM,6BAA6B,CAC/C,CAEA,IAAIC,EAAa,KAAK,WACtBD,EAAS,IAAI,SAAUE,EAAS,CAC9B,IAAIC,EAASD,EAAQ,SAAW,KAAO,KAAO,KAAK,SAAS,GAAGA,EAAQ,MAAM,EAC7E,OAAAC,EAASvB,EAAK,iBAAiBqB,EAAYE,EAAQ,KAAK,aAAa,EAC9D,CACL,OAAQA,EACR,cAAeD,EAAQ,cACvB,gBAAiBA,EAAQ,gBACzB,aAAcA,EAAQ,aACtB,eAAgBA,EAAQ,eACxB,KAAMA,EAAQ,OAAS,KAAO,KAAO,KAAK,OAAO,GAAGA,EAAQ,IAAI,CAClE,CACF,EAAG,IAAI,EAAE,QAAQP,EAAWG,CAAO,CACrC,EAwBFb,EAAkB,UAAU,yBAC1B,SAAoDmB,EAAO,CACzD,IAAIC,EAAOzB,EAAK,OAAOwB,EAAO,MAAM,EAMhCE,EAAS,CACX,OAAQ1B,EAAK,OAAOwB,EAAO,QAAQ,EACnC,aAAcC,EACd,eAAgBzB,EAAK,OAAOwB,EAAO,SAAU,CAAC,CAChD,EAGA,GADAE,EAAO,OAAS,KAAK,iBAAiBA,EAAO,MAAM,EAC/CA,EAAO,OAAS,EAClB,MAAO,CAAC,EAGV,IAAIN,EAAW,CAAC,EAEZR,EAAQ,KAAK,aAAac,EACA,KAAK,kBACL,eACA,iBACA1B,EAAK,2BACLC,GAAa,iBAAiB,EAC5D,GAAIW,GAAS,EAAG,CACd,IAAIU,EAAU,KAAK,kBAAkBV,CAAK,EAE1C,GAAIY,EAAM,SAAW,OAOnB,QANIG,EAAeL,EAAQ,aAMpBA,GAAWA,EAAQ,eAAiBK,GACzCP,EAAS,KAAK,CACZ,KAAMpB,EAAK,OAAOsB,EAAS,gBAAiB,IAAI,EAChD,OAAQtB,EAAK,OAAOsB,EAAS,kBAAmB,IAAI,EACpD,WAAYtB,EAAK,OAAOsB,EAAS,sBAAuB,IAAI,CAC9D,CAAC,EAEDA,EAAU,KAAK,kBAAkB,EAAEV,CAAK,MAS1C,SANIgB,EAAiBN,EAAQ,eAMtBA,GACAA,EAAQ,eAAiBG,GACzBH,EAAQ,gBAAkBM,GAC/BR,EAAS,KAAK,CACZ,KAAMpB,EAAK,OAAOsB,EAAS,gBAAiB,IAAI,EAChD,OAAQtB,EAAK,OAAOsB,EAAS,kBAAmB,IAAI,EACpD,WAAYtB,EAAK,OAAOsB,EAAS,sBAAuB,IAAI,CAC9D,CAAC,EAEDA,EAAU,KAAK,kBAAkB,EAAEV,CAAK,CAG9C,CAEA,OAAOQ,CACT,EAEFrB,GAAQ,kBAAoBM,EAoC5B,SAASK,GAAuBJ,EAAYC,EAAe,CACzD,IAAIC,EAAYF,EACZ,OAAOA,GAAe,WACxBE,EAAYR,EAAK,oBAAoBM,CAAU,GAGjD,IAAIuB,EAAU7B,EAAK,OAAOQ,EAAW,SAAS,EAC1CsB,EAAU9B,EAAK,OAAOQ,EAAW,SAAS,EAG1CuB,EAAQ/B,EAAK,OAAOQ,EAAW,QAAS,CAAC,CAAC,EAC1Ca,EAAarB,EAAK,OAAOQ,EAAW,aAAc,IAAI,EACtDwB,EAAiBhC,EAAK,OAAOQ,EAAW,iBAAkB,IAAI,EAC9DY,EAAWpB,EAAK,OAAOQ,EAAW,UAAU,EAC5CyB,EAAOjC,EAAK,OAAOQ,EAAW,OAAQ,IAAI,EAI9C,GAAIqB,GAAW,KAAK,SAClB,MAAM,IAAI,MAAM,wBAA0BA,CAAO,EAG/CR,IACFA,EAAarB,EAAK,UAAUqB,CAAU,GAGxCS,EAAUA,EACP,IAAI,MAAM,EAIV,IAAI9B,EAAK,SAAS,EAKlB,IAAI,SAAUuB,EAAQ,CACrB,OAAOF,GAAcrB,EAAK,WAAWqB,CAAU,GAAKrB,EAAK,WAAWuB,CAAM,EACtEvB,EAAK,SAASqB,EAAYE,CAAM,EAChCA,CACN,CAAC,EAMH,KAAK,OAASrB,GAAS,UAAU6B,EAAM,IAAI,MAAM,EAAG,EAAI,EACxD,KAAK,SAAW7B,GAAS,UAAU4B,EAAS,EAAI,EAEhD,KAAK,iBAAmB,KAAK,SAAS,QAAQ,EAAE,IAAI,SAAUI,EAAG,CAC/D,OAAOlC,EAAK,iBAAiBqB,EAAYa,EAAG3B,CAAa,CAC3D,CAAC,EAED,KAAK,WAAac,EAClB,KAAK,eAAiBW,EACtB,KAAK,UAAYZ,EACjB,KAAK,cAAgBb,EACrB,KAAK,KAAO0B,CACd,CAEAvB,GAAuB,UAAY,OAAO,OAAOL,EAAkB,SAAS,EAC5EK,GAAuB,UAAU,SAAWL,EAM5CK,GAAuB,UAAU,iBAAmB,SAASyB,EAAS,CACpE,IAAIC,EAAiBD,EAKrB,GAJI,KAAK,YAAc,OACrBC,EAAiBpC,EAAK,SAAS,KAAK,WAAYoC,CAAc,GAG5D,KAAK,SAAS,IAAIA,CAAc,EAClC,OAAO,KAAK,SAAS,QAAQA,CAAc,EAK7C,IAAIC,EACJ,IAAKA,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQ,EAAEA,EAC9C,GAAI,KAAK,iBAAiBA,CAAC,GAAKF,EAC9B,OAAOE,EAIX,MAAO,EACT,EAWA3B,GAAuB,cACrB,SAAyCJ,EAAYC,EAAe,CAClE,IAAI+B,EAAM,OAAO,OAAO5B,GAAuB,SAAS,EAEpDqB,EAAQO,EAAI,OAASpC,GAAS,UAAUI,EAAW,OAAO,QAAQ,EAAG,EAAI,EACzEwB,EAAUQ,EAAI,SAAWpC,GAAS,UAAUI,EAAW,SAAS,QAAQ,EAAG,EAAI,EACnFgC,EAAI,WAAahC,EAAW,YAC5BgC,EAAI,eAAiBhC,EAAW,wBAAwBgC,EAAI,SAAS,QAAQ,EACrBA,EAAI,UAAU,EACtEA,EAAI,KAAOhC,EAAW,MACtBgC,EAAI,cAAgB/B,EACpB+B,EAAI,iBAAmBA,EAAI,SAAS,QAAQ,EAAE,IAAI,SAAUJ,EAAG,CAC7D,OAAOlC,EAAK,iBAAiBsC,EAAI,WAAYJ,EAAG3B,CAAa,CAC/D,CAAC,EAWD,QAJIgC,EAAoBjC,EAAW,UAAU,QAAQ,EAAE,MAAM,EACzDkC,EAAwBF,EAAI,oBAAsB,CAAC,EACnDG,EAAuBH,EAAI,mBAAqB,CAAC,EAE5CD,EAAI,EAAGK,EAASH,EAAkB,OAAQF,EAAIK,EAAQL,IAAK,CAClE,IAAIM,EAAaJ,EAAkBF,CAAC,EAChCO,EAAc,IAAIC,GACtBD,EAAY,cAAgBD,EAAW,cACvCC,EAAY,gBAAkBD,EAAW,gBAErCA,EAAW,SACbC,EAAY,OAASd,EAAQ,QAAQa,EAAW,MAAM,EACtDC,EAAY,aAAeD,EAAW,aACtCC,EAAY,eAAiBD,EAAW,eAEpCA,EAAW,OACbC,EAAY,KAAOb,EAAM,QAAQY,EAAW,IAAI,GAGlDF,EAAqB,KAAKG,CAAW,GAGvCJ,EAAsB,KAAKI,CAAW,CACxC,CAEA,OAAAxC,GAAUkC,EAAI,mBAAoBtC,EAAK,0BAA0B,EAE1DsC,CACT,EAKF5B,GAAuB,UAAU,SAAW,EAK5C,OAAO,eAAeA,GAAuB,UAAW,UAAW,CACjE,IAAK,UAAY,CACf,OAAO,KAAK,iBAAiB,MAAM,CACrC,CACF,CAAC,EAKD,SAASmC,IAAU,CACjB,KAAK,cAAgB,EACrB,KAAK,gBAAkB,EACvB,KAAK,OAAS,KACd,KAAK,aAAe,KACpB,KAAK,eAAiB,KACtB,KAAK,KAAO,IACd,CAOAnC,GAAuB,UAAU,eAC/B,SAAyCC,EAAMG,EAAa,CAe1D,QAdIgC,EAAgB,EAChBC,EAA0B,EAC1BC,EAAuB,EACvBC,EAAyB,EACzBC,EAAiB,EACjBC,EAAe,EACfT,EAAS/B,EAAK,OACdC,EAAQ,EACRwC,EAAiB,CAAC,EAClBC,EAAO,CAAC,EACRC,EAAmB,CAAC,EACpBf,EAAoB,CAAC,EACrBjB,EAASiC,EAAKC,EAASC,EAAKC,EAEzB9C,EAAQ8B,GACb,GAAI/B,EAAK,OAAOC,CAAK,IAAM,IACzBkC,IACAlC,IACAmC,EAA0B,UAEnBpC,EAAK,OAAOC,CAAK,IAAM,IAC9BA,QAEG,CASH,IARAU,EAAU,IAAIuB,GACdvB,EAAQ,cAAgBwB,EAOnBW,EAAM7C,EAAO6C,EAAMf,GAClB,MAAK,wBAAwB/B,EAAM8C,CAAG,EADZA,IAC9B,CAOF,GAHAF,EAAM5C,EAAK,MAAMC,EAAO6C,CAAG,EAE3BD,EAAUJ,EAAeG,CAAG,EACxBC,EACF5C,GAAS2C,EAAI,WACR,CAEL,IADAC,EAAU,CAAC,EACJ5C,EAAQ6C,GACbtD,GAAU,OAAOQ,EAAMC,EAAOyC,CAAI,EAClCK,EAAQL,EAAK,MACbzC,EAAQyC,EAAK,KACbG,EAAQ,KAAKE,CAAK,EAGpB,GAAIF,EAAQ,SAAW,EACrB,MAAM,IAAI,MAAM,wCAAwC,EAG1D,GAAIA,EAAQ,SAAW,EACrB,MAAM,IAAI,MAAM,wCAAwC,EAG1DJ,EAAeG,CAAG,EAAIC,CACxB,CAGAlC,EAAQ,gBAAkByB,EAA0BS,EAAQ,CAAC,EAC7DT,EAA0BzB,EAAQ,gBAE9BkC,EAAQ,OAAS,IAEnBlC,EAAQ,OAAS4B,EAAiBM,EAAQ,CAAC,EAC3CN,GAAkBM,EAAQ,CAAC,EAG3BlC,EAAQ,aAAe0B,EAAuBQ,EAAQ,CAAC,EACvDR,EAAuB1B,EAAQ,aAE/BA,EAAQ,cAAgB,EAGxBA,EAAQ,eAAiB2B,EAAyBO,EAAQ,CAAC,EAC3DP,EAAyB3B,EAAQ,eAE7BkC,EAAQ,OAAS,IAEnBlC,EAAQ,KAAO6B,EAAeK,EAAQ,CAAC,EACvCL,GAAgBK,EAAQ,CAAC,IAI7BjB,EAAkB,KAAKjB,CAAO,EAC1B,OAAOA,EAAQ,cAAiB,UAClCgC,EAAiB,KAAKhC,CAAO,CAEjC,CAGFlB,GAAUmC,EAAmBvC,EAAK,mCAAmC,EACrE,KAAK,oBAAsBuC,EAE3BnC,GAAUkD,EAAkBtD,EAAK,0BAA0B,EAC3D,KAAK,mBAAqBsD,CAC5B,EAMF5C,GAAuB,UAAU,aAC/B,SAAuCiD,EAASC,EAAWC,EACpBC,EAAaC,EAAaC,EAAO,CAMtE,GAAIL,EAAQE,CAAS,GAAK,EACxB,MAAM,IAAI,UAAU,gDACEF,EAAQE,CAAS,CAAC,EAE1C,GAAIF,EAAQG,CAAW,EAAI,EACzB,MAAM,IAAI,UAAU,kDACEH,EAAQG,CAAW,CAAC,EAG5C,OAAO7D,GAAa,OAAO0D,EAASC,EAAWG,EAAaC,CAAK,CACnE,EAMFtD,GAAuB,UAAU,mBAC/B,UAAgD,CAC9C,QAASE,EAAQ,EAAGA,EAAQ,KAAK,mBAAmB,OAAQ,EAAEA,EAAO,CACnE,IAAIU,EAAU,KAAK,mBAAmBV,CAAK,EAM3C,GAAIA,EAAQ,EAAI,KAAK,mBAAmB,OAAQ,CAC9C,IAAIqD,EAAc,KAAK,mBAAmBrD,EAAQ,CAAC,EAEnD,GAAIU,EAAQ,gBAAkB2C,EAAY,cAAe,CACvD3C,EAAQ,oBAAsB2C,EAAY,gBAAkB,EAC5D,QACF,CACF,CAGA3C,EAAQ,oBAAsB,GAChC,CACF,EA0BFZ,GAAuB,UAAU,oBAC/B,SAA+Cc,EAAO,CACpD,IAAIE,EAAS,CACX,cAAe1B,EAAK,OAAOwB,EAAO,MAAM,EACxC,gBAAiBxB,EAAK,OAAOwB,EAAO,QAAQ,CAC9C,EAEIZ,EAAQ,KAAK,aACfc,EACA,KAAK,mBACL,gBACA,kBACA1B,EAAK,oCACLA,EAAK,OAAOwB,EAAO,OAAQnB,EAAkB,oBAAoB,CACnE,EAEA,GAAIO,GAAS,EAAG,CACd,IAAIU,EAAU,KAAK,mBAAmBV,CAAK,EAE3C,GAAIU,EAAQ,gBAAkBI,EAAO,cAAe,CAClD,IAAIH,EAASvB,EAAK,OAAOsB,EAAS,SAAU,IAAI,EAC5CC,IAAW,OACbA,EAAS,KAAK,SAAS,GAAGA,CAAM,EAChCA,EAASvB,EAAK,iBAAiB,KAAK,WAAYuB,EAAQ,KAAK,aAAa,GAE5E,IAAI2C,EAAOlE,EAAK,OAAOsB,EAAS,OAAQ,IAAI,EAC5C,OAAI4C,IAAS,OACXA,EAAO,KAAK,OAAO,GAAGA,CAAI,GAErB,CACL,OAAQ3C,EACR,KAAMvB,EAAK,OAAOsB,EAAS,eAAgB,IAAI,EAC/C,OAAQtB,EAAK,OAAOsB,EAAS,iBAAkB,IAAI,EACnD,KAAM4C,CACR,CACF,CACF,CAEA,MAAO,CACL,OAAQ,KACR,KAAM,KACN,OAAQ,KACR,KAAM,IACR,CACF,EAMFxD,GAAuB,UAAU,wBAC/B,UAA0D,CACxD,OAAK,KAAK,eAGH,KAAK,eAAe,QAAU,KAAK,SAAS,KAAK,GACtD,CAAC,KAAK,eAAe,KAAK,SAAUyD,EAAI,CAAE,OAAOA,GAAM,IAAM,CAAC,EAHvD,EAIX,EAOFzD,GAAuB,UAAU,iBAC/B,SAA4CyB,EAASiC,EAAe,CAClE,GAAI,CAAC,KAAK,eACR,OAAO,KAGT,IAAIxD,EAAQ,KAAK,iBAAiBuB,CAAO,EACzC,GAAIvB,GAAS,EACX,OAAO,KAAK,eAAeA,CAAK,EAGlC,IAAIwB,EAAiBD,EACjB,KAAK,YAAc,OACrBC,EAAiBpC,EAAK,SAAS,KAAK,WAAYoC,CAAc,GAGhE,IAAIiC,EACJ,GAAI,KAAK,YAAc,OACfA,EAAMrE,EAAK,SAAS,KAAK,UAAU,GAAI,CAK7C,IAAIsE,EAAiBlC,EAAe,QAAQ,aAAc,EAAE,EAC5D,GAAIiC,EAAI,QAAU,QACX,KAAK,SAAS,IAAIC,CAAc,EACrC,OAAO,KAAK,eAAe,KAAK,SAAS,QAAQA,CAAc,CAAC,EAGlE,IAAK,CAACD,EAAI,MAAQA,EAAI,MAAQ,MACvB,KAAK,SAAS,IAAI,IAAMjC,CAAc,EAC3C,OAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,IAAMA,CAAc,CAAC,CAE1E,CAMA,GAAIgC,EACF,OAAO,KAGP,MAAM,IAAI,MAAM,IAAMhC,EAAiB,4BAA4B,CAEvE,EAyBF1B,GAAuB,UAAU,qBAC/B,SAAgDc,EAAO,CACrD,IAAID,EAASvB,EAAK,OAAOwB,EAAO,QAAQ,EAExC,GADAD,EAAS,KAAK,iBAAiBA,CAAM,EACjCA,EAAS,EACX,MAAO,CACL,KAAM,KACN,OAAQ,KACR,WAAY,IACd,EAGF,IAAIG,EAAS,CACX,OAAQH,EACR,aAAcvB,EAAK,OAAOwB,EAAO,MAAM,EACvC,eAAgBxB,EAAK,OAAOwB,EAAO,QAAQ,CAC7C,EAEIZ,EAAQ,KAAK,aACfc,EACA,KAAK,kBACL,eACA,iBACA1B,EAAK,2BACLA,EAAK,OAAOwB,EAAO,OAAQnB,EAAkB,oBAAoB,CACnE,EAEA,GAAIO,GAAS,EAAG,CACd,IAAIU,EAAU,KAAK,kBAAkBV,CAAK,EAE1C,GAAIU,EAAQ,SAAWI,EAAO,OAC5B,MAAO,CACL,KAAM1B,EAAK,OAAOsB,EAAS,gBAAiB,IAAI,EAChD,OAAQtB,EAAK,OAAOsB,EAAS,kBAAmB,IAAI,EACpD,WAAYtB,EAAK,OAAOsB,EAAS,sBAAuB,IAAI,CAC9D,CAEJ,CAEA,MAAO,CACL,KAAM,KACN,OAAQ,KACR,WAAY,IACd,CACF,EAEFvB,GAAQ,uBAAyBW,GAmDjC,SAASD,GAAyBH,EAAYC,EAAe,CAC3D,IAAIC,EAAYF,EACZ,OAAOA,GAAe,WACxBE,EAAYR,EAAK,oBAAoBM,CAAU,GAGjD,IAAIuB,EAAU7B,EAAK,OAAOQ,EAAW,SAAS,EAC1C+D,EAAWvE,EAAK,OAAOQ,EAAW,UAAU,EAEhD,GAAIqB,GAAW,KAAK,SAClB,MAAM,IAAI,MAAM,wBAA0BA,CAAO,EAGnD,KAAK,SAAW,IAAI3B,GACpB,KAAK,OAAS,IAAIA,GAElB,IAAIsE,EAAa,CACf,KAAM,GACN,OAAQ,CACV,EACA,KAAK,UAAYD,EAAS,IAAI,SAAU,EAAG,CACzC,GAAI,EAAE,IAGJ,MAAM,IAAI,MAAM,oDAAoD,EAEtE,IAAIE,EAASzE,EAAK,OAAO,EAAG,QAAQ,EAChC0E,EAAa1E,EAAK,OAAOyE,EAAQ,MAAM,EACvCE,EAAe3E,EAAK,OAAOyE,EAAQ,QAAQ,EAE/C,GAAIC,EAAaF,EAAW,MACvBE,IAAeF,EAAW,MAAQG,EAAeH,EAAW,OAC/D,MAAM,IAAI,MAAM,sDAAsD,EAExE,OAAAA,EAAaC,EAEN,CACL,gBAAiB,CAGf,cAAeC,EAAa,EAC5B,gBAAiBC,EAAe,CAClC,EACA,SAAU,IAAItE,EAAkBL,EAAK,OAAO,EAAG,KAAK,EAAGO,CAAa,CACtE,CACF,CAAC,CACH,CAEAE,GAAyB,UAAY,OAAO,OAAOJ,EAAkB,SAAS,EAC9EI,GAAyB,UAAU,YAAcJ,EAKjDI,GAAyB,UAAU,SAAW,EAK9C,OAAO,eAAeA,GAAyB,UAAW,UAAW,CACnE,IAAK,UAAY,CAEf,QADIqB,EAAU,CAAC,EACNO,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IACzC,QAASuC,EAAI,EAAGA,EAAI,KAAK,UAAUvC,CAAC,EAAE,SAAS,QAAQ,OAAQuC,IAC7D9C,EAAQ,KAAK,KAAK,UAAUO,CAAC,EAAE,SAAS,QAAQuC,CAAC,CAAC,EAGtD,OAAO9C,CACT,CACF,CAAC,EAqBDrB,GAAyB,UAAU,oBACjC,SAAsDe,EAAO,CAC3D,IAAIE,EAAS,CACX,cAAe1B,EAAK,OAAOwB,EAAO,MAAM,EACxC,gBAAiBxB,EAAK,OAAOwB,EAAO,QAAQ,CAC9C,EAIIqD,EAAe5E,GAAa,OAAOyB,EAAQ,KAAK,UAClD,SAASA,EAAQoD,EAAS,CACxB,IAAIC,EAAMrD,EAAO,cAAgBoD,EAAQ,gBAAgB,cACzD,OAAIC,GAIIrD,EAAO,gBACPoD,EAAQ,gBAAgB,eAClC,CAAC,EACCA,EAAU,KAAK,UAAUD,CAAY,EAEzC,OAAKC,EASEA,EAAQ,SAAS,oBAAoB,CAC1C,KAAMpD,EAAO,eACVoD,EAAQ,gBAAgB,cAAgB,GAC3C,OAAQpD,EAAO,iBACZoD,EAAQ,gBAAgB,gBAAkBpD,EAAO,cAC/CoD,EAAQ,gBAAgB,gBAAkB,EAC1C,GACL,KAAMtD,EAAM,IACd,CAAC,EAhBQ,CACL,OAAQ,KACR,KAAM,KACN,OAAQ,KACR,KAAM,IACR,CAYJ,EAMFf,GAAyB,UAAU,wBACjC,UAA4D,CAC1D,OAAO,KAAK,UAAU,MAAM,SAAUyB,EAAG,CACvC,OAAOA,EAAE,SAAS,wBAAwB,CAC5C,CAAC,CACH,EAOFzB,GAAyB,UAAU,iBACjC,SAAmD0B,EAASiC,EAAe,CACzE,QAAS/B,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAAK,CAC9C,IAAIyC,EAAU,KAAK,UAAUzC,CAAC,EAE1B2C,EAAUF,EAAQ,SAAS,iBAAiB3C,EAAS,EAAI,EAC7D,GAAI6C,EACF,OAAOA,CAEX,CACA,GAAIZ,EACF,OAAO,KAGP,MAAM,IAAI,MAAM,IAAMjC,EAAU,4BAA4B,CAEhE,EAoBF1B,GAAyB,UAAU,qBACjC,SAAuDe,EAAO,CAC5D,QAASa,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAAK,CAC9C,IAAIyC,EAAU,KAAK,UAAUzC,CAAC,EAI9B,GAAIyC,EAAQ,SAAS,iBAAiB9E,EAAK,OAAOwB,EAAO,QAAQ,CAAC,IAAM,GAGxE,KAAIyD,EAAoBH,EAAQ,SAAS,qBAAqBtD,CAAK,EACnE,GAAIyD,EAAmB,CACrB,IAAIC,EAAM,CACR,KAAMD,EAAkB,MACrBH,EAAQ,gBAAgB,cAAgB,GAC3C,OAAQG,EAAkB,QACvBH,EAAQ,gBAAgB,gBAAkBG,EAAkB,KAC1DH,EAAQ,gBAAgB,gBAAkB,EAC1C,EACP,EACA,OAAOI,CACT,EACF,CAEA,MAAO,CACL,KAAM,KACN,OAAQ,IACV,CACF,EAOFzE,GAAyB,UAAU,eACjC,SAAgDE,EAAMG,EAAa,CACjE,KAAK,oBAAsB,CAAC,EAC5B,KAAK,mBAAqB,CAAC,EAC3B,QAASuB,EAAI,EAAGA,EAAI,KAAK,UAAU,OAAQA,IAGzC,QAFIyC,EAAU,KAAK,UAAUzC,CAAC,EAC1B8C,EAAkBL,EAAQ,SAAS,mBAC9BF,EAAI,EAAGA,EAAIO,EAAgB,OAAQP,IAAK,CAC/C,IAAItD,EAAU6D,EAAgBP,CAAC,EAE3BrD,EAASuD,EAAQ,SAAS,SAAS,GAAGxD,EAAQ,MAAM,EACxDC,EAASvB,EAAK,iBAAiB8E,EAAQ,SAAS,WAAYvD,EAAQ,KAAK,aAAa,EACtF,KAAK,SAAS,IAAIA,CAAM,EACxBA,EAAS,KAAK,SAAS,QAAQA,CAAM,EAErC,IAAI2C,EAAO,KACP5C,EAAQ,OACV4C,EAAOY,EAAQ,SAAS,OAAO,GAAGxD,EAAQ,IAAI,EAC9C,KAAK,OAAO,IAAI4C,CAAI,EACpBA,EAAO,KAAK,OAAO,QAAQA,CAAI,GAOjC,IAAIkB,EAAkB,CACpB,OAAQ7D,EACR,cAAeD,EAAQ,eACpBwD,EAAQ,gBAAgB,cAAgB,GAC3C,gBAAiBxD,EAAQ,iBACtBwD,EAAQ,gBAAgB,gBAAkBxD,EAAQ,cACjDwD,EAAQ,gBAAgB,gBAAkB,EAC1C,GACJ,aAAcxD,EAAQ,aACtB,eAAgBA,EAAQ,eACxB,KAAM4C,CACR,EAEA,KAAK,oBAAoB,KAAKkB,CAAe,EACzC,OAAOA,EAAgB,cAAiB,UAC1C,KAAK,mBAAmB,KAAKA,CAAe,CAEhD,CAGFhF,GAAU,KAAK,oBAAqBJ,EAAK,mCAAmC,EAC5EI,GAAU,KAAK,mBAAoBJ,EAAK,0BAA0B,CACpE,EAEFD,GAAQ,yBAA2BU,KCxnCnC,IAAA4E,GAAAC,EAAAC,IAAA,CAOA,IAAIC,GAAqB,KAAkC,mBACvDC,GAAO,KAIPC,GAAgB,UAGhBC,GAAe,GAKfC,GAAe,qBAcnB,SAASC,GAAWC,EAAOC,EAASC,EAASC,EAASC,EAAO,CAC3D,KAAK,SAAW,CAAC,EACjB,KAAK,eAAiB,CAAC,EACvB,KAAK,KAAOJ,GAAgB,KAC5B,KAAK,OAASC,GAAkB,KAChC,KAAK,OAASC,GAAkB,KAChC,KAAK,KAAOE,GAAgB,KAC5B,KAAKN,EAAY,EAAI,GACjBK,GAAW,MAAM,KAAK,IAAIA,CAAO,CACvC,CAUAJ,GAAW,wBACT,SAA4CM,EAAgBC,EAAoBC,EAAe,CAG7F,IAAIC,EAAO,IAAIT,GAMXU,EAAiBJ,EAAe,MAAMT,EAAa,EACnDc,EAAsB,EACtBC,EAAgB,UAAW,CAC7B,IAAIC,EAAeC,EAAY,EAE3BC,EAAUD,EAAY,GAAK,GAC/B,OAAOD,EAAeE,EAEtB,SAASD,GAAc,CACrB,OAAOH,EAAsBD,EAAe,OACxCA,EAAeC,GAAqB,EAAI,MAC9C,CACF,EAGIK,EAAoB,EAAGC,EAAsB,EAK7CC,EAAc,KAElB,OAAAX,EAAmB,YAAY,SAAUY,EAAS,CAChD,GAAID,IAAgB,KAGlB,GAAIF,EAAoBG,EAAQ,cAE9BC,EAAmBF,EAAaN,EAAc,CAAC,EAC/CI,IACAC,EAAsB,MAEjB,CAIL,IAAII,EAAWX,EAAeC,CAAmB,GAAK,GAClDW,EAAOD,EAAS,OAAO,EAAGF,EAAQ,gBACRF,CAAmB,EACjDP,EAAeC,CAAmB,EAAIU,EAAS,OAAOF,EAAQ,gBAC1BF,CAAmB,EACvDA,EAAsBE,EAAQ,gBAC9BC,EAAmBF,EAAaI,CAAI,EAEpCJ,EAAcC,EACd,MACF,CAKF,KAAOH,EAAoBG,EAAQ,eACjCV,EAAK,IAAIG,EAAc,CAAC,EACxBI,IAEF,GAAIC,EAAsBE,EAAQ,gBAAiB,CACjD,IAAIE,EAAWX,EAAeC,CAAmB,GAAK,GACtDF,EAAK,IAAIY,EAAS,OAAO,EAAGF,EAAQ,eAAe,CAAC,EACpDT,EAAeC,CAAmB,EAAIU,EAAS,OAAOF,EAAQ,eAAe,EAC7EF,EAAsBE,EAAQ,eAChC,CACAD,EAAcC,CAChB,EAAG,IAAI,EAEHR,EAAsBD,EAAe,SACnCQ,GAEFE,EAAmBF,EAAaN,EAAc,CAAC,EAGjDH,EAAK,IAAIC,EAAe,OAAOC,CAAmB,EAAE,KAAK,EAAE,CAAC,GAI9DJ,EAAmB,QAAQ,QAAQ,SAAUgB,EAAY,CACvD,IAAIC,EAAUjB,EAAmB,iBAAiBgB,CAAU,EACxDC,GAAW,OACThB,GAAiB,OACnBe,EAAa3B,GAAK,KAAKY,EAAee,CAAU,GAElDd,EAAK,iBAAiBc,EAAYC,CAAO,EAE7C,CAAC,EAEMf,EAEP,SAASW,EAAmBD,EAASG,EAAM,CACzC,GAAIH,IAAY,MAAQA,EAAQ,SAAW,OACzCV,EAAK,IAAIa,CAAI,MACR,CACL,IAAIG,EAASjB,EACTZ,GAAK,KAAKY,EAAeW,EAAQ,MAAM,EACvCA,EAAQ,OACZV,EAAK,IAAI,IAAIT,GAAWmB,EAAQ,aACRA,EAAQ,eACRM,EACAH,EACAH,EAAQ,IAAI,CAAC,CACvC,CACF,CACF,EAQFnB,GAAW,UAAU,IAAM,SAAwB0B,EAAQ,CACzD,GAAI,MAAM,QAAQA,CAAM,EACtBA,EAAO,QAAQ,SAAUC,EAAO,CAC9B,KAAK,IAAIA,CAAK,CAChB,EAAG,IAAI,UAEAD,EAAO3B,EAAY,GAAK,OAAO2B,GAAW,SAC7CA,GACF,KAAK,SAAS,KAAKA,CAAM,MAI3B,OAAM,IAAI,UACR,8EAAgFA,CAClF,EAEF,OAAO,IACT,EAQA1B,GAAW,UAAU,QAAU,SAA4B0B,EAAQ,CACjE,GAAI,MAAM,QAAQA,CAAM,EACtB,QAASE,EAAIF,EAAO,OAAO,EAAGE,GAAK,EAAGA,IACpC,KAAK,QAAQF,EAAOE,CAAC,CAAC,UAGjBF,EAAO3B,EAAY,GAAK,OAAO2B,GAAW,SACjD,KAAK,SAAS,QAAQA,CAAM,MAG5B,OAAM,IAAI,UACR,8EAAgFA,CAClF,EAEF,OAAO,IACT,EASA1B,GAAW,UAAU,KAAO,SAAyB6B,EAAK,CAExD,QADIF,EACKC,EAAI,EAAGE,EAAM,KAAK,SAAS,OAAQF,EAAIE,EAAKF,IACnDD,EAAQ,KAAK,SAASC,CAAC,EACnBD,EAAM5B,EAAY,EACpB4B,EAAM,KAAKE,CAAG,EAGVF,IAAU,IACZE,EAAIF,EAAO,CAAE,OAAQ,KAAK,OACb,KAAM,KAAK,KACX,OAAQ,KAAK,OACb,KAAM,KAAK,IAAK,CAAC,CAItC,EAQA3B,GAAW,UAAU,KAAO,SAAyB+B,EAAM,CACzD,IAAIC,EACAJ,EACAE,EAAM,KAAK,SAAS,OACxB,GAAIA,EAAM,EAAG,CAEX,IADAE,EAAc,CAAC,EACVJ,EAAI,EAAGA,EAAIE,EAAI,EAAGF,IACrBI,EAAY,KAAK,KAAK,SAASJ,CAAC,CAAC,EACjCI,EAAY,KAAKD,CAAI,EAEvBC,EAAY,KAAK,KAAK,SAASJ,CAAC,CAAC,EACjC,KAAK,SAAWI,CAClB,CACA,OAAO,IACT,EASAhC,GAAW,UAAU,aAAe,SAAiCiC,EAAUC,EAAc,CAC3F,IAAIC,EAAY,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EACtD,OAAIA,EAAUpC,EAAY,EACxBoC,EAAU,aAAaF,EAAUC,CAAY,EAEtC,OAAOC,GAAc,SAC5B,KAAK,SAAS,KAAK,SAAS,OAAS,CAAC,EAAIA,EAAU,QAAQF,EAAUC,CAAY,EAGlF,KAAK,SAAS,KAAK,GAAG,QAAQD,EAAUC,CAAY,CAAC,EAEhD,IACT,EASAlC,GAAW,UAAU,iBACnB,SAAqCoC,EAAaC,EAAgB,CAChE,KAAK,eAAezC,GAAK,YAAYwC,CAAW,CAAC,EAAIC,CACvD,EAQFrC,GAAW,UAAU,mBACnB,SAAuC6B,EAAK,CAC1C,QAASD,EAAI,EAAGE,EAAM,KAAK,SAAS,OAAQF,EAAIE,EAAKF,IAC/C,KAAK,SAASA,CAAC,EAAE7B,EAAY,GAC/B,KAAK,SAAS6B,CAAC,EAAE,mBAAmBC,CAAG,EAK3C,QADIS,EAAU,OAAO,KAAK,KAAK,cAAc,EACpCV,EAAI,EAAGE,EAAMQ,EAAQ,OAAQV,EAAIE,EAAKF,IAC7CC,EAAIjC,GAAK,cAAc0C,EAAQV,CAAC,CAAC,EAAG,KAAK,eAAeU,EAAQV,CAAC,CAAC,CAAC,CAEvE,EAMF5B,GAAW,UAAU,SAAW,UAA+B,CAC7D,IAAIuC,EAAM,GACV,YAAK,KAAK,SAAUZ,EAAO,CACzBY,GAAOZ,CACT,CAAC,EACMY,CACT,EAMAvC,GAAW,UAAU,sBAAwB,SAA0CwC,EAAO,CAC5F,IAAIC,EAAY,CACd,KAAM,GACN,KAAM,EACN,OAAQ,CACV,EACIC,EAAM,IAAI/C,GAAmB6C,CAAK,EAClCG,EAAsB,GACtBC,EAAqB,KACrBC,EAAmB,KACnBC,EAAqB,KACrBC,EAAmB,KACvB,YAAK,KAAK,SAAUpB,EAAOqB,EAAU,CACnCP,EAAU,MAAQd,EACdqB,EAAS,SAAW,MACjBA,EAAS,OAAS,MAClBA,EAAS,SAAW,OACtBJ,IAAuBI,EAAS,QAC7BH,IAAqBG,EAAS,MAC9BF,IAAuBE,EAAS,QAChCD,IAAqBC,EAAS,OAClCN,EAAI,WAAW,CACb,OAAQM,EAAS,OACjB,SAAU,CACR,KAAMA,EAAS,KACf,OAAQA,EAAS,MACnB,EACA,UAAW,CACT,KAAMP,EAAU,KAChB,OAAQA,EAAU,MACpB,EACA,KAAMO,EAAS,IACjB,CAAC,EAEHJ,EAAqBI,EAAS,OAC9BH,EAAmBG,EAAS,KAC5BF,EAAqBE,EAAS,OAC9BD,EAAmBC,EAAS,KAC5BL,EAAsB,IACbA,IACTD,EAAI,WAAW,CACb,UAAW,CACT,KAAMD,EAAU,KAChB,OAAQA,EAAU,MACpB,CACF,CAAC,EACDG,EAAqB,KACrBD,EAAsB,IAExB,QAASM,EAAM,EAAGC,EAASvB,EAAM,OAAQsB,EAAMC,EAAQD,IACjDtB,EAAM,WAAWsB,CAAG,IAAMnD,IAC5B2C,EAAU,OACVA,EAAU,OAAS,EAEfQ,EAAM,IAAMC,GACdN,EAAqB,KACrBD,EAAsB,IACbA,GACTD,EAAI,WAAW,CACb,OAAQM,EAAS,OACjB,SAAU,CACR,KAAMA,EAAS,KACf,OAAQA,EAAS,MACnB,EACA,UAAW,CACT,KAAMP,EAAU,KAChB,OAAQA,EAAU,MACpB,EACA,KAAMO,EAAS,IACjB,CAAC,GAGHP,EAAU,QAGhB,CAAC,EACD,KAAK,mBAAmB,SAAUlB,EAAY4B,EAAe,CAC3DT,EAAI,iBAAiBnB,EAAY4B,CAAa,CAChD,CAAC,EAEM,CAAE,KAAMV,EAAU,KAAM,IAAKC,CAAI,CAC1C,EAEAhD,GAAQ,WAAaM,KC5ZrB,IAAAoD,GAAAC,EAAAC,IAAA,CAKAA,GAAQ,mBAAqB,KAAsC,mBACnEA,GAAQ,kBAAoB,KAAqC,kBACjEA,GAAQ,WAAa,KAA6B,0ECJ9CC,GAAU,OAEd,GAAI,EAEE,OAAO,QAAW,YAAc,CAAC,OAAO,OAGtCC,GAAY,KAChBD,GAAaC,GAAU,iBAEb,CAAA,CAHN,IAAAA,GAQHD,KACHA,GAAa,SAASE,EAAMC,EAAQC,EAASC,EAAQ,CACnD,KAAK,IAAM,GACPA,GACF,KAAK,IAAIA,CAAM,GAInBL,GAAW,UAAY,CACrB,IAAK,SAASK,EAAQ,CAChBC,GAAA,QAAQD,CAAM,IAChBA,EAASA,EAAO,KAAK,EAAE,GAEzB,KAAK,KAAOA,GAEd,QAAS,SAASA,EAAQ,CACpBC,GAAA,QAAQD,CAAM,IAChBA,EAASA,EAAO,KAAK,EAAE,GAEzB,KAAK,IAAMA,EAAS,KAAK,KAE3B,sBAAuB,UAAW,CAChC,MAAO,CAAE,KAAM,KAAK,SAAQ,CAAE,GAEhC,SAAU,UAAW,CACnB,OAAO,KAAK,OAKlB,SAASE,GAAUC,EAAOC,EAASC,EAAK,CACtC,GAAIJ,GAAA,QAAQE,CAAK,EAAG,CAGlB,QAFIG,EAAM,CAAA,EAED,EAAI,EAAGC,EAAMJ,EAAM,OAAQ,EAAII,EAAK,IAC3CD,EAAI,KAAKF,EAAQ,KAAKD,EAAM,CAAC,EAAGE,CAAG,CAAC,EAEtC,OAAOC,UACE,OAAOH,GAAU,WAAa,OAAOA,GAAU,SAExD,OAAOA,EAAQ,GAEjB,OAAOA,EAGT,SAASK,GAAQT,EAAS,CACxB,KAAK,QAAUA,EACf,KAAK,OAAS,CAAA,EAGhBS,GAAQ,UAAY,CAClB,QAAO,UAAG,CACR,MAAO,CAAC,KAAK,OAAO,QAEtB,QAAS,SAASC,EAAQJ,EAAK,CAC7B,KAAK,OAAO,QAAQ,KAAK,KAAKI,EAAQJ,CAAG,CAAC,GAE5C,KAAM,SAASI,EAAQJ,EAAK,CAC1B,KAAK,OAAO,KAAK,KAAK,KAAKI,EAAQJ,CAAG,CAAC,GAGzC,MAAO,UAAW,CAChB,IAAII,EAAS,KAAK,MAAK,EACvB,YAAK,KAAK,SAASZ,EAAM,CACvBY,EAAO,IAAI,CAAC,KAAMZ,EAAM;CAAI,CAAC,EAC9B,EACMY,GAGT,KAAM,SAASC,EAAM,CACnB,QAASC,EAAI,EAAGJ,EAAM,KAAK,OAAO,OAAQI,EAAIJ,EAAKI,IACjDD,EAAK,KAAK,OAAOC,CAAC,CAAC,GAIvB,MAAO,UAAW,CAChB,IAAIN,EAAM,KAAK,iBAAmB,CAAE,MAAO,CAAA,CAAE,EAC7C,OAAO,IAAIV,GAAWU,EAAI,MAAM,KAAMA,EAAI,MAAM,OAAQ,KAAK,OAAO,GAEtE,KAAM,SAASF,EAAoD,KAA7CE,EAAG,UAAA,QAAA,GAAA,UAAA,CAAA,IAAA,OAAG,KAAK,iBAAmB,CAAE,MAAO,CAAA,CAAE,EAAE,UAAA,CAAA,EAC/D,OAAIF,aAAiBR,GACZQ,GAGTA,EAAQD,GAAUC,EAAO,KAAME,CAAG,EAE3B,IAAIV,GACTU,EAAI,MAAM,KACVA,EAAI,MAAM,OACV,KAAK,QACLF,CAAK,IAIT,aAAc,SAASS,EAAIC,EAAMC,EAAQ,CACvC,OAAAA,EAAS,KAAK,aAAaA,CAAM,EAC1B,KAAK,KAAK,CAACF,EAAIC,EAAO,IAAMA,EAAO,IAAM,IAAKC,EAAQ,GAAG,CAAC,GAGnE,aAAc,SAASC,EAAK,CAC1B,MACE,KACCA,EAAM,IACJ,QAAQ,MAAO,MAAM,EACrB,QAAQ,KAAM,KAAK,EACnB,QAAQ,MAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,UAAW,SAAS,EAC5B,QAAQ,UAAW,SAAS,EAC/B,KAIJ,cAAe,SAASC,EAAK,YACvBC,EAAQ,CAAA,EAEZ,OAAO,KAAKD,CAAG,EAAE,QAAQ,SAAAE,EAAO,CAC9B,IAAIC,EAAQjB,GAAUc,EAAIE,CAAG,EAACE,CAAA,EAC1BD,IAAU,aACZF,EAAM,KAAK,CAACG,EAAK,aAAaF,CAAG,EAAG,IAAKC,CAAK,CAAC,EAElD,EAED,IAAIb,EAAM,KAAK,aAAaW,CAAK,EACjC,OAAAX,EAAI,QAAQ,GAAG,EACfA,EAAI,IAAI,GAAG,EACJA,GAGT,aAAc,SAASe,EAAS,CAG9B,QAFIf,EAAM,KAAK,MAAK,EAEXK,EAAI,EAAGJ,EAAMc,EAAQ,OAAQV,EAAIJ,EAAKI,IACzCA,GACFL,EAAI,IAAI,GAAG,EAGbA,EAAI,IAAIJ,GAAUmB,EAAQV,CAAC,EAAG,IAAI,CAAC,EAGrC,OAAOL,GAGT,cAAe,SAASe,EAAS,CAC/B,IAAIf,EAAM,KAAK,aAAae,CAAO,EACnC,OAAAf,EAAI,QAAQ,GAAG,EACfA,EAAI,IAAI,GAAG,EAEJA,eAIIE,wLCrKf,SAASc,GAAQC,EAAO,CACtB,KAAK,MAAQA,EAGf,SAASC,IAAqB,CAAA,CAE9BA,GAAmB,UAAY,CAG7B,WAAY,SAASC,EAAQC,EAAmB,CAC9C,OAAO,KAAK,mBAAmBD,EAAQC,CAAI,GAE7C,cAAe,SAASA,EAAM,CAC5B,MAAO,CACL,KAAK,UAAU,kBAAkB,EACjC,YACA,KAAK,UAAUA,CAAI,EACnB,GAAG,GAIP,aAAc,UAAW,CACvB,IAAMC,EAAQC,GAAA,kBACZC,EAAWD,GAAA,iBAAiBD,CAAQ,EACtC,MAAO,CAACA,EAAUE,CAAQ,GAG5B,eAAgB,SAASC,EAAQC,EAAUC,EAAU,CAOnD,OALKC,GAAA,QAAQH,CAAM,IACjBA,EAAS,CAACA,CAAM,GAElBA,EAAS,KAAK,OAAO,KAAKA,EAAQC,CAAQ,EAEtC,KAAK,YAAY,SACZ,CAAC,UAAWD,EAAQ,GAAG,EACrBE,EAIF,CAAC,aAAcF,EAAQ,GAAG,GAEjCA,EAAO,eAAiB,GACjBA,IAIX,iBAAkB,UAAW,CAC3B,OAAO,KAAK,aAAa,EAAE,GAG7B,mBAAoB,SAASL,EAAQC,EAAM,CACzC,YAAK,6BAA+B,GAC7B,CAAC,kBAAmBD,EAAQ,IAAK,KAAK,UAAUC,CAAI,EAAG,GAAG,GAGnE,6BAA8B,GAE9B,QAAS,SAASQ,EAAaC,EAASC,EAASC,EAAU,CACzD,KAAK,YAAcH,EACnB,KAAK,QAAUC,EACf,KAAK,aAAe,KAAK,QAAQ,aACjC,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,WAAa,CAACE,EAEnB,KAAK,KAAO,KAAK,YAAY,KAC7B,KAAK,QAAU,CAAC,CAACD,EACjB,KAAK,QAAUA,GAAW,CACxB,WAAY,CAAA,EACZ,SAAU,CAAA,EACV,aAAc,CAAA,GAGhB,KAAK,SAAQ,EAEb,KAAK,UAAY,EACjB,KAAK,UAAY,CAAA,EACjB,KAAK,QAAU,CAAA,EACf,KAAK,UAAY,CAAE,KAAM,CAAA,CAAE,EAC3B,KAAK,OAAS,CAAA,EACd,KAAK,aAAe,CAAA,EACpB,KAAK,YAAc,CAAA,EACnB,KAAK,YAAc,CAAA,EAEnB,KAAK,gBAAgBF,EAAaC,CAAO,EAEzC,KAAK,UACH,KAAK,WACLD,EAAY,WACZA,EAAY,eACZ,KAAK,QAAQ,OACf,KAAK,eAAiB,KAAK,gBAAkBA,EAAY,eAEzD,IAAII,EAAUJ,EAAY,QACxBK,EAAM,OACNC,EAAQ,OACRC,EAAC,OACDC,EAAC,OAEH,IAAKD,EAAI,EAAGC,EAAIJ,EAAQ,OAAQG,EAAIC,EAAGD,IACrCF,EAASD,EAAQG,CAAC,EAElB,KAAK,OAAO,gBAAkBF,EAAO,IACrCC,EAAWA,GAAYD,EAAO,IAC9B,KAAKA,EAAO,MAAM,EAAE,MAAM,KAAMA,EAAO,IAAI,EAQ7C,GAJA,KAAK,OAAO,gBAAkBC,EAC9B,KAAK,WAAW,EAAE,EAGd,KAAK,WAAa,KAAK,YAAY,QAAU,KAAK,aAAa,OACjE,MAAM,IAAAG,GAAA,QAAc,8CAA8C,EAG/D,KAAK,WAAW,QAAO,EA6B1B,KAAK,WAAa,QA5BlB,KAAK,cAAgB,GAErB,KAAK,WAAW,QAAQ,CACtB,0CACA,KAAK,qCAAoC,EACzC;CAAK,CACN,EACD,KAAK,WAAW,KAAK,YAAY,EAE7BN,EACF,KAAK,WAAa,SAAS,MAAM,KAAM,CACrC,KACA,QACA,YACA,SACA,OACA,cACA,SACA,KAAK,WAAW,MAAK,CAAE,CACxB,GAED,KAAK,WAAW,QACd;CAAuE,EAEzE,KAAK,WAAW,KAAK;CAAK,EAC1B,KAAK,WAAa,KAAK,WAAW,MAAK,IAM3C,IAAIO,EAAK,KAAK,sBAAsBP,CAAQ,EAC5C,GAAK,KAAK,QAwDR,OAAOO,EAvDP,IAAIC,EAAM,CACR,SAAU,KAAK,aAAY,EAC3B,KAAMD,GAGJ,KAAK,aACPC,EAAI,OAAS,KAAK,WAClBA,EAAI,cAAgB,UAGS,KAAK,QAA9BC,EAAQC,EAAR,SAAUC,EAAUD,EAAV,WAChB,IAAKN,EAAI,EAAGC,EAAII,EAAS,OAAQL,EAAIC,EAAGD,IAClCK,EAASL,CAAC,IACZI,EAAIJ,CAAC,EAAIK,EAASL,CAAC,EACfO,EAAWP,CAAC,IACdI,EAAIJ,EAAI,IAAI,EAAIO,EAAWP,CAAC,EAC5BI,EAAI,cAAgB,KAK1B,OAAI,KAAK,YAAY,aACnBA,EAAI,WAAa,IAEf,KAAK,QAAQ,OACfA,EAAI,QAAU,IAEZ,KAAK,YACPA,EAAI,UAAY,IAEd,KAAK,iBACPA,EAAI,eAAiB,IAEnB,KAAK,QAAQ,SACfA,EAAI,OAAS,IAGVR,EAaHQ,EAAI,gBAAkB,KAAK,SAZ3BA,EAAI,SAAW,KAAK,UAAUA,EAAI,QAAQ,EAE1C,KAAK,OAAO,gBAAkB,CAAE,MAAO,CAAE,KAAM,EAAG,OAAQ,CAAC,CAAE,EAC7DA,EAAM,KAAK,cAAcA,CAAG,EAExBV,EAAQ,SACVU,EAAMA,EAAI,sBAAsB,CAAE,KAAMV,EAAQ,QAAQ,CAAE,EAC1DU,EAAI,IAAMA,EAAI,KAAOA,EAAI,IAAI,SAAQ,GAErCA,EAAMA,EAAI,SAAQ,GAMfA,GAMX,SAAU,UAAW,CAGnB,KAAK,YAAc,EACnB,KAAK,OAAS,IAAAI,GAAA,QAAY,KAAK,QAAQ,OAAO,EAC9C,KAAK,WAAa,IAAAA,GAAA,QAAY,KAAK,QAAQ,OAAO,GAGpD,sBAAuB,SAASZ,EAAU,YACpCa,EAAkB,GAElBC,EAAS,KAAK,UAAU,OAAO,KAAK,UAAU,IAAI,EAClDA,EAAO,OAAS,IAClBD,GAAmB,KAAOC,EAAO,KAAK,IAAI,GAS5C,IAAIC,EAAa,EACjB,OAAO,KAAK,KAAK,OAAO,EAAE,QAAQ,SAAAC,EAAS,CACzC,IAAIC,EAAOC,EAAK,QAAQF,CAAK,EACzBC,EAAK,UAAYA,EAAK,eAAiB,IACzCJ,GAAmB,WAAY,EAAEE,EAAa,IAAMC,EACpDC,EAAK,SAAS,CAAC,EAAI,QAAUF,GAEhC,EAEG,KAAK,+BACPF,GAAmB,KAAO,KAAK,qCAAoC,GAGrE,IAAIM,EAAS,CAAC,YAAa,SAAU,UAAW,WAAY,MAAM,GAE9D,KAAK,gBAAkB,KAAK,YAC9BA,EAAO,KAAK,aAAa,EAEvB,KAAK,WACPA,EAAO,KAAK,QAAQ,EAItB,IAAI1B,EAAS,KAAK,YAAYoB,CAAe,EAE7C,OAAIb,GACFmB,EAAO,KAAK1B,CAAM,EAEX,SAAS,MAAM,KAAM0B,CAAM,GAE3B,KAAK,OAAO,KAAK,CACtB,YACAA,EAAO,KAAK,GAAG,EACf;IACA1B,EACA,GAAG,CACJ,GAGL,YAAa,SAASoB,EAAiB,CACrC,IAAIO,EAAW,KAAK,YAAY,SAC9BC,EAAa,CAAC,KAAK,YACnBC,EAAW,OACXC,EAAU,OACVC,EAAW,OACXC,EAAS,OACX,YAAK,OAAO,KAAK,SAAAC,EAAQ,CACnBA,EAAK,gBACHF,EACFE,EAAK,QAAQ,MAAM,EAEnBF,EAAcE,EAEhBD,EAAYC,IAERF,IACGD,EAGHC,EAAY,QAAQ,YAAY,EAFhCF,EAAc,GAIhBG,EAAU,IAAI,GAAG,EACjBD,EAAcC,EAAY,QAG5BF,EAAa,GACRH,IACHC,EAAa,KAGlB,EAEGA,EACEG,GACFA,EAAY,QAAQ,SAAS,EAC7BC,EAAU,IAAI,GAAG,GACPF,GACV,KAAK,OAAO,KAAK,YAAY,GAG/BV,GACE,eAAiBS,EAAc,GAAK,KAAK,iBAAgB,GAEvDE,GACFA,EAAY,QAAQ,kBAAkB,EACtCC,EAAU,IAAI,GAAG,GAEjB,KAAK,OAAO,KAAK,gBAAgB,GAIjCZ,GACF,KAAK,OAAO,QACV,OAASA,EAAgB,UAAU,CAAC,GAAKS,EAAc,GAAK;EAAM,EAI/D,KAAK,OAAO,MAAK,GAG1B,qCAAsC,UAAW,CAC/C,MAAO;;;;;;;MAOL,KAAI,GAYR,WAAY,SAASjC,EAAM,CACzB,IAAIsC,EAAqB,KAAK,UAC1B,oCAAoC,EAEtCR,EAAS,CAAC,KAAK,YAAY,CAAC,CAAC,EAC/B,KAAK,gBAAgB9B,EAAM,EAAG8B,CAAM,EAEpC,IAAIS,EAAY,KAAK,SAAQ,EAC7BT,EAAO,OAAO,EAAG,EAAGS,CAAS,EAE7B,KAAK,KAAK,KAAK,OAAO,aAAaD,EAAoB,OAAQR,CAAM,CAAC,GASxE,oBAAqB,UAAW,CAE9B,IAAIQ,EAAqB,KAAK,UAC1B,oCAAoC,EAEtCR,EAAS,CAAC,KAAK,YAAY,CAAC,CAAC,EAC/B,KAAK,gBAAgB,GAAI,EAAGA,EAAQ,EAAI,EAExC,KAAK,YAAW,EAEhB,IAAIU,EAAU,KAAK,SAAQ,EAC3BV,EAAO,OAAO,EAAG,EAAGU,CAAO,EAE3B,KAAK,WAAW,CACd,QACA,KAAK,WACL,OACAA,EACA,MACA,KAAK,OAAO,aAAaF,EAAoB,OAAQR,CAAM,EAC3D,GAAG,CACJ,GASH,cAAe,SAASW,EAAS,CAC3B,KAAK,eACPA,EAAU,KAAK,eAAiBA,EAEhC,KAAK,gBAAkB,KAAK,OAAO,gBAGrC,KAAK,eAAiBA,GAYxB,OAAQ,UAAW,CACjB,GAAI,KAAK,SAAQ,EACf,KAAK,aAAa,SAAAD,EAAO,OAAI,CAAC,cAAeA,EAAS,OAAO,EAAC,EAE9D,KAAK,WAAW,KAAK,eAAe,KAAK,SAAQ,CAAE,CAAC,MAC/C,CACL,IAAIE,EAAQ,KAAK,SAAQ,EACzB,KAAK,WAAW,CACd,OACAA,EACA,eACA,KAAK,eAAeA,EAAO,OAAW,EAAI,EAC1C,IAAI,CACL,EACG,KAAK,YAAY,UACnB,KAAK,WAAW,CACd,UACA,KAAK,eAAe,KAAM,OAAW,EAAI,EACzC,IAAI,CACL,IAWP,cAAe,UAAW,CACxB,KAAK,WACH,KAAK,eAAe,CAClB,KAAK,UAAU,4BAA4B,EAC3C,IACA,KAAK,SAAQ,EACb,GAAG,CACJ,CAAC,GAWN,WAAY,SAASC,EAAO,CAC1B,KAAK,YAAcA,GASrB,YAAa,UAAW,CACtB,KAAK,iBAAiB,KAAK,YAAY,KAAK,WAAW,CAAC,GAU1D,gBAAiB,SAASC,EAAOC,EAAOC,EAAQC,EAAQ,CACtD,IAAIhC,EAAI,EAEJ,CAACgC,GAAU,KAAK,QAAQ,QAAU,CAAC,KAAK,YAG1C,KAAK,KAAK,KAAK,cAAcH,EAAM7B,GAAG,CAAC,CAAC,EAExC,KAAK,YAAW,EAGlB,KAAK,YAAY,UAAW6B,EAAO7B,EAAG8B,EAAOC,CAAM,GAUrD,iBAAkB,SAASE,EAAcJ,EAAO,CAC9C,KAAK,eAAiB,GAEtB,KAAK,KAAK,CAAC,eAAgBI,EAAa,CAAC,EAAG,KAAMA,EAAa,CAAC,EAAG,GAAG,CAAC,EACvE,KAAK,YAAY,UAAWJ,EAAO,CAAC,GAStC,WAAY,SAASD,EAAOC,EAAOE,EAAQ,CACpCH,EAGH,KAAK,iBAAiB,wBAA0BA,EAAQ,GAAG,EAF3D,KAAK,iBAAiB,MAAM,EAK9B,KAAK,YAAY,OAAQC,EAAO,EAAG,GAAME,CAAM,GAGjD,YAAa,SAASG,EAAML,EAAO7B,EAAG8B,EAAOC,EAAQ,YACnD,GAAI,KAAK,QAAQ,QAAU,KAAK,QAAQ,cAAe,CACrD,KAAK,KACHI,GAAa,KAAK,QAAQ,QAAUJ,EAAQ,KAAMF,EAAO7B,EAAGkC,CAAI,CAAC,EAEnE,OAIF,QADIE,EAAMP,EAAM,OACT7B,EAAIoC,EAAKpC,IAEd,KAAK,aAAa,SAAAyB,EAAW,CAC3B,IAAIY,EAASC,EAAK,WAAWb,EAASI,EAAM7B,CAAC,EAAGkC,CAAI,EAGpD,OAAKJ,EAII,CAAC,OAAQO,CAAM,EAHf,CAAC,cAAeA,EAAQ,MAAOZ,CAAO,EAKhD,GAYL,sBAAuB,UAAW,CAChC,KAAK,KAAK,CACR,KAAK,UAAU,kBAAkB,EACjC,IACA,KAAK,SAAQ,EACb,KACA,KAAK,YAAY,CAAC,EAClB,GAAG,CACJ,GAWH,gBAAiB,SAASc,EAAQL,EAAM,CACtC,KAAK,YAAW,EAChB,KAAK,WAAWA,CAAI,EAIhBA,IAAS,kBACP,OAAOK,GAAW,SACpB,KAAK,WAAWA,CAAM,EAEtB,KAAK,iBAAiBA,CAAM,IAKlC,UAAW,SAASC,EAAW,CACzB,KAAK,UACP,KAAK,KAAK,IAAI,EAEZ,KAAK,eACP,KAAK,KAAK,IAAI,EACd,KAAK,KAAK,IAAI,GAEhB,KAAK,iBAAiBA,EAAY,YAAc,IAAI,GAEtD,SAAU,UAAW,CACf,KAAK,MACP,KAAK,OAAO,KAAK,KAAK,IAAI,EAE5B,KAAK,KAAO,CAAE,OAAQ,CAAA,EAAI,MAAO,CAAA,EAAI,SAAU,CAAA,EAAI,IAAK,CAAA,CAAE,GAE5D,QAAS,UAAW,CAClB,IAAIC,EAAO,KAAK,KAChB,KAAK,KAAO,KAAK,OAAO,IAAG,EAEvB,KAAK,UACP,KAAK,KAAK,KAAK,cAAcA,EAAK,GAAG,CAAC,EAEpC,KAAK,eACP,KAAK,KAAK,KAAK,cAAcA,EAAK,QAAQ,CAAC,EAC3C,KAAK,KAAK,KAAK,cAAcA,EAAK,KAAK,CAAC,GAG1C,KAAK,KAAK,KAAK,cAAcA,EAAK,MAAM,CAAC,GAS3C,WAAY,SAASF,EAAQ,CAC3B,KAAK,iBAAiB,KAAK,aAAaA,CAAM,CAAC,GAWjD,YAAa,SAASzD,EAAO,CAC3B,KAAK,iBAAiBA,CAAK,GAW7B,YAAa,SAAS4D,EAAM,CACtBA,GAAQ,KACV,KAAK,iBAAiB,KAAK,kBAAkBA,CAAI,CAAC,EAElD,KAAK,iBAAiB,IAAI,GAW9B,kBAAiB,SAACC,EAAW1D,EAAM,CACjC,IAAI2D,EAAiB,KAAK,WAAW,aAAc3D,EAAM,WAAW,EAClES,EAAU,KAAK,gBAAgBT,EAAM0D,CAAS,EAEhD,KAAK,WAAW,KAAK,CACnB,QACA,KAAK,WAAW,aAAaC,EAAgB,GAAI,CAC/C,KACA,QACA,YACAlD,CAAO,CACR,EACD,SAAS,CACV,GAYH,aAAc,SAASiD,EAAW1D,EAAM+B,EAAU,CAChD,IAAI6B,EAAY,KAAK,SAAQ,EAC3BC,EAAS,KAAK,YAAYH,EAAW1D,CAAI,EAEvC8D,EAAwB,CAAA,EAExB/B,GAEF+B,EAAsB,KAAKD,EAAO,IAAI,EAGxCC,EAAsB,KAAKF,CAAS,EAC/B,KAAK,QAAQ,QAChBE,EAAsB,KACpB,KAAK,UAAU,+BAA+B,CAAC,EAInD,IAAIC,EAAqB,CACvB,IACA,KAAK,iBAAiBD,EAAuB,IAAI,EACjD,GAAG,EAEDE,EAAe,KAAK,OAAO,aAC7BD,EACA,OACAF,EAAO,UAAU,EAEnB,KAAK,KAAKG,CAAY,GAGxB,iBAAkB,SAASC,EAAOC,EAAW,CAC3C,IAAIC,EAAS,CAAA,EACbA,EAAO,KAAKF,EAAM,CAAC,CAAC,EACpB,QAAS,EAAI,EAAG,EAAIA,EAAM,OAAQ,IAChCE,EAAO,KAAKD,EAAWD,EAAM,CAAC,CAAC,EAEjC,OAAOE,GAST,kBAAmB,SAAST,EAAW1D,EAAM,CAC3C,IAAI6D,EAAS,KAAK,YAAYH,EAAW1D,CAAI,EAC7C,KAAK,KAAK,KAAK,OAAO,aAAa6D,EAAO,KAAM,OAAQA,EAAO,UAAU,CAAC,GAe5E,gBAAiB,SAAS7D,EAAMoE,EAAY,CAC1C,KAAK,YAAY,QAAQ,EAEzB,IAAIR,EAAY,KAAK,SAAQ,EAE7B,KAAK,UAAS,EACd,IAAIC,EAAS,KAAK,YAAY,EAAG7D,EAAMoE,CAAU,EAE7CC,EAAc,KAAK,WAAa,KAAK,WACvC,UACArE,EACA,QAAQ,EAGNoD,EAAS,CAAC,IAAK,aAAciB,EAAY,OAAQT,EAAW,GAAG,EAC9D,KAAK,QAAQ,SAChBR,EAAO,CAAC,EAAI,aACZA,EAAO,KACL,uBACA,KAAK,UAAU,+BAA+B,CAAC,GAInD,KAAK,KAAK,CACR,IACAA,EACAS,EAAO,WAAa,CAAC,MAAOA,EAAO,UAAU,EAAI,CAAA,EACjD,KACA,sBACA,KAAK,UAAU,YAAY,EAC3B,MACA,KAAK,OAAO,aAAa,SAAU,OAAQA,EAAO,UAAU,EAC5D,aAAa,CACd,GAUH,cAAe,SAASS,EAAWtE,EAAMuE,EAAQ,CAC/C,IAAIzC,EAAS,CAAA,EACXrB,EAAU,KAAK,YAAYT,EAAM,EAAG8B,CAAM,EAExCwC,IACFtE,EAAO,KAAK,SAAQ,EACpB,OAAOS,EAAQ,MAGb8D,IACF9D,EAAQ,OAAS,KAAK,UAAU8D,CAAM,GAExC9D,EAAQ,QAAU,UAClBA,EAAQ,SAAW,WACnBA,EAAQ,WAAa,uBAEhB6D,EAGHxC,EAAO,QAAQ9B,CAAI,EAFnB8B,EAAO,QAAQ,KAAK,WAAW,WAAY9B,EAAM,SAAS,CAAC,EAKzD,KAAK,QAAQ,SACfS,EAAQ,OAAS,UAEnBA,EAAU,KAAK,cAAcA,CAAO,EACpCqB,EAAO,KAAKrB,CAAO,EAEnB,KAAK,KAAK,KAAK,OAAO,aAAa,0BAA2B,GAAIqB,CAAM,CAAC,GAS3E,aAAc,SAAS0C,EAAK,CAC1B,IAAI3E,EAAQ,KAAK,SAAQ,EACvBa,EAAO,OACPuC,EAAI,OACJwB,EAAE,OAEA,KAAK,WACPA,EAAK,KAAK,SAAQ,GAEhB,KAAK,eACPxB,EAAO,KAAK,SAAQ,EACpBvC,EAAU,KAAK,SAAQ,GAGzB,IAAI8C,EAAO,KAAK,KACZ9C,IACF8C,EAAK,SAASgB,CAAG,EAAI9D,GAEnBuC,IACFO,EAAK,MAAMgB,CAAG,EAAIvB,GAEhBwB,IACFjB,EAAK,IAAIgB,CAAG,EAAIC,GAElBjB,EAAK,OAAOgB,CAAG,EAAI3E,GAGrB,OAAQ,SAASoD,EAAMjD,EAAM0E,EAAO,CAC9BzB,IAAS,aACX,KAAK,iBACH,eACEjD,EAAK,CAAC,EACN,UACAA,EAAK,CAAC,EACN,KACC0E,EAAQ,MAAQ,KAAK,UAAU,IAAMA,CAAK,EAAI,GAAG,EAE7CzB,IAAS,iBAClB,KAAK,WAAWjD,CAAI,EACXiD,IAAS,gBAClB,KAAK,iBAAiB,MAAM,EAE5B,KAAK,iBAAiB,MAAM,GAMhC,SAAUnD,GAEV,gBAAiB,SAASU,EAAaC,EAAS,CAK9C,QAJIkE,EAAWnE,EAAY,SACzBkE,EAAK,OACLE,EAAQ,OAED7D,EAAI,EAAGC,EAAI2D,EAAS,OAAQ5D,EAAIC,EAAGD,IAAK,CAC/C2D,EAAQC,EAAS5D,CAAC,EAClB6D,EAAW,IAAI,KAAK,SAEpB,IAAIC,EAAW,KAAK,qBAAqBH,CAAK,EAE9C,GAAIG,GAAY,KAAM,CACpB,KAAK,QAAQ,SAAS,KAAK,EAAE,EAC7B,IAAIC,EAAQ,KAAK,QAAQ,SAAS,OAClCJ,EAAM,MAAQI,EACdJ,EAAM,KAAO,UAAYI,EACzB,KAAK,QAAQ,SAASA,CAAK,EAAIF,EAAS,QACtCF,EACAjE,EACA,KAAK,QACL,CAAC,KAAK,UAAU,EAElB,KAAK,QAAQ,WAAWqE,CAAK,EAAIF,EAAS,WAC1C,KAAK,QAAQ,aAAaE,CAAK,EAAIJ,EAEnC,KAAK,UAAY,KAAK,WAAaE,EAAS,UAC5C,KAAK,eAAiB,KAAK,gBAAkBA,EAAS,eACtDF,EAAM,UAAY,KAAK,UACvBA,EAAM,eAAiB,KAAK,oBAE5BA,EAAM,MAAQG,EAAS,MACvBH,EAAM,KAAO,UAAYG,EAAS,MAElC,KAAK,UAAY,KAAK,WAAaA,EAAS,UAC5C,KAAK,eAAiB,KAAK,gBAAkBA,EAAS,iBAI5D,qBAAsB,SAASH,EAAO,CACpC,QAAS3D,EAAI,EAAGoC,EAAM,KAAK,QAAQ,aAAa,OAAQpC,EAAIoC,EAAKpC,IAAK,CACpE,IAAIP,EAAc,KAAK,QAAQ,aAAaO,CAAC,EAC7C,GAAIP,GAAeA,EAAY,OAAOkE,CAAK,EACzC,OAAOlE,IAKb,kBAAmB,SAASiD,EAAM,CAChC,IAAIiB,EAAQ,KAAK,YAAY,SAASjB,CAAI,EACxCsB,EAAgB,CAACL,EAAM,MAAO,OAAQA,EAAM,WAAW,EAEzD,OAAI,KAAK,gBAAkB,KAAK,YAC9BK,EAAc,KAAK,aAAa,EAE9B,KAAK,WACPA,EAAc,KAAK,QAAQ,EAGtB,qBAAuBA,EAAc,KAAK,IAAI,EAAI,KAG3D,YAAa,SAAS/E,EAAM,CACrB,KAAK,UAAUA,CAAI,IACtB,KAAK,UAAUA,CAAI,EAAI,GACvB,KAAK,UAAU,KAAK,KAAKA,CAAI,IAIjC,KAAM,SAASgF,EAAM,CACnB,OAAMA,aAAgBpF,KACpBoF,EAAO,KAAK,OAAO,KAAKA,CAAI,GAG9B,KAAK,YAAY,KAAKA,CAAI,EACnBA,GAGT,iBAAkB,SAASC,EAAM,CAC/B,KAAK,KAAK,IAAIrF,GAAQqF,CAAI,CAAC,GAG7B,WAAY,SAAS7E,EAAQ,CACvB,KAAK,iBACP,KAAK,OAAO,KACV,KAAK,eACH,KAAK,OAAO,aAAa,KAAK,cAAc,EAC5C,KAAK,eAAe,CACrB,EAEH,KAAK,eAAiB,QAGpBA,GACF,KAAK,OAAO,KAAKA,CAAM,GAI3B,aAAc,SAAS8E,EAAU,CAC/B,IAAIC,EAAS,CAAC,GAAG,EACfC,EAAK,OACLC,EAAY,OACZC,EAAW,OAGb,GAAI,CAAC,KAAK,SAAQ,EAChB,MAAM,IAAArE,GAAA,QAAc,4BAA4B,EAIlD,IAAIsE,EAAM,KAAK,SAAS,EAAI,EAE5B,GAAIA,aAAe3F,GAEjBwF,EAAQ,CAACG,EAAI,KAAK,EAClBJ,EAAS,CAAC,IAAKC,CAAK,EACpBE,EAAc,OACT,CAELD,EAAe,GACf,IAAIG,EAAO,KAAK,UAAS,EAEzBL,EAAS,CAAC,KAAM,KAAK,KAAKK,CAAI,EAAG,MAAOD,EAAK,GAAG,EAChDH,EAAQ,KAAK,SAAQ,EAGvB,IAAIH,EAAOC,EAAS,KAAK,KAAME,CAAK,EAE/BE,GACH,KAAK,SAAQ,EAEXD,GACF,KAAK,YAEP,KAAK,KAAKF,EAAO,OAAOF,EAAM,GAAG,CAAC,GAGpC,UAAW,UAAW,CACpB,YAAK,YACD,KAAK,UAAY,KAAK,UAAU,QAClC,KAAK,UAAU,KAAK,QAAU,KAAK,SAAS,EAEvC,KAAK,aAAY,GAE1B,aAAc,UAAW,CACvB,MAAO,QAAU,KAAK,WAExB,YAAa,UAAW,CACtB,IAAIQ,EAAc,KAAK,YACvB,KAAK,YAAc,CAAA,EACnB,QAAS1E,EAAI,EAAGoC,EAAMsC,EAAY,OAAQ1E,EAAIoC,EAAKpC,IAAK,CACtD,IAAI2E,EAAQD,EAAY1E,CAAC,EAEzB,GAAI2E,aAAiB9F,GACnB,KAAK,aAAa,KAAK8F,CAAK,MACvB,CACL,IAAIN,EAAQ,KAAK,UAAS,EAC1B,KAAK,WAAW,CAACA,EAAO,MAAOM,EAAO,GAAG,CAAC,EAC1C,KAAK,aAAa,KAAKN,CAAK,KAIlC,SAAU,UAAW,CACnB,OAAO,KAAK,YAAY,QAG1B,SAAU,SAASO,EAAS,CAC1B,IAAIC,EAAS,KAAK,SAAQ,EACxBX,GAAQW,EAAS,KAAK,YAAc,KAAK,cAAc,IAAG,EAE5D,GAAI,CAACD,GAAWV,aAAgBrF,GAC9B,OAAOqF,EAAK,MAEZ,GAAI,CAACW,EAAQ,CAEX,GAAI,CAAC,KAAK,UACR,MAAM,IAAA3E,GAAA,QAAc,mBAAmB,EAEzC,KAAK,YAEP,OAAOgE,GAIX,SAAU,UAAW,CACnB,IAAIG,EAAQ,KAAK,SAAQ,EAAK,KAAK,YAAc,KAAK,aACpDH,EAAOG,EAAMA,EAAM,OAAS,CAAC,EAG/B,OAAIH,aAAgBrF,GACXqF,EAAK,MAELA,GAIX,YAAa,SAASvE,EAAS,CAC7B,OAAI,KAAK,WAAaA,EACb,UAAYA,EAAU,IAEtB,QAAUA,GAIrB,aAAc,SAASmF,EAAK,CAC1B,OAAO,KAAK,OAAO,aAAaA,CAAG,GAGrC,cAAe,SAASC,EAAK,CAC3B,OAAO,KAAK,OAAO,cAAcA,CAAG,GAGtC,UAAW,SAAS9F,EAAM,CACxB,IAAImB,EAAM,KAAK,QAAQnB,CAAI,EAC3B,OAAImB,GACFA,EAAI,iBACGA,IAGTA,EAAM,KAAK,QAAQnB,CAAI,EAAI,KAAK,OAAO,KAAKA,CAAI,EAChDmB,EAAI,UAAY,GAChBA,EAAI,eAAiB,EAEdA,IAGT,YAAa,SAASuC,EAAW1D,EAAM+F,EAAa,CAClD,IAAIjE,EAAS,CAAA,EACXkE,EAAa,KAAK,gBAAgBhG,EAAM0D,EAAW5B,EAAQiE,CAAW,EACpEE,EAAc,KAAK,WAAW,UAAWjG,EAAM,QAAQ,EACzDkG,EAAc,KAAK,UACd,KAAK,YAAY,CAAC,EAAC,cAAc,KAAK,YACvC,CAAC,EACF,kCAAA,EAGL,MAAO,CACL,OAAQpE,EACR,WAAYkE,EACZ,KAAMC,EACN,WAAY,CAACC,CAAW,EAAE,OAAOpE,CAAM,IAI3C,YAAa,SAAS+B,EAAQH,EAAW5B,EAAQ,CAC/C,IAAIrB,EAAU,CAAA,EACZ0F,EAAW,CAAA,EACXC,EAAQ,CAAA,EACRC,EAAM,CAAA,EACNC,EAAa,CAACxE,EACdyE,EAAK,OAEHD,IACFxE,EAAS,CAAA,GAGXrB,EAAQ,KAAO,KAAK,aAAaoD,CAAM,EACvCpD,EAAQ,KAAO,KAAK,SAAQ,EAExB,KAAK,WACPA,EAAQ,QAAU,KAAK,SAAQ,GAE7B,KAAK,eACPA,EAAQ,UAAY,KAAK,SAAQ,EACjCA,EAAQ,aAAe,KAAK,SAAQ,GAGtC,IAAI+F,EAAU,KAAK,SAAQ,EACzBC,EAAU,KAAK,SAAQ,GAIrBA,GAAWD,KACb/F,EAAQ,GAAKgG,GAAW,iBACxBhG,EAAQ,QAAU+F,GAAW,kBAM/B,QADIzF,EAAI2C,EACD3C,KACLwF,EAAQ,KAAK,SAAQ,EACrBzE,EAAOf,CAAC,EAAIwF,EAER,KAAK,WACPF,EAAItF,CAAC,EAAI,KAAK,SAAQ,GAEpB,KAAK,eACPqF,EAAMrF,CAAC,EAAI,KAAK,SAAQ,EACxBoF,EAASpF,CAAC,EAAI,KAAK,SAAQ,GAI/B,OAAIuF,IACF7F,EAAQ,KAAO,KAAK,OAAO,cAAcqB,CAAM,GAG7C,KAAK,WACPrB,EAAQ,IAAM,KAAK,OAAO,cAAc4F,CAAG,GAEzC,KAAK,eACP5F,EAAQ,MAAQ,KAAK,OAAO,cAAc2F,CAAK,EAC/C3F,EAAQ,SAAW,KAAK,OAAO,cAAc0F,CAAQ,GAGnD,KAAK,QAAQ,OACf1F,EAAQ,KAAO,QAEb,KAAK,iBACPA,EAAQ,YAAc,eAEjBA,GAGT,gBAAiB,SAASoD,EAAQH,EAAW5B,EAAQ4E,EAAa,CAChE,IAAIjG,EAAU,KAAK,YAAYoD,EAAQH,EAAW5B,CAAM,EAGxD,OAFArB,EAAQ,IAAM,KAAK,UAAU,KAAK,OAAO,eAAe,EACxDA,EAAU,KAAK,cAAcA,CAAO,EAChCiG,GACF,KAAK,YAAY,SAAS,EAC1B5E,EAAO,KAAK,SAAS,EACd,CAAC,WAAYrB,CAAO,GAClBqB,GACTA,EAAO,KAAKrB,CAAO,EACZ,IAEAA,KAKZ,UAAW,CAsBV,QArBMkG,EACJ,wZAgBA,MAAM,GAAG,EAELC,EAAiB9G,GAAmB,eAAiB,CAAA,EAElDiB,EAAI,EAAGC,EAAI2F,EAAc,OAAQ5F,EAAIC,EAAGD,IAC/C6F,EAAcD,EAAc5F,CAAC,CAAC,EAAI,KAErC,EAKDjB,GAAmB,8BAAgC,SAASE,EAAM,CAChE,MACE,CAACF,GAAmB,eAAeE,CAAI,GACvC,6BAA6B,KAAKA,CAAI,GAI1C,SAASkD,GAAa2D,EAAiBjC,EAAUhC,EAAO7B,EAAGkC,EAAM,CAC/D,IAAImC,EAAQR,EAAS,SAAQ,EAC3BzB,EAAMP,EAAM,OAKd,IAJIiE,GACF1D,IAGKpC,EAAIoC,EAAKpC,IACdqE,EAAQR,EAAS,WAAWQ,EAAOxC,EAAM7B,CAAC,EAAGkC,CAAI,EAGnD,OAAI4D,EACK,CACLjC,EAAS,UAAU,kBAAkB,EACrC,IACAQ,EACA,KACAR,EAAS,aAAahC,EAAM7B,CAAC,CAAC,EAC9B,KACA,KAAK,UAAU6D,EAAS,OAAO,eAAe,EAC9C,IAAI,EAGCQ,aAIItF,8OC7vCXgH,GAAUC,GAAA,QAAQ,OACtB,SAASC,IAAS,CAChB,IAAIC,EAAKH,GAAO,EAEhB,OAAAG,EAAG,QAAU,SAASC,EAAOC,EAAS,CACpC,OAAOC,GAAA,QAAQF,EAAOC,EAASF,CAAE,GAEnCA,EAAG,WAAa,SAASC,EAAOC,EAAS,CACvC,OAAOC,GAAA,WAAWF,EAAOC,EAASF,CAAE,GAGtCA,EAAG,IAAGI,GAAA,QACNJ,EAAG,SAAQG,GAAA,SACXH,EAAG,mBAAkBK,GAAA,QACrBL,EAAG,OAAMM,GAAA,OACTN,EAAG,MAAKM,GAAA,MACRN,EAAG,uBAAsBM,GAAA,uBAElBN,EAGT,IAAIO,GAAOR,GAAM,EACjBQ,GAAK,OAASR,GAEdS,GAAA,QAAWD,EAAI,EAEfA,GAAK,QAAOE,GAAA,QAEZF,GAAK,QAAaA,cAEHA,+KC1CR,SAASG,GAAMC,EAAK,CACzB,OAAO,IAAIC,EAAY,EAAG,OAAOD,CAAG,EAG/B,SAASC,GAAe,CAC7B,KAAK,QAAU,EAGjBA,EAAa,UAAY,IAAAC,GAAA,QAEzBD,EAAa,UAAU,IAAM,SAASE,EAAQ,CAG5C,QAFIC,EAAM,GAEDC,EAAI,EAAGC,EAAI,KAAK,QAASD,EAAIC,EAAGD,IACvCD,GAAO,KAGT,OAAAA,GAAOD,EAAS;EACTC,GAGTH,EAAa,UAAU,QAAU,SAASM,EAAS,CACjD,IAAIH,EAAM,GACRI,EAAOD,EAAQ,KACfF,EAAC,OACDC,EAAC,OAEH,GAAIC,EAAQ,YAAa,CACvB,IAAIE,EAAc,kBAClB,IAAKJ,EAAI,EAAGC,EAAIC,EAAQ,YAAY,OAAQF,EAAIC,EAAGD,IACjDI,GAAe,IAAMF,EAAQ,YAAYF,CAAC,EAE5CI,GAAe,KACfL,GAAO,KAAK,IAAIK,CAAW,EAG7B,IAAKJ,EAAI,EAAGC,EAAIE,EAAK,OAAQH,EAAIC,EAAGD,IAClCD,GAAO,KAAK,OAAOI,EAAKH,CAAC,CAAC,EAG5B,YAAK,UAEED,GAGTH,EAAa,UAAU,kBAAoB,SAASS,EAAU,CAC5D,OAAO,KAAK,IAAI,MAAQ,KAAK,cAAcA,CAAQ,EAAI,KAAK,GAE9DT,EAAa,UAAU,UAAY,SAASS,EAAU,CACpD,OAAO,KAAK,IAAI,gBAAkB,KAAK,cAAcA,CAAQ,EAAI,KAAK,GAGxET,EAAa,UAAU,eAAiBA,EAAa,UAAU,eAAiB,SAC9EU,EACA,CACA,IAAIP,EAAM,GAEV,OAAAA,GAAO,KAAK,KACTO,EAAM,OAAS,iBAAmB,aAAe,IAAM,QAAQ,EAElE,KAAK,UACLP,GAAO,KAAK,IAAI,KAAK,cAAcO,CAAK,CAAC,EACrCA,EAAM,UACRP,GAAO,KAAK,IAAI,UAAU,EAC1B,KAAK,UACLA,GAAO,KAAK,OAAOO,EAAM,OAAO,EAChC,KAAK,WAEHA,EAAM,UACJA,EAAM,SACR,KAAK,UAEPP,GAAO,KAAK,IAAI,OAAO,EACvB,KAAK,UACLA,GAAO,KAAK,OAAOO,EAAM,OAAO,EAChC,KAAK,UACDA,EAAM,SACR,KAAK,WAGT,KAAK,UAEEP,GAGTH,EAAa,UAAU,iBAAmB,SAASW,EAAS,CAC1D,IAAIC,EAAU,WAAaD,EAAQ,KAAK,SACxC,OAAIA,EAAQ,OAAO,CAAC,IAClBC,GAAW,IAAM,KAAK,OAAOD,EAAQ,OAAO,CAAC,CAAC,GAE5CA,EAAQ,OACVC,GAAW,IAAM,KAAK,OAAOD,EAAQ,IAAI,GAEpC,KAAK,IAAI,OAASC,EAAU,KAAK,GAE1CZ,EAAa,UAAU,sBAAwB,SAASW,EAAS,CAC/D,IAAIC,EAAU,iBAAmBD,EAAQ,KAAK,SAC9C,OAAIA,EAAQ,OAAO,CAAC,IAClBC,GAAW,IAAM,KAAK,OAAOD,EAAQ,OAAO,CAAC,CAAC,GAE5CA,EAAQ,OACVC,GAAW,IAAM,KAAK,OAAOD,EAAQ,IAAI,GAG3CC,GAAW,IAAM,KAAK,IAAI,UAAU,EACpC,KAAK,UACLA,GAAW,KAAK,OAAOD,EAAQ,OAAO,EACtC,KAAK,UAEE,KAAK,IAAI,OAASC,EAAU,KAAK,GAG1CZ,EAAa,UAAU,iBAAmB,SAASY,EAAS,CAC1D,OAAO,KAAK,IAAI,aAAeA,EAAQ,MAAQ,KAAK,GAGtDZ,EAAa,UAAU,iBAAmB,SAASa,EAAS,CAC1D,OAAO,KAAK,IAAI,QAAUA,EAAQ,MAAQ,MAAM,GAGlDb,EAAa,UAAU,cAAgB,SAASc,EAAO,CAKrD,QAJIC,EAASD,EAAM,OACjBE,EAAe,CAAA,EACfC,EAAI,OAEG,EAAI,EAAGZ,EAAIU,EAAO,OAAQ,EAAIV,EAAG,IACxCW,EAAa,KAAK,KAAK,OAAOD,EAAO,CAAC,CAAC,CAAC,EAG1C,OAAAA,EAAS,IAAMC,EAAa,KAAK,IAAI,EAAI,IAEzCC,EAAOH,EAAM,KAAO,IAAM,KAAK,OAAOA,EAAM,IAAI,EAAI,GAE7C,KAAK,OAAOA,EAAM,IAAI,EAAI,IAAMC,EAASE,GAGlDjB,EAAa,UAAU,eAAiB,SAASkB,EAAI,CACnD,IAAIC,EAAOD,EAAG,MAAM,KAAK,GAAG,EAC5B,OAAQA,EAAG,KAAO,IAAM,IAAM,QAAUC,GAG1CnB,EAAa,UAAU,cAAgB,SAASE,EAAQ,CACtD,MAAO,IAAMA,EAAO,MAAQ,KAG9BF,EAAa,UAAU,cAAgB,SAASoB,EAAQ,CACtD,MAAO,UAAYA,EAAO,MAAQ,KAGpCpB,EAAa,UAAU,eAAiB,SAASqB,EAAM,CACrD,MAAO,WAAaA,EAAK,MAAQ,KAGnCrB,EAAa,UAAU,iBAAmB,UAAW,CACnD,MAAO,aAGTA,EAAa,UAAU,YAAc,UAAW,CAC9C,MAAO,QAGTA,EAAa,UAAU,KAAO,SAASiB,EAAM,CAI3C,QAHIK,EAAQL,EAAK,MACfM,EAAc,CAAA,EAEPnB,EAAI,EAAGC,EAAIiB,EAAM,OAAQlB,EAAIC,EAAGD,IACvCmB,EAAY,KAAK,KAAK,OAAOD,EAAMlB,CAAC,CAAC,CAAC,EAGxC,MAAO,QAAUmB,EAAY,KAAK,IAAI,EAAI,KAE5CvB,EAAa,UAAU,SAAW,SAASwB,EAAM,CAC/C,OAAOA,EAAK,IAAM,IAAM,KAAK,OAAOA,EAAK,KAAK,KC/KhD,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAOA,IAAIC,GAAa,KAAkC,QAE/CC,GAAU,KACdD,GAAW,aAAeC,GAAQ,aAClCD,GAAW,MAAQC,GAAQ,MAE3BF,GAAO,QAAUC,GAGjB,SAASE,GAAUH,EAAQI,EAAU,CACnC,IAAIC,EAAK,GAAQ,IAAI,EACjBC,EAAiBD,EAAG,aAAaD,EAAU,MAAM,EACrDJ,EAAO,QAAUC,GAAW,QAAQK,CAAc,CACpD,CAEI,OAAOC,GAAY,KAAeA,GAAQ,aAC5CA,GAAQ,WAAW,aAAa,EAAIJ,GACpCI,GAAQ,WAAW,MAAM,EAAIJ,MCxB/B,IAAAK,GAAAC,EAAAC,IAAA,cAUA,SAASC,GAASC,EAAQC,EAAM,CAC1BD,GAAU,OAAMA,EAAS,CAAC,GAG9B,QAFIE,EAAM,CAAC,EACPC,EAAO,OAAO,KAAKF,CAAI,EAClB,EAAI,EAAGG,EAAMD,EAAK,OAAQ,EAAIC,EAAK,IAAK,CAC/C,IAAIC,EAAMF,EAAK,CAAC,EAChBD,EAAIG,CAAG,EAAIL,EAAOK,CAAG,GAAKJ,EAAKI,CAAG,CACpC,CACA,OAAOH,CACT,CACAJ,GAAQ,SAAWC,KCpBnB,IAAAO,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACE,aAAgB,GAChB,cAAiB,IACjB,cAAiB,OACjB,KAAQ,CACN,IAAK,OACL,IAAK,MACL,IAAK,MACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,KAAM,MACN,KAAM,SACN,KAAM,SACN,KAAM,WACN,KAAM,WACN,KAAM,UACN,KAAM,UACN,KAAM,YACN,KAAM,WACN,KAAM,WACN,KAAM,SACN,KAAM,SACN,KAAM,QACN,KAAM,QACN,KAAM,QACN,KAAM,UACN,KAAM,SACN,KAAM,QACR,EACA,MAAU,CACR,UACA,WACA,UACA,UACA,WACA,cACA,cACA,aACA,aACA,YACA,YACA,YACA,cACA,eACA,eACA,oBACA,eACF,EACA,eAAkB,CAAC,CACrB,ICtDA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACE,aAAgB,GAChB,cAAiB,MACjB,cAAiB,GACjB,KAAQ,CACN,IAAK,OACL,IAAK,MACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,QACN,KAAM,UACN,KAAM,SACN,KAAM,eACN,KAAM,aACN,KAAM,YACN,KAAM,aACN,KAAM,SACN,KAAM,YACN,KAAM,eACN,KAAM,gBACN,KAAM,eACN,KAAM,cACN,KAAM,gBACN,KAAM,cACN,KAAM,aACN,KAAM,cACN,KAAM,UACN,KAAM,WACN,KAAM,YACN,KAAM,UACN,KAAM,UACN,KAAM,UACN,KAAM,UACN,MAAO,OACP,MAAO,aACP,MAAO,cACP,MAAO,gBACP,MAAO,aACP,MAAO,cACP,MAAO,cACP,MAAO,cACP,MAAO,cACP,OAAQ,KACV,EACA,eAAkB,CAChB,UAAW,eACX,gBAAiB,eACjB,sBAAuB,gBACvB,4BAA6B,kBAC7B,kCAAmC,mBACnC,wCAAyC,kBACzC,8CAA+C,kBAC/C,oDAAqD,iBACrD,0DAA2D,iBAC3D,gEAAiE,iBACjE,sEAAuE,mBACvE,4EAA6E,oBAC7E,kFAAmF,oBACnF,wFAAyF,uBACzF,8FAA+F,oBACjG,EACA,MAAU,CACR,CACE,SAAY,SACZ,eAAkB,GAClB,iBAA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EACxC,CACA,MAAO,EACR,CACA,SAAS4B,GAAMI,EAAa,CAC3B,GAAI,CAACA,EAAY,SAAS,KAAK,EAAG,MAAO,GACzC,GAAI,CACH,OAAO,IAAI,IAAIA,CAAW,EAAE,OAAS,EACtC,MAAQ,CACP,MAAO,EACR,CACD,CAIA,IAAMC,GAAiB,CAAC,CAAC,6BAA8B,CAAC,CAAC,CAAE9D,CAAI,KACvD,CAAE,uBAAwBA,CAAK,EACtC,CAAC,EAII+D,GAAQ,CACbjD,GACAO,GACAC,GACAC,GACAU,GACA+B,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAN,GACAO,GACAN,GACAO,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACArI,GACAsC,GACAyC,GACAE,GACAqD,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAtG,GACA0B,GACA6E,GACAC,GACAC,GACAC,EACD,EAAE,KAAK,ECnhGP,IAAMC,GAAY,CAAC,GAAGC,EAAkB,ECFxC,IAAMC,GAAS,CACd,MAAO,OACP,MAAO,OACP,MAAO,CACN,GAAI,6BACJ,IAAK,6BACL,IAAK,6BACL,IAAK,6BACL,IAAK,4BACL,IAAK,6BACL,IAAK,6BACL,IAAK,6BACL,IAAK,6BACL,IAAK,6BACL,IAAK,4BACN,EACA,KAAM,CACL,GAAI,6BACJ,IAAK,6BACL,IAAK,6BACL,IAAK,4BACL,IAAK,6BACL,IAAK,6BACL,IAAK,4BACL,IAAK,6BACL,IAAK,6BACL,IAAK,2BACL,IAAK,0BACN,EACA,KAAM,CAC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SAAU,WACV,WAAY,SACb,EACA,KAAQ,CACP,SAAU,OACV,WAAY,QACb,EACA,GAAM,CACL,SAAU,WACV,WAAY,SACb,EACA,GAAM,CACL,SAAU,UACV,WAAY,SACb,EACA,MAAO,CACN,SAAU,SACV,WAAY,MACb,EACA,MAAO,CACN,SAAU,WACV,WAAY,SACb,EACA,MAAO,CACN,SAAU,UACV,WAAY,QACb,EACA,MAAO,CACN,SAAU,OACV,WAAY,GACb,EACA,MAAO,CACN,SAAU,UACV,WAAY,GACb,EACA,MAAO,CACN,SAAU,SACV,WAAY,GACb,EACA,MAAO,CACN,SAAU,OACV,WAAY,GACb,EACA,MAAO,CACN,SAAU,OACV,WAAY,GACb,CACD,EACMC,GAAa,CAClB,KAAM,MACN,WAAY,MACZ,MAAO,MACP,OAAQ,MACR,OAAQ,MACR,SAAU,MACV,KAAM,MACN,UAAW,MACX,MAAO,KACR,EACMC,GAAW,CAChB,QAAS,UACT,MAAO,WACP,OAAQ,MACR,KAAM,UACN,MAAO,SACP,OAAQ,OACT,EACMC,GAAU,CACf,KAAM,IACN,MAAO,OACP,KAAM,QACN,OAAQ,MACR,QAAS,QACT,MAAO,GACR,EACMC,GAAkB,CACvB,QAAS,SACT,KAAM,IACN,GAAI,OACJ,GAAI,SACJ,GAAI,OACL,EAIMC,GAAQ,CACb,SAAU,0BACV,UAAW,2BACX,QAAS,+BACT,SAAU,gCACV,UAAW,0CACX,cAAe,mCACf,cAAe,2BACf,aAAc,0BACd,WAAY,gDACZ,eAAgB,yCAChB,YAAa,wCACb,gBAAiB,iCACjB,MAAO,sCACP,OAAQ,oCACR,QAAS,gCACT,MAAO,8BACP,SAAU,uBACX,EAIMC,GAAU,CACf,QAAW,UACX,GAAM,UACN,GAAM,WACN,GAAM,WACN,GAAM,UACN,MAAO,SACP,MAAO,WACP,MAAO,UACP,MAAO,OACP,MAAO,UACP,MAAO,SACP,MAAO,OACP,MAAO,MACR,EACMC,GAAS,CACd,QAAW,UACX,KAAQ,IACR,GAAM,WACN,GAAM,UACN,GAAM,WACN,GAAM,SACN,GAAM,UACN,MAAO,OACP,MAAO,SACP,MAAO,MACR,EACMC,GAAS,CACd,QAAW,CAAC,+BAAgC,iCAAiC,EAC7E,MAAO,0BACP,GAAM,gCACN,GAAM,CAAC,+BAAgC,iCAAiC,EACxE,GAAM,CAAC,kCAAmC,iCAAiC,EAC3E,GAAM,CAAC,oCAAqC,iCAAiC,EAC7E,GAAM,CAAC,oCAAqC,kCAAkC,EAC9E,MAAO,sCACP,KAAQ,qBACR,MAAS,qCACV,EACMC,GAAc,CACnB,MAAO,gCACP,GAAM,oCACN,GAAM,oCACN,KAAQ,oBACT,EACMC,GAAa,CAClB,QAAW,CAAC,6BAA8B,6BAA6B,EACvE,GAAM,8BACN,GAAM,8BACN,GAAM,8BACN,GAAM,8BACN,GAAM,6BACN,MAAO,+BACR,EACMC,GAAa,CAClB,KAAQ,qBACR,MAAO,4BACP,GAAM,6BACN,GAAM,CACL,6BACA,+BACA,8BACD,EACA,GAAM,CACL,6BACA,6BACA,4BACD,EACA,GAAM,CACL,6BACA,6BACA,4BACD,CACD,EACMC,GAAc,CACnB,SAAU,QACV,KAAM,QACN,OAAQ,QACR,SAAU,QACV,QAAS,QACV,EAEMC,GAAW,CAChB,WAAY,CACX,SAAU,QACV,eAAgB,8BACjB,EACA,KAAM,CACL,OAAQ,mBACR,gBAAiB,0CACjB,kBAAmB,2CACpB,EACA,SAAU,CACT,OAAQ,mBACR,gBAAiB,0CACjB,kBAAmB,2CACpB,CACD,EAIMC,GAAY,CACjB,MAAO,QACP,MAAO,QACP,GAAM,QACN,GAAM,QACN,GAAM,QACN,GAAM,QACN,GAAM,QACN,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAS,MACV,EACMC,GAAa,CAClB,GAAM,QACN,GAAM,QACN,GAAM,QACN,GAAM,QACN,MAAO,OACR,EACMC,GAAqB,CAAE,GAAGD,EAAW,EAIrCE,GAAW,CAAE,KAAM,iBAAkB,EAIrCC,GAAO,CACZ,OAAU,SACV,GAAM,6BACN,IAAO,6BACP,SAAU,+BACV,QAAW,8BACZ,EACMC,GAAW,CAChB,KAAM,OACN,IAAK,MACL,OAAQ,CACP,QACA,mBACA,eACA,wBACA,OACA,SACA,qBACA,oBACA,kBACD,EAAE,KAAK,GAAG,EACV,QAAS,UACT,OAAQ,aACR,UAAW,CACV,YACA,YACA,QACA,QACD,EAAE,KAAK,GAAG,EACV,IAAI,SAAU,CACb,MAAO,CACN,KAAK,OACL,KAAK,QACL,KAAK,OACL,KAAK,UACL,SACA,0BACA,iBACD,EAAE,KAAK,GAAG,CACX,CACD,EAIMC,GAAQ,CACb,KAAArB,GACA,OAAAsB,GACA,QAAAf,GACA,WAAAS,GACA,mBAAAC,GACA,KAAAhB,GACA,WAAAC,GACA,SAAAC,GACA,QAAAC,GACA,gBAAAC,GACA,OAAAG,GACA,OAAAC,GACA,YAAAC,GACA,WAAAC,GACA,WAAAC,GACA,KAAAO,GACA,UAAAtB,GACA,KAAAE,GACA,YAAAc,GACA,SAAAO,GACA,QAASN,GACT,UAAAC,GACA,KAAAjB,GACA,MAAAQ,GACA,SAAAY,EACD,EChoBA,IAAMK,GAAc,CACnB,KAAM,OACN,MAAMC,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,QAASH,EAASC,EAAI,UAAU,OAAO,UAAU,EACrF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChBI,EAAOC,EAAE,QAAQH,CAAK,GAAKH,EAAI,MAAM,OAAOG,CAAK,GAAK,GAC5D,GAAIE,EAAM,MAAO,CAChB,QAASD,EACT,SAAW,GAAM,GAAG,CAAC,SAASC,CAAI,GACnC,CACD,CACD,EACA,UAAW,GACX,aAAc,YACf,EACA,SAASE,GAAWC,EAAS,CAC5B,MAAO,CACN,KAAM,GAAGA,CAAO,QAChB,MAAMT,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,GAAGM,CAAO,SAAUT,EAASC,EAAI,UAAU,OAAO,UAAU,EAChG,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,EAAMK,CAAK,EAAIR,EACvBS,EAAgBJ,EAAE,QAAQH,CAAK,GAAKH,EAAI,MAAM,OAAOG,CAAK,GAAK,GACrE,GAAIO,EAAe,CAClB,IAAMC,EAAiB,CACtB,MAAO,qBAAqBF,EAAQ,MAAMA,CAAK,GAAK,EAAE,UAAUC,CAAa,OAC7E,KAAM,oBAAoBD,EAAQ,MAAMA,CAAK,GAAK,EAAE,UAAUC,CAAa,SAC3E,SAAU,iBAAiBA,CAAa,SACxC,OAAQ,iBAAiBA,CAAa,SACtC,IAAK,gBAAgBA,CAAa,KAClC,GAAI,iBAAiBA,CAAa,MACnC,EACA,MAAO,CACN,QAASN,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,GAAGA,EAAM,QAAQ,GACrE,SAAUD,EAAeH,CAAO,CACjC,CAAC,CACF,CACD,CACD,CACD,EACA,UAAW,EACZ,CACD,CACA,IAAMM,GAA8B,CACnCP,GAAW,OAAO,EAClBA,GAAW,MAAM,EACjBA,GAAW,QAAQ,EACnBA,GAAW,UAAU,EACrBA,GAAW,KAAK,EAChBA,GAAW,IAAI,CAChB,EAIMQ,GAAa,0BACnB,SAASC,IAAqB,CAC7B,IAAMC,EAAa,CAAC,EACpB,MAAO,CACN,KAAM,cACN,MAAMlB,EAASmB,EAAS,CACvB,GAAIH,GAAW,KAAKhB,CAAO,EAAG,CAC7B,IAAMI,EAAQJ,EAAQ,MAAMgB,EAAU,EACtC,MAAO,CACN,QAAShB,EAAQ,QAAQI,EAAM,CAAC,EAAG,EAAE,EACrC,OAAQ,CAACS,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,WAAWT,EAAM,CAAC,CAAC,WAAWA,EAAM,CAAC,CAAC,GAC3F,CAAC,CACF,CACD,CACA,IAAMgB,GAAkBC,GAAmBF,CAAO,GAAK,CAAC,GAAG,IAAI,CAAC,CAAE,MAAAG,EAAO,KAAAC,CAAK,EAAGC,IAAQ,CACxFF,EACAC,EACAC,CACD,CAAC,EACD,OAAW,CAACF,EAAOC,EAAMC,CAAG,IAAKJ,EAAgB,CAC3CF,EAAWI,CAAK,IAAGJ,EAAWI,CAAK,EAAoB,IAAI,OAAO,4BAA4BA,CAAK,MAAMH,EAAQ,UAAU,OAAO,WAAW,KAAK,GAAG,CAAC,IAAI,GAC/J,IAAMf,EAAQJ,EAAQ,MAAMkB,EAAWI,CAAK,CAAC,EAC7C,GAAI,CAAClB,EAAO,SACZ,GAAM,CAAC,CAAEqB,CAAG,EAAIrB,EACVsB,EAAI1B,EAAQ,MAAMyB,EAAI,MAAM,EAClC,GAAIC,IAAM,YAAa,SACvB,IAAMC,EAAaF,EAAI,WAAW,KAAK,GAAKA,EAAI,WAAW,GAAG,GAAKA,EAAI,WAAW,MAAM,EAClFG,EAAaH,EAAI,WAAW,KAAK,GAAKA,EAAI,WAAW,GAAG,EAC1DI,EAAQ,IACZ,OAAIF,GACHE,GAASL,EAAM,EACR,CACN,QAASE,EACT,OAAQ,CAACb,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,sBAAsBiB,GAAmBP,CAAI,CAAC,IAClG,YAAaM,CACd,CAAC,CACF,IAEDA,GAASL,EAAM,EACXI,GAAcJ,EAAMJ,EAAe,OAAS,EAAU,CACzD,QAASM,EACT,OAAQ,CAACb,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,sBAAsBU,CAAI,qBAAqBO,GAAmBV,EAAeI,EAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IACjJ,YAAaK,CACd,CAAC,CACF,EACO,CACN,QAASH,EACT,OAAQ,CAACb,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,sBAAsBU,CAAI,IAC9E,YAAaM,CACd,CAAC,CACF,EACD,CACD,EACA,UAAW,GACX,aAAc,6BACf,CACD,CAIA,IAAME,GAAkB,CAACC,GAAe,IAAMnB,IAAW,CAAE,SAAU,GAAGA,EAAM,QAAQ,MAAO,GAAI,CAAE,MAAO,EAAG,CAAC,EAAGmB,GAAe,KAAOnB,IAAW,CAAE,SAAU,GAAGA,EAAM,QAAQ,IAAK,GAAI,CAAE,MAAO,EAAG,CAAC,CAAC,EAItM,SAASoB,GAAaC,EAAMC,EAAY,CACvC,MAAO,CACN,KAAM,cAAcD,CAAI,GACxB,MAAMlC,EAASC,EAAK,CACnB,GAAI,CAACD,EAAQ,WAAWkC,CAAI,EAAG,OAC/B,IAAME,EAAanC,EAAI,UAAU,OAAO,WACpCoC,EAAOC,GAAkB,GAAGJ,CAAI,IAAKlC,EAASoC,CAAU,EAC5D,GAAI,CAACC,EAAM,CACV,QAAWE,KAAaH,EAAY,GAAIpC,EAAQ,WAAW,GAAGkC,CAAI,GAAGK,CAAS,EAAE,EAAG,CAClFF,EAAO,CAAC,GAAIrC,EAAQ,MAAMkC,EAAK,OAASK,EAAU,MAAM,CAAC,EACzD,KACD,CACA,GAAI,CAACF,EAAM,MACZ,CACA,IAAIG,EAAejC,EAAE,QAAQ8B,EAAK,CAAC,CAAC,GAAK,GACzC,OAAIG,IAAiB,KAAIA,EAAe,KACjC,CACN,QAASH,EAAK,CAAC,EACf,SAAWI,GAAM,GAAGA,CAAC,GAAGN,CAAU,GAAGK,CAAY,EAClD,CACD,EACA,UAAW,EACZ,CACD,CACA,IAAME,GAAqB,CAC1BT,GAAa,MAAO,GAAG,EACvBA,GAAa,WAAY,GAAG,EAC5BA,GAAa,OAAQ,GAAG,EACxBA,GAAa,UAAW,GAAG,EAC3BA,GAAa,WAAY,GAAG,CAC7B,EACMU,GAAwB,CAACX,GAAe,MAAQnB,IAAW,CAAE,SAAU,GAAGA,EAAM,QAAQ,MAAO,EAAE,CAAC,EAIlG+B,GAAwB,CAC7B,KAAM,IACN,MAAM5C,EAASC,EAAK,CACnB,GAAID,EAAQ,WAAW,YAAY,EAAG,OACtC,IAAME,EAAUC,GAAoB,IAAKH,EAASC,EAAI,UAAU,OAAO,UAAU,EACjF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,EAAMK,CAAK,EAAIR,EACvB2C,EAAYtC,EAAE,QAAQH,CAAK,EAC7B0C,EAGJ,GAFID,EAAWC,EAAYvC,EAAE,eAAesC,CAAS,EAChDC,EAAY7C,EAAI,MAAM,YAAYG,CAAK,GAAK,GAC7C0C,EAAW,CACd,IAAIjB,EAAQ,IAAM,OAAO,KAAK5B,EAAI,MAAM,WAAa,CAAC,CAAC,EAAE,QAAQG,CAAK,EACtE,OAAIM,IAAOmB,GAAS,KACb,CACN,QAASxB,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,aAAaH,EAAQ,IAAIA,CAAK,IAAM,GAAG,eAAeoC,CAAS,IACnH,YAAajB,CACd,CAAC,CACF,CACD,CACD,CACD,EACA,UAAW,EACZ,EAIA,SAASkB,GAA0BC,EAAU,CAAC,EAAG,CAChD,GAAIA,GAAS,OAAS,SAAW,OAAOA,EAAQ,MAAS,SAAU,CAClE,GAAM,CAAE,KAAAC,EAAO,QAAS,MAAAC,EAAQ,QAAS,EAAI,OAAOF,EAAQ,MAAS,SAAW,CAAC,EAAIA,EAAQ,KAC7F,MAAO,CAAChB,GAAe,OAASnB,IAAW,CAAE,OAAQ,GAAGoC,CAAI,OAAOpC,EAAM,MAAM,EAAG,EAAE,EAAGmB,GAAe,QAAUnB,IAAW,CAAE,OAAQ,GAAGqC,CAAK,OAAOrC,EAAM,MAAM,EAAG,EAAE,CAAC,CACvK,CACA,MAAO,CAACsC,GAAqB,OAAQ,qCAAqC,EAAGA,GAAqB,QAAS,sCAAsC,CAAC,CACnJ,CACA,IAAMC,GAAsB,CAC3BpB,GAAe,QAAUnB,IAAW,CAAE,OAAQ,YAAYA,EAAM,MAAM,EAAG,EAAE,EAC3EmB,GAAe,SAAWnB,IAAW,CAAE,OAAQ,aAAaA,EAAM,MAAM,EAAG,EAAE,EAC7EsC,GAAqB,QAAS,qCAAqC,EACnEA,GAAqB,SAAU,sCAAsC,EACrEA,GAAqB,WAAY,yCAAyC,CAC3E,EAIME,GAAuB,CAC5B,KAAM,OACN,MAAMrD,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,QAASH,EAASC,EAAI,UAAU,OAAO,UAAU,EACrF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChBoD,EAAgB/C,EAAE,QAAQH,CAAK,GAAKH,EAAI,MAAM,OAAOG,CAAK,GAAK,GACrE,GAAIkD,EAAe,MAAO,CACzB,QAASjD,EACT,SAAW,GAAM,GAAG,CAAC,SAASiD,CAAa,GAC5C,CACD,CACD,EACA,UAAW,EACZ,EACA,SAASC,GAAW9C,EAAS,CAC5B,MAAO,CACN,KAAM,GAAGA,CAAO,QAChB,MAAMT,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,GAAGM,CAAO,SAAUT,EAASC,EAAI,UAAU,OAAO,UAAU,EAChG,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,EAAMK,CAAK,EAAIR,EACvBoD,EAAgB/C,EAAE,QAAQH,CAAK,GAAKH,EAAI,MAAM,OAAOG,CAAK,GAAK,GACrE,GAAIkD,EAAe,CAClB,IAAM1C,EAAiB,CACtB,MAAO,qBAAqBF,EAAQ,MAAMA,CAAK,GAAK,EAAE,UAAU4C,CAAa,OAC7E,KAAM,oBAAoB5C,EAAQ,MAAMA,CAAK,GAAK,EAAE,UAAU4C,CAAa,SAC3E,SAAU,iBAAiBA,CAAa,SACxC,OAAQ,iBAAiBA,CAAa,SACtC,IAAK,gBAAgBA,CAAa,KAClC,GAAI,iBAAiBA,CAAa,MACnC,EACA,MAAO,CACN,QAASjD,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,GAAGA,EAAM,QAAQ,GACrE,SAAUD,EAAeH,CAAO,CACjC,CAAC,CACF,CACD,CACD,CACD,EACA,UAAW,EACZ,CACD,CACA,IAAM+C,GAA8B,CACnCD,GAAW,OAAO,EAClBA,GAAW,MAAM,EACjBA,GAAW,QAAQ,EACnBA,GAAW,UAAU,EACrBA,GAAW,KAAK,EAChBA,GAAW,IAAI,CAChB,EAIME,GAA4B,CAACzB,GAAe,MAAQnB,IAAW,CAAE,OAAQ,kBAAkBA,EAAM,MAAM,EAAG,EAAE,EAAGmB,GAAe,MAAQnB,IAAW,CAAE,OAAQ,kBAAkBA,EAAM,MAAM,EAAG,EAAE,CAAC,EAIrM,SAAS6C,IAAmB,CAC3B,IAAIC,EACJ,MAAO,CACN,KAAM,YACN,MAAM3D,EAASC,EAAK,CACd0D,IAAIA,EAAqB,IAAI,OAAO,iBAAiB1D,EAAI,UAAU,OAAO,WAAW,KAAK,GAAG,CAAC,MAAM,GACzG,IAAI2D,EACExD,EAAQJ,EAAQ,MAAM2D,CAAE,EAG9B,GAFIvD,EAAOwD,EAAO5D,EAAQ,MAAMI,EAAM,CAAC,EAAE,MAAM,EACtCJ,EAAQ,SAAS,GAAG,IAAG4D,EAAO5D,EAAQ,MAAM,EAAG,EAAE,GACtD4D,EAAM,MAAO,CAChB,QAASA,EACT,KAAOvB,IACNA,EAAK,QAASwB,GAAM,CACfA,EAAE,CAAC,GAAK,OAAMA,EAAE,CAAC,GAAK,cAC3B,CAAC,EACMxB,EAET,CACD,CACD,CACD,CAIA,IAAMyB,GAAe9B,GAAe,QAAUnB,IAAW,CACxD,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,GAAGA,EAAM,QAAQ,GACrE,SAAU,yBACX,EAAE,EAIIkD,GAAkBZ,GAAqB,WAAY,0BAA0B,EAC7Ea,GAAmB,CACxB,KAAM,YACN,MAAMhE,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,CAAC,UAAW,YAAY,EAAGH,EAASC,EAAI,UAAU,OAAO,UAAU,EACvG,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EACtB,GAAI,CACH,OACA,eACA,SACD,EAAE,SAASE,CAAK,EAAG,MAAO,CACzB,QAASC,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,sBAAsBT,CAAK,GAChF,CAAC,CACF,CACD,CACD,EACA,UAAW,GACX,aAAc,CAAC,gDAAgD,CAChE,EACM6D,GAAed,GAAqB,QAAS,cAAc,EAC3De,GAAqB,CAC1B,KAAM,QACN,MAAMlE,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,SAAUH,EAASC,EAAI,UAAU,OAAO,UAAU,EACtF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAClBiE,EAAQ5D,EAAE,QAAQH,CAAK,GAAK,GAEhC,GADI+D,IAAU,KAAIA,EAAQlE,EAAI,MAAM,QAAQG,CAAK,GAAK,IAClD+D,EAAO,MAAO,CACjB,QAAS9D,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,UAAUsD,CAAK,EACpE,CAAC,CACF,CACD,CACD,EACA,UAAW,GACX,aAAc,cACf,EACMC,GAAmB,CAACjB,GAAqB,gBAAiB,iCAAiC,EAAGA,GAAqB,gBAAiB,iCAAiC,CAAC,EACtKkB,GAAiB,CAAClB,GAAqB,gBAAiB,yCAAyC,EAAGA,GAAqB,cAAe,gDAAgD,CAAC,EACzLmB,GAAsB,CAACnB,GAAqB,YAAa,iCAAiC,EAAGA,GAAqB,WAAY,gCAAgC,CAAC,EAC/JoB,GAAsB,CAACpB,GAAqB,gBAAiB,gCAAgC,CAAC,EAI9FqB,GAAkB,CACvB,KAAM,WACN,MAAMxE,EAASC,EAAK,CACnB,IAAMC,EAAUoC,GAAkB,YAAatC,EAASC,EAAI,UAAU,OAAO,UAAU,EACvF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChBuE,EAAWlE,EAAE,QAAQH,CAAK,EAChC,GAAIqE,EAAU,MAAO,CACpB,QAASpE,EACT,SAAU,IAAMoE,CACjB,CACD,CACD,CACD,EACMC,GAAkB,CACvB,KAAM,QACN,MAAM1E,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,SAAUH,EAASC,EAAI,UAAU,OAAO,UAAU,EACtF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChByE,EAAQpE,EAAE,QAAQH,CAAK,GAAKA,EAClC,GAAIuE,EAAO,MAAO,CACjB,QAAStE,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,UAAU8D,CAAK,EACpE,CAAC,CACF,CACD,CACD,CACD,EACMC,GAAuB,CAC5B,KAAM,YACN,MAAM5E,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,aAAcH,EAASC,EAAI,UAAU,OAAO,UAAU,EAC1F,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChByE,EAAQpE,EAAE,QAAQH,CAAK,GAAKA,EAClC,GAAIuE,EAAO,MAAO,CACjB,QAAStE,EACT,MAAAsE,CACD,CACD,CACD,CACD,EACME,GAAe,CACpB,KAAM,QACN,MAAM7E,EAASC,EAAK,CACnB,IAAMC,EAAUoC,GAAkB,SAAUtC,EAASC,EAAI,UAAU,OAAO,UAAU,EACpF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChB4E,EAAQvE,EAAE,QAAQH,CAAK,EAC7B,GAAI0E,EAAO,MAAO,CACjB,QAASzE,EACT,SAAW,GAAM,GAAGyE,CAAK,OAAO,CAAC,EAClC,CACD,CACD,CACD,EACMC,GAAmB,CACxB,KAAM,YACN,MAAM/E,EAASC,EAAK,CACnB,GAAI,CAACD,EAAQ,WAAW,GAAG,EAAG,OAC9B,GAAM,CAACI,EAAOC,CAAI,EAAI2E,GAAWhF,EAAS,IAAK,GAAG,GAAK,CAAC,EACxD,GAAI,EAAEI,GAASC,GAAO,OACtB,IAAI4E,EACJ,QAAW1C,KAAatC,EAAI,UAAU,OAAO,WAAY,GAAII,EAAK,WAAWkC,CAAS,EAAG,CACxF0C,EAAa5E,EAAK,MAAMkC,EAAU,MAAM,EACxC,KACD,CACA,GAAI0C,GAAc,KAAM,OACxB,IAAM/E,EAAUK,EAAE,QAAQH,CAAK,GAAK,GAC9B8E,EAAYhF,EAAQ,WAAW,GAAG,EACxC,GAAMgF,GAAahF,EAAQ,SAAS,GAAG,EACvC,MAAO,CACN,QAAS+E,EACT,OAAOpE,EAAOC,EAAM,CACnB,IAAMqE,EAAUD,EAAY,CAAE,OAAQ,GAAGrE,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,GAAGX,CAAO,EAAG,EAAI,CAAE,SAAUA,EAAQ,QAAQ,KAAMW,EAAM,QAAQ,CAAE,EACrJ,OAAOC,EAAK,CACX,GAAGD,EACH,GAAGsE,CACJ,CAAC,CACF,CACD,CACD,EACA,UAAW,EACZ,EACMC,GAAe,CACpB,KAAM,kBACN,MAAMpF,EAASC,EAAK,CACnB,GAAKoF,GAAWrF,CAAO,EACvB,MAAO,CACN,QAAAA,EACA,OAAOa,EAAOC,EAAM,CACnB,OAAOA,EAAK,CACX,GAAGD,EACH,QAAS,KAAK,MAAMyE,GAAiB,KAAK,UAAUzE,EAAM,OAAO,EAAGZ,EAAI,KAAK,CAAC,CAC/E,CAAC,CACF,CACD,CACD,CACD,EACMsF,GAAqB,CAACvD,GAAe,SAAWnB,IAAW,CAChE,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,4CACpD,SAAU,GAAGA,EAAM,UAAY,EAAE,QAClC,EAAE,CAAC,EACG2E,GAAuB,CAC5B,KAAM,iBACN,MAAMxF,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,MAAOH,EAASC,EAAI,UAAU,OAAO,UAAU,EACnF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAChBuF,EAAQlF,EAAE,QAAQH,CAAK,GAAKA,EAClC,GAAIqF,EAAO,MAAO,CACjB,QAASpF,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,GAAGA,EAAM,QAAQ,GACrE,SAAU,eAAe4E,CAAK,MAC/B,CAAC,CACF,CACD,CACD,CACD,EAIMC,GAAmB,2BACnBC,GAAW,yBACXC,GAAc,CAAC,8EAA8E,EACnG,SAASC,GAAmBC,EAAO,CAClC,IAAM1F,EAAQ0F,EAAM,MAAMC,EAAW,GAAKD,EAAM,MAAME,EAAU,EAChE,GAAI5F,EAAO,CACV,GAAM,CAAC6F,EAAQ5F,CAAI,EAAI6F,GAAmB,IAAI9F,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,GAAI,IAAK,IAAK,GAAG,GAAK,CAAC,EACzF,GAAI6F,EAAQ,MAAO,QAAQ7F,EAAM,CAAC,CAAC,GAAG6F,CAAM,SAAS5F,EAAO,IAAIA,CAAI,GAAK,EAAE,EAC5E,CACD,CACA,IAAM8F,GAAuB,0BAC7B,SAASC,GAAmBN,EAAO,CAClC,IAAM1F,EAAQ0F,EAAM,MAAMK,EAAoB,EAC9C,GAAI/F,EAAO,CACV,GAAM,CAAC6F,EAAQ5F,CAAI,EAAI6F,GAAmB9F,EAAM,CAAC,EAAG,IAAK,IAAK,GAAG,GAAK,CAAC,EACvE,GAAI6F,EAAQ,CACX,IAAM5D,EAAOqD,GAAiB,KAAKO,EAAO,MAAM,EAAG,EAAE,CAAC,EAAIA,EAAO,QAAQN,GAAWU,GAAMA,EAAE,WAAW,GAAG,EAAIA,EAAE,MAAM,CAAC,EAAI,IAAIA,CAAC,EAAE,EAAI,SAASJ,CAAM,UACrJ,MAAO,GAAG7F,EAAM,CAAC,CAAC,GAAGiC,CAAI,GAAGhC,EAAO,IAAIA,CAAI,GAAK,EAAE,EACnD,CACD,CACD,CACA,IAAMiG,GAAkB,CACvB,KAAM,WACN,MAAMtG,EAAS,CACd,GAAKA,EAAQ,WAAW,GAAG,EAC3B,MAAO,CACN,QAASA,EAAQ,MAAM,CAAC,EACxB,KAAOqC,GAAS,CACf,GAAIA,EAAK,KAAMwB,GAAMA,EAAE,CAAC,IAAM0C,EAAmB,EAAG,OACpD,IAAIC,EAAU,GAuBd,OAtBAnE,EAAK,QAASwB,GAAM,CACnB,GAAI4C,EAAQ5C,EAAE,CAAC,CAAC,EAAE,SAAS0C,EAAmB,EAAG,OACjD,IAAMT,EAAQjC,EAAE,CAAC,GAAG,SAAS,EAE7B,GADI,CAACiC,GAASA,IAAU,KACpBF,GAAY,KAAMS,GAAMA,EAAE,KAAKxC,EAAE,CAAC,CAAC,CAAC,EAAG,OAC3C,IAAM6C,EAAYb,GAAmBC,CAAK,EAC1C,GAAIY,EAAW,CACd7C,EAAE,CAAC,EAAI6C,EACPF,EAAU,GACV,MACD,CACA,IAAMG,EAAcP,GAAmBN,CAAK,EAC5C,GAAIa,EAAa,CAChB9C,EAAE,CAAC,EAAI8C,EACPH,EAAU,GACV,MACD,CACId,GAAiB,KAAKI,CAAK,IAC9BjC,EAAE,CAAC,EAAIiC,EAAM,QAAQH,GAAWU,GAAMA,EAAE,WAAW,GAAG,EAAIA,EAAE,MAAM,CAAC,EAAI,IAAIA,CAAC,EAAE,EAC9EG,EAAU,GAEZ,CAAC,EACGA,EAAgBnE,EACb,CAAC,CACT,CACD,CACD,CACD,EAIMuE,GAAsB,CAAC/F,EAAO,CAAE,MAAAgG,CAAM,IAAM,CACjD,IAAMnF,EAAIb,EAAM,MAAM,4BAA4B,EAClD,GAAIa,EAAG,CACN,GAAM,CAAC,CAAED,EAAM,GAAIqF,EAAGzE,CAAI,EAAIX,EAC9B,GAAIqF,GAAkB1E,EAAMwE,CAAK,GAAKG,GAAgB3E,CAAI,EAAG,MAAO,CAAE,QAAS,GAAGZ,CAAG,iBAAiBqF,CAAC,GAAGzE,CAAI,EAAG,CAClH,CACD,EACA,SAAS2E,GAAgB3E,EAAM,CAC9B,IAAMjC,EAAQiC,EAAK,MAAM,sBAAsB,EAC/C,OAAIjC,GAASA,EAAM,CAAC,GAAK,KAAaG,EAAE,QAAQ,QAAQH,EAAM,CAAC,CAAC,GAAK,KAC9D,EACR,CAIA,SAAS6G,IAAkC,CAC1C,OAAOC,GAA+B,CACrC,WAAAlC,GACA,EAAAzE,EACA,kBAAA+B,EACD,CAAC,CACF,CACA,SAAS6E,IAA8B,CACtC,OAAOC,GAA2B,CACjC,WAAApC,GACA,EAAAzE,EACA,kBAAA+B,EACD,CAAC,CACF,CACA,SAAS+E,GAA2BrE,EAAU,CAAC,EAAG,CACjD,OAAOsE,GAA0BtE,EAAS,CACzC,WAAAgC,GACA,EAAAzE,EACA,kBAAA+B,EACD,CAAC,CACF,CACA,IAAMiF,GAAqBC,GAAkB,EAIvCC,GAAuB,CAC5B,KAAM,WACN,MAAMzH,EAAS,CACd,GAAKA,EAAQ,WAAW,WAAW,EACnC,MAAO,CACN,QAASA,EAAQ,MAAM,CAAC,EACxB,OAAQ,CAACa,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,iBACT,CAAC,CACF,CACD,CACD,EAIM6G,GAAkB,CACvB,KAAM,WACN,MAAM1H,EAASC,EAAK,CACnB,IAAMC,EAAUC,GAAoB,YAAaH,EAASC,EAAI,UAAU,OAAO,UAAU,EACzF,GAAIC,EAAS,CACZ,GAAM,CAACE,EAAOC,CAAI,EAAIH,EAClByH,EAAWpH,EAAE,QAAQH,CAAK,GAAK,GAEnC,GADIuH,IAAa,KAAIA,EAAW1H,EAAI,MAAM,WAAWG,CAAK,GAAK,IAC3DuH,EACH,OAAMA,EAAS,WAAW,GAAG,GAAKA,EAAS,SAAS,GAAG,IAAIA,EAAW,IAAIA,CAAQ,KAC3E,CACN,QAAStH,EACT,OAAQ,CAACQ,EAAOC,IAASA,EAAK,CAC7B,GAAGD,EACH,OAAQ,GAAGA,EAAM,OAAS,GAAGA,EAAM,MAAM,OAAS,EAAE,aAAa8G,CAAQ,EAC1E,CAAC,CACF,CAEF,CACD,EACA,UAAW,EACZ,EAIA,SAASC,GAAS5E,EAAS,CAC1B,MAAO,CACNjD,GACAsD,GACAqB,GACAF,GACAI,GACA0B,GACAmB,GACA/D,GAAiB,EACjBgE,GACA3D,GACAC,GACAC,GACAC,GACA,GAAGE,GACH,GAAGC,GACH,GAAGC,GACH,GAAGC,GACHtD,GAAmB,EACnB,GAAGyB,GACH,GAAGC,GACHiE,GACA,GAAGK,GAAgC,EACnCE,GAA4B,EAC5B,GAAGE,GAA2BrE,CAAO,EACrCuE,GACA,GAAGxE,GAA0BC,CAAO,EACpC,GAAGI,GACH,GAAGK,GACHoB,GACA,GAAG9C,GACH+B,GACAlB,GACAmC,GACA,GAAGvB,GACH,GAAGzC,GACHqE,GACA,GAAGG,GACHC,EACD,EAAE,KAAK,CACR,CCppBA,SAASqC,GAASC,EAAS,CAC1B,GAAIA,EAAQ,YAAY,WAAa,GAAO,OAC5C,IAAMC,EAAiB,OAAOD,EAAQ,YAAY,UAAa,SAAWA,EAAQ,WAAW,SAAW,OAClGE,EAAiBD,GAAgB,SAAW,OAASA,EAAe,OAAS,uIAC7EE,EAAWF,GAAgB,UAAY,mCAC7C,MAAO,CACN,OAAQ,IAAM,CACb,GAAIG,GAAkB,OAAS,EAAG,OAClC,IAAMC,EAAM,MAAM,KAAKD,GAAkB,QAAQ,CAAC,EAAE,IAAI,CAAC,CAACE,EAAYC,CAAK,IAAM,GAAGD,CAAU,IAAIC,CAAK,GAAG,EAAE,KAAK,EAAE,EACnH,OAAOL,IAAmB,GAAQ,GAAGC,CAAQ,IAAIE,CAAG,IAAM,GAAGH,CAAc,IAAIC,CAAQ,IAAIE,CAAG,IAC/F,EACA,MAAO,YACR,CACD,CAIA,IAAMG,GAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
6
+ "names": ["require_striptags", "__commonJSMin", "exports", "module", "global", "Symbol", "name", "STATE_PLAINTEXT", "STATE_HTML", "STATE_COMMENT", "ALLOWED_TAGS_REGEX", "NORMALIZE_TAG_REGEX", "striptags", "html", "allowable_tags", "tag_replacement", "context", "init_context", "striptags_internal", "init_striptags_stream", "parse_allowable_tags", "state", "tag_buffer", "depth", "in_quote_char", "output", "idx", "length", "char", "normalize_tag", "tag_set", "match", "escape", "badChars", "possible", "escapeChar", "chr", "extend", "obj", "i", "key", "toString", "isFunction", "value", "exports", "isArray", "indexOf", "array", "len", "escapeExpression", "string", "isEmpty", "createFrame", "object", "frame", "blockParams", "params", "ids", "appendContextPath", "contextPath", "id", "errorProps", "Exception", "message", "node", "loc", "line", "endLineNumber", "column", "endColumn", "tmp", "idx", "instance", "context", "options", "inverse", "fn", "_utils", "data", "instance", "context", "options", "_exception2", "fn", "inverse", "i", "ret", "data", "contextPath", "_utils", "execIteration", "field", "index", "last", "j", "newContext", "iterator", "it", "priorKey", "key", "instance", "_exception2", "instance", "conditional", "options", "_exception2", "_utils", "instance", "args", "options", "i", "level", "instance", "obj", "field", "options", "instance", "context", "options", "_exception2", "_utils", "fn", "data", "registerDefaultHelpers", "instance", "_helpersBlockHelperMissing2", "_helpersEach2", "_helpersHelperMissing2", "_helpersIf2", "_helpersLog2", "_helpersLookup2", "_helpersWith2", "moveHelperToHooks", "helperName", "keepHelper", "instance", "fn", "props", "container", "options", "ret", "context", "original", "_utils", "registerDefaultDecorators", "instance", "_decoratorsInline2", "logger", "level", "levelMap", "_utils", "method", "message", "_len", "_key", "createNewLookupObject", "sources", "_len", "_key", "_utils", "loggedProperties", "createProtoAccessControl", "runtimeOptions", "defaultMethodWhiteList", "defaultPropertyWhiteList", "_createNewLookupObject", "resultIsAllowed", "result", "protoAccessControl", "propertyName", "checkWhiteList", "protoAccessControlForType", "logUnexpecedPropertyAccessOnce", "_logger2", "resetLoggedProperties", "VERSION", "COMPILER_REVISION", "LAST_COMPATIBLE_COMPILER_REVISION", "REVISION_CHANGES", "objectType", "HandlebarsEnvironment", "helpers", "partials", "decorators", "_helpers", "_decorators", "_logger2", "name", "fn", "_utils", "_exception2", "partial", "_internalProtoAccess", "log", "SafeString", "string", "wrapHelper", "helper", "transformOptionsFn", "wrapper", "options", "Utils", "_interopRequireWildcard", "_utils", "checkRevision", "compilerInfo", "compilerRevision", "currentRevision", "_base", "runtimeVersions", "compilerVersions", "_exception2", "template", "templateSpec", "env", "templateWasPrecompiledWithCompilerV7", "invokePartialWrapper", "partial", "context", "options", "extendedOptions", "result", "lines", "i", "l", "container", "obj", "name", "loc", "parent", "propertyName", "_internalProtoAccess", "depths", "len", "current", "ret", "data", "declaredBlockParams", "blockParams", "programWrapper", "fn", "wrapProgram", "value", "depth", "param", "common", "initData", "main", "executeDecorators", "mergedHelpers", "wrapHelpersToPassLookupProperty", "keepHelperInHelpers", "_helpers", "prog", "currentDepths", "resolvePartial", "invokePartial", "currentPartialBlock", "partialBlock", "noop", "props", "helperName", "helper", "passLookupPropertyOption", "lookupProperty", "_internalWrapHelper", "Handlebars", "$Handlebars", "base", "_interopRequireWildcard", "_handlebarsBase", "Utils", "_handlebarsUtils", "runtime", "_handlebarsRuntime", "create", "hb", "_handlebarsSafeString2", "_handlebarsException2", "spec", "inst", "_handlebarsNoConflict2", "AST", "node", "path", "handlebars", "parser", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inverse", "program", "str", "hash", "input", "self", "stack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "tempMatch", "index", "col", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "strip", "start", "end", "YYSTATE", "Parser", "exports", "Visitor", "node", "name", "value", "_exception2", "array", "i", "l", "object", "ret", "program", "visitSubExpression", "visitBlock", "visitPartial", "partial", "hash", "pair", "mustache", "block", "WhitespaceControl", "options", "_visitor2", "program", "doStandalone", "isRoot", "body", "l", "current", "strip", "_isPrevWhitespace", "isPrevWhitespace", "_isNextWhitespace", "isNextWhitespace", "openStandalone", "closeStandalone", "inlineStandalone", "omitRight", "omitLeft", "block", "inverse", "firstInverse", "lastInverse", "inverseStrip", "mustache", "node", "i", "prev", "sibling", "next", "multiple", "original", "validateClose", "open", "close", "errorNode", "_exception2", "SourceLocation", "source", "locInfo", "id", "token", "stripFlags", "stripComment", "comment", "preparePath", "data", "parts", "loc", "original", "dig", "depth", "i", "l", "part", "isLiteral", "prepareMustache", "path", "params", "hash", "strip", "escapeFlag", "escaped", "decorator", "prepareRawBlock", "openRawBlock", "contents", "program", "prepareBlock", "openBlock", "inverseAndProgram", "inverted", "inverse", "inverseStrip", "prepareProgram", "statements", "firstLoc", "lastLoc", "preparePartialBlock", "Helpers", "_interopRequireWildcard", "_helpers", "_parser2", "yy", "_utils", "parseWithoutProcessing", "input", "options", "locInfo", "ast", "parse", "strip", "_whitespaceControl2", "slice", "Compiler", "other", "len", "i", "opcode", "otherOpcode", "argEquals", "program", "options", "_utils", "childCompiler", "result", "guid", "node", "_exception2", "ret", "body", "bodyLength", "block", "transformLiteralToPath", "inverse", "type", "decorator", "params", "path", "partial", "partialName", "isDynamic", "indent", "partialBlock", "mustache", "content", "sexpr", "name", "isBlock", "_ast2", "scoped", "blockParamId", "string", "number", "bool", "hash", "pairs", "l", "depth", "isSimple", "isBlockParam", "isHelper", "isEligible", "_name", "val", "value", "blockParamIndex", "blockParamChild", "omitEmpty", "blockParams", "param", "precompile", "input", "env", "ast", "environment", "compile", "compiled", "compileInput", "templateSpec", "context", "execOptions", "setupOptions", "data", "depths", "a", "b", "literal", "require_base64", "__commonJSMin", "exports", "intToCharMap", "number", "charCode", "bigA", "bigZ", "littleA", "littleZ", "zero", "nine", "plus", "slash", "littleOffset", "numberOffset", "require_base64_vlq", "__commonJSMin", "exports", "base64", "VLQ_BASE_SHIFT", "VLQ_BASE", "VLQ_BASE_MASK", "VLQ_CONTINUATION_BIT", "toVLQSigned", "aValue", "fromVLQSigned", "isNegative", "shifted", "encoded", "digit", "vlq", "aStr", "aIndex", "aOutParam", "strLen", "result", "shift", "continuation", "require_util", "__commonJSMin", "exports", "getArg", "aArgs", "aName", "aDefaultValue", "urlRegexp", "dataUrlRegexp", "urlParse", "aUrl", "match", "urlGenerate", "aParsedUrl", "url", "normalize", "aPath", "path", "isAbsolute", "parts", "part", "up", "i", "join", "aRoot", "aPathUrl", "aRootUrl", "joined", "relative", "level", "index", "supportsNullProto", "obj", "identity", "s", "toSetString", "aStr", "isProtoString", "fromSetString", "length", "compareByOriginalPositions", "mappingA", "mappingB", "onlyCompareOriginal", "cmp", "strcmp", "compareByGeneratedPositionsDeflated", "onlyCompareGenerated", "aStr1", "aStr2", "compareByGeneratedPositionsInflated", "parseSourceMapInput", "str", "computeSourceURL", "sourceRoot", "sourceURL", "sourceMapURL", "parsed", "require_array_set", "__commonJSMin", "exports", "util", "has", "hasNativeMap", "ArraySet", "aArray", "aAllowDuplicates", "set", "len", "aStr", "sStr", "isDuplicate", "idx", "aIdx", "require_mapping_list", "__commonJSMin", "exports", "util", "generatedPositionAfter", "mappingA", "mappingB", "lineA", "lineB", "columnA", "columnB", "MappingList", "aCallback", "aThisArg", "aMapping", "require_source_map_generator", "__commonJSMin", "exports", "base64VLQ", "util", "ArraySet", "MappingList", "SourceMapGenerator", "aArgs", "aSourceMapConsumer", "sourceRoot", "generator", "mapping", "newMapping", "sourceFile", "sourceRelative", "content", "generated", "original", "source", "name", "aSourceFile", "aSourceContent", "aSourceMapPath", "newSources", "newNames", "aGenerated", "aOriginal", "aSource", "aName", "previousGeneratedColumn", "previousGeneratedLine", "previousOriginalColumn", "previousOriginalLine", "previousName", "previousSource", "result", "next", "nameIdx", "sourceIdx", "mappings", "i", "len", "aSources", "aSourceRoot", "key", "map", "require_binary_search", "__commonJSMin", "exports", "recursiveSearch", "aLow", "aHigh", "aNeedle", "aHaystack", "aCompare", "aBias", "mid", "cmp", "index", "require_quick_sort", "__commonJSMin", "exports", "swap", "ary", "x", "y", "temp", "randomIntInRange", "low", "high", "doQuickSort", "comparator", "p", "r", "pivotIndex", "i", "pivot", "j", "q", "require_source_map_consumer", "__commonJSMin", "exports", "util", "binarySearch", "ArraySet", "base64VLQ", "quickSort", "SourceMapConsumer", "aSourceMap", "aSourceMapURL", "sourceMap", "IndexedSourceMapConsumer", "BasicSourceMapConsumer", "aStr", "index", "c", "aSourceRoot", "aCallback", "aContext", "aOrder", "context", "order", "mappings", "sourceRoot", "mapping", "source", "aArgs", "line", "needle", "originalLine", "originalColumn", "version", "sources", "names", "sourcesContent", "file", "s", "aSource", "relativeSource", "i", "smc", "generatedMappings", "destGeneratedMappings", "destOriginalMappings", "length", "srcMapping", "destMapping", "Mapping", "generatedLine", "previousGeneratedColumn", "previousOriginalLine", "previousOriginalColumn", "previousSource", "previousName", "cachedSegments", "temp", "originalMappings", "str", "segment", "end", "value", "aNeedle", "aMappings", "aLineName", "aColumnName", "aComparator", "aBias", "nextMapping", "name", "sc", "nullOnMissing", "url", "fileUriAbsPath", "sections", "lastOffset", "offset", "offsetLine", "offsetColumn", "j", "sectionIndex", "section", "cmp", "content", "generatedPosition", "ret", "sectionMappings", "adjustedMapping", "require_source_node", "__commonJSMin", "exports", "SourceMapGenerator", "util", "REGEX_NEWLINE", "NEWLINE_CODE", "isSourceNode", "SourceNode", "aLine", "aColumn", "aSource", "aChunks", "aName", "aGeneratedCode", "aSourceMapConsumer", "aRelativePath", "node", "remainingLines", "remainingLinesIndex", "shiftNextLine", "lineContents", "getNextLine", "newLine", "lastGeneratedLine", "lastGeneratedColumn", "lastMapping", "mapping", "addMappingWithCode", "nextLine", "code", "sourceFile", "content", "source", "aChunk", "chunk", "i", "aFn", "len", "aSep", "newChildren", "aPattern", "aReplacement", "lastChild", "aSourceFile", "aSourceContent", "sources", "str", "aArgs", "generated", "map", "sourceMappingActive", "lastOriginalSource", "lastOriginalLine", "lastOriginalColumn", "lastOriginalName", "original", "idx", "length", "sourceContent", "require_source_map", "__commonJSMin", "exports", "SourceNode", "SourceMap", "line", "column", "srcFile", "chunks", "_utils", "castChunk", "chunk", "codeGen", "loc", "ret", "len", "CodeGen", "source", "iter", "i", "fn", "type", "params", "str", "obj", "pairs", "key", "value", "_this", "entries", "Literal", "value", "JavaScriptCompiler", "parent", "name", "revision", "_base", "versions", "source", "location", "explicit", "_utils", "environment", "options", "context", "asObject", "opcodes", "opcode", "firstLoc", "i", "l", "_exception2", "fn", "ret", "programs", "_context", "decorators", "_codeGen2", "varDeclarations", "locals", "aliasCount", "alias", "node", "_this", "params", "isSimple", "appendOnly", "appendFirst", "sourceSeen", "bufferStart", "bufferEnd", "line", "blockHelperMissing", "blockName", "current", "content", "local", "depth", "parts", "falsy", "strict", "scoped", "blockParamId", "type", "strictLookup", "len", "lookup", "_this2", "string", "omitEmpty", "hash", "guid", "paramSize", "foundDecorator", "nonHelper", "helper", "possibleFunctionCalls", "functionLookupCode", "functionCall", "items", "separator", "result", "helperCall", "helperName", "isDynamic", "indent", "key", "id", "child", "children", "compiler", "existing", "index", "programParams", "expr", "item", "callback", "prefix", "stack", "createdStack", "usedLiteral", "top", "_name", "inlineStack", "entry", "wrapped", "inline", "str", "obj", "blockHelper", "paramsInit", "foundHelper", "callContext", "contexts", "types", "ids", "objectArgs", "param", "inverse", "program", "useRegister", "reservedWords", "compilerWords", "requireTerminal", "_create", "_handlebarsRuntime2", "create", "hb", "input", "options", "_handlebarsCompilerCompiler", "_handlebarsCompilerAst2", "_handlebarsCompilerJavascriptCompiler2", "_handlebarsCompilerBase", "inst", "_handlebarsNoConflict2", "_handlebarsCompilerVisitor2", "print", "ast", "PrintVisitor", "_visitor2", "string", "out", "i", "l", "program", "body", "blockParams", "mustache", "block", "partial", "content", "comment", "sexpr", "params", "paramStrings", "hash", "id", "path", "number", "bool", "pairs", "joinedPairs", "pair", "require_lib", "__commonJSMin", "exports", "module", "handlebars", "printer", "extension", "filename", "fs", "templateString", "__require", "require_util", "__commonJSMin", "exports", "defaults", "target", "defs", "ret", "keys", "len", "key", "require_en", "__commonJSMin", "exports", "module", "require_es", "__commonJSMin", "exports", "module", "require_ar", "__commonJSMin", "exports", "module", "require_az", "__commonJSMin", "exports", "module", "require_pt", "__commonJSMin", "exports", "module", "require_pt_PT", "__commonJSMin", "exports", "module", "require_fr", "__commonJSMin", "exports", "module", "require_eo", "__commonJSMin", "exports", "module", "require_it", "__commonJSMin", "exports", "module", "require_vi", "__commonJSMin", "exports", "module", "require_tr", "__commonJSMin", "exports", "module", "require_hu", "__commonJSMin", "exports", "module", "require_en_indian", "__commonJSMin", "exports", "module", "require_uk", "__commonJSMin", "exports", "module", "require_ru", "__commonJSMin", "exports", "module", "require_id", "__commonJSMin", "exports", "module", "require_lib", "__commonJSMin", "exports", "module", "writtenNumber", "util", "languages", "i18n", "shortScale", "i", "longScale", "n", "options", "language", "scale", "units", "unit", "rawUnits", "baseCardinals", "alternativeBaseCardinals", "handleSmallerThan100", "m", "ret", "firstSignificant", "len", "r", "divideBy", "shouldUseBaseException", "str", "exception", "number", "firstSignificantN", "rest", "j", "result", "dec", "types_exports", "errors_exports", "__export", "BaseError", "BaseThrowable", "BaseWarning", "PotentialLoopError", "TemplateDataValidationError", "TemplateError", "TemplateSyntaxError", "message", "stack", "fieldName", "lib_exports", "__export", "DEFAULT_FIELD_TYPE", "DEFAULT_MODEL_DEPTH", "FilterHelper", "HandlebarsCollector", "RegexHelper", "applyAbsoluteOrderToFields", "applyValueOptionsToFields", "audit", "compare", "dataModelNodeToMetadata", "defineModule", "ensureDate", "ensureFieldName", "ensureFieldValue", "ensureNullableFieldMinMax", "ensureNullableFieldMinMaxLength", "ensureNullableFieldOrder", "ensureNullableString", "ensureString", "ensureTitle", "getAst", "getCss", "getDataModel", "getHtml", "getHtmlH1", "getMacroParam", "getMacroParams", "getMacros", "getPaths", "getTemplate", "getTemplateValidationErrorsByMetadata", "has", "inarr", "isNumber", "isObject", "isset", "macroToField", "macroToFieldValueOption", "macroToModuleNames", "matches", "pathToDataModel", "pathToDataModelNode", "stripHtml", "sum", "unique", "uno", "LuxonError", "InvalidDateTimeError", "reason", "InvalidIntervalError", "InvalidDurationError", "ConflictingSpecificationError", "InvalidUnitError", "unit", "InvalidArgumentError", "ZoneIsAbstractError", "n", "s", "l", "DATE_SHORT", "DATE_MED", "DATE_MED_WITH_WEEKDAY", "DATE_FULL", "DATE_HUGE", "TIME_SIMPLE", "TIME_WITH_SECONDS", "TIME_WITH_SHORT_OFFSET", "TIME_WITH_LONG_OFFSET", "TIME_24_SIMPLE", "TIME_24_WITH_SECONDS", "TIME_24_WITH_SHORT_OFFSET", "TIME_24_WITH_LONG_OFFSET", "DATETIME_SHORT", "DATETIME_SHORT_WITH_SECONDS", "DATETIME_MED", "DATETIME_MED_WITH_SECONDS", "DATETIME_MED_WITH_WEEKDAY", "DATETIME_FULL", "DATETIME_FULL_WITH_SECONDS", "DATETIME_HUGE", "DATETIME_HUGE_WITH_SECONDS", "Zone", "ts", "opts", "format", "otherZone", "singleton", "SystemZone", "_SystemZone", "locale", "parseZoneInfo", "formatOffset", "dtfCache", "makeDTF", "zoneName", "dtf", "typeToPos", "hackyOffset", "date", "formatted", "parsed", "fMonth", "fDay", "fYear", "fadOrBc", "fHour", "fMinute", "fSecond", "partsOffset", "filled", "type", "value", "pos", "isUndefined", "ianaZoneCache", "IANAZone", "_IANAZone", "name", "zone", "year", "month", "day", "adOrBc", "hour", "minute", "second", "asUTC", "objToLocalTS", "asTS", "over", "intlLFCache", "getCachedLF", "locString", "key", "intlDTCache", "getCachedDTF", "intlNumCache", "getCachedINF", "inf", "intlRelCache", "getCachedRTF", "base", "cacheKeyOpts", "sysLocaleCache", "systemLocale", "intlResolvedOptionsCache", "getCachedIntResolvedOptions", "weekInfoCache", "getCachedWeekInfo", "data", "fallbackWeekSettings", "parseLocaleString", "localeStr", "xIndex", "uIndex", "options", "selectedStr", "smaller", "numberingSystem", "calendar", "intlConfigString", "outputCalendar", "mapMonths", "f", "ms", "i", "dt", "DateTime", "mapWeekdays", "listStuff", "loc", "length", "englishFn", "intlFn", "mode", "supportsFastNumbers", "PolyNumberFormatter", "intl", "forceSimple", "padTo", "floor", "otherOpts", "intlOpts", "fixed", "roundTo", "padStart", "PolyDateFormatter", "z", "gmtOffset", "offsetZ", "parts", "part", "offsetName", "PolyRelFormatter", "isEnglish", "hasRelative", "count", "English.formatRelativeTime", "Locale", "_Locale", "weekSettings", "defaultToEN", "specifiedLocale", "Settings", "localeR", "numberingSystemR", "outputCalendarR", "weekSettingsR", "validateWeekSettings", "numbering", "parsedLocale", "parsedNumberingSystem", "parsedOutputCalendar", "isActuallyEn", "hasNoWeirdness", "alts", "English.months", "monthSpecialCase", "formatStr", "mapper", "English.weekdays", "English.meridiems", "English.eras", "field", "df", "results", "matching", "m", "hasLocaleWeekInfo", "other", "FixedOffsetZone", "_FixedOffsetZone", "offset", "signedOffset", "InvalidZone", "normalizeZone", "input", "defaultZone", "isString", "lowered", "isNumber", "numberingSystems", "numberingSystemsUTF16", "hanidecChars", "parseDigits", "str", "code", "min", "max", "digitRegexCache", "resetDigitRegexCache", "digitRegex", "append", "ns", "appendCache", "regex", "now", "defaultLocale", "defaultNumberingSystem", "defaultOutputCalendar", "twoDigitCutoffYear", "throwOnInvalid", "defaultWeekSettings", "cutoffYear", "t", "Invalid", "explanation", "nonLeapLadder", "leapLadder", "unitOutOfRange", "dayOfWeek", "d", "js", "computeOrdinal", "isLeapYear", "uncomputeOrdinal", "ordinal", "table", "month0", "isoWeekdayToLocal", "isoWeekday", "startOfWeek", "gregorianToWeek", "gregObj", "minDaysInFirstWeek", "weekday", "weekNumber", "weekYear", "weeksInWeekYear", "timeObject", "weekToGregorian", "weekData", "weekdayOfJan4", "yearInDays", "daysInYear", "gregorianToOrdinal", "gregData", "ordinalToGregorian", "ordinalData", "usesLocalWeekValues", "obj", "hasInvalidWeekData", "validYear", "isInteger", "validWeek", "integerBetween", "validWeekday", "hasInvalidOrdinalData", "validOrdinal", "hasInvalidGregorianData", "validMonth", "validDay", "daysInMonth", "hasInvalidTimeData", "millisecond", "validHour", "validMinute", "validSecond", "validMillisecond", "o", "isDate", "maybeArray", "thing", "bestBy", "arr", "by", "compare", "best", "next", "pair", "pick", "keys", "a", "k", "hasOwnProperty", "prop", "settings", "v", "bottom", "top", "floorMod", "x", "isNeg", "padded", "parseInteger", "string", "parseFloating", "parseMillis", "fraction", "number", "digits", "rounding", "factor", "modMonth", "modYear", "firstWeekOffset", "weekOffset", "weekOffsetNext", "untruncateYear", "offsetFormat", "timeZone", "modified", "offHourStr", "offMinuteStr", "offHour", "offMin", "offMinSigned", "asNumber", "numericValue", "normalizeObject", "normalizer", "normalized", "u", "hours", "minutes", "sign", "monthsLong", "monthsShort", "monthsNarrow", "months", "weekdaysLong", "weekdaysShort", "weekdaysNarrow", "weekdays", "meridiems", "erasLong", "erasShort", "erasNarrow", "eras", "meridiemForDateTime", "weekdayForDateTime", "monthForDateTime", "eraForDateTime", "formatRelativeTime", "numeric", "narrow", "units", "lastable", "isDay", "isInPast", "fmtValue", "singular", "lilUnits", "fmtUnit", "stringifyTokens", "splits", "tokenToString", "token", "macroTokenToFormatOpts", "Formats.DATE_SHORT", "Formats.DATE_MED", "Formats.DATE_FULL", "Formats.DATE_HUGE", "Formats.TIME_SIMPLE", "Formats.TIME_WITH_SECONDS", "Formats.TIME_WITH_SHORT_OFFSET", "Formats.TIME_WITH_LONG_OFFSET", "Formats.TIME_24_SIMPLE", "Formats.TIME_24_WITH_SECONDS", "Formats.TIME_24_WITH_SHORT_OFFSET", "Formats.TIME_24_WITH_LONG_OFFSET", "Formats.DATETIME_SHORT", "Formats.DATETIME_MED", "Formats.DATETIME_FULL", "Formats.DATETIME_HUGE", "Formats.DATETIME_SHORT_WITH_SECONDS", "Formats.DATETIME_MED_WITH_SECONDS", "Formats.DATETIME_FULL_WITH_SECONDS", "Formats.DATETIME_HUGE_WITH_SECONDS", "Formatter", "_Formatter", "fmt", "current", "currentFull", "bracketed", "c", "formatOpts", "interval", "p", "signDisplay", "knownEnglish", "useDateTimeFormatter", "extract", "meridiem", "English.meridiemForDateTime", "standalone", "English.monthForDateTime", "English.weekdayForDateTime", "maybeMacro", "era", "English.eraForDateTime", "dur", "invertLargest", "tokenToField", "lildur", "info", "mapped", "inversionFactor", "tokens", "realTokens", "found", "literal", "val", "collapsed", "durationInfo", "ianaRegex", "combineRegexes", "regexes", "full", "r", "combineExtractors", "extractors", "mergedVals", "mergedZone", "cursor", "ex", "parse", "patterns", "extractor", "simpleParse", "match", "ret", "offsetRegex", "isoExtendedZone", "isoTimeBaseRegex", "isoTimeRegex", "isoTimeExtensionRegex", "isoYmdRegex", "isoWeekRegex", "isoOrdinalRegex", "extractISOWeekData", "extractISOOrdinalData", "sqlYmdRegex", "sqlTimeRegex", "sqlTimeExtensionRegex", "int", "fallback", "extractISOYmd", "extractISOTime", "extractISOOffset", "local", "fullOffset", "extractIANAZone", "isoTimeOnly", "isoDuration", "extractISODuration", "yearStr", "monthStr", "weekStr", "dayStr", "hourStr", "minuteStr", "secondStr", "millisecondsStr", "hasNegativePrefix", "negativeSeconds", "maybeNegate", "num", "force", "obsOffsets", "fromStrings", "weekdayStr", "result", "English.monthsShort", "English.weekdaysLong", "English.weekdaysShort", "rfc2822", "extractRFC2822", "obsOffset", "milOffset", "preprocessRFC2822", "rfc1123", "rfc850", "ascii", "extractRFC1123Or850", "extractASCII", "isoYmdWithTimeExtensionRegex", "isoWeekWithTimeExtensionRegex", "isoOrdinalWithTimeExtensionRegex", "isoTimeCombinedRegex", "extractISOYmdTimeAndOffset", "extractISOWeekTimeAndOffset", "extractISOOrdinalDateAndTime", "extractISOTimeAndOffset", "parseISODate", "parseRFC2822Date", "parseHTTPDate", "parseISODuration", "extractISOTimeOnly", "parseISOTimeOnly", "sqlYmdWithTimeExtensionRegex", "sqlTimeCombinedRegex", "extractISOTimeOffsetAndIANAZone", "parseSQL", "INVALID", "lowOrderMatrix", "casualMatrix", "daysInYearAccurate", "daysInMonthAccurate", "accurateMatrix", "orderedUnits", "reverseUnits", "clone", "clear", "conf", "Duration", "durationToMillis", "matrix", "vals", "sum", "normalizeValues", "previous", "previousVal", "conv", "rollUp", "removeZeroes", "newVals", "_Duration", "config", "accurate", "durationLike", "text", "invalid", "fmtOpts", "showZeros", "millis", "duration", "fn", "values", "mixed", "conversionAccuracy", "built", "accumulated", "lastUnit", "own", "ak", "negated", "eq", "v1", "v2", "validateStartEnd", "start", "end", "Interval", "_Interval", "builtStart", "friendlyDateTime", "builtEnd", "validateError", "e", "startIsValid", "endIsValid", "dateTime", "dateTimes", "sorted", "b", "added", "idx", "numberOfParts", "intervals", "final", "sofar", "item", "currentCount", "ends", "flattened", "dateFormat", "separator", "mapFn", "Info", "proto", "locObj", "dayDiff", "earlier", "later", "utcDayStart", "highOrderDiffs", "differs", "days", "lowestOrder", "highWater", "differ", "diff", "remainingMillis", "lowerOrderUnits", "MISSING_FTP", "intUnit", "post", "NBSP", "spaceOrNBSP", "spaceOrNBSPRegExp", "fixListRegex", "stripInsensitivities", "oneOf", "strings", "startIndex", "groups", "h", "simple", "escapeToken", "unitForToken", "one", "two", "three", "four", "six", "oneOrTwo", "oneToThree", "oneToSix", "oneToNine", "twoToFour", "fourToSix", "partTypeStyleToTokenVal", "tokenForPart", "resolvedOpts", "isSpace", "style", "actualType", "buildRegex", "handlers", "matches", "all", "matchIndex", "dateTimeFromMatches", "toField", "specificOffset", "dummyDateTimeCache", "getDummyDateTime", "maybeExpandMacroToken", "formatOptsToTokens", "expandMacroTokens", "TokenParser", "regexString", "rawMatches", "explainFromTokens", "parseFromTokens", "invalidReason", "MAX_DATE", "unsupportedZone", "possiblyCachedWeekData", "possiblyCachedLocalWeekData", "inst", "fixOffset", "localTS", "tz", "utcGuess", "o2", "o3", "tsToObj", "objToTS", "adjustTime", "oPre", "millisToAdd", "parseDataToDateTime", "parsedZone", "setZone", "interpretationZone", "toTechFormat", "allowZ", "toISODate", "extended", "precision", "longFormat", "toISOTime", "suppressSeconds", "suppressMilliseconds", "includeOffset", "extendedZone", "showSeconds", "defaultUnitValues", "defaultWeekUnitValues", "defaultOrdinalUnitValues", "orderedWeekUnits", "orderedOrdinalUnits", "normalizeUnit", "normalizeUnitWithLocalWeeks", "guessOffsetForZone", "zoneOffsetTs", "offsetGuess", "zoneOffsetGuessCache", "quickDT", "offsetProvis", "diffRelative", "round", "lastOpts", "argList", "args", "_DateTime", "ot", "zoneToUse", "milliseconds", "seconds", "tsNow", "containsOrdinal", "containsGregorYear", "containsGregorMD", "containsGregor", "definiteWeekDef", "useWeekData", "defaultValues", "objNow", "foundFirst", "higherOrderInvalid", "gregorian", "tsFinal", "offsetFinal", "localeToUse", "localeOpts", "tokenList", "dayMs", "minuteMs", "oEarlier", "oLater", "o1", "ts1", "ts2", "c1", "c2", "keepLocalTime", "keepCalendarTime", "newTS", "asObj", "settingWeekStuff", "useLocaleWeeks", "normalizedUnit", "q", "ext", "includePrefix", "includeZone", "includeOffsetSpace", "otherDateTime", "durOpts", "otherIsLater", "diffed", "inputMs", "adjustedToZone", "padding", "formatParser", "Formats.DATE_MED_WITH_WEEKDAY", "Formats.DATETIME_MED_WITH_WEEKDAY", "dateTimeish", "LAYER_DEFAULT", "LAYER_PREFLIGHTS", "LAYER_SHORTCUTS", "LAYER_IMPORTS", "DEFAULT_LAYERS", "defaultSplitRE", "splitCode", "code", "defaultSplitRE", "extractorSplit", "toArray", "value", "uniq", "uniqueBy", "array", "equalFn", "acc", "cur", "item", "isString", "s", "CountableSet", "values", "key", "count", "isCountableSet", "escapeRegExp", "string", "escapeSelector", "str", "length", "index", "codeUnit", "result", "firstCodeUnit", "e", "createNanoEvents", "event", "args", "i", "cb", "validateFilterRE", "isValidSelector", "selector", "validateFilterRE", "normalizeVariant", "variant", "isRawUtil", "util", "notNull", "value", "noop", "TwoKeyMap", "key1", "key2", "m2", "fallback", "value", "fn", "k1", "k2", "v", "BetterMap", "key", "mapFn", "result", "k", "normalizeCSSEntries", "obj", "isString", "i", "normalizeCSSValues", "clearIdenticalEntries", "entry", "idx", "VirtualKey", "entriesToCss", "arr", "isObject", "item", "mergeDeep", "original", "patch", "mergeArray", "o", "p", "output", "clone", "val", "out", "tmp", "isStaticRule", "rule", "isStaticShortcut", "sc", "regexCache", "makeRegexClassGroup", "separators", "parseVariantGroup", "str", "depth", "regexClassGroup", "hasChanged", "content", "prefixes", "groupsByOffset", "from", "pre", "sep", "body", "groupOffset", "bodyOffset", "group", "itemMatch", "itemOffset", "innerItems", "expanded", "prevOffset", "offset", "expandVariantGroup", "str", "separators", "depth", "res", "parseVariantGroup", "warned", "warnOnce", "msg", "resolveShortcuts", "shortcuts", "toArray", "s", "__RESOLVED", "resolvePreset", "presetInput", "preset", "apply", "meta", "resolvePresets", "root", "mergeContentOptions", "optionsArray", "pipelineIncludes", "pipelineExcludes", "pipelineDisabled", "filesystem", "inline", "options", "mergedContent", "uniq", "mergeFilterPatterns", "resolveConfig", "userConfig", "defaults", "config", "rawPresets", "uniqueBy", "a", "b", "sortedPresets", "p", "sources", "sourcesReversed", "layers", "DEFAULT_LAYERS", "i", "getMerged", "key", "extractors", "extractorDefault", "extractorSplit", "rules", "rulesSize", "rulesStaticMap", "rulesDynamic", "index", "rule", "isStaticRule", "prefix", "autocomplete", "mergeAutocompleteShorthands", "content", "resolved", "layers$1", "mergeThemes", "normalizeVariant", "extendThemes", "extendTheme", "mergeThemes", "themes", "theme", "clone", "a", "b", "mergeDeep", "mergeAutocompleteShorthands", "shorthands", "rs", "key", "value", "mergeFilterPatterns", "filterPatterns", "flatternFilterPattern", "pattern", "version", "symbols", "UnoGeneratorInternal", "userConfig", "defaults", "createNanoEvents", "raw", "result", "rule", "context", "entries", "normalizeCSSValues", "i", "meta", "css", "isString", "variants", "entryMeta", "entry", "toArray", "VirtualKey", "uno", "resolveConfig", "code", "id", "extracted", "extractor", "isCountableSet", "token", "applied", "args", "alias", "cacheKey", "current", "acc", "p", "variantResults", "handleVariantResult", "matched", "expanded", "notNull", "x", "input", "options", "scope", "preflights", "safelist", "minify", "extendedInfo", "tokens", "CountableSet", "safelistContext", "s", "trimmedS", "nl", "layerSet", "LAYER_DEFAULT", "sheet", "preflightsMap", "tokenPromises", "payload", "item", "parent", "layer", "preflightContext", "preflightLayerSet", "LAYER_PREFLIGHTS", "sortLayers", "layers$1", "a", "b", "layers", "layerCache", "outputCssLayers", "getLayerAlias", "getLayer", "items", "size", "sorted", "selector", "body", "variantNoMerge", "applyScope", "ruleLines", "selectorSortPair", "noMerge", "idx", "selectors", "uniq", "pair", "rules", "parents", "layerMark", "getLayers", "includes", "excludes", "layerNames", "callback", "content", "match", "handlers", "processed", "v", "handler", "clones", "h", "_processed", "_handlers", "_variants", "c", "parsed", "variantHandlers", "variantContextResult", "previous", "defaultVariantHandler", "toEscapedSelector", "parentOrder", "obj", "utilities", "util", "overrideSelector", "normalizedBody", "normalizeCSSEntries", "cssBody", "entriesToCss", "internal", "shortcutPrefix", "parse", "scopeContext", "staticMatch", "matcher", "unprefixed", "prefixes", "shortcutPrefixes", "prefix", "r", "resolvedResult", "isRawUtil", "variantLayer", "variantSort", "metaLayer", "metaSort", "ruleMeta", "depth", "recordShortcut", "noop", "stringResult", "inlineResult", "isStaticShortcut", "expandVariantGroup", "inputWithoutVariant", "handles", "layerMap", "BetterMap", "warnOnce", "parentVariants", "rawStringifiedUtil", "isNoMerge", "parent$1", "sort", "TwoKeyMap", "selectorMap", "e$1", "index", "joinedParents", "stringify", "flatten", "entrySortPair", "maxSort", "e$2", "entriesList", "createGenerator", "config", "defaults", "UnoGeneratorInternal", "regexScopePlaceholder", "hasScopePlaceholder", "css", "applyScope", "scope", "attributifyRe", "toEscapedSelector", "raw", "_", "n", "s", "e", "defaultVariantHandler", "input", "next", "comma", "semicolon", "chars", "intToChar", "charToInt", "i", "c", "encodeInteger", "builder", "num", "relative", "delta", "clamped", "intToChar", "bufLength", "td", "buf", "out", "i", "StringWriter", "v", "buffer", "pos", "encode", "decoded", "writer", "StringWriter", "sourcesIndex", "sourceLine", "sourceColumn", "namesIndex", "i", "line", "semicolon", "genColumn", "j", "segment", "comma", "encodeInteger", "BitSet", "_BitSet", "arg", "n", "Chunk", "_Chunk", "start", "end", "content", "chunk", "index", "fn", "storeName", "contentOnly", "sliceIndex", "originalBefore", "originalAfter", "newChunk", "rx", "trimmed", "getBtoa", "str", "btoa", "SourceMap", "properties", "encode", "guessIndent", "code", "lines", "tabbed", "line", "spaced", "min", "previous", "current", "numSpaces", "getRelativePath", "from", "to", "fromParts", "toParts", "toString", "isObject", "thing", "getLocator", "source", "originalLines", "lineOffsets", "i", "pos", "j", "m", "column", "wordRegex", "Mappings", "hires", "sourceIndex", "loc", "nameIndex", "contentLengthMinusOne", "contentLineEnd", "previousContentLineEnd", "segment", "original", "sourcemapLocations", "originalCharIndex", "first", "charInHiresBoundary", "warned", "MagicString", "_MagicString", "string", "options", "char", "cloned", "originalChunk", "clonedChunk", "nextOriginalChunk", "nextClonedChunk", "names", "mappings", "locate", "indentStr", "pattern", "isExcluded", "exclusion", "shouldIndentNextCharacter", "replacer", "match", "charIndex", "last", "oldLeft", "oldRight", "newRight", "newLeft", "overwrite", "lineIndex", "lineStr", "result", "startChunk", "containsEnd", "sliceStart", "sliceEnd", "clone", "previousChunk", "searchForward", "length", "charType", "aborted", "searchValue", "replacement", "getReplacement", "_", "matchAll", "re", "matches", "stringLength", "_replacement", "getBracket", "str", "open", "close", "l", "parenthesis", "opened", "openAt", "i", "getStringComponent", "separators", "isString", "separator", "separatorLength", "getStringComponents", "limit", "components", "componentPair", "component", "rest", "cssColorFunctions", "rectangularColorSpace", "polarColorSpace", "hueInterpolationMethods", "alphaPlaceholders", "alphaPlaceholdersRE", "v", "escapeRegExp", "isInterpolatedMethod", "type", "space", "method", "parseCssColor", "str", "color", "parseColor", "casedType", "components", "alpha", "type", "cssColorFunctions", "c", "colorToString", "color", "alphaOverride", "alphaPlaceholdersRE", "components", "alpha", "type", "cssColorFunctions", "parseColor", "str", "parseHexColor", "cssColorKeyword", "parseCssCommaColorFunction", "parseCssSpaceColorFunction", "parseCssColorFunction", "body", "digits", "s", "value", "match", "componentString", "getStringComponents", "cssColorFunctionsRe", "fn", "parsed", "parseCssSpaceColorValues", "totalComponents", "removed", "withAlpha", "themeFnRE", "hasThemeFn", "transformThemeFn", "code", "theme", "throwOnMissing", "matches", "MagicString", "rawArg", "transformThemeString", "rawKey", "t", "k", "parseCssColor", "calcMaxWidthBySize", "size", "_size$match", "unit", "maxWidth", "createValueHandler", "handlers", "handler", "_this$__options", "n", "res", "addProcessor", "that", "name", "PseudoPlaceholder", "PseudoClasses", "key", "PseudoClassesKeys", "PseudoClassesColon", "PseudoClassesColonKeys", "PseudoClassFunctions", "PseudoClassesMulti", "PseudoClassesStr", "pseudo", "a", "b", "PseudoClassesColonStr", "PseudoClassFunctionsStr", "PseudoClassesMultiStr", "excludedPseudo", "PseudoClassesAndElementsStr", "PseudoClassesAndElementsColonStr", "createTaggedPseudoClassMatcher", "tag", "parent", "combinator", "utils", "h", "variantGetBracket$1", "rawRE", "escapeRegExp", "splitRE", "pseudoRE", "pseudoColonRE", "pseudoVarRE", "matchBracket", "input", "_rest$split", "body", "match", "rest", "bracketValue", "label", "prefix", "escapeSelector", "matchPseudo", "original", "fn", "pseudoKey", "matchPseudoVar", "pseudoValue", "ctx", "x", "result", "_label", "matcher", "pseudoName", "input$1", "next", "createPseudoClassesAndElements", "PseudoClassesAndElementsRE", "PseudoClassesAndElementsColonRE", "PseudoClassesMultiRE", "anPlusB", "index", "selectors", "createPseudoClassFunctions", "getBracket$1", "PseudoClassFunctionsRE", "PseudoClassColonFunctionsRE", "PseudoClassVarFunctionRE", "s", "createTaggedPseudoClasses", "options", "attributify", "firstPrefix", "tagWithPrefix", "PartClassesRE", "createPartClasses", "part", "variantMatcher", "name", "handler", "re", "handlers", "toArray", "handler$1", "variantParentMatcher", "variantGetBracket", "separators", "getBracket", "separator", "variantGetParameter", "p", "pos", "labelPos", "unlabelled", "hash", "str", "i", "l", "hval", "transformSkipCode", "code", "map", "SKIP_RULES_RE", "keyFlag", "item", "matched", "withHashKey", "restoreSkipCode", "sourceMapRE", "removeSourceMap", "quotedArbitraryValuesRE", "arbitraryPropertyRE", "arbitraryPropertyCandidateRE", "splitCodeWithArbitraryVariants", "result", "match", "skipMap", "skipFlag", "defaultSplitRE", "isValidSelector", "extractorArbitraryVariants", "modifiers", "defaultColorScheme", "round", "num", "rem", "px", "em", "base", "ProseDefaultCSSObject", "ProseDefaultSize", "resolveColorScheme", "userColorScheme", "scheme", "clone", "key", "color", "invertColor", "toArray", "defaultColor", "defaultInvertColor", "resolveSizeScheme", "userSizeScheme", "mergeDeep", "getCSS", "preflights", "options", "selectorName", "notProseSelector", "important", "css", "selectorOrKey", "cssObjectOrValue", "selectorOrGroup", "pseudo", "_selector", "value", "getElements", "modifier", "name", "selectors", "presetTypography", "disableNotUtility", "cssVarPrefix", "resolvedColorScheme", "resolvedSizeScheme", "extended", "entries", "theme", "normalizeSelector", "s", "defaultRE", "colorsRE", "sizeRE", "_", "symbols$1", "baseColor", "acc", "colorKey", "invertKey", "resolve", "key$1", "color$1", "cssVarColorKey", "cssVarInvertColorKey", "colorToString", "c", "k", "alphaPlaceholders", "p", "size", "symbols", "matcher", "modifyRe", "elements", "e", "m", "src_default", "important", "option", "wrapWithIs", "selector", "util", "i", "varPrefix", "prefix", "obj", "postprocessors", "options", "__defProp", "__exportAll", "all", "symbols", "target", "name", "__defProp", "PRESET_NAME", "CONTROL_NO_NEGATIVE", "SpecialColorKey", "directionMap", "insetMap", "cornerMap", "xyzMap", "xyzArray", "basePositionMap", "positionMap", "p", "globalKeywords", "cssMathFnRE", "cssVarFnRE", "numberWithUnitRE", "numberRE", "unitOnlyRE", "unitOnlyMap", "bracketTypeRe", "splitComma", "handlers_exports", "__exportAll", "auto", "bracket", "bracketOfColor", "bracketOfFamily", "bracketOfLength", "bracketOfNumber", "bracketOfPosition", "cssvar", "degree", "fraction", "global", "none", "number", "numberWithUnit", "percent", "position", "properties", "px", "rem", "time", "cssProps", "round", "n", "str", "match", "numberWithUnitRE", "unit", "num", "unitOnlyRE", "unitOnlyMap", "numberRE", "left", "right", "processThemeVariable", "name", "key", "paths", "theme", "valOrObj", "getThemeByKey", "hasDefault", "val", "varKey", "themeTracking", "bracketWithType", "requiredType", "base", "hintedType", "bracketTypeRe", "calcMatch", "factor", "escapeSelector", "defaultValue", "suffix", "escapedName", "curly", "i", "v", "match$1", "vars", "match$2", "g1", "globalKeywords", "prop", "handler", "createValueHandler", "h", "numberResolver", "size", "directionSize", "property", "map", "directionMap", "formatter", "p", "d", "_", "direction", "isNegative", "parseColor", "body", "theme", "split", "front", "rest", "getStringComponents", "match", "bracketTypeRe", "opacity", "main", "opacityOrModifier", "modifier", "isInterpolatedMethod", "h", "colors", "name", "parsed", "parseThemeColor", "last", "secondLast", "no", "keys", "color", "bracket$1", "bracketOrMain", "SpecialColorKey", "parseCssColor", "key", "colorData", "getThemeByKey", "themeKey", "obj", "deepGet", "current", "path", "i", "flatKey", "v", "colorCSSGenerator", "data", "property", "varName", "ctx", "alpha", "rawColorComment", "css", "result", "isCSSVar", "isSpecial", "alphaKey", "value", "generateThemeVariable", "method", "defineProperty", "themeTracking", "colorValue", "symbols", "detectThemeValue", "colorResolver", "colorableShadows", "shadows", "colorVar", "colored", "toArray", "components", "isInset", "pos", "colorVarValue", "lastComp", "colorToString", "hasParseableColor", "reLetters", "resolvedBreakpoints", "resolveBreakpoints", "generator", "breakpoints", "resolved", "a", "b", "point", "size", "makeGlobalStaticRules", "prefix", "property", "globalKeywords", "keyword", "defineProperty", "options", "syntax", "inherits", "initialValue", "value", "symbols", "propertyTracking", "isCSSMathFn", "cssMathFnRE", "isSize", "str", "numberWithUnitRE", "hyphenate", "str", "compressCSS", "css", "isDev", "trackedTheme", "themeTracking", "key", "props", "k", "toArray", "generateThemeVariable", "detectThemeValue", "value", "theme", "variable", "path", "themeValue", "getThemeByKey", "trackedProperties", "propertyTracking", "property", "containerParent", "l", "v", "queryMatcher", "container", "_", "context", "theme", "variantHandlers", "themePadding", "padding", "isString", "themeMaxWidth", "maxWidth", "query", "x", "match", "matchBp", "resolveBreakpoints", "i", "css", "containerShortcuts", "bp", "points", "shortcuts", "p", "verticalAlignAlias", "globalKeywords", "x", "verticalAligns", "v", "h", "textAlignValues", "textAligns", "animations", "name", "theme", "kf", "duration", "timing", "count", "props", "d", "makeGlobalStaticRules", "properties", "defineProperty", "resolveModifier", "modifier", "interpolationMethod", "bgGradientColorResolver", "position", "body", "css", "data", "parseColor", "color", "keys", "alpha", "SpecialColorKey", "value", "generateThemeVariable", "themeTracking", "detectThemeValue", "p", "bgGradientPositionResolver", "mode", "backgroundStyles", "m", "s", "opacity$1", "positionMap", "i", "k", "c", "keyword", "outline", "handleWidth$2", "handleColorOrWidth$2", "symbols", "b", "match", "ctx", "isCSSMathFn", "result", "colorResolver", "appearance", "willChangeProperty", "prop", "willChange", "listStyles", "listStyle", "alias", "style", "accents", "carets", "imageRenderings", "overscrolls", "scrollBehaviors", "borderStyles", "borders", "handlerBorderSize", "handlerBorderColorOrSize", "handlerBorderOpacity", "handlerRounded", "handlerBorderStyle", "borderColorResolver", "direction", "colorCSSGenerator", "a", "directionMap", "hasParseableColor", "directions$1", "notNull", "acc", "item", "cornerMap", "_v", "isVar", "opacity", "bgUrlRE", "bgLengthRE", "bgPositionRE", "bgGradientRE", "bgImageRE", "bgColors", "args", "e", "isSize", "colorScheme", "columns", "decorationStyles", "textDecorations", "handleWidth$1", "handleColorOrWidth$1", "paddings", "directionSize", "margins", "spaces", "handlerSpace", "symbols$1", "notLastChildSelectorVariant", "input", "next", "num", "numberResolver", "results", "index", "divides", "handlerDivide", "filterBaseKeys", "filterProperties", "filterCSS", "backdropBaseKeys", "backdropProperties", "backdropCSS", "percentWithDefault", "str", "toFilter", "varName", "resolver", "dropShadowResolver", "res", "getStringComponents", "colorableShadows", "filters", "flex", "directions", "gaps", "rowCol", "autoDirection", "grids", "s$1", "overflowValues", "overflows", "lineClamps", "linearMap", "maskInitialValue", "baseMaskImage", "handlePosition", "handleImage", "_", "gradient", "val", "g", "dir", "hyphenate", "gradientStopsPrefixMap", "handleSize$1", "masks", "placeholders", "positions", "justifies", "orders", "alignments", "placements", "flexGridJustifiesAlignments", "handleInsetValue", "handleInsetValues", "insetMap", "insets", "floats", "zIndexes", "boxSizing", "questionMark", "constructCSS", "generator", "shadowProperties", "boxShadows", "handleShadow", "themeKey", "shadowVar", "rings", "scrolls", "sizeMapping", "getPropName", "minmax", "hw", "getSizeValue", "key", "sizes", "w", "h$1", "context", "handleBreakpoint", "point", "bp", "resolveBreakpoints", "getAspectRatio", "aspectRatio", "cursorValues", "containValues", "displays", "appearances", "cursors", "contains", "pointerEvents", "resizes", "userSelects", "whitespaces", "contentVisibility", "contents", "breaks", "textWraps", "textOverflows", "textTransforms", "fontStyles", "fontSmoothings", "hyphens", "writingModes", "writingOrientations", "screenReadersAccess", "isolations", "objectPositions", "backgroundBlendModes", "mixBlendModes", "dynamicViewportHeight", "accessibility", "fieldSizing", "svgUtilities", "handleWidth", "handleColorOrWidth", "tables", "resolveValue", "d$1", "touchActionValue", "touchActionProperties", "touchActions", "transformValues", "transformCpu", "transform", "transformGpu", "transforms", "s", "positionMap", "h", "theme", "v", "themeTracking", "generateThemeVariable", "handleTranslate", "handleRotate", "handleSkew", "handleScale", "transformValues", "d", "transform", "transformCpu", "transformGpu", "makeGlobalStaticRules", "b", "numberResolver", "transformXYZ", "CONTROL_NO_NEGATIVE", "d$1", "defineProperty", "ds", "xyzMap", "_d", "name", "values", "splitComma", "v$1", "i", "xyzArray", "resolveTransitionProperty", "prop", "p", "props", "p$1", "transitions", "defaultTransition", "globalKeywords", "fonts", "handleText", "handleSize", "handlerColorOrSize", "colorResolver", "opacity$1", "num", "tabSizes", "textIndents", "textStrokes", "handleTextShadow", "match", "ctx", "res", "getStringComponents", "c", "hasParseableColor", "alpha", "colorableShadows", "textShadows", "fontVariantNumericProperties", "baseFontVariantNumeric", "fontVariantNumeric", "split", "splitShorthand", "size", "leading", "sizePairs", "lineHeight", "fontSize", "isCSSMathFn", "body", "type", "front", "rest", "getStringComponent", "bracketTypeRe", "variablesAbbrMap", "cssVariables", "varname", "cssProperty", "_", "value", "isURI", "isValidCSSBody", "parsed", "findUntil", "declaration", "viewTransition", "rules", "margins", "paddings", "textAligns", "verticalAligns", "appearance", "outline", "willChange", "listStyle", "accents", "carets", "imageRenderings", "overscrolls", "scrollBehaviors", "borders", "bgColors", "opacity", "colorScheme", "container", "containerParent", "textDecorations", "flex", "gaps", "grids", "sizes", "aspectRatio", "displays", "appearances", "cursors", "contains", "pointerEvents", "resizes", "userSelects", "whitespaces", "contentVisibility", "contents", "breaks", "textWraps", "textOverflows", "textTransforms", "fontStyles", "fontSmoothings", "rings", "boxShadows", "alignments", "boxSizing", "flexGridJustifiesAlignments", "floats", "insets", "justifies", "orders", "placements", "positions", "zIndexes", "overflows", "svgUtilities", "animations", "backgroundStyles", "hyphens", "writingModes", "writingOrientations", "accessibility", "screenReadersAccess", "isolations", "objectPositions", "backgroundBlendModes", "mixBlendModes", "dynamicViewportHeight", "masks", "columns", "filters", "lineClamps", "placeholders", "scrolls", "tables", "touchActions", "spaces", "divides", "fieldSizing", "questionMark", "shortcuts", "containerShortcuts", "colors", "color", "animation", "aria", "blur", "font", "text", "fontWeight", "tracking", "leading", "textStrokeWidth", "media", "spacing", "radius", "shadow", "insetShadow", "dropShadow", "textShadow", "perspective", "defaults", "container", "breakpoint", "verticalBreakpoint", "supports", "ease", "property", "theme", "colors", "variantAria", "matcher", "ctx", "variant", "variantGetParameter", "match", "rest", "aria", "h", "taggedAria", "tagName", "label", "ariaAttribute", "tagSelectorMap", "input", "next", "variantTaggedAriaAttributes", "sizePseudo", "variantBreakpoints", "regexCache", "context", "variantEntries", "resolveBreakpoints", "point", "size", "idx", "pre", "m", "isLtPrefix", "isAtPrefix", "order", "calcMaxWidthBySize", "variantChildren", "variantMatcher", "scopeMatcher", "name", "combinator", "separators", "body", "variantGetBracket", "separator", "bracketValue", "s", "variantCombinators", "variantSvgCombinators", "variantContainerQuery", "unbracket", "container", "variantColorsMediaOrClass", "options", "dark", "light", "variantParentMatcher", "variantColorsScheme", "variantDataAttribute", "dataAttribute", "taggedData", "variantTaggedDataAttributes", "variantLanguageDirections", "variantImportant", "re", "base", "v", "variantInert", "variantNoscript", "variantScripting", "variantPrint", "variantCustomMedia", "media", "variantContrasts", "variantMotions", "variantOrientations", "variantForcedColors", "variantSelector", "selector", "variantCssLayer", "layer", "variantInternalLayer", "variantScope", "scope", "variantVariables", "getBracket", "newMatcher", "useParent", "updates", "variantTheme", "hasThemeFn", "transformThemeFn", "variantStickyHover", "variantImplicitGroup", "group", "anchoredNumberRE", "numberRE", "ignoreProps", "negateMathFunction", "value", "cssMathFnRE", "cssVarFnRE", "fnBody", "getStringComponent", "negateFunctionBodyRE", "negateFunctionBody", "i", "variantNegative", "CONTROL_NO_NEGATIVE", "changed", "toArray", "negatedFn", "negatedBody", "placeholderModifier", "theme", "p", "hasParseableColor", "hasOpacityValue", "variantPseudoClassesAndElements", "createPseudoClassesAndElements", "variantPseudoClassFunctions", "createPseudoClassFunctions", "variantTaggedPseudoClasses", "createTaggedPseudoClasses", "variantPartClasses", "createPartClasses", "variantStartingStyle", "variantSupports", "supports", "variants", "property", "options", "propertyConfig", "parentSelector", "selector", "trackedProperties", "css", "property$1", "value", "resetCSS", "reset", "generator", "themeTracking", "compressCSS", "ExcludeCssVarKeys", "getThemeVarsMap", "theme$2", "keys", "themeMap", "normalizeValue", "alphaPlaceholdersRE", "process", "obj", "prefix", "key", "theme$1", "preflightsTheme", "ctx", "safelist", "uniq", "s", "mode", "prop", "props", "v", "getThemeByKey", "detectThemeValue", "deps", "generateCSS", "deps$1", "utility", "toArray", "resolvedDeps", "escapeSelector", "trackedTheme", "k", "preflights", "shorthands", "globalKeywords", "presetWind4", "PRESET_NAME", "rules", "shortcuts", "theme", "variants", "postprocessors", "extractorArbitraryVariants", "import_striptags", "unocssShadowDomHack_default", "import_handlebars", "uno", "createGenerator", "presetWind4", "src_default", "unocssShadowDomHack_default", "DEFAULT_MODEL_DEPTH", "DEFAULT_FIELD_TYPE", "stripHtml", "striptags", "HandlebarsCollector", "Handlebars", "filter", "val", "ast", "HandlebarsCommentCollector", "node", "HandlebarsContentCollector", "HandlebarsPathCollector", "path", "test", "FlextMacroCollector", "FilterHelper", "FlextH1SomewhereContentCollector", "inarr", "arr", "has", "obj", "key", "isset", "isNumber", "isObject", "audit", "getAst", "getTemplate", "getHtml", "template", "data", "helpers", "getCss", "options", "doGenerateGlobalStyles", "generator", "html", "css", "unique", "getPaths", "paths", "pathToDataModelNode", "depth", "PotentialLoopError", "name", "items", "result", "pathToDataModel", "dataModel", "_path", "_depth", "newNode", "cursorRef", "cursor", "i", "nodesRef", "nextCursorRef", "nodeRef", "nextCursor", "getDataModel", "first", "dataModelNodeToMetadata", "fields", "_options", "getField", "_fieldName", "f", "fieldName", "field", "order", "nodes", "type", "label", "hint", "min", "max", "minLength", "maxLength", "isRequiredBool", "newNodes", "nodeName", "$", "nodeFieldName", "nodeField", "nodeFieldOrder", "nodeFieldAbsoluteOrder", "nodeFieldNameRef", "nodeFieldRef", "nodeFieldOrderRef", "nodeFieldAbsoluteOrderRef", "compare", "isAllChildrenRequired", "n", "isRequired", "getMacroParam", "match", "regex", "get", "value", "param", "RegexHelper", "namedParam", "simpleParam", "getMacroParams", "doWarn", "matches", "token", "macro", "BaseWarning", "getMacros", "macroArr", "macroStr", "paramsStr", "params", "getHtmlH1", "titleArr", "titleStr", "getTemplateValidationErrorsByMetadata", "model", "isval", "len", "err", "message", "TemplateDataValidationError", "fieldNameStr", "fieldValue", "ensureString", "ensureNullableString", "ensureDate", "isDateObj", "isDbDate", "unixDate", "_val", "_doWarn", "date", "dbDate", "year", "month", "day", "DateTime", "BaseError", "isoDate", "ensureTitle", "title", "search", "ensureFieldName", "pathItem", "ensureNullableFieldMinMax", "ensureNullableFieldMinMaxLength", "ensureNullableFieldOrder", "ensureFieldValue", "sum", "args", "acc", "valRef", "macroToModuleNames", "p", "macroToField", "macroName", "nameParam", "arg", "a", "nameStr", "descr", "macroToFieldValueOption", "isDisabled", "applyValueOptionsToFields", "o", "applyAbsoluteOrderToFields", "defineModule", "modules_exports", "__export", "array_default", "cond_default", "date_default", "match_default", "math_default", "media_default", "number_default", "put_default", "string_default", "op", "state", "args", "arr", "prop", "destruct", "val", "_prop", "items", "result", "obj", "cursor", "item", "check", "array_default", "defineModule", "op", "state", "args", "namedArgs", "arg1", "arg2OrOp", "arg3", "rest", "soft", "TemplateSyntaxError", "audit", "and", "a", "r", "x", "or", "not", "equal", "b", "notEqual", "greater", "less", "cond_default", "defineModule", "op", "state", "flext", "args", "namedArgs", "date", "padding", "genitive", "timeZone", "lang", "newDate", "DateTime", "ensureDate", "padStart", "val", "_padding", "isset", "TemplateSyntaxError", "audit", "now", "seconds", "minutes", "hours", "day", "month", "monthText", "year", "format", "text", "unix", "iso", "date_default", "defineModule", "_match", "state", "args", "value", "self", "render", "_case", "valueRef", "_fallback", "match_default", "defineModule", "op", "state", "args", "a", "b", "rest", "handle", "_args", "mathOp", "mathArgs", "TemplateSyntaxError", "audit", "flatten", "result", "arg", "isNumber", "BaseError", "sum", "plus", "_sum", "minus", "multiply", "divide", "intDivide", "power", "round", "_op", "__op", "val", "sqrt", "state", "args", "a", "op", "cbrt", "abs", "math_default", "defineModule", "plus", "_sum", "minus", "multiply", "divide", "intDivide", "power", "round", "url", "state", "flext", "args", "name", "asset", "TemplateError", "media_default", "defineModule", "import_written_number", "kkKz_default", "localeNames_default", "DEFAULT_LANG", "LOCALES", "kkKz_default", "op", "state", "flext", "args", "namedArgs", "number", "lang", "strict", "locale", "localeNames_default", "newLang", "writtenNumber", "isNumber", "text", "check", "number_default", "defineModule", "import_handlebars", "DEFAULT_COLOR", "put", "state", "args", "val", "fallback", "date", "ensureDate", "isNumber", "inarr", "format", "putWithColor", "color", "put_default", "defineModule", "op", "state", "args", "str", "json", "check", "string_default", "defineModule", "DEFAULT_HELPER_NAME", "DEFAULT_MODEL_DEPTH", "SimpleFlext", "defaultGetProcessed", "getAst", "val", "data", "helpers", "template", "name", "getTemplate", "BaseError", "getHtml", "options", "helpersObj", "getCss", "Flext", "getHtmlH1", "getMacros", "modules_exports", "titleStr", "macros", "getAll", "_val", "m", "inarr", "get", "macro", "param", "version", "lang", "title", "timeZone", "modulesMacros", "lineHeight", "optionMacros", "fieldMacros", "fieldValueOptions", "macroToFieldValueOption", "fields", "macroToField", "applyValueOptionsToFields", "applyAbsoluteOrderToFields", "fieldGroups", "f", "fieldGroup", "ensureTitle", "moduleNames", "macroToModuleNames", "helperName", "has", "handle", "isDefault", "flext", "helper", "args1", "args", "namedArgs", "self", "depth", "isHelper", "node", "isValid", "dataModelNodeToMetadata", "getDataModel", "getTemplateValidationErrorsByMetadata", "index_default"]
7
+ }