{"version":3,"file":"postcss-CTOhyAbP.mjs","sources":["../node_modules/picocolors/picocolors.js","../node_modules/postcss/lib/tokenize.js","../node_modules/postcss/lib/terminal-highlight.js","../node_modules/postcss/lib/css-syntax-error.js","../node_modules/postcss/lib/stringifier.js","../node_modules/postcss/lib/stringify.js","../node_modules/postcss/lib/symbols.js","../node_modules/postcss/lib/node.js","../node_modules/postcss/lib/comment.js","../node_modules/postcss/lib/declaration.js","../node_modules/postcss/lib/container.js","../node_modules/postcss/lib/at-rule.js","../node_modules/postcss/lib/document.js","../node_modules/nanoid/non-secure/index.cjs","../node_modules/source-map-js/lib/base64.js","../node_modules/source-map-js/lib/base64-vlq.js","../node_modules/source-map-js/lib/util.js","../node_modules/source-map-js/lib/array-set.js","../node_modules/source-map-js/lib/mapping-list.js","../node_modules/source-map-js/lib/source-map-generator.js","../node_modules/source-map-js/lib/binary-search.js","../node_modules/source-map-js/lib/quick-sort.js","../node_modules/source-map-js/lib/source-map-consumer.js","../node_modules/source-map-js/lib/source-node.js","../node_modules/source-map-js/source-map.js","../node_modules/postcss/lib/previous-map.js","../node_modules/postcss/lib/input.js","../node_modules/postcss/lib/root.js","../node_modules/postcss/lib/list.js","../node_modules/postcss/lib/rule.js","../node_modules/postcss/lib/fromJSON.js","../node_modules/postcss/lib/map-generator.js","../node_modules/postcss/lib/parser.js","../node_modules/postcss/lib/parse.js","../node_modules/postcss/lib/warning.js","../node_modules/postcss/lib/result.js","../node_modules/postcss/lib/warn-once.js","../node_modules/postcss/lib/lazy-result.js","../node_modules/postcss/lib/no-work-result.js","../node_modules/postcss/lib/processor.js","../node_modules/postcss/lib/postcss.js","../node_modules/postcss/lib/postcss.mjs"],"sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n  let css = input.css.valueOf()\n  let ignore = options.ignoreErrors\n\n  let code, content, escape, next, quote\n  let currentToken, escaped, escapePos, n, prev\n\n  let length = css.length\n  let pos = 0\n  let buffer = []\n  let returned = []\n\n  function position() {\n    return pos\n  }\n\n  function unclosed(what) {\n    throw input.error('Unclosed ' + what, pos)\n  }\n\n  function endOfFile() {\n    return returned.length === 0 && pos >= length\n  }\n\n  function nextToken(opts) {\n    if (returned.length) return returned.pop()\n    if (pos >= length) return\n\n    let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n    code = css.charCodeAt(pos)\n\n    switch (code) {\n      case NEWLINE:\n      case SPACE:\n      case TAB:\n      case CR:\n      case FEED: {\n        next = pos\n        do {\n          next += 1\n          code = css.charCodeAt(next)\n        } while (\n          code === SPACE ||\n          code === NEWLINE ||\n          code === TAB ||\n          code === CR ||\n          code === FEED\n        )\n\n        currentToken = ['space', css.slice(pos, next)]\n        pos = next - 1\n        break\n      }\n\n      case OPEN_SQUARE:\n      case CLOSE_SQUARE:\n      case OPEN_CURLY:\n      case CLOSE_CURLY:\n      case COLON:\n      case SEMICOLON:\n      case CLOSE_PARENTHESES: {\n        let controlChar = String.fromCharCode(code)\n        currentToken = [controlChar, controlChar, pos]\n        break\n      }\n\n      case OPEN_PARENTHESES: {\n        prev = buffer.length ? buffer.pop()[1] : ''\n        n = css.charCodeAt(pos + 1)\n        if (\n          prev === 'url' &&\n          n !== SINGLE_QUOTE &&\n          n !== DOUBLE_QUOTE &&\n          n !== SPACE &&\n          n !== NEWLINE &&\n          n !== TAB &&\n          n !== FEED &&\n          n !== CR\n        ) {\n          next = pos\n          do {\n            escaped = false\n            next = css.indexOf(')', next + 1)\n            if (next === -1) {\n              if (ignore || ignoreUnclosed) {\n                next = pos\n                break\n              } else {\n                unclosed('bracket')\n              }\n            }\n            escapePos = next\n            while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n              escapePos -= 1\n              escaped = !escaped\n            }\n          } while (escaped)\n\n          currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\n          pos = next\n        } else {\n          next = css.indexOf(')', pos + 1)\n          content = css.slice(pos, next + 1)\n\n          if (next === -1 || RE_BAD_BRACKET.test(content)) {\n            currentToken = ['(', '(', pos]\n          } else {\n            currentToken = ['brackets', content, pos, next]\n            pos = next\n          }\n        }\n\n        break\n      }\n\n      case SINGLE_QUOTE:\n      case DOUBLE_QUOTE: {\n        quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n        next = pos\n        do {\n          escaped = false\n          next = css.indexOf(quote, next + 1)\n          if (next === -1) {\n            if (ignore || ignoreUnclosed) {\n              next = pos + 1\n              break\n            } else {\n              unclosed('string')\n            }\n          }\n          escapePos = next\n          while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n            escapePos -= 1\n            escaped = !escaped\n          }\n        } while (escaped)\n\n        currentToken = ['string', css.slice(pos, next + 1), pos, next]\n        pos = next\n        break\n      }\n\n      case AT: {\n        RE_AT_END.lastIndex = pos + 1\n        RE_AT_END.test(css)\n        if (RE_AT_END.lastIndex === 0) {\n          next = css.length - 1\n        } else {\n          next = RE_AT_END.lastIndex - 2\n        }\n\n        currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      case BACKSLASH: {\n        next = pos\n        escape = true\n        while (css.charCodeAt(next + 1) === BACKSLASH) {\n          next += 1\n          escape = !escape\n        }\n        code = css.charCodeAt(next + 1)\n        if (\n          escape &&\n          code !== SLASH &&\n          code !== SPACE &&\n          code !== NEWLINE &&\n          code !== TAB &&\n          code !== CR &&\n          code !== FEED\n        ) {\n          next += 1\n          if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n            while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n              next += 1\n            }\n            if (css.charCodeAt(next + 1) === SPACE) {\n              next += 1\n            }\n          }\n        }\n\n        currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n        pos = next\n        break\n      }\n\n      default: {\n        if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n          next = css.indexOf('*/', pos + 2) + 1\n          if (next === 0) {\n            if (ignore || ignoreUnclosed) {\n              next = css.length\n            } else {\n              unclosed('comment')\n            }\n          }\n\n          currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n          pos = next\n        } else {\n          RE_WORD_END.lastIndex = pos + 1\n          RE_WORD_END.test(css)\n          if (RE_WORD_END.lastIndex === 0) {\n            next = css.length - 1\n          } else {\n            next = RE_WORD_END.lastIndex - 2\n          }\n\n          currentToken = ['word', css.slice(pos, next + 1), pos, next]\n          buffer.push(currentToken)\n          pos = next\n        }\n\n        break\n      }\n    }\n\n    pos++\n    return currentToken\n  }\n\n  function back(token) {\n    returned.push(token)\n  }\n\n  return {\n    back,\n    endOfFile,\n    nextToken,\n    position\n  }\n}\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet tokenizer = require('./tokenize')\n\nlet Input\n\nfunction registerInput(dependant) {\n  Input = dependant\n}\n\nconst HIGHLIGHT_THEME = {\n  ';': pico.yellow,\n  ':': pico.yellow,\n  '(': pico.cyan,\n  ')': pico.cyan,\n  '[': pico.yellow,\n  ']': pico.yellow,\n  '{': pico.yellow,\n  '}': pico.yellow,\n  'at-word': pico.cyan,\n  'brackets': pico.cyan,\n  'call': pico.cyan,\n  'class': pico.yellow,\n  'comment': pico.gray,\n  'hash': pico.magenta,\n  'string': pico.green\n}\n\nfunction getTokenType([type, value], processor) {\n  if (type === 'word') {\n    if (value[0] === '.') {\n      return 'class'\n    }\n    if (value[0] === '#') {\n      return 'hash'\n    }\n  }\n\n  if (!processor.endOfFile()) {\n    let next = processor.nextToken()\n    processor.back(next)\n    if (next[0] === 'brackets' || next[0] === '(') return 'call'\n  }\n\n  return type\n}\n\nfunction terminalHighlight(css) {\n  let processor = tokenizer(new Input(css), { ignoreErrors: true })\n  let result = ''\n  while (!processor.endOfFile()) {\n    let token = processor.nextToken()\n    let color = HIGHLIGHT_THEME[getTokenType(token, processor)]\n    if (color) {\n      result += token[1]\n        .split(/\\r?\\n/)\n        .map(i => color(i))\n        .join('\\n')\n    } else {\n      result += token[1]\n    }\n  }\n  return result\n}\n\nterminalHighlight.registerInput = registerInput\n\nmodule.exports = terminalHighlight\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n  constructor(message, line, column, source, file, plugin) {\n    super(message)\n    this.name = 'CssSyntaxError'\n    this.reason = message\n\n    if (file) {\n      this.file = file\n    }\n    if (source) {\n      this.source = source\n    }\n    if (plugin) {\n      this.plugin = plugin\n    }\n    if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n      if (typeof line === 'number') {\n        this.line = line\n        this.column = column\n      } else {\n        this.line = line.line\n        this.column = line.column\n        this.endLine = column.line\n        this.endColumn = column.column\n      }\n    }\n\n    this.setMessage()\n\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, CssSyntaxError)\n    }\n  }\n\n  setMessage() {\n    this.message = this.plugin ? this.plugin + ': ' : ''\n    this.message += this.file ? this.file : '<css input>'\n    if (typeof this.line !== 'undefined') {\n      this.message += ':' + this.line + ':' + this.column\n    }\n    this.message += ': ' + this.reason\n  }\n\n  showSourceCode(color) {\n    if (!this.source) return ''\n\n    let css = this.source\n    if (color == null) color = pico.isColorSupported\n\n    let aside = text => text\n    let mark = text => text\n    let highlight = text => text\n    if (color) {\n      let { bold, gray, red } = pico.createColors(true)\n      mark = text => bold(red(text))\n      aside = text => gray(text)\n      if (terminalHighlight) {\n        highlight = text => terminalHighlight(text)\n      }\n    }\n\n    let lines = css.split(/\\r?\\n/)\n    let start = Math.max(this.line - 3, 0)\n    let end = Math.min(this.line + 2, lines.length)\n    let maxWidth = String(end).length\n\n    return lines\n      .slice(start, end)\n      .map((line, index) => {\n        let number = start + 1 + index\n        let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n        if (number === this.line) {\n          if (line.length > 160) {\n            let padding = 20\n            let subLineStart = Math.max(0, this.column - padding)\n            let subLineEnd = Math.max(\n              this.column + padding,\n              this.endColumn + padding\n            )\n            let subLine = line.slice(subLineStart, subLineEnd)\n\n            let spacing =\n              aside(gutter.replace(/\\d/g, ' ')) +\n              line\n                .slice(0, Math.min(this.column - 1, padding - 1))\n                .replace(/[^\\t]/g, ' ')\n\n            return (\n              mark('>') +\n              aside(gutter) +\n              highlight(subLine) +\n              '\\n ' +\n              spacing +\n              mark('^')\n            )\n          }\n\n          let spacing =\n            aside(gutter.replace(/\\d/g, ' ')) +\n            line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n          return (\n            mark('>') +\n            aside(gutter) +\n            highlight(line) +\n            '\\n ' +\n            spacing +\n            mark('^')\n          )\n        }\n\n        return ' ' + aside(gutter) + highlight(line)\n      })\n      .join('\\n')\n  }\n\n  toString() {\n    let code = this.showSourceCode()\n    if (code) {\n      code = '\\n\\n' + code + '\\n'\n    }\n    return this.name + ': ' + this.message + code\n  }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nconst DEFAULT_RAW = {\n  after: '\\n',\n  beforeClose: '\\n',\n  beforeComment: '\\n',\n  beforeDecl: '\\n',\n  beforeOpen: ' ',\n  beforeRule: '\\n',\n  colon: ': ',\n  commentLeft: ' ',\n  commentRight: ' ',\n  emptyBody: '',\n  indent: '    ',\n  semicolon: false\n}\n\nfunction capitalize(str) {\n  return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n  constructor(builder) {\n    this.builder = builder\n  }\n\n  atrule(node, semicolon) {\n    let name = '@' + node.name\n    let params = node.params ? this.rawValue(node, 'params') : ''\n\n    if (typeof node.raws.afterName !== 'undefined') {\n      name += node.raws.afterName\n    } else if (params) {\n      name += ' '\n    }\n\n    if (node.nodes) {\n      this.block(node, name + params)\n    } else {\n      let end = (node.raws.between || '') + (semicolon ? ';' : '')\n      this.builder(name + params + end, node)\n    }\n  }\n\n  beforeAfter(node, detect) {\n    let value\n    if (node.type === 'decl') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (node.type === 'comment') {\n      value = this.raw(node, null, 'beforeComment')\n    } else if (detect === 'before') {\n      value = this.raw(node, null, 'beforeRule')\n    } else {\n      value = this.raw(node, null, 'beforeClose')\n    }\n\n    let buf = node.parent\n    let depth = 0\n    while (buf && buf.type !== 'root') {\n      depth += 1\n      buf = buf.parent\n    }\n\n    if (value.includes('\\n')) {\n      let indent = this.raw(node, null, 'indent')\n      if (indent.length) {\n        for (let step = 0; step < depth; step++) value += indent\n      }\n    }\n\n    return value\n  }\n\n  block(node, start) {\n    let between = this.raw(node, 'between', 'beforeOpen')\n    this.builder(start + between + '{', node, 'start')\n\n    let after\n    if (node.nodes && node.nodes.length) {\n      this.body(node)\n      after = this.raw(node, 'after')\n    } else {\n      after = this.raw(node, 'after', 'emptyBody')\n    }\n\n    if (after) this.builder(after)\n    this.builder('}', node, 'end')\n  }\n\n  body(node) {\n    let last = node.nodes.length - 1\n    while (last > 0) {\n      if (node.nodes[last].type !== 'comment') break\n      last -= 1\n    }\n\n    let semicolon = this.raw(node, 'semicolon')\n    for (let i = 0; i < node.nodes.length; i++) {\n      let child = node.nodes[i]\n      let before = this.raw(child, 'before')\n      if (before) this.builder(before)\n      this.stringify(child, last !== i || semicolon)\n    }\n  }\n\n  comment(node) {\n    let left = this.raw(node, 'left', 'commentLeft')\n    let right = this.raw(node, 'right', 'commentRight')\n    this.builder('/*' + left + node.text + right + '*/', node)\n  }\n\n  decl(node, semicolon) {\n    let between = this.raw(node, 'between', 'colon')\n    let string = node.prop + between + this.rawValue(node, 'value')\n\n    if (node.important) {\n      string += node.raws.important || ' !important'\n    }\n\n    if (semicolon) string += ';'\n    this.builder(string, node)\n  }\n\n  document(node) {\n    this.body(node)\n  }\n\n  raw(node, own, detect) {\n    let value\n    if (!detect) detect = own\n\n    // Already had\n    if (own) {\n      value = node.raws[own]\n      if (typeof value !== 'undefined') return value\n    }\n\n    let parent = node.parent\n\n    if (detect === 'before') {\n      // Hack for first rule in CSS\n      if (!parent || (parent.type === 'root' && parent.first === node)) {\n        return ''\n      }\n\n      // `root` nodes in `document` should use only their own raws\n      if (parent && parent.type === 'document') {\n        return ''\n      }\n    }\n\n    // Floating child without parent\n    if (!parent) return DEFAULT_RAW[detect]\n\n    // Detect style by other nodes\n    let root = node.root()\n    if (!root.rawCache) root.rawCache = {}\n    if (typeof root.rawCache[detect] !== 'undefined') {\n      return root.rawCache[detect]\n    }\n\n    if (detect === 'before' || detect === 'after') {\n      return this.beforeAfter(node, detect)\n    } else {\n      let method = 'raw' + capitalize(detect)\n      if (this[method]) {\n        value = this[method](root, node)\n      } else {\n        root.walk(i => {\n          value = i.raws[own]\n          if (typeof value !== 'undefined') return false\n        })\n      }\n    }\n\n    if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n    root.rawCache[detect] = value\n    return value\n  }\n\n  rawBeforeClose(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length > 0) {\n        if (typeof i.raws.after !== 'undefined') {\n          value = i.raws.after\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawBeforeComment(root, node) {\n    let value\n    root.walkComments(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeDecl')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeDecl(root, node) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.before !== 'undefined') {\n        value = i.raws.before\n        if (value.includes('\\n')) {\n          value = value.replace(/[^\\n]+$/, '')\n        }\n        return false\n      }\n    })\n    if (typeof value === 'undefined') {\n      value = this.raw(node, null, 'beforeRule')\n    } else if (value) {\n      value = value.replace(/\\S/g, '')\n    }\n    return value\n  }\n\n  rawBeforeOpen(root) {\n    let value\n    root.walk(i => {\n      if (i.type !== 'decl') {\n        value = i.raws.between\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawBeforeRule(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && (i.parent !== root || root.first !== i)) {\n        if (typeof i.raws.before !== 'undefined') {\n          value = i.raws.before\n          if (value.includes('\\n')) {\n            value = value.replace(/[^\\n]+$/, '')\n          }\n          return false\n        }\n      }\n    })\n    if (value) value = value.replace(/\\S/g, '')\n    return value\n  }\n\n  rawColon(root) {\n    let value\n    root.walkDecls(i => {\n      if (typeof i.raws.between !== 'undefined') {\n        value = i.raws.between.replace(/[^\\s:]/g, '')\n        return false\n      }\n    })\n    return value\n  }\n\n  rawEmptyBody(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length === 0) {\n        value = i.raws.after\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawIndent(root) {\n    if (root.raws.indent) return root.raws.indent\n    let value\n    root.walk(i => {\n      let p = i.parent\n      if (p && p !== root && p.parent && p.parent === root) {\n        if (typeof i.raws.before !== 'undefined') {\n          let parts = i.raws.before.split('\\n')\n          value = parts[parts.length - 1]\n          value = value.replace(/\\S/g, '')\n          return false\n        }\n      }\n    })\n    return value\n  }\n\n  rawSemicolon(root) {\n    let value\n    root.walk(i => {\n      if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n        value = i.raws.semicolon\n        if (typeof value !== 'undefined') return false\n      }\n    })\n    return value\n  }\n\n  rawValue(node, prop) {\n    let value = node[prop]\n    let raw = node.raws[prop]\n    if (raw && raw.value === value) {\n      return raw.raw\n    }\n\n    return value\n  }\n\n  root(node) {\n    this.body(node)\n    if (node.raws.after) this.builder(node.raws.after)\n  }\n\n  rule(node) {\n    this.block(node, this.rawValue(node, 'selector'))\n    if (node.raws.ownSemicolon) {\n      this.builder(node.raws.ownSemicolon, node, 'end')\n    }\n  }\n\n  stringify(node, semicolon) {\n    /* c8 ignore start */\n    if (!this[node.type]) {\n      throw new Error(\n        'Unknown AST node type ' +\n          node.type +\n          '. ' +\n          'Maybe you need to change PostCSS stringifier.'\n      )\n    }\n    /* c8 ignore stop */\n    this[node.type](node, semicolon)\n  }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n  let str = new Stringifier(builder)\n  str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n  let cloned = new obj.constructor()\n\n  for (let i in obj) {\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n      /* c8 ignore next 2 */\n      continue\n    }\n    if (i === 'proxyCache') continue\n    let value = obj[i]\n    let type = typeof value\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) cloned[i] = parent\n    } else if (i === 'source') {\n      cloned[i] = value\n    } else if (Array.isArray(value)) {\n      cloned[i] = value.map(j => cloneNode(j, cloned))\n    } else {\n      if (type === 'object' && value !== null) value = cloneNode(value)\n      cloned[i] = value\n    }\n  }\n\n  return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n  // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n  if (position && typeof position.offset !== 'undefined') {\n    return position.offset\n  }\n\n  let column = 1\n  let line = 1\n  let offset = 0\n\n  for (let i = 0; i < inputCSS.length; i++) {\n    if (line === position.line && column === position.column) {\n      offset = i\n      break\n    }\n\n    if (inputCSS[i] === '\\n') {\n      column = 1\n      line += 1\n    } else {\n      column += 1\n    }\n  }\n\n  return offset\n}\n\nclass Node {\n  get proxyOf() {\n    return this\n  }\n\n  constructor(defaults = {}) {\n    this.raws = {}\n    this[isClean] = false\n    this[my] = true\n\n    for (let name in defaults) {\n      if (name === 'nodes') {\n        this.nodes = []\n        for (let node of defaults[name]) {\n          if (typeof node.clone === 'function') {\n            this.append(node.clone())\n          } else {\n            this.append(node)\n          }\n        }\n      } else {\n        this[name] = defaults[name]\n      }\n    }\n  }\n\n  addToError(error) {\n    error.postcssNode = this\n    if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n      let s = this.source\n      error.stack = error.stack.replace(\n        /\\n\\s{4}at /,\n        `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n      )\n    }\n    return error\n  }\n\n  after(add) {\n    this.parent.insertAfter(this, add)\n    return this\n  }\n\n  assign(overrides = {}) {\n    for (let name in overrides) {\n      this[name] = overrides[name]\n    }\n    return this\n  }\n\n  before(add) {\n    this.parent.insertBefore(this, add)\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    delete this.raws.before\n    delete this.raws.after\n    if (!keepBetween) delete this.raws.between\n  }\n\n  clone(overrides = {}) {\n    let cloned = cloneNode(this)\n    for (let name in overrides) {\n      cloned[name] = overrides[name]\n    }\n    return cloned\n  }\n\n  cloneAfter(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertAfter(this, cloned)\n    return cloned\n  }\n\n  cloneBefore(overrides = {}) {\n    let cloned = this.clone(overrides)\n    this.parent.insertBefore(this, cloned)\n    return cloned\n  }\n\n  error(message, opts = {}) {\n    if (this.source) {\n      let { end, start } = this.rangeBy(opts)\n      return this.source.input.error(\n        message,\n        { column: start.column, line: start.line },\n        { column: end.column, line: end.line },\n        opts\n      )\n    }\n    return new CssSyntaxError(message)\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (\n          prop === 'prop' ||\n          prop === 'value' ||\n          prop === 'name' ||\n          prop === 'params' ||\n          prop === 'important' ||\n          /* c8 ignore next */\n          prop === 'text'\n        ) {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  /* c8 ignore next 3 */\n  markClean() {\n    this[isClean] = true\n  }\n\n  markDirty() {\n    if (this[isClean]) {\n      this[isClean] = false\n      let next = this\n      while ((next = next.parent)) {\n        next[isClean] = false\n      }\n    }\n  }\n\n  next() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index + 1]\n  }\n\n  positionBy(opts = {}) {\n    let pos = this.source.start\n    if (opts.index) {\n      pos = this.positionInside(opts.index)\n    } else if (opts.word) {\n      let inputString =\n        'document' in this.source.input\n          ? this.source.input.document\n          : this.source.input.css\n      let stringRepresentation = inputString.slice(\n        sourceOffset(inputString, this.source.start),\n        sourceOffset(inputString, this.source.end)\n      )\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) pos = this.positionInside(index)\n    }\n    return pos\n  }\n\n  positionInside(index) {\n    let column = this.source.start.column\n    let line = this.source.start.line\n    let inputString =\n      'document' in this.source.input\n        ? this.source.input.document\n        : this.source.input.css\n    let offset = sourceOffset(inputString, this.source.start)\n    let end = offset + index\n\n    for (let i = offset; i < end; i++) {\n      if (inputString[i] === '\\n') {\n        column = 1\n        line += 1\n      } else {\n        column += 1\n      }\n    }\n\n    return { column, line, offset: end }\n  }\n\n  prev() {\n    if (!this.parent) return undefined\n    let index = this.parent.index(this)\n    return this.parent.nodes[index - 1]\n  }\n\n  rangeBy(opts = {}) {\n    let inputString =\n      'document' in this.source.input\n        ? this.source.input.document\n        : this.source.input.css\n    let start = {\n      column: this.source.start.column,\n      line: this.source.start.line,\n      offset: sourceOffset(inputString, this.source.start)\n    }\n    let end = this.source.end\n      ? {\n          column: this.source.end.column + 1,\n          line: this.source.end.line,\n          offset:\n            typeof this.source.end.offset === 'number'\n              ? // `source.end.offset` is exclusive, so we don't need to add 1\n                this.source.end.offset\n              : // Since line/column in this.source.end is inclusive,\n                // the `sourceOffset(... , this.source.end)` returns an inclusive offset.\n                // So, we add 1 to convert it to exclusive.\n                sourceOffset(inputString, this.source.end) + 1\n        }\n      : {\n          column: start.column + 1,\n          line: start.line,\n          offset: start.offset + 1\n        }\n\n    if (opts.word) {\n      let stringRepresentation = inputString.slice(\n        sourceOffset(inputString, this.source.start),\n        sourceOffset(inputString, this.source.end)\n      )\n      let index = stringRepresentation.indexOf(opts.word)\n      if (index !== -1) {\n        start = this.positionInside(index)\n        end = this.positionInside(index + opts.word.length)\n      }\n    } else {\n      if (opts.start) {\n        start = {\n          column: opts.start.column,\n          line: opts.start.line,\n          offset: sourceOffset(inputString, opts.start)\n        }\n      } else if (opts.index) {\n        start = this.positionInside(opts.index)\n      }\n\n      if (opts.end) {\n        end = {\n          column: opts.end.column,\n          line: opts.end.line,\n          offset: sourceOffset(inputString, opts.end)\n        }\n      } else if (typeof opts.endIndex === 'number') {\n        end = this.positionInside(opts.endIndex)\n      } else if (opts.index) {\n        end = this.positionInside(opts.index + 1)\n      }\n    }\n\n    if (\n      end.line < start.line ||\n      (end.line === start.line && end.column <= start.column)\n    ) {\n      end = {\n        column: start.column + 1,\n        line: start.line,\n        offset: start.offset + 1\n      }\n    }\n\n    return { end, start }\n  }\n\n  raw(prop, defaultType) {\n    let str = new Stringifier()\n    return str.raw(this, prop, defaultType)\n  }\n\n  remove() {\n    if (this.parent) {\n      this.parent.removeChild(this)\n    }\n    this.parent = undefined\n    return this\n  }\n\n  replaceWith(...nodes) {\n    if (this.parent) {\n      let bookmark = this\n      let foundSelf = false\n      for (let node of nodes) {\n        if (node === this) {\n          foundSelf = true\n        } else if (foundSelf) {\n          this.parent.insertAfter(bookmark, node)\n          bookmark = node\n        } else {\n          this.parent.insertBefore(bookmark, node)\n        }\n      }\n\n      if (!foundSelf) {\n        this.remove()\n      }\n    }\n\n    return this\n  }\n\n  root() {\n    let result = this\n    while (result.parent && result.parent.type !== 'document') {\n      result = result.parent\n    }\n    return result\n  }\n\n  toJSON(_, inputs) {\n    let fixed = {}\n    let emitInputs = inputs == null\n    inputs = inputs || new Map()\n    let inputsNextIndex = 0\n\n    for (let name in this) {\n      if (!Object.prototype.hasOwnProperty.call(this, name)) {\n        /* c8 ignore next 2 */\n        continue\n      }\n      if (name === 'parent' || name === 'proxyCache') continue\n      let value = this[name]\n\n      if (Array.isArray(value)) {\n        fixed[name] = value.map(i => {\n          if (typeof i === 'object' && i.toJSON) {\n            return i.toJSON(null, inputs)\n          } else {\n            return i\n          }\n        })\n      } else if (typeof value === 'object' && value.toJSON) {\n        fixed[name] = value.toJSON(null, inputs)\n      } else if (name === 'source') {\n        if (value == null) continue\n        let inputId = inputs.get(value.input)\n        if (inputId == null) {\n          inputId = inputsNextIndex\n          inputs.set(value.input, inputsNextIndex)\n          inputsNextIndex++\n        }\n        fixed[name] = {\n          end: value.end,\n          inputId,\n          start: value.start\n        }\n      } else {\n        fixed[name] = value\n      }\n    }\n\n    if (emitInputs) {\n      fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n    }\n\n    return fixed\n  }\n\n  toProxy() {\n    if (!this.proxyCache) {\n      this.proxyCache = new Proxy(this, this.getProxyProcessor())\n    }\n    return this.proxyCache\n  }\n\n  toString(stringifier = stringify) {\n    if (stringifier.stringify) stringifier = stringifier.stringify\n    let result = ''\n    stringifier(this, i => {\n      result += i\n    })\n    return result\n  }\n\n  warn(result, text, opts = {}) {\n    let data = { node: this }\n    for (let i in opts) data[i] = opts[i]\n    return result.warn(text, data)\n  }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'comment'\n  }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n  get variable() {\n    return this.prop.startsWith('--') || this.prop[0] === '$'\n  }\n\n  constructor(defaults) {\n    if (\n      defaults &&\n      typeof defaults.value !== 'undefined' &&\n      typeof defaults.value !== 'string'\n    ) {\n      defaults = { ...defaults, value: String(defaults.value) }\n    }\n    super(defaults)\n    this.type = 'decl'\n  }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n  return nodes.map(i => {\n    if (i.nodes) i.nodes = cleanSource(i.nodes)\n    delete i.source\n    return i\n  })\n}\n\nfunction markTreeDirty(node) {\n  node[isClean] = false\n  if (node.proxyOf.nodes) {\n    for (let i of node.proxyOf.nodes) {\n      markTreeDirty(i)\n    }\n  }\n}\n\nclass Container extends Node {\n  get first() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[0]\n  }\n\n  get last() {\n    if (!this.proxyOf.nodes) return undefined\n    return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n  }\n\n  append(...children) {\n    for (let child of children) {\n      let nodes = this.normalize(child, this.last)\n      for (let node of nodes) this.proxyOf.nodes.push(node)\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  cleanRaws(keepBetween) {\n    super.cleanRaws(keepBetween)\n    if (this.nodes) {\n      for (let node of this.nodes) node.cleanRaws(keepBetween)\n    }\n  }\n\n  each(callback) {\n    if (!this.proxyOf.nodes) return undefined\n    let iterator = this.getIterator()\n\n    let index, result\n    while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n      index = this.indexes[iterator]\n      result = callback(this.proxyOf.nodes[index], index)\n      if (result === false) break\n\n      this.indexes[iterator] += 1\n    }\n\n    delete this.indexes[iterator]\n    return result\n  }\n\n  every(condition) {\n    return this.nodes.every(condition)\n  }\n\n  getIterator() {\n    if (!this.lastEach) this.lastEach = 0\n    if (!this.indexes) this.indexes = {}\n\n    this.lastEach += 1\n    let iterator = this.lastEach\n    this.indexes[iterator] = 0\n\n    return iterator\n  }\n\n  getProxyProcessor() {\n    return {\n      get(node, prop) {\n        if (prop === 'proxyOf') {\n          return node\n        } else if (!node[prop]) {\n          return node[prop]\n        } else if (\n          prop === 'each' ||\n          (typeof prop === 'string' && prop.startsWith('walk'))\n        ) {\n          return (...args) => {\n            return node[prop](\n              ...args.map(i => {\n                if (typeof i === 'function') {\n                  return (child, index) => i(child.toProxy(), index)\n                } else {\n                  return i\n                }\n              })\n            )\n          }\n        } else if (prop === 'every' || prop === 'some') {\n          return cb => {\n            return node[prop]((child, ...other) =>\n              cb(child.toProxy(), ...other)\n            )\n          }\n        } else if (prop === 'root') {\n          return () => node.root().toProxy()\n        } else if (prop === 'nodes') {\n          return node.nodes.map(i => i.toProxy())\n        } else if (prop === 'first' || prop === 'last') {\n          return node[prop].toProxy()\n        } else {\n          return node[prop]\n        }\n      },\n\n      set(node, prop, value) {\n        if (node[prop] === value) return true\n        node[prop] = value\n        if (prop === 'name' || prop === 'params' || prop === 'selector') {\n          node.markDirty()\n        }\n        return true\n      }\n    }\n  }\n\n  index(child) {\n    if (typeof child === 'number') return child\n    if (child.proxyOf) child = child.proxyOf\n    return this.proxyOf.nodes.indexOf(child)\n  }\n\n  insertAfter(exist, add) {\n    let existIndex = this.index(exist)\n    let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex < index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  insertBefore(exist, add) {\n    let existIndex = this.index(exist)\n    let type = existIndex === 0 ? 'prepend' : false\n    let nodes = this.normalize(\n      add,\n      this.proxyOf.nodes[existIndex],\n      type\n    ).reverse()\n    existIndex = this.index(exist)\n    for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (existIndex <= index) {\n        this.indexes[id] = index + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  normalize(nodes, sample) {\n    if (typeof nodes === 'string') {\n      nodes = cleanSource(parse(nodes).nodes)\n    } else if (typeof nodes === 'undefined') {\n      nodes = []\n    } else if (Array.isArray(nodes)) {\n      nodes = nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type === 'root' && this.type !== 'document') {\n      nodes = nodes.nodes.slice(0)\n      for (let i of nodes) {\n        if (i.parent) i.parent.removeChild(i, 'ignore')\n      }\n    } else if (nodes.type) {\n      nodes = [nodes]\n    } else if (nodes.prop) {\n      if (typeof nodes.value === 'undefined') {\n        throw new Error('Value field is missed in node creation')\n      } else if (typeof nodes.value !== 'string') {\n        nodes.value = String(nodes.value)\n      }\n      nodes = [new Declaration(nodes)]\n    } else if (nodes.selector || nodes.selectors) {\n      nodes = [new Rule(nodes)]\n    } else if (nodes.name) {\n      nodes = [new AtRule(nodes)]\n    } else if (nodes.text) {\n      nodes = [new Comment(nodes)]\n    } else {\n      throw new Error('Unknown node type in node creation')\n    }\n\n    let processed = nodes.map(i => {\n      /* c8 ignore next */\n      if (!i[my]) Container.rebuild(i)\n      i = i.proxyOf\n      if (i.parent) i.parent.removeChild(i)\n      if (i[isClean]) markTreeDirty(i)\n\n      if (!i.raws) i.raws = {}\n      if (typeof i.raws.before === 'undefined') {\n        if (sample && typeof sample.raws.before !== 'undefined') {\n          i.raws.before = sample.raws.before.replace(/\\S/g, '')\n        }\n      }\n      i.parent = this.proxyOf\n      return i\n    })\n\n    return processed\n  }\n\n  prepend(...children) {\n    children = children.reverse()\n    for (let child of children) {\n      let nodes = this.normalize(child, this.first, 'prepend').reverse()\n      for (let node of nodes) this.proxyOf.nodes.unshift(node)\n      for (let id in this.indexes) {\n        this.indexes[id] = this.indexes[id] + nodes.length\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  push(child) {\n    child.parent = this\n    this.proxyOf.nodes.push(child)\n    return this\n  }\n\n  removeAll() {\n    for (let node of this.proxyOf.nodes) node.parent = undefined\n    this.proxyOf.nodes = []\n\n    this.markDirty()\n\n    return this\n  }\n\n  removeChild(child) {\n    child = this.index(child)\n    this.proxyOf.nodes[child].parent = undefined\n    this.proxyOf.nodes.splice(child, 1)\n\n    let index\n    for (let id in this.indexes) {\n      index = this.indexes[id]\n      if (index >= child) {\n        this.indexes[id] = index - 1\n      }\n    }\n\n    this.markDirty()\n\n    return this\n  }\n\n  replaceValues(pattern, opts, callback) {\n    if (!callback) {\n      callback = opts\n      opts = {}\n    }\n\n    this.walkDecls(decl => {\n      if (opts.props && !opts.props.includes(decl.prop)) return\n      if (opts.fast && !decl.value.includes(opts.fast)) return\n\n      decl.value = decl.value.replace(pattern, callback)\n    })\n\n    this.markDirty()\n\n    return this\n  }\n\n  some(condition) {\n    return this.nodes.some(condition)\n  }\n\n  walk(callback) {\n    return this.each((child, i) => {\n      let result\n      try {\n        result = callback(child, i)\n      } catch (e) {\n        throw child.addToError(e)\n      }\n      if (result !== false && child.walk) {\n        result = child.walk(callback)\n      }\n\n      return result\n    })\n  }\n\n  walkAtRules(name, callback) {\n    if (!callback) {\n      callback = name\n      return this.walk((child, i) => {\n        if (child.type === 'atrule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (name instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'atrule' && name.test(child.name)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'atrule' && child.name === name) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkComments(callback) {\n    return this.walk((child, i) => {\n      if (child.type === 'comment') {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkDecls(prop, callback) {\n    if (!callback) {\n      callback = prop\n      return this.walk((child, i) => {\n        if (child.type === 'decl') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (prop instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'decl' && prop.test(child.prop)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'decl' && child.prop === prop) {\n        return callback(child, i)\n      }\n    })\n  }\n\n  walkRules(selector, callback) {\n    if (!callback) {\n      callback = selector\n\n      return this.walk((child, i) => {\n        if (child.type === 'rule') {\n          return callback(child, i)\n        }\n      })\n    }\n    if (selector instanceof RegExp) {\n      return this.walk((child, i) => {\n        if (child.type === 'rule' && selector.test(child.selector)) {\n          return callback(child, i)\n        }\n      })\n    }\n    return this.walk((child, i) => {\n      if (child.type === 'rule' && child.selector === selector) {\n        return callback(child, i)\n      }\n    })\n  }\n}\n\nContainer.registerParse = dependant => {\n  parse = dependant\n}\n\nContainer.registerRule = dependant => {\n  Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n  AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n  Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n  if (node.type === 'atrule') {\n    Object.setPrototypeOf(node, AtRule.prototype)\n  } else if (node.type === 'rule') {\n    Object.setPrototypeOf(node, Rule.prototype)\n  } else if (node.type === 'decl') {\n    Object.setPrototypeOf(node, Declaration.prototype)\n  } else if (node.type === 'comment') {\n    Object.setPrototypeOf(node, Comment.prototype)\n  } else if (node.type === 'root') {\n    Object.setPrototypeOf(node, Root.prototype)\n  }\n\n  node[my] = true\n\n  if (node.nodes) {\n    node.nodes.forEach(child => {\n      Container.rebuild(child)\n    })\n  }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'atrule'\n  }\n\n  append(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.append(...children)\n  }\n\n  prepend(...children) {\n    if (!this.proxyOf.nodes) this.nodes = []\n    return super.prepend(...children)\n  }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n  constructor(defaults) {\n    // type needs to be passed to super, otherwise child roots won't be normalized correctly\n    super({ type: 'document', ...defaults })\n\n    if (!this.nodes) {\n      this.nodes = []\n    }\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n\n    return lazy.stringify()\n  }\n}\n\nDocument.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","// This alphabet uses `A-Za-z0-9_-` symbols.\n// The order of characters is optimized for better gzip and brotli compression.\n// References to the same file (works both for gzip and brotli):\n// `'use`, `andom`, and `rict'`\n// References to the brotli default dictionary:\n// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`\nlet urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n  return (size = defaultSize) => {\n    let id = ''\n    // A compact alternative for `for (var i = 0; i < step; i++)`.\n    let i = size | 0\n    while (i--) {\n      // `| 0` is more compact and faster than `Math.floor()`.\n      id += alphabet[(Math.random() * alphabet.length) | 0]\n    }\n    return id\n  }\n}\n\nlet nanoid = (size = 21) => {\n  let id = ''\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\n  let i = size | 0\n  while (i--) {\n    // `| 0` is more compact and faster than `Math.floor()`.\n    id += urlAlphabet[(Math.random() * 64) | 0]\n  }\n  return id\n}\n\nmodule.exports = { nanoid, customAlphabet }\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\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n  var cache = [];\n\n  return function(input) {\n    for (var i = 0; i < cache.length; i++) {\n      if (cache[i].input === input) {\n        var temp = cache[0];\n        cache[0] = cache[i];\n        cache[i] = temp;\n        return cache[0].result;\n      }\n    }\n\n    var result = f(input);\n\n    cache.unshift({\n      input,\n      result,\n    });\n\n    if (cache.length > MAX_CACHED_INPUTS) {\n      cache.pop();\n    }\n\n    return result;\n  };\n}\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 */\nvar normalize = lruMemoize(function 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  // Split the path into parts between `/` characters. This is much faster than\n  // using `.split(/\\/+/g)`.\n  var parts = [];\n  var start = 0;\n  var i = 0;\n  while (true) {\n    start = i;\n    i = path.indexOf(\"/\", start);\n    if (i === -1) {\n      parts.push(path.slice(start));\n      break;\n    } else {\n      parts.push(path.slice(start, i));\n      while (i < path.length && path[i] === \"/\") {\n        i++;\n      }\n    }\n  }\n\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\nfunction compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp\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.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;\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 compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {\n  var 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.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;\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    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” 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  //   “sourceRoot”, 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._ignoreInvalidMapping = util.getArg(aArgs, 'ignoreInvalidMapping', 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, generatorOps) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator(Object.assign(generatorOps || {}, {\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      if (this._validateMapping(generated, original, source, name) === false) {\n        return;\n      }\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      var message = '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      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message);\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      var message = 'Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      });\n\n      if (this._ignoreInvalidMapping) {\n        if (typeof console !== 'undefined' && console.warn) {\n          console.warn(message);\n        }\n        return false;\n      } else {\n        throw new Error(message)\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\nfunction SortTemplate(comparator) {\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, false) <= 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  return doQuickSort;\n}\n\nfunction cloneSort(comparator) {\n  let template = SortTemplate.toString();\n  let templateFn = new Function(`return ${template}`)();\n  return templateFn(comparator);\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 */\n\nlet sortCache = new WeakMap();\nexports.quickSort = function (ary, comparator, start = 0) {\n  let doQuickSort = sortCache.get(comparator);\n  if (doQuickSort === void 0) {\n    doQuickSort = cloneSort(comparator);\n    sortCache.set(comparator, doQuickSort);\n  }\n  doQuickSort(ary, comparator, start, 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    var boundCallback = aCallback.bind(context);\n    var names = this._names;\n    var sources = this._sources;\n    var sourceMapURL = this._sourceMapURL;\n\n    for (var i = 0, n = mappings.length; i < n; i++) {\n      var mapping = mappings[i];\n      var source = mapping.source === null ? null : sources.at(mapping.source);\n      if(source !== null) {\n        source = util.computeSourceURL(sourceRoot, source, sourceMapURL);\n      }\n      boundCallback({\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 : names.at(mapping.name)\n      });\n    }\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 */\n\nconst compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine;\nfunction sortGenerated(array, start) {\n  let l = array.length;\n  let n = array.length - start;\n  if (n <= 1) {\n    return;\n  } else if (n == 2) {\n    let a = array[start];\n    let b = array[start + 1];\n    if (compareGenerated(a, b) > 0) {\n      array[start] = b;\n      array[start + 1] = a;\n    }\n  } else if (n < 20) {\n    for (let i = start; i < l; i++) {\n      for (let j = i; j > start; j--) {\n        let a = array[j - 1];\n        let b = array[j];\n        if (compareGenerated(a, b) <= 0) {\n          break;\n        }\n        array[j - 1] = b;\n        array[j] = a;\n      }\n    }\n  } else {\n    quickSort(array, compareGenerated, start);\n  }\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    let subarrayStart = 0;\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n\n        sortGenerated(generatedMappings, subarrayStart);\n        subarrayStart = generatedMappings.length;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\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 = [];\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        // 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          let currentSource = mapping.source;\n          while (originalMappings.length <= currentSource) {\n            originalMappings.push(null);\n          }\n          if (originalMappings[currentSource] === null) {\n            originalMappings[currentSource] = [];\n          }\n          originalMappings[currentSource].push(mapping);\n        }\n      }\n    }\n\n    sortGenerated(generatedMappings, subarrayStart);\n    this.__generatedMappings = generatedMappings;\n\n    for (var i = 0; i < originalMappings.length; i++) {\n      if (originalMappings[i] != null) {\n        quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource);\n      }\n    }\n    this.__originalMappings = [].concat(...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 || 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        if(source !== null) {\n          source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        }\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","'use strict'\n\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction fromBase64(str) {\n  if (Buffer) {\n    return Buffer.from(str, 'base64').toString()\n  } else {\n    /* c8 ignore next 2 */\n    return window.atob(str)\n  }\n}\n\nclass PreviousMap {\n  constructor(css, opts) {\n    if (opts.map === false) return\n    this.loadAnnotation(css)\n    this.inline = this.startWith(this.annotation, 'data:')\n\n    let prev = opts.map ? opts.map.prev : undefined\n    let text = this.loadMap(opts.from, prev)\n    if (!this.mapFile && opts.from) {\n      this.mapFile = opts.from\n    }\n    if (this.mapFile) this.root = dirname(this.mapFile)\n    if (text) this.text = text\n  }\n\n  consumer() {\n    if (!this.consumerCache) {\n      this.consumerCache = new SourceMapConsumer(this.text)\n    }\n    return this.consumerCache\n  }\n\n  decodeInline(text) {\n    let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n    let baseUri = /^data:application\\/json;base64,/\n    let charsetUri = /^data:application\\/json;charset=utf-?8,/\n    let uri = /^data:application\\/json,/\n\n    let uriMatch = text.match(charsetUri) || text.match(uri)\n    if (uriMatch) {\n      return decodeURIComponent(text.substr(uriMatch[0].length))\n    }\n\n    let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n    if (baseUriMatch) {\n      return fromBase64(text.substr(baseUriMatch[0].length))\n    }\n\n    let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n    throw new Error('Unsupported source map encoding ' + encoding)\n  }\n\n  getAnnotationURL(sourceMapString) {\n    return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n  }\n\n  isMap(map) {\n    if (typeof map !== 'object') return false\n    return (\n      typeof map.mappings === 'string' ||\n      typeof map._mappings === 'string' ||\n      Array.isArray(map.sections)\n    )\n  }\n\n  loadAnnotation(css) {\n    let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n    if (!comments) return\n\n    // sourceMappingURLs from comments, strings, etc.\n    let start = css.lastIndexOf(comments.pop())\n    let end = css.indexOf('*/', start)\n\n    if (start > -1 && end > -1) {\n      // Locate the last sourceMappingURL to avoid pickin\n      this.annotation = this.getAnnotationURL(css.substring(start, end))\n    }\n  }\n\n  loadFile(path) {\n    this.root = dirname(path)\n    if (existsSync(path)) {\n      this.mapFile = path\n      return readFileSync(path, 'utf-8').toString().trim()\n    }\n  }\n\n  loadMap(file, prev) {\n    if (prev === false) return false\n\n    if (prev) {\n      if (typeof prev === 'string') {\n        return prev\n      } else if (typeof prev === 'function') {\n        let prevPath = prev(file)\n        if (prevPath) {\n          let map = this.loadFile(prevPath)\n          if (!map) {\n            throw new Error(\n              'Unable to load previous source map: ' + prevPath.toString()\n            )\n          }\n          return map\n        }\n      } else if (prev instanceof SourceMapConsumer) {\n        return SourceMapGenerator.fromSourceMap(prev).toString()\n      } else if (prev instanceof SourceMapGenerator) {\n        return prev.toString()\n      } else if (this.isMap(prev)) {\n        return JSON.stringify(prev)\n      } else {\n        throw new Error(\n          'Unsupported previous source map format: ' + prev.toString()\n        )\n      }\n    } else if (this.inline) {\n      return this.decodeInline(this.annotation)\n    } else if (this.annotation) {\n      let map = this.annotation\n      if (file) map = join(dirname(file), map)\n      return this.loadFile(map)\n    }\n  }\n\n  startWith(string, start) {\n    if (!string) return false\n    return string.substr(0, start.length) === start\n  }\n\n  withContent() {\n    return !!(\n      this.consumer().sourcesContent &&\n      this.consumer().sourcesContent.length > 0\n    )\n  }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet lineToIndexCache = Symbol('lineToIndexCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nfunction getLineToIndex(input) {\n  if (input[lineToIndexCache]) return input[lineToIndexCache]\n  let lines = input.css.split('\\n')\n  let lineToIndex = new Array(lines.length)\n  let prevIndex = 0\n\n  for (let i = 0, l = lines.length; i < l; i++) {\n    lineToIndex[i] = prevIndex\n    prevIndex += lines[i].length + 1\n  }\n\n  input[lineToIndexCache] = lineToIndex\n  return lineToIndex\n}\n\nclass Input {\n  get from() {\n    return this.file || this.id\n  }\n\n  constructor(css, opts = {}) {\n    if (\n      css === null ||\n      typeof css === 'undefined' ||\n      (typeof css === 'object' && !css.toString)\n    ) {\n      throw new Error(`PostCSS received ${css} instead of CSS string`)\n    }\n\n    this.css = css.toString()\n\n    if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n      this.hasBOM = true\n      this.css = this.css.slice(1)\n    } else {\n      this.hasBOM = false\n    }\n\n    this.document = this.css\n    if (opts.document) this.document = opts.document.toString()\n\n    if (opts.from) {\n      if (\n        !pathAvailable ||\n        /^\\w+:\\/\\//.test(opts.from) ||\n        isAbsolute(opts.from)\n      ) {\n        this.file = opts.from\n      } else {\n        this.file = resolve(opts.from)\n      }\n    }\n\n    if (pathAvailable && sourceMapAvailable) {\n      let map = new PreviousMap(this.css, opts)\n      if (map.text) {\n        this.map = map\n        let file = map.consumer().file\n        if (!this.file && file) this.file = this.mapResolve(file)\n      }\n    }\n\n    if (!this.file) {\n      this.id = '<input css ' + nanoid(6) + '>'\n    }\n    if (this.map) this.map.file = this.from\n  }\n\n  error(message, line, column, opts = {}) {\n    let endColumn, endLine, endOffset, offset, result\n\n    if (line && typeof line === 'object') {\n      let start = line\n      let end = column\n      if (typeof start.offset === 'number') {\n        offset = start.offset\n        let pos = this.fromOffset(offset)\n        line = pos.line\n        column = pos.col\n      } else {\n        line = start.line\n        column = start.column\n        offset = this.fromLineAndColumn(line, column)\n      }\n      if (typeof end.offset === 'number') {\n        endOffset = end.offset\n        let pos = this.fromOffset(endOffset)\n        endLine = pos.line\n        endColumn = pos.col\n      } else {\n        endLine = end.line\n        endColumn = end.column\n        endOffset = this.fromLineAndColumn(end.line, end.column)\n      }\n    } else if (!column) {\n      offset = line\n      let pos = this.fromOffset(offset)\n      line = pos.line\n      column = pos.col\n    } else {\n      offset = this.fromLineAndColumn(line, column)\n    }\n\n    let origin = this.origin(line, column, endLine, endColumn)\n    if (origin) {\n      result = new CssSyntaxError(\n        message,\n        origin.endLine === undefined\n          ? origin.line\n          : { column: origin.column, line: origin.line },\n        origin.endLine === undefined\n          ? origin.column\n          : { column: origin.endColumn, line: origin.endLine },\n        origin.source,\n        origin.file,\n        opts.plugin\n      )\n    } else {\n      result = new CssSyntaxError(\n        message,\n        endLine === undefined ? line : { column, line },\n        endLine === undefined ? column : { column: endColumn, line: endLine },\n        this.css,\n        this.file,\n        opts.plugin\n      )\n    }\n\n    result.input = { column, endColumn, endLine, endOffset, line, offset, source: this.css }\n    if (this.file) {\n      if (pathToFileURL) {\n        result.input.url = pathToFileURL(this.file).toString()\n      }\n      result.input.file = this.file\n    }\n\n    return result\n  }\n\n  fromLineAndColumn(line, column) {\n    let lineToIndex = getLineToIndex(this)\n    let index = lineToIndex[line - 1]\n    return index + column - 1\n  }\n\n  fromOffset(offset) {\n    let lineToIndex = getLineToIndex(this)\n    let lastLine = lineToIndex[lineToIndex.length - 1]\n\n    let min = 0\n    if (offset >= lastLine) {\n      min = lineToIndex.length - 1\n    } else {\n      let max = lineToIndex.length - 2\n      let mid\n      while (min < max) {\n        mid = min + ((max - min) >> 1)\n        if (offset < lineToIndex[mid]) {\n          max = mid - 1\n        } else if (offset >= lineToIndex[mid + 1]) {\n          min = mid + 1\n        } else {\n          min = mid\n          break\n        }\n      }\n    }\n    return {\n      col: offset - lineToIndex[min] + 1,\n      line: min + 1\n    }\n  }\n\n  mapResolve(file) {\n    if (/^\\w+:\\/\\//.test(file)) {\n      return file\n    }\n    return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n  }\n\n  origin(line, column, endLine, endColumn) {\n    if (!this.map) return false\n    let consumer = this.map.consumer()\n\n    let from = consumer.originalPositionFor({ column, line })\n    if (!from.source) return false\n\n    let to\n    if (typeof endLine === 'number') {\n      to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n    }\n\n    let fromUrl\n\n    if (isAbsolute(from.source)) {\n      fromUrl = pathToFileURL(from.source)\n    } else {\n      fromUrl = new URL(\n        from.source,\n        this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n      )\n    }\n\n    let result = {\n      column: from.column,\n      endColumn: to && to.column,\n      endLine: to && to.line,\n      line: from.line,\n      url: fromUrl.toString()\n    }\n\n    if (fromUrl.protocol === 'file:') {\n      if (fileURLToPath) {\n        result.file = fileURLToPath(fromUrl)\n      } else {\n        /* c8 ignore next 2 */\n        throw new Error(`file: protocol is not available in this PostCSS build`)\n      }\n    }\n\n    let source = consumer.sourceContentFor(from.source)\n    if (source) result.source = source\n\n    return result\n  }\n\n  toJSON() {\n    let json = {}\n    for (let name of ['hasBOM', 'css', 'file', 'id']) {\n      if (this[name] != null) {\n        json[name] = this[name]\n      }\n    }\n    if (this.map) {\n      json.map = { ...this.map }\n      if (json.map.consumerCache) {\n        json.map.consumerCache = undefined\n      }\n    }\n    return json\n  }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n  terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'root'\n    if (!this.nodes) this.nodes = []\n  }\n\n  normalize(child, sample, type) {\n    let nodes = super.normalize(child)\n\n    if (sample) {\n      if (type === 'prepend') {\n        if (this.nodes.length > 1) {\n          sample.raws.before = this.nodes[1].raws.before\n        } else {\n          delete sample.raws.before\n        }\n      } else if (this.first !== sample) {\n        for (let node of nodes) {\n          node.raws.before = sample.raws.before\n        }\n      }\n    }\n\n    return nodes\n  }\n\n  removeChild(child, ignore) {\n    let index = this.index(child)\n\n    if (!ignore && index === 0 && this.nodes.length > 1) {\n      this.nodes[1].raws.before = this.nodes[index].raws.before\n    }\n\n    return super.removeChild(child)\n  }\n\n  toResult(opts = {}) {\n    let lazy = new LazyResult(new Processor(), this, opts)\n    return lazy.stringify()\n  }\n}\n\nRoot.registerLazyResult = dependant => {\n  LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n  Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet list = {\n  comma(string) {\n    return list.split(string, [','], true)\n  },\n\n  space(string) {\n    let spaces = [' ', '\\n', '\\t']\n    return list.split(string, spaces)\n  },\n\n  split(string, separators, last) {\n    let array = []\n    let current = ''\n    let split = false\n\n    let func = 0\n    let inQuote = false\n    let prevQuote = ''\n    let escape = false\n\n    for (let letter of string) {\n      if (escape) {\n        escape = false\n      } else if (letter === '\\\\') {\n        escape = true\n      } else if (inQuote) {\n        if (letter === prevQuote) {\n          inQuote = false\n        }\n      } else if (letter === '\"' || letter === \"'\") {\n        inQuote = true\n        prevQuote = letter\n      } else if (letter === '(') {\n        func += 1\n      } else if (letter === ')') {\n        if (func > 0) func -= 1\n      } else if (func === 0) {\n        if (separators.includes(letter)) split = true\n      }\n\n      if (split) {\n        if (current !== '') array.push(current.trim())\n        current = ''\n        split = false\n      } else {\n        current += letter\n      }\n    }\n\n    if (last || current !== '') array.push(current.trim())\n    return array\n  }\n}\n\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n  get selectors() {\n    return list.comma(this.selector)\n  }\n\n  set selectors(values) {\n    let match = this.selector ? this.selector.match(/,\\s*/) : null\n    let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n    this.selector = values.join(sep)\n  }\n\n  constructor(defaults) {\n    super(defaults)\n    this.type = 'rule'\n    if (!this.nodes) this.nodes = []\n  }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n  if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n  let { inputs: ownInputs, ...defaults } = json\n  if (ownInputs) {\n    inputs = []\n    for (let input of ownInputs) {\n      let inputHydrated = { ...input, __proto__: Input.prototype }\n      if (inputHydrated.map) {\n        inputHydrated.map = {\n          ...inputHydrated.map,\n          __proto__: PreviousMap.prototype\n        }\n      }\n      inputs.push(inputHydrated)\n    }\n  }\n  if (defaults.nodes) {\n    defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n  }\n  if (defaults.source) {\n    let { inputId, ...source } = defaults.source\n    defaults.source = source\n    if (inputId != null) {\n      defaults.source.input = inputs[inputId]\n    }\n  }\n  if (defaults.type === 'root') {\n    return new Root(defaults)\n  } else if (defaults.type === 'decl') {\n    return new Declaration(defaults)\n  } else if (defaults.type === 'rule') {\n    return new Rule(defaults)\n  } else if (defaults.type === 'comment') {\n    return new Comment(defaults)\n  } else if (defaults.type === 'atrule') {\n    return new AtRule(defaults)\n  } else {\n    throw new Error('Unknown node type: ' + json.type)\n  }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n  constructor(stringify, root, opts, cssString) {\n    this.stringify = stringify\n    this.mapOpts = opts.map || {}\n    this.root = root\n    this.opts = opts\n    this.css = cssString\n    this.originalCSS = cssString\n    this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n    this.memoizedFileURLs = new Map()\n    this.memoizedPaths = new Map()\n    this.memoizedURLs = new Map()\n  }\n\n  addAnnotation() {\n    let content\n\n    if (this.isInline()) {\n      content =\n        'data:application/json;base64,' + this.toBase64(this.map.toString())\n    } else if (typeof this.mapOpts.annotation === 'string') {\n      content = this.mapOpts.annotation\n    } else if (typeof this.mapOpts.annotation === 'function') {\n      content = this.mapOpts.annotation(this.opts.to, this.root)\n    } else {\n      content = this.outputFile() + '.map'\n    }\n    let eol = '\\n'\n    if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n    this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n  }\n\n  applyPrevMaps() {\n    for (let prev of this.previous()) {\n      let from = this.toUrl(this.path(prev.file))\n      let root = prev.root || dirname(prev.file)\n      let map\n\n      if (this.mapOpts.sourcesContent === false) {\n        map = new SourceMapConsumer(prev.text)\n        if (map.sourcesContent) {\n          map.sourcesContent = null\n        }\n      } else {\n        map = prev.consumer()\n      }\n\n      this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n    }\n  }\n\n  clearAnnotation() {\n    if (this.mapOpts.annotation === false) return\n\n    if (this.root) {\n      let node\n      for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n        node = this.root.nodes[i]\n        if (node.type !== 'comment') continue\n        if (node.text.startsWith('# sourceMappingURL=')) {\n          this.root.removeChild(i)\n        }\n      }\n    } else if (this.css) {\n      this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n    }\n  }\n\n  generate() {\n    this.clearAnnotation()\n    if (pathAvailable && sourceMapAvailable && this.isMap()) {\n      return this.generateMap()\n    } else {\n      let result = ''\n      this.stringify(this.root, i => {\n        result += i\n      })\n      return [result]\n    }\n  }\n\n  generateMap() {\n    if (this.root) {\n      this.generateString()\n    } else if (this.previous().length === 1) {\n      let prev = this.previous()[0].consumer()\n      prev.file = this.outputFile()\n      this.map = SourceMapGenerator.fromSourceMap(prev, {\n        ignoreInvalidMapping: true\n      })\n    } else {\n      this.map = new SourceMapGenerator({\n        file: this.outputFile(),\n        ignoreInvalidMapping: true\n      })\n      this.map.addMapping({\n        generated: { column: 0, line: 1 },\n        original: { column: 0, line: 1 },\n        source: this.opts.from\n          ? this.toUrl(this.path(this.opts.from))\n          : '<no source>'\n      })\n    }\n\n    if (this.isSourcesContent()) this.setSourcesContent()\n    if (this.root && this.previous().length > 0) this.applyPrevMaps()\n    if (this.isAnnotation()) this.addAnnotation()\n\n    if (this.isInline()) {\n      return [this.css]\n    } else {\n      return [this.css, this.map]\n    }\n  }\n\n  generateString() {\n    this.css = ''\n    this.map = new SourceMapGenerator({\n      file: this.outputFile(),\n      ignoreInvalidMapping: true\n    })\n\n    let line = 1\n    let column = 1\n\n    let noSource = '<no source>'\n    let mapping = {\n      generated: { column: 0, line: 0 },\n      original: { column: 0, line: 0 },\n      source: ''\n    }\n\n    let last, lines\n    this.stringify(this.root, (str, node, type) => {\n      this.css += str\n\n      if (node && type !== 'end') {\n        mapping.generated.line = line\n        mapping.generated.column = column - 1\n        if (node.source && node.source.start) {\n          mapping.source = this.sourcePath(node)\n          mapping.original.line = node.source.start.line\n          mapping.original.column = node.source.start.column - 1\n          this.map.addMapping(mapping)\n        } else {\n          mapping.source = noSource\n          mapping.original.line = 1\n          mapping.original.column = 0\n          this.map.addMapping(mapping)\n        }\n      }\n\n      lines = str.match(/\\n/g)\n      if (lines) {\n        line += lines.length\n        last = str.lastIndexOf('\\n')\n        column = str.length - last\n      } else {\n        column += str.length\n      }\n\n      if (node && type !== 'start') {\n        let p = node.parent || { raws: {} }\n        let childless =\n          node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n        if (!childless || node !== p.last || p.raws.semicolon) {\n          if (node.source && node.source.end) {\n            mapping.source = this.sourcePath(node)\n            mapping.original.line = node.source.end.line\n            mapping.original.column = node.source.end.column - 1\n            mapping.generated.line = line\n            mapping.generated.column = column - 2\n            this.map.addMapping(mapping)\n          } else {\n            mapping.source = noSource\n            mapping.original.line = 1\n            mapping.original.column = 0\n            mapping.generated.line = line\n            mapping.generated.column = column - 1\n            this.map.addMapping(mapping)\n          }\n        }\n      }\n    })\n  }\n\n  isAnnotation() {\n    if (this.isInline()) {\n      return true\n    }\n    if (typeof this.mapOpts.annotation !== 'undefined') {\n      return this.mapOpts.annotation\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.annotation)\n    }\n    return true\n  }\n\n  isInline() {\n    if (typeof this.mapOpts.inline !== 'undefined') {\n      return this.mapOpts.inline\n    }\n\n    let annotation = this.mapOpts.annotation\n    if (typeof annotation !== 'undefined' && annotation !== true) {\n      return false\n    }\n\n    if (this.previous().length) {\n      return this.previous().some(i => i.inline)\n    }\n    return true\n  }\n\n  isMap() {\n    if (typeof this.opts.map !== 'undefined') {\n      return !!this.opts.map\n    }\n    return this.previous().length > 0\n  }\n\n  isSourcesContent() {\n    if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n      return this.mapOpts.sourcesContent\n    }\n    if (this.previous().length) {\n      return this.previous().some(i => i.withContent())\n    }\n    return true\n  }\n\n  outputFile() {\n    if (this.opts.to) {\n      return this.path(this.opts.to)\n    } else if (this.opts.from) {\n      return this.path(this.opts.from)\n    } else {\n      return 'to.css'\n    }\n  }\n\n  path(file) {\n    if (this.mapOpts.absolute) return file\n    if (file.charCodeAt(0) === 60 /* `<` */) return file\n    if (/^\\w+:\\/\\//.test(file)) return file\n    let cached = this.memoizedPaths.get(file)\n    if (cached) return cached\n\n    let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n    if (typeof this.mapOpts.annotation === 'string') {\n      from = dirname(resolve(from, this.mapOpts.annotation))\n    }\n\n    let path = relative(from, file)\n    this.memoizedPaths.set(file, path)\n\n    return path\n  }\n\n  previous() {\n    if (!this.previousMaps) {\n      this.previousMaps = []\n      if (this.root) {\n        this.root.walk(node => {\n          if (node.source && node.source.input.map) {\n            let map = node.source.input.map\n            if (!this.previousMaps.includes(map)) {\n              this.previousMaps.push(map)\n            }\n          }\n        })\n      } else {\n        let input = new Input(this.originalCSS, this.opts)\n        if (input.map) this.previousMaps.push(input.map)\n      }\n    }\n\n    return this.previousMaps\n  }\n\n  setSourcesContent() {\n    let already = {}\n    if (this.root) {\n      this.root.walk(node => {\n        if (node.source) {\n          let from = node.source.input.from\n          if (from && !already[from]) {\n            already[from] = true\n            let fromUrl = this.usesFileUrls\n              ? this.toFileUrl(from)\n              : this.toUrl(this.path(from))\n            this.map.setSourceContent(fromUrl, node.source.input.css)\n          }\n        }\n      })\n    } else if (this.css) {\n      let from = this.opts.from\n        ? this.toUrl(this.path(this.opts.from))\n        : '<no source>'\n      this.map.setSourceContent(from, this.css)\n    }\n  }\n\n  sourcePath(node) {\n    if (this.mapOpts.from) {\n      return this.toUrl(this.mapOpts.from)\n    } else if (this.usesFileUrls) {\n      return this.toFileUrl(node.source.input.from)\n    } else {\n      return this.toUrl(this.path(node.source.input.from))\n    }\n  }\n\n  toBase64(str) {\n    if (Buffer) {\n      return Buffer.from(str).toString('base64')\n    } else {\n      return window.btoa(unescape(encodeURIComponent(str)))\n    }\n  }\n\n  toFileUrl(path) {\n    let cached = this.memoizedFileURLs.get(path)\n    if (cached) return cached\n\n    if (pathToFileURL) {\n      let fileURL = pathToFileURL(path).toString()\n      this.memoizedFileURLs.set(path, fileURL)\n\n      return fileURL\n    } else {\n      throw new Error(\n        '`map.absolute` option is not available in this PostCSS build'\n      )\n    }\n  }\n\n  toUrl(path) {\n    let cached = this.memoizedURLs.get(path)\n    if (cached) return cached\n\n    if (sep === '\\\\') {\n      path = path.replace(/\\\\/g, '/')\n    }\n\n    let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n    this.memoizedURLs.set(path, url)\n\n    return url\n  }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n  empty: true,\n  space: true\n}\n\nfunction findLastWithPosition(tokens) {\n  for (let i = tokens.length - 1; i >= 0; i--) {\n    let token = tokens[i]\n    let pos = token[3] || token[2]\n    if (pos) return pos\n  }\n}\n\nclass Parser {\n  constructor(input) {\n    this.input = input\n\n    this.root = new Root()\n    this.current = this.root\n    this.spaces = ''\n    this.semicolon = false\n\n    this.createTokenizer()\n    this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n  }\n\n  atrule(token) {\n    let node = new AtRule()\n    node.name = token[1].slice(1)\n    if (node.name === '') {\n      this.unnamedAtrule(node, token)\n    }\n    this.init(node, token[2])\n\n    let type\n    let prev\n    let shift\n    let last = false\n    let open = false\n    let params = []\n    let brackets = []\n\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n      type = token[0]\n\n      if (type === '(' || type === '[') {\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (type === '{' && brackets.length > 0) {\n        brackets.push('}')\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n      }\n\n      if (brackets.length === 0) {\n        if (type === ';') {\n          node.source.end = this.getPosition(token[2])\n          node.source.end.offset++\n          this.semicolon = true\n          break\n        } else if (type === '{') {\n          open = true\n          break\n        } else if (type === '}') {\n          if (params.length > 0) {\n            shift = params.length - 1\n            prev = params[shift]\n            while (prev && prev[0] === 'space') {\n              prev = params[--shift]\n            }\n            if (prev) {\n              node.source.end = this.getPosition(prev[3] || prev[2])\n              node.source.end.offset++\n            }\n          }\n          this.end(token)\n          break\n        } else {\n          params.push(token)\n        }\n      } else {\n        params.push(token)\n      }\n\n      if (this.tokenizer.endOfFile()) {\n        last = true\n        break\n      }\n    }\n\n    node.raws.between = this.spacesAndCommentsFromEnd(params)\n    if (params.length) {\n      node.raws.afterName = this.spacesAndCommentsFromStart(params)\n      this.raw(node, 'params', params)\n      if (last) {\n        token = params[params.length - 1]\n        node.source.end = this.getPosition(token[3] || token[2])\n        node.source.end.offset++\n        this.spaces = node.raws.between\n        node.raws.between = ''\n      }\n    } else {\n      node.raws.afterName = ''\n      node.params = ''\n    }\n\n    if (open) {\n      node.nodes = []\n      this.current = node\n    }\n  }\n\n  checkMissedSemicolon(tokens) {\n    let colon = this.colon(tokens)\n    if (colon === false) return\n\n    let founded = 0\n    let token\n    for (let j = colon - 1; j >= 0; j--) {\n      token = tokens[j]\n      if (token[0] !== 'space') {\n        founded += 1\n        if (founded === 2) break\n      }\n    }\n    // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n    // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n    // And because we need it after that one we do +1 to get the next one.\n    throw this.input.error(\n      'Missed semicolon',\n      token[0] === 'word' ? token[3] + 1 : token[2]\n    )\n  }\n\n  colon(tokens) {\n    let brackets = 0\n    let prev, token, type\n    for (let [i, element] of tokens.entries()) {\n      token = element\n      type = token[0]\n\n      if (type === '(') {\n        brackets += 1\n      }\n      if (type === ')') {\n        brackets -= 1\n      }\n      if (brackets === 0 && type === ':') {\n        if (!prev) {\n          this.doubleColon(token)\n        } else if (prev[0] === 'word' && prev[1] === 'progid') {\n          continue\n        } else {\n          return i\n        }\n      }\n\n      prev = token\n    }\n    return false\n  }\n\n  comment(token) {\n    let node = new Comment()\n    this.init(node, token[2])\n    node.source.end = this.getPosition(token[3] || token[2])\n    node.source.end.offset++\n\n    let text = token[1].slice(2, -2)\n    if (/^\\s*$/.test(text)) {\n      node.text = ''\n      node.raws.left = text\n      node.raws.right = ''\n    } else {\n      let match = text.match(/^(\\s*)([^]*\\S)(\\s*)$/)\n      node.text = match[2]\n      node.raws.left = match[1]\n      node.raws.right = match[3]\n    }\n  }\n\n  createTokenizer() {\n    this.tokenizer = tokenizer(this.input)\n  }\n\n  decl(tokens, customProperty) {\n    let node = new Declaration()\n    this.init(node, tokens[0][2])\n\n    let last = tokens[tokens.length - 1]\n    if (last[0] === ';') {\n      this.semicolon = true\n      tokens.pop()\n    }\n\n    node.source.end = this.getPosition(\n      last[3] || last[2] || findLastWithPosition(tokens)\n    )\n    node.source.end.offset++\n\n    while (tokens[0][0] !== 'word') {\n      if (tokens.length === 1) this.unknownWord(tokens)\n      node.raws.before += tokens.shift()[1]\n    }\n    node.source.start = this.getPosition(tokens[0][2])\n\n    node.prop = ''\n    while (tokens.length) {\n      let type = tokens[0][0]\n      if (type === ':' || type === 'space' || type === 'comment') {\n        break\n      }\n      node.prop += tokens.shift()[1]\n    }\n\n    node.raws.between = ''\n\n    let token\n    while (tokens.length) {\n      token = tokens.shift()\n\n      if (token[0] === ':') {\n        node.raws.between += token[1]\n        break\n      } else {\n        if (token[0] === 'word' && /\\w/.test(token[1])) {\n          this.unknownWord([token])\n        }\n        node.raws.between += token[1]\n      }\n    }\n\n    if (node.prop[0] === '_' || node.prop[0] === '*') {\n      node.raws.before += node.prop[0]\n      node.prop = node.prop.slice(1)\n    }\n\n    let firstSpaces = []\n    let next\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      firstSpaces.push(tokens.shift())\n    }\n\n    this.precheckMissedSemicolon(tokens)\n\n    for (let i = tokens.length - 1; i >= 0; i--) {\n      token = tokens[i]\n      if (token[1].toLowerCase() === '!important') {\n        node.important = true\n        let string = this.stringFrom(tokens, i)\n        string = this.spacesFromEnd(tokens) + string\n        if (string !== ' !important') node.raws.important = string\n        break\n      } else if (token[1].toLowerCase() === 'important') {\n        let cache = tokens.slice(0)\n        let str = ''\n        for (let j = i; j > 0; j--) {\n          let type = cache[j][0]\n          if (str.trim().startsWith('!') && type !== 'space') {\n            break\n          }\n          str = cache.pop()[1] + str\n        }\n        if (str.trim().startsWith('!')) {\n          node.important = true\n          node.raws.important = str\n          tokens = cache\n        }\n      }\n\n      if (token[0] !== 'space' && token[0] !== 'comment') {\n        break\n      }\n    }\n\n    let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n    if (hasWord) {\n      node.raws.between += firstSpaces.map(i => i[1]).join('')\n      firstSpaces = []\n    }\n    this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n    if (node.value.includes(':') && !customProperty) {\n      this.checkMissedSemicolon(tokens)\n    }\n  }\n\n  doubleColon(token) {\n    throw this.input.error(\n      'Double colon',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n\n  emptyRule(token) {\n    let node = new Rule()\n    this.init(node, token[2])\n    node.selector = ''\n    node.raws.between = ''\n    this.current = node\n  }\n\n  end(token) {\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.semicolon = false\n\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.spaces = ''\n\n    if (this.current.parent) {\n      this.current.source.end = this.getPosition(token[2])\n      this.current.source.end.offset++\n      this.current = this.current.parent\n    } else {\n      this.unexpectedClose(token)\n    }\n  }\n\n  endFile() {\n    if (this.current.parent) this.unclosedBlock()\n    if (this.current.nodes && this.current.nodes.length) {\n      this.current.raws.semicolon = this.semicolon\n    }\n    this.current.raws.after = (this.current.raws.after || '') + this.spaces\n    this.root.source.end = this.getPosition(this.tokenizer.position())\n  }\n\n  freeSemicolon(token) {\n    this.spaces += token[1]\n    if (this.current.nodes) {\n      let prev = this.current.nodes[this.current.nodes.length - 1]\n      if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n        prev.raws.ownSemicolon = this.spaces\n        this.spaces = ''\n        prev.source.end = this.getPosition(token[2])\n        prev.source.end.offset += prev.raws.ownSemicolon.length\n      }\n    }\n  }\n\n  // Helpers\n\n  getPosition(offset) {\n    let pos = this.input.fromOffset(offset)\n    return {\n      column: pos.col,\n      line: pos.line,\n      offset\n    }\n  }\n\n  init(node, offset) {\n    this.current.push(node)\n    node.source = {\n      input: this.input,\n      start: this.getPosition(offset)\n    }\n    node.raws.before = this.spaces\n    this.spaces = ''\n    if (node.type !== 'comment') this.semicolon = false\n  }\n\n  other(start) {\n    let end = false\n    let type = null\n    let colon = false\n    let bracket = null\n    let brackets = []\n    let customProperty = start[1].startsWith('--')\n\n    let tokens = []\n    let token = start\n    while (token) {\n      type = token[0]\n      tokens.push(token)\n\n      if (type === '(' || type === '[') {\n        if (!bracket) bracket = token\n        brackets.push(type === '(' ? ')' : ']')\n      } else if (customProperty && colon && type === '{') {\n        if (!bracket) bracket = token\n        brackets.push('}')\n      } else if (brackets.length === 0) {\n        if (type === ';') {\n          if (colon) {\n            this.decl(tokens, customProperty)\n            return\n          } else {\n            break\n          }\n        } else if (type === '{') {\n          this.rule(tokens)\n          return\n        } else if (type === '}') {\n          this.tokenizer.back(tokens.pop())\n          end = true\n          break\n        } else if (type === ':') {\n          colon = true\n        }\n      } else if (type === brackets[brackets.length - 1]) {\n        brackets.pop()\n        if (brackets.length === 0) bracket = null\n      }\n\n      token = this.tokenizer.nextToken()\n    }\n\n    if (this.tokenizer.endOfFile()) end = true\n    if (brackets.length > 0) this.unclosedBracket(bracket)\n\n    if (end && colon) {\n      if (!customProperty) {\n        while (tokens.length) {\n          token = tokens[tokens.length - 1][0]\n          if (token !== 'space' && token !== 'comment') break\n          this.tokenizer.back(tokens.pop())\n        }\n      }\n      this.decl(tokens, customProperty)\n    } else {\n      this.unknownWord(tokens)\n    }\n  }\n\n  parse() {\n    let token\n    while (!this.tokenizer.endOfFile()) {\n      token = this.tokenizer.nextToken()\n\n      switch (token[0]) {\n        case 'space':\n          this.spaces += token[1]\n          break\n\n        case ';':\n          this.freeSemicolon(token)\n          break\n\n        case '}':\n          this.end(token)\n          break\n\n        case 'comment':\n          this.comment(token)\n          break\n\n        case 'at-word':\n          this.atrule(token)\n          break\n\n        case '{':\n          this.emptyRule(token)\n          break\n\n        default:\n          this.other(token)\n          break\n      }\n    }\n    this.endFile()\n  }\n\n  precheckMissedSemicolon(/* tokens */) {\n    // Hook for Safe Parser\n  }\n\n  raw(node, prop, tokens, customProperty) {\n    let token, type\n    let length = tokens.length\n    let value = ''\n    let clean = true\n    let next, prev\n\n    for (let i = 0; i < length; i += 1) {\n      token = tokens[i]\n      type = token[0]\n      if (type === 'space' && i === length - 1 && !customProperty) {\n        clean = false\n      } else if (type === 'comment') {\n        prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n        next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n        if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n          if (value.slice(-1) === ',') {\n            clean = false\n          } else {\n            value += token[1]\n          }\n        } else {\n          clean = false\n        }\n      } else {\n        value += token[1]\n      }\n    }\n    if (!clean) {\n      let raw = tokens.reduce((all, i) => all + i[1], '')\n      node.raws[prop] = { raw, value }\n    }\n    node[prop] = value\n  }\n\n  rule(tokens) {\n    tokens.pop()\n\n    let node = new Rule()\n    this.init(node, tokens[0][2])\n\n    node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n    this.raw(node, 'selector', tokens)\n    this.current = node\n  }\n\n  spacesAndCommentsFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space' && lastTokenType !== 'comment') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  // Errors\n\n  spacesAndCommentsFromStart(tokens) {\n    let next\n    let spaces = ''\n    while (tokens.length) {\n      next = tokens[0][0]\n      if (next !== 'space' && next !== 'comment') break\n      spaces += tokens.shift()[1]\n    }\n    return spaces\n  }\n\n  spacesFromEnd(tokens) {\n    let lastTokenType\n    let spaces = ''\n    while (tokens.length) {\n      lastTokenType = tokens[tokens.length - 1][0]\n      if (lastTokenType !== 'space') break\n      spaces = tokens.pop()[1] + spaces\n    }\n    return spaces\n  }\n\n  stringFrom(tokens, from) {\n    let result = ''\n    for (let i = from; i < tokens.length; i++) {\n      result += tokens[i][1]\n    }\n    tokens.splice(from, tokens.length - from)\n    return result\n  }\n\n  unclosedBlock() {\n    let pos = this.current.source.start\n    throw this.input.error('Unclosed block', pos.line, pos.column)\n  }\n\n  unclosedBracket(bracket) {\n    throw this.input.error(\n      'Unclosed bracket',\n      { offset: bracket[2] },\n      { offset: bracket[2] + 1 }\n    )\n  }\n\n  unexpectedClose(token) {\n    throw this.input.error(\n      'Unexpected }',\n      { offset: token[2] },\n      { offset: token[2] + 1 }\n    )\n  }\n\n  unknownWord(tokens) {\n    throw this.input.error(\n      'Unknown word ' + tokens[0][1],\n      { offset: tokens[0][2] },\n      { offset: tokens[0][2] + tokens[0][1].length }\n    )\n  }\n\n  unnamedAtrule(node, token) {\n    throw this.input.error(\n      'At-rule without name',\n      { offset: token[2] },\n      { offset: token[2] + token[1].length }\n    )\n  }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n  let input = new Input(css, opts)\n  let parser = new Parser(input)\n  try {\n    parser.parse()\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (e.name === 'CssSyntaxError' && opts && opts.from) {\n        if (/\\.scss$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse SCSS with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-scss parser'\n        } else if (/\\.sass/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Sass with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-sass parser'\n        } else if (/\\.less$/i.test(opts.from)) {\n          e.message +=\n            '\\nYou tried to parse Less with ' +\n            'the standard CSS parser; ' +\n            'try again with the postcss-less parser'\n        }\n      }\n    }\n    throw e\n  }\n\n  return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nclass Warning {\n  constructor(text, opts = {}) {\n    this.type = 'warning'\n    this.text = text\n\n    if (opts.node && opts.node.source) {\n      let range = opts.node.rangeBy(opts)\n      this.line = range.start.line\n      this.column = range.start.column\n      this.endLine = range.end.line\n      this.endColumn = range.end.column\n    }\n\n    for (let opt in opts) this[opt] = opts[opt]\n  }\n\n  toString() {\n    if (this.node) {\n      return this.node.error(this.text, {\n        index: this.index,\n        plugin: this.plugin,\n        word: this.word\n      }).message\n    }\n\n    if (this.plugin) {\n      return this.plugin + ': ' + this.text\n    }\n\n    return this.text\n  }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n  get content() {\n    return this.css\n  }\n\n  constructor(processor, root, opts) {\n    this.processor = processor\n    this.messages = []\n    this.root = root\n    this.opts = opts\n    this.css = ''\n    this.map = undefined\n  }\n\n  toString() {\n    return this.css\n  }\n\n  warn(text, opts = {}) {\n    if (!opts.plugin) {\n      if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n        opts.plugin = this.lastPlugin.postcssPlugin\n      }\n    }\n\n    let warning = new Warning(text, opts)\n    this.messages.push(warning)\n\n    return warning\n  }\n\n  warnings() {\n    return this.messages.filter(i => i.type === 'warning')\n  }\n}\n\nmodule.exports = Result\nResult.default = Result\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n  if (printed[message]) return\n  printed[message] = true\n\n  if (typeof console !== 'undefined' && console.warn) {\n    console.warn(message)\n  }\n}\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n  atrule: 'AtRule',\n  comment: 'Comment',\n  decl: 'Declaration',\n  document: 'Document',\n  root: 'Root',\n  rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n  AtRule: true,\n  AtRuleExit: true,\n  Comment: true,\n  CommentExit: true,\n  Declaration: true,\n  DeclarationExit: true,\n  Document: true,\n  DocumentExit: true,\n  Once: true,\n  OnceExit: true,\n  postcssPlugin: true,\n  prepare: true,\n  Root: true,\n  RootExit: true,\n  Rule: true,\n  RuleExit: true\n}\n\nconst NOT_VISITORS = {\n  Once: true,\n  postcssPlugin: true,\n  prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n  return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n  let key = false\n  let type = TYPE_TO_CLASS_NAME[node.type]\n  if (node.type === 'decl') {\n    key = node.prop.toLowerCase()\n  } else if (node.type === 'atrule') {\n    key = node.name.toLowerCase()\n  }\n\n  if (key && node.append) {\n    return [\n      type,\n      type + '-' + key,\n      CHILDREN,\n      type + 'Exit',\n      type + 'Exit-' + key\n    ]\n  } else if (key) {\n    return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n  } else if (node.append) {\n    return [type, CHILDREN, type + 'Exit']\n  } else {\n    return [type, type + 'Exit']\n  }\n}\n\nfunction toStack(node) {\n  let events\n  if (node.type === 'document') {\n    events = ['Document', CHILDREN, 'DocumentExit']\n  } else if (node.type === 'root') {\n    events = ['Root', CHILDREN, 'RootExit']\n  } else {\n    events = getEvents(node)\n  }\n\n  return {\n    eventIndex: 0,\n    events,\n    iterator: 0,\n    node,\n    visitorIndex: 0,\n    visitors: []\n  }\n}\n\nfunction cleanMarks(node) {\n  node[isClean] = false\n  if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n  return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n  get content() {\n    return this.stringify().content\n  }\n\n  get css() {\n    return this.stringify().css\n  }\n\n  get map() {\n    return this.stringify().map\n  }\n\n  get messages() {\n    return this.sync().messages\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    return this.sync().root\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'LazyResult'\n  }\n\n  constructor(processor, css, opts) {\n    this.stringified = false\n    this.processed = false\n\n    let root\n    if (\n      typeof css === 'object' &&\n      css !== null &&\n      (css.type === 'root' || css.type === 'document')\n    ) {\n      root = cleanMarks(css)\n    } else if (css instanceof LazyResult || css instanceof Result) {\n      root = cleanMarks(css.root)\n      if (css.map) {\n        if (typeof opts.map === 'undefined') opts.map = {}\n        if (!opts.map.inline) opts.map.inline = false\n        opts.map.prev = css.map\n      }\n    } else {\n      let parser = parse\n      if (opts.syntax) parser = opts.syntax.parse\n      if (opts.parser) parser = opts.parser\n      if (parser.parse) parser = parser.parse\n\n      try {\n        root = parser(css, opts)\n      } catch (error) {\n        this.processed = true\n        this.error = error\n      }\n\n      if (root && !root[my]) {\n        /* c8 ignore next 2 */\n        Container.rebuild(root)\n      }\n    }\n\n    this.result = new Result(processor, root, opts)\n    this.helpers = { ...postcss, postcss, result: this.result }\n    this.plugins = this.processor.plugins.map(plugin => {\n      if (typeof plugin === 'object' && plugin.prepare) {\n        return { ...plugin, ...plugin.prepare(this.result) }\n      } else {\n        return plugin\n      }\n    })\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    if (this.processed) return Promise.resolve(this.result)\n    if (!this.processing) {\n      this.processing = this.runAsync()\n    }\n    return this.processing\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  getAsyncError() {\n    throw new Error('Use process(css).then(cb) to work with async plugins')\n  }\n\n  handleError(error, node) {\n    let plugin = this.result.lastPlugin\n    try {\n      if (node) node.addToError(error)\n      this.error = error\n      if (error.name === 'CssSyntaxError' && !error.plugin) {\n        error.plugin = plugin.postcssPlugin\n        error.setMessage()\n      } else if (plugin.postcssVersion) {\n        if (process.env.NODE_ENV !== 'production') {\n          let pluginName = plugin.postcssPlugin\n          let pluginVer = plugin.postcssVersion\n          let runtimeVer = this.result.processor.version\n          let a = pluginVer.split('.')\n          let b = runtimeVer.split('.')\n\n          if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n            // eslint-disable-next-line no-console\n            console.error(\n              'Unknown error from PostCSS plugin. Your current PostCSS ' +\n                'version is ' +\n                runtimeVer +\n                ', but ' +\n                pluginName +\n                ' uses ' +\n                pluginVer +\n                '. Perhaps this is the source of the error below.'\n            )\n          }\n        }\n      }\n    } catch (err) {\n      /* c8 ignore next 3 */\n      // eslint-disable-next-line no-console\n      if (console && console.error) console.error(err)\n    }\n    return error\n  }\n\n  prepareVisitors() {\n    this.listeners = {}\n    let add = (plugin, type, cb) => {\n      if (!this.listeners[type]) this.listeners[type] = []\n      this.listeners[type].push([plugin, cb])\n    }\n    for (let plugin of this.plugins) {\n      if (typeof plugin === 'object') {\n        for (let event in plugin) {\n          if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n            throw new Error(\n              `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n                `Try to update PostCSS (${this.processor.version} now).`\n            )\n          }\n          if (!NOT_VISITORS[event]) {\n            if (typeof plugin[event] === 'object') {\n              for (let filter in plugin[event]) {\n                if (filter === '*') {\n                  add(plugin, event, plugin[event][filter])\n                } else {\n                  add(\n                    plugin,\n                    event + '-' + filter.toLowerCase(),\n                    plugin[event][filter]\n                  )\n                }\n              }\n            } else if (typeof plugin[event] === 'function') {\n              add(plugin, event, plugin[event])\n            }\n          }\n        }\n      }\n    }\n    this.hasListener = Object.keys(this.listeners).length > 0\n  }\n\n  async runAsync() {\n    this.plugin = 0\n    for (let i = 0; i < this.plugins.length; i++) {\n      let plugin = this.plugins[i]\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        try {\n          await promise\n        } catch (error) {\n          throw this.handleError(error)\n        }\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        let stack = [toStack(root)]\n        while (stack.length > 0) {\n          let promise = this.visitTick(stack)\n          if (isPromise(promise)) {\n            try {\n              await promise\n            } catch (e) {\n              let node = stack[stack.length - 1].node\n              throw this.handleError(e, node)\n            }\n          }\n        }\n      }\n\n      if (this.listeners.OnceExit) {\n        for (let [plugin, visitor] of this.listeners.OnceExit) {\n          this.result.lastPlugin = plugin\n          try {\n            if (root.type === 'document') {\n              let roots = root.nodes.map(subRoot =>\n                visitor(subRoot, this.helpers)\n              )\n\n              await Promise.all(roots)\n            } else {\n              await visitor(root, this.helpers)\n            }\n          } catch (e) {\n            throw this.handleError(e)\n          }\n        }\n      }\n    }\n\n    this.processed = true\n    return this.stringify()\n  }\n\n  runOnRoot(plugin) {\n    this.result.lastPlugin = plugin\n    try {\n      if (typeof plugin === 'object' && plugin.Once) {\n        if (this.result.root.type === 'document') {\n          let roots = this.result.root.nodes.map(root =>\n            plugin.Once(root, this.helpers)\n          )\n\n          if (isPromise(roots[0])) {\n            return Promise.all(roots)\n          }\n\n          return roots\n        }\n\n        return plugin.Once(this.result.root, this.helpers)\n      } else if (typeof plugin === 'function') {\n        return plugin(this.result.root, this.result)\n      }\n    } catch (error) {\n      throw this.handleError(error)\n    }\n  }\n\n  stringify() {\n    if (this.error) throw this.error\n    if (this.stringified) return this.result\n    this.stringified = true\n\n    this.sync()\n\n    let opts = this.result.opts\n    let str = stringify\n    if (opts.syntax) str = opts.syntax.stringify\n    if (opts.stringifier) str = opts.stringifier\n    if (str.stringify) str = str.stringify\n\n    let map = new MapGenerator(str, this.result.root, this.result.opts)\n    let data = map.generate()\n    this.result.css = data[0]\n    this.result.map = data[1]\n\n    return this.result\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    if (this.processed) return this.result\n    this.processed = true\n\n    if (this.processing) {\n      throw this.getAsyncError()\n    }\n\n    for (let plugin of this.plugins) {\n      let promise = this.runOnRoot(plugin)\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n\n    this.prepareVisitors()\n    if (this.hasListener) {\n      let root = this.result.root\n      while (!root[isClean]) {\n        root[isClean] = true\n        this.walkSync(root)\n      }\n      if (this.listeners.OnceExit) {\n        if (root.type === 'document') {\n          for (let subRoot of root.nodes) {\n            this.visitSync(this.listeners.OnceExit, subRoot)\n          }\n        } else {\n          this.visitSync(this.listeners.OnceExit, root)\n        }\n      }\n    }\n\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this.opts)) {\n        warnOnce(\n          'Without `from` option PostCSS could generate wrong source map ' +\n            'and will not find Browserslist config. Set it to CSS file path ' +\n            'or to `undefined` to prevent this warning.'\n        )\n      }\n    }\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this.css\n  }\n\n  visitSync(visitors, node) {\n    for (let [plugin, visitor] of visitors) {\n      this.result.lastPlugin = plugin\n      let promise\n      try {\n        promise = visitor(node, this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node.proxyOf)\n      }\n      if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n        return true\n      }\n      if (isPromise(promise)) {\n        throw this.getAsyncError()\n      }\n    }\n  }\n\n  visitTick(stack) {\n    let visit = stack[stack.length - 1]\n    let { node, visitors } = visit\n\n    if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n      stack.pop()\n      return\n    }\n\n    if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n      let [plugin, visitor] = visitors[visit.visitorIndex]\n      visit.visitorIndex += 1\n      if (visit.visitorIndex === visitors.length) {\n        visit.visitors = []\n        visit.visitorIndex = 0\n      }\n      this.result.lastPlugin = plugin\n      try {\n        return visitor(node.toProxy(), this.helpers)\n      } catch (e) {\n        throw this.handleError(e, node)\n      }\n    }\n\n    if (visit.iterator !== 0) {\n      let iterator = visit.iterator\n      let child\n      while ((child = node.nodes[node.indexes[iterator]])) {\n        node.indexes[iterator] += 1\n        if (!child[isClean]) {\n          child[isClean] = true\n          stack.push(toStack(child))\n          return\n        }\n      }\n      visit.iterator = 0\n      delete node.indexes[iterator]\n    }\n\n    let events = visit.events\n    while (visit.eventIndex < events.length) {\n      let event = events[visit.eventIndex]\n      visit.eventIndex += 1\n      if (event === CHILDREN) {\n        if (node.nodes && node.nodes.length) {\n          node[isClean] = true\n          visit.iterator = node.getIterator()\n        }\n        return\n      } else if (this.listeners[event]) {\n        visit.visitors = this.listeners[event]\n        return\n      }\n    }\n    stack.pop()\n  }\n\n  walkSync(node) {\n    node[isClean] = true\n    let events = getEvents(node)\n    for (let event of events) {\n      if (event === CHILDREN) {\n        if (node.nodes) {\n          node.each(child => {\n            if (!child[isClean]) this.walkSync(child)\n          })\n        }\n      } else {\n        let visitors = this.listeners[event]\n        if (visitors) {\n          if (this.visitSync(visitors, node.toProxy())) return\n        }\n      }\n    }\n  }\n\n  warnings() {\n    return this.sync().warnings()\n  }\n}\n\nLazyResult.registerPostcss = dependant => {\n  postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nconst Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n  get content() {\n    return this.result.css\n  }\n\n  get css() {\n    return this.result.css\n  }\n\n  get map() {\n    return this.result.map\n  }\n\n  get messages() {\n    return []\n  }\n\n  get opts() {\n    return this.result.opts\n  }\n\n  get processor() {\n    return this.result.processor\n  }\n\n  get root() {\n    if (this._root) {\n      return this._root\n    }\n\n    let root\n    let parser = parse\n\n    try {\n      root = parser(this._css, this._opts)\n    } catch (error) {\n      this.error = error\n    }\n\n    if (this.error) {\n      throw this.error\n    } else {\n      this._root = root\n      return root\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'NoWorkResult'\n  }\n\n  constructor(processor, css, opts) {\n    css = css.toString()\n    this.stringified = false\n\n    this._processor = processor\n    this._css = css\n    this._opts = opts\n    this._map = undefined\n    let root\n\n    let str = stringify\n    this.result = new Result(this._processor, root, this._opts)\n    this.result.css = css\n\n    let self = this\n    Object.defineProperty(this.result, 'root', {\n      get() {\n        return self.root\n      }\n    })\n\n    let map = new MapGenerator(str, root, this._opts, css)\n    if (map.isMap()) {\n      let [generatedCSS, generatedMap] = map.generate()\n      if (generatedCSS) {\n        this.result.css = generatedCSS\n      }\n      if (generatedMap) {\n        this.result.map = generatedMap\n      }\n    } else {\n      map.clearAnnotation()\n      this.result.css = map.css\n    }\n  }\n\n  async() {\n    if (this.error) return Promise.reject(this.error)\n    return Promise.resolve(this.result)\n  }\n\n  catch(onRejected) {\n    return this.async().catch(onRejected)\n  }\n\n  finally(onFinally) {\n    return this.async().then(onFinally, onFinally)\n  }\n\n  sync() {\n    if (this.error) throw this.error\n    return this.result\n  }\n\n  then(onFulfilled, onRejected) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!('from' in this._opts)) {\n        warnOnce(\n          'Without `from` option PostCSS could generate wrong source map ' +\n            'and will not find Browserslist config. Set it to CSS file path ' +\n            'or to `undefined` to prevent this warning.'\n        )\n      }\n    }\n\n    return this.async().then(onFulfilled, onRejected)\n  }\n\n  toString() {\n    return this._css\n  }\n\n  warnings() {\n    return []\n  }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n  constructor(plugins = []) {\n    this.version = '8.5.6'\n    this.plugins = this.normalize(plugins)\n  }\n\n  normalize(plugins) {\n    let normalized = []\n    for (let i of plugins) {\n      if (i.postcss === true) {\n        i = i()\n      } else if (i.postcss) {\n        i = i.postcss\n      }\n\n      if (typeof i === 'object' && Array.isArray(i.plugins)) {\n        normalized = normalized.concat(i.plugins)\n      } else if (typeof i === 'object' && i.postcssPlugin) {\n        normalized.push(i)\n      } else if (typeof i === 'function') {\n        normalized.push(i)\n      } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n        if (process.env.NODE_ENV !== 'production') {\n          throw new Error(\n            'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n              'one of the syntax/parser/stringifier options as outlined ' +\n              'in your PostCSS runner documentation.'\n          )\n        }\n      } else {\n        throw new Error(i + ' is not a PostCSS plugin')\n      }\n    }\n    return normalized\n  }\n\n  process(css, opts = {}) {\n    if (\n      !this.plugins.length &&\n      !opts.parser &&\n      !opts.stringifier &&\n      !opts.syntax\n    ) {\n      return new NoWorkResult(this, css, opts)\n    } else {\n      return new LazyResult(this, css, opts)\n    }\n  }\n\n  use(plugin) {\n    this.plugins = this.plugins.concat(this.normalize([plugin]))\n    return this\n  }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n  if (plugins.length === 1 && Array.isArray(plugins[0])) {\n    plugins = plugins[0]\n  }\n  return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n  let warningPrinted = false\n  function creator(...args) {\n    // eslint-disable-next-line no-console\n    if (console && console.warn && !warningPrinted) {\n      warningPrinted = true\n      // eslint-disable-next-line no-console\n      console.warn(\n        name +\n          ': postcss.plugin was deprecated. Migration guide:\\n' +\n          'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n      )\n      if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n        /* c8 ignore next 7 */\n        // eslint-disable-next-line no-console\n        console.warn(\n          name +\n            ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n            'https://www.w3ctech.com/topic/2226'\n        )\n      }\n    }\n    let transformer = initializer(...args)\n    transformer.postcssPlugin = name\n    transformer.postcssVersion = new Processor().version\n    return transformer\n  }\n\n  let cache\n  Object.defineProperty(creator, 'postcss', {\n    get() {\n      if (!cache) cache = creator()\n      return cache\n    }\n  })\n\n  creator.process = function (css, processOpts, pluginOpts) {\n    return postcss([creator(pluginOpts)]).process(css, processOpts)\n  }\n\n  return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","import postcss from './postcss.js'\n\nexport default postcss\n\nexport const stringify = postcss.stringify\nexport const fromJSON = postcss.fromJSON\nexport const plugin = postcss.plugin\nexport const parse = postcss.parse\nexport const list = postcss.list\n\nexport const document = postcss.document\nexport const comment = postcss.comment\nexport const atRule = postcss.atRule\nexport const rule = postcss.rule\nexport const decl = postcss.decl\nexport const root = postcss.root\n\nexport const CssSyntaxError = postcss.CssSyntaxError\nexport const Declaration = postcss.Declaration\nexport const Container = postcss.Container\nexport const Processor = postcss.Processor\nexport const Document = postcss.Document\nexport const Comment = postcss.Comment\nexport const Warning = postcss.Warning\nexport const AtRule = postcss.AtRule\nexport const Result = postcss.Result\nexport const Input = postcss.Input\nexport const Rule = postcss.Rule\nexport const Root = postcss.Root\nexport const Node = postcss.Node\n"],"names":["argv","env","isColorSupported","formatter","open","close","replace","input","string","index","replaceClose","result","cursor","createColors","enabled","f","picocolorsModule","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","tokenize","options","css","ignore","code","content","escape","next","quote","currentToken","escaped","escapePos","n","prev","length","pos","buffer","returned","position","unclosed","what","endOfFile","nextToken","opts","ignoreUnclosed","controlChar","back","token","pico","require$$0","tokenizer","require$$1","Input","registerInput","dependant","HIGHLIGHT_THEME","getTokenType","type","value","processor","terminalHighlight","color","i","terminalHighlight_1","CssSyntaxError","message","line","column","source","file","plugin","aside","text","mark","highlight","bold","gray","red","lines","start","end","maxWidth","number","gutter","padding","subLineStart","subLineEnd","subLine","spacing","cssSyntaxError","DEFAULT_RAW","capitalize","str","Stringifier","builder","node","semicolon","name","params","detect","buf","depth","indent","step","between","after","last","child","before","left","right","own","parent","root","method","p","parts","prop","raw","stringifier","stringify","stringify_1","symbols","require$$2","isClean","my","require$$3","cloneNode","obj","cloned","j","sourceOffset","inputCSS","offset","Node","defaults","error","s","add","overrides","keepBetween","inputString","defaultType","nodes","bookmark","foundSelf","_","inputs","fixed","emitInputs","inputsNextIndex","inputId","data","Comment","comment","Declaration","declaration","AtRule","parse","Root","Rule","cleanSource","markTreeDirty","Container","children","callback","iterator","condition","args","cb","other","exist","existIndex","id","sample","pattern","decl","e","selector","container","atRule","LazyResult","Processor","Document","document","urlAlphabet","nonSecure","size","alphabet","defaultSize","intToCharMap","base64","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64Vlq","encoded","digit","vlq","aStr","aIndex","aOutParam","strLen","shift","continuation","getArg","aArgs","aName","aDefaultValue","exports","urlRegexp","dataUrlRegexp","urlParse","aUrl","match","urlGenerate","aParsedUrl","url","MAX_CACHED_INPUTS","lruMemoize","cache","temp","normalize","aPath","path","isAbsolute","part","up","join","aRoot","aPathUrl","aRootUrl","joined","relative","level","supportsNullProto","identity","toSetString","isProtoString","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","strcmp","compareByOriginalPositionsNoSource","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsDeflatedNoLine","aStr1","aStr2","compareByGeneratedPositionsInflated","parseSourceMapInput","computeSourceURL","sourceRoot","sourceURL","sourceMapURL","parsed","util","has","hasNativeMap","ArraySet","aArray","aAllowDuplicates","set","len","sStr","isDuplicate","idx","aIdx","arraySet","generatedPositionAfter","lineA","lineB","columnA","columnB","MappingList","aCallback","aThisArg","aMapping","mappingList","base64VLQ","SourceMapGenerator","aSourceMapConsumer","generatorOps","generator","mapping","newMapping","sourceFile","sourceRelative","generated","original","aSourceFile","aSourceContent","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aSource","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","nameIdx","sourceIdx","mappings","aSources","aSourceRoot","key","map","sourceMapGenerator","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","SortTemplate","comparator","swap","ary","x","y","randomIntInRange","low","high","doQuickSort","r","pivotIndex","pivot","q","cloneSort","template","sortCache","quickSort","binarySearch","require$$4","SourceMapConsumer","aSourceMap","aSourceMapURL","sourceMap","IndexedSourceMapConsumer","BasicSourceMapConsumer","c","aContext","aOrder","context","order","boundCallback","names","sources","needle","originalLine","originalColumn","sourceMapConsumer","version","sourcesContent","relativeSource","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","Mapping","compareGenerated","sortGenerated","array","l","b","a","generatedLine","originalMappings","segment","subarrayStart","currentSource","aMappings","aLineName","aColumnName","aComparator","nextMapping","sc","nullOnMissing","fileUriAbsPath","sections","lastOffset","offsetLine","offsetColumn","sectionIndex","section","generatedPosition","ret","sectionMappings","adjustedMapping","REGEX_NEWLINE","NEWLINE_CODE","isSourceNode","SourceNode","aLine","aColumn","aChunks","aGeneratedCode","aRelativePath","remainingLines","remainingLinesIndex","shiftNextLine","lineContents","getNextLine","newLine","lastGeneratedLine","lastGeneratedColumn","lastMapping","addMappingWithCode","nextLine","aChunk","chunk","aFn","aSep","newChildren","aPattern","aReplacement","lastChild","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","sourceNode","existsSync","readFileSync","dirname","fromBase64","PreviousMap","baseCharsetUri","baseUri","charsetUri","uri","uriMatch","baseUriMatch","encoding","sourceMapString","comments","prevPath","previousMap","nanoid","resolve","fileURLToPath","pathToFileURL","require$$5","require$$6","lineToIndexCache","sourceMapAvailable","pathAvailable","getLineToIndex","lineToIndex","prevIndex","endColumn","endLine","endOffset","origin","lastLine","min","max","consumer","from","to","fromUrl","json","list","spaces","separators","current","split","func","inQuote","prevQuote","letter","list_1","values","sep","rule","fromJSON","ownInputs","inputHydrated","fromJSON_1","MapGenerator","cssString","eol","noSource","annotation","cached","already","fileURL","mapGenerator","SAFE_COMMENT_NEIGHBOR","findLastWithPosition","tokens","Parser","brackets","colon","founded","element","customProperty","firstSpaces","bracket","clean","all","lastTokenType","parser","parse_1","Warning","range","opt","warning","Result","printed","warnOnce","require$$7","require$$8","TYPE_TO_CLASS_NAME","PLUGIN_PROPS","NOT_VISITORS","CHILDREN","isPromise","getEvents","toStack","events","cleanMarks","postcss","onRejected","onFinally","pluginName","pluginVer","runtimeVer","err","event","filter","promise","stack","visitor","roots","subRoot","onFulfilled","visitors","visit","lazyResult","NoWorkResult","self","generatedCSS","generatedMap","noWorkResult","plugins","normalized","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","initializer","warningPrinted","creator","transformer","processOpts","pluginOpts","postcss_1"],"mappings":";;;;;;;;AAAA,MAAI,IAAI,WAAW,CAAA,GAAIA,IAAO,EAAE,QAAQ,IAAIC,IAAM,EAAE,OAAO,CAAA,GACvDC,IACH,EAAID,EAAI,YAAYD,EAAK,SAAS,YAAY,OAC7C,CAAC,CAACC,EAAI,eAAeD,EAAK,SAAS,SAAS,KAAK,EAAE,aAAa,YAAa,EAAE,UAAU,IAAI,SAASC,EAAI,SAAS,UAAW,CAAC,CAACA,EAAI,KAElIE,IAAY,CAACC,GAAMC,GAAOC,IAAUF,MACvC,CAAAG,MAAS;AACR,QAAIC,IAAS,KAAKD,GAAOE,IAAQD,EAAO,QAAQH,GAAOD,EAAK,MAAM;AAClE,WAAO,CAACK,IAAQL,IAAOM,EAAaF,GAAQH,GAAOC,GAASG,CAAK,IAAIJ,IAAQD,IAAOI,IAASH;AAAA,EAC/F,GAEIK,IAAe,CAACF,GAAQH,GAAOC,GAASG,MAAU;AACrD,QAAIE,IAAS,IAAIC,IAAS;AAC1B;AACC,MAAAD,KAAUH,EAAO,UAAUI,GAAQH,CAAK,IAAIH,GAC5CM,IAASH,IAAQJ,EAAM,QACvBI,IAAQD,EAAO,QAAQH,GAAOO,CAAM;AAAA,WAC5B,CAACH;AACV,WAAOE,IAASH,EAAO,UAAUI,CAAM;AAAA,EACxC,GAEIC,IAAe,CAACC,IAAUZ,MAAqB;AAClD,QAAIa,IAAID,IAAUX,IAAY,MAAM;AACpC,WAAO;AAAA,MACN,kBAAkBW;AAAA,MAClB,OAAOC,EAAE,WAAW,SAAS;AAAA,MAC7B,MAAMA,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAChD,KAAKA,EAAE,WAAW,YAAY,iBAAiB;AAAA,MAC/C,QAAQA,EAAE,WAAW,UAAU;AAAA,MAC/B,WAAWA,EAAE,WAAW,UAAU;AAAA,MAClC,SAASA,EAAE,WAAW,UAAU;AAAA,MAChC,QAAQA,EAAE,WAAW,UAAU;AAAA,MAC/B,eAAeA,EAAE,WAAW,UAAU;AAAA,MAEtC,OAAOA,EAAE,YAAY,UAAU;AAAA,MAC/B,KAAKA,EAAE,YAAY,UAAU;AAAA,MAC7B,OAAOA,EAAE,YAAY,UAAU;AAAA,MAC/B,QAAQA,EAAE,YAAY,UAAU;AAAA,MAChC,MAAMA,EAAE,YAAY,UAAU;AAAA,MAC9B,SAASA,EAAE,YAAY,UAAU;AAAA,MACjC,MAAMA,EAAE,YAAY,UAAU;AAAA,MAC9B,OAAOA,EAAE,YAAY,UAAU;AAAA,MAC/B,MAAMA,EAAE,YAAY,UAAU;AAAA,MAE9B,SAASA,EAAE,YAAY,UAAU;AAAA,MACjC,OAAOA,EAAE,YAAY,UAAU;AAAA,MAC/B,SAASA,EAAE,YAAY,UAAU;AAAA,MACjC,UAAUA,EAAE,YAAY,UAAU;AAAA,MAClC,QAAQA,EAAE,YAAY,UAAU;AAAA,MAChC,WAAWA,EAAE,YAAY,UAAU;AAAA,MACnC,QAAQA,EAAE,YAAY,UAAU;AAAA,MAChC,SAASA,EAAE,YAAY,UAAU;AAAA,MAEjC,aAAaA,EAAE,YAAY,UAAU;AAAA,MACrC,WAAWA,EAAE,YAAY,UAAU;AAAA,MACnC,aAAaA,EAAE,YAAY,UAAU;AAAA,MACrC,cAAcA,EAAE,YAAY,UAAU;AAAA,MACtC,YAAYA,EAAE,YAAY,UAAU;AAAA,MACpC,eAAeA,EAAE,YAAY,UAAU;AAAA,MACvC,YAAYA,EAAE,YAAY,UAAU;AAAA,MACpC,aAAaA,EAAE,YAAY,UAAU;AAAA,MAErC,eAAeA,EAAE,aAAa,UAAU;AAAA,MACxC,aAAaA,EAAE,aAAa,UAAU;AAAA,MACtC,eAAeA,EAAE,aAAa,UAAU;AAAA,MACxC,gBAAgBA,EAAE,aAAa,UAAU;AAAA,MACzC,cAAcA,EAAE,aAAa,UAAU;AAAA,MACvC,iBAAiBA,EAAE,aAAa,UAAU;AAAA,MAC1C,cAAcA,EAAE,aAAa,UAAU;AAAA,MACvC,eAAeA,EAAE,aAAa,UAAU;AAAA,IAC1C;AAAA,EACA;AAEAC,SAAAA,EAAA,UAAiBH,EAAY,GAC7BG,EAAA,QAAA,eAA8BH;;;;;;ACxE9B,QAAMI,IAAe,IACfC,IAAe,IACfC,IAAY,IACZC,IAAQ,IACRC,IAAU,IACVC,IAAQ,IACRC,IAAO,IACPC,IAAM,GACNC,IAAK,IACLC,IAAc,IACdC,IAAe,IACfC,IAAmB,IACnBC,IAAoB,IACpBC,IAAa,KACbC,IAAc,KACdC,IAAY,IACZC,IAAW,IACXC,IAAQ,IACRC,IAAK,IAELC,IAAY,8BACZC,IAAc,yCACdC,IAAiB,iBACjBC,IAAgB;AAEtB,SAAAC,KAAiB,SAAmBjC,GAAOkC,IAAU,CAAA,GAAI;AACvD,QAAIC,IAAMnC,EAAM,IAAI,QAAO,GACvBoC,IAASF,EAAQ,cAEjBG,GAAMC,GAASC,GAAQC,GAAMC,GAC7BC,GAAcC,GAASC,GAAWC,GAAGC,IAErCC,KAASZ,EAAI,QACba,IAAM,GACNC,KAAS,CAAA,GACTC,IAAW,CAAA;AAEf,aAASC,KAAW;AAClB,aAAOH;AAAA,IACX;AAEE,aAASI,GAASC,GAAM;AACtB,YAAMrD,EAAM,MAAM,cAAcqD,GAAML,CAAG;AAAA,IAC7C;AAEE,aAASM,KAAY;AACnB,aAAOJ,EAAS,WAAW,KAAKF,KAAOD;AAAA,IAC3C;AAEE,aAASQ,GAAUC,GAAM;AACvB,UAAIN,EAAS,OAAQ,QAAOA,EAAS,IAAG;AACxC,UAAIF,KAAOD,GAAQ;AAEnB,UAAIU,KAAiBD,IAAOA,EAAK,iBAAiB;AAIlD,cAFAnB,IAAOF,EAAI,WAAWa,CAAG,GAEjBX,GAAI;AAAA,QACV,KAAKvB;AAAA,QACL,KAAKC;AAAA,QACL,KAAKE;AAAA,QACL,KAAKC;AAAA,QACL,KAAKF,GAAM;AACT,UAAAwB,IAAOQ;AACP;AACE,YAAAR,KAAQ,GACRH,IAAOF,EAAI,WAAWK,CAAI;AAAA,iBAE1BH,MAAStB,KACTsB,MAASvB,KACTuB,MAASpB,KACToB,MAASnB,KACTmB,MAASrB;AAGX,UAAA0B,IAAe,CAAC,SAASP,EAAI,MAAMa,GAAKR,CAAI,CAAC,GAC7CQ,IAAMR,IAAO;AACb;AAAA,QACR;AAAA,QAEM,KAAKrB;AAAA,QACL,KAAKC;AAAA,QACL,KAAKG;AAAA,QACL,KAAKC;AAAA,QACL,KAAKG;AAAA,QACL,KAAKF;AAAA,QACL,KAAKH,GAAmB;AACtB,cAAIoC,KAAc,OAAO,aAAarB,CAAI;AAC1C,UAAAK,IAAe,CAACgB,IAAaA,IAAaV,CAAG;AAC7C;AAAA,QACR;AAAA,QAEM,KAAK3B,GAAkB;AAGrB,cAFAyB,KAAOG,GAAO,SAASA,GAAO,IAAG,EAAG,CAAC,IAAI,IACzCJ,IAAIV,EAAI,WAAWa,IAAM,CAAC,GAExBF,OAAS,SACTD,MAAMnC,KACNmC,MAAMlC,KACNkC,MAAM9B,KACN8B,MAAM/B,KACN+B,MAAM5B,KACN4B,MAAM7B,KACN6B,MAAM3B,GACN;AACA,YAAAsB,IAAOQ;AACP,eAAG;AAGD,kBAFAL,IAAU,IACVH,IAAOL,EAAI,QAAQ,KAAKK,IAAO,CAAC,GAC5BA,MAAS;AACX,oBAAIJ,KAAUqB,IAAgB;AAC5B,kBAAAjB,IAAOQ;AACP;AAAA,gBAChB;AACgB,kBAAAI,GAAS,SAAS;AAItB,mBADAR,IAAYJ,GACLL,EAAI,WAAWS,IAAY,CAAC,MAAMhC;AACvC,gBAAAgC,KAAa,GACbD,IAAU,CAACA;AAAA,YAEzB,SAAmBA;AAET,YAAAD,IAAe,CAAC,YAAYP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAE/DQ,IAAMR;AAAA,UAChB;AACU,YAAAA,IAAOL,EAAI,QAAQ,KAAKa,IAAM,CAAC,GAC/BV,IAAUH,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAE7BA,MAAS,MAAMT,EAAe,KAAKO,CAAO,IAC5CI,IAAe,CAAC,KAAK,KAAKM,CAAG,KAE7BN,IAAe,CAAC,YAAYJ,GAASU,GAAKR,CAAI,GAC9CQ,IAAMR;AAIV;AAAA,QACR;AAAA,QAEM,KAAK9B;AAAA,QACL,KAAKC,GAAc;AACjB,UAAA8B,IAAQJ,MAAS3B,IAAe,MAAM,KACtC8B,IAAOQ;AACP,aAAG;AAGD,gBAFAL,IAAU,IACVH,IAAOL,EAAI,QAAQM,GAAOD,IAAO,CAAC,GAC9BA,MAAS;AACX,kBAAIJ,KAAUqB,IAAgB;AAC5B,gBAAAjB,IAAOQ,IAAM;AACb;AAAA,cACd;AACc,gBAAAI,GAAS,QAAQ;AAIrB,iBADAR,IAAYJ,GACLL,EAAI,WAAWS,IAAY,CAAC,MAAMhC;AACvC,cAAAgC,KAAa,GACbD,IAAU,CAACA;AAAA,UAEvB,SAAiBA;AAET,UAAAD,IAAe,CAAC,UAAUP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAC7DQ,IAAMR;AACN;AAAA,QACR;AAAA,QAEM,KAAKZ,GAAI;AACP,UAAAC,EAAU,YAAYmB,IAAM,GAC5BnB,EAAU,KAAKM,CAAG,GACdN,EAAU,cAAc,IAC1BW,IAAOL,EAAI,SAAS,IAEpBK,IAAOX,EAAU,YAAY,GAG/Ba,IAAe,CAAC,WAAWP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAE9DQ,IAAMR;AACN;AAAA,QACR;AAAA,QAEM,KAAK5B,GAAW;AAGd,eAFA4B,IAAOQ,GACPT,IAAS,IACFJ,EAAI,WAAWK,IAAO,CAAC,MAAM5B;AAClC,YAAA4B,KAAQ,GACRD,IAAS,CAACA;AAGZ,cADAF,IAAOF,EAAI,WAAWK,IAAO,CAAC,GAE5BD,KACAF,MAASxB,KACTwB,MAAStB,KACTsB,MAASvB,KACTuB,MAASpB,KACToB,MAASnB,KACTmB,MAASrB,MAETwB,KAAQ,GACJR,EAAc,KAAKG,EAAI,OAAOK,CAAI,CAAC,IAAG;AACxC,mBAAOR,EAAc,KAAKG,EAAI,OAAOK,IAAO,CAAC,CAAC;AAC5C,cAAAA,KAAQ;AAEV,YAAIL,EAAI,WAAWK,IAAO,CAAC,MAAMzB,MAC/ByB,KAAQ;AAAA,UAEtB;AAGQ,UAAAE,IAAe,CAAC,QAAQP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAE3DQ,IAAMR;AACN;AAAA,QACR;AAAA,QAEM,SAAS;AACP,UAAIH,MAASxB,KAASsB,EAAI,WAAWa,IAAM,CAAC,MAAMtB,KAChDc,IAAOL,EAAI,QAAQ,MAAMa,IAAM,CAAC,IAAI,GAChCR,MAAS,MACPJ,KAAUqB,KACZjB,IAAOL,EAAI,SAEXiB,GAAS,SAAS,IAItBV,IAAe,CAAC,WAAWP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAC9DQ,IAAMR,MAENV,EAAY,YAAYkB,IAAM,GAC9BlB,EAAY,KAAKK,CAAG,GAChBL,EAAY,cAAc,IAC5BU,IAAOL,EAAI,SAAS,IAEpBK,IAAOV,EAAY,YAAY,GAGjCY,IAAe,CAAC,QAAQP,EAAI,MAAMa,GAAKR,IAAO,CAAC,GAAGQ,GAAKR,CAAI,GAC3DS,GAAO,KAAKP,CAAY,GACxBM,IAAMR;AAGR;AAAA,QACR;AAAA,MACA;AAEI,aAAAQ,KACON;AAAA,IACX;AAEE,aAASiB,GAAKC,GAAO;AACnB,MAAAV,EAAS,KAAKU,CAAK;AAAA,IACvB;AAEE,WAAO;AAAA,MACL,MAAAD;AAAA,MACA,WAAAL;AAAA,MACA,WAAAC;AAAA,MACA,UAAAJ;AAAA,IACJ;AAAA,EACA;;;;;;ACvQA,MAAIU,IAAOC,gBAAAA,GAAA,GAEPC,IAAYC,GAAA,GAEZC;AAEJ,WAASC,EAAcC,GAAW;AAChC,IAAAF,IAAQE;AAAA,EACV;AAEA,QAAMC,IAAkB;AAAA,IACtB,KAAKP,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,KAAKA,EAAK;AAAA,IACV,WAAWA,EAAK;AAAA,IAChB,UAAYA,EAAK;AAAA,IACjB,MAAQA,EAAK;AAAA,IACb,OAASA,EAAK;AAAA,IACd,SAAWA,EAAK;AAAA,IAChB,MAAQA,EAAK;AAAA,IACb,QAAUA,EAAK;AAAA,EACjB;AAEA,WAASQ,EAAa,CAACC,GAAMC,CAAK,GAAGC,GAAW;AAC9C,QAAIF,MAAS,QAAQ;AACnB,UAAIC,EAAM,CAAC,MAAM;AACf,eAAO;AAET,UAAIA,EAAM,CAAC,MAAM;AACf,eAAO;AAAA,IAEb;AAEE,QAAI,CAACC,EAAU,aAAa;AAC1B,UAAIhC,IAAOgC,EAAU,UAAS;AAE9B,UADAA,EAAU,KAAKhC,CAAI,GACfA,EAAK,CAAC,MAAM,cAAcA,EAAK,CAAC,MAAM,IAAK,QAAO;AAAA,IAC1D;AAEE,WAAO8B;AAAA,EACT;AAEA,WAASG,EAAkBtC,GAAK;AAC9B,QAAIqC,IAAYT,EAAU,IAAIE,EAAM9B,CAAG,GAAG,EAAE,cAAc,GAAI,CAAE,GAC5D/B,IAAS;AACb,WAAO,CAACoE,EAAU,eAAa;AAC7B,UAAIZ,IAAQY,EAAU,UAAS,GAC3BE,IAAQN,EAAgBC,EAAaT,GAAOY,CAAS,CAAC;AAC1D,MAAIE,IACFtE,KAAUwD,EAAM,CAAC,EACd,MAAM,OAAO,EACb,IAAI,CAAAe,MAAKD,EAAMC,CAAC,CAAC,EACjB,KAAK;AAAA,CAAI,IAEZvE,KAAUwD,EAAM,CAAC;AAAA,IAEvB;AACE,WAAOxD;AAAA,EACT;AAEA,SAAAqE,EAAkB,gBAAgBP,GAElCU,KAAiBH;;;;;;ACnEjB,MAAIZ,IAAOC,gBAAAA,GAAA,GAEPW,IAAoBT,GAAA;AAAA,EAExB,MAAMa,UAAuB,MAAM;AAAA,IACjC,YAAYC,GAASC,GAAMC,GAAQC,GAAQC,GAAMC,GAAQ;AACvD,YAAML,CAAO,GACb,KAAK,OAAO,kBACZ,KAAK,SAASA,GAEVI,MACF,KAAK,OAAOA,IAEVD,MACF,KAAK,SAASA,IAEZE,MACF,KAAK,SAASA,IAEZ,OAAOJ,IAAS,OAAe,OAAOC,IAAW,QAC/C,OAAOD,KAAS,YAClB,KAAK,OAAOA,GACZ,KAAK,SAASC,MAEd,KAAK,OAAOD,EAAK,MACjB,KAAK,SAASA,EAAK,QACnB,KAAK,UAAUC,EAAO,MACtB,KAAK,YAAYA,EAAO,UAI5B,KAAK,WAAU,GAEX,MAAM,qBACR,MAAM,kBAAkB,MAAMH,CAAc;AAAA,IAElD;AAAA,IAEE,aAAa;AACX,WAAK,UAAU,KAAK,SAAS,KAAK,SAAS,OAAO,IAClD,KAAK,WAAW,KAAK,OAAO,KAAK,OAAO,eACpC,OAAO,KAAK,OAAS,QACvB,KAAK,WAAW,MAAM,KAAK,OAAO,MAAM,KAAK,SAE/C,KAAK,WAAW,OAAO,KAAK;AAAA,IAChC;AAAA,IAEE,eAAeH,GAAO;AACpB,UAAI,CAAC,KAAK,OAAQ,QAAO;AAEzB,UAAIvC,IAAM,KAAK;AACf,MAAIuC,KAAS,SAAMA,IAAQb,EAAK;AAEhC,UAAIuB,IAAQ,CAAAC,MAAQA,GAChBC,IAAO,CAAAD,MAAQA,GACfE,IAAY,CAAAF,MAAQA;AACxB,UAAIX,GAAO;AACT,YAAI,EAAE,MAAAc,GAAM,MAAAC,GAAM,KAAAC,EAAG,IAAK7B,EAAK,aAAa,EAAI;AAChD,QAAAyB,IAAO,CAAAD,MAAQG,EAAKE,EAAIL,CAAI,CAAC,GAC7BD,IAAQ,CAAAC,MAAQI,EAAKJ,CAAI,GACrBZ,MACFc,IAAY,CAAAF,MAAQZ,EAAkBY,CAAI;AAAA,MAElD;AAEI,UAAIM,IAAQxD,EAAI,MAAM,OAAO,GACzByD,IAAQ,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC,GACjCC,IAAM,KAAK,IAAI,KAAK,OAAO,GAAGF,EAAM,MAAM,GAC1CG,IAAW,OAAOD,CAAG,EAAE;AAE3B,aAAOF,EACJ,MAAMC,GAAOC,CAAG,EAChB,IAAI,CAACd,GAAM7E,MAAU;AACpB,YAAI6F,IAASH,IAAQ,IAAI1F,GACrB8F,IAAS,OAAO,MAAMD,GAAQ,MAAM,CAACD,CAAQ,IAAI;AACrD,YAAIC,MAAW,KAAK,MAAM;AACxB,cAAIhB,EAAK,SAAS,KAAK;AACrB,gBAAIkB,IAAU,IACVC,IAAe,KAAK,IAAI,GAAG,KAAK,SAASD,CAAO,GAChDE,IAAa,KAAK;AAAA,cACpB,KAAK,SAASF;AAAA,cACd,KAAK,YAAYA;AAAA,YAC/B,GACgBG,IAAUrB,EAAK,MAAMmB,GAAcC,CAAU,GAE7CE,IACFjB,EAAMY,EAAO,QAAQ,OAAO,GAAG,CAAC,IAChCjB,EACG,MAAM,GAAG,KAAK,IAAI,KAAK,SAAS,GAAGkB,IAAU,CAAC,CAAC,EAC/C,QAAQ,UAAU,GAAG;AAE1B,mBACEX,EAAK,GAAG,IACRF,EAAMY,CAAM,IACZT,EAAUa,CAAO,IACjB;AAAA,KACAC,IACAf,EAAK,GAAG;AAAA,UAEtB;AAEU,cAAIe,IACFjB,EAAMY,EAAO,QAAQ,OAAO,GAAG,CAAC,IAChCjB,EAAK,MAAM,GAAG,KAAK,SAAS,CAAC,EAAE,QAAQ,UAAU,GAAG;AAEtD,iBACEO,EAAK,GAAG,IACRF,EAAMY,CAAM,IACZT,EAAUR,CAAI,IACd;AAAA,KACAsB,IACAf,EAAK,GAAG;AAAA,QAEpB;AAEQ,eAAO,MAAMF,EAAMY,CAAM,IAAIT,EAAUR,CAAI;AAAA,MACnD,CAAO,EACA,KAAK;AAAA,CAAI;AAAA,IAChB;AAAA,IAEE,WAAW;AACT,UAAI1C,IAAO,KAAK,eAAc;AAC9B,aAAIA,MACFA,IAAO;AAAA;AAAA,IAASA,IAAO;AAAA,IAElB,KAAK,OAAO,OAAO,KAAK,UAAUA;AAAA,IAC7C;AAAA,EACA;AAEA,SAAAiE,KAAiBzB,GACjBA,EAAe,UAAUA;;;;;;AClIzB,QAAM0B,IAAc;AAAA,IAClB,OAAO;AAAA;AAAA,IACP,aAAa;AAAA;AAAA,IACb,eAAe;AAAA;AAAA,IACf,YAAY;AAAA;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,cAAc;AAAA,IACd,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,WAAW;AAAA,EACb;AAEA,WAASC,EAAWC,GAAK;AACvB,WAAOA,EAAI,CAAC,EAAE,YAAW,IAAKA,EAAI,MAAM,CAAC;AAAA,EAC3C;AAAA,EAEA,MAAMC,EAAY;AAAA,IAChB,YAAYC,GAAS;AACnB,WAAK,UAAUA;AAAA,IACnB;AAAA,IAEE,OAAOC,GAAMC,GAAW;AACtB,UAAIC,IAAO,MAAMF,EAAK,MAClBG,IAASH,EAAK,SAAS,KAAK,SAASA,GAAM,QAAQ,IAAI;AAQ3D,UANI,OAAOA,EAAK,KAAK,YAAc,MACjCE,KAAQF,EAAK,KAAK,YACTG,MACTD,KAAQ,MAGNF,EAAK;AACP,aAAK,MAAMA,GAAME,IAAOC,CAAM;AAAA,WACzB;AACL,YAAIlB,KAAOe,EAAK,KAAK,WAAW,OAAOC,IAAY,MAAM;AACzD,aAAK,QAAQC,IAAOC,IAASlB,GAAKe,CAAI;AAAA,MAC5C;AAAA,IACA;AAAA,IAEE,YAAYA,GAAMI,GAAQ;AACxB,UAAIzC;AACJ,MAAIqC,EAAK,SAAS,SAChBrC,IAAQ,KAAK,IAAIqC,GAAM,MAAM,YAAY,IAChCA,EAAK,SAAS,YACvBrC,IAAQ,KAAK,IAAIqC,GAAM,MAAM,eAAe,IACnCI,MAAW,WACpBzC,IAAQ,KAAK,IAAIqC,GAAM,MAAM,YAAY,IAEzCrC,IAAQ,KAAK,IAAIqC,GAAM,MAAM,aAAa;AAG5C,UAAIK,IAAML,EAAK,QACXM,IAAQ;AACZ,aAAOD,KAAOA,EAAI,SAAS;AACzB,QAAAC,KAAS,GACTD,IAAMA,EAAI;AAGZ,UAAI1C,EAAM,SAAS;AAAA,CAAI,GAAG;AACxB,YAAI4C,IAAS,KAAK,IAAIP,GAAM,MAAM,QAAQ;AAC1C,YAAIO,EAAO;AACT,mBAASC,IAAO,GAAGA,IAAOF,GAAOE,IAAQ,CAAA7C,KAAS4C;AAAA,MAE1D;AAEI,aAAO5C;AAAA,IACX;AAAA,IAEE,MAAMqC,GAAMhB,GAAO;AACjB,UAAIyB,IAAU,KAAK,IAAIT,GAAM,WAAW,YAAY;AACpD,WAAK,QAAQhB,IAAQyB,IAAU,KAAKT,GAAM,OAAO;AAEjD,UAAIU;AACJ,MAAIV,EAAK,SAASA,EAAK,MAAM,UAC3B,KAAK,KAAKA,CAAI,GACdU,IAAQ,KAAK,IAAIV,GAAM,OAAO,KAE9BU,IAAQ,KAAK,IAAIV,GAAM,SAAS,WAAW,GAGzCU,KAAO,KAAK,QAAQA,CAAK,GAC7B,KAAK,QAAQ,KAAKV,GAAM,KAAK;AAAA,IACjC;AAAA,IAEE,KAAKA,GAAM;AACT,UAAIW,IAAOX,EAAK,MAAM,SAAS;AAC/B,aAAOW,IAAO,KACRX,EAAK,MAAMW,CAAI,EAAE,SAAS;AAC9B,QAAAA,KAAQ;AAGV,UAAIV,IAAY,KAAK,IAAID,GAAM,WAAW;AAC1C,eAASjC,IAAI,GAAGA,IAAIiC,EAAK,MAAM,QAAQjC,KAAK;AAC1C,YAAI6C,IAAQZ,EAAK,MAAMjC,CAAC,GACpB8C,IAAS,KAAK,IAAID,GAAO,QAAQ;AACrC,QAAIC,KAAQ,KAAK,QAAQA,CAAM,GAC/B,KAAK,UAAUD,GAAOD,MAAS5C,KAAKkC,CAAS;AAAA,MACnD;AAAA,IACA;AAAA,IAEE,QAAQD,GAAM;AACZ,UAAIc,IAAO,KAAK,IAAId,GAAM,QAAQ,aAAa,GAC3Ce,IAAQ,KAAK,IAAIf,GAAM,SAAS,cAAc;AAClD,WAAK,QAAQ,OAAOc,IAAOd,EAAK,OAAOe,IAAQ,MAAMf,CAAI;AAAA,IAC7D;AAAA,IAEE,KAAKA,GAAMC,GAAW;AACpB,UAAIQ,IAAU,KAAK,IAAIT,GAAM,WAAW,OAAO,GAC3C3G,IAAS2G,EAAK,OAAOS,IAAU,KAAK,SAAST,GAAM,OAAO;AAE9D,MAAIA,EAAK,cACP3G,KAAU2G,EAAK,KAAK,aAAa,gBAG/BC,MAAW5G,KAAU,MACzB,KAAK,QAAQA,GAAQ2G,CAAI;AAAA,IAC7B;AAAA,IAEE,SAASA,GAAM;AACb,WAAK,KAAKA,CAAI;AAAA,IAClB;AAAA,IAEE,IAAIA,GAAMgB,GAAKZ,GAAQ;AACrB,UAAIzC;AAIJ,UAHKyC,MAAQA,IAASY,IAGlBA,MACFrD,IAAQqC,EAAK,KAAKgB,CAAG,GACjB,OAAOrD,IAAU;AAAa,eAAOA;AAG3C,UAAIsD,IAASjB,EAAK;AAElB,UAAII,MAAW,aAET,CAACa,KAAWA,EAAO,SAAS,UAAUA,EAAO,UAAUjB,KAKvDiB,KAAUA,EAAO,SAAS;AAC5B,eAAO;AAKX,UAAI,CAACA,EAAQ,QAAOtB,EAAYS,CAAM;AAGtC,UAAIc,IAAOlB,EAAK,KAAI;AAEpB,UADKkB,EAAK,aAAUA,EAAK,WAAW,CAAA,IAChC,OAAOA,EAAK,SAASd,CAAM,IAAM;AACnC,eAAOc,EAAK,SAASd,CAAM;AAG7B,UAAIA,MAAW,YAAYA,MAAW;AACpC,eAAO,KAAK,YAAYJ,GAAMI,CAAM;AAC/B;AACL,YAAIe,IAAS,QAAQvB,EAAWQ,CAAM;AACtC,QAAI,KAAKe,CAAM,IACbxD,IAAQ,KAAKwD,CAAM,EAAED,GAAMlB,CAAI,IAE/BkB,EAAK,KAAK,CAAAnD,MAAK;AAEb,cADAJ,IAAQI,EAAE,KAAKiD,CAAG,GACd,OAAOrD,IAAU,IAAa,QAAO;AAAA,QACnD,CAAS;AAAA,MAET;AAEI,aAAI,OAAOA,IAAU,QAAaA,IAAQgC,EAAYS,CAAM,IAE5Dc,EAAK,SAASd,CAAM,IAAIzC,GACjBA;AAAA,IACX;AAAA,IAEE,eAAeuD,GAAM;AACnB,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIA,EAAE,SAASA,EAAE,MAAM,SAAS,KAC1B,OAAOA,EAAE,KAAK,QAAU;AAC1B,iBAAAJ,IAAQI,EAAE,KAAK,OACXJ,EAAM,SAAS;AAAA,CAAI,MACrBA,IAAQA,EAAM,QAAQ,WAAW,EAAE,IAE9B;AAAA,MAGjB,CAAK,GACGA,MAAOA,IAAQA,EAAM,QAAQ,OAAO,EAAE,IACnCA;AAAA,IACX;AAAA,IAEE,iBAAiBuD,GAAMlB,GAAM;AAC3B,UAAIrC;AACJ,aAAAuD,EAAK,aAAa,CAAAnD,MAAK;AACrB,YAAI,OAAOA,EAAE,KAAK,SAAW;AAC3B,iBAAAJ,IAAQI,EAAE,KAAK,QACXJ,EAAM,SAAS;AAAA,CAAI,MACrBA,IAAQA,EAAM,QAAQ,WAAW,EAAE,IAE9B;AAAA,MAEf,CAAK,GACG,OAAOA,IAAU,MACnBA,IAAQ,KAAK,IAAIqC,GAAM,MAAM,YAAY,IAChCrC,MACTA,IAAQA,EAAM,QAAQ,OAAO,EAAE,IAE1BA;AAAA,IACX;AAAA,IAEE,cAAcuD,GAAMlB,GAAM;AACxB,UAAIrC;AACJ,aAAAuD,EAAK,UAAU,CAAAnD,MAAK;AAClB,YAAI,OAAOA,EAAE,KAAK,SAAW;AAC3B,iBAAAJ,IAAQI,EAAE,KAAK,QACXJ,EAAM,SAAS;AAAA,CAAI,MACrBA,IAAQA,EAAM,QAAQ,WAAW,EAAE,IAE9B;AAAA,MAEf,CAAK,GACG,OAAOA,IAAU,MACnBA,IAAQ,KAAK,IAAIqC,GAAM,MAAM,YAAY,IAChCrC,MACTA,IAAQA,EAAM,QAAQ,OAAO,EAAE,IAE1BA;AAAA,IACX;AAAA,IAEE,cAAcuD,GAAM;AAClB,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIA,EAAE,SAAS,WACbJ,IAAQI,EAAE,KAAK,SACX,OAAOJ,IAAU;AAAa,iBAAO;AAAA,MAEjD,CAAK,GACMA;AAAA,IACX;AAAA,IAEE,cAAcuD,GAAM;AAClB,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIA,EAAE,UAAUA,EAAE,WAAWmD,KAAQA,EAAK,UAAUnD,MAC9C,OAAOA,EAAE,KAAK,SAAW;AAC3B,iBAAAJ,IAAQI,EAAE,KAAK,QACXJ,EAAM,SAAS;AAAA,CAAI,MACrBA,IAAQA,EAAM,QAAQ,WAAW,EAAE,IAE9B;AAAA,MAGjB,CAAK,GACGA,MAAOA,IAAQA,EAAM,QAAQ,OAAO,EAAE,IACnCA;AAAA,IACX;AAAA,IAEE,SAASuD,GAAM;AACb,UAAIvD;AACJ,aAAAuD,EAAK,UAAU,CAAAnD,MAAK;AAClB,YAAI,OAAOA,EAAE,KAAK,UAAY;AAC5B,iBAAAJ,IAAQI,EAAE,KAAK,QAAQ,QAAQ,WAAW,EAAE,GACrC;AAAA,MAEf,CAAK,GACMJ;AAAA,IACX;AAAA,IAEE,aAAauD,GAAM;AACjB,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIA,EAAE,SAASA,EAAE,MAAM,WAAW,MAChCJ,IAAQI,EAAE,KAAK,OACX,OAAOJ,IAAU;AAAa,iBAAO;AAAA,MAEjD,CAAK,GACMA;AAAA,IACX;AAAA,IAEE,UAAUuD,GAAM;AACd,UAAIA,EAAK,KAAK,OAAQ,QAAOA,EAAK,KAAK;AACvC,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIqD,IAAIrD,EAAE;AACV,YAAIqD,KAAKA,MAAMF,KAAQE,EAAE,UAAUA,EAAE,WAAWF,KAC1C,OAAOnD,EAAE,KAAK,SAAW,KAAa;AACxC,cAAIsD,IAAQtD,EAAE,KAAK,OAAO,MAAM;AAAA,CAAI;AACpC,iBAAAJ,IAAQ0D,EAAMA,EAAM,SAAS,CAAC,GAC9B1D,IAAQA,EAAM,QAAQ,OAAO,EAAE,GACxB;AAAA,QACjB;AAAA,MAEA,CAAK,GACMA;AAAA,IACX;AAAA,IAEE,aAAauD,GAAM;AACjB,UAAIvD;AACJ,aAAAuD,EAAK,KAAK,CAAAnD,MAAK;AACb,YAAIA,EAAE,SAASA,EAAE,MAAM,UAAUA,EAAE,KAAK,SAAS,WAC/CJ,IAAQI,EAAE,KAAK,WACX,OAAOJ,IAAU;AAAa,iBAAO;AAAA,MAEjD,CAAK,GACMA;AAAA,IACX;AAAA,IAEE,SAASqC,GAAMsB,GAAM;AACnB,UAAI3D,IAAQqC,EAAKsB,CAAI,GACjBC,IAAMvB,EAAK,KAAKsB,CAAI;AACxB,aAAIC,KAAOA,EAAI,UAAU5D,IAChB4D,EAAI,MAGN5D;AAAA,IACX;AAAA,IAEE,KAAKqC,GAAM;AACT,WAAK,KAAKA,CAAI,GACVA,EAAK,KAAK,SAAO,KAAK,QAAQA,EAAK,KAAK,KAAK;AAAA,IACrD;AAAA,IAEE,KAAKA,GAAM;AACT,WAAK,MAAMA,GAAM,KAAK,SAASA,GAAM,UAAU,CAAC,GAC5CA,EAAK,KAAK,gBACZ,KAAK,QAAQA,EAAK,KAAK,cAAcA,GAAM,KAAK;AAAA,IAEtD;AAAA,IAEE,UAAUA,GAAMC,GAAW;AAEzB,UAAI,CAAC,KAAKD,EAAK,IAAI;AACjB,cAAM,IAAI;AAAA,UACR,2BACEA,EAAK,OACL;AAAA,QAEV;AAGI,WAAKA,EAAK,IAAI,EAAEA,GAAMC,CAAS;AAAA,IACnC;AAAA,EACA;AAEA,SAAAuB,KAAiB1B,GACjBA,EAAY,UAAUA;;;;;;AC9VtB,MAAIA,IAAc5C,GAAA;AAElB,WAASuE,EAAUzB,GAAMD,GAAS;AAEhC,IADU,IAAID,EAAYC,CAAO,EAC7B,UAAUC,CAAI;AAAA,EACpB;AAEA,SAAA0B,KAAiBD,GACjBA,EAAU,UAAUA;;;;wBCRpBE,EAAA,UAAyB,OAAO,SAAS,GAEzCA,EAAA,KAAoB,OAAO,IAAI;;;;;;ACF/B,MAAI1D,IAAiBf,GAAA,GACjB4C,IAAc1C,GAAA,GACdqE,IAAYG,EAAA,GACZ,EAAE,SAAAC,GAAS,IAAAC,EAAE,IAAKC,GAAA;AAEtB,WAASC,EAAUC,GAAKhB,GAAQ;AAC9B,QAAIiB,IAAS,IAAID,EAAI,YAAW;AAEhC,aAASlE,KAAKkE,GAAK;AAKjB,UAJI,CAAC,OAAO,UAAU,eAAe,KAAKA,GAAKlE,CAAC,KAI5CA,MAAM,aAAc;AACxB,UAAIJ,IAAQsE,EAAIlE,CAAC,GACbL,IAAO,OAAOC;AAElB,MAAII,MAAM,YAAYL,MAAS,WACzBuD,MAAQiB,EAAOnE,CAAC,IAAIkD,KACflD,MAAM,WACfmE,EAAOnE,CAAC,IAAIJ,IACH,MAAM,QAAQA,CAAK,IAC5BuE,EAAOnE,CAAC,IAAIJ,EAAM,IAAI,CAAAwE,MAAKH,EAAUG,GAAGD,CAAM,CAAC,KAE3CxE,MAAS,YAAYC,MAAU,SAAMA,IAAQqE,EAAUrE,CAAK,IAChEuE,EAAOnE,CAAC,IAAIJ;AAAA,IAElB;AAEE,WAAOuE;AAAA,EACT;AAEA,WAASE,EAAaC,GAAU9F,GAAU;AAExC,QAAIA,KAAY,OAAOA,EAAS,SAAW;AACzC,aAAOA,EAAS;AAGlB,QAAI6B,IAAS,GACTD,IAAO,GACPmE,IAAS;AAEb,aAASvE,IAAI,GAAGA,IAAIsE,EAAS,QAAQtE,KAAK;AACxC,UAAII,MAAS5B,EAAS,QAAQ6B,MAAW7B,EAAS,QAAQ;AACxD,QAAA+F,IAASvE;AACT;AAAA,MACN;AAEI,MAAIsE,EAAStE,CAAC,MAAM;AAAA,KAClBK,IAAS,GACTD,KAAQ,KAERC,KAAU;AAAA,IAEhB;AAEE,WAAOkE;AAAA,EACT;AAAA,EAEA,MAAMC,EAAK;AAAA,IACT,IAAI,UAAU;AACZ,aAAO;AAAA,IACX;AAAA,IAEE,YAAYC,IAAW,IAAI;AACzB,WAAK,OAAO,CAAA,GACZ,KAAKX,CAAO,IAAI,IAChB,KAAKC,CAAE,IAAI;AAEX,eAAS5B,KAAQsC;AACf,YAAItC,MAAS,SAAS;AACpB,eAAK,QAAQ,CAAA;AACb,mBAASF,KAAQwC,EAAStC,CAAI;AAC5B,YAAI,OAAOF,EAAK,SAAU,aACxB,KAAK,OAAOA,EAAK,MAAK,CAAE,IAExB,KAAK,OAAOA,CAAI;AAAA,QAG5B;AACQ,eAAKE,CAAI,IAAIsC,EAAStC,CAAI;AAAA,IAGlC;AAAA,IAEE,WAAWuC,GAAO;AAEhB,UADAA,EAAM,cAAc,MAChBA,EAAM,SAAS,KAAK,UAAU,aAAa,KAAKA,EAAM,KAAK,GAAG;AAChE,YAAIC,IAAI,KAAK;AACb,QAAAD,EAAM,QAAQA,EAAM,MAAM;AAAA,UACxB;AAAA,UACA,KAAKC,EAAE,MAAM,IAAI,IAAIA,EAAE,MAAM,IAAI,IAAIA,EAAE,MAAM,MAAM;AAAA,QAC3D;AAAA,MACA;AACI,aAAOD;AAAA,IACX;AAAA,IAEE,MAAME,GAAK;AACT,kBAAK,OAAO,YAAY,MAAMA,CAAG,GAC1B;AAAA,IACX;AAAA,IAEE,OAAOC,IAAY,IAAI;AACrB,eAAS1C,KAAQ0C;AACf,aAAK1C,CAAI,IAAI0C,EAAU1C,CAAI;AAE7B,aAAO;AAAA,IACX;AAAA,IAEE,OAAOyC,GAAK;AACV,kBAAK,OAAO,aAAa,MAAMA,CAAG,GAC3B;AAAA,IACX;AAAA,IAEE,UAAUE,GAAa;AACrB,aAAO,KAAK,KAAK,QACjB,OAAO,KAAK,KAAK,OACZA,KAAa,OAAO,KAAK,KAAK;AAAA,IACvC;AAAA,IAEE,MAAMD,IAAY,IAAI;AACpB,UAAIV,IAASF,EAAU,IAAI;AAC3B,eAAS9B,KAAQ0C;AACf,QAAAV,EAAOhC,CAAI,IAAI0C,EAAU1C,CAAI;AAE/B,aAAOgC;AAAA,IACX;AAAA,IAEE,WAAWU,IAAY,IAAI;AACzB,UAAIV,IAAS,KAAK,MAAMU,CAAS;AACjC,kBAAK,OAAO,YAAY,MAAMV,CAAM,GAC7BA;AAAA,IACX;AAAA,IAEE,YAAYU,IAAY,IAAI;AAC1B,UAAIV,IAAS,KAAK,MAAMU,CAAS;AACjC,kBAAK,OAAO,aAAa,MAAMV,CAAM,GAC9BA;AAAA,IACX;AAAA,IAEE,MAAMhE,GAAStB,IAAO,IAAI;AACxB,UAAI,KAAK,QAAQ;AACf,YAAI,EAAE,KAAAqC,GAAK,OAAAD,EAAK,IAAK,KAAK,QAAQpC,CAAI;AACtC,eAAO,KAAK,OAAO,MAAM;AAAA,UACvBsB;AAAA,UACA,EAAE,QAAQc,EAAM,QAAQ,MAAMA,EAAM,KAAI;AAAA,UACxC,EAAE,QAAQC,EAAI,QAAQ,MAAMA,EAAI,KAAI;AAAA,UACpCrC;AAAA,QACR;AAAA,MACA;AACI,aAAO,IAAIqB,EAAeC,CAAO;AAAA,IACrC;AAAA,IAEE,oBAAoB;AAClB,aAAO;AAAA,QACL,IAAI8B,GAAMsB,GAAM;AACd,iBAAIA,MAAS,YACJtB,IACEsB,MAAS,SACX,MAAMtB,EAAK,KAAI,EAAG,QAAO,IAEzBA,EAAKsB,CAAI;AAAA,QAE1B;AAAA,QAEM,IAAItB,GAAMsB,GAAM3D,GAAO;AACrB,iBAAIqC,EAAKsB,CAAI,MAAM3D,MACnBqC,EAAKsB,CAAI,IAAI3D,IAEX2D,MAAS,UACTA,MAAS,WACTA,MAAS,UACTA,MAAS,YACTA,MAAS;AAAA,UAETA,MAAS,WAETtB,EAAK,UAAS,IAET;AAAA,QACf;AAAA,MACA;AAAA,IACA;AAAA;AAAA,IAGE,YAAY;AACV,WAAK6B,CAAO,IAAI;AAAA,IACpB;AAAA,IAEE,YAAY;AACV,UAAI,KAAKA,CAAO,GAAG;AACjB,aAAKA,CAAO,IAAI;AAChB,YAAIjG,IAAO;AACX,eAAQA,IAAOA,EAAK;AAClB,UAAAA,EAAKiG,CAAO,IAAI;AAAA,MAExB;AAAA,IACA;AAAA,IAEE,OAAO;AACL,UAAI,CAAC,KAAK,OAAQ;AAClB,UAAIvI,IAAQ,KAAK,OAAO,MAAM,IAAI;AAClC,aAAO,KAAK,OAAO,MAAMA,IAAQ,CAAC;AAAA,IACtC;AAAA,IAEE,WAAWsD,IAAO,IAAI;AACpB,UAAIR,IAAM,KAAK,OAAO;AACtB,UAAIQ,EAAK;AACP,QAAAR,IAAM,KAAK,eAAeQ,EAAK,KAAK;AAAA,eAC3BA,EAAK,MAAM;AACpB,YAAIkG,IACF,cAAc,KAAK,OAAO,QACtB,KAAK,OAAO,MAAM,WAClB,KAAK,OAAO,MAAM,KAKpBxJ,IAJuBwJ,EAAY;AAAA,UACrCV,EAAaU,GAAa,KAAK,OAAO,KAAK;AAAA,UAC3CV,EAAaU,GAAa,KAAK,OAAO,GAAG;AAAA,QACjD,EACuC,QAAQlG,EAAK,IAAI;AAClD,QAAItD,MAAU,OAAI8C,IAAM,KAAK,eAAe9C,CAAK;AAAA,MACvD;AACI,aAAO8C;AAAA,IACX;AAAA,IAEE,eAAe9C,GAAO;AACpB,UAAI8E,IAAS,KAAK,OAAO,MAAM,QAC3BD,IAAO,KAAK,OAAO,MAAM,MACzB2E,IACF,cAAc,KAAK,OAAO,QACtB,KAAK,OAAO,MAAM,WAClB,KAAK,OAAO,MAAM,KACpBR,IAASF,EAAaU,GAAa,KAAK,OAAO,KAAK,GACpD7D,IAAMqD,IAAShJ;AAEnB,eAASyE,IAAIuE,GAAQvE,IAAIkB,GAAKlB;AAC5B,QAAI+E,EAAY/E,CAAC,MAAM;AAAA,KACrBK,IAAS,GACTD,KAAQ,KAERC,KAAU;AAId,aAAO,EAAE,QAAAA,GAAQ,MAAAD,GAAM,QAAQc,EAAG;AAAA,IACtC;AAAA,IAEE,OAAO;AACL,UAAI,CAAC,KAAK,OAAQ;AAClB,UAAI3F,IAAQ,KAAK,OAAO,MAAM,IAAI;AAClC,aAAO,KAAK,OAAO,MAAMA,IAAQ,CAAC;AAAA,IACtC;AAAA,IAEE,QAAQsD,IAAO,IAAI;AACjB,UAAIkG,IACF,cAAc,KAAK,OAAO,QACtB,KAAK,OAAO,MAAM,WAClB,KAAK,OAAO,MAAM,KACpB9D,IAAQ;AAAA,QACV,QAAQ,KAAK,OAAO,MAAM;AAAA,QAC1B,MAAM,KAAK,OAAO,MAAM;AAAA,QACxB,QAAQoD,EAAaU,GAAa,KAAK,OAAO,KAAK;AAAA,MACzD,GACQ7D,IAAM,KAAK,OAAO,MAClB;AAAA,QACE,QAAQ,KAAK,OAAO,IAAI,SAAS;AAAA,QACjC,MAAM,KAAK,OAAO,IAAI;AAAA,QACtB,QACE,OAAO,KAAK,OAAO,IAAI,UAAW;AAAA;AAAA,UAE9B,KAAK,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,UAIhBmD,EAAaU,GAAa,KAAK,OAAO,GAAG,IAAI;AAAA;AAAA,MAC7D,IACQ;AAAA,QACE,QAAQ9D,EAAM,SAAS;AAAA,QACvB,MAAMA,EAAM;AAAA,QACZ,QAAQA,EAAM,SAAS;AAAA,MACjC;AAEI,UAAIpC,EAAK,MAAM;AAKb,YAAItD,IAJuBwJ,EAAY;AAAA,UACrCV,EAAaU,GAAa,KAAK,OAAO,KAAK;AAAA,UAC3CV,EAAaU,GAAa,KAAK,OAAO,GAAG;AAAA,QACjD,EACuC,QAAQlG,EAAK,IAAI;AAClD,QAAItD,MAAU,OACZ0F,IAAQ,KAAK,eAAe1F,CAAK,GACjC2F,IAAM,KAAK,eAAe3F,IAAQsD,EAAK,KAAK,MAAM;AAAA,MAE1D;AACM,QAAIA,EAAK,QACPoC,IAAQ;AAAA,UACN,QAAQpC,EAAK,MAAM;AAAA,UACnB,MAAMA,EAAK,MAAM;AAAA,UACjB,QAAQwF,EAAaU,GAAalG,EAAK,KAAK;AAAA,QACtD,IACiBA,EAAK,UACdoC,IAAQ,KAAK,eAAepC,EAAK,KAAK,IAGpCA,EAAK,MACPqC,IAAM;AAAA,UACJ,QAAQrC,EAAK,IAAI;AAAA,UACjB,MAAMA,EAAK,IAAI;AAAA,UACf,QAAQwF,EAAaU,GAAalG,EAAK,GAAG;AAAA,QACpD,IACiB,OAAOA,EAAK,YAAa,WAClCqC,IAAM,KAAK,eAAerC,EAAK,QAAQ,IAC9BA,EAAK,UACdqC,IAAM,KAAK,eAAerC,EAAK,QAAQ,CAAC;AAI5C,cACEqC,EAAI,OAAOD,EAAM,QAChBC,EAAI,SAASD,EAAM,QAAQC,EAAI,UAAUD,EAAM,YAEhDC,IAAM;AAAA,QACJ,QAAQD,EAAM,SAAS;AAAA,QACvB,MAAMA,EAAM;AAAA,QACZ,QAAQA,EAAM,SAAS;AAAA,MAC/B,IAGW,EAAE,KAAAC,GAAK,OAAAD,EAAK;AAAA,IACvB;AAAA,IAEE,IAAIsC,GAAMyB,GAAa;AAErB,aADU,IAAIjD,EAAW,EACd,IAAI,MAAMwB,GAAMyB,CAAW;AAAA,IAC1C;AAAA,IAEE,SAAS;AACP,aAAI,KAAK,UACP,KAAK,OAAO,YAAY,IAAI,GAE9B,KAAK,SAAS,QACP;AAAA,IACX;AAAA,IAEE,eAAeC,GAAO;AACpB,UAAI,KAAK,QAAQ;AACf,YAAIC,IAAW,MACXC,IAAY;AAChB,iBAASlD,KAAQgD;AACf,UAAIhD,MAAS,OACXkD,IAAY,KACHA,KACT,KAAK,OAAO,YAAYD,GAAUjD,CAAI,GACtCiD,IAAWjD,KAEX,KAAK,OAAO,aAAaiD,GAAUjD,CAAI;AAI3C,QAAKkD,KACH,KAAK,OAAM;AAAA,MAEnB;AAEI,aAAO;AAAA,IACX;AAAA,IAEE,OAAO;AACL,UAAI1J,IAAS;AACb,aAAOA,EAAO,UAAUA,EAAO,OAAO,SAAS;AAC7C,QAAAA,IAASA,EAAO;AAElB,aAAOA;AAAA,IACX;AAAA,IAEE,OAAO2J,GAAGC,GAAQ;AAChB,UAAIC,IAAQ,CAAA,GACRC,IAAaF,KAAU;AAC3B,MAAAA,IAASA,KAAU,oBAAI,IAAG;AAC1B,UAAIG,IAAkB;AAEtB,eAASrD,KAAQ,MAAM;AAKrB,YAJI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAMA,CAAI,KAIhDA,MAAS,YAAYA,MAAS,aAAc;AAChD,YAAIvC,IAAQ,KAAKuC,CAAI;AAErB,YAAI,MAAM,QAAQvC,CAAK;AACrB,UAAA0F,EAAMnD,CAAI,IAAIvC,EAAM,IAAI,CAAAI,MAClB,OAAOA,KAAM,YAAYA,EAAE,SACtBA,EAAE,OAAO,MAAMqF,CAAM,IAErBrF,CAEV;AAAA,iBACQ,OAAOJ,KAAU,YAAYA,EAAM;AAC5C,UAAA0F,EAAMnD,CAAI,IAAIvC,EAAM,OAAO,MAAMyF,CAAM;AAAA,iBAC9BlD,MAAS,UAAU;AAC5B,cAAIvC,KAAS,KAAM;AACnB,cAAI6F,IAAUJ,EAAO,IAAIzF,EAAM,KAAK;AACpC,UAAI6F,KAAW,SACbA,IAAUD,GACVH,EAAO,IAAIzF,EAAM,OAAO4F,CAAe,GACvCA,MAEFF,EAAMnD,CAAI,IAAI;AAAA,YACZ,KAAKvC,EAAM;AAAA,YACX,SAAA6F;AAAA,YACA,OAAO7F,EAAM;AAAA,UACvB;AAAA,QACA;AACQ,UAAA0F,EAAMnD,CAAI,IAAIvC;AAAA,MAEtB;AAEI,aAAI2F,MACFD,EAAM,SAAS,CAAC,GAAGD,EAAO,MAAM,EAAE,IAAI,CAAAhK,MAASA,EAAM,OAAM,CAAE,IAGxDiK;AAAA,IACX;AAAA,IAEE,UAAU;AACR,aAAK,KAAK,eACR,KAAK,aAAa,IAAI,MAAM,MAAM,KAAK,kBAAiB,CAAE,IAErD,KAAK;AAAA,IAChB;AAAA,IAEE,SAAS7B,IAAcC,GAAW;AAChC,MAAID,EAAY,cAAWA,IAAcA,EAAY;AACrD,UAAIhI,IAAS;AACb,aAAAgI,EAAY,MAAM,CAAAzD,MAAK;AACrB,QAAAvE,KAAUuE;AAAA,MAChB,CAAK,GACMvE;AAAA,IACX;AAAA,IAEE,KAAKA,GAAQiF,GAAM7B,IAAO,CAAA,GAAI;AAC5B,UAAI6G,IAAO,EAAE,MAAM,KAAI;AACvB,eAAS1F,KAAKnB,EAAM,CAAA6G,EAAK1F,CAAC,IAAInB,EAAKmB,CAAC;AACpC,aAAOvE,EAAO,KAAKiF,GAAMgF,CAAI;AAAA,IACjC;AAAA,EACA;AAEA,SAAAzD,KAAiBuC,GACjBA,EAAK,UAAUA;;;;;;AC9bf,MAAIA,IAAOrF,EAAA;AAAA,EAEX,MAAMwG,UAAgBnB,EAAK;AAAA,IACzB,YAAYC,GAAU;AACpB,YAAMA,CAAQ,GACd,KAAK,OAAO;AAAA,IAChB;AAAA,EACA;AAEAmB,SAAAA,KAAiBD,GACjBA,EAAQ,UAAUA;;;;;;ACVlB,MAAInB,IAAOrF,EAAA;AAAA,EAEX,MAAM0G,UAAoBrB,EAAK;AAAA,IAC7B,IAAI,WAAW;AACb,aAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM;AAAA,IAC1D;AAAA,IAEE,YAAYC,GAAU;AACpB,MACEA,KACA,OAAOA,EAAS,QAAU,OAC1B,OAAOA,EAAS,SAAU,aAE1BA,IAAW,EAAE,GAAGA,GAAU,OAAO,OAAOA,EAAS,KAAK,EAAC,IAEzD,MAAMA,CAAQ,GACd,KAAK,OAAO;AAAA,IAChB;AAAA,EACA;AAEA,SAAAqB,KAAiBD,GACjBA,EAAY,UAAUA;;;;;;ACrBtB,MAAIF,IAAUxG,EAAA,GACV0G,IAAcxG,EAAA,GACdmF,IAAOX,EAAA,GACP,EAAE,SAAAC,GAAS,IAAAC,EAAE,IAAKC,GAAA,GAElB+B,GAAQC,GAAOC,GAAMC;AAEzB,WAASC,EAAYlB,GAAO;AAC1B,WAAOA,EAAM,IAAI,CAAAjF,OACXA,EAAE,UAAOA,EAAE,QAAQmG,EAAYnG,EAAE,KAAK,IAC1C,OAAOA,EAAE,QACFA,EACR;AAAA,EACH;AAEA,WAASoG,EAAcnE,GAAM;AAE3B,QADAA,EAAK6B,CAAO,IAAI,IACZ7B,EAAK,QAAQ;AACf,eAASjC,KAAKiC,EAAK,QAAQ;AACzB,QAAAmE,EAAcpG,CAAC;AAAA,EAGrB;AAAA,EAEA,MAAMqG,UAAkB7B,EAAK;AAAA,IAC3B,IAAI,QAAQ;AACV,UAAK,KAAK,QAAQ;AAClB,eAAO,KAAK,QAAQ,MAAM,CAAC;AAAA,IAC/B;AAAA,IAEE,IAAI,OAAO;AACT,UAAK,KAAK,QAAQ;AAClB,eAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,SAAS,CAAC;AAAA,IAC3D;AAAA,IAEE,UAAU8B,GAAU;AAClB,eAASzD,KAASyD,GAAU;AAC1B,YAAIrB,IAAQ,KAAK,UAAUpC,GAAO,KAAK,IAAI;AAC3C,iBAASZ,KAAQgD,EAAO,MAAK,QAAQ,MAAM,KAAKhD,CAAI;AAAA,MAC1D;AAEI,kBAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,UAAU6C,GAAa;AAErB,UADA,MAAM,UAAUA,CAAW,GACvB,KAAK;AACP,iBAAS7C,KAAQ,KAAK,MAAO,CAAAA,EAAK,UAAU6C,CAAW;AAAA,IAE7D;AAAA,IAEE,KAAKyB,GAAU;AACb,UAAI,CAAC,KAAK,QAAQ,MAAO;AACzB,UAAIC,IAAW,KAAK,YAAW,GAE3BjL,GAAOE;AACX,aAAO,KAAK,QAAQ+K,CAAQ,IAAI,KAAK,QAAQ,MAAM,WACjDjL,IAAQ,KAAK,QAAQiL,CAAQ,GAC7B/K,IAAS8K,EAAS,KAAK,QAAQ,MAAMhL,CAAK,GAAGA,CAAK,GAC9CE,MAAW;AAEf,aAAK,QAAQ+K,CAAQ,KAAK;AAG5B,oBAAO,KAAK,QAAQA,CAAQ,GACrB/K;AAAA,IACX;AAAA,IAEE,MAAMgL,GAAW;AACf,aAAO,KAAK,MAAM,MAAMA,CAAS;AAAA,IACrC;AAAA,IAEE,cAAc;AACZ,MAAK,KAAK,aAAU,KAAK,WAAW,IAC/B,KAAK,YAAS,KAAK,UAAU,CAAA,IAElC,KAAK,YAAY;AACjB,UAAID,IAAW,KAAK;AACpB,kBAAK,QAAQA,CAAQ,IAAI,GAElBA;AAAA,IACX;AAAA,IAEE,oBAAoB;AAClB,aAAO;AAAA,QACL,IAAIvE,GAAMsB,GAAM;AACd,iBAAIA,MAAS,YACJtB,IACGA,EAAKsB,CAAI,IAGnBA,MAAS,UACR,OAAOA,KAAS,YAAYA,EAAK,WAAW,MAAM,IAE5C,IAAImD,MACFzE,EAAKsB,CAAI;AAAA,YACd,GAAGmD,EAAK,IAAI,CAAA1G,MACN,OAAOA,KAAM,aACR,CAAC6C,GAAOtH,MAAUyE,EAAE6C,EAAM,QAAO,GAAItH,CAAK,IAE1CyE,CAEV;AAAA,UACf,IAEmBuD,MAAS,WAAWA,MAAS,SAC/B,CAAAoD,MACE1E,EAAKsB,CAAI;AAAA,YAAE,CAACV,MAAU+D,MAC3BD,EAAG9D,EAAM,QAAO,GAAI,GAAG+D,CAAK;AAAA,UAC1C,IAEmBrD,MAAS,SACX,MAAMtB,EAAK,KAAI,EAAG,QAAO,IACvBsB,MAAS,UACXtB,EAAK,MAAM,IAAI,CAAAjC,MAAKA,EAAE,QAAO,CAAE,IAC7BuD,MAAS,WAAWA,MAAS,SAC/BtB,EAAKsB,CAAI,EAAE,QAAO,IAElBtB,EAAKsB,CAAI,IA7BTtB,EAAKsB,CAAI;AAAA,QA+B1B;AAAA,QAEM,IAAItB,GAAMsB,GAAM3D,GAAO;AACrB,iBAAIqC,EAAKsB,CAAI,MAAM3D,MACnBqC,EAAKsB,CAAI,IAAI3D,IACT2D,MAAS,UAAUA,MAAS,YAAYA,MAAS,eACnDtB,EAAK,UAAS,IAET;AAAA,QACf;AAAA,MACA;AAAA,IACA;AAAA,IAEE,MAAMY,GAAO;AACX,aAAI,OAAOA,KAAU,WAAiBA,KAClCA,EAAM,YAASA,IAAQA,EAAM,UAC1B,KAAK,QAAQ,MAAM,QAAQA,CAAK;AAAA,IAC3C;AAAA,IAEE,YAAYgE,GAAOjC,GAAK;AACtB,UAAIkC,IAAa,KAAK,MAAMD,CAAK,GAC7B5B,IAAQ,KAAK,UAAUL,GAAK,KAAK,QAAQ,MAAMkC,CAAU,CAAC,EAAE,QAAO;AACvE,MAAAA,IAAa,KAAK,MAAMD,CAAK;AAC7B,eAAS5E,KAAQgD,EAAO,MAAK,QAAQ,MAAM,OAAO6B,IAAa,GAAG,GAAG7E,CAAI;AAEzE,UAAI1G;AACJ,eAASwL,KAAM,KAAK;AAClB,QAAAxL,IAAQ,KAAK,QAAQwL,CAAE,GACnBD,IAAavL,MACf,KAAK,QAAQwL,CAAE,IAAIxL,IAAQ0J,EAAM;AAIrC,kBAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,aAAa4B,GAAOjC,GAAK;AACvB,UAAIkC,IAAa,KAAK,MAAMD,CAAK,GAC7BlH,IAAOmH,MAAe,IAAI,YAAY,IACtC7B,IAAQ,KAAK;AAAA,QACfL;AAAA,QACA,KAAK,QAAQ,MAAMkC,CAAU;AAAA,QAC7BnH;AAAA,MACN,EAAM,QAAO;AACT,MAAAmH,IAAa,KAAK,MAAMD,CAAK;AAC7B,eAAS5E,KAAQgD,EAAO,MAAK,QAAQ,MAAM,OAAO6B,GAAY,GAAG7E,CAAI;AAErE,UAAI1G;AACJ,eAASwL,KAAM,KAAK;AAClB,QAAAxL,IAAQ,KAAK,QAAQwL,CAAE,GACnBD,KAAcvL,MAChB,KAAK,QAAQwL,CAAE,IAAIxL,IAAQ0J,EAAM;AAIrC,kBAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,UAAUA,GAAO+B,GAAQ;AACvB,UAAI,OAAO/B,KAAU;AACnB,QAAAA,IAAQkB,EAAYH,EAAMf,CAAK,EAAE,KAAK;AAAA,eAC7B,OAAOA,IAAU;AAC1B,QAAAA,IAAQ,CAAA;AAAA,eACC,MAAM,QAAQA,CAAK,GAAG;AAC/B,QAAAA,IAAQA,EAAM,MAAM,CAAC;AACrB,iBAASjF,KAAKiF;AACZ,UAAIjF,EAAE,UAAQA,EAAE,OAAO,YAAYA,GAAG,QAAQ;AAAA,MAEtD,WAAeiF,EAAM,SAAS,UAAU,KAAK,SAAS,YAAY;AAC5D,QAAAA,IAAQA,EAAM,MAAM,MAAM,CAAC;AAC3B,iBAASjF,KAAKiF;AACZ,UAAIjF,EAAE,UAAQA,EAAE,OAAO,YAAYA,GAAG,QAAQ;AAAA,MAEtD,WAAeiF,EAAM;AACf,QAAAA,IAAQ,CAACA,CAAK;AAAA,eACLA,EAAM,MAAM;AACrB,YAAI,OAAOA,EAAM,QAAU;AACzB,gBAAM,IAAI,MAAM,wCAAwC;AACnD,QAAI,OAAOA,EAAM,SAAU,aAChCA,EAAM,QAAQ,OAAOA,EAAM,KAAK,IAElCA,IAAQ,CAAC,IAAIY,EAAYZ,CAAK,CAAC;AAAA,MACrC,WAAeA,EAAM,YAAYA,EAAM;AACjC,QAAAA,IAAQ,CAAC,IAAIiB,EAAKjB,CAAK,CAAC;AAAA,eACfA,EAAM;AACf,QAAAA,IAAQ,CAAC,IAAIc,EAAOd,CAAK,CAAC;AAAA,eACjBA,EAAM;AACf,QAAAA,IAAQ,CAAC,IAAIU,EAAQV,CAAK,CAAC;AAAA;AAE3B,cAAM,IAAI,MAAM,oCAAoC;AAoBtD,aAjBgBA,EAAM,IAAI,CAAAjF,OAEnBA,EAAE+D,CAAE,KAAGsC,EAAU,QAAQrG,CAAC,GAC/BA,IAAIA,EAAE,SACFA,EAAE,UAAQA,EAAE,OAAO,YAAYA,CAAC,GAChCA,EAAE8D,CAAO,KAAGsC,EAAcpG,CAAC,GAE1BA,EAAE,SAAMA,EAAE,OAAO,CAAA,IAClB,OAAOA,EAAE,KAAK,SAAW,OACvBgH,KAAU,OAAOA,EAAO,KAAK,SAAW,QAC1ChH,EAAE,KAAK,SAASgH,EAAO,KAAK,OAAO,QAAQ,OAAO,EAAE,IAGxDhH,EAAE,SAAS,KAAK,SACTA,EACR;AAAA,IAGL;AAAA,IAEE,WAAWsG,GAAU;AACnB,MAAAA,IAAWA,EAAS,QAAO;AAC3B,eAASzD,KAASyD,GAAU;AAC1B,YAAIrB,IAAQ,KAAK,UAAUpC,GAAO,KAAK,OAAO,SAAS,EAAE,QAAO;AAChE,iBAASZ,KAAQgD,EAAO,MAAK,QAAQ,MAAM,QAAQhD,CAAI;AACvD,iBAAS8E,KAAM,KAAK;AAClB,eAAK,QAAQA,CAAE,IAAI,KAAK,QAAQA,CAAE,IAAI9B,EAAM;AAAA,MAEpD;AAEI,kBAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,KAAKpC,GAAO;AACV,aAAAA,EAAM,SAAS,MACf,KAAK,QAAQ,MAAM,KAAKA,CAAK,GACtB;AAAA,IACX;AAAA,IAEE,YAAY;AACV,eAASZ,KAAQ,KAAK,QAAQ,MAAO,CAAAA,EAAK,SAAS;AACnD,kBAAK,QAAQ,QAAQ,CAAA,GAErB,KAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,YAAYY,GAAO;AACjB,MAAAA,IAAQ,KAAK,MAAMA,CAAK,GACxB,KAAK,QAAQ,MAAMA,CAAK,EAAE,SAAS,QACnC,KAAK,QAAQ,MAAM,OAAOA,GAAO,CAAC;AAElC,UAAItH;AACJ,eAASwL,KAAM,KAAK;AAClB,QAAAxL,IAAQ,KAAK,QAAQwL,CAAE,GACnBxL,KAASsH,MACX,KAAK,QAAQkE,CAAE,IAAIxL,IAAQ;AAI/B,kBAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,cAAc0L,GAASpI,GAAM0H,GAAU;AACrC,aAAKA,MACHA,IAAW1H,GACXA,IAAO,CAAA,IAGT,KAAK,UAAU,CAAAqI,MAAQ;AACrB,QAAIrI,EAAK,SAAS,CAACA,EAAK,MAAM,SAASqI,EAAK,IAAI,KAC5CrI,EAAK,QAAQ,CAACqI,EAAK,MAAM,SAASrI,EAAK,IAAI,MAE/CqI,EAAK,QAAQA,EAAK,MAAM,QAAQD,GAASV,CAAQ;AAAA,MACvD,CAAK,GAED,KAAK,UAAS,GAEP;AAAA,IACX;AAAA,IAEE,KAAKE,GAAW;AACd,aAAO,KAAK,MAAM,KAAKA,CAAS;AAAA,IACpC;AAAA,IAEE,KAAKF,GAAU;AACb,aAAO,KAAK,KAAK,CAAC1D,GAAO7C,MAAM;AAC7B,YAAIvE;AACJ,YAAI;AACF,UAAAA,IAAS8K,EAAS1D,GAAO7C,CAAC;AAAA,QAClC,SAAemH,GAAG;AACV,gBAAMtE,EAAM,WAAWsE,CAAC;AAAA,QAChC;AACM,eAAI1L,MAAW,MAASoH,EAAM,SAC5BpH,IAASoH,EAAM,KAAK0D,CAAQ,IAGvB9K;AAAA,MACb,CAAK;AAAA,IACL;AAAA,IAEE,YAAY0G,GAAMoE,GAAU;AAC1B,aAAKA,IAQDpE,aAAgB,SACX,KAAK,KAAK,CAACU,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,YAAYV,EAAK,KAAKU,EAAM,IAAI;AACjD,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO,IAEI,KAAK,KAAK,CAAC6C,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,YAAYA,EAAM,SAASV;AAC5C,iBAAOoE,EAAS1D,GAAO7C,CAAC;AAAA,MAEhC,CAAK,KAlBCuG,IAAWpE,GACJ,KAAK,KAAK,CAACU,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS;AACjB,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO;AAAA,IAcP;AAAA,IAEE,aAAauG,GAAU;AACrB,aAAO,KAAK,KAAK,CAAC1D,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS;AACjB,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAEhC,CAAK;AAAA,IACL;AAAA,IAEE,UAAUuD,GAAMgD,GAAU;AACxB,aAAKA,IAQDhD,aAAgB,SACX,KAAK,KAAK,CAACV,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,UAAUU,EAAK,KAAKV,EAAM,IAAI;AAC/C,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO,IAEI,KAAK,KAAK,CAAC6C,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,UAAUA,EAAM,SAASU;AAC1C,iBAAOgD,EAAS1D,GAAO7C,CAAC;AAAA,MAEhC,CAAK,KAlBCuG,IAAWhD,GACJ,KAAK,KAAK,CAACV,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS;AACjB,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO;AAAA,IAcP;AAAA,IAEE,UAAUoH,GAAUb,GAAU;AAC5B,aAAKA,IASDa,aAAoB,SACf,KAAK,KAAK,CAACvE,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,UAAUuE,EAAS,KAAKvE,EAAM,QAAQ;AACvD,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO,IAEI,KAAK,KAAK,CAAC6C,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS,UAAUA,EAAM,aAAauE;AAC9C,iBAAOb,EAAS1D,GAAO7C,CAAC;AAAA,MAEhC,CAAK,KAnBCuG,IAAWa,GAEJ,KAAK,KAAK,CAACvE,GAAO7C,MAAM;AAC7B,YAAI6C,EAAM,SAAS;AACjB,iBAAO0D,EAAS1D,GAAO7C,CAAC;AAAA,MAElC,CAAO;AAAA,IAcP;AAAA,EACA;AAEA,SAAAqG,EAAU,gBAAgB,CAAA7G,MAAa;AACrC,IAAAwG,IAAQxG;AAAA,EACV,GAEA6G,EAAU,eAAe,CAAA7G,MAAa;AACpC,IAAA0G,IAAO1G;AAAA,EACT,GAEA6G,EAAU,iBAAiB,CAAA7G,MAAa;AACtC,IAAAuG,IAASvG;AAAA,EACX,GAEA6G,EAAU,eAAe,CAAA7G,MAAa;AACpC,IAAAyG,IAAOzG;AAAA,EACT,GAEA6H,KAAiBhB,GACjBA,EAAU,UAAUA,GAGpBA,EAAU,UAAU,CAAApE,MAAQ;AAC1B,IAAIA,EAAK,SAAS,WAChB,OAAO,eAAeA,GAAM8D,EAAO,SAAS,IACnC9D,EAAK,SAAS,SACvB,OAAO,eAAeA,GAAMiE,EAAK,SAAS,IACjCjE,EAAK,SAAS,SACvB,OAAO,eAAeA,GAAM4D,EAAY,SAAS,IACxC5D,EAAK,SAAS,YACvB,OAAO,eAAeA,GAAM0D,EAAQ,SAAS,IACpC1D,EAAK,SAAS,UACvB,OAAO,eAAeA,GAAMgE,EAAK,SAAS,GAG5ChE,EAAK8B,CAAE,IAAI,IAEP9B,EAAK,SACPA,EAAK,MAAM,QAAQ,CAAAY,MAAS;AAC1B,MAAAwD,EAAU,QAAQxD,CAAK;AAAA,IAC7B,CAAK;AAAA,EAEL;;;;;;AC3bA,MAAIwD,IAAYlH,EAAA;AAAA,EAEhB,MAAM4G,UAAeM,EAAU;AAAA,IAC7B,YAAY5B,GAAU;AACpB,YAAMA,CAAQ,GACd,KAAK,OAAO;AAAA,IAChB;AAAA,IAEE,UAAU6B,GAAU;AAClB,aAAK,KAAK,QAAQ,UAAO,KAAK,QAAQ,CAAA,IAC/B,MAAM,OAAO,GAAGA,CAAQ;AAAA,IACnC;AAAA,IAEE,WAAWA,GAAU;AACnB,aAAK,KAAK,QAAQ,UAAO,KAAK,QAAQ,CAAA,IAC/B,MAAM,QAAQ,GAAGA,CAAQ;AAAA,IACpC;AAAA,EACA;AAEAgB,SAAAA,KAAiBvB,GACjBA,EAAO,UAAUA,GAEjBM,EAAU,eAAeN,CAAM;;;;;;ACtB/B,MAAIM,IAAYlH,EAAA,GAEZoI,GAAYC;AAAA,EAEhB,MAAMC,UAAiBpB,EAAU;AAAA,IAC/B,YAAY5B,GAAU;AAEpB,YAAM,EAAE,MAAM,YAAY,GAAGA,EAAQ,CAAE,GAElC,KAAK,UACR,KAAK,QAAQ,CAAA;AAAA,IAEnB;AAAA,IAEE,SAAS5F,IAAO,IAAI;AAGlB,aAFW,IAAI0I,EAAW,IAAIC,EAAS,GAAI,MAAM3I,CAAI,EAEzC,UAAS;AAAA,IACzB;AAAA,EACA;AAEA,SAAA4I,EAAS,qBAAqB,CAAAjI,MAAa;AACzC,IAAA+H,IAAa/H;AAAA,EACf,GAEAiI,EAAS,oBAAoB,CAAAjI,MAAa;AACxC,IAAAgI,IAAYhI;AAAA,EACd,GAEAkI,KAAiBD,GACjBA,EAAS,UAAUA;;;;;;AC1BnB,MAAIE,IACF;AA0BF,SAAAC,KAAiB,EAAE,QAXN,CAACC,IAAO,OAAO;AAC1B,QAAId,IAAK,IAEL/G,IAAI6H,IAAO;AACf,WAAO7H;AAEL,MAAA+G,KAAMY,EAAa,KAAK,OAAM,IAAK,KAAM,CAAC;AAE5C,WAAOZ;AAAA,EACT,GAE2B,gBAxBN,CAACe,GAAUC,IAAc,OACrC,CAACF,IAAOE,MAAgB;AAC7B,QAAIhB,IAAK,IAEL/G,IAAI6H,IAAO;AACf,WAAO7H;AAEL,MAAA+G,KAAMe,EAAU,KAAK,OAAM,IAAKA,EAAS,SAAU,CAAC;AAEtD,WAAOf;AAAA,EACX,EAcyC;;;;;;AC1BzC,MAAIiB,IAAe,mEAAmE,MAAM,EAAE;AAK9F,SAAAC,EAAA,SAAiB,SAAU7G,GAAQ;AACjC,QAAI,KAAKA,KAAUA,IAAS4G,EAAa;AACvC,aAAOA,EAAa5G,CAAM;AAE5B,UAAM,IAAI,UAAU,+BAA+BA,CAAM;AAAA,EAC3D,GAMA6G,EAAA,SAAiB,SAAUC,GAAU;AACnC,QAAIC,IAAO,IACPC,IAAO,IAEPC,IAAU,IACVC,IAAU,KAEVC,IAAO,IACPC,IAAO,IAEPC,IAAO,IACPC,IAAQ,IAERC,IAAe,IACfC,IAAe;AAGnB,WAAIT,KAAQD,KAAYA,KAAYE,IAC1BF,IAAWC,IAIjBE,KAAWH,KAAYA,KAAYI,IAC7BJ,IAAWG,IAAUM,IAI3BJ,KAAQL,KAAYA,KAAYM,IAC1BN,IAAWK,IAAOK,IAIxBV,KAAYO,IACP,KAILP,KAAYQ,IACP,KAIF;AAAA,EACT;;;;;;AC7BA,MAAIT,IAAS9I,GAAA,GAcT0J,IAAiB,GAGjBC,IAAW,KAAKD,GAGhBE,IAAgBD,IAAW,GAG3BE,IAAuBF;AAQ3B,WAASG,EAAYC,GAAQ;AAC3B,WAAOA,IAAS,KACV,CAACA,KAAW,KAAK,KAClBA,KAAU,KAAK;AAAA,EACtB;AAQA,WAASC,EAAcD,GAAQ;AAC7B,QAAIE,KAAcF,IAAS,OAAO,GAC9BG,IAAUH,KAAU;AACxB,WAAOE,IACH,CAACC,IACDA;AAAA,EACN;AAKA,SAAAC,EAAA,SAAiB,SAA0BJ,GAAQ;AACjD,QAAIK,IAAU,IACVC,GAEAC,IAAMR,EAAYC,CAAM;AAE5B;AACE,MAAAM,IAAQC,IAAMV,GACdU,OAASZ,GACLY,IAAM,MAGRD,KAASR,IAEXO,KAAWtB,EAAO,OAAOuB,CAAK;AAAA,WACvBC,IAAM;AAEf,WAAOF;AAAA,EACT,GAMAD,EAAA,SAAiB,SAA0BI,GAAMC,GAAQC,GAAW;AAClE,QAAIC,IAASH,EAAK,QACdjO,IAAS,GACTqO,IAAQ,GACRC,GAAcP;AAElB,OAAG;AACD,UAAIG,KAAUE;AACZ,cAAM,IAAI,MAAM,4CAA4C;AAI9D,UADAL,IAAQvB,EAAO,OAAOyB,EAAK,WAAWC,GAAQ,CAAC,GAC3CH,MAAU;AACZ,cAAM,IAAI,MAAM,2BAA2BE,EAAK,OAAOC,IAAS,CAAC,CAAC;AAGpE,MAAAI,IAAe,CAAC,EAAEP,IAAQR,IAC1BQ,KAAST,GACTtN,IAASA,KAAU+N,KAASM,IAC5BA,KAASjB;AAAA,IACb,SAAWkB;AAET,IAAAH,EAAU,QAAQT,EAAc1N,CAAM,GACtCmO,EAAU,OAAOD;AAAA,EACnB;;;;;AC1HA,aAASK,EAAOC,GAAOC,GAAOC,GAAe;AAC3C,UAAID,KAASD;AACX,eAAOA,EAAMC,CAAK;AACb,UAAI,UAAU,WAAW;AAC9B,eAAOC;AAEP,YAAM,IAAI,MAAM,MAAMD,IAAQ,2BAA2B;AAAA,IAE7D;AACA,IAAAE,EAAA,SAAiBJ;AAEjB,QAAIK,IAAY,kEACZC,IAAgB;AAEpB,aAASC,EAASC,GAAM;AACtB,UAAIC,IAAQD,EAAK,MAAMH,CAAS;AAChC,aAAKI,IAGE;AAAA,QACL,QAAQA,EAAM,CAAC;AAAA,QACf,MAAMA,EAAM,CAAC;AAAA,QACb,MAAMA,EAAM,CAAC;AAAA,QACb,MAAMA,EAAM,CAAC;AAAA,QACb,MAAMA,EAAM,CAAC;AAAA,UAPN;AAAA,IASX;AACA,IAAAL,EAAA,WAAmBG;AAEnB,aAASG,EAAYC,GAAY;AAC/B,UAAIC,IAAM;AACV,aAAID,EAAW,WACbC,KAAOD,EAAW,SAAS,MAE7BC,KAAO,MACHD,EAAW,SACbC,KAAOD,EAAW,OAAO,MAEvBA,EAAW,SACbC,KAAOD,EAAW,OAEhBA,EAAW,SACbC,KAAO,MAAMD,EAAW,OAEtBA,EAAW,SACbC,KAAOD,EAAW,OAEbC;AAAA,IACT;AACA,IAAAR,EAAA,cAAsBM;AAEtB,QAAIG,IAAoB;AASxB,aAASC,EAAWjP,GAAG;AACrB,UAAIkP,IAAQ,CAAA;AAEZ,aAAO,SAAS1P,GAAO;AACrB,iBAAS2E,IAAI,GAAGA,IAAI+K,EAAM,QAAQ/K;AAChC,cAAI+K,EAAM/K,CAAC,EAAE,UAAU3E,GAAO;AAC5B,gBAAI2P,IAAOD,EAAM,CAAC;AAClB,mBAAAA,EAAM,CAAC,IAAIA,EAAM/K,CAAC,GAClB+K,EAAM/K,CAAC,IAAIgL,GACJD,EAAM,CAAC,EAAE;AAAA,UACxB;AAGI,YAAItP,IAASI,EAAER,CAAK;AAEpB,eAAA0P,EAAM,QAAQ;AAAA,UACZ,OAAA1P;AAAA,UACA,QAAAI;AAAA,QACN,CAAK,GAEGsP,EAAM,SAASF,KACjBE,EAAM,IAAG,GAGJtP;AAAA,MACX;AAAA,IACA;AAaA,QAAIwP,IAAYH,EAAW,SAAmBI,GAAO;AACnD,UAAIC,IAAOD,GACPN,IAAML,EAASW,CAAK;AACxB,UAAIN,GAAK;AACP,YAAI,CAACA,EAAI;AACP,iBAAOM;AAET,QAAAC,IAAOP,EAAI;AAAA,MACf;AAOE,eANIQ,IAAahB,EAAQ,WAAWe,CAAI,GAGpC7H,IAAQ,CAAA,GACRrC,IAAQ,GACRjB,IAAI;AAIN,YAFAiB,IAAQjB,GACRA,IAAImL,EAAK,QAAQ,KAAKlK,CAAK,GACvBjB,MAAM,IAAI;AACZ,UAAAsD,EAAM,KAAK6H,EAAK,MAAMlK,CAAK,CAAC;AAC5B;AAAA,QACN;AAEM,eADAqC,EAAM,KAAK6H,EAAK,MAAMlK,GAAOjB,CAAC,CAAC,GACxBA,IAAImL,EAAK,UAAUA,EAAKnL,CAAC,MAAM;AACpC,YAAAA;AAKN,eAASqL,GAAMC,IAAK,GAAGtL,IAAIsD,EAAM,SAAS,GAAGtD,KAAK,GAAGA;AACnD,QAAAqL,IAAO/H,EAAMtD,CAAC,GACVqL,MAAS,MACX/H,EAAM,OAAOtD,GAAG,CAAC,IACRqL,MAAS,OAClBC,MACSA,IAAK,MACVD,MAAS,MAIX/H,EAAM,OAAOtD,IAAI,GAAGsL,CAAE,GACtBA,IAAK,MAELhI,EAAM,OAAOtD,GAAG,CAAC,GACjBsL;AAUN,aANAH,IAAO7H,EAAM,KAAK,GAAG,GAEjB6H,MAAS,OACXA,IAAOC,IAAa,MAAM,MAGxBR,KACFA,EAAI,OAAOO,GACJT,EAAYE,CAAG,KAEjBO;AAAA,IACT,CAAC;AACD,IAAAf,EAAA,YAAoBa;AAkBpB,aAASM,EAAKC,GAAON,GAAO;AAC1B,MAAIM,MAAU,OACZA,IAAQ,MAENN,MAAU,OACZA,IAAQ;AAEV,UAAIO,IAAWlB,EAASW,CAAK,GACzBQ,IAAWnB,EAASiB,CAAK;AAM7B,UALIE,MACFF,IAAQE,EAAS,QAAQ,MAIvBD,KAAY,CAACA,EAAS;AACxB,eAAIC,MACFD,EAAS,SAASC,EAAS,SAEtBhB,EAAYe,CAAQ;AAG7B,UAAIA,KAAYP,EAAM,MAAMZ,CAAa;AACvC,eAAOY;AAIT,UAAIQ,KAAY,CAACA,EAAS,QAAQ,CAACA,EAAS;AAC1C,eAAAA,EAAS,OAAOR,GACTR,EAAYgB,CAAQ;AAG7B,UAAIC,IAAST,EAAM,OAAO,CAAC,MAAM,MAC7BA,IACAD,EAAUO,EAAM,QAAQ,QAAQ,EAAE,IAAI,MAAMN,CAAK;AAErD,aAAIQ,KACFA,EAAS,OAAOC,GACTjB,EAAYgB,CAAQ,KAEtBC;AAAA,IACT;AACA,IAAAvB,EAAA,OAAemB,GAEfnB,EAAA,aAAqB,SAAUc,GAAO;AACpC,aAAOA,EAAM,OAAO,CAAC,MAAM,OAAOb,EAAU,KAAKa,CAAK;AAAA,IACxD;AAQA,aAASU,EAASJ,GAAON,GAAO;AAC9B,MAAIM,MAAU,OACZA,IAAQ,MAGVA,IAAQA,EAAM,QAAQ,OAAO,EAAE;AAO/B,eADIK,IAAQ,GACLX,EAAM,QAAQM,IAAQ,GAAG,MAAM,KAAG;AACvC,YAAIjQ,IAAQiQ,EAAM,YAAY,GAAG;AASjC,YARIjQ,IAAQ,MAOZiQ,IAAQA,EAAM,MAAM,GAAGjQ,CAAK,GACxBiQ,EAAM,MAAM,mBAAmB;AACjC,iBAAON;AAGT,UAAEW;AAAA,MACN;AAGE,aAAO,MAAMA,IAAQ,CAAC,EAAE,KAAK,KAAK,IAAIX,EAAM,OAAOM,EAAM,SAAS,CAAC;AAAA,IACrE;AACA,IAAApB,EAAA,WAAmBwB;AAEnB,QAAIE,KAAqB,WAAY;AACnC,UAAI5H,IAAM,uBAAO,OAAO,IAAI;AAC5B,aAAO,EAAE,eAAeA;AAAA,IAC1B;AAEA,aAAS6H,EAAUpH,GAAG;AACpB,aAAOA;AAAA,IACT;AAWA,aAASqH,EAAYtC,GAAM;AACzB,aAAIuC,EAAcvC,CAAI,IACb,MAAMA,IAGRA;AAAA,IACT;AACA,IAAAU,EAAA,cAAsB0B,IAAoBC,IAAWC;AAErD,aAASE,EAAcxC,GAAM;AAC3B,aAAIuC,EAAcvC,CAAI,IACbA,EAAK,MAAM,CAAC,IAGdA;AAAA,IACT;AACA,IAAAU,EAAA,gBAAwB0B,IAAoBC,IAAWG;AAEvD,aAASD,EAActH,GAAG;AACxB,UAAI,CAACA;AACH,eAAO;AAGT,UAAIvG,IAASuG,EAAE;AAMf,UAJIvG,IAAS,KAITuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,MAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,MAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,OAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,OAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,OAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,OAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,OAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM,MAC7BuG,EAAE,WAAWvG,IAAS,CAAC,MAAM;AAC/B,eAAO;AAGT,eAAS4B,IAAI5B,IAAS,IAAI4B,KAAK,GAAGA;AAChC,YAAI2E,EAAE,WAAW3E,CAAC,MAAM;AACtB,iBAAO;AAIX,aAAO;AAAA,IACT;AAUA,aAASmM,EAA2BC,GAAUC,GAAUC,GAAqB;AAC3E,UAAIC,IAAMC,EAAOJ,EAAS,QAAQC,EAAS,MAAM;AAqBjD,aApBIE,MAAQ,MAIZA,IAAMH,EAAS,eAAeC,EAAS,cACnCE,MAAQ,OAIZA,IAAMH,EAAS,iBAAiBC,EAAS,gBACrCE,MAAQ,KAAKD,OAIjBC,IAAMH,EAAS,kBAAkBC,EAAS,iBACtCE,MAAQ,OAIZA,IAAMH,EAAS,gBAAgBC,EAAS,eACpCE,MAAQ,KACHA,IAGFC,EAAOJ,EAAS,MAAMC,EAAS,IAAI;AAAA,IAC5C;AACA,IAAAjC,EAAA,6BAAqC+B;AAErC,aAASM,EAAmCL,GAAUC,GAAUC,GAAqB;AACnF,UAAIC;AAkBJ,aAhBAA,IAAMH,EAAS,eAAeC,EAAS,cACnCE,MAAQ,MAIZA,IAAMH,EAAS,iBAAiBC,EAAS,gBACrCE,MAAQ,KAAKD,OAIjBC,IAAMH,EAAS,kBAAkBC,EAAS,iBACtCE,MAAQ,OAIZA,IAAMH,EAAS,gBAAgBC,EAAS,eACpCE,MAAQ,KACHA,IAGFC,EAAOJ,EAAS,MAAMC,EAAS,IAAI;AAAA,IAC5C;AACA,IAAAjC,EAAA,qCAA6CqC;AAW7C,aAASC,EAAoCN,GAAUC,GAAUM,GAAsB;AACrF,UAAIJ,IAAMH,EAAS,gBAAgBC,EAAS;AAqB5C,aApBIE,MAAQ,MAIZA,IAAMH,EAAS,kBAAkBC,EAAS,iBACtCE,MAAQ,KAAKI,OAIjBJ,IAAMC,EAAOJ,EAAS,QAAQC,EAAS,MAAM,GACzCE,MAAQ,OAIZA,IAAMH,EAAS,eAAeC,EAAS,cACnCE,MAAQ,OAIZA,IAAMH,EAAS,iBAAiBC,EAAS,gBACrCE,MAAQ,KACHA,IAGFC,EAAOJ,EAAS,MAAMC,EAAS,IAAI;AAAA,IAC5C;AACA,IAAAjC,EAAA,sCAA8CsC;AAE9C,aAASE,EAA0CR,GAAUC,GAAUM,GAAsB;AAC3F,UAAIJ,IAAMH,EAAS,kBAAkBC,EAAS;AAgB9C,aAfIE,MAAQ,KAAKI,MAIjBJ,IAAMC,EAAOJ,EAAS,QAAQC,EAAS,MAAM,GACzCE,MAAQ,OAIZA,IAAMH,EAAS,eAAeC,EAAS,cACnCE,MAAQ,OAIZA,IAAMH,EAAS,iBAAiBC,EAAS,gBACrCE,MAAQ,KACHA,IAGFC,EAAOJ,EAAS,MAAMC,EAAS,IAAI;AAAA,IAC5C;AACA,IAAAjC,EAAA,4CAAoDwC;AAEpD,aAASJ,EAAOK,GAAOC,GAAO;AAC5B,aAAID,MAAUC,IACL,IAGLD,MAAU,OACL,IAGLC,MAAU,OACL,KAGLD,IAAQC,IACH,IAGF;AAAA,IACT;AAMA,aAASC,EAAoCX,GAAUC,GAAU;AAC/D,UAAIE,IAAMH,EAAS,gBAAgBC,EAAS;AAqB5C,aApBIE,MAAQ,MAIZA,IAAMH,EAAS,kBAAkBC,EAAS,iBACtCE,MAAQ,OAIZA,IAAMC,EAAOJ,EAAS,QAAQC,EAAS,MAAM,GACzCE,MAAQ,OAIZA,IAAMH,EAAS,eAAeC,EAAS,cACnCE,MAAQ,OAIZA,IAAMH,EAAS,iBAAiBC,EAAS,gBACrCE,MAAQ,KACHA,IAGFC,EAAOJ,EAAS,MAAMC,EAAS,IAAI;AAAA,IAC5C;AACA,IAAAjC,EAAA,sCAA8C2C;AAO9C,aAASC,EAAoBlL,GAAK;AAChC,aAAO,KAAK,MAAMA,EAAI,QAAQ,kBAAkB,EAAE,CAAC;AAAA,IACrD;AACA,IAAAsI,EAAA,sBAA8B4C;AAM9B,aAASC,EAAiBC,GAAYC,GAAWC,GAAc;AA8B7D,UA7BAD,IAAYA,KAAa,IAErBD,MAEEA,EAAWA,EAAW,SAAS,CAAC,MAAM,OAAOC,EAAU,CAAC,MAAM,QAChED,KAAc,MAOhBC,IAAYD,IAAaC,IAiBvBC,GAAc;AAChB,YAAIC,IAAS9C,EAAS6C,CAAY;AAClC,YAAI,CAACC;AACH,gBAAM,IAAI,MAAM,kCAAkC;AAEpD,YAAIA,EAAO,MAAM;AAEf,cAAI9R,IAAQ8R,EAAO,KAAK,YAAY,GAAG;AACvC,UAAI9R,KAAS,MACX8R,EAAO,OAAOA,EAAO,KAAK,UAAU,GAAG9R,IAAQ,CAAC;AAAA,QAExD;AACI,QAAA4R,IAAY5B,EAAKb,EAAY2C,CAAM,GAAGF,CAAS;AAAA,MACnD;AAEE,aAAOlC,EAAUkC,CAAS;AAAA,IAC5B;AACA,IAAA/C,EAAA,mBAA2B6C;AAAA;;;;;;AC1kB3B,MAAIK,IAAOnO,EAAA,GACPoO,IAAM,OAAO,UAAU,gBACvBC,IAAe,OAAO,MAAQ;AAQlC,WAASC,IAAW;AAClB,SAAK,SAAS,CAAA,GACd,KAAK,OAAOD,IAAe,oBAAI,IAAG,IAAK,uBAAO,OAAO,IAAI;AAAA,EAC3D;AAKA,SAAAC,EAAS,YAAY,SAA4BC,GAAQC,GAAkB;AAEzE,aADIC,IAAM,IAAIH,EAAQ,GACbzN,IAAI,GAAG6N,IAAMH,EAAO,QAAQ1N,IAAI6N,GAAK7N;AAC5C,MAAA4N,EAAI,IAAIF,EAAO1N,CAAC,GAAG2N,CAAgB;AAErC,WAAOC;AAAA,EACT,GAQAH,EAAS,UAAU,OAAO,WAAyB;AACjD,WAAOD,IAAe,KAAK,KAAK,OAAO,OAAO,oBAAoB,KAAK,IAAI,EAAE;AAAA,EAC/E,GAOAC,EAAS,UAAU,MAAM,SAAsB/D,GAAMiE,GAAkB;AACrE,QAAIG,IAAON,IAAe9D,IAAO4D,EAAK,YAAY5D,CAAI,GAClDqE,IAAcP,IAAe,KAAK,IAAI9D,CAAI,IAAI6D,EAAI,KAAK,KAAK,MAAMO,CAAI,GACtEE,IAAM,KAAK,OAAO;AACtB,KAAI,CAACD,KAAeJ,MAClB,KAAK,OAAO,KAAKjE,CAAI,GAElBqE,MACCP,IACF,KAAK,KAAK,IAAI9D,GAAMsE,CAAG,IAEvB,KAAK,KAAKF,CAAI,IAAIE;AAAA,EAGxB,GAOAP,EAAS,UAAU,MAAM,SAAsB/D,GAAM;AACnD,QAAI8D;AACF,aAAO,KAAK,KAAK,IAAI9D,CAAI;AAEzB,QAAIoE,IAAOR,EAAK,YAAY5D,CAAI;AAChC,WAAO6D,EAAI,KAAK,KAAK,MAAMO,CAAI;AAAA,EAEnC,GAOAL,EAAS,UAAU,UAAU,SAA0B/D,GAAM;AAC3D,QAAI8D,GAAc;AAChB,UAAIQ,IAAM,KAAK,KAAK,IAAItE,CAAI;AAC5B,UAAIsE,KAAO;AACP,eAAOA;AAAA,IAEf,OAAS;AACL,UAAIF,IAAOR,EAAK,YAAY5D,CAAI;AAChC,UAAI6D,EAAI,KAAK,KAAK,MAAMO,CAAI;AAC1B,eAAO,KAAK,KAAKA,CAAI;AAAA,IAE3B;AAEE,UAAM,IAAI,MAAM,MAAMpE,IAAO,sBAAsB;AAAA,EACrD,GAOA+D,EAAS,UAAU,KAAK,SAAqBQ,GAAM;AACjD,QAAIA,KAAQ,KAAKA,IAAO,KAAK,OAAO;AAClC,aAAO,KAAK,OAAOA,CAAI;AAEzB,UAAM,IAAI,MAAM,2BAA2BA,CAAI;AAAA,EACjD,GAOAR,EAAS,UAAU,UAAU,WAA4B;AACvD,WAAO,KAAK,OAAO,MAAK;AAAA,EAC1B,GAEAS,GAAA,WAAmBT;;;;;;ACjHnB,MAAIH,IAAOnO,EAAA;AAMX,WAASgP,EAAuB/B,GAAUC,GAAU;AAElD,QAAI+B,IAAQhC,EAAS,eACjBiC,IAAQhC,EAAS,eACjBiC,IAAUlC,EAAS,iBACnBmC,IAAUlC,EAAS;AACvB,WAAOgC,IAAQD,KAASC,KAASD,KAASG,KAAWD,KAC9ChB,EAAK,oCAAoClB,GAAUC,CAAQ,KAAK;AAAA,EACzE;AAOA,WAASmC,IAAc;AACrB,SAAK,SAAS,CAAA,GACd,KAAK,UAAU,IAEf,KAAK,QAAQ,EAAC,eAAe,IAAI,iBAAiB,EAAC;AAAA,EACrD;AAQA,SAAAA,EAAY,UAAU,kBACpB,SAA6BC,GAAWC,GAAU;AAChD,SAAK,OAAO,QAAQD,GAAWC,CAAQ;AAAA,EAC3C,GAOAF,EAAY,UAAU,MAAM,SAAyBG,GAAU;AAC7D,IAAIR,EAAuB,KAAK,OAAOQ,CAAQ,KAC7C,KAAK,QAAQA,GACb,KAAK,OAAO,KAAKA,CAAQ,MAEzB,KAAK,UAAU,IACf,KAAK,OAAO,KAAKA,CAAQ;AAAA,EAE7B,GAWAH,EAAY,UAAU,UAAU,WAA+B;AAC7D,WAAK,KAAK,YACR,KAAK,OAAO,KAAKlB,EAAK,mCAAmC,GACzD,KAAK,UAAU,KAEV,KAAK;AAAA,EACd,GAEAsB,GAAA,cAAsBJ;;;;;;ACvEtB,MAAIK,IAAY1P,GAAA,GACZmO,IAAOjO,EAAA,GACPoO,IAAW5J,GAAA,EAAuB,UAClC2K,IAAcxK,GAAA,EAA0B;AAU5C,WAAS8K,EAAmB7E,GAAO;AACjC,IAAKA,MACHA,IAAQ,CAAA,IAEV,KAAK,QAAQqD,EAAK,OAAOrD,GAAO,QAAQ,IAAI,GAC5C,KAAK,cAAcqD,EAAK,OAAOrD,GAAO,cAAc,IAAI,GACxD,KAAK,kBAAkBqD,EAAK,OAAOrD,GAAO,kBAAkB,EAAK,GACjE,KAAK,wBAAwBqD,EAAK,OAAOrD,GAAO,wBAAwB,EAAK,GAC7E,KAAK,WAAW,IAAIwD,EAAQ,GAC5B,KAAK,SAAS,IAAIA,EAAQ,GAC1B,KAAK,YAAY,IAAIe,EAAW,GAChC,KAAK,mBAAmB;AAAA,EAC1B;AAEA,SAAAM,EAAmB,UAAU,WAAW,GAOxCA,EAAmB,gBACjB,SAA0CC,GAAoBC,GAAc;AAC1E,QAAI9B,IAAa6B,EAAmB,YAChCE,IAAY,IAAIH,EAAmB,OAAO,OAAOE,KAAgB,IAAI;AAAA,MACvE,MAAMD,EAAmB;AAAA,MACzB,YAAY7B;AAAA,IAClB,CAAK,CAAC;AACF,WAAA6B,EAAmB,YAAY,SAAUG,GAAS;AAChD,UAAIC,IAAa;AAAA,QACf,WAAW;AAAA,UACT,MAAMD,EAAQ;AAAA,UACd,QAAQA,EAAQ;AAAA,QAC1B;AAAA;AAGM,MAAIA,EAAQ,UAAU,SACpBC,EAAW,SAASD,EAAQ,QACxBhC,KAAc,SAChBiC,EAAW,SAAS7B,EAAK,SAASJ,GAAYiC,EAAW,MAAM,IAGjEA,EAAW,WAAW;AAAA,QACpB,MAAMD,EAAQ;AAAA,QACd,QAAQA,EAAQ;AAAA,SAGdA,EAAQ,QAAQ,SAClBC,EAAW,OAAOD,EAAQ,QAI9BD,EAAU,WAAWE,CAAU;AAAA,IACrC,CAAK,GACDJ,EAAmB,QAAQ,QAAQ,SAAUK,GAAY;AACvD,UAAIC,IAAiBD;AACrB,MAAIlC,MAAe,SACjBmC,IAAiB/B,EAAK,SAASJ,GAAYkC,CAAU,IAGlDH,EAAU,SAAS,IAAII,CAAc,KACxCJ,EAAU,SAAS,IAAII,CAAc;AAGvC,UAAI1R,IAAUoR,EAAmB,iBAAiBK,CAAU;AAC5D,MAAIzR,KAAW,QACbsR,EAAU,iBAAiBG,GAAYzR,CAAO;AAAA,IAEtD,CAAK,GACMsR;AAAA,EACX,GAYAH,EAAmB,UAAU,aAC3B,SAAuC7E,GAAO;AAC5C,QAAIqF,IAAYhC,EAAK,OAAOrD,GAAO,WAAW,GAC1CsF,IAAWjC,EAAK,OAAOrD,GAAO,YAAY,IAAI,GAC9C3J,IAASgN,EAAK,OAAOrD,GAAO,UAAU,IAAI,GAC1C9H,IAAOmL,EAAK,OAAOrD,GAAO,QAAQ,IAAI;AAE1C,IAAI,CAAC,KAAK,mBACJ,KAAK,iBAAiBqF,GAAWC,GAAUjP,GAAQ6B,CAAI,MAAM,OAK/D7B,KAAU,SACZA,IAAS,OAAOA,CAAM,GACjB,KAAK,SAAS,IAAIA,CAAM,KAC3B,KAAK,SAAS,IAAIA,CAAM,IAIxB6B,KAAQ,SACVA,IAAO,OAAOA,CAAI,GACb,KAAK,OAAO,IAAIA,CAAI,KACvB,KAAK,OAAO,IAAIA,CAAI,IAIxB,KAAK,UAAU,IAAI;AAAA,MACjB,eAAemN,EAAU;AAAA,MACzB,iBAAiBA,EAAU;AAAA,MAC3B,cAAcC,KAAY,QAAQA,EAAS;AAAA,MAC3C,gBAAgBA,KAAY,QAAQA,EAAS;AAAA,MAC7C,QAAQjP;AAAA,MACR,MAAM6B;AAAA,IACZ,CAAK;AAAA,EACL,GAKA2M,EAAmB,UAAU,mBAC3B,SAA6CU,GAAaC,GAAgB;AACxE,QAAInP,IAASkP;AACb,IAAI,KAAK,eAAe,SACtBlP,IAASgN,EAAK,SAAS,KAAK,aAAahN,CAAM,IAG7CmP,KAAkB,QAGf,KAAK,qBACR,KAAK,mBAAmB,uBAAO,OAAO,IAAI,IAE5C,KAAK,iBAAiBnC,EAAK,YAAYhN,CAAM,CAAC,IAAImP,KACzC,KAAK,qBAGd,OAAO,KAAK,iBAAiBnC,EAAK,YAAYhN,CAAM,CAAC,GACjD,OAAO,KAAK,KAAK,gBAAgB,EAAE,WAAW,MAChD,KAAK,mBAAmB;AAAA,EAGhC,GAkBAwO,EAAmB,UAAU,iBAC3B,SAA2CC,GAAoBS,GAAaE,GAAgB;AAC1F,QAAIN,IAAaI;AAEjB,QAAIA,KAAe,MAAM;AACvB,UAAIT,EAAmB,QAAQ;AAC7B,cAAM,IAAI;AAAA,UACR;AAAA;AAIJ,MAAAK,IAAaL,EAAmB;AAAA,IACtC;AACI,QAAI7B,IAAa,KAAK;AAEtB,IAAIA,KAAc,SAChBkC,IAAa9B,EAAK,SAASJ,GAAYkC,CAAU;AAInD,QAAIO,IAAa,IAAIlC,EAAQ,GACzBmC,IAAW,IAAInC,EAAQ;AAG3B,SAAK,UAAU,gBAAgB,SAAUyB,GAAS;AAChD,UAAIA,EAAQ,WAAWE,KAAcF,EAAQ,gBAAgB,MAAM;AAEjE,YAAIK,IAAWR,EAAmB,oBAAoB;AAAA,UACpD,MAAMG,EAAQ;AAAA,UACd,QAAQA,EAAQ;AAAA,QAC1B,CAAS;AACD,QAAIK,EAAS,UAAU,SAErBL,EAAQ,SAASK,EAAS,QACtBG,KAAkB,SACpBR,EAAQ,SAAS5B,EAAK,KAAKoC,GAAgBR,EAAQ,MAAM,IAEvDhC,KAAc,SAChBgC,EAAQ,SAAS5B,EAAK,SAASJ,GAAYgC,EAAQ,MAAM,IAE3DA,EAAQ,eAAeK,EAAS,MAChCL,EAAQ,iBAAiBK,EAAS,QAC9BA,EAAS,QAAQ,SACnBL,EAAQ,OAAOK,EAAS;AAAA,MAGpC;AAEM,UAAIjP,IAAS4O,EAAQ;AACrB,MAAI5O,KAAU,QAAQ,CAACqP,EAAW,IAAIrP,CAAM,KAC1CqP,EAAW,IAAIrP,CAAM;AAGvB,UAAI6B,IAAO+M,EAAQ;AACnB,MAAI/M,KAAQ,QAAQ,CAACyN,EAAS,IAAIzN,CAAI,KACpCyN,EAAS,IAAIzN,CAAI;AAAA,IAGzB,GAAO,IAAI,GACP,KAAK,WAAWwN,GAChB,KAAK,SAASC,GAGdb,EAAmB,QAAQ,QAAQ,SAAUK,GAAY;AACvD,UAAIzR,IAAUoR,EAAmB,iBAAiBK,CAAU;AAC5D,MAAIzR,KAAW,SACT+R,KAAkB,SACpBN,IAAa9B,EAAK,KAAKoC,GAAgBN,CAAU,IAE/ClC,KAAc,SAChBkC,IAAa9B,EAAK,SAASJ,GAAYkC,CAAU,IAEnD,KAAK,iBAAiBA,GAAYzR,CAAO;AAAA,IAEjD,GAAO,IAAI;AAAA,EACX,GAaAmR,EAAmB,UAAU,mBAC3B,SAA4Ce,GAAYC,GAAWC,GACvB7F,GAAO;AAKjD,QAAI4F,KAAa,OAAOA,EAAU,QAAS,YAAY,OAAOA,EAAU,UAAW,UAAU;AAC3F,UAAI3P,IAAU;AAId,UAAI,KAAK;AACP,eAAI,OAAO,UAAY,OAAe,QAAQ,QAC5C,QAAQ,KAAKA,CAAO,GAEf;AAEP,YAAM,IAAI,MAAMA,CAAO;AAAA,IAE/B;AAEI,QAAI,EAAA0P,KAAc,UAAUA,KAAc,YAAYA,KAC/CA,EAAW,OAAO,KAAKA,EAAW,UAAU,KAC5C,CAACC,KAAa,CAACC,KAAW,CAAC7F,IAI7B;AAAA,UAAI2F,KAAc,UAAUA,KAAc,YAAYA,KAC/CC,KAAa,UAAUA,KAAa,YAAYA,KAChDD,EAAW,OAAO,KAAKA,EAAW,UAAU,KAC5CC,EAAU,OAAO,KAAKA,EAAU,UAAU,KAC1CC;AAEV;AAGA,UAAI5P,IAAU,sBAAsB,KAAK,UAAU;AAAA,QACjD,WAAW0P;AAAA,QACX,QAAQE;AAAA,QACR,UAAUD;AAAA,QACV,MAAM5F;AAAA,MACd,CAAO;AAED,UAAI,KAAK;AACP,eAAI,OAAO,UAAY,OAAe,QAAQ,QAC5C,QAAQ,KAAK/J,CAAO,GAEf;AAEP,YAAM,IAAI,MAAMA,CAAO;AAAA;AAAA,EAG/B,GAMA2O,EAAmB,UAAU,qBAC3B,WAAgD;AAc9C,aAbIkB,IAA0B,GAC1BC,IAAwB,GACxBC,IAAyB,GACzBC,IAAuB,GACvBC,IAAe,GACfC,IAAiB,GACjB5U,IAAS,IACToC,GACAqR,GACAoB,GACAC,GAEAC,IAAW,KAAK,UAAU,QAAO,GAC5BxQ,IAAI,GAAG6N,IAAM2C,EAAS,QAAQxQ,IAAI6N,GAAK7N,KAAK;AAInD,UAHAkP,IAAUsB,EAASxQ,CAAC,GACpBnC,IAAO,IAEHqR,EAAQ,kBAAkBe;AAE5B,aADAD,IAA0B,GACnBd,EAAQ,kBAAkBe;AAC/B,UAAApS,KAAQ,KACRoS;AAAA,eAIEjQ,IAAI,GAAG;AACT,YAAI,CAACsN,EAAK,oCAAoC4B,GAASsB,EAASxQ,IAAI,CAAC,CAAC;AACpE;AAEF,QAAAnC,KAAQ;AAAA,MAClB;AAGM,MAAAA,KAAQgR,EAAU,OAAOK,EAAQ,kBACJc,CAAuB,GACpDA,IAA0Bd,EAAQ,iBAE9BA,EAAQ,UAAU,SACpBqB,IAAY,KAAK,SAAS,QAAQrB,EAAQ,MAAM,GAChDrR,KAAQgR,EAAU,OAAO0B,IAAYF,CAAc,GACnDA,IAAiBE,GAGjB1S,KAAQgR,EAAU,OAAOK,EAAQ,eAAe,IACnBiB,CAAoB,GACjDA,IAAuBjB,EAAQ,eAAe,GAE9CrR,KAAQgR,EAAU,OAAOK,EAAQ,iBACJgB,CAAsB,GACnDA,IAAyBhB,EAAQ,gBAE7BA,EAAQ,QAAQ,SAClBoB,IAAU,KAAK,OAAO,QAAQpB,EAAQ,IAAI,GAC1CrR,KAAQgR,EAAU,OAAOyB,IAAUF,CAAY,GAC/CA,IAAeE,KAInB7U,KAAUoC;AAAA,IAChB;AAEI,WAAOpC;AAAA,EACX,GAEAqT,EAAmB,UAAU,0BAC3B,SAAmD2B,GAAUC,GAAa;AACxE,WAAOD,EAAS,IAAI,SAAUnQ,GAAQ;AACpC,UAAI,CAAC,KAAK;AACR,eAAO;AAET,MAAIoQ,KAAe,SACjBpQ,IAASgN,EAAK,SAASoD,GAAapQ,CAAM;AAE5C,UAAIqQ,IAAMrD,EAAK,YAAYhN,CAAM;AACjC,aAAO,OAAO,UAAU,eAAe,KAAK,KAAK,kBAAkBqQ,CAAG,IAClE,KAAK,iBAAiBA,CAAG,IACzB;AAAA,IACV,GAAO,IAAI;AAAA,EACX,GAKA7B,EAAmB,UAAU,SAC3B,WAAqC;AACnC,QAAI8B,IAAM;AAAA,MACR,SAAS,KAAK;AAAA,MACd,SAAS,KAAK,SAAS,QAAO;AAAA,MAC9B,OAAO,KAAK,OAAO,QAAO;AAAA,MAC1B,UAAU,KAAK,mBAAkB;AAAA;AAEnC,WAAI,KAAK,SAAS,SAChBA,EAAI,OAAO,KAAK,QAEd,KAAK,eAAe,SACtBA,EAAI,aAAa,KAAK,cAEpB,KAAK,qBACPA,EAAI,iBAAiB,KAAK,wBAAwBA,EAAI,SAASA,EAAI,UAAU,IAGxEA;AAAA,EACX,GAKA9B,EAAmB,UAAU,WAC3B,WAAuC;AACrC,WAAO,KAAK,UAAU,KAAK,OAAM,CAAE;AAAA,EACvC,GAEA+B,GAAA,qBAA6B/B;;;;;ACpb7B,IAAA1E,EAAA,uBAA+B,GAC/BA,EAAA,oBAA4B;AAe5B,aAAS0G,EAAgBC,GAAMC,GAAOC,GAASC,GAAWC,GAAUC,GAAO;AAUzE,UAAIC,IAAM,KAAK,OAAOL,IAAQD,KAAQ,CAAC,IAAIA,GACvCxE,IAAM4E,EAASF,GAASC,EAAUG,CAAG,GAAG,EAAI;AAChD,aAAI9E,MAAQ,IAEH8E,IAEA9E,IAAM,IAETyE,IAAQK,IAAM,IAETP,EAAgBO,GAAKL,GAAOC,GAASC,GAAWC,GAAUC,CAAK,IAKpEA,KAAShH,EAAQ,oBACZ4G,IAAQE,EAAU,SAASF,IAAQ,KAEnCK,IAKLA,IAAMN,IAAO,IAERD,EAAgBC,GAAMM,GAAKJ,GAASC,GAAWC,GAAUC,CAAK,IAInEA,KAAShH,EAAQ,oBACZiH,IAEAN,IAAO,IAAI,KAAKA;AAAA,IAG7B;AAoBA,IAAA3G,EAAA,SAAiB,SAAgB6G,GAASC,GAAWC,GAAUC,GAAO;AACpE,UAAIF,EAAU,WAAW;AACvB,eAAO;AAGT,UAAI3V,IAAQuV;AAAA,QAAgB;AAAA,QAAII,EAAU;AAAA,QAAQD;AAAA,QAASC;AAAA,QAC/BC;AAAA,QAAUC,KAAShH,EAAQ;AAAA,MAAoB;AAC3E,UAAI7O,IAAQ;AACV,eAAO;AAMT,aAAOA,IAAQ,KAAK,KACd4V,EAASD,EAAU3V,CAAK,GAAG2V,EAAU3V,IAAQ,CAAC,GAAG,EAAI,MAAM;AAG/D,UAAEA;AAGJ,aAAOA;AAAA,IACT;AAAA;;;;;;AC7FA,WAAS+V,EAAaC,GAAY;AAYlC,aAASC,EAAKC,GAAKC,GAAGC,GAAG;AACvB,UAAI3G,IAAOyG,EAAIC,CAAC;AAChB,MAAAD,EAAIC,CAAC,IAAID,EAAIE,CAAC,GACdF,EAAIE,CAAC,IAAI3G;AAAA,IACX;AAUA,aAAS4G,EAAiBC,GAAKC,GAAM;AACnC,aAAO,KAAK,MAAMD,IAAO,KAAK,YAAYC,IAAOD,EAAK;AAAA,IACxD;AAcA,aAASE,EAAYN,GAAKF,GAAYlO,GAAG2O,GAAG;AAK1C,UAAI3O,IAAI2O,GAAG;AAYT,YAAIC,IAAaL,EAAiBvO,GAAG2O,CAAC,GAClChS,IAAIqD,IAAI;AAEZ,QAAAmO,EAAKC,GAAKQ,GAAYD,CAAC;AASvB,iBARIE,IAAQT,EAAIO,CAAC,GAQR5N,IAAIf,GAAGe,IAAI4N,GAAG5N;AACrB,UAAImN,EAAWE,EAAIrN,CAAC,GAAG8N,GAAO,EAAK,KAAK,MACtClS,KAAK,GACLwR,EAAKC,GAAKzR,GAAGoE,CAAC;AAIlB,QAAAoN,EAAKC,GAAKzR,IAAI,GAAGoE,CAAC;AAClB,YAAI+N,IAAInS,IAAI;AAIZ,QAAA+R,EAAYN,GAAKF,GAAYlO,GAAG8O,IAAI,CAAC,GACrCJ,EAAYN,GAAKF,GAAYY,IAAI,GAAGH,CAAC;AAAA,MACzC;AAAA,IACA;AAEE,WAAOD;AAAA,EACT;AAEA,WAASK,EAAUb,GAAY;AAC7B,QAAIc,IAAWf,EAAa,SAAQ;AAEpC,WADiB,IAAI,SAAS,UAAUe,CAAQ,EAAE,EAAC,EACjCd,CAAU;AAAA,EAC9B;AAWA,MAAIe,IAAY,oBAAI,QAAO;AAC3B,SAAAC,GAAA,YAAoB,SAAUd,GAAKF,GAAYtQ,IAAQ,GAAG;AACxD,QAAI8Q,IAAcO,EAAU,IAAIf,CAAU;AAC1C,IAAIQ,MAAgB,WAClBA,IAAcK,EAAUb,CAAU,GAClCe,EAAU,IAAIf,GAAYQ,CAAW,IAEvCA,EAAYN,GAAKF,GAAYtQ,GAAOwQ,EAAI,SAAS,CAAC;AAAA,EACpD;;;;;;AC5HA,MAAInE,IAAOnO,EAAA,GACPqT,IAAenT,GAAA,GACfoO,IAAW5J,GAAA,EAAuB,UAClCgL,IAAY7K,GAAA,GACZuO,IAAYE,GAAA,EAAwB;AAExC,WAASC,EAAkBC,GAAYC,GAAe;AACpD,QAAIC,IAAYF;AAChB,WAAI,OAAOA,KAAe,aACxBE,IAAYvF,EAAK,oBAAoBqF,CAAU,IAG1CE,EAAU,YAAY,OACzB,IAAIC,EAAyBD,GAAWD,CAAa,IACrD,IAAIG,EAAuBF,GAAWD,CAAa;AAAA,EACzD;AAEA,EAAAF,EAAkB,gBAAgB,SAASC,GAAYC,GAAe;AACpE,WAAOG,EAAuB,cAAcJ,GAAYC,CAAa;AAAA,EACvE,GAKAF,EAAkB,UAAU,WAAW,GAgCvCA,EAAkB,UAAU,sBAAsB,MAClD,OAAO,eAAeA,EAAkB,WAAW,sBAAsB;AAAA,IACvE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,aAAK,KAAK,uBACR,KAAK,eAAe,KAAK,WAAW,KAAK,UAAU,GAG9C,KAAK;AAAA,IAChB;AAAA,EACA,CAAC,GAEDA,EAAkB,UAAU,qBAAqB,MACjD,OAAO,eAAeA,EAAkB,WAAW,qBAAqB;AAAA,IACtE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,aAAK,KAAK,sBACR,KAAK,eAAe,KAAK,WAAW,KAAK,UAAU,GAG9C,KAAK;AAAA,IAChB;AAAA,EACA,CAAC,GAEDA,EAAkB,UAAU,0BAC1B,SAAkDhJ,GAAMnO,GAAO;AAC7D,QAAIyX,IAAItJ,EAAK,OAAOnO,CAAK;AACzB,WAAOyX,MAAM,OAAOA,MAAM;AAAA,EAC9B,GAOAN,EAAkB,UAAU,iBAC1B,SAAyChJ,GAAMgH,GAAa;AAC1D,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D,GAEAgC,EAAkB,kBAAkB,GACpCA,EAAkB,iBAAiB,GAEnCA,EAAkB,uBAAuB,GACzCA,EAAkB,oBAAoB,GAkBtCA,EAAkB,UAAU,cAC1B,SAAuCjE,GAAWwE,GAAUC,GAAQ;AAClE,QAAIC,IAAUF,KAAY,MACtBG,IAAQF,KAAUR,EAAkB,iBAEpClC;AACJ,YAAQ4C,GAAK;AAAA,MACb,KAAKV,EAAkB;AACrB,QAAAlC,IAAW,KAAK;AAChB;AAAA,MACF,KAAKkC,EAAkB;AACrB,QAAAlC,IAAW,KAAK;AAChB;AAAA,MACF;AACE,cAAM,IAAI,MAAM,6BAA6B;AAAA,IACnD;AAQI,aANItD,IAAa,KAAK,YAClBmG,IAAgB5E,EAAU,KAAK0E,CAAO,GACtCG,IAAQ,KAAK,QACbC,IAAU,KAAK,UACfnG,IAAe,KAAK,eAEfpN,IAAI,GAAG9B,IAAIsS,EAAS,QAAQxQ,IAAI9B,GAAG8B,KAAK;AAC/C,UAAIkP,IAAUsB,EAASxQ,CAAC,GACpBM,IAAS4O,EAAQ,WAAW,OAAO,OAAOqE,EAAQ,GAAGrE,EAAQ,MAAM;AACvE,MAAG5O,MAAW,SACZA,IAASgN,EAAK,iBAAiBJ,GAAY5M,GAAQ8M,CAAY,IAEjEiG,EAAc;AAAA,QACZ,QAAQ/S;AAAA,QACR,eAAe4O,EAAQ;AAAA,QACvB,iBAAiBA,EAAQ;AAAA,QACzB,cAAcA,EAAQ;AAAA,QACtB,gBAAgBA,EAAQ;AAAA,QACxB,MAAMA,EAAQ,SAAS,OAAO,OAAOoE,EAAM,GAAGpE,EAAQ,IAAI;AAAA,MAClE,CAAO;AAAA,IACP;AAAA,EACA,GAwBAwD,EAAkB,UAAU,2BAC1B,SAAoDzI,GAAO;AACzD,QAAI7J,IAAOkN,EAAK,OAAOrD,GAAO,MAAM,GAMhCuJ,IAAS;AAAA,MACX,QAAQlG,EAAK,OAAOrD,GAAO,QAAQ;AAAA,MACnC,cAAc7J;AAAA,MACd,gBAAgBkN,EAAK,OAAOrD,GAAO,UAAU,CAAC;AAAA;AAIhD,QADAuJ,EAAO,SAAS,KAAK,iBAAiBA,EAAO,MAAM,GAC/CA,EAAO,SAAS;AAClB,aAAO,CAAA;AAGT,QAAIhD,IAAW,CAAA,GAEXjV,IAAQ,KAAK;AAAA,MAAaiY;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAlG,EAAK;AAAA,MACLkF,EAAa;AAAA,IAAiB;AAC5D,QAAIjX,KAAS,GAAG;AACd,UAAI2T,IAAU,KAAK,kBAAkB3T,CAAK;AAE1C,UAAI0O,EAAM,WAAW;AAOnB,iBANIwJ,IAAevE,EAAQ,cAMpBA,KAAWA,EAAQ,iBAAiBuE;AACzC,UAAAjD,EAAS,KAAK;AAAA,YACZ,MAAMlD,EAAK,OAAO4B,GAAS,iBAAiB,IAAI;AAAA,YAChD,QAAQ5B,EAAK,OAAO4B,GAAS,mBAAmB,IAAI;AAAA,YACpD,YAAY5B,EAAK,OAAO4B,GAAS,uBAAuB,IAAI;AAAA,UACxE,CAAW,GAEDA,IAAU,KAAK,kBAAkB,EAAE3T,CAAK;AAAA;AAS1C,iBANImY,IAAiBxE,EAAQ,gBAMtBA,KACAA,EAAQ,iBAAiB9O,KACzB8O,EAAQ,kBAAkBwE;AAC/B,UAAAlD,EAAS,KAAK;AAAA,YACZ,MAAMlD,EAAK,OAAO4B,GAAS,iBAAiB,IAAI;AAAA,YAChD,QAAQ5B,EAAK,OAAO4B,GAAS,mBAAmB,IAAI;AAAA,YACpD,YAAY5B,EAAK,OAAO4B,GAAS,uBAAuB,IAAI;AAAA,UACxE,CAAW,GAEDA,IAAU,KAAK,kBAAkB,EAAE3T,CAAK;AAAA,IAGlD;AAEI,WAAOiV;AAAA,EACX,GAEAmD,EAAA,oBAA4BjB;AAoC5B,WAASK,EAAuBJ,GAAYC,GAAe;AACzD,QAAIC,IAAYF;AAChB,IAAI,OAAOA,KAAe,aACxBE,IAAYvF,EAAK,oBAAoBqF,CAAU;AAGjD,QAAIiB,IAAUtG,EAAK,OAAOuF,GAAW,SAAS,GAC1CU,IAAUjG,EAAK,OAAOuF,GAAW,SAAS,GAG1CS,IAAQhG,EAAK,OAAOuF,GAAW,SAAS,CAAA,CAAE,GAC1C3F,IAAaI,EAAK,OAAOuF,GAAW,cAAc,IAAI,GACtDgB,IAAiBvG,EAAK,OAAOuF,GAAW,kBAAkB,IAAI,GAC9DrC,IAAWlD,EAAK,OAAOuF,GAAW,UAAU,GAC5CtS,IAAO+M,EAAK,OAAOuF,GAAW,QAAQ,IAAI;AAI9C,QAAIe,KAAW,KAAK;AAClB,YAAM,IAAI,MAAM,0BAA0BA,CAAO;AAGnD,IAAI1G,MACFA,IAAaI,EAAK,UAAUJ,CAAU,IAGxCqG,IAAUA,EACP,IAAI,MAAM,EAIV,IAAIjG,EAAK,SAAS,EAKlB,IAAI,SAAUhN,GAAQ;AACrB,aAAO4M,KAAcI,EAAK,WAAWJ,CAAU,KAAKI,EAAK,WAAWhN,CAAM,IACtEgN,EAAK,SAASJ,GAAY5M,CAAM,IAChCA;AAAA,IACV,CAAK,GAMH,KAAK,SAASmN,EAAS,UAAU6F,EAAM,IAAI,MAAM,GAAG,EAAI,GACxD,KAAK,WAAW7F,EAAS,UAAU8F,GAAS,EAAI,GAEhD,KAAK,mBAAmB,KAAK,SAAS,UAAU,IAAI,SAAU5O,GAAG;AAC/D,aAAO2I,EAAK,iBAAiBJ,GAAYvI,GAAGiO,CAAa;AAAA,IAC7D,CAAG,GAED,KAAK,aAAa1F,GAClB,KAAK,iBAAiB2G,GACtB,KAAK,YAAYrD,GACjB,KAAK,gBAAgBoC,GACrB,KAAK,OAAOrS;AAAA,EACd;AAEA,EAAAwS,EAAuB,YAAY,OAAO,OAAOL,EAAkB,SAAS,GAC5EK,EAAuB,UAAU,WAAWL,GAM5CK,EAAuB,UAAU,mBAAmB,SAAShD,GAAS;AACpE,QAAI+D,IAAiB/D;AAKrB,QAJI,KAAK,cAAc,SACrB+D,IAAiBxG,EAAK,SAAS,KAAK,YAAYwG,CAAc,IAG5D,KAAK,SAAS,IAAIA,CAAc;AAClC,aAAO,KAAK,SAAS,QAAQA,CAAc;AAK7C,QAAI9T;AACJ,SAAKA,IAAI,GAAGA,IAAI,KAAK,iBAAiB,QAAQ,EAAEA;AAC9C,UAAI,KAAK,iBAAiBA,CAAC,KAAK+P;AAC9B,eAAO/P;AAIX,WAAO;AAAA,EACT,GAWA+S,EAAuB,gBACrB,SAAyCJ,GAAYC,GAAe;AAClE,QAAImB,IAAM,OAAO,OAAOhB,EAAuB,SAAS,GAEpDO,IAAQS,EAAI,SAAStG,EAAS,UAAUkF,EAAW,OAAO,QAAO,GAAI,EAAI,GACzEY,IAAUQ,EAAI,WAAWtG,EAAS,UAAUkF,EAAW,SAAS,QAAO,GAAI,EAAI;AACnF,IAAAoB,EAAI,aAAapB,EAAW,aAC5BoB,EAAI,iBAAiBpB,EAAW;AAAA,MAAwBoB,EAAI,SAAS,QAAO;AAAA,MACpBA,EAAI;AAAA,IAAU,GACtEA,EAAI,OAAOpB,EAAW,OACtBoB,EAAI,gBAAgBnB,GACpBmB,EAAI,mBAAmBA,EAAI,SAAS,UAAU,IAAI,SAAUpP,GAAG;AAC7D,aAAO2I,EAAK,iBAAiByG,EAAI,YAAYpP,GAAGiO,CAAa;AAAA,IACnE,CAAK;AAWD,aAJIoB,IAAoBrB,EAAW,UAAU,QAAO,EAAG,MAAK,GACxDsB,IAAwBF,EAAI,sBAAsB,CAAA,GAClDG,IAAuBH,EAAI,qBAAqB,CAAA,GAE3C/T,IAAI,GAAG5B,IAAS4V,EAAkB,QAAQhU,IAAI5B,GAAQ4B,KAAK;AAClE,UAAImU,IAAaH,EAAkBhU,CAAC,GAChCoU,IAAc,IAAIC;AACtB,MAAAD,EAAY,gBAAgBD,EAAW,eACvCC,EAAY,kBAAkBD,EAAW,iBAErCA,EAAW,WACbC,EAAY,SAASb,EAAQ,QAAQY,EAAW,MAAM,GACtDC,EAAY,eAAeD,EAAW,cACtCC,EAAY,iBAAiBD,EAAW,gBAEpCA,EAAW,SACbC,EAAY,OAAOd,EAAM,QAAQa,EAAW,IAAI,IAGlDD,EAAqB,KAAKE,CAAW,IAGvCH,EAAsB,KAAKG,CAAW;AAAA,IAC5C;AAEI,WAAA7B,EAAUwB,EAAI,oBAAoBzG,EAAK,0BAA0B,GAE1DyG;AAAA,EACX,GAKAhB,EAAuB,UAAU,WAAW,GAK5C,OAAO,eAAeA,EAAuB,WAAW,WAAW;AAAA,IACjE,KAAK,WAAY;AACf,aAAO,KAAK,iBAAiB,MAAK;AAAA,IACtC;AAAA,EACA,CAAC;AAKD,WAASsB,IAAU;AACjB,SAAK,gBAAgB,GACrB,KAAK,kBAAkB,GACvB,KAAK,SAAS,MACd,KAAK,eAAe,MACpB,KAAK,iBAAiB,MACtB,KAAK,OAAO;AAAA,EACd;AAQA,QAAMC,IAAmBhH,EAAK;AAC9B,WAASiH,EAAcC,GAAOvT,GAAO;AACnC,QAAIwT,IAAID,EAAM,QACVtW,IAAIsW,EAAM,SAASvT;AACvB,QAAI,EAAA/C,KAAK;AAEF,UAAIA,KAAK,GAAG;AACjB,YAAI,IAAIsW,EAAMvT,CAAK,GACfyT,IAAIF,EAAMvT,IAAQ,CAAC;AACvB,QAAIqT,EAAiB,GAAGI,CAAC,IAAI,MAC3BF,EAAMvT,CAAK,IAAIyT,GACfF,EAAMvT,IAAQ,CAAC,IAAI;AAAA,MAEzB,WAAa/C,IAAI;AACb,iBAAS8B,IAAIiB,GAAOjB,IAAIyU,GAAGzU;AACzB,mBAASoE,IAAIpE,GAAGoE,IAAInD,GAAOmD,KAAK;AAC9B,gBAAIuQ,IAAIH,EAAMpQ,IAAI,CAAC,GACfsQ,IAAIF,EAAMpQ,CAAC;AACf,gBAAIkQ,EAAiBK,GAAGD,CAAC,KAAK;AAC5B;AAEF,YAAAF,EAAMpQ,IAAI,CAAC,IAAIsQ,GACfF,EAAMpQ,CAAC,IAAIuQ;AAAA,UACnB;AAAA;AAGI,QAAApC,EAAUiC,GAAOF,GAAkBrT,CAAK;AAAA,EAE5C;AACA,EAAA8R,EAAuB,UAAU,iBAC/B,SAAyCrJ,GAAMgH,GAAa;AAC1D,QAAIkE,IAAgB,GAChB5E,IAA0B,GAC1BG,IAAuB,GACvBD,IAAyB,GACzBG,IAAiB,GACjBD,IAAe,GACfhS,IAASsL,EAAK,QACdnO,IAAQ,GAERyP,IAAO,CAAA,GACP6J,IAAmB,CAAA,GACnBb,IAAoB,CAAA,GACpB9E,GAAc4F,GAAS5T,GAAKtB;AAEhC,QAAImV,IAAgB;AACpB,WAAOxZ,IAAQ6C;AACb,UAAIsL,EAAK,OAAOnO,CAAK,MAAM;AACzB,QAAAqZ,KACArZ,KACAyU,IAA0B,GAE1BuE,EAAcP,GAAmBe,CAAa,GAC9CA,IAAgBf,EAAkB;AAAA,eAE3BtK,EAAK,OAAOnO,CAAK,MAAM;AAC9B,QAAAA;AAAA,WAEG;AAIH,aAHA2T,IAAU,IAAImF,EAAO,GACrBnF,EAAQ,gBAAgB0F,GAEnB1T,IAAM3F,GAAO2F,IAAM9C,KAClB,MAAK,wBAAwBsL,GAAMxI,CAAG,GADZA;AAC9B;AAOF,aAHMwI,EAAK,MAAMnO,GAAO2F,CAAG,GAE3B4T,IAAU,CAAA,GACHvZ,IAAQ2F;AACb,UAAA2N,EAAU,OAAOnF,GAAMnO,GAAOyP,CAAI,GAClCpL,IAAQoL,EAAK,OACbzP,IAAQyP,EAAK,MACb8J,EAAQ,KAAKlV,CAAK;AAGpB,YAAIkV,EAAQ,WAAW;AACrB,gBAAM,IAAI,MAAM,wCAAwC;AAG1D,YAAIA,EAAQ,WAAW;AACrB,gBAAM,IAAI,MAAM,wCAAwC;AA8B1D,YA1BA5F,EAAQ,kBAAkBc,IAA0B8E,EAAQ,CAAC,GAC7D9E,IAA0Bd,EAAQ,iBAE9B4F,EAAQ,SAAS,MAEnB5F,EAAQ,SAASmB,IAAiByE,EAAQ,CAAC,GAC3CzE,KAAkByE,EAAQ,CAAC,GAG3B5F,EAAQ,eAAeiB,IAAuB2E,EAAQ,CAAC,GACvD3E,IAAuBjB,EAAQ,cAE/BA,EAAQ,gBAAgB,GAGxBA,EAAQ,iBAAiBgB,IAAyB4E,EAAQ,CAAC,GAC3D5E,IAAyBhB,EAAQ,gBAE7B4F,EAAQ,SAAS,MAEnB5F,EAAQ,OAAOkB,IAAe0E,EAAQ,CAAC,GACvC1E,KAAgB0E,EAAQ,CAAC,KAI7Bd,EAAkB,KAAK9E,CAAO,GAC1B,OAAOA,EAAQ,gBAAiB,UAAU;AAC5C,cAAI8F,IAAgB9F,EAAQ;AAC5B,iBAAO2F,EAAiB,UAAUG;AAChC,YAAAH,EAAiB,KAAK,IAAI;AAE5B,UAAIA,EAAiBG,CAAa,MAAM,SACtCH,EAAiBG,CAAa,IAAI,CAAA,IAEpCH,EAAiBG,CAAa,EAAE,KAAK9F,CAAO;AAAA,QACtD;AAAA,MACA;AAGI,IAAAqF,EAAcP,GAAmBe,CAAa,GAC9C,KAAK,sBAAsBf;AAE3B,aAAShU,IAAI,GAAGA,IAAI6U,EAAiB,QAAQ7U;AAC3C,MAAI6U,EAAiB7U,CAAC,KAAK,QACzBuS,EAAUsC,EAAiB7U,CAAC,GAAGsN,EAAK,kCAAkC;AAG1E,SAAK,qBAAqB,CAAA,EAAG,OAAO,GAAGuH,CAAgB;AAAA,EAC3D,GAMA9B,EAAuB,UAAU,eAC/B,SAAuC9B,GAASgE,GAAWC,GACpBC,GAAaC,GAAahE,GAAO;AAMtE,QAAIH,EAAQiE,CAAS,KAAK;AACxB,YAAM,IAAI,UAAU,kDACEjE,EAAQiE,CAAS,CAAC;AAE1C,QAAIjE,EAAQkE,CAAW,IAAI;AACzB,YAAM,IAAI,UAAU,oDACElE,EAAQkE,CAAW,CAAC;AAG5C,WAAO3C,EAAa,OAAOvB,GAASgE,GAAWG,GAAahE,CAAK;AAAA,EACrE,GAMA2B,EAAuB,UAAU,qBAC/B,WAAgD;AAC9C,aAASxX,IAAQ,GAAGA,IAAQ,KAAK,mBAAmB,QAAQ,EAAEA,GAAO;AACnE,UAAI2T,IAAU,KAAK,mBAAmB3T,CAAK;AAM3C,UAAIA,IAAQ,IAAI,KAAK,mBAAmB,QAAQ;AAC9C,YAAI8Z,IAAc,KAAK,mBAAmB9Z,IAAQ,CAAC;AAEnD,YAAI2T,EAAQ,kBAAkBmG,EAAY,eAAe;AACvD,UAAAnG,EAAQ,sBAAsBmG,EAAY,kBAAkB;AAC5D;AAAA,QACV;AAAA,MACA;AAGM,MAAAnG,EAAQ,sBAAsB;AAAA,IACpC;AAAA,EACA,GA0BA6D,EAAuB,UAAU,sBAC/B,SAA+C9I,GAAO;AACpD,QAAIuJ,IAAS;AAAA,MACX,eAAelG,EAAK,OAAOrD,GAAO,MAAM;AAAA,MACxC,iBAAiBqD,EAAK,OAAOrD,GAAO,QAAQ;AAAA,OAG1C1O,IAAQ,KAAK;AAAA,MACfiY;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAlG,EAAK;AAAA,MACLA,EAAK,OAAOrD,GAAO,QAAQyI,EAAkB,oBAAoB;AAAA;AAGnE,QAAInX,KAAS,GAAG;AACd,UAAI2T,IAAU,KAAK,mBAAmB3T,CAAK;AAE3C,UAAI2T,EAAQ,kBAAkBsE,EAAO,eAAe;AAClD,YAAIlT,IAASgN,EAAK,OAAO4B,GAAS,UAAU,IAAI;AAChD,QAAI5O,MAAW,SACbA,IAAS,KAAK,SAAS,GAAGA,CAAM,GAChCA,IAASgN,EAAK,iBAAiB,KAAK,YAAYhN,GAAQ,KAAK,aAAa;AAE5E,YAAI6B,IAAOmL,EAAK,OAAO4B,GAAS,QAAQ,IAAI;AAC5C,eAAI/M,MAAS,SACXA,IAAO,KAAK,OAAO,GAAGA,CAAI,IAErB;AAAA,UACL,QAAQ7B;AAAA,UACR,MAAMgN,EAAK,OAAO4B,GAAS,gBAAgB,IAAI;AAAA,UAC/C,QAAQ5B,EAAK,OAAO4B,GAAS,kBAAkB,IAAI;AAAA,UACnD,MAAM/M;AAAA;MAEhB;AAAA,IACA;AAEI,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA;EAEZ,GAMA4Q,EAAuB,UAAU,0BAC/B,WAA0D;AACxD,WAAK,KAAK,iBAGH,KAAK,eAAe,UAAU,KAAK,SAAS,KAAI,KACrD,CAAC,KAAK,eAAe,KAAK,SAAUuC,GAAI;AAAE,aAAOA,KAAM;AAAA,KAAO,IAHvD;AAAA,EAIb,GAOAvC,EAAuB,UAAU,mBAC/B,SAA4ChD,GAASwF,GAAe;AAClE,QAAI,CAAC,KAAK;AACR,aAAO;AAGT,QAAIha,IAAQ,KAAK,iBAAiBwU,CAAO;AACzC,QAAIxU,KAAS;AACX,aAAO,KAAK,eAAeA,CAAK;AAGlC,QAAIuY,IAAiB/D;AACrB,IAAI,KAAK,cAAc,SACrB+D,IAAiBxG,EAAK,SAAS,KAAK,YAAYwG,CAAc;AAGhE,QAAIlJ;AACJ,QAAI,KAAK,cAAc,SACfA,IAAM0C,EAAK,SAAS,KAAK,UAAU,IAAI;AAK7C,UAAIkI,IAAiB1B,EAAe,QAAQ,cAAc,EAAE;AAC5D,UAAIlJ,EAAI,UAAU,UACX,KAAK,SAAS,IAAI4K,CAAc;AACrC,eAAO,KAAK,eAAe,KAAK,SAAS,QAAQA,CAAc,CAAC;AAGlE,WAAK,CAAC5K,EAAI,QAAQA,EAAI,QAAQ,QACvB,KAAK,SAAS,IAAI,MAAMkJ,CAAc;AAC3C,eAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,MAAMA,CAAc,CAAC;AAAA,IAE9E;AAMI,QAAIyB;AACF,aAAO;AAGP,UAAM,IAAI,MAAM,MAAMzB,IAAiB,4BAA4B;AAAA,EAEzE,GAyBAf,EAAuB,UAAU,uBAC/B,SAAgD9I,GAAO;AACrD,QAAI3J,IAASgN,EAAK,OAAOrD,GAAO,QAAQ;AAExC,QADA3J,IAAS,KAAK,iBAAiBA,CAAM,GACjCA,IAAS;AACX,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,YAAY;AAAA;AAIhB,QAAIkT,IAAS;AAAA,MACX,QAAQlT;AAAA,MACR,cAAcgN,EAAK,OAAOrD,GAAO,MAAM;AAAA,MACvC,gBAAgBqD,EAAK,OAAOrD,GAAO,QAAQ;AAAA,OAGzC1O,IAAQ,KAAK;AAAA,MACfiY;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAlG,EAAK;AAAA,MACLA,EAAK,OAAOrD,GAAO,QAAQyI,EAAkB,oBAAoB;AAAA;AAGnE,QAAInX,KAAS,GAAG;AACd,UAAI2T,IAAU,KAAK,kBAAkB3T,CAAK;AAE1C,UAAI2T,EAAQ,WAAWsE,EAAO;AAC5B,eAAO;AAAA,UACL,MAAMlG,EAAK,OAAO4B,GAAS,iBAAiB,IAAI;AAAA,UAChD,QAAQ5B,EAAK,OAAO4B,GAAS,mBAAmB,IAAI;AAAA,UACpD,YAAY5B,EAAK,OAAO4B,GAAS,uBAAuB,IAAI;AAAA;IAGtE;AAEI,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA;EAElB,GAEAyE,EAAA,yBAAiCZ;AAmDjC,WAASD,EAAyBH,GAAYC,GAAe;AAC3D,QAAIC,IAAYF;AAChB,IAAI,OAAOA,KAAe,aACxBE,IAAYvF,EAAK,oBAAoBqF,CAAU;AAGjD,QAAIiB,IAAUtG,EAAK,OAAOuF,GAAW,SAAS,GAC1C4C,IAAWnI,EAAK,OAAOuF,GAAW,UAAU;AAEhD,QAAIe,KAAW,KAAK;AAClB,YAAM,IAAI,MAAM,0BAA0BA,CAAO;AAGnD,SAAK,WAAW,IAAInG,EAAQ,GAC5B,KAAK,SAAS,IAAIA,EAAQ;AAE1B,QAAIiI,IAAa;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA;AAEV,SAAK,YAAYD,EAAS,IAAI,SAAU9Q,GAAG;AACzC,UAAIA,EAAE;AAGJ,cAAM,IAAI,MAAM,oDAAoD;AAEtE,UAAIJ,IAAS+I,EAAK,OAAO3I,GAAG,QAAQ,GAChCgR,IAAarI,EAAK,OAAO/I,GAAQ,MAAM,GACvCqR,IAAetI,EAAK,OAAO/I,GAAQ,QAAQ;AAE/C,UAAIoR,IAAaD,EAAW,QACvBC,MAAeD,EAAW,QAAQE,IAAeF,EAAW;AAC/D,cAAM,IAAI,MAAM,sDAAsD;AAExE,aAAAA,IAAanR,GAEN;AAAA,QACL,iBAAiB;AAAA;AAAA;AAAA,UAGf,eAAeoR,IAAa;AAAA,UAC5B,iBAAiBC,IAAe;AAAA;QAElC,UAAU,IAAIlD,EAAkBpF,EAAK,OAAO3I,GAAG,KAAK,GAAGiO,CAAa;AAAA,MAC1E;AAAA,IACA,CAAG;AAAA,EACH;AAEA,SAAAE,EAAyB,YAAY,OAAO,OAAOJ,EAAkB,SAAS,GAC9EI,EAAyB,UAAU,cAAcJ,GAKjDI,EAAyB,UAAU,WAAW,GAK9C,OAAO,eAAeA,EAAyB,WAAW,WAAW;AAAA,IACnE,KAAK,WAAY;AAEf,eADIS,IAAU,CAAA,GACLvT,IAAI,GAAGA,IAAI,KAAK,UAAU,QAAQA;AACzC,iBAASoE,IAAI,GAAGA,IAAI,KAAK,UAAUpE,CAAC,EAAE,SAAS,QAAQ,QAAQoE;AAC7D,UAAAmP,EAAQ,KAAK,KAAK,UAAUvT,CAAC,EAAE,SAAS,QAAQoE,CAAC,CAAC;AAGtD,aAAOmP;AAAA,IACX;AAAA,EACA,CAAC,GAqBDT,EAAyB,UAAU,sBACjC,SAAsD7I,GAAO;AAC3D,QAAIuJ,IAAS;AAAA,MACX,eAAelG,EAAK,OAAOrD,GAAO,MAAM;AAAA,MACxC,iBAAiBqD,EAAK,OAAOrD,GAAO,QAAQ;AAAA,OAK1C4L,IAAerD,EAAa;AAAA,MAAOgB;AAAA,MAAQ,KAAK;AAAA,MAClD,SAASA,GAAQsC,GAAS;AACxB,YAAIvJ,IAAMiH,EAAO,gBAAgBsC,EAAQ,gBAAgB;AACzD,eAAIvJ,KAIIiH,EAAO,kBACPsC,EAAQ,gBAAgB;AAAA,MACxC;AAAA,IAAO,GACCA,IAAU,KAAK,UAAUD,CAAY;AAEzC,WAAKC,IASEA,EAAQ,SAAS,oBAAoB;AAAA,MAC1C,MAAMtC,EAAO,iBACVsC,EAAQ,gBAAgB,gBAAgB;AAAA,MAC3C,QAAQtC,EAAO,mBACZsC,EAAQ,gBAAgB,kBAAkBtC,EAAO,gBAC/CsC,EAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,MACL,MAAM7L,EAAM;AAAA,IAClB,CAAK,IAhBQ;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA;EAad,GAMA6I,EAAyB,UAAU,0BACjC,WAA4D;AAC1D,WAAO,KAAK,UAAU,MAAM,SAAUnO,GAAG;AACvC,aAAOA,EAAE,SAAS,wBAAuB;AAAA,IAC/C,CAAK;AAAA,EACL,GAOAmO,EAAyB,UAAU,mBACjC,SAAmD/C,GAASwF,GAAe;AACzE,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,UAAIO,IAAU,KAAK,UAAU,CAAC,GAE1BnY,IAAUmY,EAAQ,SAAS,iBAAiB/F,GAAS,EAAI;AAC7D,UAAIpS,KAAWA,MAAY;AACzB,eAAOA;AAAA,IAEf;AACI,QAAI4X;AACF,aAAO;AAGP,UAAM,IAAI,MAAM,MAAMxF,IAAU,4BAA4B;AAAA,EAElE,GAoBA+C,EAAyB,UAAU,uBACjC,SAAuD7I,GAAO;AAC5D,aAASjK,IAAI,GAAGA,IAAI,KAAK,UAAU,QAAQA,KAAK;AAC9C,UAAI8V,IAAU,KAAK,UAAU9V,CAAC;AAI9B,UAAI8V,EAAQ,SAAS,iBAAiBxI,EAAK,OAAOrD,GAAO,QAAQ,CAAC,MAAM,IAGxE;AAAA,YAAI8L,IAAoBD,EAAQ,SAAS,qBAAqB7L,CAAK;AACnE,YAAI8L,GAAmB;AACrB,cAAIC,IAAM;AAAA,YACR,MAAMD,EAAkB,QACrBD,EAAQ,gBAAgB,gBAAgB;AAAA,YAC3C,QAAQC,EAAkB,UACvBD,EAAQ,gBAAgB,kBAAkBC,EAAkB,OAC1DD,EAAQ,gBAAgB,kBAAkB,IAC1C;AAAA;AAEP,iBAAOE;AAAA,QACf;AAAA;AAAA,IACA;AAEI,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA;EAEd,GAOAlD,EAAyB,UAAU,iBACjC,SAAgDpJ,GAAMgH,GAAa;AACjE,SAAK,sBAAsB,CAAA,GAC3B,KAAK,qBAAqB,CAAA;AAC1B,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ;AAGzC,eAFIoF,IAAU,KAAK,UAAU,CAAC,GAC1BG,IAAkBH,EAAQ,SAAS,oBAC9B1R,IAAI,GAAGA,IAAI6R,EAAgB,QAAQ7R,KAAK;AAC/C,YAAI8K,IAAU+G,EAAgB7R,CAAC,GAE3B9D,IAASwV,EAAQ,SAAS,SAAS,GAAG5G,EAAQ,MAAM;AACxD,QAAG5O,MAAW,SACZA,IAASgN,EAAK,iBAAiBwI,EAAQ,SAAS,YAAYxV,GAAQ,KAAK,aAAa,IAExF,KAAK,SAAS,IAAIA,CAAM,GACxBA,IAAS,KAAK,SAAS,QAAQA,CAAM;AAErC,YAAI6B,IAAO;AACX,QAAI+M,EAAQ,SACV/M,IAAO2T,EAAQ,SAAS,OAAO,GAAG5G,EAAQ,IAAI,GAC9C,KAAK,OAAO,IAAI/M,CAAI,GACpBA,IAAO,KAAK,OAAO,QAAQA,CAAI;AAOjC,YAAI+T,IAAkB;AAAA,UACpB,QAAQ5V;AAAA,UACR,eAAe4O,EAAQ,iBACpB4G,EAAQ,gBAAgB,gBAAgB;AAAA,UAC3C,iBAAiB5G,EAAQ,mBACtB4G,EAAQ,gBAAgB,kBAAkB5G,EAAQ,gBACjD4G,EAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,UACJ,cAAc5G,EAAQ;AAAA,UACtB,gBAAgBA,EAAQ;AAAA,UACxB,MAAM/M;AAAA;AAGR,aAAK,oBAAoB,KAAK+T,CAAe,GACzC,OAAOA,EAAgB,gBAAiB,YAC1C,KAAK,mBAAmB,KAAKA,CAAe;AAAA,MAEtD;AAGI,IAAA3D,EAAU,KAAK,qBAAqBjF,EAAK,mCAAmC,GAC5EiF,EAAU,KAAK,oBAAoBjF,EAAK,0BAA0B;AAAA,EACtE,GAEAqG,EAAA,2BAAmCb;;;;;;AC5pCnC,MAAIhE,IAAqB3P,GAAA,EAAkC,oBACvDmO,IAAOjO,EAAA,GAIP8W,IAAgB,WAGhBC,IAAe,IAKfC,IAAe;AAcnB,WAASC,EAAWC,GAAOC,GAASzG,GAAS0G,GAASvM,GAAO;AAC3D,SAAK,WAAW,CAAA,GAChB,KAAK,iBAAiB,CAAA,GACtB,KAAK,OAAOqM,KAAgB,MAC5B,KAAK,SAASC,KAAkB,MAChC,KAAK,SAASzG,KAAkB,MAChC,KAAK,OAAO7F,KAAgB,MAC5B,KAAKmM,CAAY,IAAI,IACjBI,KAAW,QAAM,KAAK,IAAIA,CAAO;AAAA,EACvC;AAUA,SAAAH,EAAW,0BACT,SAA4CI,GAAgB3H,GAAoB4H,GAAe;AAG7F,QAAI1U,IAAO,IAAIqU,EAAU,GAMrBM,IAAiBF,EAAe,MAAMP,CAAa,GACnDU,IAAsB,GACtBC,IAAgB,WAAW;AAC7B,UAAIC,IAAeC,EAAW,GAE1BC,IAAUD,EAAW,KAAM;AAC/B,aAAOD,IAAeE;AAEtB,eAASD,IAAc;AACrB,eAAOH,IAAsBD,EAAe,SACxCA,EAAeC,GAAqB,IAAI;AAAA,MACpD;AAAA,IACA,GAGQK,IAAoB,GAAGC,IAAsB,GAK7CC,IAAc;AAElB,WAAArI,EAAmB,YAAY,SAAUG,GAAS;AAChD,UAAIkI,MAAgB;AAGlB,YAAIF,IAAoBhI,EAAQ;AAE9B,UAAAmI,EAAmBD,GAAaN,GAAe,GAC/CI,KACAC,IAAsB;AAAA,aAEjB;AAIL,cAAIG,IAAWV,EAAeC,CAAmB,KAAK,IAClDnZ,IAAO4Z,EAAS,OAAO,GAAGpI,EAAQ,kBACRiI,CAAmB;AACjD,UAAAP,EAAeC,CAAmB,IAAIS,EAAS,OAAOpI,EAAQ,kBAC1BiI,CAAmB,GACvDA,IAAsBjI,EAAQ,iBAC9BmI,EAAmBD,GAAa1Z,CAAI,GAEpC0Z,IAAclI;AACd;AAAA,QACV;AAKM,aAAOgI,IAAoBhI,EAAQ;AACjC,QAAAjN,EAAK,IAAI6U,GAAe,GACxBI;AAEF,UAAIC,IAAsBjI,EAAQ,iBAAiB;AACjD,YAAIoI,IAAWV,EAAeC,CAAmB,KAAK;AACtD,QAAA5U,EAAK,IAAIqV,EAAS,OAAO,GAAGpI,EAAQ,eAAe,CAAC,GACpD0H,EAAeC,CAAmB,IAAIS,EAAS,OAAOpI,EAAQ,eAAe,GAC7EiI,IAAsBjI,EAAQ;AAAA,MACtC;AACM,MAAAkI,IAAclI;AAAA,IACpB,GAAO,IAAI,GAEH2H,IAAsBD,EAAe,WACnCQ,KAEFC,EAAmBD,GAAaN,GAAe,GAGjD7U,EAAK,IAAI2U,EAAe,OAAOC,CAAmB,EAAE,KAAK,EAAE,CAAC,IAI9D9H,EAAmB,QAAQ,QAAQ,SAAUK,GAAY;AACvD,UAAIzR,IAAUoR,EAAmB,iBAAiBK,CAAU;AAC5D,MAAIzR,KAAW,SACTgZ,KAAiB,SACnBvH,IAAa9B,EAAK,KAAKqJ,GAAevH,CAAU,IAElDnN,EAAK,iBAAiBmN,GAAYzR,CAAO;AAAA,IAEjD,CAAK,GAEMsE;AAEP,aAASoV,EAAmBnI,GAASxR,GAAM;AACzC,UAAIwR,MAAY,QAAQA,EAAQ,WAAW;AACzC,QAAAjN,EAAK,IAAIvE,CAAI;AAAA,WACR;AACL,YAAI4C,IAASqW,IACTrJ,EAAK,KAAKqJ,GAAezH,EAAQ,MAAM,IACvCA,EAAQ;AACZ,QAAAjN,EAAK,IAAI,IAAIqU;AAAA,UAAWpH,EAAQ;AAAA,UACRA,EAAQ;AAAA,UACR5O;AAAA,UACA5C;AAAA,UACAwR,EAAQ;AAAA,QAAI,CAAC;AAAA,MAC7C;AAAA,IACA;AAAA,EACA,GAQAoH,EAAW,UAAU,MAAM,SAAwBiB,GAAQ;AACzD,QAAI,MAAM,QAAQA,CAAM;AACtB,MAAAA,EAAO,QAAQ,SAAUC,GAAO;AAC9B,aAAK,IAAIA,CAAK;AAAA,MACpB,GAAO,IAAI;AAAA,aAEAD,EAAOlB,CAAY,KAAK,OAAOkB,KAAW;AACjD,MAAIA,KACF,KAAK,SAAS,KAAKA,CAAM;AAAA;AAI3B,YAAM,IAAI;AAAA,QACR,gFAAgFA;AAAA;AAGpF,WAAO;AAAA,EACT,GAQAjB,EAAW,UAAU,UAAU,SAA4BiB,GAAQ;AACjE,QAAI,MAAM,QAAQA,CAAM;AACtB,eAASvX,IAAIuX,EAAO,SAAO,GAAGvX,KAAK,GAAGA;AACpC,aAAK,QAAQuX,EAAOvX,CAAC,CAAC;AAAA,aAGjBuX,EAAOlB,CAAY,KAAK,OAAOkB,KAAW;AACjD,WAAK,SAAS,QAAQA,CAAM;AAAA;AAG5B,YAAM,IAAI;AAAA,QACR,gFAAgFA;AAAA;AAGpF,WAAO;AAAA,EACT,GASAjB,EAAW,UAAU,OAAO,SAAyBmB,GAAK;AAExD,aADID,GACKxX,IAAI,GAAG6N,IAAM,KAAK,SAAS,QAAQ7N,IAAI6N,GAAK7N;AACnD,MAAAwX,IAAQ,KAAK,SAASxX,CAAC,GACnBwX,EAAMnB,CAAY,IACpBmB,EAAM,KAAKC,CAAG,IAGVD,MAAU,MACZC,EAAID,GAAO;AAAA,QAAE,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,OAAM;AAAA,EAItC,GAQAlB,EAAW,UAAU,OAAO,SAAyBoB,GAAM;AACzD,QAAIC,GACA3X,GACA6N,IAAM,KAAK,SAAS;AACxB,QAAIA,IAAM,GAAG;AAEX,WADA8J,IAAc,CAAA,GACT3X,IAAI,GAAGA,IAAI6N,IAAI,GAAG7N;AACrB,QAAA2X,EAAY,KAAK,KAAK,SAAS3X,CAAC,CAAC,GACjC2X,EAAY,KAAKD,CAAI;AAEvB,MAAAC,EAAY,KAAK,KAAK,SAAS3X,CAAC,CAAC,GACjC,KAAK,WAAW2X;AAAA,IACpB;AACE,WAAO;AAAA,EACT,GASArB,EAAW,UAAU,eAAe,SAAiCsB,GAAUC,GAAc;AAC3F,QAAIC,IAAY,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AACtD,WAAIA,EAAUzB,CAAY,IACxByB,EAAU,aAAaF,GAAUC,CAAY,IAEtC,OAAOC,KAAc,WAC5B,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC,IAAIA,EAAU,QAAQF,GAAUC,CAAY,IAGlF,KAAK,SAAS,KAAK,GAAG,QAAQD,GAAUC,CAAY,CAAC,GAEhD;AAAA,EACT,GASAvB,EAAW,UAAU,mBACnB,SAAqC9G,GAAaC,GAAgB;AAChE,SAAK,eAAenC,EAAK,YAAYkC,CAAW,CAAC,IAAIC;AAAA,EACzD,GAQA6G,EAAW,UAAU,qBACnB,SAAuCmB,GAAK;AAC1C,aAASzX,IAAI,GAAG6N,IAAM,KAAK,SAAS,QAAQ7N,IAAI6N,GAAK7N;AACnD,MAAI,KAAK,SAASA,CAAC,EAAEqW,CAAY,KAC/B,KAAK,SAASrW,CAAC,EAAE,mBAAmByX,CAAG;AAK3C,aADIlE,IAAU,OAAO,KAAK,KAAK,cAAc,GACpCvT,IAAI,GAAG6N,IAAM0F,EAAQ,QAAQvT,IAAI6N,GAAK7N;AAC7C,MAAAyX,EAAInK,EAAK,cAAciG,EAAQvT,CAAC,CAAC,GAAG,KAAK,eAAeuT,EAAQvT,CAAC,CAAC,CAAC;AAAA,EAEzE,GAMAsW,EAAW,UAAU,WAAW,WAA+B;AAC7D,QAAIxU,IAAM;AACV,gBAAK,KAAK,SAAU0V,GAAO;AACzB,MAAA1V,KAAO0V;AAAA,IACX,CAAG,GACM1V;AAAA,EACT,GAMAwU,EAAW,UAAU,wBAAwB,SAA0CrM,GAAO;AAC5F,QAAIqF,IAAY;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,OAENsB,IAAM,IAAI9B,EAAmB7E,CAAK,GAClC8N,IAAsB,IACtBC,IAAqB,MACrBC,IAAmB,MACnBC,IAAqB,MACrBC,IAAmB;AACvB,gBAAK,KAAK,SAAUX,GAAOjI,GAAU;AACnC,MAAAD,EAAU,QAAQkI,GACdjI,EAAS,WAAW,QACjBA,EAAS,SAAS,QAClBA,EAAS,WAAW,SACtByI,MAAuBzI,EAAS,UAC7B0I,MAAqB1I,EAAS,QAC9B2I,MAAuB3I,EAAS,UAChC4I,MAAqB5I,EAAS,SAClCqB,EAAI,WAAW;AAAA,QACb,QAAQrB,EAAS;AAAA,QACjB,UAAU;AAAA,UACR,MAAMA,EAAS;AAAA,UACf,QAAQA,EAAS;AAAA;QAEnB,WAAW;AAAA,UACT,MAAMD,EAAU;AAAA,UAChB,QAAQA,EAAU;AAAA;QAEpB,MAAMC,EAAS;AAAA,MACzB,CAAS,GAEHyI,IAAqBzI,EAAS,QAC9B0I,IAAmB1I,EAAS,MAC5B2I,IAAqB3I,EAAS,QAC9B4I,IAAmB5I,EAAS,MAC5BwI,IAAsB,MACbA,MACTnH,EAAI,WAAW;AAAA,QACb,WAAW;AAAA,UACT,MAAMtB,EAAU;AAAA,UAChB,QAAQA,EAAU;AAAA,QAC5B;AAAA,MACA,CAAO,GACD0I,IAAqB,MACrBD,IAAsB;AAExB,eAAS/J,IAAM,GAAG5P,IAASoZ,EAAM,QAAQxJ,IAAM5P,GAAQ4P;AACrD,QAAIwJ,EAAM,WAAWxJ,CAAG,MAAMoI,KAC5B9G,EAAU,QACVA,EAAU,SAAS,GAEftB,IAAM,MAAM5P,KACd4Z,IAAqB,MACrBD,IAAsB,MACbA,KACTnH,EAAI,WAAW;AAAA,UACb,QAAQrB,EAAS;AAAA,UACjB,UAAU;AAAA,YACR,MAAMA,EAAS;AAAA,YACf,QAAQA,EAAS;AAAA;UAEnB,WAAW;AAAA,YACT,MAAMD,EAAU;AAAA,YAChB,QAAQA,EAAU;AAAA;UAEpB,MAAMC,EAAS;AAAA,QAC3B,CAAW,KAGHD,EAAU;AAAA,IAGlB,CAAG,GACD,KAAK,mBAAmB,SAAUF,GAAYgJ,GAAe;AAC3D,MAAAxH,EAAI,iBAAiBxB,GAAYgJ,CAAa;AAAA,IAClD,CAAG,GAEM,EAAE,MAAM9I,EAAU,MAAM,KAAKsB,EAAG;AAAA,EACzC,GAEAyH,GAAA,aAAqB/B;;;;wBCvZrBzD,EAAA,qBAA6B1T,GAAA,EAAsC,oBACnE0T,EAAA,oBAA4BxT,GAAA,EAAqC,mBACjEwT,EAAA,aAAqBhP,GAAA,EAA6B;;;;;;ACLlD,MAAI,EAAE,YAAAyU,GAAY,cAAAC,MAAiBpZ,IAC/B,EAAE,SAAAqZ,GAAS,MAAAjN,MAASlM,IACpB,EAAE,mBAAAqT,GAAmB,oBAAA5D,EAAkB,IAAKjL,GAAA;AAEhD,WAAS4U,EAAW3W,GAAK;AACvB,WAAI,SACK,OAAO,KAAKA,GAAK,QAAQ,EAAE,SAAQ,IAGnC,OAAO,KAAKA,CAAG;AAAA,EAE1B;AAAA,EAEA,MAAM4W,EAAY;AAAA,IAChB,YAAYlb,GAAKqB,GAAM;AACrB,UAAIA,EAAK,QAAQ,GAAO;AACxB,WAAK,eAAerB,CAAG,GACvB,KAAK,SAAS,KAAK,UAAU,KAAK,YAAY,OAAO;AAErD,UAAIW,IAAOU,EAAK,MAAMA,EAAK,IAAI,OAAO,QAClC6B,IAAO,KAAK,QAAQ7B,EAAK,MAAMV,CAAI;AACvC,MAAI,CAAC,KAAK,WAAWU,EAAK,SACxB,KAAK,UAAUA,EAAK,OAElB,KAAK,YAAS,KAAK,OAAO2Z,EAAQ,KAAK,OAAO,IAC9C9X,MAAM,KAAK,OAAOA;AAAA,IAC1B;AAAA,IAEE,WAAW;AACT,aAAK,KAAK,kBACR,KAAK,gBAAgB,IAAIgS,EAAkB,KAAK,IAAI,IAE/C,KAAK;AAAA,IAChB;AAAA,IAEE,aAAahS,GAAM;AACjB,UAAIiY,IAAiB,kDACjBC,IAAU,mCACVC,IAAa,2CACbC,IAAM,4BAENC,IAAWrY,EAAK,MAAMmY,CAAU,KAAKnY,EAAK,MAAMoY,CAAG;AACvD,UAAIC;AACF,eAAO,mBAAmBrY,EAAK,OAAOqY,EAAS,CAAC,EAAE,MAAM,CAAC;AAG3D,UAAIC,IAAetY,EAAK,MAAMiY,CAAc,KAAKjY,EAAK,MAAMkY,CAAO;AACnE,UAAII;AACF,eAAOP,EAAW/X,EAAK,OAAOsY,EAAa,CAAC,EAAE,MAAM,CAAC;AAGvD,UAAIC,IAAWvY,EAAK,MAAM,iCAAiC,EAAE,CAAC;AAC9D,YAAM,IAAI,MAAM,qCAAqCuY,CAAQ;AAAA,IACjE;AAAA,IAEE,iBAAiBC,GAAiB;AAChC,aAAOA,EAAgB,QAAQ,+BAA+B,EAAE,EAAE,KAAI;AAAA,IAC1E;AAAA,IAEE,MAAMtI,GAAK;AACT,aAAI,OAAOA,KAAQ,WAAiB,KAElC,OAAOA,EAAI,YAAa,YACxB,OAAOA,EAAI,aAAc,YACzB,MAAM,QAAQA,EAAI,QAAQ;AAAA,IAEhC;AAAA,IAEE,eAAepT,GAAK;AAClB,UAAI2b,IAAW3b,EAAI,MAAM,6BAA6B;AACtD,UAAI,CAAC2b,EAAU;AAGf,UAAIlY,IAAQzD,EAAI,YAAY2b,EAAS,IAAG,CAAE,GACtCjY,IAAM1D,EAAI,QAAQ,MAAMyD,CAAK;AAEjC,MAAIA,IAAQ,MAAMC,IAAM,OAEtB,KAAK,aAAa,KAAK,iBAAiB1D,EAAI,UAAUyD,GAAOC,CAAG,CAAC;AAAA,IAEvE;AAAA,IAEE,SAASiK,GAAM;AAEb,UADA,KAAK,OAAOqN,EAAQrN,CAAI,GACpBmN,EAAWnN,CAAI;AACjB,oBAAK,UAAUA,GACRoN,EAAapN,GAAM,OAAO,EAAE,SAAQ,EAAG,KAAI;AAAA,IAExD;AAAA,IAEE,QAAQ5K,GAAMpC,GAAM;AAClB,UAAIA,MAAS,GAAO,QAAO;AAE3B,UAAIA,GAAM;AACR,YAAI,OAAOA,KAAS;AAClB,iBAAOA;AACF,YAAI,OAAOA,KAAS,YAAY;AACrC,cAAIib,IAAWjb,EAAKoC,CAAI;AACxB,cAAI6Y,GAAU;AACZ,gBAAIxI,IAAM,KAAK,SAASwI,CAAQ;AAChC,gBAAI,CAACxI;AACH,oBAAM,IAAI;AAAA,gBACR,yCAAyCwI,EAAS,SAAQ;AAAA,cACxE;AAEU,mBAAOxI;AAAA,UACjB;AAAA,QACA,OAAa;AAAA,cAAIzS,aAAgBuU;AACzB,mBAAO5D,EAAmB,cAAc3Q,CAAI,EAAE,SAAQ;AACjD,cAAIA,aAAgB2Q;AACzB,mBAAO3Q,EAAK,SAAQ;AACf,cAAI,KAAK,MAAMA,CAAI;AACxB,mBAAO,KAAK,UAAUA,CAAI;AAE1B,gBAAM,IAAI;AAAA,YACR,6CAA6CA,EAAK,SAAQ;AAAA,UACpE;AAAA;AAAA,MAEA,OAAW;AAAA,YAAI,KAAK;AACd,iBAAO,KAAK,aAAa,KAAK,UAAU;AACnC,YAAI,KAAK,YAAY;AAC1B,cAAIyS,IAAM,KAAK;AACf,iBAAIrQ,MAAMqQ,IAAMrF,EAAKiN,EAAQjY,CAAI,GAAGqQ,CAAG,IAChC,KAAK,SAASA,CAAG;AAAA,QAC9B;AAAA;AAAA,IACA;AAAA,IAEE,UAAUtV,GAAQ2F,GAAO;AACvB,aAAK3F,IACEA,EAAO,OAAO,GAAG2F,EAAM,MAAM,MAAMA,IADtB;AAAA,IAExB;AAAA,IAEE,cAAc;AACZ,aAAO,CAAC,EACN,KAAK,SAAQ,EAAG,kBAChB,KAAK,SAAQ,EAAG,eAAe,SAAS;AAAA,IAE9C;AAAA,EACA;AAEA,SAAAoY,KAAiBX,GACjBA,EAAY,UAAUA;;;;;;AC7ItB,MAAI,EAAE,QAAAY,EAAM,IAAKna,gBAAAA,GAAA,GACb,EAAE,YAAAiM,GAAY,SAAAmO,MAAYla,IAC1B,EAAE,mBAAAqT,GAAmB,oBAAA5D,EAAkB,IAAKjL,GAAA,GAC5C,EAAE,eAAA2V,GAAe,eAAAC,MAAkBzV,IAEnC9D,IAAiBuS,GAAA,GACjBiG,IAAcgB,GAAA,GACd5Z,IAAoB6Z,GAAA,GAEpBC,IAAmB,OAAO,kBAAkB,GAE5CC,IAAqB,GAAQnH,KAAqB5D,IAClDgL,IAAgB,GAAQP,KAAWnO;AAEvC,WAAS2O,EAAe1e,GAAO;AAC7B,QAAIA,EAAMue,CAAgB,EAAG,QAAOve,EAAMue,CAAgB;AAC1D,QAAI5Y,IAAQ3F,EAAM,IAAI,MAAM;AAAA,CAAI,GAC5B2e,IAAc,IAAI,MAAMhZ,EAAM,MAAM,GACpCiZ,IAAY;AAEhB,aAASja,IAAI,GAAGyU,IAAIzT,EAAM,QAAQhB,IAAIyU,GAAGzU;AACvC,MAAAga,EAAYha,CAAC,IAAIia,GACjBA,KAAajZ,EAAMhB,CAAC,EAAE,SAAS;AAGjC,WAAA3E,EAAMue,CAAgB,IAAII,GACnBA;AAAA,EACT;AAAA,EAEA,MAAM1a,EAAM;AAAA,IACV,IAAI,OAAO;AACT,aAAO,KAAK,QAAQ,KAAK;AAAA,IAC7B;AAAA,IAEE,YAAY9B,GAAKqB,IAAO,IAAI;AAC1B,UACErB,MAAQ,QACR,OAAOA,IAAQ,OACd,OAAOA,KAAQ,YAAY,CAACA,EAAI;AAEjC,cAAM,IAAI,MAAM,oBAAoBA,CAAG,wBAAwB;AA2BjE,UAxBA,KAAK,MAAMA,EAAI,SAAQ,GAEnB,KAAK,IAAI,CAAC,MAAM,YAAY,KAAK,IAAI,CAAC,MAAM,OAC9C,KAAK,SAAS,IACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAE3B,KAAK,SAAS,IAGhB,KAAK,WAAW,KAAK,KACjBqB,EAAK,aAAU,KAAK,WAAWA,EAAK,SAAS,SAAQ,IAErDA,EAAK,SAEL,CAACib,KACD,YAAY,KAAKjb,EAAK,IAAI,KAC1BuM,EAAWvM,EAAK,IAAI,IAEpB,KAAK,OAAOA,EAAK,OAEjB,KAAK,OAAO0a,EAAQ1a,EAAK,IAAI,IAI7Bib,KAAiBD,GAAoB;AACvC,YAAIjJ,IAAM,IAAI8H,EAAY,KAAK,KAAK7Z,CAAI;AACxC,YAAI+R,EAAI,MAAM;AACZ,eAAK,MAAMA;AACX,cAAIrQ,IAAOqQ,EAAI,WAAW;AAC1B,UAAI,CAAC,KAAK,QAAQrQ,MAAM,KAAK,OAAO,KAAK,WAAWA,CAAI;AAAA,QAChE;AAAA,MACA;AAEI,MAAK,KAAK,SACR,KAAK,KAAK,gBAAgB+Y,EAAO,CAAC,IAAI,MAEpC,KAAK,QAAK,KAAK,IAAI,OAAO,KAAK;AAAA,IACvC;AAAA,IAEE,MAAMnZ,GAASC,GAAMC,GAAQxB,IAAO,CAAA,GAAI;AACtC,UAAIqb,GAAWC,GAASC,GAAW7V,GAAQ9I;AAE3C,UAAI2E,KAAQ,OAAOA,KAAS,UAAU;AACpC,YAAIa,IAAQb,GACRc,IAAMb;AACV,YAAI,OAAOY,EAAM,UAAW,UAAU;AACpC,UAAAsD,IAAStD,EAAM;AACf,cAAI5C,IAAM,KAAK,WAAWkG,CAAM;AAChC,UAAAnE,IAAO/B,EAAI,MACXgC,IAAShC,EAAI;AAAA,QACrB;AACQ,UAAA+B,IAAOa,EAAM,MACbZ,IAASY,EAAM,QACfsD,IAAS,KAAK,kBAAkBnE,GAAMC,CAAM;AAE9C,YAAI,OAAOa,EAAI,UAAW,UAAU;AAClC,UAAAkZ,IAAYlZ,EAAI;AAChB,cAAI7C,IAAM,KAAK,WAAW+b,CAAS;AACnC,UAAAD,IAAU9b,EAAI,MACd6b,IAAY7b,EAAI;AAAA,QACxB;AACQ,UAAA8b,IAAUjZ,EAAI,MACdgZ,IAAYhZ,EAAI,QAChBkZ,IAAY,KAAK,kBAAkBlZ,EAAI,MAAMA,EAAI,MAAM;AAAA,MAE/D,WAAgBb;AAMV,QAAAkE,IAAS,KAAK,kBAAkBnE,GAAMC,CAAM;AAAA,WAN1B;AAClB,QAAAkE,IAASnE;AACT,YAAI/B,IAAM,KAAK,WAAWkG,CAAM;AAChC,QAAAnE,IAAO/B,EAAI,MACXgC,IAAShC,EAAI;AAAA,MACnB;AAII,UAAIgc,IAAS,KAAK,OAAOja,GAAMC,GAAQ8Z,GAASD,CAAS;AACzD,aAAIG,IACF5e,IAAS,IAAIyE;AAAA,QACXC;AAAA,QACAka,EAAO,YAAY,SACfA,EAAO,OACP,EAAE,QAAQA,EAAO,QAAQ,MAAMA,EAAO,KAAI;AAAA,QAC9CA,EAAO,YAAY,SACfA,EAAO,SACP,EAAE,QAAQA,EAAO,WAAW,MAAMA,EAAO,QAAO;AAAA,QACpDA,EAAO;AAAA,QACPA,EAAO;AAAA,QACPxb,EAAK;AAAA,MACb,IAEMpD,IAAS,IAAIyE;AAAA,QACXC;AAAA,QACAga,MAAY,SAAY/Z,IAAO,EAAE,QAAAC,GAAQ,MAAAD,EAAI;AAAA,QAC7C+Z,MAAY,SAAY9Z,IAAS,EAAE,QAAQ6Z,GAAW,MAAMC,EAAO;AAAA,QACnE,KAAK;AAAA,QACL,KAAK;AAAA,QACLtb,EAAK;AAAA,MACb,GAGIpD,EAAO,QAAQ,EAAE,QAAA4E,GAAQ,WAAA6Z,GAAW,SAAAC,GAAS,WAAAC,GAAW,MAAAha,GAAM,QAAAmE,GAAQ,QAAQ,KAAK,IAAG,GAClF,KAAK,SACHkV,MACFhe,EAAO,MAAM,MAAMge,EAAc,KAAK,IAAI,EAAE,SAAQ,IAEtDhe,EAAO,MAAM,OAAO,KAAK,OAGpBA;AAAA,IACX;AAAA,IAEE,kBAAkB2E,GAAMC,GAAQ;AAG9B,aAFkB0Z,EAAe,IAAI,EACb3Z,IAAO,CAAC,IACjBC,IAAS;AAAA,IAC5B;AAAA,IAEE,WAAWkE,GAAQ;AACjB,UAAIyV,IAAcD,EAAe,IAAI,GACjCO,IAAWN,EAAYA,EAAY,SAAS,CAAC,GAE7CO,IAAM;AACV,UAAIhW,KAAU+V;AACZ,QAAAC,IAAMP,EAAY,SAAS;AAAA,WACtB;AACL,YAAIQ,IAAMR,EAAY,SAAS,GAC3B3I;AACJ,eAAOkJ,IAAMC;AAEX,cADAnJ,IAAMkJ,KAAQC,IAAMD,KAAQ,IACxBhW,IAASyV,EAAY3I,CAAG;AAC1B,YAAAmJ,IAAMnJ,IAAM;AAAA,mBACH9M,KAAUyV,EAAY3I,IAAM,CAAC;AACtC,YAAAkJ,IAAMlJ,IAAM;AAAA,eACP;AACL,YAAAkJ,IAAMlJ;AACN;AAAA,UACV;AAAA,MAEA;AACI,aAAO;AAAA,QACL,KAAK9M,IAASyV,EAAYO,CAAG,IAAI;AAAA,QACjC,MAAMA,IAAM;AAAA,MAClB;AAAA,IACA;AAAA,IAEE,WAAWha,GAAM;AACf,aAAI,YAAY,KAAKA,CAAI,IAChBA,IAEFgZ,EAAQ,KAAK,IAAI,SAAQ,EAAG,cAAc,KAAK,IAAI,QAAQ,KAAKhZ,CAAI;AAAA,IAC/E;AAAA,IAEE,OAAOH,GAAMC,GAAQ8Z,GAASD,GAAW;AACvC,UAAI,CAAC,KAAK,IAAK,QAAO;AACtB,UAAIO,IAAW,KAAK,IAAI,SAAQ,GAE5BC,IAAOD,EAAS,oBAAoB,EAAE,QAAApa,GAAQ,MAAAD,EAAI,CAAE;AACxD,UAAI,CAACsa,EAAK,OAAQ,QAAO;AAEzB,UAAIC;AACJ,MAAI,OAAOR,KAAY,aACrBQ,IAAKF,EAAS,oBAAoB,EAAE,QAAQP,GAAW,MAAMC,EAAO,CAAE;AAGxE,UAAIS;AAEJ,MAAIxP,EAAWsP,EAAK,MAAM,IACxBE,IAAUnB,EAAciB,EAAK,MAAM,IAEnCE,IAAU,IAAI;AAAA,QACZF,EAAK;AAAA,QACL,KAAK,IAAI,SAAQ,EAAG,cAAcjB,EAAc,KAAK,IAAI,OAAO;AAAA,MACxE;AAGI,UAAIhe,IAAS;AAAA,QACX,QAAQif,EAAK;AAAA,QACb,WAAWC,KAAMA,EAAG;AAAA,QACpB,SAASA,KAAMA,EAAG;AAAA,QAClB,MAAMD,EAAK;AAAA,QACX,KAAKE,EAAQ,SAAQ;AAAA,MAC3B;AAEI,UAAIA,EAAQ,aAAa;AACvB,YAAIpB;AACF,UAAA/d,EAAO,OAAO+d,EAAcoB,CAAO;AAAA;AAGnC,gBAAM,IAAI,MAAM,uDAAuD;AAI3E,UAAIta,IAASma,EAAS,iBAAiBC,EAAK,MAAM;AAClD,aAAIpa,MAAQ7E,EAAO,SAAS6E,IAErB7E;AAAA,IACX;AAAA,IAEE,SAAS;AACP,UAAIof,IAAO,CAAA;AACX,eAAS1Y,KAAQ,CAAC,UAAU,OAAO,QAAQ,IAAI;AAC7C,QAAI,KAAKA,CAAI,KAAK,SAChB0Y,EAAK1Y,CAAI,IAAI,KAAKA,CAAI;AAG1B,aAAI,KAAK,QACP0Y,EAAK,MAAM,EAAE,GAAG,KAAK,IAAG,GACpBA,EAAK,IAAI,kBACXA,EAAK,IAAI,gBAAgB,UAGtBA;AAAA,IACX;AAAA,EACA;AAEA,SAAAxf,KAAiBiE,GACjBA,EAAM,UAAUA,GAEZQ,KAAqBA,EAAkB,iBACzCA,EAAkB,cAAcR,CAAK;;;;;;ACrQvC,MAAI+G,IAAYlH,EAAA,GAEZoI,GAAYC;AAAA,EAEhB,MAAMvB,UAAaI,EAAU;AAAA,IAC3B,YAAY5B,GAAU;AACpB,YAAMA,CAAQ,GACd,KAAK,OAAO,QACP,KAAK,UAAO,KAAK,QAAQ,CAAA;AAAA,IAClC;AAAA,IAEE,UAAU5B,GAAOmE,GAAQrH,GAAM;AAC7B,UAAIsF,IAAQ,MAAM,UAAUpC,CAAK;AAEjC,UAAImE;AACF,YAAIrH,MAAS;AACX,UAAI,KAAK,MAAM,SAAS,IACtBqH,EAAO,KAAK,SAAS,KAAK,MAAM,CAAC,EAAE,KAAK,SAExC,OAAOA,EAAO,KAAK;AAAA,iBAEZ,KAAK,UAAUA;AACxB,mBAAS/E,KAAQgD;AACf,YAAAhD,EAAK,KAAK,SAAS+E,EAAO,KAAK;AAAA;AAKrC,aAAO/B;AAAA,IACX;AAAA,IAEE,YAAYpC,GAAOpF,GAAQ;AACzB,UAAIlC,IAAQ,KAAK,MAAMsH,CAAK;AAE5B,aAAI,CAACpF,KAAUlC,MAAU,KAAK,KAAK,MAAM,SAAS,MAChD,KAAK,MAAM,CAAC,EAAE,KAAK,SAAS,KAAK,MAAMA,CAAK,EAAE,KAAK,SAG9C,MAAM,YAAYsH,CAAK;AAAA,IAClC;AAAA,IAEE,SAAShE,IAAO,IAAI;AAElB,aADW,IAAI0I,EAAW,IAAIC,EAAS,GAAI,MAAM3I,CAAI,EACzC,UAAS;AAAA,IACzB;AAAA,EACA;AAEA,SAAAoH,EAAK,qBAAqB,CAAAzG,MAAa;AACrC,IAAA+H,IAAa/H;AAAA,EACf,GAEAyG,EAAK,oBAAoB,CAAAzG,MAAa;AACpC,IAAAgI,IAAYhI;AAAA,EACd,GAEA2D,KAAiB8C,GACjBA,EAAK,UAAUA,GAEfI,EAAU,aAAaJ,CAAI;;;;;;AC1D3B,MAAI6U,IAAO;AAAA,IACT,MAAMxf,GAAQ;AACZ,aAAOwf,EAAK,MAAMxf,GAAQ,CAAC,GAAG,GAAG,EAAI;AAAA,IACzC;AAAA,IAEE,MAAMA,GAAQ;AACZ,UAAIyf,IAAS,CAAC,KAAK;AAAA,GAAM,GAAI;AAC7B,aAAOD,EAAK,MAAMxf,GAAQyf,CAAM;AAAA,IACpC;AAAA,IAEE,MAAMzf,GAAQ0f,GAAYpY,GAAM;AAC9B,UAAI4R,IAAQ,CAAA,GACRyG,IAAU,IACVC,IAAQ,IAERC,IAAO,GACPC,IAAU,IACVC,IAAY,IACZzd,IAAS;AAEb,eAAS0d,KAAUhgB;AACjB,QAAIsC,IACFA,IAAS,KACA0d,MAAW,OACpB1d,IAAS,KACAwd,IACLE,MAAWD,MACbD,IAAU,MAEHE,MAAW,OAAOA,MAAW,OACtCF,IAAU,IACVC,IAAYC,KACHA,MAAW,MACpBH,KAAQ,IACCG,MAAW,MAChBH,IAAO,MAAGA,KAAQ,KACbA,MAAS,KACdH,EAAW,SAASM,CAAM,MAAGJ,IAAQ,KAGvCA,KACED,MAAY,MAAIzG,EAAM,KAAKyG,EAAQ,KAAI,CAAE,GAC7CA,IAAU,IACVC,IAAQ,MAERD,KAAWK;AAIf,cAAI1Y,KAAQqY,MAAY,OAAIzG,EAAM,KAAKyG,EAAQ,KAAI,CAAE,GAC9CzG;AAAA,IACX;AAAA,EACA;AAEA,SAAA+G,KAAiBT,GACjBA,EAAK,UAAUA;;;;;;ACvDf,MAAIzU,IAAYlH,EAAA,GACZ2b,IAAOzb,GAAA;AAAA,EAEX,MAAM6G,UAAaG,EAAU;AAAA,IAC3B,IAAI,YAAY;AACd,aAAOyU,EAAK,MAAM,KAAK,QAAQ;AAAA,IACnC;AAAA,IAEE,IAAI,UAAUU,GAAQ;AACpB,UAAI/Q,IAAQ,KAAK,WAAW,KAAK,SAAS,MAAM,MAAM,IAAI,MACtDgR,IAAMhR,IAAQA,EAAM,CAAC,IAAI,MAAM,KAAK,IAAI,WAAW,YAAY;AACnE,WAAK,WAAW+Q,EAAO,KAAKC,CAAG;AAAA,IACnC;AAAA,IAEE,YAAYhX,GAAU;AACpB,YAAMA,CAAQ,GACd,KAAK,OAAO,QACP,KAAK,UAAO,KAAK,QAAQ,CAAA;AAAA,IAClC;AAAA,EACA;AAEAiX,SAAAA,KAAiBxV,GACjBA,EAAK,UAAUA,GAEfG,EAAU,aAAaH,CAAI;;;;;;ACxB3B,MAAIH,IAAS5G,GAAA,GACTwG,IAAUtG,EAAA,GACVwG,IAAchC,EAAA,GACdvE,IAAQ0E,GAAA,GACR0U,IAAcjG,GAAA,GACdxM,IAAOyT,EAAA,GACPxT,IAAOyT,GAAA;AAEX,WAASgC,EAASd,GAAMxV,GAAQ;AAC9B,QAAI,MAAM,QAAQwV,CAAI,EAAG,QAAOA,EAAK,IAAI,CAAA3c,MAAKyd,EAASzd,CAAC,CAAC;AAEzD,QAAI,EAAE,QAAQ0d,GAAW,GAAGnX,EAAQ,IAAKoW;AACzC,QAAIe,GAAW;AACb,MAAAvW,IAAS,CAAA;AACT,eAAShK,KAASugB,GAAW;AAC3B,YAAIC,IAAgB,EAAE,GAAGxgB,GAAO,WAAWiE,EAAM,UAAS;AAC1D,QAAIuc,EAAc,QAChBA,EAAc,MAAM;AAAA,UAClB,GAAGA,EAAc;AAAA,UACjB,WAAWnD,EAAY;AAAA,QACjC,IAEMrT,EAAO,KAAKwW,CAAa;AAAA,MAC/B;AAAA,IACA;AAIE,QAHIpX,EAAS,UACXA,EAAS,QAAQoW,EAAK,MAAM,IAAI,CAAA3c,MAAKyd,EAASzd,GAAGmH,CAAM,CAAC,IAEtDZ,EAAS,QAAQ;AACnB,UAAI,EAAE,SAAAgB,GAAS,GAAGnF,EAAM,IAAKmE,EAAS;AACtC,MAAAA,EAAS,SAASnE,GACdmF,KAAW,SACbhB,EAAS,OAAO,QAAQY,EAAOI,CAAO;AAAA,IAE5C;AACE,QAAIhB,EAAS,SAAS;AACpB,aAAO,IAAIwB,EAAKxB,CAAQ;AACnB,QAAIA,EAAS,SAAS;AAC3B,aAAO,IAAIoB,EAAYpB,CAAQ;AAC1B,QAAIA,EAAS,SAAS;AAC3B,aAAO,IAAIyB,EAAKzB,CAAQ;AACnB,QAAIA,EAAS,SAAS;AAC3B,aAAO,IAAIkB,EAAQlB,CAAQ;AACtB,QAAIA,EAAS,SAAS;AAC3B,aAAO,IAAIsB,EAAOtB,CAAQ;AAE1B,UAAM,IAAI,MAAM,wBAAwBoW,EAAK,IAAI;AAAA,EAErD;AAEA,SAAAiB,KAAiBH,GACjBA,EAAS,UAAUA;;;;;;ACnDnB,MAAI,EAAE,SAAAnD,GAAS,UAAA5M,GAAU,SAAA2N,GAAS,KAAAkC,EAAG,IAAKtc,IACtC,EAAE,mBAAAuT,GAAmB,oBAAA5D,EAAkB,IAAKzP,GAAA,GAC5C,EAAE,eAAAoa,EAAa,IAAK5V,IAEpBvE,IAAQ0E,GAAA,GAER6V,IAAqB,GAAQnH,KAAqB5D,IAClDgL,IAAgB,GAAQtB,KAAWe,KAAW3N,KAAY6P;AAAA,EAE9D,MAAMM,EAAa;AAAA,IACjB,YAAYrY,GAAWP,GAAMtE,GAAMmd,GAAW;AAC5C,WAAK,YAAYtY,GACjB,KAAK,UAAU7E,EAAK,OAAO,CAAA,GAC3B,KAAK,OAAOsE,GACZ,KAAK,OAAOtE,GACZ,KAAK,MAAMmd,GACX,KAAK,cAAcA,GACnB,KAAK,eAAe,CAAC,KAAK,QAAQ,QAAQ,KAAK,QAAQ,UAEvD,KAAK,mBAAmB,oBAAI,IAAG,GAC/B,KAAK,gBAAgB,oBAAI,IAAG,GAC5B,KAAK,eAAe,oBAAI,IAAG;AAAA,IAC/B;AAAA,IAEE,gBAAgB;AACd,UAAIre;AAEJ,MAAI,KAAK,aACPA,IACE,kCAAkC,KAAK,SAAS,KAAK,IAAI,SAAQ,CAAE,IAC5D,OAAO,KAAK,QAAQ,cAAe,WAC5CA,IAAU,KAAK,QAAQ,aACd,OAAO,KAAK,QAAQ,cAAe,aAC5CA,IAAU,KAAK,QAAQ,WAAW,KAAK,KAAK,IAAI,KAAK,IAAI,IAEzDA,IAAU,KAAK,eAAe;AAEhC,UAAIse,IAAM;AAAA;AACV,MAAI,KAAK,IAAI,SAAS;AAAA,CAAM,MAAGA,IAAM;AAAA,IAErC,KAAK,OAAOA,IAAM,0BAA0Bte,IAAU;AAAA,IAC1D;AAAA,IAEE,gBAAgB;AACd,eAASQ,KAAQ,KAAK,YAAY;AAChC,YAAIuc,IAAO,KAAK,MAAM,KAAK,KAAKvc,EAAK,IAAI,CAAC,GACtCgF,IAAOhF,EAAK,QAAQqa,EAAQra,EAAK,IAAI,GACrCyS;AAEJ,QAAI,KAAK,QAAQ,mBAAmB,MAClCA,IAAM,IAAI8B,EAAkBvU,EAAK,IAAI,GACjCyS,EAAI,mBACNA,EAAI,iBAAiB,SAGvBA,IAAMzS,EAAK,SAAQ,GAGrB,KAAK,IAAI,eAAeyS,GAAK8J,GAAM,KAAK,MAAM,KAAK,KAAKvX,CAAI,CAAC,CAAC;AAAA,MACpE;AAAA,IACA;AAAA,IAEE,kBAAkB;AAChB,UAAI,KAAK,QAAQ,eAAe;AAEhC,YAAI,KAAK,MAAM;AACb,cAAIlB;AACJ,mBAASjC,IAAI,KAAK,KAAK,MAAM,SAAS,GAAGA,KAAK,GAAGA;AAE/C,YADAiC,IAAO,KAAK,KAAK,MAAMjC,CAAC,GACpBiC,EAAK,SAAS,aACdA,EAAK,KAAK,WAAW,qBAAqB,KAC5C,KAAK,KAAK,YAAYjC,CAAC;AAAA,QAGjC,MAAW,CAAI,KAAK,QACd,KAAK,MAAM,KAAK,IAAI,QAAQ,2BAA2B,EAAE;AAAA,IAE/D;AAAA,IAEE,WAAW;AAET,UADA,KAAK,gBAAe,GAChB8Z,KAAiBD,KAAsB,KAAK,MAAK;AACnD,eAAO,KAAK,YAAW;AAClB;AACL,YAAIpe,IAAS;AACb,oBAAK,UAAU,KAAK,MAAM,CAAAuE,MAAK;AAC7B,UAAAvE,KAAUuE;AAAA,QAClB,CAAO,GACM,CAACvE,CAAM;AAAA,MACpB;AAAA,IACA;AAAA,IAEE,cAAc;AACZ,UAAI,KAAK;AACP,aAAK,eAAc;AAAA,eACV,KAAK,SAAQ,EAAG,WAAW,GAAG;AACvC,YAAI0C,IAAO,KAAK,SAAQ,EAAG,CAAC,EAAE,SAAQ;AACtC,QAAAA,EAAK,OAAO,KAAK,WAAU,GAC3B,KAAK,MAAM2Q,EAAmB,cAAc3Q,GAAM;AAAA,UAChD,sBAAsB;AAAA,SACvB;AAAA,MACP;AACM,aAAK,MAAM,IAAI2Q,EAAmB;AAAA,UAChC,MAAM,KAAK,WAAU;AAAA,UACrB,sBAAsB;AAAA,SACvB,GACD,KAAK,IAAI,WAAW;AAAA,UAClB,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAC;AAAA,UAC/B,UAAU,EAAE,QAAQ,GAAG,MAAM,EAAC;AAAA,UAC9B,QAAQ,KAAK,KAAK,OACd,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,IACpC;AAAA,SACL;AAOH,aAJI,KAAK,sBAAoB,KAAK,kBAAiB,GAC/C,KAAK,QAAQ,KAAK,SAAQ,EAAG,SAAS,KAAG,KAAK,cAAa,GAC3D,KAAK,kBAAgB,KAAK,cAAa,GAEvC,KAAK,aACA,CAAC,KAAK,GAAG,IAET,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,IAEhC;AAAA,IAEE,iBAAiB;AACf,WAAK,MAAM,IACX,KAAK,MAAM,IAAIA,EAAmB;AAAA,QAChC,MAAM,KAAK,WAAU;AAAA,QACrB,sBAAsB;AAAA,OACvB;AAED,UAAI1O,IAAO,GACPC,IAAS,GAET6b,IAAW,eACXhN,IAAU;AAAA,QACZ,WAAW,EAAE,QAAQ,GAAG,MAAM,EAAC;AAAA,QAC/B,UAAU,EAAE,QAAQ,GAAG,MAAM,EAAC;AAAA,QAC9B,QAAQ;AAAA,MACd,GAEQtM,GAAM5B;AACV,WAAK,UAAU,KAAK,MAAM,CAACc,GAAKG,GAAMtC,MAAS;AA4B7C,YA3BA,KAAK,OAAOmC,GAERG,KAAQtC,MAAS,UACnBuP,EAAQ,UAAU,OAAO9O,GACzB8O,EAAQ,UAAU,SAAS7O,IAAS,GAChC4B,EAAK,UAAUA,EAAK,OAAO,SAC7BiN,EAAQ,SAAS,KAAK,WAAWjN,CAAI,GACrCiN,EAAQ,SAAS,OAAOjN,EAAK,OAAO,MAAM,MAC1CiN,EAAQ,SAAS,SAASjN,EAAK,OAAO,MAAM,SAAS,GACrD,KAAK,IAAI,WAAWiN,CAAO,MAE3BA,EAAQ,SAASgN,GACjBhN,EAAQ,SAAS,OAAO,GACxBA,EAAQ,SAAS,SAAS,GAC1B,KAAK,IAAI,WAAWA,CAAO,KAI/BlO,IAAQc,EAAI,MAAM,KAAK,GACnBd,KACFZ,KAAQY,EAAM,QACd4B,IAAOd,EAAI,YAAY;AAAA,CAAI,GAC3BzB,IAASyB,EAAI,SAASc,KAEtBvC,KAAUyB,EAAI,QAGZG,KAAQtC,MAAS,SAAS;AAC5B,cAAI0D,IAAIpB,EAAK,UAAU,EAAE,MAAM,CAAA,EAAE;AAGjC,WAAI,EADFA,EAAK,SAAS,UAAWA,EAAK,SAAS,YAAY,CAACA,EAAK,UACzCA,MAASoB,EAAE,QAAQA,EAAE,KAAK,eACtCpB,EAAK,UAAUA,EAAK,OAAO,OAC7BiN,EAAQ,SAAS,KAAK,WAAWjN,CAAI,GACrCiN,EAAQ,SAAS,OAAOjN,EAAK,OAAO,IAAI,MACxCiN,EAAQ,SAAS,SAASjN,EAAK,OAAO,IAAI,SAAS,GACnDiN,EAAQ,UAAU,OAAO9O,GACzB8O,EAAQ,UAAU,SAAS7O,IAAS,GACpC,KAAK,IAAI,WAAW6O,CAAO,MAE3BA,EAAQ,SAASgN,GACjBhN,EAAQ,SAAS,OAAO,GACxBA,EAAQ,SAAS,SAAS,GAC1BA,EAAQ,UAAU,OAAO9O,GACzB8O,EAAQ,UAAU,SAAS7O,IAAS,GACpC,KAAK,IAAI,WAAW6O,CAAO;AAAA,QAGvC;AAAA,MACA,CAAK;AAAA,IACL;AAAA,IAEE,eAAe;AACb,aAAI,KAAK,aACA,KAEL,OAAO,KAAK,QAAQ,aAAe,MAC9B,KAAK,QAAQ,aAElB,KAAK,SAAQ,EAAG,SACX,KAAK,SAAQ,EAAG,KAAK,CAAAlP,MAAKA,EAAE,UAAU,IAExC;AAAA,IACX;AAAA,IAEE,WAAW;AACT,UAAI,OAAO,KAAK,QAAQ,SAAW;AACjC,eAAO,KAAK,QAAQ;AAGtB,UAAImc,IAAa,KAAK,QAAQ;AAC9B,aAAI,OAAOA,IAAe,OAAeA,MAAe,KAC/C,KAGL,KAAK,SAAQ,EAAG,SACX,KAAK,SAAQ,EAAG,KAAK,CAAAnc,MAAKA,EAAE,MAAM,IAEpC;AAAA,IACX;AAAA,IAEE,QAAQ;AACN,aAAI,OAAO,KAAK,KAAK,MAAQ,MACpB,CAAC,CAAC,KAAK,KAAK,MAEd,KAAK,SAAQ,EAAG,SAAS;AAAA,IACpC;AAAA,IAEE,mBAAmB;AACjB,aAAI,OAAO,KAAK,QAAQ,iBAAmB,MAClC,KAAK,QAAQ,iBAElB,KAAK,SAAQ,EAAG,SACX,KAAK,SAAQ,EAAG,KAAK,CAAAA,MAAKA,EAAE,YAAW,CAAE,IAE3C;AAAA,IACX;AAAA,IAEE,aAAa;AACX,aAAI,KAAK,KAAK,KACL,KAAK,KAAK,KAAK,KAAK,EAAE,IACpB,KAAK,KAAK,OACZ,KAAK,KAAK,KAAK,KAAK,IAAI,IAExB;AAAA,IAEb;AAAA,IAEE,KAAKO,GAAM;AAGT,UAFI,KAAK,QAAQ,YACbA,EAAK,WAAW,CAAC,MAAM,MACvB,YAAY,KAAKA,CAAI,EAAG,QAAOA;AACnC,UAAI6b,IAAS,KAAK,cAAc,IAAI7b,CAAI;AACxC,UAAI6b,EAAQ,QAAOA;AAEnB,UAAI1B,IAAO,KAAK,KAAK,KAAKlC,EAAQ,KAAK,KAAK,EAAE,IAAI;AAElD,MAAI,OAAO,KAAK,QAAQ,cAAe,aACrCkC,IAAOlC,EAAQe,EAAQmB,GAAM,KAAK,QAAQ,UAAU,CAAC;AAGvD,UAAIvP,IAAOS,EAAS8O,GAAMna,CAAI;AAC9B,kBAAK,cAAc,IAAIA,GAAM4K,CAAI,GAE1BA;AAAA,IACX;AAAA,IAEE,WAAW;AACT,UAAI,CAAC,KAAK;AAER,YADA,KAAK,eAAe,CAAA,GAChB,KAAK;AACP,eAAK,KAAK,KAAK,CAAAlJ,MAAQ;AACrB,gBAAIA,EAAK,UAAUA,EAAK,OAAO,MAAM,KAAK;AACxC,kBAAI2O,IAAM3O,EAAK,OAAO,MAAM;AAC5B,cAAK,KAAK,aAAa,SAAS2O,CAAG,KACjC,KAAK,aAAa,KAAKA,CAAG;AAAA,YAExC;AAAA,UACA,CAAS;AAAA,aACI;AACL,cAAIvV,IAAQ,IAAIiE,EAAM,KAAK,aAAa,KAAK,IAAI;AACjD,UAAIjE,EAAM,OAAK,KAAK,aAAa,KAAKA,EAAM,GAAG;AAAA,QACvD;AAGI,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,oBAAoB;AAClB,UAAIghB,IAAU,CAAA;AACd,UAAI,KAAK;AACP,aAAK,KAAK,KAAK,CAAApa,MAAQ;AACrB,cAAIA,EAAK,QAAQ;AACf,gBAAIyY,IAAOzY,EAAK,OAAO,MAAM;AAC7B,gBAAIyY,KAAQ,CAAC2B,EAAQ3B,CAAI,GAAG;AAC1B,cAAA2B,EAAQ3B,CAAI,IAAI;AAChB,kBAAIE,IAAU,KAAK,eACf,KAAK,UAAUF,CAAI,IACnB,KAAK,MAAM,KAAK,KAAKA,CAAI,CAAC;AAC9B,mBAAK,IAAI,iBAAiBE,GAAS3Y,EAAK,OAAO,MAAM,GAAG;AAAA,YACpE;AAAA,UACA;AAAA,QACA,CAAO;AAAA,eACQ,KAAK,KAAK;AACnB,YAAIyY,IAAO,KAAK,KAAK,OACjB,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,IACpC;AACJ,aAAK,IAAI,iBAAiBA,GAAM,KAAK,GAAG;AAAA,MAC9C;AAAA,IACA;AAAA,IAEE,WAAWzY,GAAM;AACf,aAAI,KAAK,QAAQ,OACR,KAAK,MAAM,KAAK,QAAQ,IAAI,IAC1B,KAAK,eACP,KAAK,UAAUA,EAAK,OAAO,MAAM,IAAI,IAErC,KAAK,MAAM,KAAK,KAAKA,EAAK,OAAO,MAAM,IAAI,CAAC;AAAA,IAEzD;AAAA,IAEE,SAASH,GAAK;AACZ,aAAI,SACK,OAAO,KAAKA,CAAG,EAAE,SAAS,QAAQ,IAElC,OAAO,KAAK,SAAS,mBAAmBA,CAAG,CAAC,CAAC;AAAA,IAE1D;AAAA,IAEE,UAAUqJ,GAAM;AACd,UAAIiR,IAAS,KAAK,iBAAiB,IAAIjR,CAAI;AAC3C,UAAIiR,EAAQ,QAAOA;AAEnB,UAAI3C,GAAe;AACjB,YAAI6C,IAAU7C,EAActO,CAAI,EAAE,SAAQ;AAC1C,oBAAK,iBAAiB,IAAIA,GAAMmR,CAAO,GAEhCA;AAAA,MACb;AACM,cAAM,IAAI;AAAA,UACR;AAAA,QACR;AAAA,IAEA;AAAA,IAEE,MAAMnR,GAAM;AACV,UAAIiR,IAAS,KAAK,aAAa,IAAIjR,CAAI;AACvC,UAAIiR,EAAQ,QAAOA;AAEnB,MAAIX,MAAQ,SACVtQ,IAAOA,EAAK,QAAQ,OAAO,GAAG;AAGhC,UAAIP,IAAM,UAAUO,CAAI,EAAE,QAAQ,SAAS,kBAAkB;AAC7D,kBAAK,aAAa,IAAIA,GAAMP,CAAG,GAExBA;AAAA,IACX;AAAA,EACA;AAEA,SAAA2R,KAAiBR;;;;;;AC7WjB,MAAIhW,IAAS5G,GAAA,GACTwG,IAAUtG,EAAA,GACVwG,IAAchC,EAAA,GACdoC,IAAOjC,EAAA,GACPkC,IAAOuM,GAAA,GACPrT,IAAYsa,GAAA;AAEhB,QAAM8C,IAAwB;AAAA,IAC5B,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAEA,WAASC,EAAqBC,GAAQ;AACpC,aAAS1c,IAAI0c,EAAO,SAAS,GAAG1c,KAAK,GAAGA,KAAK;AAC3C,UAAIf,IAAQyd,EAAO1c,CAAC,GAChB3B,IAAMY,EAAM,CAAC,KAAKA,EAAM,CAAC;AAC7B,UAAIZ,EAAK,QAAOA;AAAA,IACpB;AAAA,EACA;AAAA,EAEA,MAAMse,EAAO;AAAA,IACX,YAAYthB,GAAO;AACjB,WAAK,QAAQA,GAEb,KAAK,OAAO,IAAI4K,EAAI,GACpB,KAAK,UAAU,KAAK,MACpB,KAAK,SAAS,IACd,KAAK,YAAY,IAEjB,KAAK,gBAAe,GACpB,KAAK,KAAK,SAAS,EAAE,OAAA5K,GAAO,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,EAAC,EAAE;AAAA,IACxE;AAAA,IAEE,OAAO4D,GAAO;AACZ,UAAIgD,IAAO,IAAI8D,EAAM;AACrB,MAAA9D,EAAK,OAAOhD,EAAM,CAAC,EAAE,MAAM,CAAC,GACxBgD,EAAK,SAAS,MAChB,KAAK,cAAcA,GAAMhD,CAAK,GAEhC,KAAK,KAAKgD,GAAMhD,EAAM,CAAC,CAAC;AAExB,UAAIU,GACAxB,GACA2L,GACAlH,IAAO,IACP1H,IAAO,IACPkH,IAAS,CAAA,GACTwa,IAAW,CAAA;AAEf,aAAO,CAAC,KAAK,UAAU,eAAa;AAYlC,YAXA3d,IAAQ,KAAK,UAAU,UAAS,GAChCU,IAAOV,EAAM,CAAC,GAEVU,MAAS,OAAOA,MAAS,MAC3Bid,EAAS,KAAKjd,MAAS,MAAM,MAAM,GAAG,IAC7BA,MAAS,OAAOid,EAAS,SAAS,IAC3CA,EAAS,KAAK,GAAG,IACRjd,MAASid,EAASA,EAAS,SAAS,CAAC,KAC9CA,EAAS,IAAG,GAGVA,EAAS,WAAW;AACtB,cAAIjd,MAAS,KAAK;AAChB,YAAAsC,EAAK,OAAO,MAAM,KAAK,YAAYhD,EAAM,CAAC,CAAC,GAC3CgD,EAAK,OAAO,IAAI,UAChB,KAAK,YAAY;AACjB;AAAA,UACV,WAAmBtC,MAAS,KAAK;AACvB,YAAAzE,IAAO;AACP;AAAA,UACV,WAAmByE,MAAS,KAAK;AACvB,gBAAIyC,EAAO,SAAS,GAAG;AAGrB,mBAFA0H,IAAQ1H,EAAO,SAAS,GACxBjE,IAAOiE,EAAO0H,CAAK,GACZ3L,KAAQA,EAAK,CAAC,MAAM;AACzB,gBAAAA,IAAOiE,EAAO,EAAE0H,CAAK;AAEvB,cAAI3L,MACF8D,EAAK,OAAO,MAAM,KAAK,YAAY9D,EAAK,CAAC,KAAKA,EAAK,CAAC,CAAC,GACrD8D,EAAK,OAAO,IAAI;AAAA,YAE9B;AACU,iBAAK,IAAIhD,CAAK;AACd;AAAA,UACV;AACU,YAAAmD,EAAO,KAAKnD,CAAK;AAAA;AAGnB,UAAAmD,EAAO,KAAKnD,CAAK;AAGnB,YAAI,KAAK,UAAU,aAAa;AAC9B,UAAA2D,IAAO;AACP;AAAA,QACR;AAAA,MACA;AAEI,MAAAX,EAAK,KAAK,UAAU,KAAK,yBAAyBG,CAAM,GACpDA,EAAO,UACTH,EAAK,KAAK,YAAY,KAAK,2BAA2BG,CAAM,GAC5D,KAAK,IAAIH,GAAM,UAAUG,CAAM,GAC3BQ,MACF3D,IAAQmD,EAAOA,EAAO,SAAS,CAAC,GAChCH,EAAK,OAAO,MAAM,KAAK,YAAYhD,EAAM,CAAC,KAAKA,EAAM,CAAC,CAAC,GACvDgD,EAAK,OAAO,IAAI,UAChB,KAAK,SAASA,EAAK,KAAK,SACxBA,EAAK,KAAK,UAAU,QAGtBA,EAAK,KAAK,YAAY,IACtBA,EAAK,SAAS,KAGZ/G,MACF+G,EAAK,QAAQ,CAAA,GACb,KAAK,UAAUA;AAAA,IAErB;AAAA,IAEE,qBAAqBya,GAAQ;AAC3B,UAAIG,IAAQ,KAAK,MAAMH,CAAM;AAC7B,UAAIG,MAAU,GAAO;AAErB,UAAIC,IAAU,GACV7d;AACJ,eAASmF,IAAIyY,IAAQ,GAAGzY,KAAK,MAC3BnF,IAAQyd,EAAOtY,CAAC,GACZ,EAAAnF,EAAM,CAAC,MAAM,YACf6d,KAAW,GACPA,MAAY,MAJY1Y;AAE9B;AAQF,YAAM,KAAK,MAAM;AAAA,QACf;AAAA,QACAnF,EAAM,CAAC,MAAM,SAASA,EAAM,CAAC,IAAI,IAAIA,EAAM,CAAC;AAAA,MAClD;AAAA,IACA;AAAA,IAEE,MAAMyd,GAAQ;AACZ,UAAIE,IAAW,GACXze,GAAMc,GAAOU;AACjB,eAAS,CAACK,GAAG+c,CAAO,KAAKL,EAAO,QAAO,GAAI;AAUzC,YATAzd,IAAQ8d,GACRpd,IAAOV,EAAM,CAAC,GAEVU,MAAS,QACXid,KAAY,IAEVjd,MAAS,QACXid,KAAY,IAEVA,MAAa,KAAKjd,MAAS;AAC7B,cAAI,CAACxB;AACH,iBAAK,YAAYc,CAAK;AAAA,eACjB;AAAA,gBAAId,EAAK,CAAC,MAAM,UAAUA,EAAK,CAAC,MAAM;AAC3C;AAEA,mBAAO6B;AAAA;AAIX,QAAA7B,IAAOc;AAAA,MACb;AACI,aAAO;AAAA,IACX;AAAA,IAEE,QAAQA,GAAO;AACb,UAAIgD,IAAO,IAAI0D,EAAO;AACtB,WAAK,KAAK1D,GAAMhD,EAAM,CAAC,CAAC,GACxBgD,EAAK,OAAO,MAAM,KAAK,YAAYhD,EAAM,CAAC,KAAKA,EAAM,CAAC,CAAC,GACvDgD,EAAK,OAAO,IAAI;AAEhB,UAAIvB,IAAOzB,EAAM,CAAC,EAAE,MAAM,GAAG,EAAE;AAC/B,UAAI,QAAQ,KAAKyB,CAAI;AACnB,QAAAuB,EAAK,OAAO,IACZA,EAAK,KAAK,OAAOvB,GACjBuB,EAAK,KAAK,QAAQ;AAAA,WACb;AACL,YAAIwI,IAAQ/J,EAAK,MAAM,sBAAsB;AAC7C,QAAAuB,EAAK,OAAOwI,EAAM,CAAC,GACnBxI,EAAK,KAAK,OAAOwI,EAAM,CAAC,GACxBxI,EAAK,KAAK,QAAQwI,EAAM,CAAC;AAAA,MAC/B;AAAA,IACA;AAAA,IAEE,kBAAkB;AAChB,WAAK,YAAYrL,EAAU,KAAK,KAAK;AAAA,IACzC;AAAA,IAEE,KAAKsd,GAAQM,GAAgB;AAC3B,UAAI/a,IAAO,IAAI4D,EAAW;AAC1B,WAAK,KAAK5D,GAAMya,EAAO,CAAC,EAAE,CAAC,CAAC;AAE5B,UAAI9Z,IAAO8Z,EAAOA,EAAO,SAAS,CAAC;AAWnC,WAVI9Z,EAAK,CAAC,MAAM,QACd,KAAK,YAAY,IACjB8Z,EAAO,IAAG,IAGZza,EAAK,OAAO,MAAM,KAAK;AAAA,QACrBW,EAAK,CAAC,KAAKA,EAAK,CAAC,KAAK6Z,EAAqBC,CAAM;AAAA,MACvD,GACIza,EAAK,OAAO,IAAI,UAETya,EAAO,CAAC,EAAE,CAAC,MAAM;AACtB,QAAIA,EAAO,WAAW,KAAG,KAAK,YAAYA,CAAM,GAChDza,EAAK,KAAK,UAAUya,EAAO,MAAK,EAAG,CAAC;AAKtC,WAHAza,EAAK,OAAO,QAAQ,KAAK,YAAYya,EAAO,CAAC,EAAE,CAAC,CAAC,GAEjDza,EAAK,OAAO,IACLya,EAAO,UAAQ;AACpB,YAAI/c,IAAO+c,EAAO,CAAC,EAAE,CAAC;AACtB,YAAI/c,MAAS,OAAOA,MAAS,WAAWA,MAAS;AAC/C;AAEF,QAAAsC,EAAK,QAAQya,EAAO,MAAK,EAAG,CAAC;AAAA,MACnC;AAEI,MAAAza,EAAK,KAAK,UAAU;AAEpB,UAAIhD;AACJ,aAAOyd,EAAO;AAGZ,YAFAzd,IAAQyd,EAAO,MAAK,GAEhBzd,EAAM,CAAC,MAAM,KAAK;AACpB,UAAAgD,EAAK,KAAK,WAAWhD,EAAM,CAAC;AAC5B;AAAA,QACR;AACQ,UAAIA,EAAM,CAAC,MAAM,UAAU,KAAK,KAAKA,EAAM,CAAC,CAAC,KAC3C,KAAK,YAAY,CAACA,CAAK,CAAC,GAE1BgD,EAAK,KAAK,WAAWhD,EAAM,CAAC;AAIhC,OAAIgD,EAAK,KAAK,CAAC,MAAM,OAAOA,EAAK,KAAK,CAAC,MAAM,SAC3CA,EAAK,KAAK,UAAUA,EAAK,KAAK,CAAC,GAC/BA,EAAK,OAAOA,EAAK,KAAK,MAAM,CAAC;AAG/B,UAAIgb,IAAc,CAAA,GACdpf;AACJ,aAAO6e,EAAO,WACZ7e,IAAO6e,EAAO,CAAC,EAAE,CAAC,GACd,EAAA7e,MAAS,WAAWA,MAAS;AACjC,QAAAof,EAAY,KAAKP,EAAO,MAAK,CAAE;AAGjC,WAAK,wBAAwBA,CAAM;AAEnC,eAAS1c,IAAI0c,EAAO,SAAS,GAAG1c,KAAK,GAAGA,KAAK;AAE3C,YADAf,IAAQyd,EAAO1c,CAAC,GACZf,EAAM,CAAC,EAAE,YAAW,MAAO,cAAc;AAC3C,UAAAgD,EAAK,YAAY;AACjB,cAAI3G,IAAS,KAAK,WAAWohB,GAAQ1c,CAAC;AACtC,UAAA1E,IAAS,KAAK,cAAcohB,CAAM,IAAIphB,GAClCA,MAAW,kBAAe2G,EAAK,KAAK,YAAY3G;AACpD;AAAA,QACR,WAAiB2D,EAAM,CAAC,EAAE,YAAW,MAAO,aAAa;AACjD,cAAI8L,IAAQ2R,EAAO,MAAM,CAAC,GACtB5a,IAAM;AACV,mBAASsC,IAAIpE,GAAGoE,IAAI,GAAGA,KAAK;AAC1B,gBAAIzE,IAAOoL,EAAM3G,CAAC,EAAE,CAAC;AACrB,gBAAItC,EAAI,OAAO,WAAW,GAAG,KAAKnC,MAAS;AACzC;AAEF,YAAAmC,IAAMiJ,EAAM,IAAG,EAAG,CAAC,IAAIjJ;AAAA,UACjC;AACQ,UAAIA,EAAI,KAAI,EAAG,WAAW,GAAG,MAC3BG,EAAK,YAAY,IACjBA,EAAK,KAAK,YAAYH,GACtB4a,IAAS3R;AAAA,QAEnB;AAEM,YAAI9L,EAAM,CAAC,MAAM,WAAWA,EAAM,CAAC,MAAM;AACvC;AAAA,MAER;AAII,MAFcyd,EAAO,KAAK,CAAA1c,MAAKA,EAAE,CAAC,MAAM,WAAWA,EAAE,CAAC,MAAM,SAAS,MAGnEiC,EAAK,KAAK,WAAWgb,EAAY,IAAI,CAAAjd,MAAKA,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GACvDid,IAAc,CAAA,IAEhB,KAAK,IAAIhb,GAAM,SAASgb,EAAY,OAAOP,CAAM,GAAGM,CAAc,GAE9D/a,EAAK,MAAM,SAAS,GAAG,KAAK,CAAC+a,KAC/B,KAAK,qBAAqBN,CAAM;AAAA,IAEtC;AAAA,IAEE,YAAYzd,GAAO;AACjB,YAAM,KAAK,MAAM;AAAA,QACf;AAAA,QACA,EAAE,QAAQA,EAAM,CAAC,EAAC;AAAA,QAClB,EAAE,QAAQA,EAAM,CAAC,IAAIA,EAAM,CAAC,EAAE,OAAM;AAAA,MAC1C;AAAA,IACA;AAAA,IAEE,UAAUA,GAAO;AACf,UAAIgD,IAAO,IAAIiE,EAAI;AACnB,WAAK,KAAKjE,GAAMhD,EAAM,CAAC,CAAC,GACxBgD,EAAK,WAAW,IAChBA,EAAK,KAAK,UAAU,IACpB,KAAK,UAAUA;AAAA,IACnB;AAAA,IAEE,IAAIhD,GAAO;AACT,MAAI,KAAK,QAAQ,SAAS,KAAK,QAAQ,MAAM,WAC3C,KAAK,QAAQ,KAAK,YAAY,KAAK,YAErC,KAAK,YAAY,IAEjB,KAAK,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,QACjE,KAAK,SAAS,IAEV,KAAK,QAAQ,UACf,KAAK,QAAQ,OAAO,MAAM,KAAK,YAAYA,EAAM,CAAC,CAAC,GACnD,KAAK,QAAQ,OAAO,IAAI,UACxB,KAAK,UAAU,KAAK,QAAQ,UAE5B,KAAK,gBAAgBA,CAAK;AAAA,IAEhC;AAAA,IAEE,UAAU;AACR,MAAI,KAAK,QAAQ,UAAQ,KAAK,cAAa,GACvC,KAAK,QAAQ,SAAS,KAAK,QAAQ,MAAM,WAC3C,KAAK,QAAQ,KAAK,YAAY,KAAK,YAErC,KAAK,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS,MAAM,KAAK,QACjE,KAAK,KAAK,OAAO,MAAM,KAAK,YAAY,KAAK,UAAU,SAAQ,CAAE;AAAA,IACrE;AAAA,IAEE,cAAcA,GAAO;AAEnB,UADA,KAAK,UAAUA,EAAM,CAAC,GAClB,KAAK,QAAQ,OAAO;AACtB,YAAId,IAAO,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,SAAS,CAAC;AAC3D,QAAIA,KAAQA,EAAK,SAAS,UAAU,CAACA,EAAK,KAAK,iBAC7CA,EAAK,KAAK,eAAe,KAAK,QAC9B,KAAK,SAAS,IACdA,EAAK,OAAO,MAAM,KAAK,YAAYc,EAAM,CAAC,CAAC,GAC3Cd,EAAK,OAAO,IAAI,UAAUA,EAAK,KAAK,aAAa;AAAA,MAEzD;AAAA,IACA;AAAA;AAAA,IAIE,YAAYoG,GAAQ;AAClB,UAAIlG,IAAM,KAAK,MAAM,WAAWkG,CAAM;AACtC,aAAO;AAAA,QACL,QAAQlG,EAAI;AAAA,QACZ,MAAMA,EAAI;AAAA,QACV,QAAAkG;AAAA,MACN;AAAA,IACA;AAAA,IAEE,KAAKtC,GAAMsC,GAAQ;AACjB,WAAK,QAAQ,KAAKtC,CAAI,GACtBA,EAAK,SAAS;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK,YAAYsC,CAAM;AAAA,MACpC,GACItC,EAAK,KAAK,SAAS,KAAK,QACxB,KAAK,SAAS,IACVA,EAAK,SAAS,cAAW,KAAK,YAAY;AAAA,IAClD;AAAA,IAEE,MAAMhB,GAAO;AACX,UAAIC,IAAM,IACNvB,IAAO,MACPkd,IAAQ,IACRK,IAAU,MACVN,IAAW,CAAA,GACXI,IAAiB/b,EAAM,CAAC,EAAE,WAAW,IAAI,GAEzCyb,IAAS,CAAA,GACTzd,IAAQgC;AACZ,aAAOhC,KAAO;AAIZ,YAHAU,IAAOV,EAAM,CAAC,GACdyd,EAAO,KAAKzd,CAAK,GAEbU,MAAS,OAAOA,MAAS;AAC3B,UAAKud,MAASA,IAAUje,IACxB2d,EAAS,KAAKjd,MAAS,MAAM,MAAM,GAAG;AAAA,iBAC7Bqd,KAAkBH,KAASld,MAAS;AAC7C,UAAKud,MAASA,IAAUje,IACxB2d,EAAS,KAAK,GAAG;AAAA,iBACRA,EAAS,WAAW;AAC7B,cAAIjd,MAAS;AACX,gBAAIkd,GAAO;AACT,mBAAK,KAAKH,GAAQM,CAAc;AAChC;AAAA,YACZ;AACY;AAAA,mBAEOrd,MAAS,KAAK;AACvB,iBAAK,KAAK+c,CAAM;AAChB;AAAA,UACV,WAAmB/c,MAAS,KAAK;AACvB,iBAAK,UAAU,KAAK+c,EAAO,IAAG,CAAE,GAChCxb,IAAM;AACN;AAAA,UACV,MAAe,CAAIvB,MAAS,QAClBkd,IAAQ;AAAA,YAEL,CAAIld,MAASid,EAASA,EAAS,SAAS,CAAC,MAC9CA,EAAS,IAAG,GACRA,EAAS,WAAW,MAAGM,IAAU;AAGvC,QAAAje,IAAQ,KAAK,UAAU,UAAS;AAAA,MACtC;AAKI,UAHI,KAAK,UAAU,UAAS,MAAIiC,IAAM,KAClC0b,EAAS,SAAS,KAAG,KAAK,gBAAgBM,CAAO,GAEjDhc,KAAO2b,GAAO;AAChB,YAAI,CAACG;AACH,iBAAON,EAAO,WACZzd,IAAQyd,EAAOA,EAAO,SAAS,CAAC,EAAE,CAAC,GAC/B,EAAAzd,MAAU,WAAWA,MAAU;AACnC,iBAAK,UAAU,KAAKyd,EAAO,IAAG,CAAE;AAGpC,aAAK,KAAKA,GAAQM,CAAc;AAAA,MACtC;AACM,aAAK,YAAYN,CAAM;AAAA,IAE7B;AAAA,IAEE,QAAQ;AACN,UAAIzd;AACJ,aAAO,CAAC,KAAK,UAAU;AAGrB,gBAFAA,IAAQ,KAAK,UAAU,UAAS,GAExBA,EAAM,CAAC,GAAC;AAAA,UACd,KAAK;AACH,iBAAK,UAAUA,EAAM,CAAC;AACtB;AAAA,UAEF,KAAK;AACH,iBAAK,cAAcA,CAAK;AACxB;AAAA,UAEF,KAAK;AACH,iBAAK,IAAIA,CAAK;AACd;AAAA,UAEF,KAAK;AACH,iBAAK,QAAQA,CAAK;AAClB;AAAA,UAEF,KAAK;AACH,iBAAK,OAAOA,CAAK;AACjB;AAAA,UAEF,KAAK;AACH,iBAAK,UAAUA,CAAK;AACpB;AAAA,UAEF;AACE,iBAAK,MAAMA,CAAK;AAChB;AAAA,QACV;AAEI,WAAK,QAAO;AAAA,IAChB;AAAA,IAEE,0BAAsC;AAAA,IAExC;AAAA,IAEE,IAAIgD,GAAMsB,GAAMmZ,GAAQM,GAAgB;AACtC,UAAI/d,GAAOU,GACPvB,IAASse,EAAO,QAChB9c,IAAQ,IACRud,IAAQ,IACRtf,GAAMM;AAEV,eAAS6B,IAAI,GAAGA,IAAI5B,GAAQ4B,KAAK;AAC/B,QAAAf,IAAQyd,EAAO1c,CAAC,GAChBL,IAAOV,EAAM,CAAC,GACVU,MAAS,WAAWK,MAAM5B,IAAS,KAAK,CAAC4e,IAC3CG,IAAQ,KACCxd,MAAS,aAClBxB,IAAOue,EAAO1c,IAAI,CAAC,IAAI0c,EAAO1c,IAAI,CAAC,EAAE,CAAC,IAAI,SAC1CnC,IAAO6e,EAAO1c,IAAI,CAAC,IAAI0c,EAAO1c,IAAI,CAAC,EAAE,CAAC,IAAI,SACtC,CAACwc,EAAsBre,CAAI,KAAK,CAACqe,EAAsB3e,CAAI,IACzD+B,EAAM,MAAM,EAAE,MAAM,MACtBud,IAAQ,KAERvd,KAASX,EAAM,CAAC,IAGlBke,IAAQ,MAGVvd,KAASX,EAAM,CAAC;AAGpB,UAAI,CAACke,GAAO;AACV,YAAI3Z,IAAMkZ,EAAO,OAAO,CAACU,GAAKpd,MAAMod,IAAMpd,EAAE,CAAC,GAAG,EAAE;AAClD,QAAAiC,EAAK,KAAKsB,CAAI,IAAI,EAAE,KAAAC,GAAK,OAAA5D,EAAK;AAAA,MACpC;AACI,MAAAqC,EAAKsB,CAAI,IAAI3D;AAAA,IACjB;AAAA,IAEE,KAAK8c,GAAQ;AACX,MAAAA,EAAO,IAAG;AAEV,UAAIza,IAAO,IAAIiE,EAAI;AACnB,WAAK,KAAKjE,GAAMya,EAAO,CAAC,EAAE,CAAC,CAAC,GAE5Bza,EAAK,KAAK,UAAU,KAAK,yBAAyBya,CAAM,GACxD,KAAK,IAAIza,GAAM,YAAYya,CAAM,GACjC,KAAK,UAAUza;AAAA,IACnB;AAAA,IAEE,yBAAyBya,GAAQ;AAC/B,UAAIW,GACAtC,IAAS;AACb,aAAO2B,EAAO,WACZW,IAAgBX,EAAOA,EAAO,SAAS,CAAC,EAAE,CAAC,GACvC,EAAAW,MAAkB,WAAWA,MAAkB;AACnD,QAAAtC,IAAS2B,EAAO,IAAG,EAAG,CAAC,IAAI3B;AAE7B,aAAOA;AAAA,IACX;AAAA;AAAA,IAIE,2BAA2B2B,GAAQ;AACjC,UAAI7e,GACAkd,IAAS;AACb,aAAO2B,EAAO,WACZ7e,IAAO6e,EAAO,CAAC,EAAE,CAAC,GACd,EAAA7e,MAAS,WAAWA,MAAS;AACjC,QAAAkd,KAAU2B,EAAO,MAAK,EAAG,CAAC;AAE5B,aAAO3B;AAAA,IACX;AAAA,IAEE,cAAc2B,GAAQ;AACpB,UAAIW,GACAtC,IAAS;AACb,aAAO2B,EAAO,WACZW,IAAgBX,EAAOA,EAAO,SAAS,CAAC,EAAE,CAAC,GACvCW,MAAkB;AACtB,QAAAtC,IAAS2B,EAAO,IAAG,EAAG,CAAC,IAAI3B;AAE7B,aAAOA;AAAA,IACX;AAAA,IAEE,WAAW2B,GAAQhC,GAAM;AACvB,UAAIjf,IAAS;AACb,eAASuE,IAAI0a,GAAM1a,IAAI0c,EAAO,QAAQ1c;AACpC,QAAAvE,KAAUihB,EAAO1c,CAAC,EAAE,CAAC;AAEvB,aAAA0c,EAAO,OAAOhC,GAAMgC,EAAO,SAAShC,CAAI,GACjCjf;AAAA,IACX;AAAA,IAEE,gBAAgB;AACd,UAAI4C,IAAM,KAAK,QAAQ,OAAO;AAC9B,YAAM,KAAK,MAAM,MAAM,kBAAkBA,EAAI,MAAMA,EAAI,MAAM;AAAA,IACjE;AAAA,IAEE,gBAAgB6e,GAAS;AACvB,YAAM,KAAK,MAAM;AAAA,QACf;AAAA,QACA,EAAE,QAAQA,EAAQ,CAAC,EAAC;AAAA,QACpB,EAAE,QAAQA,EAAQ,CAAC,IAAI,EAAC;AAAA,MAC9B;AAAA,IACA;AAAA,IAEE,gBAAgBje,GAAO;AACrB,YAAM,KAAK,MAAM;AAAA,QACf;AAAA,QACA,EAAE,QAAQA,EAAM,CAAC,EAAC;AAAA,QAClB,EAAE,QAAQA,EAAM,CAAC,IAAI,EAAC;AAAA,MAC5B;AAAA,IACA;AAAA,IAEE,YAAYyd,GAAQ;AAClB,YAAM,KAAK,MAAM;AAAA,QACf,kBAAkBA,EAAO,CAAC,EAAE,CAAC;AAAA,QAC7B,EAAE,QAAQA,EAAO,CAAC,EAAE,CAAC,EAAC;AAAA,QACtB,EAAE,QAAQA,EAAO,CAAC,EAAE,CAAC,IAAIA,EAAO,CAAC,EAAE,CAAC,EAAE,OAAM;AAAA,MAClD;AAAA,IACA;AAAA,IAEE,cAAcza,GAAMhD,GAAO;AACzB,YAAM,KAAK,MAAM;AAAA,QACf;AAAA,QACA,EAAE,QAAQA,EAAM,CAAC,EAAC;AAAA,QAClB,EAAE,QAAQA,EAAM,CAAC,IAAIA,EAAM,CAAC,EAAE,OAAM;AAAA,MAC1C;AAAA,IACA;AAAA,EACA;AAEA,SAAAqe,KAAiBX;;;;;;AChmBjB,MAAItW,IAAYlH,EAAA,GACZG,IAAQD,GAAA,GACRsd,IAAS9Y,GAAA;AAEb,WAASmC,EAAMxI,GAAKqB,GAAM;AACxB,QAAIxD,IAAQ,IAAIiE,EAAM9B,GAAKqB,CAAI,GAC3Bye,IAAS,IAAIX,EAAOthB,CAAK;AAC7B,QAAI;AACF,MAAAiiB,EAAO,MAAK;AAAA,IAChB,SAAWnW,GAAG;AACV,YAAI,QAAQ,IAAI,aAAa,gBACvBA,EAAE,SAAS,oBAAoBtI,KAAQA,EAAK,SAC1C,WAAW,KAAKA,EAAK,IAAI,IAC3BsI,EAAE,WACA;AAAA,gGAGO,UAAU,KAAKtI,EAAK,IAAI,IACjCsI,EAAE,WACA;AAAA,gGAGO,WAAW,KAAKtI,EAAK,IAAI,MAClCsI,EAAE,WACA;AAAA,iGAMFA;AAAA,IACV;AAEE,WAAOmW,EAAO;AAAA,EAChB;AAEA,SAAAC,KAAiBvX,GACjBA,EAAM,UAAUA,GAEhBK,EAAU,cAAcL,CAAK;;;;;;ECvC7B,MAAMwX,EAAQ;AAAA,IACZ,YAAY9c,GAAM7B,IAAO,IAAI;AAI3B,UAHA,KAAK,OAAO,WACZ,KAAK,OAAO6B,GAER7B,EAAK,QAAQA,EAAK,KAAK,QAAQ;AACjC,YAAI4e,IAAQ5e,EAAK,KAAK,QAAQA,CAAI;AAClC,aAAK,OAAO4e,EAAM,MAAM,MACxB,KAAK,SAASA,EAAM,MAAM,QAC1B,KAAK,UAAUA,EAAM,IAAI,MACzB,KAAK,YAAYA,EAAM,IAAI;AAAA,MACjC;AAEI,eAASC,KAAO7e,EAAM,MAAK6e,CAAG,IAAI7e,EAAK6e,CAAG;AAAA,IAC9C;AAAA,IAEE,WAAW;AACT,aAAI,KAAK,OACA,KAAK,KAAK,MAAM,KAAK,MAAM;AAAA,QAChC,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,MACnB,CAAO,EAAE,UAGD,KAAK,SACA,KAAK,SAAS,OAAO,KAAK,OAG5B,KAAK;AAAA,IAChB;AAAA,EACA;AAEA,SAAAC,KAAiBH,GACjBA,EAAQ,UAAUA;;;;;;AClClB,MAAIA,IAAUre,GAAA;AAAA,EAEd,MAAMye,EAAO;AAAA,IACX,IAAI,UAAU;AACZ,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,YAAY/d,GAAWsD,GAAMtE,GAAM;AACjC,WAAK,YAAYgB,GACjB,KAAK,WAAW,CAAA,GAChB,KAAK,OAAOsD,GACZ,KAAK,OAAOtE,GACZ,KAAK,MAAM,IACX,KAAK,MAAM;AAAA,IACf;AAAA,IAEE,WAAW;AACT,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,KAAK6B,GAAM7B,IAAO,IAAI;AACpB,MAAKA,EAAK,UACJ,KAAK,cAAc,KAAK,WAAW,kBACrCA,EAAK,SAAS,KAAK,WAAW;AAIlC,UAAI8e,IAAU,IAAIH,EAAQ9c,GAAM7B,CAAI;AACpC,kBAAK,SAAS,KAAK8e,CAAO,GAEnBA;AAAA,IACX;AAAA,IAEE,WAAW;AACT,aAAO,KAAK,SAAS,OAAO,CAAA3d,MAAKA,EAAE,SAAS,SAAS;AAAA,IACzD;AAAA,EACA;AAEA,SAAAvE,KAAiBmiB,GACjBA,EAAO,UAAUA;;;;;;ACtCjB,MAAIC,IAAU,CAAA;AAEd,SAAAC,KAAiB,SAAkB3d,GAAS;AAC1C,IAAI0d,EAAQ1d,CAAO,MACnB0d,EAAQ1d,CAAO,IAAI,IAEf,OAAO,UAAY,OAAe,QAAQ,QAC5C,QAAQ,KAAKA,CAAO;AAAA,EAExB;;;;;;ACVA,MAAIkG,IAAYlH,EAAA,GACZsI,IAAWpI,GAAA,GACX0c,IAAelY,GAAA,GACfmC,IAAQhC,GAAA,GACR4Z,IAASnL,GAAA,GACTxM,IAAOyT,EAAA,GACPhW,IAAYiW,EAAA,GACZ,EAAE,SAAA7V,GAAS,IAAAC,EAAE,IAAKga,GAAA,GAClBD,IAAWE,GAAA;AAEf,QAAMC,IAAqB;AAAA,IACzB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,EACR,GAEMC,IAAe;AAAA,IACnB,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,cAAc;AAAA,IACd,MAAM;AAAA,IACN,UAAU;AAAA,IACV,eAAe;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,EACZ,GAEMC,IAAe;AAAA,IACnB,MAAM;AAAA,IACN,eAAe;AAAA,IACf,SAAS;AAAA,EACX,GAEMC,IAAW;AAEjB,WAASC,EAAUna,GAAK;AACtB,WAAO,OAAOA,KAAQ,YAAY,OAAOA,EAAI,QAAS;AAAA,EACxD;AAEA,WAASoa,EAAUrc,GAAM;AACvB,QAAI0O,IAAM,IACNhR,IAAOse,EAAmBhc,EAAK,IAAI;AAOvC,WANIA,EAAK,SAAS,SAChB0O,IAAM1O,EAAK,KAAK,YAAW,IAClBA,EAAK,SAAS,aACvB0O,IAAM1O,EAAK,KAAK,YAAW,IAGzB0O,KAAO1O,EAAK,SACP;AAAA,MACLtC;AAAA,MACAA,IAAO,MAAMgR;AAAA,MACbyN;AAAA,MACAze,IAAO;AAAA,MACPA,IAAO,UAAUgR;AAAA,IACvB,IACaA,IACF,CAAChR,GAAMA,IAAO,MAAMgR,GAAKhR,IAAO,QAAQA,IAAO,UAAUgR,CAAG,IAC1D1O,EAAK,SACP,CAACtC,GAAMye,GAAUze,IAAO,MAAM,IAE9B,CAACA,GAAMA,IAAO,MAAM;AAAA,EAE/B;AAEA,WAAS4e,EAAQtc,GAAM;AACrB,QAAIuc;AACJ,WAAIvc,EAAK,SAAS,aAChBuc,IAAS,CAAC,YAAYJ,GAAU,cAAc,IACrCnc,EAAK,SAAS,SACvBuc,IAAS,CAAC,QAAQJ,GAAU,UAAU,IAEtCI,IAASF,EAAUrc,CAAI,GAGlB;AAAA,MACL,YAAY;AAAA,MACZ,QAAAuc;AAAA,MACA,UAAU;AAAA,MACV,MAAAvc;AAAA,MACA,cAAc;AAAA,MACd,UAAU,CAAA;AAAA,IACd;AAAA,EACA;AAEA,WAASwc,EAAWxc,GAAM;AACxB,WAAAA,EAAK6B,CAAO,IAAI,IACZ7B,EAAK,SAAOA,EAAK,MAAM,QAAQ,CAAAjC,MAAKye,EAAWze,CAAC,CAAC,GAC9CiC;AAAA,EACT;AAEA,MAAIyc,IAAU,CAAA;AAAA,EAEd,MAAMnX,EAAW;AAAA,IACf,IAAI,UAAU;AACZ,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IAEE,IAAI,MAAM;AACR,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IAEE,IAAI,MAAM;AACR,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IAEE,IAAI,WAAW;AACb,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,OAAO;AACT,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,YAAY;AACd,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,OAAO;AACT,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,KAAK,OAAO,WAAW,IAAI;AACzB,aAAO;AAAA,IACX;AAAA,IAEE,YAAY1H,GAAWrC,GAAKqB,GAAM;AAChC,WAAK,cAAc,IACnB,KAAK,YAAY;AAEjB,UAAIsE;AACJ,UACE,OAAO3F,KAAQ,YACfA,MAAQ,SACPA,EAAI,SAAS,UAAUA,EAAI,SAAS;AAErC,QAAA2F,IAAOsb,EAAWjhB,CAAG;AAAA,eACZA,aAAe+J,KAAc/J,aAAeogB;AACrD,QAAAza,IAAOsb,EAAWjhB,EAAI,IAAI,GACtBA,EAAI,QACF,OAAOqB,EAAK,MAAQ,QAAaA,EAAK,MAAM,CAAA,IAC3CA,EAAK,IAAI,WAAQA,EAAK,IAAI,SAAS,KACxCA,EAAK,IAAI,OAAOrB,EAAI;AAAA,WAEjB;AACL,YAAI8f,IAAStX;AACb,QAAInH,EAAK,WAAQye,IAASze,EAAK,OAAO,QAClCA,EAAK,WAAQye,IAASze,EAAK,SAC3Bye,EAAO,UAAOA,IAASA,EAAO;AAElC,YAAI;AACF,UAAAna,IAAOma,EAAO9f,GAAKqB,CAAI;AAAA,QAC/B,SAAe6F,GAAO;AACd,eAAK,YAAY,IACjB,KAAK,QAAQA;AAAA,QACrB;AAEM,QAAIvB,KAAQ,CAACA,EAAKY,CAAE,KAElBsC,EAAU,QAAQlD,CAAI;AAAA,MAE9B;AAEI,WAAK,SAAS,IAAIya,EAAO/d,GAAWsD,GAAMtE,CAAI,GAC9C,KAAK,UAAU,EAAE,GAAG6f,GAAS,SAAAA,GAAS,QAAQ,KAAK,OAAM,GACzD,KAAK,UAAU,KAAK,UAAU,QAAQ,IAAI,CAAAle,MACpC,OAAOA,KAAW,YAAYA,EAAO,UAChC,EAAE,GAAGA,GAAQ,GAAGA,EAAO,QAAQ,KAAK,MAAM,EAAC,IAE3CA,CAEV;AAAA,IACL;AAAA,IAEE,QAAQ;AACN,aAAI,KAAK,QAAc,QAAQ,OAAO,KAAK,KAAK,IAC5C,KAAK,YAAkB,QAAQ,QAAQ,KAAK,MAAM,KACjD,KAAK,eACR,KAAK,aAAa,KAAK,SAAQ,IAE1B,KAAK;AAAA,IAChB;AAAA,IAEE,MAAMme,GAAY;AAChB,aAAO,KAAK,QAAQ,MAAMA,CAAU;AAAA,IACxC;AAAA,IAEE,QAAQC,GAAW;AACjB,aAAO,KAAK,MAAK,EAAG,KAAKA,GAAWA,CAAS;AAAA,IACjD;AAAA,IAEE,gBAAgB;AACd,YAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AAAA,IAEE,YAAYla,GAAOzC,GAAM;AACvB,UAAIzB,IAAS,KAAK,OAAO;AACzB,UAAI;AAGF,YAFIyB,KAAMA,EAAK,WAAWyC,CAAK,GAC/B,KAAK,QAAQA,GACTA,EAAM,SAAS,oBAAoB,CAACA,EAAM;AAC5C,UAAAA,EAAM,SAASlE,EAAO,eACtBkE,EAAM,WAAU;AAAA,iBACPlE,EAAO,kBACZ,QAAQ,IAAI,aAAa,cAAc;AACzC,cAAIqe,IAAare,EAAO,eACpBse,IAAYte,EAAO,gBACnBue,IAAa,KAAK,OAAO,UAAU,SACnCpK,IAAImK,EAAU,MAAM,GAAG,GACvBpK,IAAIqK,EAAW,MAAM,GAAG;AAE5B,WAAIpK,EAAE,CAAC,MAAMD,EAAE,CAAC,KAAK,SAASC,EAAE,CAAC,CAAC,IAAI,SAASD,EAAE,CAAC,CAAC,MAEjD,QAAQ;AAAA,YACN,wEAEEqK,IACA,WACAF,IACA,WACAC,IACA;AAAA,UAChB;AAAA,QAEA;AAAA,MAEA,SAAaE,GAAK;AAGZ,QAAI,WAAW,QAAQ,SAAO,QAAQ,MAAMA,CAAG;AAAA,MACrD;AACI,aAAOta;AAAA,IACX;AAAA,IAEE,kBAAkB;AAChB,WAAK,YAAY,CAAA;AACjB,UAAIE,IAAM,CAACpE,GAAQb,GAAMgH,MAAO;AAC9B,QAAK,KAAK,UAAUhH,CAAI,MAAG,KAAK,UAAUA,CAAI,IAAI,CAAA,IAClD,KAAK,UAAUA,CAAI,EAAE,KAAK,CAACa,GAAQmG,CAAE,CAAC;AAAA,MAC5C;AACI,eAASnG,KAAU,KAAK;AACtB,YAAI,OAAOA,KAAW;AACpB,mBAASye,KAASze,GAAQ;AACxB,gBAAI,CAAC0d,EAAae,CAAK,KAAK,SAAS,KAAKA,CAAK;AAC7C,oBAAM,IAAI;AAAA,gBACR,iBAAiBA,CAAK,OAAOze,EAAO,aAAa,4BACrB,KAAK,UAAU,OAAO;AAAA,cAChE;AAEU,gBAAI,CAAC2d,EAAac,CAAK;AACrB,kBAAI,OAAOze,EAAOye,CAAK,KAAM;AAC3B,yBAASC,KAAU1e,EAAOye,CAAK;AAC7B,kBAAIC,MAAW,MACbta,EAAIpE,GAAQye,GAAOze,EAAOye,CAAK,EAAEC,CAAM,CAAC,IAExCta;AAAA,oBACEpE;AAAA,oBACAye,IAAQ,MAAMC,EAAO,YAAW;AAAA,oBAChC1e,EAAOye,CAAK,EAAEC,CAAM;AAAA,kBACxC;AAAA,kBAGmB,CAAI,OAAO1e,EAAOye,CAAK,KAAM,cAClCra,EAAIpE,GAAQye,GAAOze,EAAOye,CAAK,CAAC;AAAA,UAG9C;AAGI,WAAK,cAAc,OAAO,KAAK,KAAK,SAAS,EAAE,SAAS;AAAA,IAC5D;AAAA,IAEE,MAAM,WAAW;AACf,WAAK,SAAS;AACd,eAASjf,IAAI,GAAGA,IAAI,KAAK,QAAQ,QAAQA,KAAK;AAC5C,YAAIQ,IAAS,KAAK,QAAQR,CAAC,GACvBmf,IAAU,KAAK,UAAU3e,CAAM;AACnC,YAAI6d,EAAUc,CAAO;AACnB,cAAI;AACF,kBAAMA;AAAA,UAChB,SAAiBza,GAAO;AACd,kBAAM,KAAK,YAAYA,CAAK;AAAA,UACtC;AAAA,MAEA;AAGI,UADA,KAAK,gBAAe,GAChB,KAAK,aAAa;AACpB,YAAIvB,IAAO,KAAK,OAAO;AACvB,eAAO,CAACA,EAAKW,CAAO,KAAG;AACrB,UAAAX,EAAKW,CAAO,IAAI;AAChB,cAAIsb,IAAQ,CAACb,EAAQpb,CAAI,CAAC;AAC1B,iBAAOic,EAAM,SAAS,KAAG;AACvB,gBAAID,IAAU,KAAK,UAAUC,CAAK;AAClC,gBAAIf,EAAUc,CAAO;AACnB,kBAAI;AACF,sBAAMA;AAAA,cACpB,SAAqBhY,GAAG;AACV,oBAAIlF,IAAOmd,EAAMA,EAAM,SAAS,CAAC,EAAE;AACnC,sBAAM,KAAK,YAAYjY,GAAGlF,CAAI;AAAA,cAC5C;AAAA,UAEA;AAAA,QACA;AAEM,YAAI,KAAK,UAAU;AACjB,mBAAS,CAACzB,GAAQ6e,CAAO,KAAK,KAAK,UAAU,UAAU;AACrD,iBAAK,OAAO,aAAa7e;AACzB,gBAAI;AACF,kBAAI2C,EAAK,SAAS,YAAY;AAC5B,oBAAImc,IAAQnc,EAAK,MAAM;AAAA,kBAAI,CAAAoc,MACzBF,EAAQE,GAAS,KAAK,OAAO;AAAA,gBAC7C;AAEc,sBAAM,QAAQ,IAAID,CAAK;AAAA,cACrC;AACc,sBAAMD,EAAQlc,GAAM,KAAK,OAAO;AAAA,YAE9C,SAAmBgE,GAAG;AACV,oBAAM,KAAK,YAAYA,CAAC;AAAA,YACpC;AAAA,UACA;AAAA,MAEA;AAEI,kBAAK,YAAY,IACV,KAAK,UAAS;AAAA,IACzB;AAAA,IAEE,UAAU3G,GAAQ;AAChB,WAAK,OAAO,aAAaA;AACzB,UAAI;AACF,YAAI,OAAOA,KAAW,YAAYA,EAAO,MAAM;AAC7C,cAAI,KAAK,OAAO,KAAK,SAAS,YAAY;AACxC,gBAAI8e,IAAQ,KAAK,OAAO,KAAK,MAAM;AAAA,cAAI,CAAAnc,MACrC3C,EAAO,KAAK2C,GAAM,KAAK,OAAO;AAAA,YAC1C;AAEU,mBAAIkb,EAAUiB,EAAM,CAAC,CAAC,IACb,QAAQ,IAAIA,CAAK,IAGnBA;AAAA,UACjB;AAEQ,iBAAO9e,EAAO,KAAK,KAAK,OAAO,MAAM,KAAK,OAAO;AAAA,QACzD,WAAiB,OAAOA,KAAW;AAC3B,iBAAOA,EAAO,KAAK,OAAO,MAAM,KAAK,MAAM;AAAA,MAEnD,SAAakE,GAAO;AACd,cAAM,KAAK,YAAYA,CAAK;AAAA,MAClC;AAAA,IACA;AAAA,IAEE,YAAY;AACV,UAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,UAAI,KAAK,YAAa,QAAO,KAAK;AAClC,WAAK,cAAc,IAEnB,KAAK,KAAI;AAET,UAAI7F,IAAO,KAAK,OAAO,MACnBiD,IAAM4B;AACV,MAAI7E,EAAK,WAAQiD,IAAMjD,EAAK,OAAO,YAC/BA,EAAK,gBAAaiD,IAAMjD,EAAK,cAC7BiD,EAAI,cAAWA,IAAMA,EAAI;AAG7B,UAAI4D,IADM,IAAIqW,EAAaja,GAAK,KAAK,OAAO,MAAM,KAAK,OAAO,IAAI,EACnD,SAAQ;AACvB,kBAAK,OAAO,MAAM4D,EAAK,CAAC,GACxB,KAAK,OAAO,MAAMA,EAAK,CAAC,GAEjB,KAAK;AAAA,IAChB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,UAAI,KAAK,UAAW,QAAO,KAAK;AAGhC,UAFA,KAAK,YAAY,IAEb,KAAK;AACP,cAAM,KAAK,cAAa;AAG1B,eAASlF,KAAU,KAAK,SAAS;AAC/B,YAAI2e,IAAU,KAAK,UAAU3e,CAAM;AACnC,YAAI6d,EAAUc,CAAO;AACnB,gBAAM,KAAK,cAAa;AAAA,MAEhC;AAGI,UADA,KAAK,gBAAe,GAChB,KAAK,aAAa;AACpB,YAAIhc,IAAO,KAAK,OAAO;AACvB,eAAO,CAACA,EAAKW,CAAO;AAClB,UAAAX,EAAKW,CAAO,IAAI,IAChB,KAAK,SAASX,CAAI;AAEpB,YAAI,KAAK,UAAU;AACjB,cAAIA,EAAK,SAAS;AAChB,qBAASoc,KAAWpc,EAAK;AACvB,mBAAK,UAAU,KAAK,UAAU,UAAUoc,CAAO;AAAA;AAGjD,iBAAK,UAAU,KAAK,UAAU,UAAUpc,CAAI;AAAA,MAGtD;AAEI,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,KAAKqc,GAAab,GAAY;AAC5B,aAAI,QAAQ,IAAI,aAAa,iBACrB,UAAU,KAAK,QACnBb;AAAA,QACE;AAAA,MAGV,IAGW,KAAK,MAAK,EAAG,KAAK0B,GAAab,CAAU;AAAA,IACpD;AAAA,IAEE,WAAW;AACT,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,UAAUc,GAAUxd,GAAM;AACxB,eAAS,CAACzB,GAAQ6e,CAAO,KAAKI,GAAU;AACtC,aAAK,OAAO,aAAajf;AACzB,YAAI2e;AACJ,YAAI;AACF,UAAAA,IAAUE,EAAQpd,GAAM,KAAK,OAAO;AAAA,QAC5C,SAAekF,GAAG;AACV,gBAAM,KAAK,YAAYA,GAAGlF,EAAK,OAAO;AAAA,QAC9C;AACM,YAAIA,EAAK,SAAS,UAAUA,EAAK,SAAS,cAAc,CAACA,EAAK;AAC5D,iBAAO;AAET,YAAIoc,EAAUc,CAAO;AACnB,gBAAM,KAAK,cAAa;AAAA,MAEhC;AAAA,IACA;AAAA,IAEE,UAAUC,GAAO;AACf,UAAIM,IAAQN,EAAMA,EAAM,SAAS,CAAC,GAC9B,EAAE,MAAAnd,GAAM,UAAAwd,MAAaC;AAEzB,UAAIzd,EAAK,SAAS,UAAUA,EAAK,SAAS,cAAc,CAACA,EAAK,QAAQ;AACpE,QAAAmd,EAAM,IAAG;AACT;AAAA,MACN;AAEI,UAAIK,EAAS,SAAS,KAAKC,EAAM,eAAeD,EAAS,QAAQ;AAC/D,YAAI,CAACjf,GAAQ6e,CAAO,IAAII,EAASC,EAAM,YAAY;AACnD,QAAAA,EAAM,gBAAgB,GAClBA,EAAM,iBAAiBD,EAAS,WAClCC,EAAM,WAAW,CAAA,GACjBA,EAAM,eAAe,IAEvB,KAAK,OAAO,aAAalf;AACzB,YAAI;AACF,iBAAO6e,EAAQpd,EAAK,QAAO,GAAI,KAAK,OAAO;AAAA,QACnD,SAAekF,GAAG;AACV,gBAAM,KAAK,YAAYA,GAAGlF,CAAI;AAAA,QACtC;AAAA,MACA;AAEI,UAAIyd,EAAM,aAAa,GAAG;AACxB,YAAIlZ,IAAWkZ,EAAM,UACjB7c;AACJ,eAAQA,IAAQZ,EAAK,MAAMA,EAAK,QAAQuE,CAAQ,CAAC;AAE/C,cADAvE,EAAK,QAAQuE,CAAQ,KAAK,GACtB,CAAC3D,EAAMiB,CAAO,GAAG;AACnB,YAAAjB,EAAMiB,CAAO,IAAI,IACjBsb,EAAM,KAAKb,EAAQ1b,CAAK,CAAC;AACzB;AAAA,UACV;AAEM,QAAA6c,EAAM,WAAW,GACjB,OAAOzd,EAAK,QAAQuE,CAAQ;AAAA,MAClC;AAEI,UAAIgY,IAASkB,EAAM;AACnB,aAAOA,EAAM,aAAalB,EAAO,UAAQ;AACvC,YAAIS,IAAQT,EAAOkB,EAAM,UAAU;AAEnC,YADAA,EAAM,cAAc,GAChBT,MAAUb,GAAU;AACtB,UAAInc,EAAK,SAASA,EAAK,MAAM,WAC3BA,EAAK6B,CAAO,IAAI,IAChB4b,EAAM,WAAWzd,EAAK,YAAW;AAEnC;AAAA,QACR,WAAiB,KAAK,UAAUgd,CAAK,GAAG;AAChC,UAAAS,EAAM,WAAW,KAAK,UAAUT,CAAK;AACrC;AAAA,QACR;AAAA,MACA;AACI,MAAAG,EAAM,IAAG;AAAA,IACb;AAAA,IAEE,SAASnd,GAAM;AACb,MAAAA,EAAK6B,CAAO,IAAI;AAChB,UAAI0a,IAASF,EAAUrc,CAAI;AAC3B,eAASgd,KAAST;AAChB,YAAIS,MAAUb;AACZ,UAAInc,EAAK,SACPA,EAAK,KAAK,CAAAY,MAAS;AACjB,YAAKA,EAAMiB,CAAO,KAAG,KAAK,SAASjB,CAAK;AAAA,UACpD,CAAW;AAAA,aAEE;AACL,cAAI4c,IAAW,KAAK,UAAUR,CAAK;AACnC,cAAIQ,KACE,KAAK,UAAUA,GAAUxd,EAAK,QAAO,CAAE;AAAG;AAAA,QAExD;AAAA,IAEA;AAAA,IAEE,WAAW;AACT,aAAO,KAAK,KAAI,EAAG,SAAQ;AAAA,IAC/B;AAAA,EACA;AAEA,SAAAsF,EAAW,kBAAkB,CAAA/H,MAAa;AACxC,IAAAkf,IAAUlf;AAAA,EACZ,GAEAmgB,KAAiBpY,GACjBA,EAAW,UAAUA,GAErBtB,EAAK,mBAAmBsB,CAAU,GAClCE,EAAS,mBAAmBF,CAAU;;;;;;ACniBtC,MAAIwU,IAAe5c,GAAA,GACf6G,IAAQ3G,GAAA;AACZ,QAAMue,IAAS/Z,GAAA;AACf,MAAIH,IAAYM,EAAA,GACZ8Z,IAAWrL,GAAA;AAAA,EAEf,MAAMmN,EAAa;AAAA,IACjB,IAAI,UAAU;AACZ,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,MAAM;AACR,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,MAAM;AACR,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,WAAW;AACb,aAAO,CAAA;AAAA,IACX;AAAA,IAEE,IAAI,OAAO;AACT,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,YAAY;AACd,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IAEE,IAAI,OAAO;AACT,UAAI,KAAK;AACP,eAAO,KAAK;AAGd,UAAIzc,GACAma,IAAStX;AAEb,UAAI;AACF,QAAA7C,IAAOma,EAAO,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC,SAAa5Y,GAAO;AACd,aAAK,QAAQA;AAAA,MACnB;AAEI,UAAI,KAAK;AACP,cAAM,KAAK;AAEX,kBAAK,QAAQvB,GACNA;AAAA,IAEb;AAAA,IAEE,KAAK,OAAO,WAAW,IAAI;AACzB,aAAO;AAAA,IACX;AAAA,IAEE,YAAYtD,GAAWrC,GAAKqB,GAAM;AAChC,MAAArB,IAAMA,EAAI,SAAQ,GAClB,KAAK,cAAc,IAEnB,KAAK,aAAaqC,GAClB,KAAK,OAAOrC,GACZ,KAAK,QAAQqB,GACb,KAAK,OAAO;AACZ,UAAIsE,GAEArB,IAAM4B;AACV,WAAK,SAAS,IAAIka,EAAO,KAAK,YAAYza,GAAM,KAAK,KAAK,GAC1D,KAAK,OAAO,MAAM3F;AAElB,UAAIqiB,IAAO;AACX,aAAO,eAAe,KAAK,QAAQ,QAAQ;AAAA,QACzC,MAAM;AACJ,iBAAOA,EAAK;AAAA,QACpB;AAAA,OACK;AAED,UAAIjP,IAAM,IAAImL,EAAaja,GAAKqB,GAAM,KAAK,OAAO3F,CAAG;AACrD,UAAIoT,EAAI,SAAS;AACf,YAAI,CAACkP,GAAcC,CAAY,IAAInP,EAAI,SAAQ;AAC/C,QAAIkP,MACF,KAAK,OAAO,MAAMA,IAEhBC,MACF,KAAK,OAAO,MAAMA;AAAA,MAE1B;AACM,QAAAnP,EAAI,gBAAe,GACnB,KAAK,OAAO,MAAMA,EAAI;AAAA,IAE5B;AAAA,IAEE,QAAQ;AACN,aAAI,KAAK,QAAc,QAAQ,OAAO,KAAK,KAAK,IACzC,QAAQ,QAAQ,KAAK,MAAM;AAAA,IACtC;AAAA,IAEE,MAAM+N,GAAY;AAChB,aAAO,KAAK,QAAQ,MAAMA,CAAU;AAAA,IACxC;AAAA,IAEE,QAAQC,GAAW;AACjB,aAAO,KAAK,MAAK,EAAG,KAAKA,GAAWA,CAAS;AAAA,IACjD;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,KAAKY,GAAab,GAAY;AAC5B,aAAI,QAAQ,IAAI,aAAa,iBACrB,UAAU,KAAK,SACnBb;AAAA,QACE;AAAA,MAGV,IAIW,KAAK,MAAK,EAAG,KAAK0B,GAAab,CAAU;AAAA,IACpD;AAAA,IAEE,WAAW;AACT,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,WAAW;AACT,aAAO,CAAA;AAAA,IACX;AAAA,EACA;AAEA,SAAAqB,KAAiBJ,GACjBA,EAAa,UAAUA;;;;;;ACvIvB,MAAInY,IAAWtI,GAAA,GACXoI,IAAalI,GAAA,GACbugB,IAAe/b,GAAA,GACfoC,IAAOjC,EAAA;AAAA,EAEX,MAAMwD,EAAU;AAAA,IACd,YAAYyY,IAAU,IAAI;AACxB,WAAK,UAAU,SACf,KAAK,UAAU,KAAK,UAAUA,CAAO;AAAA,IACzC;AAAA,IAEE,UAAUA,GAAS;AACjB,UAAIC,IAAa,CAAA;AACjB,eAASlgB,KAAKigB;AAOZ,YANIjgB,EAAE,YAAY,KAChBA,IAAIA,EAAC,IACIA,EAAE,YACXA,IAAIA,EAAE,UAGJ,OAAOA,KAAM,YAAY,MAAM,QAAQA,EAAE,OAAO;AAClD,UAAAkgB,IAAaA,EAAW,OAAOlgB,EAAE,OAAO;AAAA,iBAC/B,OAAOA,KAAM,YAAYA,EAAE;AACpC,UAAAkgB,EAAW,KAAKlgB,CAAC;AAAA,iBACR,OAAOA,KAAM;AACtB,UAAAkgB,EAAW,KAAKlgB,CAAC;AAAA,iBACR,OAAOA,KAAM,aAAaA,EAAE,SAASA,EAAE;AAChD,cAAI,QAAQ,IAAI,aAAa;AAC3B,kBAAM,IAAI;AAAA,cACR;AAAA,YAGZ;AAAA;AAGQ,gBAAM,IAAI,MAAMA,IAAI,0BAA0B;AAGlD,aAAOkgB;AAAA,IACX;AAAA,IAEE,QAAQ1iB,GAAKqB,IAAO,IAAI;AACtB,aACE,CAAC,KAAK,QAAQ,UACd,CAACA,EAAK,UACN,CAACA,EAAK,eACN,CAACA,EAAK,SAEC,IAAI+gB,EAAa,MAAMpiB,GAAKqB,CAAI,IAEhC,IAAI0I,EAAW,MAAM/J,GAAKqB,CAAI;AAAA,IAE3C;AAAA,IAEE,IAAI2B,GAAQ;AACV,kBAAK,UAAU,KAAK,QAAQ,OAAO,KAAK,UAAU,CAACA,CAAM,CAAC,CAAC,GACpD;AAAA,IACX;AAAA,EACA;AAEA,SAAAX,KAAiB2H,GACjBA,EAAU,UAAUA,GAEpBvB,EAAK,kBAAkBuB,CAAS,GAChCC,EAAS,kBAAkBD,CAAS;;;;;;AChEpC,MAAIzB,IAAS5G,GAAA,GACTwG,IAAUtG,EAAA,GACVgH,IAAYxC,EAAA,GACZ3D,IAAiB8D,GAAA,GACjB6B,IAAc4M,EAAA,GACdhL,IAAWiS,GAAA,GACXiC,IAAWhC,GAAA,GACXra,IAAQye,GAAA,GACRxW,IAAayW,GAAA,GACblD,IAAOqF,GAAA,GACP3b,IAAO4b,EAAA,GACPpa,IAAQqa,GAAA,GACR7Y,IAAY8Y,GAAA,GACZ1C,IAAS2C,GAAA,GACTta,IAAOua,EAAA,GACPta,IAAOua,GAAA,GACP/c,IAAYgd,EAAA,GACZlD,IAAUmD,GAAA;AAEd,WAASjC,KAAWuB,GAAS;AAC3B,WAAIA,EAAQ,WAAW,KAAK,MAAM,QAAQA,EAAQ,CAAC,CAAC,MAClDA,IAAUA,EAAQ,CAAC,IAEd,IAAIzY,EAAUyY,CAAO;AAAA,EAC9B;AAEA,SAAAvB,EAAQ,SAAS,SAAgBvc,GAAMye,GAAa;AAClD,QAAIC,IAAiB;AACrB,aAASC,KAAWpa,GAAM;AAExB,MAAI,WAAW,QAAQ,QAAQ,CAACma,MAC9BA,IAAiB,IAEjB,QAAQ;AAAA,QACN1e,IACE;AAAA;AAAA,MAEV,GACU,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,WAAW,IAAI,KAGtD,QAAQ;AAAA,QACNA,IACE;AAAA;AAAA,MAEZ;AAGI,UAAI4e,IAAcH,EAAY,GAAGla,CAAI;AACrC,aAAAqa,EAAY,gBAAgB5e,GAC5B4e,EAAY,iBAAiB,IAAIvZ,IAAY,SACtCuZ;AAAA,IACX;AAEE,QAAIhW;AACJ,kBAAO,eAAe+V,GAAS,WAAW;AAAA,MACxC,MAAM;AACJ,eAAK/V,MAAOA,IAAQ+V,EAAO,IACpB/V;AAAA,MACb;AAAA,KACG,GAED+V,EAAQ,UAAU,SAAUtjB,GAAKwjB,GAAaC,GAAY;AACxD,aAAOvC,EAAQ,CAACoC,EAAQG,CAAU,CAAC,CAAC,EAAE,QAAQzjB,GAAKwjB,CAAW;AAAA,IAClE,GAESF;AAAA,EACT,GAEApC,EAAQ,YAAYhb,GACpBgb,EAAQ,QAAQ1Y,GAChB0Y,EAAQ,WAAW/C,GACnB+C,EAAQ,OAAO5D,GAEf4D,EAAQ,UAAU,CAAAja,MAAY,IAAIkB,EAAQlB,CAAQ,GAClDia,EAAQ,SAAS,CAAAja,MAAY,IAAIsB,EAAOtB,CAAQ,GAChDia,EAAQ,OAAO,CAAAja,MAAY,IAAIoB,EAAYpB,CAAQ,GACnDia,EAAQ,OAAO,CAAAja,MAAY,IAAIyB,EAAKzB,CAAQ,GAC5Cia,EAAQ,OAAO,CAAAja,MAAY,IAAIwB,EAAKxB,CAAQ,GAC5Cia,EAAQ,WAAW,CAAAja,MAAY,IAAIgD,EAAShD,CAAQ,GAEpDia,EAAQ,iBAAiBxe,GACzBwe,EAAQ,cAAc7Y,GACtB6Y,EAAQ,YAAYrY,GACpBqY,EAAQ,YAAYlX,GACpBkX,EAAQ,WAAWjX,GACnBiX,EAAQ,UAAU/Y,GAClB+Y,EAAQ,UAAUlB,GAClBkB,EAAQ,SAAS3Y,GACjB2Y,EAAQ,SAASd,GACjBc,EAAQ,QAAQpf,GAChBof,EAAQ,OAAOxY,GACfwY,EAAQ,OAAOzY,GACfyY,EAAQ,OAAOla,GAEf+C,EAAW,gBAAgBmX,CAAO,GAElCwC,KAAiBxC,GACjBA,EAAQ,UAAUA;;;kCChGLhb,KAAYgb,EAAQ,WACpB/C,KAAW+C,EAAQ,UACnBle,KAASke,EAAQ,QACjB1Y,KAAQ0Y,EAAQ,OAChB5D,KAAO4D,EAAQ,MAEfhX,KAAWgX,EAAQ,UACnB9Y,KAAU8Y,EAAQ,SAClBpX,KAASoX,EAAQ,QACjBhD,KAAOgD,EAAQ,MACfxX,KAAOwX,EAAQ,MACfvb,KAAOub,EAAQ,MAEfxe,KAAiBwe,EAAQ,gBACzB7Y,KAAc6Y,EAAQ,aACtBrY,KAAYqY,EAAQ,WACpBlX,KAAYkX,EAAQ,WACpBjX,KAAWiX,EAAQ,UACnB/Y,KAAU+Y,EAAQ,SAClBlB,KAAUkB,EAAQ,SAClB3Y,KAAS2Y,EAAQ,QACjBd,KAASc,EAAQ,QACjBpf,KAAQof,EAAQ,OAChBxY,KAAOwY,EAAQ,MACfzY,KAAOyY,EAAQ,MACfla,KAAOka,EAAQ;","x_google_ignoreList":[0,1,2,3,4,5,6,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]}