Your IP : 172.69.214.232


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/vue/router/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/vue/router/dist/router.bundle.js.map

{"version":3,"file":"router.bundle.js","sources":["../src/router.js"],"sourcesContent":["/*!\n  * vue-router v3.6.5\n  * (c) 2021 Evan You\n  * @license MIT\n  *\n  * @source: https://unpkg.com/vue-router@3.5.3/dist/vue-router.esm.browser.js\n  */\n\n/**\n * Modify list for integration with Bitrix Framework:\n * - replaced usages window.Vue to local value of Vue;\n * - add method VueRouter.create\n */\n\nimport {VueVendor as Vue} from \"ui.vue\";\n\n// origin-start\nfunction assert (condition, message) {\n  if (!condition) {\n    throw new Error(`[vue-router] ${message}`)\n  }\n}\n\nfunction warn (condition, message) {\n  if (!condition) {\n    typeof console !== 'undefined' && console.warn(`[vue-router] ${message}`);\n  }\n}\n\nfunction extend (a, b) {\n  for (const key in b) {\n    a[key] = b[key];\n  }\n  return a\n}\n\n/*  */\n\nconst encodeReserveRE = /[!'()*]/g;\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\nconst commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nconst encode = str =>\n  encodeURIComponent(str)\n    .replace(encodeReserveRE, encodeReserveReplacer)\n    .replace(commaRE, ',');\n\nfunction decode (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    {\n      warn(false, `Error decoding \"${str}\". Leaving it intact.`);\n    }\n  }\n  return str\n}\n\nfunction resolveQuery (\n  query,\n  extraQuery = {},\n  _parseQuery\n) {\n  const parse = _parseQuery || parseQuery;\n  let parsedQuery;\n  try {\n    parsedQuery = parse(query || '');\n  } catch (e) {\n    warn(false, e.message);\n    parsedQuery = {};\n  }\n  for (const key in extraQuery) {\n    const value = extraQuery[key];\n    parsedQuery[key] = Array.isArray(value)\n      ? value.map(castQueryParamValue)\n      : castQueryParamValue(value);\n  }\n  return parsedQuery\n}\n\nconst castQueryParamValue = value => (value == null || typeof value === 'object' ? value : String(value));\n\nfunction parseQuery (query) {\n  const res = {};\n\n  query = query.trim().replace(/^(\\?|#|&)/, '');\n\n  if (!query) {\n    return res\n  }\n\n  query.split('&').forEach(param => {\n    const parts = param.replace(/\\+/g, ' ').split('=');\n    const key = decode(parts.shift());\n    const val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n    if (res[key] === undefined) {\n      res[key] = val;\n    } else if (Array.isArray(res[key])) {\n      res[key].push(val);\n    } else {\n      res[key] = [res[key], val];\n    }\n  });\n\n  return res\n}\n\nfunction stringifyQuery (obj) {\n  const res = obj\n    ? Object.keys(obj)\n      .map(key => {\n        const val = obj[key];\n\n        if (val === undefined) {\n          return ''\n        }\n\n        if (val === null) {\n          return encode(key)\n        }\n\n        if (Array.isArray(val)) {\n          const result = [];\n          val.forEach(val2 => {\n            if (val2 === undefined) {\n              return\n            }\n            if (val2 === null) {\n              result.push(encode(key));\n            } else {\n              result.push(encode(key) + '=' + encode(val2));\n            }\n          });\n          return result.join('&')\n        }\n\n        return encode(key) + '=' + encode(val)\n      })\n      .filter(x => x.length > 0)\n      .join('&')\n    : null;\n  return res ? `?${res}` : ''\n}\n\n/*  */\n\nconst trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n  record,\n  location,\n  redirectedFrom,\n  router\n) {\n  const stringifyQuery = router && router.options.stringifyQuery;\n\n  let query = location.query || {};\n  try {\n    query = clone(query);\n  } catch (e) {}\n\n  const route = {\n    name: location.name || (record && record.name),\n    meta: (record && record.meta) || {},\n    path: location.path || '/',\n    hash: location.hash || '',\n    query,\n    params: location.params || {},\n    fullPath: getFullPath(location, stringifyQuery),\n    matched: record ? formatMatch(record) : []\n  };\n  if (redirectedFrom) {\n    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n  }\n  return Object.freeze(route)\n}\n\nfunction clone (value) {\n  if (Array.isArray(value)) {\n    return value.map(clone)\n  } else if (value && typeof value === 'object') {\n    const res = {};\n    for (const key in value) {\n      res[key] = clone(value[key]);\n    }\n    return res\n  } else {\n    return value\n  }\n}\n\n// the starting route that represents the initial state\nconst START = createRoute(null, {\n  path: '/'\n});\n\nfunction formatMatch (record) {\n  const res = [];\n  while (record) {\n    res.unshift(record);\n    record = record.parent;\n  }\n  return res\n}\n\nfunction getFullPath (\n  { path, query = {}, hash = '' },\n  _stringifyQuery\n) {\n  const stringify = _stringifyQuery || stringifyQuery;\n  return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n  if (b === START) {\n    return a === b\n  } else if (!b) {\n    return false\n  } else if (a.path && b.path) {\n    return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query))\n  } else if (a.name && b.name) {\n    return (\n      a.name === b.name &&\n      (onlyPath || (\n          a.hash === b.hash &&\n          isObjectEqual(a.query, b.query) &&\n          isObjectEqual(a.params, b.params))\n      )\n    )\n  } else {\n    return false\n  }\n}\n\nfunction isObjectEqual (a = {}, b = {}) {\n  // handle null value #1566\n  if (!a || !b) return a === b\n  const aKeys = Object.keys(a).sort();\n  const bKeys = Object.keys(b).sort();\n  if (aKeys.length !== bKeys.length) {\n    return false\n  }\n  return aKeys.every((key, i) => {\n    const aVal = a[key];\n    const bKey = bKeys[i];\n    if (bKey !== key) return false\n    const bVal = b[key];\n    // query values can be null and undefined\n    if (aVal == null || bVal == null) return aVal === bVal\n    // check nested equality\n    if (typeof aVal === 'object' && typeof bVal === 'object') {\n      return isObjectEqual(aVal, bVal)\n    }\n    return String(aVal) === String(bVal)\n  })\n}\n\nfunction isIncludedRoute (current, target) {\n  return (\n    current.path.replace(trailingSlashRE, '/').indexOf(\n      target.path.replace(trailingSlashRE, '/')\n    ) === 0 &&\n    (!target.hash || current.hash === target.hash) &&\n    queryIncludes(current.query, target.query)\n  )\n}\n\nfunction queryIncludes (current, target) {\n  for (const key in target) {\n    if (!(key in current)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction handleRouteEntered (route) {\n  for (let i = 0; i < route.matched.length; i++) {\n    const record = route.matched[i];\n    for (const name in record.instances) {\n      const instance = record.instances[name];\n      const cbs = record.enteredCbs[name];\n      if (!instance || !cbs) continue\n      delete record.enteredCbs[name];\n      for (let i = 0; i < cbs.length; i++) {\n        if (!instance._isBeingDestroyed) cbs[i](instance);\n      }\n    }\n  }\n}\n\nvar View = {\n  name: 'RouterView',\n  functional: true,\n  props: {\n    name: {\n      type: String,\n      default: 'default'\n    }\n  },\n  render (_, { props, children, parent, data }) {\n    // used by devtools to display a router-view badge\n    data.routerView = true;\n\n    // directly use parent context's createElement() function\n    // so that components rendered by router-view can resolve named slots\n    const h = parent.$createElement;\n    const name = props.name;\n    const route = parent.$route;\n    const cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n    // determine current view depth, also check to see if the tree\n    // has been toggled inactive but kept-alive.\n    let depth = 0;\n    let inactive = false;\n    while (parent && parent._routerRoot !== parent) {\n      const vnodeData = parent.$vnode ? parent.$vnode.data : {};\n      if (vnodeData.routerView) {\n        depth++;\n      }\n      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n        inactive = true;\n      }\n      parent = parent.$parent;\n    }\n    data.routerViewDepth = depth;\n\n    // render previous view if the tree is inactive and kept-alive\n    if (inactive) {\n      const cachedData = cache[name];\n      const cachedComponent = cachedData && cachedData.component;\n      if (cachedComponent) {\n        // #2301\n        // pass props\n        if (cachedData.configProps) {\n          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n        }\n        return h(cachedComponent, data, children)\n      } else {\n        // render previous empty view\n        return h()\n      }\n    }\n\n    const matched = route.matched[depth];\n    const component = matched && matched.components[name];\n\n    // render empty node if no matched route or no config component\n    if (!matched || !component) {\n      cache[name] = null;\n      return h()\n    }\n\n    // cache component\n    cache[name] = { component };\n\n    // attach instance registration hook\n    // this will be called in the instance's injected lifecycle hooks\n    data.registerRouteInstance = (vm, val) => {\n      // val could be undefined for unregistration\n      const current = matched.instances[name];\n      if (\n        (val && current !== vm) ||\n        (!val && current === vm)\n      ) {\n        matched.instances[name] = val;\n      }\n    }\n\n    // also register instance in prepatch hook\n    // in case the same component instance is reused across different routes\n    ;(data.hook || (data.hook = {})).prepatch = (_, vnode) => {\n      matched.instances[name] = vnode.componentInstance;\n    };\n\n    // register instance in init hook\n    // in case kept-alive component be actived when routes changed\n    data.hook.init = (vnode) => {\n      if (vnode.data.keepAlive &&\n        vnode.componentInstance &&\n        vnode.componentInstance !== matched.instances[name]\n      ) {\n        matched.instances[name] = vnode.componentInstance;\n      }\n\n      // if the route transition has already been confirmed then we weren't\n      // able to call the cbs during confirmation as the component was not\n      // registered yet, so we call it here.\n      handleRouteEntered(route);\n    };\n\n    const configProps = matched.props && matched.props[name];\n    // save route and configProps in cache\n    if (configProps) {\n      extend(cache[name], {\n        route,\n        configProps\n      });\n      fillPropsinData(component, data, route, configProps);\n    }\n\n    return h(component, data, children)\n  }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n  // resolve props\n  let propsToPass = data.props = resolveProps(route, configProps);\n  if (propsToPass) {\n    // clone to prevent mutation\n    propsToPass = data.props = extend({}, propsToPass);\n    // pass non-declared props as attrs\n    const attrs = data.attrs = data.attrs || {};\n    for (const key in propsToPass) {\n      if (!component.props || !(key in component.props)) {\n        attrs[key] = propsToPass[key];\n        delete propsToPass[key];\n      }\n    }\n  }\n}\n\nfunction resolveProps (route, config) {\n  switch (typeof config) {\n    case 'undefined':\n      return\n    case 'object':\n      return config\n    case 'function':\n      return config(route)\n    case 'boolean':\n      return config ? route.params : undefined\n    default:\n    {\n      warn(\n        false,\n        `props in \"${route.path}\" is a ${typeof config}, ` +\n        `expecting an object, function or boolean.`\n      );\n    }\n  }\n}\n\n/*  */\n\nfunction resolvePath (\n  relative,\n  base,\n  append\n) {\n  const firstChar = relative.charAt(0);\n  if (firstChar === '/') {\n    return relative\n  }\n\n  if (firstChar === '?' || firstChar === '#') {\n    return base + relative\n  }\n\n  const stack = base.split('/');\n\n  // remove trailing segment if:\n  // - not appending\n  // - appending to trailing slash (last segment is empty)\n  if (!append || !stack[stack.length - 1]) {\n    stack.pop();\n  }\n\n  // resolve relative path\n  const segments = relative.replace(/^\\//, '').split('/');\n  for (let i = 0; i < segments.length; i++) {\n    const segment = segments[i];\n    if (segment === '..') {\n      stack.pop();\n    } else if (segment !== '.') {\n      stack.push(segment);\n    }\n  }\n\n  // ensure leading slash\n  if (stack[0] !== '') {\n    stack.unshift('');\n  }\n\n  return stack.join('/')\n}\n\nfunction parsePath (path) {\n  let hash = '';\n  let query = '';\n\n  const hashIndex = path.indexOf('#');\n  if (hashIndex >= 0) {\n    hash = path.slice(hashIndex);\n    path = path.slice(0, hashIndex);\n  }\n\n  const queryIndex = path.indexOf('?');\n  if (queryIndex >= 0) {\n    query = path.slice(queryIndex + 1);\n    path = path.slice(0, queryIndex);\n  }\n\n  return {\n    path,\n    query,\n    hash\n  }\n}\n\nfunction cleanPath (path) {\n  return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"      => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = options && options.delimiter || '/';\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      continue\n    }\n\n    var next = str[index];\n    var prefix = res[2];\n    var name = res[3];\n    var capture = res[4];\n    var group = res[5];\n    var modifier = res[6];\n    var asterisk = res[7];\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n    }\n\n    var partial = prefix != null && next != null && next !== prefix;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = res[2] || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    });\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index);\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path);\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}       str\n * @param  {Object=}      options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n    }\n  }\n\n  return function (obj, opts) {\n    var path = '';\n    var data = obj || {};\n    var options = opts || {};\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n\n        continue\n      }\n\n      var value = data[token.name];\n      var segment;\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix;\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment;\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      });\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}      tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}     options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = '';\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = '(?:' + token.pattern + ')';\n\n      keys.push(token);\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*';\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?';\n        } else {\n          capture = prefix + '(' + capture + ')?';\n        }\n      } else {\n        capture = prefix + '(' + capture + ')';\n      }\n\n      route += capture;\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/');\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}     keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/*  */\n\n// $flow-disable-line\nconst regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n  path,\n  params,\n  routeMsg\n) {\n  params = params || {};\n  try {\n    const filler =\n      regexpCompileCache[path] ||\n      (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n    if (typeof params.pathMatch === 'string') params[0] = params.pathMatch;\n\n    return filler(params, { pretty: true })\n  } catch (e) {\n    {\n      // Fix #3072 no warn if `pathMatch` is string\n      warn(typeof params.pathMatch === 'string', `missing param for ${routeMsg}: ${e.message}`);\n    }\n    return ''\n  } finally {\n    // delete the 0 if it was added\n    delete params[0];\n  }\n}\n\n/*  */\n\nfunction normalizeLocation (\n  raw,\n  current,\n  append,\n  router\n) {\n  let next = typeof raw === 'string' ? { path: raw } : raw;\n  // named target\n  if (next._normalized) {\n    return next\n  } else if (next.name) {\n    next = extend({}, raw);\n    const params = next.params;\n    if (params && typeof params === 'object') {\n      next.params = extend({}, params);\n    }\n    return next\n  }\n\n  // relative params\n  if (!next.path && next.params && current) {\n    next = extend({}, next);\n    next._normalized = true;\n    const params = extend(extend({}, current.params), next.params);\n    if (current.name) {\n      next.name = current.name;\n      next.params = params;\n    } else if (current.matched.length) {\n      const rawPath = current.matched[current.matched.length - 1].path;\n      next.path = fillParams(rawPath, params, `path ${current.path}`);\n    } else {\n      warn(false, `relative params navigation requires a current route.`);\n    }\n    return next\n  }\n\n  const parsedPath = parsePath(next.path || '');\n  const basePath = (current && current.path) || '/';\n  const path = parsedPath.path\n    ? resolvePath(parsedPath.path, basePath, append || next.append)\n    : basePath;\n\n  const query = resolveQuery(\n    parsedPath.query,\n    next.query,\n    router && router.options.parseQuery\n  );\n\n  let hash = next.hash || parsedPath.hash;\n  if (hash && hash.charAt(0) !== '#') {\n    hash = `#${hash}`;\n  }\n\n  return {\n    _normalized: true,\n    path,\n    query,\n    hash\n  }\n}\n\n/*  */\n\n// work around weird flow bug\nconst toTypes = [String, Object];\nconst eventTypes = [String, Array];\n\nconst noop = () => {};\n\nlet warnedCustomSlot;\nlet warnedTagProp;\nlet warnedEventProp;\n\nvar Link = {\n  name: 'RouterLink',\n  props: {\n    to: {\n      type: toTypes,\n      required: true\n    },\n    tag: {\n      type: String,\n      default: 'a'\n    },\n    custom: Boolean,\n    exact: Boolean,\n    exactPath: Boolean,\n    append: Boolean,\n    replace: Boolean,\n    activeClass: String,\n    exactActiveClass: String,\n    ariaCurrentValue: {\n      type: String,\n      default: 'page'\n    },\n    event: {\n      type: eventTypes,\n      default: 'click'\n    }\n  },\n  render (h) {\n    const router = this.$router;\n    const current = this.$route;\n    const { location, route, href } = router.resolve(\n      this.to,\n      current,\n      this.append\n    );\n\n    const classes = {};\n    const globalActiveClass = router.options.linkActiveClass;\n    const globalExactActiveClass = router.options.linkExactActiveClass;\n    // Support global empty active class\n    const activeClassFallback =\n      globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n    const exactActiveClassFallback =\n      globalExactActiveClass == null\n        ? 'router-link-exact-active'\n        : globalExactActiveClass;\n    const activeClass =\n      this.activeClass == null ? activeClassFallback : this.activeClass;\n    const exactActiveClass =\n      this.exactActiveClass == null\n        ? exactActiveClassFallback\n        : this.exactActiveClass;\n\n    const compareTarget = route.redirectedFrom\n      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n      : route;\n\n    classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n    classes[activeClass] = this.exact || this.exactPath\n      ? classes[exactActiveClass]\n      : isIncludedRoute(current, compareTarget);\n\n    const ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n    const handler = e => {\n      if (guardEvent(e)) {\n        if (this.replace) {\n          router.replace(location, noop);\n        } else {\n          router.push(location, noop);\n        }\n      }\n    };\n\n    const on = { click: guardEvent };\n    if (Array.isArray(this.event)) {\n      this.event.forEach(e => {\n        on[e] = handler;\n      });\n    } else {\n      on[this.event] = handler;\n    }\n\n    const data = { class: classes };\n\n    const scopedSlot =\n      !this.$scopedSlots.$hasNormal &&\n      this.$scopedSlots.default &&\n      this.$scopedSlots.default({\n        href,\n        route,\n        navigate: handler,\n        isActive: classes[activeClass],\n        isExactActive: classes[exactActiveClass]\n      });\n\n    if (scopedSlot) {\n      if (!this.custom) {\n        !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n        warnedCustomSlot = true;\n      }\n      if (scopedSlot.length === 1) {\n        return scopedSlot[0]\n      } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n        {\n          warn(\n            false,\n            `<router-link> with to=\"${\n              this.to\n            }\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.`\n          );\n        }\n        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n      }\n    }\n\n    {\n      if ('tag' in this.$options.propsData && !warnedTagProp) {\n        warn(\n          false,\n          `<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.`\n        );\n        warnedTagProp = true;\n      }\n      if ('event' in this.$options.propsData && !warnedEventProp) {\n        warn(\n          false,\n          `<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.`\n        );\n        warnedEventProp = true;\n      }\n    }\n\n    if (this.tag === 'a') {\n      data.on = on;\n      data.attrs = { href, 'aria-current': ariaCurrentValue };\n    } else {\n      // find the first <a> child and apply listener and href\n      const a = findAnchor(this.$slots.default);\n      if (a) {\n        // in case the <a> is a static node\n        a.isStatic = false;\n        const aData = (a.data = extend({}, a.data));\n        aData.on = aData.on || {};\n        // transform existing events in both objects into arrays so we can push later\n        for (const event in aData.on) {\n          const handler = aData.on[event];\n          if (event in on) {\n            aData.on[event] = Array.isArray(handler) ? handler : [handler];\n          }\n        }\n        // append new listeners for router-link\n        for (const event in on) {\n          if (event in aData.on) {\n            // on[event] is always a function\n            aData.on[event].push(on[event]);\n          } else {\n            aData.on[event] = handler;\n          }\n        }\n\n        const aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n        aAttrs.href = href;\n        aAttrs['aria-current'] = ariaCurrentValue;\n      } else {\n        // doesn't have <a> child, apply listener to self\n        data.on = on;\n      }\n    }\n\n    return h(this.tag, data, this.$slots.default)\n  }\n};\n\nfunction guardEvent (e) {\n  // don't redirect with control keys\n  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return\n  // don't redirect when preventDefault called\n  if (e.defaultPrevented) return\n  // don't redirect on right click\n  if (e.button !== undefined && e.button !== 0) return\n  // don't redirect if `target=\"_blank\"`\n  if (e.currentTarget && e.currentTarget.getAttribute) {\n    const target = e.currentTarget.getAttribute('target');\n    if (/\\b_blank\\b/i.test(target)) return\n  }\n  // this may be a Weex event which doesn't have this method\n  if (e.preventDefault) {\n    e.preventDefault();\n  }\n  return true\n}\n\nfunction findAnchor (children) {\n  if (children) {\n    let child;\n    for (let i = 0; i < children.length; i++) {\n      child = children[i];\n      if (child.tag === 'a') {\n        return child\n      }\n      if (child.children && (child = findAnchor(child.children))) {\n        return child\n      }\n    }\n  }\n}\n\nlet _Vue;\n\nfunction install (Vue) {\n  if (install.installed && _Vue === Vue) return\n  install.installed = true;\n\n  _Vue = Vue;\n\n  const isDef = v => v !== undefined;\n\n  const registerInstance = (vm, callVal) => {\n    let i = vm.$options._parentVnode;\n    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n      i(vm, callVal);\n    }\n  };\n\n  Vue.mixin({\n    beforeCreate () {\n      if (isDef(this.$options.router)) {\n        this._routerRoot = this;\n        this._router = this.$options.router;\n        this._router.init(this);\n        Vue.util.defineReactive(this, '_route', this._router.history.current);\n      } else {\n        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n      }\n      registerInstance(this, this);\n    },\n    destroyed () {\n      registerInstance(this);\n    }\n  });\n\n  Object.defineProperty(Vue.prototype, '$router', {\n    get () { return this._routerRoot._router }\n  });\n\n  Object.defineProperty(Vue.prototype, '$route', {\n    get () { return this._routerRoot._route }\n  });\n\n  Vue.component('RouterView', View);\n  Vue.component('RouterLink', Link);\n\n  const strats = Vue.config.optionMergeStrategies;\n  // use the same hook merging strategy for route hooks\n  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/*  */\n\nconst inBrowser = typeof window !== 'undefined';\n\n/*  */\n\nfunction createRouteMap (\n  routes,\n  oldPathList,\n  oldPathMap,\n  oldNameMap,\n  parentRoute\n) {\n  // the path list is used to control path matching priority\n  const pathList = oldPathList || [];\n  // $flow-disable-line\n  const pathMap = oldPathMap || Object.create(null);\n  // $flow-disable-line\n  const nameMap = oldNameMap || Object.create(null);\n\n  routes.forEach(route => {\n    addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n  });\n\n  // ensure wildcard routes are always at the end\n  for (let i = 0, l = pathList.length; i < l; i++) {\n    if (pathList[i] === '*') {\n      pathList.push(pathList.splice(i, 1)[0]);\n      l--;\n      i--;\n    }\n  }\n\n  {\n    // warn if routes do not include leading slashes\n    const found = pathList\n      // check for missing leading slash\n      .filter(path => path && path.charAt(0) !== '*' && path.charAt(0) !== '/');\n\n    if (found.length > 0) {\n      const pathNames = found.map(path => `- ${path}`).join('\\n');\n      warn(false, `Non-nested routes must include a leading slash character. Fix the following routes: \\n${pathNames}`);\n    }\n  }\n\n  return {\n    pathList,\n    pathMap,\n    nameMap\n  }\n}\n\nfunction addRouteRecord (\n  pathList,\n  pathMap,\n  nameMap,\n  route,\n  parent,\n  matchAs\n) {\n  const { path, name } = route;\n  {\n    assert(path != null, `\"path\" is required in a route configuration.`);\n    assert(\n      typeof route.component !== 'string',\n      `route config \"component\" for path: ${String(\n        path || name\n      )} cannot be a ` + `string id. Use an actual component instead.`\n    );\n\n    warn(\n      // eslint-disable-next-line no-control-regex\n      !/[^\\u0000-\\u007F]+/.test(path),\n      `Route with path \"${path}\" contains unencoded characters, make sure ` +\n      `your path is correctly encoded before passing it to the router. Use ` +\n      `encodeURI to encode static segments of your path.`\n    );\n  }\n\n  const pathToRegexpOptions =\n    route.pathToRegexpOptions || {};\n  const normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n  if (typeof route.caseSensitive === 'boolean') {\n    pathToRegexpOptions.sensitive = route.caseSensitive;\n  }\n\n  const record = {\n    path: normalizedPath,\n    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n    components: route.components || { default: route.component },\n    alias: route.alias\n      ? typeof route.alias === 'string'\n        ? [route.alias]\n        : route.alias\n      : [],\n    instances: {},\n    enteredCbs: {},\n    name,\n    parent,\n    matchAs,\n    redirect: route.redirect,\n    beforeEnter: route.beforeEnter,\n    meta: route.meta || {},\n    props:\n      route.props == null\n        ? {}\n        : route.components\n          ? route.props\n          : { default: route.props }\n  };\n\n  if (route.children) {\n    // Warn if route is named, does not redirect and has a default child route.\n    // If users navigate to this route by name, the default child will\n    // not be rendered (GH Issue #629)\n    {\n      if (\n        route.name &&\n        !route.redirect &&\n        route.children.some(child => /^\\/?$/.test(child.path))\n      ) {\n        warn(\n          false,\n          `Named Route '${route.name}' has a default child route. ` +\n          `When navigating to this named route (:to=\"{name: '${\n            route.name\n          }'}\"), ` +\n          `the default child route will not be rendered. Remove the name from ` +\n          `this route and use the name of the default child route for named ` +\n          `links instead.`\n        );\n      }\n    }\n    route.children.forEach(child => {\n      const childMatchAs = matchAs\n        ? cleanPath(`${matchAs}/${child.path}`)\n        : undefined;\n      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n    });\n  }\n\n  if (!pathMap[record.path]) {\n    pathList.push(record.path);\n    pathMap[record.path] = record;\n  }\n\n  if (route.alias !== undefined) {\n    const aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n    for (let i = 0; i < aliases.length; ++i) {\n      const alias = aliases[i];\n      if (alias === path) {\n        warn(\n          false,\n          `Found an alias with the same value as the path: \"${path}\". You have to remove that alias. It will be ignored in development.`\n        );\n        // skip in dev to make it work\n        continue\n      }\n\n      const aliasRoute = {\n        path: alias,\n        children: route.children\n      };\n      addRouteRecord(\n        pathList,\n        pathMap,\n        nameMap,\n        aliasRoute,\n        parent,\n        record.path || '/' // matchAs\n      );\n    }\n  }\n\n  if (name) {\n    if (!nameMap[name]) {\n      nameMap[name] = record;\n    } else if (!matchAs) {\n      warn(\n        false,\n        `Duplicate named routes definition: ` +\n        `{ name: \"${name}\", path: \"${record.path}\" }`\n      );\n    }\n  }\n}\n\nfunction compileRouteRegex (\n  path,\n  pathToRegexpOptions\n) {\n  const regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n  {\n    const keys = Object.create(null);\n    regex.keys.forEach(key => {\n      warn(\n        !keys[key.name],\n        `Duplicate param keys in route with path: \"${path}\"`\n      );\n      keys[key.name] = true;\n    });\n  }\n  return regex\n}\n\nfunction normalizePath (\n  path,\n  parent,\n  strict\n) {\n  if (!strict) path = path.replace(/\\/$/, '');\n  if (path[0] === '/') return path\n  if (parent == null) return path\n  return cleanPath(`${parent.path}/${path}`)\n}\n\n/*  */\n\n\n\nfunction createMatcher (\n  routes,\n  router\n) {\n  const { pathList, pathMap, nameMap } = createRouteMap(routes);\n\n  function addRoutes (routes) {\n    createRouteMap(routes, pathList, pathMap, nameMap);\n  }\n\n  function addRoute (parentOrRoute, route) {\n    const parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n    // $flow-disable-line\n    createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n    // add aliases of parent\n    if (parent && parent.alias.length) {\n      createRouteMap(\n        // $flow-disable-line route is defined if parent is\n        parent.alias.map(alias => ({ path: alias, children: [route] })),\n        pathList,\n        pathMap,\n        nameMap,\n        parent\n      );\n    }\n  }\n\n  function getRoutes () {\n    return pathList.map(path => pathMap[path])\n  }\n\n  function match (\n    raw,\n    currentRoute,\n    redirectedFrom\n  ) {\n    const location = normalizeLocation(raw, currentRoute, false, router);\n    const { name } = location;\n\n    if (name) {\n      const record = nameMap[name];\n      {\n        warn(record, `Route with name '${name}' does not exist`);\n      }\n      if (!record) return _createRoute(null, location)\n      const paramNames = record.regex.keys\n        .filter(key => !key.optional)\n        .map(key => key.name);\n\n      if (typeof location.params !== 'object') {\n        location.params = {};\n      }\n\n      if (currentRoute && typeof currentRoute.params === 'object') {\n        for (const key in currentRoute.params) {\n          if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n            location.params[key] = currentRoute.params[key];\n          }\n        }\n      }\n\n      location.path = fillParams(record.path, location.params, `named route \"${name}\"`);\n      return _createRoute(record, location, redirectedFrom)\n    } else if (location.path) {\n      location.params = {};\n      for (let i = 0; i < pathList.length; i++) {\n        const path = pathList[i];\n        const record = pathMap[path];\n        if (matchRoute(record.regex, location.path, location.params)) {\n          return _createRoute(record, location, redirectedFrom)\n        }\n      }\n    }\n    // no match\n    return _createRoute(null, location)\n  }\n\n  function redirect (\n    record,\n    location\n  ) {\n    const originalRedirect = record.redirect;\n    let redirect = typeof originalRedirect === 'function'\n      ? originalRedirect(createRoute(record, location, null, router))\n      : originalRedirect;\n\n    if (typeof redirect === 'string') {\n      redirect = { path: redirect };\n    }\n\n    if (!redirect || typeof redirect !== 'object') {\n      {\n        warn(\n          false, `invalid redirect option: ${JSON.stringify(redirect)}`\n        );\n      }\n      return _createRoute(null, location)\n    }\n\n    const re = redirect;\n    const { name, path } = re;\n    let { query, hash, params } = location;\n    query = re.hasOwnProperty('query') ? re.query : query;\n    hash = re.hasOwnProperty('hash') ? re.hash : hash;\n    params = re.hasOwnProperty('params') ? re.params : params;\n\n    if (name) {\n      // resolved named direct\n      const targetRecord = nameMap[name];\n      {\n        assert(targetRecord, `redirect failed: named route \"${name}\" not found.`);\n      }\n      return match({\n        _normalized: true,\n        name,\n        query,\n        hash,\n        params\n      }, undefined, location)\n    } else if (path) {\n      // 1. resolve relative redirect\n      const rawPath = resolveRecordPath(path, record);\n      // 2. resolve params\n      const resolvedPath = fillParams(rawPath, params, `redirect route with path \"${rawPath}\"`);\n      // 3. rematch with existing query and hash\n      return match({\n        _normalized: true,\n        path: resolvedPath,\n        query,\n        hash\n      }, undefined, location)\n    } else {\n      {\n        warn(false, `invalid redirect option: ${JSON.stringify(redirect)}`);\n      }\n      return _createRoute(null, location)\n    }\n  }\n\n  function alias (\n    record,\n    location,\n    matchAs\n  ) {\n    const aliasedPath = fillParams(matchAs, location.params, `aliased route with path \"${matchAs}\"`);\n    const aliasedMatch = match({\n      _normalized: true,\n      path: aliasedPath\n    });\n    if (aliasedMatch) {\n      const matched = aliasedMatch.matched;\n      const aliasedRecord = matched[matched.length - 1];\n      location.params = aliasedMatch.params;\n      return _createRoute(aliasedRecord, location)\n    }\n    return _createRoute(null, location)\n  }\n\n  function _createRoute (\n    record,\n    location,\n    redirectedFrom\n  ) {\n    if (record && record.redirect) {\n      return redirect(record, redirectedFrom || location)\n    }\n    if (record && record.matchAs) {\n      return alias(record, location, record.matchAs)\n    }\n    return createRoute(record, location, redirectedFrom, router)\n  }\n\n  return {\n    match,\n    addRoute,\n    getRoutes,\n    addRoutes\n  }\n}\n\nfunction matchRoute (\n  regex,\n  path,\n  params\n) {\n  const m = path.match(regex);\n\n  if (!m) {\n    return false\n  } else if (!params) {\n    return true\n  }\n\n  for (let i = 1, len = m.length; i < len; ++i) {\n    const key = regex.keys[i - 1];\n    if (key) {\n      // Fix #1994: using * with props: true generates a param named 0\n      params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n    }\n  }\n\n  return true\n}\n\nfunction resolveRecordPath (path, record) {\n  return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/*  */\n\n// use User Timing api (if present) for more accurate key precision\nconst Time =\n  inBrowser && window.performance && window.performance.now\n    ? window.performance\n    : Date;\n\nfunction genStateKey () {\n  return Time.now().toFixed(3)\n}\n\nlet _key = genStateKey();\n\nfunction getStateKey () {\n  return _key\n}\n\nfunction setStateKey (key) {\n  return (_key = key)\n}\n\n/*  */\n\nconst positionStore = Object.create(null);\n\nfunction setupScroll () {\n  // Prevent browser scroll behavior on History popstate\n  if ('scrollRestoration' in window.history) {\n    window.history.scrollRestoration = 'manual';\n  }\n  // Fix for #1585 for Firefox\n  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n  // window.location.protocol + '//' + window.location.host\n  // location.host contains the port and location.hostname doesn't\n  const protocolAndPath = window.location.protocol + '//' + window.location.host;\n  const absolutePath = window.location.href.replace(protocolAndPath, '');\n  // preserve existing history state as it could be overriden by the user\n  const stateCopy = extend({}, window.history.state);\n  stateCopy.key = getStateKey();\n  window.history.replaceState(stateCopy, '', absolutePath);\n  window.addEventListener('popstate', handlePopState);\n  return () => {\n    window.removeEventListener('popstate', handlePopState);\n  }\n}\n\nfunction handleScroll (\n  router,\n  to,\n  from,\n  isPop\n) {\n  if (!router.app) {\n    return\n  }\n\n  const behavior = router.options.scrollBehavior;\n  if (!behavior) {\n    return\n  }\n\n  {\n    assert(typeof behavior === 'function', `scrollBehavior must be a function`);\n  }\n\n  // wait until re-render finishes before scrolling\n  router.app.$nextTick(() => {\n    const position = getScrollPosition();\n    const shouldScroll = behavior.call(\n      router,\n      to,\n      from,\n      isPop ? position : null\n    );\n\n    if (!shouldScroll) {\n      return\n    }\n\n    if (typeof shouldScroll.then === 'function') {\n      shouldScroll\n        .then(shouldScroll => {\n          scrollToPosition((shouldScroll), position);\n        })\n        .catch(err => {\n          {\n            assert(false, err.toString());\n          }\n        });\n    } else {\n      scrollToPosition(shouldScroll, position);\n    }\n  });\n}\n\nfunction saveScrollPosition () {\n  const key = getStateKey();\n  if (key) {\n    positionStore[key] = {\n      x: window.pageXOffset,\n      y: window.pageYOffset\n    };\n  }\n}\n\nfunction handlePopState (e) {\n  saveScrollPosition();\n  if (e.state && e.state.key) {\n    setStateKey(e.state.key);\n  }\n}\n\nfunction getScrollPosition () {\n  const key = getStateKey();\n  if (key) {\n    return positionStore[key]\n  }\n}\n\nfunction getElementPosition (el, offset) {\n  const docEl = document.documentElement;\n  const docRect = docEl.getBoundingClientRect();\n  const elRect = el.getBoundingClientRect();\n  return {\n    x: elRect.left - docRect.left - offset.x,\n    y: elRect.top - docRect.top - offset.y\n  }\n}\n\nfunction isValidPosition (obj) {\n  return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n    y: isNumber(obj.y) ? obj.y : window.pageYOffset\n  }\n}\n\nfunction normalizeOffset (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : 0,\n    y: isNumber(obj.y) ? obj.y : 0\n  }\n}\n\nfunction isNumber (v) {\n  return typeof v === 'number'\n}\n\nconst hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n  const isObject = typeof shouldScroll === 'object';\n  if (isObject && typeof shouldScroll.selector === 'string') {\n    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n    const el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n      : document.querySelector(shouldScroll.selector);\n\n    if (el) {\n      let offset =\n        shouldScroll.offset && typeof shouldScroll.offset === 'object'\n          ? shouldScroll.offset\n          : {};\n      offset = normalizeOffset(offset);\n      position = getElementPosition(el, offset);\n    } else if (isValidPosition(shouldScroll)) {\n      position = normalizePosition(shouldScroll);\n    }\n  } else if (isObject && isValidPosition(shouldScroll)) {\n    position = normalizePosition(shouldScroll);\n  }\n\n  if (position) {\n    // $flow-disable-line\n    if ('scrollBehavior' in document.documentElement.style) {\n      window.scrollTo({\n        left: position.x,\n        top: position.y,\n        // $flow-disable-line\n        behavior: shouldScroll.behavior\n      });\n    } else {\n      window.scrollTo(position.x, position.y);\n    }\n  }\n}\n\n/*  */\n\nconst supportsPushState =\n  inBrowser &&\n  (function () {\n    const ua = window.navigator.userAgent;\n\n    if (\n      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n      ua.indexOf('Mobile Safari') !== -1 &&\n      ua.indexOf('Chrome') === -1 &&\n      ua.indexOf('Windows Phone') === -1\n    ) {\n      return false\n    }\n\n    return window.history && typeof window.history.pushState === 'function'\n  })();\n\nfunction pushState (url, replace) {\n  saveScrollPosition();\n  // try...catch the pushState call to get around Safari\n  // DOM Exception 18 where it limits to 100 pushState calls\n  const history = window.history;\n  try {\n    if (replace) {\n      // preserve existing history state as it could be overriden by the user\n      const stateCopy = extend({}, history.state);\n      stateCopy.key = getStateKey();\n      history.replaceState(stateCopy, '', url);\n    } else {\n      history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n    }\n  } catch (e) {\n    window.location[replace ? 'replace' : 'assign'](url);\n  }\n}\n\nfunction replaceState (url) {\n  pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nconst NavigationFailureType = {\n  redirected: 2,\n  aborted: 4,\n  cancelled: 8,\n  duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.redirected,\n    `Redirected when going from \"${from.fullPath}\" to \"${stringifyRoute(\n      to\n    )}\" via a navigation guard.`\n  )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n  const error = createRouterError(\n    from,\n    to,\n    NavigationFailureType.duplicated,\n    `Avoided redundant navigation to current location: \"${from.fullPath}\".`\n  );\n  // backwards compatible with the first introduction of Errors\n  error.name = 'NavigationDuplicated';\n  return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.cancelled,\n    `Navigation cancelled from \"${from.fullPath}\" to \"${\n      to.fullPath\n    }\" with a new navigation.`\n  )\n}\n\nfunction createNavigationAbortedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.aborted,\n    `Navigation aborted from \"${from.fullPath}\" to \"${\n      to.fullPath\n    }\" via a navigation guard.`\n  )\n}\n\nfunction createRouterError (from, to, type, message) {\n  const error = new Error(message);\n  error._isRouter = true;\n  error.from = from;\n  error.to = to;\n  error.type = type;\n\n  return error\n}\n\nconst propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n  if (typeof to === 'string') return to\n  if ('path' in to) return to.path\n  const location = {};\n  propertiesToLog.forEach(key => {\n    if (key in to) location[key] = to[key];\n  });\n  return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n  return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n  return (\n    isError(err) &&\n    err._isRouter &&\n    (errorType == null || err.type === errorType)\n  )\n}\n\n/*  */\n\nfunction runQueue (queue, fn, cb) {\n  const step = index => {\n    if (index >= queue.length) {\n      cb();\n    } else {\n      if (queue[index]) {\n        fn(queue[index], () => {\n          step(index + 1);\n        });\n      } else {\n        step(index + 1);\n      }\n    }\n  };\n  step(0);\n}\n\n/*  */\n\nfunction resolveAsyncComponents (matched) {\n  return (to, from, next) => {\n    let hasAsync = false;\n    let pending = 0;\n    let error = null;\n\n    flatMapComponents(matched, (def, _, match, key) => {\n      // if it's a function and doesn't have cid attached,\n      // assume it's an async component resolve function.\n      // we are not using Vue's default async resolving mechanism because\n      // we want to halt the navigation until the incoming component has been\n      // resolved.\n      if (typeof def === 'function' && def.cid === undefined) {\n        hasAsync = true;\n        pending++;\n\n        const resolve = once(resolvedDef => {\n          if (isESModule(resolvedDef)) {\n            resolvedDef = resolvedDef.default;\n          }\n          // save resolved on async factory in case it's used elsewhere\n          def.resolved = typeof resolvedDef === 'function'\n            ? resolvedDef\n            : _Vue.extend(resolvedDef);\n          match.components[key] = resolvedDef;\n          pending--;\n          if (pending <= 0) {\n            next();\n          }\n        });\n\n        const reject = once(reason => {\n          const msg = `Failed to resolve async component ${key}: ${reason}`;\n          warn(false, msg);\n          if (!error) {\n            error = isError(reason)\n              ? reason\n              : new Error(msg);\n            next(error);\n          }\n        });\n\n        let res;\n        try {\n          res = def(resolve, reject);\n        } catch (e) {\n          reject(e);\n        }\n        if (res) {\n          if (typeof res.then === 'function') {\n            res.then(resolve, reject);\n          } else {\n            // new syntax in Vue 2.3\n            const comp = res.component;\n            if (comp && typeof comp.then === 'function') {\n              comp.then(resolve, reject);\n            }\n          }\n        }\n      }\n    });\n\n    if (!hasAsync) next();\n  }\n}\n\nfunction flatMapComponents (\n  matched,\n  fn\n) {\n  return flatten(matched.map(m => {\n    return Object.keys(m.components).map(key => fn(\n      m.components[key],\n      m.instances[key],\n      m, key\n    ))\n  }))\n}\n\nfunction flatten (arr) {\n  return Array.prototype.concat.apply([], arr)\n}\n\nconst hasSymbol =\n  typeof Symbol === 'function' &&\n  typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n  let called = false;\n  return function (...args) {\n    if (called) return\n    called = true;\n    return fn.apply(this, args)\n  }\n}\n\n/*  */\n\nclass History {\n\n\n\n\n\n\n\n\n\n\n\n\n  // implemented by sub-classes\n\n\n\n\n\n\n\n  constructor (router, base) {\n    this.router = router;\n    this.base = normalizeBase(base);\n    // start with a route object that stands for \"nowhere\"\n    this.current = START;\n    this.pending = null;\n    this.ready = false;\n    this.readyCbs = [];\n    this.readyErrorCbs = [];\n    this.errorCbs = [];\n    this.listeners = [];\n  }\n\n  listen (cb) {\n    this.cb = cb;\n  }\n\n  onReady (cb, errorCb) {\n    if (this.ready) {\n      cb();\n    } else {\n      this.readyCbs.push(cb);\n      if (errorCb) {\n        this.readyErrorCbs.push(errorCb);\n      }\n    }\n  }\n\n  onError (errorCb) {\n    this.errorCbs.push(errorCb);\n  }\n\n  transitionTo (\n    location,\n    onComplete,\n    onAbort\n  ) {\n    let route;\n    // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n    try {\n      route = this.router.match(location, this.current);\n    } catch (e) {\n      this.errorCbs.forEach(cb => {\n        cb(e);\n      });\n      // Exception should still be thrown\n      throw e\n    }\n    const prev = this.current;\n    this.confirmTransition(\n      route,\n      () => {\n        this.updateRoute(route);\n        onComplete && onComplete(route);\n        this.ensureURL();\n        this.router.afterHooks.forEach(hook => {\n          hook && hook(route, prev);\n        });\n\n        // fire ready cbs once\n        if (!this.ready) {\n          this.ready = true;\n          this.readyCbs.forEach(cb => {\n            cb(route);\n          });\n        }\n      },\n      err => {\n        if (onAbort) {\n          onAbort(err);\n        }\n        if (err && !this.ready) {\n          // Initial redirection should not mark the history as ready yet\n          // because it's triggered by the redirection instead\n          // https://github.com/vuejs/vue-router/issues/3225\n          // https://github.com/vuejs/vue-router/issues/3331\n          if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n            this.ready = true;\n            this.readyErrorCbs.forEach(cb => {\n              cb(err);\n            });\n          }\n        }\n      }\n    );\n  }\n\n  confirmTransition (route, onComplete, onAbort) {\n    const current = this.current;\n    this.pending = route;\n    const abort = err => {\n      // changed after adding errors with\n      // https://github.com/vuejs/vue-router/pull/3047 before that change,\n      // redirect and aborted navigation would produce an err == null\n      if (!isNavigationFailure(err) && isError(err)) {\n        if (this.errorCbs.length) {\n          this.errorCbs.forEach(cb => {\n            cb(err);\n          });\n        } else {\n          {\n            warn(false, 'uncaught error during route navigation:');\n          }\n          console.error(err);\n        }\n      }\n      onAbort && onAbort(err);\n    };\n    const lastRouteIndex = route.matched.length - 1;\n    const lastCurrentIndex = current.matched.length - 1;\n    if (\n      isSameRoute(route, current) &&\n      // in the case the route map has been dynamically appended to\n      lastRouteIndex === lastCurrentIndex &&\n      route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n    ) {\n      this.ensureURL();\n      if (route.hash) {\n        handleScroll(this.router, current, route, false);\n      }\n      return abort(createNavigationDuplicatedError(current, route))\n    }\n\n    const { updated, deactivated, activated } = resolveQueue(\n      this.current.matched,\n      route.matched\n    );\n\n    const queue = [].concat(\n      // in-component leave guards\n      extractLeaveGuards(deactivated),\n      // global before hooks\n      this.router.beforeHooks,\n      // in-component update hooks\n      extractUpdateHooks(updated),\n      // in-config enter guards\n      activated.map(m => m.beforeEnter),\n      // async components\n      resolveAsyncComponents(activated)\n    );\n\n    const iterator = (hook, next) => {\n      if (this.pending !== route) {\n        return abort(createNavigationCancelledError(current, route))\n      }\n      try {\n        hook(route, current, (to) => {\n          if (to === false) {\n            // next(false) -> abort navigation, ensure current URL\n            this.ensureURL(true);\n            abort(createNavigationAbortedError(current, route));\n          } else if (isError(to)) {\n            this.ensureURL(true);\n            abort(to);\n          } else if (\n            typeof to === 'string' ||\n            (typeof to === 'object' &&\n              (typeof to.path === 'string' || typeof to.name === 'string'))\n          ) {\n            // next('/') or next({ path: '/' }) -> redirect\n            abort(createNavigationRedirectedError(current, route));\n            if (typeof to === 'object' && to.replace) {\n              this.replace(to);\n            } else {\n              this.push(to);\n            }\n          } else {\n            // confirm transition and pass on the value\n            next(to);\n          }\n        });\n      } catch (e) {\n        abort(e);\n      }\n    };\n\n    runQueue(queue, iterator, () => {\n      // wait until async components are resolved before\n      // extracting in-component enter guards\n      const enterGuards = extractEnterGuards(activated);\n      const queue = enterGuards.concat(this.router.resolveHooks);\n      runQueue(queue, iterator, () => {\n        if (this.pending !== route) {\n          return abort(createNavigationCancelledError(current, route))\n        }\n        this.pending = null;\n        onComplete(route);\n        if (this.router.app) {\n          this.router.app.$nextTick(() => {\n            handleRouteEntered(route);\n          });\n        }\n      });\n    });\n  }\n\n  updateRoute (route) {\n    this.current = route;\n    this.cb && this.cb(route);\n  }\n\n  setupListeners () {\n    // Default implementation is empty\n  }\n\n  teardown () {\n    // clean up event listeners\n    // https://github.com/vuejs/vue-router/issues/2341\n    this.listeners.forEach(cleanupListener => {\n      cleanupListener();\n    });\n    this.listeners = [];\n\n    // reset current history route\n    // https://github.com/vuejs/vue-router/issues/3294\n    this.current = START;\n    this.pending = null;\n  }\n}\n\nfunction normalizeBase (base) {\n  if (!base) {\n    if (inBrowser) {\n      // respect <base> tag\n      const baseEl = document.querySelector('base');\n      base = (baseEl && baseEl.getAttribute('href')) || '/';\n      // strip full URL origin\n      base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n    } else {\n      base = '/';\n    }\n  }\n  // make sure there's the starting slash\n  if (base.charAt(0) !== '/') {\n    base = '/' + base;\n  }\n  // remove trailing slash\n  return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n  current,\n  next\n) {\n  let i;\n  const max = Math.max(current.length, next.length);\n  for (i = 0; i < max; i++) {\n    if (current[i] !== next[i]) {\n      break\n    }\n  }\n  return {\n    updated: next.slice(0, i),\n    activated: next.slice(i),\n    deactivated: current.slice(i)\n  }\n}\n\nfunction extractGuards (\n  records,\n  name,\n  bind,\n  reverse\n) {\n  const guards = flatMapComponents(records, (def, instance, match, key) => {\n    const guard = extractGuard(def, name);\n    if (guard) {\n      return Array.isArray(guard)\n        ? guard.map(guard => bind(guard, instance, match, key))\n        : bind(guard, instance, match, key)\n    }\n  });\n  return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n  def,\n  key\n) {\n  if (typeof def !== 'function') {\n    // extend now so that global mixins are applied.\n    def = _Vue.extend(def);\n  }\n  return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n  if (instance) {\n    return function boundRouteGuard () {\n      return guard.apply(instance, arguments)\n    }\n  }\n}\n\nfunction extractEnterGuards (\n  activated\n) {\n  return extractGuards(\n    activated,\n    'beforeRouteEnter',\n    (guard, _, match, key) => {\n      return bindEnterGuard(guard, match, key)\n    }\n  )\n}\n\nfunction bindEnterGuard (\n  guard,\n  match,\n  key\n) {\n  return function routeEnterGuard (to, from, next) {\n    return guard(to, from, cb => {\n      if (typeof cb === 'function') {\n        if (!match.enteredCbs[key]) {\n          match.enteredCbs[key] = [];\n        }\n        match.enteredCbs[key].push(cb);\n      }\n      next(cb);\n    })\n  }\n}\n\n/*  */\n\nclass HTML5History extends History {\n\n\n  constructor (router, base) {\n    super(router, base);\n\n    this._startLocation = getLocation(this.base);\n  }\n\n  setupListeners () {\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    const router = this.router;\n    const expectScroll = router.options.scrollBehavior;\n    const supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    const handleRoutingEvent = () => {\n      const current = this.current;\n\n      // Avoiding first `popstate` event dispatched in some browsers but first\n      // history route not updated since async guard at the same time.\n      const location = getLocation(this.base);\n      if (this.current === START && location === this._startLocation) {\n        return\n      }\n\n      this.transitionTo(location, route => {\n        if (supportsScroll) {\n          handleScroll(router, route, current, true);\n        }\n      });\n    };\n    window.addEventListener('popstate', handleRoutingEvent);\n    this.listeners.push(() => {\n      window.removeEventListener('popstate', handleRoutingEvent);\n    });\n  }\n\n  go (n) {\n    window.history.go(n);\n  }\n\n  push (location, onComplete, onAbort) {\n    const { current: fromRoute } = this;\n    this.transitionTo(location, route => {\n      pushState(cleanPath(this.base + route.fullPath));\n      handleScroll(this.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  }\n\n  replace (location, onComplete, onAbort) {\n    const { current: fromRoute } = this;\n    this.transitionTo(location, route => {\n      replaceState(cleanPath(this.base + route.fullPath));\n      handleScroll(this.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  }\n\n  ensureURL (push) {\n    if (getLocation(this.base) !== this.current.fullPath) {\n      const current = cleanPath(this.base + this.current.fullPath);\n      push ? pushState(current) : replaceState(current);\n    }\n  }\n\n  getCurrentLocation () {\n    return getLocation(this.base)\n  }\n}\n\nfunction getLocation (base) {\n  let path = window.location.pathname;\n  const pathLowerCase = path.toLowerCase();\n  const baseLowerCase = base.toLowerCase();\n  // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n  // https://github.com/vuejs/vue-router/issues/3555\n  // so we ensure the trailing slash in the base\n  if (base && ((pathLowerCase === baseLowerCase) ||\n    (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n    path = path.slice(base.length);\n  }\n  return (path || '/') + window.location.search + window.location.hash\n}\n\n/*  */\n\nclass HashHistory extends History {\n  constructor (router, base, fallback) {\n    super(router, base);\n    // check history fallback deeplinking\n    if (fallback && checkFallback(this.base)) {\n      return\n    }\n    ensureSlash();\n  }\n\n  // this is delayed until the app mounts\n  // to avoid the hashchange listener being fired too early\n  setupListeners () {\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    const router = this.router;\n    const expectScroll = router.options.scrollBehavior;\n    const supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    const handleRoutingEvent = () => {\n      const current = this.current;\n      if (!ensureSlash()) {\n        return\n      }\n      this.transitionTo(getHash(), route => {\n        if (supportsScroll) {\n          handleScroll(this.router, route, current, true);\n        }\n        if (!supportsPushState) {\n          replaceHash(route.fullPath);\n        }\n      });\n    };\n    const eventType = supportsPushState ? 'popstate' : 'hashchange';\n    window.addEventListener(\n      eventType,\n      handleRoutingEvent\n    );\n    this.listeners.push(() => {\n      window.removeEventListener(eventType, handleRoutingEvent);\n    });\n  }\n\n  push (location, onComplete, onAbort) {\n    const { current: fromRoute } = this;\n    this.transitionTo(\n      location,\n      route => {\n        pushHash(route.fullPath);\n        handleScroll(this.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  }\n\n  replace (location, onComplete, onAbort) {\n    const { current: fromRoute } = this;\n    this.transitionTo(\n      location,\n      route => {\n        replaceHash(route.fullPath);\n        handleScroll(this.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  }\n\n  go (n) {\n    window.history.go(n);\n  }\n\n  ensureURL (push) {\n    const current = this.current.fullPath;\n    if (getHash() !== current) {\n      push ? pushHash(current) : replaceHash(current);\n    }\n  }\n\n  getCurrentLocation () {\n    return getHash()\n  }\n}\n\nfunction checkFallback (base) {\n  const location = getLocation(base);\n  if (!/^\\/#/.test(location)) {\n    window.location.replace(cleanPath(base + '/#' + location));\n    return true\n  }\n}\n\nfunction ensureSlash () {\n  const path = getHash();\n  if (path.charAt(0) === '/') {\n    return true\n  }\n  replaceHash('/' + path);\n  return false\n}\n\nfunction getHash () {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  let href = window.location.href;\n  const index = href.indexOf('#');\n  // empty path\n  if (index < 0) return ''\n\n  href = href.slice(index + 1);\n\n  return href\n}\n\nfunction getUrl (path) {\n  const href = window.location.href;\n  const i = href.indexOf('#');\n  const base = i >= 0 ? href.slice(0, i) : href;\n  return `${base}#${path}`\n}\n\nfunction pushHash (path) {\n  if (supportsPushState) {\n    pushState(getUrl(path));\n  } else {\n    window.location.hash = path;\n  }\n}\n\nfunction replaceHash (path) {\n  if (supportsPushState) {\n    replaceState(getUrl(path));\n  } else {\n    window.location.replace(getUrl(path));\n  }\n}\n\n/*  */\n\nclass AbstractHistory extends History {\n\n\n\n  constructor (router, base) {\n    super(router, base);\n    this.stack = [];\n    this.index = -1;\n  }\n\n  push (location, onComplete, onAbort) {\n    this.transitionTo(\n      location,\n      route => {\n        this.stack = this.stack.slice(0, this.index + 1).concat(route);\n        this.index++;\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  }\n\n  replace (location, onComplete, onAbort) {\n    this.transitionTo(\n      location,\n      route => {\n        this.stack = this.stack.slice(0, this.index).concat(route);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  }\n\n  go (n) {\n    const targetIndex = this.index + n;\n    if (targetIndex < 0 || targetIndex >= this.stack.length) {\n      return\n    }\n    const route = this.stack[targetIndex];\n    this.confirmTransition(\n      route,\n      () => {\n        const prev = this.current;\n        this.index = targetIndex;\n        this.updateRoute(route);\n        this.router.afterHooks.forEach(hook => {\n          hook && hook(route, prev);\n        });\n      },\n      err => {\n        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n          this.index = targetIndex;\n        }\n      }\n    );\n  }\n\n  getCurrentLocation () {\n    const current = this.stack[this.stack.length - 1];\n    return current ? current.fullPath : '/'\n  }\n\n  ensureURL () {\n    // noop\n  }\n}\n\n/*  */\n\n\n\nclass VueRouter {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n  constructor (options = {}) {\n    {\n      warn(this instanceof VueRouter, `Router must be called with the new operator.`);\n    }\n    this.app = null;\n    this.apps = [];\n    this.options = options;\n    this.beforeHooks = [];\n    this.resolveHooks = [];\n    this.afterHooks = [];\n    this.matcher = createMatcher(options.routes || [], this);\n\n    let mode = options.mode || 'hash';\n    this.fallback =\n      mode === 'history' && !supportsPushState && options.fallback !== false;\n    if (this.fallback) {\n      mode = 'hash';\n    }\n    if (!inBrowser) {\n      mode = 'abstract';\n    }\n    this.mode = mode;\n\n    switch (mode) {\n      case 'history':\n        this.history = new HTML5History(this, options.base);\n        break\n      case 'hash':\n        this.history = new HashHistory(this, options.base, this.fallback);\n        break\n      case 'abstract':\n        this.history = new AbstractHistory(this, options.base);\n        break\n      default:\n      {\n        assert(false, `invalid mode: ${mode}`);\n      }\n    }\n  }\n\n  match (raw, current, redirectedFrom) {\n    return this.matcher.match(raw, current, redirectedFrom)\n  }\n\n  get currentRoute () {\n    return this.history && this.history.current\n  }\n\n  init (app /* Vue component instance */) {\n    assert(\n      install.installed,\n      `not installed. Make sure to call \\`Vue.use(VueRouter)\\` ` +\n      `before creating root instance.`\n    );\n\n    this.apps.push(app);\n\n    // set up app destroyed handler\n    // https://github.com/vuejs/vue-router/issues/2639\n    app.$once('hook:destroyed', () => {\n      // clean out app from this.apps array once destroyed\n      const index = this.apps.indexOf(app);\n      if (index > -1) this.apps.splice(index, 1);\n      // ensure we still have a main app or null if no apps\n      // we do not release the router so it can be reused\n      if (this.app === app) this.app = this.apps[0] || null;\n\n      if (!this.app) this.history.teardown();\n    });\n\n    // main app previously initialized\n    // return as we don't need to set up new history listener\n    if (this.app) {\n      return\n    }\n\n    this.app = app;\n\n    const history = this.history;\n\n    if (history instanceof HTML5History || history instanceof HashHistory) {\n      const handleInitialScroll = routeOrError => {\n        const from = history.current;\n        const expectScroll = this.options.scrollBehavior;\n        const supportsScroll = supportsPushState && expectScroll;\n\n        if (supportsScroll && 'fullPath' in routeOrError) {\n          handleScroll(this, routeOrError, from, false);\n        }\n      };\n      const setupListeners = routeOrError => {\n        history.setupListeners();\n        handleInitialScroll(routeOrError);\n      };\n      history.transitionTo(\n        history.getCurrentLocation(),\n        setupListeners,\n        setupListeners\n      );\n    }\n\n    history.listen(route => {\n      this.apps.forEach(app => {\n        app._route = route;\n      });\n    });\n  }\n\n  beforeEach (fn) {\n    return registerHook(this.beforeHooks, fn)\n  }\n\n  beforeResolve (fn) {\n    return registerHook(this.resolveHooks, fn)\n  }\n\n  afterEach (fn) {\n    return registerHook(this.afterHooks, fn)\n  }\n\n  onReady (cb, errorCb) {\n    this.history.onReady(cb, errorCb);\n  }\n\n  onError (errorCb) {\n    this.history.onError(errorCb);\n  }\n\n  push (location, onComplete, onAbort) {\n    // $flow-disable-line\n    if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n      return new Promise((resolve, reject) => {\n        this.history.push(location, resolve, reject);\n      })\n    } else {\n      this.history.push(location, onComplete, onAbort);\n    }\n  }\n\n  replace (location, onComplete, onAbort) {\n    // $flow-disable-line\n    if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n      return new Promise((resolve, reject) => {\n        this.history.replace(location, resolve, reject);\n      })\n    } else {\n      this.history.replace(location, onComplete, onAbort);\n    }\n  }\n\n  go (n) {\n    this.history.go(n);\n  }\n\n  back () {\n    this.go(-1);\n  }\n\n  forward () {\n    this.go(1);\n  }\n\n  getMatchedComponents (to) {\n    const route = to\n      ? to.matched\n        ? to\n        : this.resolve(to).route\n      : this.currentRoute;\n    if (!route) {\n      return []\n    }\n    return [].concat.apply(\n      [],\n      route.matched.map(m => {\n        return Object.keys(m.components).map(key => {\n          return m.components[key]\n        })\n      })\n    )\n  }\n\n  resolve (\n    to,\n    current,\n    append\n  ) {\n    current = current || this.history.current;\n    const location = normalizeLocation(to, current, append, this);\n    const route = this.match(location, current);\n    const fullPath = route.redirectedFrom || route.fullPath;\n    const base = this.history.base;\n    const href = createHref(base, fullPath, this.mode);\n    return {\n      location,\n      route,\n      href,\n      // for backwards compat\n      normalizedTo: location,\n      resolved: route\n    }\n  }\n\n  getRoutes () {\n    return this.matcher.getRoutes()\n  }\n\n  addRoute (parentOrRoute, route) {\n    this.matcher.addRoute(parentOrRoute, route);\n    if (this.history.current !== START) {\n      this.history.transitionTo(this.history.getCurrentLocation());\n    }\n  }\n\n  addRoutes (routes) {\n    {\n      warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n    }\n    this.matcher.addRoutes(routes);\n    if (this.history.current !== START) {\n      this.history.transitionTo(this.history.getCurrentLocation());\n    }\n  }\n}\n\nfunction registerHook (list, fn) {\n  list.push(fn);\n  return () => {\n    const i = list.indexOf(fn);\n    if (i > -1) list.splice(i, 1);\n  }\n}\n\nfunction createHref (base, fullPath, mode) {\n  var path = mode === 'hash' ? '#' + fullPath : fullPath;\n  return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.RouterLink = Link;\nVueRouter.RouterView = View;\nVueRouter.START_LOCATION = START;\n// origin-end\n\nVueRouter.create = (params) => new VueRouter(params);\nVue.use(VueRouter);\n\nexport {VueRouter};"],"names":["assert","condition","message","Error","warn","console","extend","a","b","key","encodeReserveRE","encodeReserveReplacer","c","charCodeAt","toString","commaRE","encode","str","encodeURIComponent","replace","decode","decodeURIComponent","err","resolveQuery","query","extraQuery","_parseQuery","parse","parseQuery","parsedQuery","e","value","Array","isArray","map","castQueryParamValue","String","res","trim","split","forEach","param","parts","shift","val","length","join","undefined","push","stringifyQuery","obj","Object","keys","result","val2","filter","x","trailingSlashRE","createRoute","record","location","redirectedFrom","router","options","clone","route","name","meta","path","hash","params","fullPath","getFullPath","matched","formatMatch","freeze","START","unshift","parent","_stringifyQuery","stringify","isSameRoute","onlyPath","isObjectEqual","aKeys","sort","bKeys","every","i","aVal","bKey","bVal","isIncludedRoute","current","target","indexOf","queryIncludes","handleRouteEntered","instances","instance","cbs","enteredCbs","_isBeingDestroyed","View","functional","props","type","render","_","children","data","routerView","h","$createElement","$route","cache","_routerViewCache","depth","inactive","_routerRoot","vnodeData","$vnode","keepAlive","_directInactive","_inactive","$parent","routerViewDepth","cachedData","cachedComponent","component","configProps","fillPropsinData","components","registerRouteInstance","vm","hook","prepatch","vnode","componentInstance","init","propsToPass","resolveProps","attrs","config","resolvePath","relative","base","append","firstChar","charAt","stack","pop","segments","segment","parsePath","hashIndex","slice","queryIndex","cleanPath","isarray","arr","prototype","call","pathToRegexp_1","pathToRegexp","parse_1","compile_1","compile","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","RegExp","tokens","index","defaultDelimiter","delimiter","exec","m","escaped","offset","next","prefix","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","toUpperCase","encodeAsterisk","matches","flags","opts","pretty","token","TypeError","JSON","j","test","attachKeys","re","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","regexp","stringToRegexp","strict","end","endsWithDelimiter","regexpCompileCache","create","fillParams","routeMsg","filler","pathMatch","normalizeLocation","raw","_normalized","rawPath","parsedPath","basePath","toTypes","eventTypes","noop","warnedCustomSlot","warnedTagProp","warnedEventProp","Link","to","required","tag","custom","Boolean","exact","exactPath","activeClass","exactActiveClass","ariaCurrentValue","event","$router","resolve","href","classes","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","handler","guardEvent","on","click","scopedSlot","$scopedSlots","$hasNormal","navigate","isActive","isExactActive","$options","propsData","findAnchor","$slots","isStatic","aData","aAttrs","metaKey","altKey","ctrlKey","shiftKey","defaultPrevented","button","currentTarget","getAttribute","preventDefault","child","_Vue","install","Vue","installed","isDef","v","registerInstance","callVal","_parentVnode","mixin","beforeCreate","_router","util","defineReactive","history","destroyed","defineProperty","get","_route","strats","optionMergeStrategies","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","created","inBrowser","window","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","l","splice","found","pathNames","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","regex","compileRouteRegex","alias","redirect","beforeEnter","some","childMatchAs","aliases","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","matchRoute","originalRedirect","hasOwnProperty","targetRecord","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","len","Time","performance","now","Date","genStateKey","toFixed","_key","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","protocol","host","absolutePath","stateCopy","state","replaceState","addEventListener","handlePopState","removeEventListener","handleScroll","from","isPop","app","behavior","scrollBehavior","$nextTick","position","getScrollPosition","shouldScroll","then","scrollToPosition","saveScrollPosition","pageXOffset","y","pageYOffset","getElementPosition","el","docEl","document","documentElement","docRect","getBoundingClientRect","elRect","left","top","isValidPosition","isNumber","normalizePosition","normalizeOffset","hashStartsWithNumberRE","isObject","selector","getElementById","querySelector","style","scrollTo","supportsPushState","ua","navigator","userAgent","pushState","url","NavigationFailureType","redirected","aborted","cancelled","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","error","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isError","isNavigationFailure","errorType","runQueue","queue","fn","cb","step","resolveAsyncComponents","hasAsync","pending","flatMapComponents","def","cid","once","resolvedDef","isESModule","resolved","reject","reason","msg","comp","flatten","concat","apply","hasSymbol","Symbol","toStringTag","__esModule","called","args","History","normalizeBase","ready","readyCbs","readyErrorCbs","errorCbs","listeners","errorCb","onComplete","onAbort","prev","confirmTransition","updateRoute","ensureURL","afterHooks","abort","lastRouteIndex","lastCurrentIndex","resolveQueue","updated","deactivated","activated","extractLeaveGuards","beforeHooks","extractUpdateHooks","iterator","enterGuards","extractEnterGuards","resolveHooks","cleanupListener","baseEl","max","Math","extractGuards","records","bind","reverse","guards","guard","extractGuard","bindGuard","boundRouteGuard","arguments","bindEnterGuard","routeEnterGuard","HTML5History","_startLocation","getLocation","expectScroll","supportsScroll","handleRoutingEvent","transitionTo","n","go","fromRoute","pathname","pathLowerCase","toLowerCase","baseLowerCase","search","HashHistory","fallback","checkFallback","ensureSlash","getHash","replaceHash","eventType","pushHash","getUrl","AbstractHistory","targetIndex","VueRouter","apps","matcher","mode","$once","teardown","handleInitialScroll","routeOrError","setupListeners","getCurrentLocation","listen","registerHook","onReady","onError","Promise","createHref","normalizedTo","list","version","RouterLink","RouterView","START_LOCATION","use"],"mappings":"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"}