{"version":3,"file":"vendors-9fdd03a1.xxxxxxxx.bundle.js","mappings":"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","sources":["webpack://iadviser/./node_modules/mime-db/index.js","webpack://iadviser/./node_modules/mime-types/index.js","webpack://iadviser/./node_modules/mdurl/lib/decode.mjs","webpack://iadviser/./node_modules/mdurl/lib/encode.mjs","webpack://iadviser/./node_modules/mdurl/lib/format.mjs","webpack://iadviser/./node_modules/mdurl/lib/parse.mjs"],"sourcesContent":["/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude]\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n cache.push(ch)\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i)\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars\n }\n\n const cache = getDecodeCache(exclude)\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = ''\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n if (b1 < 0x80) {\n result += cache[b1]\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 3\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 6\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n } else {\n chr -= 0x10000\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n }\n\n i += 9\n continue\n }\n }\n\n result += '\\ufffd'\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude]\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch)\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i]\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude\n exclude = encode.defaultChars\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true\n }\n\n const cache = getEncodeCache(exclude)\n let result = ''\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i)\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3)\n i += 2\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code]\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1)\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1])\n i++\n continue\n }\n }\n result += '%EF%BF%BD'\n continue\n }\n\n result += encodeURIComponent(string[i])\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n let result = ''\n\n result += url.protocol || ''\n result += url.slashes ? '//' : ''\n result += url.auth ? url.auth + '@' : ''\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']'\n } else {\n result += url.hostname || ''\n }\n\n result += url.port ? ':' + url.port : ''\n result += url.pathname || ''\n result += url.search || ''\n result += url.hash || ''\n\n return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let rest = url\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim()\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\n rest = rest.substr(proto.length)\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//'\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2)\n this.slashes = true\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@')\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd)\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign)\n rest = rest.slice(atSign + 1)\n this.auth = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || ''\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x'\n } else {\n newpart += part[j]\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const bit = part.match(hostnamePartStart)\n if (bit) {\n validParts.push(bit[1])\n notHost.unshift(bit[2])\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest\n }\n this.hostname = validParts.join('.')\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = ''\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#')\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash)\n rest = rest.slice(0, hash)\n }\n const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host)\n if (port) {\n port = port[0]\n if (port !== ':') {\n this.port = port.substr(1)\n }\n host = host.substr(0, host.length - port.length)\n }\n if (host) { this.hostname = host }\n}\n\nexport default urlParse\n"],"names":["module","exports","extensions","types","preference","db","extname","EXTRACT_TYPE_REGEXP","TEXT_TYPE_REGEXP","charset","type","match","exec","mime","toLowerCase","test","charsets","lookup","contentType","str","indexOf","extension","exts","length","Object","create","path","substr","undefined","keys","forEach","i","from","source","to","decodeCache","decode","string","exclude","defaultChars","cache","ch","String","fromCharCode","push","charCodeAt","toString","toUpperCase","slice","getDecodeCache","replace","seq","result","l","b1","parseInt","b2","chr","b3","b4","componentChars","encodeCache","encode","keepEscaped","getEncodeCache","code","nextCode","encodeURIComponent","format","url","protocol","slashes","auth","hostname","port","pathname","search","hash","Url","this","protocolPattern","portPattern","simplePathPattern","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","slashedProtocol","http","https","ftp","gopher","file","prototype","parse","slashesDenoteHost","lowerProto","hec","rest","trim","split","simplePath","proto","atSign","hostEnd","lastIndexOf","host","parseHost","ipv6Hostname","hostparts","part","newpart","j","k","validParts","notHost","bit","unshift","join","qm","u"],"sourceRoot":""}