{"ast":null,"code":"/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : factory(global.URI = global.URI || {});\n})(this, function (exports) {\n 'use strict';\n\n function merge() {\n for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n sets[_key] = arguments[_key];\n }\n\n if (sets.length > 1) {\n sets[0] = sets[0].slice(0, -1);\n var xl = sets.length - 1;\n\n for (var x = 1; x < xl; ++x) {\n sets[x] = sets[x].slice(1, -1);\n }\n\n sets[xl] = sets[xl].slice(1);\n return sets.join('');\n } else {\n return sets[0];\n }\n }\n\n function subexp(str) {\n return \"(?:\" + str + \")\";\n }\n\n function typeOf(o) {\n return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n }\n\n function toUpperCase(str) {\n return str.toUpperCase();\n }\n\n function toArray(obj) {\n return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n }\n\n function assign(target, source) {\n var obj = target;\n\n if (source) {\n for (var key in source) {\n obj[key] = source[key];\n }\n }\n\n return obj;\n }\n\n function buildExps(isIRI) {\n var ALPHA$$ = \"[A-Za-z]\",\n CR$ = \"[\\\\x0D]\",\n DIGIT$$ = \"[0-9]\",\n DQUOTE$$ = \"[\\\\x22]\",\n HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n //case-insensitive\n LF$$ = \"[\\\\x0A]\",\n SP$$ = \"[\\\\x20]\",\n PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n //expanded\n GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n //subset, excludes bidi control characters\n IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n //subset\n UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n //relaxed parsing rules\n IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n // 6( h16 \":\" ) ls32\n IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n // \"::\" 5( h16 \":\" ) ls32\n IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n //[ *5( h16 \":\" ) h16 ] \"::\" h16\n IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n //[ *6( h16 \":\" ) h16 ] \"::\"\n IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),\n //RFC 6874\n IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),\n //RFC 6874\n IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),\n //RFC 6874, with relaxed parsing rules\n IPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n //RFC 6874\n REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n PORT$ = subexp(DIGIT$$ + \"*\"),\n AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n SEGMENT$ = subexp(PCHAR$ + \"*\"),\n SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),\n //simplified\n PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),\n //simplified\n PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),\n //simplified\n PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\n return {\n NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\n };\n }\n\n var URI_PROTOCOL = buildExps(false);\n var IRI_PROTOCOL = buildExps(true);\n\n var slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n };\n /** Highest positive signed 32-bit float value */\n\n\n var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n\n var base = 36;\n var tMin = 1;\n var tMax = 26;\n var skew = 38;\n var damp = 700;\n var initialBias = 72;\n var initialN = 128; // 0x80\n\n var delimiter = '-'; // '\\x2D'\n\n /** Regular expressions */\n\n var regexPunycode = /^xn--/;\n var regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\n\n var regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n /** Error messages */\n\n var errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n };\n /** Convenience shortcuts */\n\n var baseMinusTMin = base - tMin;\n var floor = Math.floor;\n var stringFromCharCode = String.fromCharCode;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error$1(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var result = [];\n var length = array.length;\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n var ucs2encode = function ucs2encode(array) {\n return String.fromCodePoint.apply(String, toConsumableArray(array));\n };\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n var basicToDigit = function basicToDigit(codePoint) {\n if (codePoint - 0x30 < 0x0A) {\n return codePoint - 0x16;\n }\n\n if (codePoint - 0x41 < 0x1A) {\n return codePoint - 0x41;\n }\n\n if (codePoint - 0x61 < 0x1A) {\n return codePoint - 0x61;\n }\n\n return base;\n };\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n var digitToBasic = function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n };\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n var adapt = function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n };\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n var decode = function decode(input) {\n // Don't use UCS-2.\n var output = [];\n var inputLength = input.length;\n var i = 0;\n var n = initialN;\n var bias = initialBias; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n var basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (var j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error$1('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n var oldi = i;\n\n for (var w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error$1('invalid-input');\n }\n\n var digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error$1('overflow');\n }\n\n i += digit * w;\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n var baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error$1('overflow');\n }\n\n w *= baseMinusT;\n }\n\n var out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error$1('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output.\n\n output.splice(i++, 0, n);\n }\n\n return String.fromCodePoint.apply(String, output);\n };\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n var encode = function encode(input) {\n var output = []; // Convert the input in UCS-2 to an array of Unicode code points.\n\n input = ucs2decode(input); // Cache the length.\n\n var inputLength = input.length; // Initialize the state.\n\n var n = initialN;\n var delta = 0;\n var bias = initialBias; // Handle the basic code points.\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _currentValue2 = _step.value;\n\n if (_currentValue2 < 0x80) {\n output.push(stringFromCharCode(_currentValue2));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var basicLength = output.length;\n var handledCPCount = basicLength; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string with a delimiter unless it's empty.\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n var m = maxInt;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var currentValue = _step2.value;\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's state to ,\n // but guard against overflow.\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error$1('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _currentValue = _step3.value;\n\n if (_currentValue < n && ++delta > maxInt) {\n error$1('overflow');\n }\n\n if (_currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n\n for (var k = base;;\n /* no condition */\n k += base) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n };\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n var toUnicode = function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n };\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n var toASCII = function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n };\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n var punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '2.1.0',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n /**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\n var SCHEMES = {};\n\n function pctEncChar(chr) {\n var c = chr.charCodeAt(0);\n var e = void 0;\n if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n return e;\n }\n\n function pctDecChars(str) {\n var newStr = \"\";\n var i = 0;\n var il = str.length;\n\n while (i < il) {\n var c = parseInt(str.substr(i + 1, 2), 16);\n\n if (c < 128) {\n newStr += String.fromCharCode(c);\n i += 3;\n } else if (c >= 194 && c < 224) {\n if (il - i >= 6) {\n var c2 = parseInt(str.substr(i + 4, 2), 16);\n newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n } else {\n newStr += str.substr(i, 6);\n }\n\n i += 6;\n } else if (c >= 224) {\n if (il - i >= 9) {\n var _c = parseInt(str.substr(i + 4, 2), 16);\n\n var c3 = parseInt(str.substr(i + 7, 2), 16);\n newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n } else {\n newStr += str.substr(i, 9);\n }\n\n i += 9;\n } else {\n newStr += str.substr(i, 3);\n i += 3;\n }\n }\n\n return newStr;\n }\n\n function _normalizeComponentEncoding(components, protocol) {\n function decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n }\n\n if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n return components;\n }\n\n function _stripLeadingZeros(str) {\n return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n }\n\n function _normalizeIPv4(host, protocol) {\n var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n var _matches = slicedToArray(matches, 2),\n address = _matches[1];\n\n if (address) {\n return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n } else {\n return host;\n }\n }\n\n function _normalizeIPv6(host, protocol) {\n var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n var _matches2 = slicedToArray(matches, 3),\n address = _matches2[1],\n zone = _matches2[2];\n\n if (address) {\n var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n last = _address$toLowerCase$2[0],\n first = _address$toLowerCase$2[1];\n\n var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n var lastFields = last.split(\":\").map(_stripLeadingZeros);\n var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n var lastFieldsStart = lastFields.length - fieldCount;\n var fields = Array(fieldCount);\n\n for (var x = 0; x < fieldCount; ++x) {\n fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n }\n\n if (isLastFieldIPv4Address) {\n fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n }\n\n var allZeroFields = fields.reduce(function (acc, field, index) {\n if (!field || field === \"0\") {\n var lastLongest = acc[acc.length - 1];\n\n if (lastLongest && lastLongest.index + lastLongest.length === index) {\n lastLongest.length++;\n } else {\n acc.push({\n index: index,\n length: 1\n });\n }\n }\n\n return acc;\n }, []);\n var longestZeroFields = allZeroFields.sort(function (a, b) {\n return b.length - a.length;\n })[0];\n var newHost = void 0;\n\n if (longestZeroFields && longestZeroFields.length > 1) {\n var newFirst = fields.slice(0, longestZeroFields.index);\n var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n } else {\n newHost = fields.join(\":\");\n }\n\n if (zone) {\n newHost += \"%\" + zone;\n }\n\n return newHost;\n } else {\n return host;\n }\n }\n\n var URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\n var NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\n\n function parse(uriString) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var components = {};\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n var matches = uriString.match(URI_PARSE);\n\n if (matches) {\n if (NO_MATCH_IS_UNDEFINED) {\n //store each component\n components.scheme = matches[1];\n components.userinfo = matches[3];\n components.host = matches[4];\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = matches[7];\n components.fragment = matches[8]; //fix port number\n\n if (isNaN(components.port)) {\n components.port = matches[5];\n }\n } else {\n //IE FIX for improper RegExp matching\n //store each component\n components.scheme = matches[1] || undefined;\n components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined; //fix port number\n\n if (isNaN(components.port)) {\n components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n }\n }\n\n if (components.host) {\n //normalize IP hosts\n components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n } //determine reference type\n\n\n if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n components.reference = \"same-document\";\n } else if (components.scheme === undefined) {\n components.reference = \"relative\";\n } else if (components.fragment === undefined) {\n components.reference = \"absolute\";\n } else {\n components.reference = \"uri\";\n } //check for reference errors\n\n\n if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n } //find scheme handler\n\n\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()]; //check if scheme can't handle IRIs\n\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n //if host component is a domain name\n if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n //convert Unicode IDN -> ASCII IDN\n try {\n components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n }\n } //convert IRI -> URI\n\n\n _normalizeComponentEncoding(components, URI_PROTOCOL);\n } else {\n //normalize encodings\n _normalizeComponentEncoding(components, protocol);\n } //perform scheme specific parsing\n\n\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(components, options);\n }\n } else {\n components.error = components.error || \"URI can not be parsed.\";\n }\n\n return components;\n }\n\n function _recomposeAuthority(components, options) {\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo);\n uriTokens.push(\"@\");\n }\n\n if (components.host !== undefined) {\n //normalize IP hosts, add brackets and escape zone separator for IPv6\n uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n }));\n }\n\n if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n uriTokens.push(\":\");\n uriTokens.push(String(components.port));\n }\n\n return uriTokens.length ? uriTokens.join(\"\") : undefined;\n }\n\n var RDS1 = /^\\.\\.?\\//;\n var RDS2 = /^\\/\\.(\\/|$)/;\n var RDS3 = /^\\/\\.\\.(\\/|$)/;\n var RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\n function removeDotSegments(input) {\n var output = [];\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, \"\");\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, \"/\");\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, \"/\");\n output.pop();\n } else if (input === \".\" || input === \"..\") {\n input = \"\";\n } else {\n var im = input.match(RDS5);\n\n if (im) {\n var s = im[0];\n input = input.slice(s.length);\n output.push(s);\n } else {\n throw new Error(\"Unexpected dot segment condition\");\n }\n }\n }\n\n return output.join(\"\");\n }\n\n function serialize(components) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = []; //find scheme handler\n\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()]; //perform scheme specific serialization\n\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n if (components.host) {\n //if host component is an IPv6 address\n if (protocol.IPV6ADDRESS.test(components.host)) {} //TODO: normalize IPv6 address as per RFC 5952\n //if host component is a domain name\n else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n //convert IDN via punycode\n try {\n components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n }\n } //normalize encoding\n\n\n _normalizeComponentEncoding(components, protocol);\n\n if (options.reference !== \"suffix\" && components.scheme) {\n uriTokens.push(components.scheme);\n uriTokens.push(\":\");\n }\n\n var authority = _recomposeAuthority(components, options);\n\n if (authority !== undefined) {\n if (options.reference !== \"suffix\") {\n uriTokens.push(\"//\");\n }\n\n uriTokens.push(authority);\n\n if (components.path && components.path.charAt(0) !== \"/\") {\n uriTokens.push(\"/\");\n }\n }\n\n if (components.path !== undefined) {\n var s = components.path;\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s);\n }\n\n if (authority === undefined) {\n s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n }\n\n uriTokens.push(s);\n }\n\n if (components.query !== undefined) {\n uriTokens.push(\"?\");\n uriTokens.push(components.query);\n }\n\n if (components.fragment !== undefined) {\n uriTokens.push(\"#\");\n uriTokens.push(components.fragment);\n }\n\n return uriTokens.join(\"\"); //merge tokens into a string\n }\n\n function resolveComponents(base, relative) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var skipNormalization = arguments[3];\n var target = {};\n\n if (!skipNormalization) {\n base = parse(serialize(base, options), options); //normalize base components\n\n relative = parse(serialize(relative, options), options); //normalize relative components\n }\n\n options = options || {};\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme; //target.authority = relative.authority;\n\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (!relative.path) {\n target.path = base.path;\n\n if (relative.query !== undefined) {\n target.query = relative.query;\n } else {\n target.query = base.query;\n }\n } else {\n if (relative.path.charAt(0) === \"/\") {\n target.path = removeDotSegments(relative.path);\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = \"/\" + relative.path;\n } else if (!base.path) {\n target.path = relative.path;\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n }\n\n target.path = removeDotSegments(target.path);\n }\n\n target.query = relative.query;\n } //target.authority = base.authority;\n\n\n target.userinfo = base.userinfo;\n target.host = base.host;\n target.port = base.port;\n }\n\n target.scheme = base.scheme;\n }\n\n target.fragment = relative.fragment;\n return target;\n }\n\n function resolve(baseURI, relativeURI, options) {\n var schemelessOptions = assign({\n scheme: 'null'\n }, options);\n return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n }\n\n function normalize(uri, options) {\n if (typeof uri === \"string\") {\n uri = serialize(parse(uri, options), options);\n } else if (typeOf(uri) === \"object\") {\n uri = parse(serialize(uri, options), options);\n }\n\n return uri;\n }\n\n function equal(uriA, uriB, options) {\n if (typeof uriA === \"string\") {\n uriA = serialize(parse(uriA, options), options);\n } else if (typeOf(uriA) === \"object\") {\n uriA = serialize(uriA, options);\n }\n\n if (typeof uriB === \"string\") {\n uriB = serialize(parse(uriB, options), options);\n } else if (typeOf(uriB) === \"object\") {\n uriB = serialize(uriB, options);\n }\n\n return uriA === uriB;\n }\n\n function escapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n }\n\n function unescapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n }\n\n var handler = {\n scheme: \"http\",\n domainHost: true,\n parse: function parse(components, options) {\n //report missing host\n if (!components.host) {\n components.error = components.error || \"HTTP URIs must have a host.\";\n }\n\n return components;\n },\n serialize: function serialize(components, options) {\n var secure = String(components.scheme).toLowerCase() === \"https\"; //normalize the default port\n\n if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n components.port = undefined;\n } //normalize the empty path\n\n\n if (!components.path) {\n components.path = \"/\";\n } //NOTE: We do not parse query strings for HTTP URIs\n //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n //and not the HTTP spec.\n\n\n return components;\n }\n };\n var handler$1 = {\n scheme: \"https\",\n domainHost: handler.domainHost,\n parse: handler.parse,\n serialize: handler.serialize\n };\n\n function isSecure(wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n } //RFC 6455\n\n\n var handler$2 = {\n scheme: \"ws\",\n domainHost: true,\n parse: function parse(components, options) {\n var wsComponents = components; //indicate if the secure flag is set\n\n wsComponents.secure = isSecure(wsComponents); //construct resouce name\n\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n wsComponents.path = undefined;\n wsComponents.query = undefined;\n return wsComponents;\n },\n serialize: function serialize(wsComponents, options) {\n //normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n wsComponents.port = undefined;\n } //ensure scheme matches secure flag\n\n\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n wsComponents.secure = undefined;\n } //reconstruct path from resource name\n\n\n if (wsComponents.resourceName) {\n var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n path = _wsComponents$resourc2[0],\n query = _wsComponents$resourc2[1];\n\n wsComponents.path = path && path !== '/' ? path : undefined;\n wsComponents.query = query;\n wsComponents.resourceName = undefined;\n } //forbid fragment component\n\n\n wsComponents.fragment = undefined;\n return wsComponents;\n }\n };\n var handler$3 = {\n scheme: \"wss\",\n domainHost: handler$2.domainHost,\n parse: handler$2.parse,\n serialize: handler$2.serialize\n };\n var O = {};\n var isIRI = true; //RFC 3986\n\n var UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\n var HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\n\n var PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n //RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n //const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n //const WSP$$ = \"[\\\\x20\\\\x09]\";\n //const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n //const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n //const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n //const WSP$$ = \"[\\\\x20\\\\x09]\";\n //const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n //const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n //const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n //const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\n\n var ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n var QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\n var VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\n var SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\n var UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\n var PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\n var NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\n var NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\n var NOT_HFVALUE = NOT_HFNAME;\n\n function decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(UNRESERVED) ? str : decStr;\n }\n\n var handler$4 = {\n scheme: \"mailto\",\n parse: function parse$$1(components, options) {\n var mailtoComponents = components;\n var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n mailtoComponents.path = undefined;\n\n if (mailtoComponents.query) {\n var unknownHeaders = false;\n var headers = {};\n var hfields = mailtoComponents.query.split(\"&\");\n\n for (var x = 0, xl = hfields.length; x < xl; ++x) {\n var hfield = hfields[x].split(\"=\");\n\n switch (hfield[0]) {\n case \"to\":\n var toAddrs = hfield[1].split(\",\");\n\n for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n to.push(toAddrs[_x]);\n }\n\n break;\n\n case \"subject\":\n mailtoComponents.subject = unescapeComponent(hfield[1], options);\n break;\n\n case \"body\":\n mailtoComponents.body = unescapeComponent(hfield[1], options);\n break;\n\n default:\n unknownHeaders = true;\n headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n break;\n }\n }\n\n if (unknownHeaders) mailtoComponents.headers = headers;\n }\n\n mailtoComponents.query = undefined;\n\n for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n var addr = to[_x2].split(\"@\");\n\n addr[0] = unescapeComponent(addr[0]);\n\n if (!options.unicodeSupport) {\n //convert Unicode IDN -> ASCII IDN\n try {\n addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n } catch (e) {\n mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n }\n } else {\n addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n }\n\n to[_x2] = addr.join(\"@\");\n }\n\n return mailtoComponents;\n },\n serialize: function serialize$$1(mailtoComponents, options) {\n var components = mailtoComponents;\n var to = toArray(mailtoComponents.to);\n\n if (to) {\n for (var x = 0, xl = to.length; x < xl; ++x) {\n var toAddr = String(to[x]);\n var atIdx = toAddr.lastIndexOf(\"@\");\n var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n var domain = toAddr.slice(atIdx + 1); //convert IDN via punycode\n\n try {\n domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n } catch (e) {\n components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n\n to[x] = localPart + \"@\" + domain;\n }\n\n components.path = to.join(\",\");\n }\n\n var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n var fields = [];\n\n for (var name in headers) {\n if (headers[name] !== O[name]) {\n fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n }\n }\n\n if (fields.length) {\n components.query = fields.join(\"&\");\n }\n\n return components;\n }\n };\n var URN_PARSE = /^([^\\:]+)\\:(.*)/; //RFC 2141\n\n var handler$5 = {\n scheme: \"urn\",\n parse: function parse$$1(components, options) {\n var matches = components.path && components.path.match(URN_PARSE);\n var urnComponents = components;\n\n if (matches) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = matches[1].toLowerCase();\n var nss = matches[2];\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n urnComponents.nid = nid;\n urnComponents.nss = nss;\n urnComponents.path = undefined;\n\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options);\n }\n } else {\n urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n }\n\n return urnComponents;\n },\n serialize: function serialize$$1(urnComponents, options) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = urnComponents.nid;\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options);\n }\n\n var uriComponents = urnComponents;\n var nss = urnComponents.nss;\n uriComponents.path = (nid || options.nid) + \":\" + nss;\n return uriComponents;\n }\n };\n var UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/; //RFC 4122\n\n var handler$6 = {\n scheme: \"urn:uuid\",\n parse: function parse(urnComponents, options) {\n var uuidComponents = urnComponents;\n uuidComponents.uuid = uuidComponents.nss;\n uuidComponents.nss = undefined;\n\n if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n }\n\n return uuidComponents;\n },\n serialize: function serialize(uuidComponents, options) {\n var urnComponents = uuidComponents; //normalize UUID\n\n urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n return urnComponents;\n }\n };\n SCHEMES[handler.scheme] = handler;\n SCHEMES[handler$1.scheme] = handler$1;\n SCHEMES[handler$2.scheme] = handler$2;\n SCHEMES[handler$3.scheme] = handler$3;\n SCHEMES[handler$4.scheme] = handler$4;\n SCHEMES[handler$5.scheme] = handler$5;\n SCHEMES[handler$6.scheme] = handler$6;\n exports.SCHEMES = SCHEMES;\n exports.pctEncChar = pctEncChar;\n exports.pctDecChars = pctDecChars;\n exports.parse = parse;\n exports.removeDotSegments = removeDotSegments;\n exports.serialize = serialize;\n exports.resolveComponents = resolveComponents;\n exports.resolve = resolve;\n exports.normalize = normalize;\n exports.equal = equal;\n exports.escapeComponent = escapeComponent;\n exports.unescapeComponent = unescapeComponent;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","map":{"version":3,"sources":["../../src/index.ts","../../src/schemes/urn-uuid.ts","../../src/schemes/urn.ts","../../src/schemes/mailto.ts","../../src/schemes/wss.ts","../../src/schemes/ws.ts","../../src/schemes/https.ts","../../src/schemes/http.ts","../../src/uri.ts","../../node_modules/punycode/punycode.es6.js","../../src/regexps-iri.ts","../../src/regexps-uri.ts","../../src/util.ts"],"names":["SCHEMES","http","https","ws","wss","mailto","urn","uuid","UUID","handler","uuidComponents","options","urnComponents","URN_PARSE","matches","components","scheme","nid","nss","urnScheme","schemeHandler","uriComponents","O","isIRI","UNRESERVED$$","HEXDIG$$","PCT_ENCODED$","subexp","ATEXT$$","QTEXT$$","VCHAR$$","merge","SOME_DELIMS$$","UNRESERVED","PCT_ENCODED","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","decStr","pctDecChars","mailtoComponents","to","unknownHeaders","headers","hfields","x","xl","hfield","toAddrs","unescapeComponent","addr","punycode","toArray","toAddr","String","atIdx","localPart","domain","fields","name","serialize","wsComponents","isSecure","path","query","secure","c","chr","e","newStr","i","il","str","parseInt","c2","c3","decodeUnreserved","protocol","host","address","zone","last","first","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","Array","_normalizeIPv4","allZeroFields","field","lastLongest","acc","index","length","longestZeroFields","b","a","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","isNaN","_normalizeIPv6","uriTokens","$2","RDS1","RDS2","RDS3","RDS5","output","input","im","s","authority","_recomposeAuthority","removeDotSegments","skipNormalization","target","parse","relative","base","schemelessOptions","assign","resolveComponents","typeOf","uriA","URI_PROTOCOL","IRI_PROTOCOL","maxInt","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","result","array","fn","parts","string","labels","encoded","map","counter","value","extra","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","k","firstTime","delta","decode","inputLength","n","bias","basic","j","oldi","w","t","baseMinusT","out","encode","ucs2decode","currentValue","basicLength","handledCPCount","m","handledCPCountPlusOne","q","qMinusT","toUnicode","toASCII","buildExps","ALPHA$$","CR$","DIGIT$$","DQUOTE$$","SP$$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","SCHEME$","USERINFO$","DEC_OCTET$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV6ADDRESS1$","ZONEID$","IPV6ADDRESS$","IP_LITERAL$","IPV6ADDRZ_RELAXED$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","URI_REFERENCE$","ABSOLUTE_URI$","GENERIC_REF$","RELATIVE_REF$","ABSOLUTE_REF$","SAMEDOC_REF$","AUTHORITY_REF$","sets","o","Object","obj","source"],"mappings":"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","sourcesContent":["import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","export function merge(...sets:Array):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}"]},"metadata":{},"sourceType":"script"}